Home » Archimedes archive » Acorn User » AU 1995-10.adf » !CHelp » CHelp/!StrongHlp/HelpData/C

CHelp/!StrongHlp/HelpData/C

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 1995-10.adf » !CHelp
Filename: CHelp/!StrongHlp/HelpData/C
Read OK:
File size: CDBC4 bytes
Load address: 0000
Exec address: 0000
File contents
HELP(��,����$DIR$��F����XZ&�!Root�F���ZU�/<	_XSE���8���CSprites22�F���Z�/4[a]��F���n]�/,[b]�=F����b�/�[c]F����n�/�[d]8'F���0�/H[e]ȋF���F��/�[f]��F������/x[g-h]��F������/[i-k]��F������/0[l]��F���ᨄ/�[m]��F�����/l[n-o]�6F�����/[p]PF����Ƅ/�[q-r]�QF����Ʉ/d
[s]�:
F�����/[t]PF���~�/,[u]�F�����/�[v]P#F���@�/P[w]ĤF�����/�[x-z]�F����
�/�[1-9]��F���}=Z&C!ConfigureDATA�C
#Sprite 16,16 !c?
#indent 8
#tab ,align centre
-	*Help On C*	-
-	by <Gareth Boden=>GBoden>	-
-	<Version 2.00=>200>	-
#indent 2

= <Maelstrom Software=>Maelstrom> =
#indent 0;line;indent
<The C Language=>c_>

<ANSI Functions=>ansi_>
<RISC OS Functions=>riscos_>

<Preprocessor Directives=>ppdir_>
<Compiler Directives=>compdir_> 
<Linker Directives=>linkdir_>
<Make Files=>make_>
<Libraries=>lib_>
#indent 0;line    
{align centre}� Acorn User/G Boden 1995DIR$<	<	F�����"�_default_signal_handler�F���	�"�_error_signal_marker\F���K
�"�_ignore_signal_handlerF���f�$extended_fp_numberF���~k�"�IOFBF�F����o�"�IOLBF�F����t�"�IONBF�F���
ٯ$'kernel_alloc�F���J�$kernel_command_str�F���1�$�kernel_current_stack_chunkpF����I�$�kernel_ERROR F���q��$kernel_escape_seen8F����U�$�kernel_exitF���we�$�kernel_exittraphandler�F���n��$�kernel_ExtendProc�F�����$kernel_fpavailable�F���$�kernel_getenv�F����w�$�kernel_hostos� F�����$�kernel_irqs_disabled$!F������$�kernel_irqs_off�!F�����$�kernel_irqs_on�"F����E�$�kernel_languaged#F���넮$]kernel_last_oserro�$F����M�$�kernel_NONXl%F����y�$Zkernel_osargs�&F�����$Xkernel_osbget (F����!�$Xkernel_osbputx)F�����$
kernel_osbyte�+F������$�kernel_oscliL-F���$U�$kernel_oserrorX.F���yi�$�kernel_osfile0F������$lkernel_osfile_bloc�1F���Z�$�kernel_osfind(3F���B1�$�kernel_osgbpb�4F���=��$�kernel_osgbpb_blocx6F�����$�kernel_osrdcht7F���dE�$�kernel_osword,9F����
�$+kernel_oswrchX:F���	A�$�kernel_procname;F���q^�$�kernel_raise_error�;F�����$kernel_sdiv=F�����$�kernel_sdiv10�=F�����$�kernel_setenv@?F����M�$�kernel_setreturncode�?F����%�$Dkernel_srem0AF����[�$kernel_stack_chunkHBF����̮$�kernel_swi(DF���eܮ$�kernel_swi_cFF���\p�$�kernel_swi_regsGF������$�kernel_system�IF����/�$.kernel_udiv�JF���~5�$�kernel_udiv10�KF����6�$-kernel_unwind�LF���rj�$�kernel_unwindblock�MF���4?�$Ukernel_urem�NF������$�kernel_register_slotextenddQF���I�$�kernel_register_allocsDATA�__default_signal_handler
Syntax:	void�__default_signal_handler (int n);
Header:	<signal.h=>signal>

This is more normally referred to by the macro <SIG_DFL>.DATA�__error_signal_marker
Syntax:	void�__error_signal_marker (int n);
Header:	<signal.h=>signal>

This is more normally referred to by the macro <SIG_ERR>.DATA�__ignore_signal_handler
Syntax:	void�__ignore_signal_handler (int n);
Header:	<signal.h=>signal>

This is more normally referred to by the macro <SIG_IGN>.DATA_extended_fp_number
This type is defined in <kernel.h=>kernel>. It contains a 12 byte floating point number as the following union:

  \{
    struct
    \{
      int s : 1;
      int u : 16;
      int x : 15;
      unsigned mhi,mlo;
    } i;
    int w[3];
  }DATA�_IOFBF
#Parent stdio
The macro _IOFBF is defined in <stdio.h=>stdio> as a value used as an argument for the function <setvbuf>. It causes input/output to be fully buffered. In Easy�C it is defined as 0x100.DATA�_IOLBF
#Parent stdio
The macro _IOLBF is defined in <stdio.h=>stdio> as a value used as an argument for the function <setvbuf>. It causes input/output to be line buffered. In Easy�C it is defined as 0x200.DATA�_IONBF
#Parent stdio
The macro _IONBF is defined in <stdio.h=>stdio> as a value used as an argument for the function <setvbuf>. It causes input/output to be unbuffered. In Easy�C it is defined as 0x400.DATA'_kernel_alloc
Syntax:	unsigned _kernel_alloc (unsigned minwords, void **block);
Header:	<kernel.h=>kernel>

Returns:	The size of block allocated.

This function tries to allocate a block of memory of 'sensible size' as near to /minwords/ as possible. The block will not be smaller than 2K words (Acorn's definition of sensible size). If this much memory cannot be allocated, it will allocate as much as possible. The pointer to the block is returned in the pointer pointed to by /block/. This will be <NULL> if a the size of the block is zero.DATA_kernel_command_string
Syntax:	char *_kernel_command_string (void);
Header:	<kernel.h=>kernel>

Returns:	Pointer to the string.

This function returns a pointer to the string which was used to start the program. It may be a copy of the string that is used.DATA�_kernel_current_stack_chunk
Syntax:	<_kernel_stack_chunk> *_kernel_current_stack_chunk (void);
Header:	<kernel.h=>kernel>

Returns:	Pointer to the current stack chunk.DATA�_kernel_ERROR
The macro {*}_kernel_ERROR{*} is defined in <kernel.h=>kernel> as a value to be returned by certain functions to indicate an error. It is defined as (-2).DATA_kernel_escape_seen
Syntax:	int _kernel_escape_seen (void);
Header:	<kernel.h=>kernel>

Returns:	1 if there has been an escape.

This function checks to see if there has been an escape (since the previous call to this function). This function will never miss an escape.DATA�_kernel_exit
Syntax:	void _kernel_exit (void);
Header:	<kernel.h=>kernel>

This function calls the SWI <OS_Exit=>SWI:OS_Exit> with the return code specified by a call to <_kernel_setreturncode>.DATA�_kernel_exittraphandler
Syntax:	void _kernel_exittraphandler (void);
Header:	<kernel.h=>kernel>

This function resets the *InTrapHandler* flag which prevents recursive traps. It is used inside trap handlers which do not return directly.DATA�_kernel_ExtendProc
The type {*}_kernel_ExtendProc{*} is defined in <kernel.h=>kernel> as a procedure which can be used to extend the heap used by the kernel. It is defined as:
{wrap off}
{fCode;align centre}int _kernel_ExtendProc (int, void **);{f;align;wrap}

The procedure should allocate the amount of space requested in the integer argument, and return a pointer to it in the {/}void *{/} whose pointer is given. It should return the size of space allocated.DATA_kernel_fpavailable
Syntax:	int _kernel_fpavailable (void);
Header:	<kernel.h=>kernel>

Returns:	0 if floating point is not available.

This function tests for the presence of either the floating point co-processor or the floating point emulator module (FPE).DATA�_kernel_getenv
Syntax:	<_kernel_oserror> *_kernel_getenv (char *name, char *buf, unsigned len);
Header:	<kernel.h=>kernel>

Returns:	Pointer to error, or <NULL> if none.

This function gets the value of the system variable whose name is specified and places it in the character array pointed to by /buf/. The length of the array is given by /len/.

This function is equivalent to the SWI <OS_ReadVarVal=>SWI:OS_ReadVarVal> (and very similar to the function <getenv>).DATA�_kernel_hostos
Syntax:	int _kernel_hostos (void);
Header:	<kernel.h=>kernel>

Returns:	Number indicating Operating System.

This function is equivalent to <OS_Byte=>SWI:OS_Byte> 0,1. It returns 6 for RISC OS.DATA�_kernel_irqs_disabled
Syntax:	int _kernel_irqs_disabled (void);
Header:	<kernel.h=>kernel>

Returns:	Non-zero if IRQ interrupts are enabled.DATA�_kernel_irqs_off
Syntax:	void _kernel_irqs_off (void);
Header:	<kernel.h=>kernel>

Disable interrupts. This can only be used from code running in SVC mode. You should not disable interrupts if possible.DATA�_kernel_irqs_on
Syntax:	void _kernel_irqs_on (void);
Header:	<kernel.h=>kernel>

Enable interrupts. This can only be used from code running in SVC mode.DATA�_kernel_language
Syntax:	char *_kernel_language (int pc);
Header:	<kernel.h=>kernel>

Returns:	Pointer to name.

This function gets the name of the language in whose code the address /pc/ lies.DATA]_kernel_last_oserror
Syntax:	<_kernel_oserror> *_kernel_last_oserror (void);
Header:	<kernel.h=>kernel>

Returns:	Pointer to error, or <NULL> if none.

This function returns a pointer to the error block describing the last OS error that occured (since the last call to this function).

The block returned may be overwritten by another error.DATA�_kernel_NONX
The macro {*}_kernel_NONX{*} is defined in <kernel.h=>kernel> as a value used to indicate to SWI calling functions that errors are to be reported.DATAZ_kernel_osargs
Syntax:	int _kernel_osargs (int r0, unsigned r1, int r2);
Header:	<kernel.h=>kernel>

Returns:	(r0=r1=0): Current FS number, else:
	Value returned in R2 by OS_Args, or
	-1 if failed (ie carry flag set)
	-2 if an OS error occurred.

This function calls the <OS_Args=>SWI:OS_Args> SWI with registers R0-R2 set to those given.DATAX_kernel_osbget
Syntax:	int _kernel_osbget (unsigned handle);
Header:	<kernel.h=>kernel>

Returns:	The byte read, -1 for EOF, -2 for error.

This function calls the <OS_BGet=>SWI:OS_BGet> SWI which reads a byte from the open file whose handle is given.

Note that this is a RISC OS file handle, not one generated by the <fopen> function.DATAX_kernel_osbput
Syntax:	int _kernel_osbput (int c, unsigned handle);
Header:	<kernel.h=>kernel>

Returns:	-2 if an OS error occured, else 0.

This function calls the <OS_BPut=>SWI:OS_BPut> SWI which writes a byte to the open file whose handle is given.

Note that this is a RISC OS file handle, not one generated by the <fopen> function.DATA
_kernel_osbyte
Syntax:	int _kernel_osbyte (int r0, int r1, int r2);
Header:	<kernel.h=>kernel>

Returns:	Values returned, or error as follows:
	(-1)	Carry flag is set (call failed)
	(-2)	OS error occurs.

This function calls the <OS_Byte=>SWI:OS_Byte> SWI with the register R0 set to the value passed in {/}r0{/}, and registers R1 and R2 set to the values pointed to by {/}r1{/} and {/}r2{/}.

The /int/ returned contains R1 in its bottom byte, R2 in the second byte, and 1 in the third byte if the carry flag is set.DATA�_kernel_oscli
Syntax:	int _kernel_oscli (char *command);
Header:	<kernel.h=>kernel>

Returns:	0 if successful, -2 if an OS error occurred.

This function passes the string given to the operating system CLI to be executed as if it had been typed in as a "star command". For instance, {fCode}_kernel_oscli("Modules"){f} has the same effect as <*Modules>.

This function should not be used to run other programs - use <_kernel_system> for that.DATA_kernel_oserror
The type {*}_kernel_oserror{*} is defined in <kernel.h=>kernel> as an object holding a standard RISC OS error block. It is defined as the following structure:

\{
    int errnum;	/* Error number  */
    char errmess[252];	/* Error message */
}DATA�_kernel_osfile
Syntax:	int _kernel_osfile (int op, char *name, <_kernel_osfile_block=>_kernel_osfile_bloc> *blk);
Header:	<kernel.h=>kernel>

Returns:	Contents of register R0, or error:
	-1 if failed (ie carry flag set)
	-2 if an OS error occurred.

This function calls the <OS_File=>SWI:OS_File> SWI which performs various functions on whole files. R0 is set from /op/, and R1 is set to the name given. Registers R2-R5 are set from /blk/.DATAl_kernel_osfile_block
The type {*}_kernel_osfile_block{*} is defined in <kernel.h=>kernel> as a type capable of holding information to be passed to the <_kernel_osfile> function. It is defined as:

\{
    int load;	/* load address */
    int exec;	/* execution address */
    int start;	/* start address/length */
    int end;	/* end address/attributes */
}DATA�_kernel_osfind
Syntax:	int _kernel_osfind (int op, char *name);
Header:	<kernel.h=>kernel>

Returns:	Opening file:	0 if failed, else file handle.
	Closing file:	0 if successful,
	 	-1 if failed,
	 	-2 if OS error occured.

This function calls the <OS_Find=>SWI:OS_Find> SWI which handling opening and closing of random access files. The register R0 is set to the value in /op/, R1 should point to the filename.DATA�_kernel_osgbpb
Syntax:	int _kernel_osgbpb (int op, unsigned handle, <_kernel_osgbpb_block=>_kernel_osgbpb_bloc> *blk);
Header:	<kernel.h=>kernel>

Returns:	0	if successful.
	-1	if failed (ie carry flag set).
	-2	if an OS error occured.

This function calls the <OS_GBPB=>SWI:OS_GBPB> SWI which performs a myriad of different operations. The parameters for the call are set from and returned in /blk/. The action (in R0) depends on the value of /op/.DATA�_kernel_osgbpb_block
The type {*}_kernel_osgbpb_block{*} is defined in <kernel.h=>kernel> as an object capable of holding information to be passed to the <_kernel_osgbpb> function. It is defined as the following structure:

\{
    void *dataptr;	/* memory address of data*/
    int nbytes;
    int fileptr;
    int buf_len;
    char *wild_fld;	/* points to wildcarded name */
}DATA�_kernel_osrdch
Syntax:	int _kernel_osrdch (void);
Header:	<kernel.h=>kernel>

Returns:	The character read.

This function calls the {*}OS_ReadC{*} SWI, which reads a character for the keyboard buffer, waiting for one to be pressed if necessary.DATA�_kernel_osword
Syntax:	int _kernel_osword (int r0, int *r1);
Header:	<kernel.h=>kernel>

Returns:	0	if successful.
	-1	if failed (ie carry flag set).
	-2	if an OS error occured.

This function calls the <OS_Word=>SWI:OS_Word> SWI with the register R0 set to the value passed in {/}r0{/}, and the register R1 set to the pointer {/}r1{/}, which points to a parameter block. Values are read from and returned in the parameter block.DATA+_kernel_oswrch
Syntax:	int _kernel_oswrch (int c);
Header:	<kernel.h=>kernel>

Returns:	-2 if an OS error occurs, else 0.

This function calls the <OS_WriteC=>SWI:OS_WriteC> SWI with the register R0 set to /c/. This has the result of writing the charater in /c/ to the current output stream.DATA�_kernel_procname
Syntax:	char *_kernel_procname (int pc);
Header:	<kernel.h=>kernel>

Returns:	Pointer to name.

This function gets the name of the procedure containing the address /pc/.DATA�_kernel_raise_error
Syntax:	void _kernel_raise_error (<_kernel_oserror> *err);
Header:	<kernel.h=>kernel>

This function generates an external error with the error block pointer to by /err/.DATA_kernel_sdiv
Syntax:	int _kernel_sdiv (int x, int y);
Header:	<kernel.h=>kernel>

Returns:	The quotient of y/x.

This function calculates the signed quotient of y/x. It is intended for use by non-C programs using the Shared C Library. In C you can simply use the division sign!DATA�_kernel_sdiv10
Syntax:	int _kernel_sdiv10 (int x);
Header:	<kernel.h=>kernel>

Returns:	x divided by 10.

This function divides /x/ by 10 and returns the signed result.DATA�_kernel_setenv
Syntax:	<_kernel_oserror> *_kernel_setenv (char *name, char *val);
Header:	<kernel.h=>kernel>

Returns:	Pointer to error, or <NULL> if none.

This function sets the value of the system variable whose name is specified to the string pointed to by /val/. If /val/ is NULL then the variable is deleted.

This function is equivalent to the SWI <OS_SetVarVal=>SWI:OS_SetVarVal>.DATA�_kernel_setreturncode
Syntax:	void _kernel_setreturncode (unsigned n);
Header:	<kernel.h=>kernel>

This function sets the return code to be used by <_kernel_exit>.DATAD_kernel_srem
Syntax:	int _kernel_srem (int x, int y);
Header:	<kernel.h=>kernel>

Returns:	The remainder of y/x.

This function calculates the signed remainder of y/x. Formally this is defined as r=y-(i*x), where /r/ is the remainder and /i/ is an integer such that /r/ has the same sign as /y/ and is less than /x/.DATA_kernel_stack_chunk
This type is defined in <kernel.h=>kernel>. It contains a stack chunk in the following structure:

  \{
    unsigned long sc_mark;  /* 0xf60690ff */
    struct stack_chunk *sc_next,sc_prev;
    unsigned long sc_size;
    int (*sc_deallocate) ();
  }DATA�_kernel_swi
Syntax:	<_kernel_oserror> *_kernel_swi (int n, <_kernel_swi_regs> *in, _kernel_swi_regs *out);
Header:	<kernel.h=>kernel>

Returns:	Pointer to error, or NULL if none.

This function calls a SWI, whose number is given in /n/. The registers R0-R9 are set to the values in /in/, and returned in /out/.

This normally calles the X form of the SWIs ie errors are returned but not reported. To call the normal form, you should OR the SWI number with <_kernel_NONX>.DATA�_kernel_swi_c
Syntax:	<_kernel_oserror> *_kernel_swi_c (int n, <_kernel_swi_regs> *in, _kernel_swi_regs *out, int *c);
Header:	<kernel.h=>kernel>

Returns:	Pointer to error, or <NULL> if none.

This function calls a SWI, whose number is given in /n/. The registers R0-R9 are set to the values in /in/, and returned in /out/. In addition the carry flag is returned in the variable pointed to by /c/.

This function is identical to <_kernel_swi>, except that the carry flag is returned.DATA�_kernel_swi_regs
The type {*}_kernel_swi_regs{*} is defined in <kernel.h=>kernel> as an object capable of holding the registers R0-R9 so that they can be passed to the operating system. It is defined as the structure:

\{
    int r[10];
}DATA�_kernel_system
Syntax:	int _kernel_system (char *command, int chain);
Header:	<kernel.h=>kernel>

Returns:	0 if successful, -2 if OS error occurs.

This function passes the string given to the operating system CLI to be executed as if it had been typed in as a "star command". The difference between this and other similar function is that this function allows other programs to be run, either as a sub-program to, or instead of the current program.

If /chain/ is 0, then the command is executed so that when it finishes, control is passed back to this program. If /chain/ is 1, then the command is executed so that it completely replaces this program.DATA._kernel_udiv
Syntax:	unsigned _kernel_udiv (unsigned x, unsigned y);
Header:	<kernel.h=>kernel>

Returns:	The quotient of y/x.

This function calculates the unsigned quotient of y/x. It is intended for use by non-C programs using the Shared C Library. In C you can simply use the division sign!DATA�_kernel_udiv10
Syntax:	unsigned _kernel_udiv10 (unsigned x);
Header:	<kernel.h=>kernel>

Returns:	x divided by 10.

This function divides /x/ by 10 and returns the unsigned result.DATA-_kernel_unwind
Syntax:	int _kernel_unwind (<_kernel_unwindblock> *blk, char **lan);
Header:	<kernel.h=>kernel>

Returns:	Indication of success/failure.

This function unwinds the call stack one level. It returns negative if it succeeds, 0 if the stack end is reached, or positive for an error.DATA�_kernel_unwindblock
This type is defined in <kernel.h=>kernel> as the following structure:

  \{
    int r4,r5,r6,r7,r8,r9;
    int fp,sp,pc,sl;
    <_extended_fp_number> f4,f5,f6,f7;
  }DATAU_kernel_urem
Syntax:	unsigned _kernel_urem (unsigned x, unsigned y);
Header:	<kernel.h=>kernel>

Returns:	The remainder of y/x.

This function calculates the unsigned remainder of y/x. Formally this is defined as r=y-(i*x), where /r/ is the remainder and /i/ is an integer such that /r/ has the same sign as /y/ and is less than /x/.DATA�_kernel_register_slotextend
Syntax:	<_kernel_ExtendProc> *_kernel_register_slotextend (_kernel_ExtendProc *proc);
Header:	<kernel.h=>kernel>

This function registers a function for use by the kernel to extend its heap. It is normally able to do this automatically, but if someone else has acquired the space it would use it needs to be able to ask that someone else to give it some space. That is what the function pointed to by /proc/ is used for. It is called with the amount of space required in bytes and is expected to return either 0 for failure or the amount of space allocated (which may be more than requested, but {_}not{_} less).DATA�_kernel_register_allocs
Syntax:	void _kernel_register_allocs (<allocproc> *malloc, <freeproc> *free);
Header:	<kernel.h=>kernel>

This funcion registers two procedures which are used by the kernel to claim and release memory. The procedure given by /malloc/ is used for claiming memory and /free/ is used for releasing previously claimed memory.

The procedure used for claiming memory must not use more than 41 words of stack (one less than the Meaning of Life, the Universe and Everything).DATA�C�C!c?!��������������������������wwwwwwUUUUUU333333D�D�������������U�U���������BeW$Bwwwg1vwwwwtwwwwwGwwwwwwg2DUUE$bwwwwwwgC54TUUU%uwwwwwwwBUU1UUUU!wwwwwwww!UUUEUUUU5awwwgewwwQUUUUSUUUErwww&awwwTUUUUSUUUEvwwwcwwWTUUUUTUUUE!vwwguww&TUUUEUUUU51www'AD4SUUU1UUUUawwwBUUEQUUUUqwww34SUUU$rwww!UUU5twwwAUU4uwwgSEtwwg!Tvwwg!1%wwwGAvgAwww7tww'Rwww7!vww'2www7Awww&!CTDwwwgrwwwSUUU%wwwwwwww1UUUUUuwwwwwwwRUUUUUuwwwwwwGSUUUUUswwwwwwSUUUU5bwwwwwwSUUUUawwwwwW1UUU5!vwwwwCT3dwww%!uw%���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������T!desklib!��������������������������wwwwwwUUUUUU333333D�D�������������U�U���������0����333030���000000�000000����0000��3030�������������0����0����뻻0���������뻻0�����0����뻻0���������뻻�����0����뻻0���������뻻Q�������U300���뻻0�ə����00�����03��..�00@���#�00@D>>.Q0330Bw�R0000p'QQ3300000030033�!easyc!�T������������������������wwwwwwUUUUUU333333D�D�������������U�U��������� TVDSwgfwwWbg�����xgPg�������x7v���������x`�����������7v�����������x0������������oq�������������Wv�����www�����x�����x#s����0�����70�����P����������p����ovwwwwq����DDDDDr����r����r����r����q����DDDDDq����vwwww`����������0�����70����������xc����v�����www�����xq�������������g1������������1w�����������xw�����������7w���������xuv�������x7 rw�����xw@swwwwww#twD�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!ansic,� ���{@34sp P���4343 P龾�'43CD33p P���4333 P龾�7$2@p ���{$2 ���{"$21p P�$2 001% !$21p 0$2  1%2$22p "2$2 0"$20 433314C43CD332�C44343���B$@34S��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!timslib!,,0���333030���000000�000000����0000��3030��������������0����0�������0������������0�����0�������0�����������������0�������0���������Q�������U300������0�ə����00�����03��..�00@���#�00@D>>.Q0330Bw�R0000p'QQ3300000030033�-maelstrom;�,������������������������wwwwwwUUUUUU333333D�D�������������U�U���������BUUUUUUUUUUUUUUUUUUUUUUUUUUU4Awwwwwwwwwwwwwwwwwwwwwwwwwwwww%swwwwwwwwwwwwwwwwwwwwwwwwwwwwwWvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwggggwwwwwwwwwwwwgeeUVevwwwwwwwF��DKDTvwwwwwwwwgUUVVVVUwwwwwww�KKKK��ewwwwwwwwVU$���fXwwww�����www��K��DKKwwwwwwwwT�UVV�ewww'333D�33333$SUUCD3D�23"#23!"2DT42TT4�QU�!fFwwwF�BKK���uwwwwwwg�U�fkVuwwwGtwwwvwWBGpw'uwswfwwWv�@ww71wwcwvgaw7`w'wwwg+��KKKKdwwwwwwGBe[��XVwwwwWdwwrwBQw!ww!1'uw�1wwswG!wWrwLwgswwwww4�KK���Kwwwwww�S[V�V�Uwwww'6rwrw�Pw1wwA�sw#vwawW`w'`w7AwwvwwwwwF����KKKvwwwwwT[��U�XVwwww&pwrw�AAw!wwrwvg`w'qwAwWPvw0ww'wwwwFAK�����twwww�[�Vf�V�VwwwwD3bw'rwwwAwtwwswvWawrw1wg`@wgs"w7wwwwGC���K��TwwwwG�U[[V�eUwwwwqSwwwGrwgUwAw\wwWrwvgs7sw!wgawwW wWwwww���������vwww��kVf�V�Vwwwgrwwwwwqw'uAwrwwrw�vg0Vwsw1wglsw'wgwwww7KK��KK��twwwT[���V�XVwwwGuaGuwqw@wuwgrwug wgrw!wga`w�vwwwwwFK����KK[eww�[�eeV�V�Fwww&<qwqwAw0wwswugvwqw@wGb1wuwwwww����KKKKKKwwG�U[[[��VFwww65awrwAw�rw'rwuwrw|wQw'SUtwwwww�K������[[vwV[�VfV�VfKwwwSbAwqw@w�tGt&PwGrwtwLw'@w`wUtwwwww���K��KKKKdg�e[���e�VVvwwqq1wqw!AwPw!w1wGrwtwugw'|wEswwwww��;DK�����KE[�UUVV�V�fuwgbr!w7rwr@w'!w1wAw'rwtw@wrWrgFswwwww�K[����K[K[[�U[���e�X�uwWds!wGsw�1WAwG1w'wawsw�tw�r7@wvFswwwww��d6����������tVVV�V��twGtqPwWvwWDv'pwwcwRgCvWvwtwdb7cGfvwwwww��cg�KKKK[�U[VuG[k��f�twg1a 3#""2213333#3#3313�!�B3#wwwgK�tw��K�����UKwGVV�fe�twwfvwwwWKKdwFKKK[[K[[UwGk[U��fewwwwwwwGK�twGKK[KK[�UkwWV��VV�VwwwwwwwGKKkwg�KK[[[[�uwW[�U�e�UwwwwAvGRWUwwwG��tww����U[�EwwgU��eVVVwwwwvgv!w6gwwwG��twwGK[[[[[[www�UV�f�KwwwwaGa7a'!Wwww6K�twwW�����UtwwwU��VVVHwwwwr!Gr!G2www���twww�KK[��uwww�ee�f�Vvwwws!#!ewVswgWfgVtftww27!%c1vfwwwE��uwwgF����EwwwwU��Vf�kuwwwssgUwCvUdvgVs4A7rgDuG'AWw!vWvgwww���twwwG[K�U[wwww�UV�V�euwwwag#1gQGear1Wq!w1wQwr7uwwwE��uwww�[[[�twwwwX��Vfffuwww!uwqvWqaaWuq&ta7gawww���uwwwwT[[[uwwwwV�e�V��twww!egttGrasw!WtsrA'1'wwg���xwwwwF[�EwwwwwG��fffetwwwvvt!7tA'fuafrrawwgwv'www�KKvwwwwg�UewwwwwGUV�ee�uwwwsfuA'u1717tsWtsqVTUUUwwg���vwwwwwFTvwwwwwV��V��VXwwwQsggAu!GqsgfvuqwwgK�DvwwwwwggwwwwwwG�ee��fVwwwruvQ'agWsrU7vQwuavwwWKK�vwwwwwwwwwwwwwWX�ke�fVwwwq'Agstq!WufqvttWvAgQ7wwW��4wwwwwwwwwwwwwwW�ee�XfVwwwAwEv&AwEuGr17u7awawEuGWWvVTwwwGK[KwwwwwwwwwwwwwwW���Vf�FwwwcwFcwVrA6sQWdwF27!GRww&wwG[K;wwwwwwwwwwwwwwWUf�f�eVwww!1"wwGK[;wwwwwwwwwwwwwwWV��V�fFwwwwwG[[;wwwwwwwwwwwwwwW[Rff�fVwwwwwGUKKwwwwwwwwwwwwww�eQfe��FwwwwwGC[EvwwwwwwwwwwwwwWfa����Fwwwww�B[KwwwwwwwwwwwwwwWKbV��fFwwwwwG�UKvwwwwwwwwwwwwwV%df��fFwwwwwGQ��ewwwwwwwwwwwwgU4V�[�fFwwwwwGB[UKwwwwwwwwwwwwV�U�Xh�eVwwwwwG[��UvwwwwwwwwwwwVVfe���fewwwwwg�U[�xwwwwwwwwwwwV�f����UvwwwwwwVUTUwwwwwwwwwwwwwUVVVVUfwwwwvwwwwwwwwwwwwwwwwwwwwvwvvwwwwwwtwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgawwwwwwwwwwwwwwwwwwwwwwwwwwwww&dvvvvvvvvvvvvvvvvvvvvvvvvvvvV��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������DIR$44P�F����u�"abortp�F���.�"�absX�F�����"�acos$�F����k�"�ADR̝F�����"�akbd��F���;��"Qalarm�F����(�"�ALIGN��F���h��$+allocprocԡF����h�"�APepperellp�F����h�"�APereira`�F���Q��"�asctime�F������"�asin��F���D�S&ZAskUser�F����h�"DassertP�F���#��"�atan(�F������"�atan2��F���G�"&atexitԭF���N��"Patof$�F���=��"Qatoix�F������"TatoḻF����[�/�akbd_p�F����[�/\alarm_d�F����\�/,ansi_t�F����\�/lAskUser_D�F���1]�/LASSERT_DATAabort
Syntax:	void abort (void);
Header:	<stdlib.h=>stdlib>

This function terminates the program abnormally. Open files may not be closed and temporary files may not be removed. This function should not really be used if you can help it. The function calls <raise>(<SIGABRT>).DATA�abs
Syntax:	int abs (int x);
Header:	<stdlib.h=>stdlib>

Returns:	The absolute value of /x/.

This function returns the absolute value of /x/ ie the magnitude of /x/. This is always positive so if x = -5, then abs(x) = 5.DATA�acos
Syntax:	double acos (double x);
Header:	<math.h=>math>

Returns:	The arc cosine of x, in radians.

This function calculates the principal value of the arc cosine of x. Domain: -1 \<= x \<= 1.DATA�ADR <register>,<label>
This sets the given register to contain the address of the given label eg:

#fCode
       ADR   R0,label
       ...
.label DCD   10,5,76DATA�akbd.h
The \<akbd.h> header declares three functions concerned with accessing the keyboard. It also defines a number of <macros=>akbd_macros_>.

#Table 2 15
 <akbd_pollctl>
 <akbd_pollkey>
 <akbd_pollsh>
#EndTableDATAQalarm.h
This header file provides alarm facilities for Wimp programs, using non-busy waiting.

Functions:

#Indent 8
#Table 5 23
<alarm_init>
<alarm_timenow>
<alarm_timedifference>
<alarm_set>
<alarm_remove>
<alarm_removeall>
<alarm_anypending>
<alarm_next>
<alarm_callnext>
#EndTable

#Indent 0
Types:

#indent 8
<alarm_handler>DATA�ALIGN
This aligns the assembly pointer to a word boundary. Use it after data blocks of irregular length. All instructions must be assembled on a word boundary.DATA+allocproc
The type *allocproc* is defined in <kernel.h> as a procedure which can be used to allocate memory. It is defined as:

{fCode;align centre}void *allocproc (unsigned);{f;align}

The parameter passed is the size of space to allocate. It should return a pointer to the space allocated.DATA�Andrew Pepperell
Internet email: ap10014@cam.ac.uk

Snail-mail:
    20 Orchard Park
    Grimoldby
    LOUTH
    Lincolnshire
    LN11 8TN
    U.K.DATA�Ainsley Pereira
FidoNet email: 2:250/219.5
Internet email: A.Pereira@cs.ucl.ac.uk (uni)
            or ampy@digibank.demon.co.uk (home)

Snail-mail:
    'Al Sirat'
    Chapel Road
    Swanmore
    SOUTHAMPTON
    SO32 2QA
    U.K.DATA�asctime
Syntax:	char *asctime (<struct�tm> *tptr);
Header:	<time.h=>time_h>

Returns:	Pointer to the time string.

This function converts the broken-down time,
whose structure is pointed to by /tptr/, into a
string in the form:
     �ddd mmm nn hh:mm:ss yyyy\\n\\0�

Where /ddd/, /mmm/, /nn/ etc are the day, month, day
number etc, \\n is a newline, and \\0 is the null
terminator.DATA�asin
Syntax:	double asin (double x);
Header:	<math.h=>math>

Returns:	The arc sine of x, in radians.

This function calculates the principal value of the arc sine of x. Domain: -1 \<= x \<= 1.DATAZAskUser
Syntax:	<askuser_REPLY> AskUser (char *question);
Header:	<TimsLib:AskUser.h=>AskUser_h>

Returns:	The user's response.

This function opens a dialogue box containing the question and two buttons ('Yes' and 'No'). It waits for the user's reply and returns it. The template "query" must be loaded with <Template_LoadFile> and should have the following icons:
{tab}
0 -	'Yes' icon. Button type 'Click'.
1 -	Indirected text. Suitable for question (usually will have validation "L40" so that multiple lines of text can be displayed). Button type 'Never'.
2 -	'No' icon. Button type 'Click'.DATADassert.h
The \<assert.h\> header declares just one
function, as follows:

Syntax:  void assert (int exp);
Header:  assert.h

This function checks the value of exp. If it is
zero (ie false) then the program aborts
instantly with a message giving "exp" and the
current file and line within that file. It
would normally be used with a condition as exp,
for example:
    assert(a==b);
would abort if a did not equal b.

The assert function can be disabled by
including the following line in the program
BEFORE you <#include=>include> \<assert.h\>.
    <#define=>define> NDEBUGDATA�atan
Syntax:	double atan (double x);
Header:	<math.h=>math>

Returns:	The arc tangent of x, in radians.

This function calculates the principal value of the arc tangent of x. See also the function <atan2>.DATA�atan2
Syntax:	double atan2 (double x, double y);
Header:	<math.h=>math>

Returns:	The arc tangent of (x/y), in radians.

This function calculates the principal value of the arc tangent of (x/y). The result is in the range -pi to +pi, rather than -(pi/2) to +(pi/2) as with <atan>, since the signs of the arguments can be used to determine the quadrant in which the result lies.DATA&atexit
Syntax:	int atexit (void (*func)(void));
Header:	<stdlib.h=>stdlib>

Returns:	Zero if the function succeeds.

This function registers the specified function to be called without arguments when the program terminates normally. More than one function can be registered in this way.DATAPatof
Syntax:	double atof (char *str);
Header:	<stdlib.h=>stdlib>

Returns:	The converted value.

This function converts the start of the string pointed to by /str/ to a /double/. If the string cannot be converted, the behaviour is undefined.

This function is roughly equivalent to:
{align centre}<strtod> (str, (char **) NULL);DATAQatoi
Syntax:	int atoi (char *str);
Header:	<stdlib.h=>stdlib>

Returns:	The converted value.

This function converts the start of the string pointed to by /str/ to an /int/. If the string cannot be converted, the behaviour is undefined.

This function is roughly equivalent to:
{align centre}(int) <strtol> (str, (char **) NULL);DATATatol
Syntax:	long int atol (char *str);
Header:	<stdlib.h=>stdlib>

Returns:	The converted value.

This function converts the start of the string pointed to by /str/ to a /long int/. If the string cannot be converted, the behaviour is undefined.

This function is roughly equivalent to:
{align centre}<strtol> (str, (char **) NULL);DIR$��X�F����X�"cmacros_��F���vl�"�pollctl��F�����"�pollkey��F������"�pollshDATAcakbd.h Macros
These macros are all defined so that you can use them to refer to the key numbers returned by the Wimp. They are as follows:

akbd_Fn	Base values for function keys F1-F9 ie F1 returns (akbd_Fn+1)
akbd_Sh	Value to add if Shift is pressed. ie Shift-F1 returns (akbd_Fn+akbd_Sh+1).
akbd_Ctl	Value to add if Ctrl is pressed ie Ctrl-Shift-F1 returns (akbd_Fn+akbd_Sh+akbd_Ctrl+1).
akbd_TabK	Value returned by Tab key.
akbd_CopyK	Value returned by Copy key.
akbd_LeftK	Value returned by left arrow.
akbd_RightK	Value returned by right arrow.
akbd_DownK	Value returned by down arrow.
akbd_UpK	Value returned by up arrow.
akbd_Fn10	Value returned by F10.
akbd_Fn11	Value returned by F11.
akbd_Fn12	Value returned by F12.
akbd_InsertK	Value returned by Insert.
akbd_PrintK	Value returned by Print.
akbd_PageUpK	Value returned by PageUp.
akbd_PageDownK	Value returned by PageDown.

The modifiers {/}akbd_Sh{/} and {/}akbd_Ctl{/} can be used identically with all except PageUp and PageDown. These return the same values as the up and down arrows, except the Shift action is reversed ie Shift-PageDown=Down arrow.DATA�akbd_pollctl
Syntax:	int akbd_pollctl (void);
Header:	<akbd.h=>akbd>

Returns:	1 if Control is held down, else 0.

This function tests to see if the Control key is being held down. It uses <OS_Byte=>SWI:OS_Byte> 129.DATA�akbd_pollkey
Syntax:	int akbd_pollkey (int *c);
Header:	<akbd.h=>akbd>

Returns:	1 if user has typed ahead.

This function reads the keyboard and returns the ASCII value of the key read in the /int/ pointed to by /c/.DATA�akbd_pollsh
Syntax:	int akbd_pollsh (void);
Header:	<akbd.h=>akbd>

Returns:	1 if Shift is held down, else 0.

This function tests to see if the Shift key is being held down. It uses the SWI <OS_Byte=>SWI:OS_Byte> 129 to do this.DIR$\\̺F���e-�"�anypending��F���e@�"callnext��F����Q�"Qhandler��F������"�init��F���p9�"�next��F���&�"�remove��F����)�"�removeall,�F�����"Lsetx�F���;�"�timedifferencep�F���s��"�timenowDATA�alarm_anypending
Syntax:	<BOOL> alarm_anypending (void *handle);
Header:	<alarm.h=>alarm>

Returns:	<TRUE> if the are pending alarms.

This function returns whether an alarm is pending with a given handle.DATAalarm_callnext
Syntax:	void alarm_callnext (void);
Header:	<alarm.h=>alarm>

This function calls the next alarm handler function. This is done for you if you use <event_process=>event_process_> to do your polling (or even if you use <wimpt> functions).DATAQalarm_handler
This type is defined in <alarm.h=>alarm>. It is a function which is called when an alarm occurs. Your function should have the definition:

{fCode;align centre}void myfunc (int called_at, void *handle);{f;align}

{/}called_at{/} is the time at which you are called, and /handle/ is the handle passed to <alarm_set>.DATA�alarm_init
Syntax:	void alarm_init (void);
Header:	<alarm.h=>alarm>

This function initialises the alarm system. If this call is made more than once, any pending alarms are cancelled.DATA�alarm_next
Syntax:	<BOOL> alarm_next (int *result);
Header:	<alarm.h=>alarm>

Returns:	<TRUE> if alarm is pending.

This function informs you whether an alarm is pending and, if so, for when it is (returned in {/}*result{/}).DATA�alarm_remove
Syntax:	void alarm_remove (int at, void *handle);
Header:	<alarm.h=>alarm>

This function removes an alarm which was set for time /at/ with the given handle. If no such alarm exists this function does nothing.DATA�alarm_removeall
Syntax:	void alarm_removeall (void *handle);
Header:	<alarm.h=>alarm>

This function removes all alarms which have the given handle.DATALalarm_set
Syntax:	void alarm_set (int at, <alarm_handler> proc, void *handle);
Header:	<alarm.h=>alarm>

This function sets an alarm at the given time. /at/ is the monotonic time at which the alarm should occur. /proc/ is your function to be called at alarm time and /handle/ is passed direct to that function. The supplied function is passed the time at which it was called. If you have enabled idle events, then these are still returned to you; if not, RISC_OSLib uses idle events internally to implement alarm calls (using non-busy waiting via <wimp_pollidle=>wimp_pollidle_>).DATA�alarm_timedifference
Syntax:	int alarm_timedifference (int t1, int t2);
Header:	<alarm.h=>alarm>

Returns:	Difference between t1 and t2.

This function returns the difference between two monotonic times. It deals with wrap round of timer.DATA�alarm_timenow
Syntax:	int alarm_timenow (void);
Header:	<alarm.h=>alarm>

Returns:	The current monotonic time.

This function reads the current monotonic time. It is equivalent to SWI <OS_ReadMonotonicTime=>SWI:OS_ReadMonotonicTime>.DIR$,,��F���<K�"�!RootDATA�ANSI Functions
#Parent $
ANSI functions are grouped into 15 header
files. Under RISC OS they are provided by
the <Shared C Library=>SWI:SharedCLibrary_.!Root> module.

#Indent 8
#Table 8 15
<assert.h=>assert>
<ctype.h=>ctype>
<errno.h=>errno_h>
<float.h=>float>
<limits.h=>limits>
<locale.h=>locale>
<math.h=>math>
<setjmp.h=>setjmp_h>
<signal.h=>signal>
<stdarg.h=>stdarg>
<stddef.h=>stddef>
<stdio.h=>stdio>
<stdlib.h=>stdlib>
<string.h=>string>
<time.h=>time_h>
#EndTableDIR$ll��F����S&�CloseDown��F�����S&�h��F���'�S&oReplyDATA�AskUser_CloseDown
Syntax:	void AskUser_CloseDown (void);
Header:	<TimsLib:AskUser.h=>AskUser_h>

This function deallocates storage claimed by <AskUser>(). It is only of use in debug builds so only exists if the macro {*}_DEBUG{*} is defined.DATA�TimsLib:AskUser.h
This header provides the facility for getting a Yes/No response to a question from the user.

Functions:

#indent 5
#table columns 2
<AskUser>
<AskUser_CloseDown>
#endtable
#indent

Types:

{align centre}<askuser_REPLY>DATAoAskUser_REPLY
This type is defined in <TimsLib:AskUser.h=>AskUser_h> as an enumerated type capable of holding a user's response to a question. It is defined as:

  \{
    askuser_NOREPLY,	/* Never returned */
    askuser_CANCEL,	/* Cancelled */
    askuser_YES,	/* Replied YES */
    askuser_NO,		/* Replied NO */
    askuser_ERROR	/* Not enough memory */
  }DIR$LL��F���)KT&!Root��F���v_T&(VALIDDATAASSERT
Syntax:	ASSERT (<BOOL> expr);
Header:	<TimsLib:Check.h=>Check>

If the macro {*}_DEBUG{*} is not defined, this has no effect. Otherwise, /expr/ is evaluated and if it is <FALSE> then an error box is displayed detailing the assertion failure.DATA(ASSERT_VALID
Syntax:	ASSERT_VALID (void *pointer);
Header:	<TimsLib:Check.h=>Check>

If the macro {*}_DEBUG{*} is not defined, no action is taken. Otherwise, /pointer/ is checked and if it is not valid (ie memory can not be read/written at this location) then an assertion failure occurs.DIR$,,��F���f��"rbariconX�F����]�/�baricon_��F���3��"�bbc��F���V^�/bbc_�4F����~�$�BOOL$6F������"~break�7F���/	�"�bsearchp:F���z�"�BUFSIZ;F����b�/,button_DATArbaricon
Syntax:	<wimp_i> baricon (char *spr, int *area, <baricon_clickproc> p);
Header:	<baricon.h=>baricon_h>

Returns:	Icon handle of created icon.

This function places a normal sprite-only icon on the icon bar. /spr/ is a pointer to the sprite name, /area/ is the sprite area pointer and /p/ is the function to be called when *Select* is clicked on the icon.DIR$��<�F������"#clickproc`�F���cw�"h|�F������"�left�F���z��"newsprite�F���V��"�textandsprite��F������"�textandsprite_leftDATA#baricon_clickproc
This type is defined in <baricon.h=>baricon_h>. It is a function called when the user clicks on an icon bar icon. The function is of the form:

{fCode;align centre}void myfunc (<wimp_i> icon);{f;align}

ie the function is passed the icon number of the icon clicked.DATAbaricon.h
This header file declares functions for placing an icon on the icon bar.

Functions:

#indent 1
#table columns 2
<baricon>
<baricon_left>
<baricon_textandsprite>
<baricon_textandsprite_left>
<baricon_newsprite>

#endtable

Type:

#align centre
<baricon_clickproc>DATA�baricon_left
Syntax:	<wimp_i> baricon_left (char *spr, int *area, <baricon_clickproc> p);
Header:	<baricon.h=>baricon_h>

Returns:	Icon handle of created icon.

This function places a normal sprite-only icon on the left of the icon bar. /spr/ is a pointer to the sprite name, /area/ is the sprite area pointer and /p/ is the function to be called when *Select* is clicked on the icon.DATAbaricon_newsprite
Syntax:	<wimp_i> baricon_newsprite (char *new);
Header:	<baricon.h=>baricon_h>

Returns:	Icon handle of icon.

This function changes the sprite used on the icon bar to be that whose name is given. The sprite must be in the same area as before...DATA�baricon_textandsprite
Syntax:	<wimp_i> baricon_textandsprite (char *spr, char *text, int bufflen, int area, <baricon_clickproc> p);
Header:	<baricon.h=>baricon_h>

Returns:	Icon handle of created icon.

This function places a normal sprite + text icon on the right of the icon bar. /spr/ is a pointer to the sprite name, /text/ is the text, /area/ is the sprite area, /bufflen/ is the text buffer length and /p/ is the function to be called when *Select* is clicked on the icon.DATA�baricon_textandsprite_left
Syntax:	<wimp_i> baricon_textandsprite_left (char *spr, char *text, int bufflen, int area, <baricon_clickproc> p);
Header:	<baricon.h=>baricon_h>

Returns:	Icon handle of created icon.

This function places a normal sprite + text icon on the left of the icon bar. /spr/ is a pointer to the sprite name, /text/ is the text, /area/ is the sprite area, /bufflen/ is the text buffer length and /p/ is the function to be called when *Select* is clicked on the icon.DATA�bbc.h
The \<bbc.h> header declares many BBC BASIC-type functions and macros for graphics and mouse/keyboard control.

Functions:

#Indent 5
#Table 2 19
<Text output=>bbc_text_>
<Graphics output=>bbc_graph_>
<VDU/Mode variables=>bbc_vmvar_>
<Sound/Miscellaneous=>bbc_misc_>
#EndTable

#Indent 0
Macros:

#Indent 5
#Table 2 19
<VDU commands=>bbc_vducom_>
<Plot codes=>bbc_plotcom_>
<VDU variables=>bbc_vduvar_>
<Mode variables=>bbc_modevar_>
#EndTableDIR$��F���ح�"�advall�F����I�"circle|�F����O�"#circlefill��F���)W�"�clg��F���N�"�clsd�F�����"6colour��F������"Ocursor��F����]�"draw�F���uc�"(drawby,�F���\k�"�fill�F����q�"gcol(�F������"yget��F������"�getbeatd�F������"�getbeats,�F���	��";gettempoh�F���Jj�"�graphd�F���
B�"graph_��F����}�"�gwindow�F���3��"minkey��F�����"�misc_t�F������"mode��F���̍�"fmodevar�F����n�"�modevar_��F�����"�move�F���f��"moveby�F���ť�"xorigin,F���O��"�paletteF���-��"plot0F���w��"Splotbmod_�F�����"^plotcom_�F���R��"�plotmod_�F������"�point�F�����"	pos�F���/�"[rectangleF����	�"irectanglefillpF����
�".setbeats�F�����"�settempo(F�����"soundHF���	�"=soundoff�F���u!�"�soundon�F����(�"�stereo<!F�����"stringprintT"F����!�">tab�#F���T��"�text_0$F���M�"ktint�&F����&�"�vdu�'F�����"�vducom_p,F���,�"Xvduq�-F����-�"�vduvar�.F����P�"�vduvar_l/F���v��"�vduvars<1F����1�"_vduw�2F��� )�"Xvmvar_�2F���?0�"�voices�3F���>7�"�vposDATA�bbc_adval
Syntax:	int bbc_adval (int buf);
Header:	<bbc.h=>bbc>

Returns:	A value, depending on the value of buf.

This function reads the contents and status of various buffers, depending on the value of /buf/:

#tab
    7	X coordinate of mouse (do not use)
    8	Y coordinate of mouse (do not use)
    246	Bytes free in mouse buffer
    252	Bytes free in printer buffer
    253	Bytes free in RS423 output buffer
    254	Bytes in RS423 input buffer
    255	Bytes in keyboard buffer

It is recommended by Acorn that you do not use bbc_adval() 7 and 8 to read the mouse position, but call the OS_Mouse SWI instead.

This call is equivalent to <OS_Byte=>SWI:OS_Byte> 128.DATAbbc_circle
Syntax:	<os_error> *bbc_circle (int x, int y, int r);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function draws a circle with centre at screen coordinates (x,y) and radius r. Equivalent to <CIRCLE=>Basic:CIRCLE> in Basic.DATA#bbc_circlefill
Syntax:	<os_error> *bbc_circlefill (int x, int y, int r);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function draws a filled circle with centre at screen coordinates (x,y) and radius r. Equivalent to <CIRCLE FILL=>Basic:CIRCLE> in Basic.DATA�bbc_clg
Syntax:	<os_error> *bbc_clg (void);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function clears the graphics window to the current background graphics colour (set using <bbc_gcol>).DATA�bbc_cls
Syntax:	<os_error> *bbc_cls (void);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function clears the text window to the current background text colour (set using <bbc_colour>).DATA6bbc_colour
Syntax:	<os_error> *bbc_colour (int c);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function sets the current text colour to the value in /c/. For c\<128 this alters the text foreground colour to c, and for c>127 this alters the text background colour to c-128.DATAObbc_cursor
Syntax:	<os_error> *bbc_cursor (int n);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function changes the appearance of the text cursor depending on /n/. Possible values are:

#tab
  0	Hide cursor
  1	Show cursor
  2	Steady cursor
  3	Flashing cursor

Equivalent to <VDU 23,1=>VDU:23,1>.DATAbbc_draw
Syntax:	<os_error> *bbc_draw (int x, int y);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function draws a line in the current graphics foreground colour from the current position to (x,y). Equivalent to <DRAW=>Basic:DRAW> in Basic.DATA(bbc_drawby
Syntax:	<os_error> *bbc_drawby (int x, int y);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function draws a line in the current graphics foreground colour from the current position relatively by (x,y). Equivalent to <DRAW BY=>Basic:DRAW> in Basic.DATA�bbc_fill
Syntax:	<os_error> *bbc_file (int x, int y);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function flood fills an area with the current graphics foreground colour, starting at (x,y).DATAbbc_gcol
Syntax:	<os_error> *bbc_gcol (int a, int c);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function changes the current graphics foreground colour (in c) and <action=>VDU:18a> (a). If c\>128 then the background colour is set to c-128.DATAybbc_get
Syntax:	int bbc_get (void);
Header:	<bbc.h=>bbc>

Returns:	The character read.

This function reads a character from the current input stream. It waits until one is available, so may halt the program temporarily. If an escape condition occurs, the function returns a value greater than 255.

This function is identical to OS_ReadC, or <GET=>Basic:GET> in Basic.DATA�bbc_getbeat
Syntax:	int bbc_getbeat (void);
Header:	<bbc.h=>bbc>

Returns:	The beat number.

This function returns the current beat number. It is equivalent to the SWI Sound_QBeat 0.DATA�bbc_getbeats
Syntax:	int bbc_getbeats (void);
Header:	<bbc.h=>bbc>

Returns:	The current bar length.

This function reads the current bar length. It is equivalent to the SWI Sound_QBeat (-1).DATA;bbc_gettempo
Syntax:	int bbc_gettempo (void);
Header:	<bbc.h=>bbc>

Returns:	The current tempo.

This function reads the tempo for the Sound Scheduler ie the rate at which the beat counter counts. The default is 0x1000 which corresponds to one beat per centisecond. 0x2000 is two beats per centisecond, etc.DATA�Graphics Output Functions
#Table 6 16
bbc_circle
bbc_circlefill
bbc_clg
bbc_draw
bbc_drawby
bbc_fill
bbc_gcol
bbc_gwindow
bbc_mode
bbc_move
bbc_moveby
bbc_origin
bbc_palette
bbc_plot
bbc_point
bbc_rectangle
bbc_rectanglefill
bbc_tint
#EndTableDATAGraphics Output Functions
#Table 6 16
<bbc_circle>
<bbc_circlefill>
<bbc_clg>
<bbc_draw>
<bbc_drawby>
<bbc_fill>
<bbc_gcol>
<bbc_gwindow>
<bbc_mode>
<bbc_move>
<bbc_moveby>
<bbc_origin>
<bbc_palette>
<bbc_plot>
<bbc_point>
<bbc_rectangle>
<bbc_rectanglefill>
<bbc_tint>
#EndTableDATA�bbc_gwindow
Syntax:	<os_error> *bbc_gwindow (int xmin, int ymin, int xmax, int ymax);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function defines the current graphics window to be the rectangle whose coordinates are given (minimum/maximum x/y). The coordinates are relative to the bottom left of the screen.

This function is equivalent to <VDU 24=>VDU:24>DATAmbbc_inkey
Syntax:	int bbc_inkey (int n);
Header:	<bbc.h=>bbc>

Returns:	n>=0	The character read.
	n\<0	-1 if the key is being pressed, or 0 if not.
	n==256	The Operating System version.

This function either reads a character from the input stream within a time limit, tests a specific key, or reads the Operating System version.

To read a character within a time limit, /n/ should be the time limit in centiseconds (up to 32767 - it can be 0). The program will wait until a character is input, for a maximum of /n/ centiseconds, and return the ASCII value of the key.

To test a specific key, /n/ should be a value from -255 to -1, and the key represented by that value will be tested. The value should be (-1 - <key nr=>SWI:os_byte121a>)

To read the OS version, n = -256.

This function is equivalent to <OS_Byte=>SWI:OS_Byte> 129, or <INKEY=>Basic:INKEY> in Basic.DATA�Miscellaneous Functions
#Table 7 15
<bbc_adval>
<bbc_cursor>
<bbc_get>
<bbc_getbeat>
<bbc_getbeats>
<bbc_gettempo>
<bbc_inkey>
<bbc_setbeats>
<bbc_settempo>
<bbc_sound>
<bbc_soundoff>
<bbc_soundon>
<bbc_stereo>
<bbc_voices>
#EndTableDATAbbc_mode
Syntax:	<os_error> *bbc_mode (int m);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function changes the current <screen mode=>VDU:22a> to the one specified in m. It is equivalent to <MODE=>Basic:MODE> in Basic, or <VDU 22=>VDU:22>.DATAfbbc_modevar
Syntax:	int bbc_modevar (int mode, int var);
Header:	<bbc.h=>bbc>

Returns:	The value of the <mode variable=>bbc_modevar_>.

This function reads the value of a single mode variable for the given mode. If mode is -1 then the current mode will be used.

This function is equivalent to the SWI <OS_ReadModeVariable=>SWI:OS_ReadModeVariable>.DATA�Mode Variables
For each of the <Mode variables=>SWI:OS_ReadModeVariable.variables> (0-12) is defined an enum type. The names are the names of the variables prefixed with "bbc_".DATA�bbc_move
Syntax:	<os_error> *bbc_move (int x, int y);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function moves the graphics cursor to the position given by (x,y). Equivalent to <MOVE=>Basic:MOVE> in Basic.DATAbbc_moveby
Syntax:	<os_error> *bbc_moveby (int x, int y);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function moves the graphics cursor from the current position relatively by (x,y). Equivalent to <MOVE BY=>Basic:MOVE> in Basic.DATAxbbc_origin
Syntax:	<os_error> *bbc_origin (int x, int y);
Header:	<bbc.h>

Returns:	Pointer to error, or <NULL> if none.

This function moves the current graphics origin (ie the position of (0,0) on the screen) to (x,y). The coordinates are given relative to the screen bottom left.

This function is equivalent to <ORIGIN=>Basic:ORIGIN> in Basic, or <VDU 29=>VDU:29>.DATA�bbc_palette
Syntax:	<os_error> *bbc_palette (int c, int m, int r, int g, int b);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function redefines the colour specified in c either to the physical colour in /m/ (if m\<16) or to the colour whose red, green, and blue components are given by /r/, /g/, and /b/. /m/ can be one of the following:

#Tab
  0-15	Colour c is redefined to be the physical colour in m.
  16	Colour c is redefined to (r,g,b).
  17	First flash colour for c is (r,g,b).
  18	Second flash colour for c is (r,g,b).
  24	Border colour is (r,g,b). c is ignored.
  25	Mouse colour c is (r,g,b).

128 added to any of the above sets the supremacy bit.

This command is equivalent to <VDU 19=>VDU:19>.DATAbbc_plot
Syntax:	<os_error> *bbc_plot (int n, int x, int y);
Header:	<bbc.h=>bbc>

This function does lots of things. It is the same as <PLOT=>Basic:PLOT> in Basic, or the SWI <OS_Plot=>SWI:OS_Plot>. /n/ is the <plot type=>bbc_plotcom_>, and /x/ and /y/ are coordinates.DATASPlot Code Block Modifiers
The following macros are defined in <bbc.h=>bbc>

Macro	Code	Meaning
#line
bbc_BMoveRel	0	Move relative
bbc_BMoveRectRel	1	Move rectangle relative
bbc_BCopyRectRel	2	Copy rectangle relative

bbc_BMoveAbs	4	Move absolute
bbc_BMoveRectAbs	5	Move rectangle absolute
bbc_BCopyRectAbs	6	Copy rectangle absoluteDATA^Plot Commands
The following macros are defined in <bbc.h=>bbc>:

Macro	Code	Meaning
#line
bbc_SolidBoth	0x00	Solid line including both end points
bbc_SolidExFinal	0x08	Solid line excluding the final point
bbc_DottedBoth	0x10	Dotted line incl. both end points, pattern restarted
bbc_DottedExFinal	0x18	Dotted line excl. final point, pattern restarted
bbc_SolidExInit	0x20	Solid line excluding the initial point
bbc_SolidExBoth	0x28	Solid line excluding both end points
bbc_DottedExInit	0x30	Dotted line excl. initial point, pattern continued
bbc_DottedExBoth	0x38	Dotted line excl. both end points, pattern continued
bbc_Point	0x40	Point plot
bbc_HorizLineFillNB	0x48	Horizontal line fill (left & right) to non-background
bbc_TriangleFill	0x50	Triangle fill
bbc_HorizLineFillB	0x58	Horizontal line fill (right only) to background
bbc_RectangleFill	0x60	Rectangle fill
bbc_HorizLineFillF	0x68	Horizontal line fill (left & right) to foreground
bbc_ParallelFill	0x70	Parallelogram fill
bbc_HorizLineFillNF	0x78	Horizontal line fill (right only) to non-foreground
bbc_FloodToBack	0x80	Flood to non-background
bbc_FloodToFore	0x88	Flood to foreground
bbc_Circle	0x90	Circle outline
bbc_CircleFill	0x98	Circle fill
bbc_CircleArc	0xA0	Circular arc
bbc_Segment	0xA8	Segment
bbc_Sector	0xB0	Sector
bbc_Block	0xB8	Block copy/move (has different <modifiers=>bbc_plotbmod_>)
bbc_Ellipse	0xC0	Ellipse outline
bbc_EllipseFill	0xC8	Ellipse fill
bbc_GraphicsChar	0xD0	Font printing (obsolete - don't use)
bbc_SpritePlot	0xE8	Sprite plot

Onto each of these can be added a <modifier=>bbc_plotmod_> which affects the way the command behaves.DATA�Plot Code Modifiers
The following macros are defined in <bbc.h=>bbc>.

Macro	Code	Meaning
#line
bbc_MoveCursorRel	0	Move cursor relative
bbc_DrawRelFore	1	Plot relative in foreground
bbc_DrawRelInverse	2	Plot relative in inverse
bbc_DrawRelBack	3	Plot relative in background
bbc_MoveCursorAbs	4	Move cursor absolute
bbc_DrawAbsFore	5	Plot absolute in foreground
bbc_DrawAbsInverse	6	Plot absolute in inverse
bbc_DrawAbsBack	7	Plot absolute in backgroundDATA�bbc_point
Syntax:	int bbc_point (int x, int y);
Header:	<bbc.h=>bbc>

Returns:	The colour of the pixel.

This function reads the logical colour of the pixel at coordinates (x,y). If the coordinates are outside the graphics window, or if the mode is 256 colour, then it returns 0xFF.

This function is equivalent to <OS_Word 9=>SWI:os_word9>. Calling the SWI <OS_ReadPoint=>SWI:OS_ReadPoint> is a better way of doing this, though (trust Acorn to ignore their own improvements...).DATA	bbc_pos
Syntax:	int bbc_pos (void);
Header:	<bbc.h=>bbc>

Returns:	The cursor position.

This function reads the X coordinate of the text cursor, from the left hand edge of the current text window.

This function is equivalent to <OS_Byte=>SWI:OS_Byte> &86.DATA[bbc_rectangle
Syntax:	<os_error> *bbc_rectangle (int x, int y, int w, int h);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function draws a rectangle on the screen, with the bottom left at position (x,y) and width and height as given by /w/ and /h/. Equivalent to <RECTANGLE=>Basic:RECTANGLE> x,y,w,h in Basic.DATAibbc_rectanglefill
Syntax:	<os_error> *bbc_rectanglefill (int x, int y, int w, int h);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function draws a filled rectangle on the screen, with bottom left at (x,y) and width and height specified by /w/ and /h/. It is equivalent to <RECTANGLE FILL x,y,w,h=>Basic:RECTANGLE> in Basic.DATA.bbc_setbeats
Syntax:	<os_error> *bbc_setbeats (int n);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function sets the current bar length to /n/, and enables the beat counter. It is equivalent to the SWI Sound_QBeat.

If n \< (-1) then the beat counter is disabled. DATA�bbc_settempo
Syntax:	<os_error> *bbc_settempo (int t);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function sets the tempo for the Sound Scheduler ie the rate at which the beat counter counts. The default is 0x1000 which corresponds to one beat per centisecond. 0x2000 is two beats per centisecond, etc.

This function is equivalent to SWI Sound_QTempo.DATAbbc_sound
Syntax:	<os_error> *bbc_sound (int c, int a, int p, int d, int t);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function schedules a sound with channel, amplitude, pitch and duration set by /c/, /a/, /p/ and /d/ respectively, to occur at the schedule time given by /t/.

Amplitude may be either 0-15 for linear control, or 0x100 to 0x17F for logarithmic control in which case bit 7 set means smooth pitch changes. In the logarithmic scale a change of 0x10 means a doubling or halving of volume.

<Pitch=>sound_pitch_> may be either 0-255 in quarter-semitone steps, or 0x100 to 0x7FF for fine control (4096 steps per octave!) in which case bits 0-11 represent the note and bits 12- 14 represent the octave.

Duration is in twentieths of a second.

The schedule time is either: (-2) for immediate scheduling, (-1) for scheduling at the same time as the last scheduled event, or a schedule period. The schedule period is measured from the last bar start (if the beat counter is enabled) or from the call time.DATA=bbc_soundoff
Syntax:	<os_error> *bbc_soundoff (void);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function disables the sound system completely. All Sound interrupts and DMA activity is suspended.

This is equivalent to <*Audio Off> or the SWI <Sound_Enable 1=>SWI:Sound_Enable>.DATA�bbc_soundon
Syntax:	<os_error> *bbc_soundon (void);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function enables the sound system. It is equivalent to <*Audio On> or the SWI <Sound_Enable 2=>SWI:Sound_Enable>.DATA�bbc_stereo
Syntax:	<os_error> *bbc_stereo (int ch, int pos);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function sets the stereo position of a sound channel. The positions are from -127 to 127, with -127 at the extreme left, 0 in the centre and 127 at the extreme right. If less than 8 channels are enabled then more than one channel will be altered.

This function is equivalent to the SWI Sound_Stereo.DATAbbc_stringprint
Syntax:	<os_error> *bbc_stringprint (char *str);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function writes the null terminated string to all active output streams. It does this by calling the SWI <OS_Write0=>SWI.OS_Write0>.DATA>bbc_tab
Syntax:	<os_error> *bbc_tab (int x, int y);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function moves the text cursor to position (x,y). If x or y are outside the current text window, the function does not move the cursor. It does this by making three calls to <bbc_vdu>.DATA�Text Output Functions
#Table 5 17
<bbc_cls>
<bbc_colour>
<bbc_pos>
<bbc_stringprint>
<bbc_tab>
<bbc_vdu>
<bbc_vduq>
<bbc_vduw>
<bbc_vpos>
#EndTableDATAkbbc_tint
Syntax:	<os_error> *bbc_tint (int c, int t);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function sets the tint (ie the amount of white added) for a colour (256 colour modes only). The colour for which the tint is set is specified by c, which may be any of the following:

#tab
       0	Text foreground colour
       1	Text background colour
       2	Graphics foreground colour
       3	Graphics background colour.

The tint, given in t, should be either 0, 1, 2 or 3. The higher it is, the brighter the colour is.

This function is equivalent to <VDU 23,17=>VDU:23,17,0>.DATA�bbc_vdu
Syntax:	<os_error> *bbc_vdu (int c);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function writes the specified character to all active output streams. It does this by calling the SWI <OS_WriteC=>SWI.OS_WriteC>DATA�VDU Commands
The following macros are defined in <bbc.h=>bbc>:

Macro	Code	Meaning
#Line
bbc_CharToPrinter	1	Send next char to printer
bbc_EnablePrinter	2	Enable printer
bbc_DisablePrinter	3	Disable printer
bbc_TextToText	4	Split text & graphics cursors
bbc_TextToGraph	5	Join text & graphics cursors
bbc_EnableVDU	6	Enable screen output
bbc_Bell	7	Bell (system beep)
bbc_MoveOneBack	8	Backspace (move left)
bbc_MoveOneOn	9	Horizontal tab (move right)
bbc_MoveDownOne	10	Line feed (move down)
bbc_MoveUpOne	11	Vertical tab (move up)
bbc_ClearText	12	Form feed/Clear screen
bbc_MoveToStart	13	Carriage return
bbc_PageOn	14	Paged mode on
bbc_PageOff	15	Paged mode off
bbc_ClearGraph	16	Clear graphics window
bbc_DefTextColour	17	Set text colour
bbc_DefGraphColour	18	Set graphics colour and action
bbc_DefLogical	19	Set palette
bbc_RestoreLogical	20	Restore default palette
bbc_DisableVDU	21	Disable screen output
bbc_ScreenMode	22	Change Screen Mode
bbc_MultiPurpose	23	Misc
bbc_DefGraphWindow	24	Define graphics window
bbc_PlotCommand	25	Plot
bbc_DefaultWindow	26	Restore default windows
bbc_DefTextWindow	28	Define text window
bbc_DefGraphOrigin	29	Set graphics origin
bbc_HomeText	30	Home
bbc_MoveText	31	Position text cursorDATAXbbc_vduq
Syntax:	<os_error> *bbc_vduq (int c, ...);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function outputs multiple characters. The first character should be a control code and then the parameters follow. You can only send the right number of parameters (the function knows how many there should be).DATA�bbc_vduvar
Syntax:	int bbc_vduvar (int n);
Header:	<bbc.h=>bbc>

Returns:	The value of the VDU variable.

This function reads a single <VDU=>bbc_vduvar_> or <mode=>bbc_modevar_> variable value, for the current screen mode.DATA�VDU Variables
For each of the <VDU variables=>SWI:os_readvduvariables.variables> (128-170) is defined an enum type. The names are the names of the variables prefixed with "bbc_".DATA�bbc_vduvars
Syntax:	<os_error> *bbc_vduvars (int *var, int *val);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function reads several <VDU=>bbc_vduvar_> or <mode=>bbc_modevar_> variables for the current mode. /var/ points to a sequence of /ints/, terminated by (-1). The value of each of those VDU variables will be read and placed in the sequence of /ints/ pointed to by /val/, in the same order. /var/ and /val/ may be equal.DATA_bbc_vduw
Syntax:	<os_error> *os_vduw (int n);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function sends the 16-bit value in /n/ to the VDU driver as two bytes, lower byte first (little endian). It would typically be used for sending screen coordinates to the VDU drivers, as these are always two byte quantities.DATAXVDU/Mode Variables Functions
#Indent 10
<bbc_vduvar>
<bbc_vduvars>
<bbc_modevar>DATA�bbc_voices
Syntax:	<os_error> *bbc_voices (int n);
Header:	<bbc.h=>bbc>

Returns:	Pointer to error, or <NULL> if none.

This function sets the number of active sound channels. /n/ will be rounded up to 1, 2, 4 or 8.DATA�bbc_vpos
Syntax:	int bbc_vpos (void);
Header:	<bbc.h=>bbc>

Returns:	The cursor position.

This function reads the Y coordinate of the text cursor, from the top edge of the current text window.DATA�BOOL
The type BOOL is defined in <DeskLib:Core.h=>Core>, <TimsLib:Core.h=>Core_TL> and <os.h=>os> (Desktop C) as an object capable of holding the values <TRUE> and <FALSE>. It is in fact defined using the following macro, rather than properly defining it as a type:

{fCode;align centre}<#define=>define> BOOL int{f;align}

In DeskLib it is defined as an /unsigned/, not an /int/.DATA~break
This command allows you to jump out of a set of braces. It is of most use in <switch> constructs.

eg

#fCode
   switch (a)
   \{
   case 0: <puts>("Case 0");
   case 1: puts("Case 1");
           break;
   case 2: puts("Case 2");
   }
#f

If a==0, then �Case 0� and �Case 1� are printed.
If a==1, then just �Case 1� is printed.
If a==2, then just �Case 2� is printed.DATA�bsearch
Syntax:	void *bsearch (void *key, void *base, <size_t> num, size_t size, int (*func) (void *, void *));
Header:	<stdlib.h=>stdlib>

Returns:	A pointer to the matching object, or <NULL> if none found.

This function searches an array of /num/ objects, each of which is /size/ bytes long, and whose first object is pointed to by /base/, for an object which matches /key/.

The function which must be defined by you is called with pointers to objects. If the first is less than, equal to, or greater than the second then the function should return less than, equal to, or greater than zero.

The array must be sorted into ascending order, on the basis of the criteria used by the comparison function.DATA�BUFSIZ
#Parent stdio
The macro BUFSIZ is defined in <stdio.h=>stdio> as the size of the buffer used by the function <setbuf>. In Easy�C it is defined as 4096.DIR$,,D;F���TB&�stateDATA�button_state
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is used to hold the current button state of the mouse, both as a value and as individual bits so you can test easily for individual buttons. It is defined as the following union:

  \{
    unsigned int value;
    struct
    \{
      unsigned int adjust	: 1;
      unsigned int menu	: 1;
      unsigned int select	: 1;
      unsigned int dummy3	: 1;
      unsigned int dragadjust	: 1;
      unsigned int dummy5	: 1;
      unsigned int dragselect	: 1;
      unsigned int dummy7	: 1;
      unsigned int clickadjust	: 1;
      unsigned int dummy9	: 1;
      unsigned int clickselect	: 1;
    } data;
  }DIR$���BF���c�/�c_�WF����"Ncalloc0YF����c�/�cap_\F���d�/,caret_�^F���\o�"<case_F����P�"�ceil�`F���bd�/`CHAR_�bF����d�/,chario_dF����S&�Check�fF����d�/\check_�rF���?M�"�clearerrTsF���پ�"�clock�tF����e�/(clock_�uF����e�/,CLOCKS_DwF���y�T&�CloseDownFunctionxF���(f�/dcolour_�{F�����"�colourmenu�}F������$�ColourTran`F����f�/,colourtran_ԡF���Bh�/�colourtrans_��F����h�/�compdir_��F����j�/,convert_��F���٧T&Coord��F����j�/@Coord_p�F���A"#�coordsL�F���Al�/ coords_l�F���Y��$eCore��F���rm�/(Core_�F�����"�cos��F���&ƽ"�coshh�F����m�/Lct_h�F���y��"7ctime��F������"�ctype`�F���o�N&)Clear��F���n�/�Clear_F����n�/HColourMenu_DIR$��`CF������"�!Root\EF�����"�expr_JF���E�"�func_�LF���Ճ/�struct_XQF���wl�"�types_0TF���9�/�var_DATA�The C Language
C is a very small language, with very few commands and statements. Most of its work is done by evaluating expressions. In fact, virtually everything is done this way because even function calls are evaluated as expressions.

#align centre
<Program Structure=>c_struct_>
<Expressions=>c_expr_>
<Variables=>c_var_>
<Functions=>c_func_>
<Types=>c_types_>
#align

Commands:

#indent 10
#Table columns 5
<for>
<while>
<do>
<if>
<else>
<return>
<break>
<switch>
<case>
<default>
#EndTableDATA�Expressions
Expressions are a vital part of C. They are written down in much the same way as in any other language: a series of values and operators, precedence given by parentheses (). Values can be <variables=>c_var_>, <functions=>c_func_> or constants. Operators are as follows:

#Tab
           +	Plus
           -	Minus
           *	Multiply/contents of
           /	Divide
           %	Modulo
           &	Bitwise AND/Pointer to.
           |	Bitwise OR
           ^	Bitwise EOR
           ~	Bitwise NOT
   <sizeof>(x)	Click to find out!

* and & have two uses. With two values they perform multiply and AND repectively. However (*p) gives the value pointed to by p, and (&a) gives the pointer to a.

These are comparison operators. They return 1 or 0 (true or false):
#Tab
          ==	Equals
          !=	Not equals
          \<	Less than
          \<=	Less than/equal
          >	Greater than
          >=	Greater than/equal

These are logical operators. They return 1 or 0 (true or false) and take their argument as non-zero or 0 (true or false). eg 3 && 3 gives 1, whereas 3 & 3 gives 3.
#Tab
             &&	Logical AND
             ||	Logical OR
             !	Logical NOTDATA�Functions
Functions are possibly given some values, do some processing and possible return a value. They have the form:

#fCode
  \<type> \<name> (\<variables>)
  \{
  \<variable declarations>;
     ...
  }
#f

\<type>	is the <type=>c_types_> returned by the function.

\<name>	is the function name.

\<variables>	are the arguments passed to the function, declared as normal <variables=>c_var_>.

eg.

#fCode
  int my_function (int a, float b, char *c)
  \{
     ....
  }
#f

declares a function called {/}my_function{/}, passed three values (the last a pointer to an array of chars ie a string) and returning an integer. The work of the function is done in the \{}s.DATA�Program Structure
The structure of a general program is given below:

#fCode
   #<include>s
   #<define>s
   Function Declarations;
   Variable Declarations;

   main()
   \{
      ...
   }

   Other Functions
#f

Most of these items can appear in any order. Functions need only be declared if they are called before they are defined. A declaration is just the first line of the definition ie the return type, name and parameters.

/main/ is the function called when the program is run. On exit from this function, the program terminated. It can take two arguments as follows:

{align centre; fCode}void main (int argc, char *argv[]) \{}{f;align}

These are the parameters passed on the command line, /argc/ is the number of them and {/}argv[]{/} are the parameters in the order they were given on the command line used to start the program. Remember that {/}argv[0]{/} will probably be the program name itself, so {/}argc >= 2{/} will usually imply that a command line argument has been passed.

Functions or Variables can be declared as /extern/ ie they are defined in a different file eg in another source file, or /static/ ie they are not accessible outside the scope of this file.DATA�Types
Types are defined using the <typedef> command.
The built in types are as follows:

int:	This can be a /short int/ or a /long int/. A plain /int/ or a /long int/ is 32-bits on the Acorn. A /short int/ is 16-bits in Desktop C, and 32-bits in Easy C. These variable types hold integer values. It can also be /signed/ or /unsigned/.

char:	This is 8-bits long. It can be /signed/ or /unsigned/.

float, double and long double:	These hold floating point values, with increasing accuracy.

void:	This is a special type. It is usually only used in function definitions to indicate that no value is passed and/or returned. A pointer to a /void/ ie {/}void *{/} can be used anytime to hold a general pointer to anything.DATA�Variables
Variables are defined in terms of a type. They are defined by giving the type and then a list of variable names separated by commas; the whole lot terminated by a semicolon.

eg
{align centre;fCode}int a,b,*c,d[6],e[]=\{9,4,5,2};{f;align}

The '*' indicates that /c/ is not an integer, but a pointer to an integer. The value /c/ points to is given by {/}*c{/}. /d/ is defined as an array of 6 integers, indexed as 0 to 5. /e/ is an array of four integers, whose values are initialised to 9,4,5 and 2 respectively.

More complex variables can be defined using <structures=>struct> and <unions=>union>.

Variables can be delclared at the start of the program, outside all functions in which case they are global. Alternatively, they can be declared at the start of a block in which case they are local to that block and any blocks within it. /static/ variables declared within blocks keep their value if the block is re-entered.DATANcalloc
Syntax:	void *calloc (<size_t> n, size_t size);
Header:	<stdlib.h=>stdlib>

Returns:	Pointer to space, or <NULL> if failed.

This function allocates space for /n/ objects, with each object taking /size/ bytes. The total space allocated is therefore (n*size) bytes. The entire space is initialised with each byte zeroed.DIR$���YF�����E#�buttLZF����F#�round�ZF���F#�squaret[F����F#�triangDATA�cap_butt
This macro is defined in <drawmod.h=>drawmod>. It is a value representing butt caps. It is defined as ((unsigned char)0x00).DATA�cap_round
This macro is defined in <drawmod.h=>drawmod>. It is a value representing rounded caps. It is defined as ((unsigned char)0x01).DATA�cap_square
This macro is defined in <drawmod.h=>drawmod>. It is a value representing square caps. It is defined as ((unsigned char)0x02).DATA�cap_triang
This macro is defined in <drawmod.h=>drawmod>. It is a value representing triangular caps. It is defined as ((unsigned char)0x03).DIR$,,8\F���@@F&�blockDATA�caret_block
This type is defined by <DeskLib:Wimp.h=>Wimp> as a type capable of holding information about the caret position. It is defined as the following structure:

  \{
    <window_handle>	window;
    <icon_handle>	icon;
    <wimp_point>	offset;
    int	height;
    int	index;
  }
{tab}
�	/window/ and /icon/ are -1 if none.
�	/offset/ contains the caret offset relative to work area origin.
�	/index/ contains the index into the string.
�	/height/ contins the caret height and flags:
{tab}
#indent 3
_Bit_	_Meaning_
24	use VDU 5 caret, not anti-aliased caret
25	caret is invisible
26	use bits 16-23 for colour
27	bits 16-23 are logical colours.DATA<case
This command is part of the <switch> construct.DATA�ceil
Syntax:	double ceil (double x);
Header:	<math.h=>math>

Returns:	The smallest integer equal to or greater than x.

This function calculates the �ceiling� of the given value. This is the smallest integer not less than x. Basically, if x is an integer value then the function returns x, otherwise it returns the next highest integer. Note that the result is returned as a double, even though it is an integer value.DIR$``aF���0߼"�BIT�aF������"�MAXHbF�����"�MINDATA�CHAR_BIT
This macro is defined in <limits.h> and represents the number of bits in which char values are stored. In Easy C it is defined as 8.DATA�CHAR_MAX
This macro is defined in <limits.h> and represents the maximum value which can be stored in a char. In Easy C it is defined as 0xffU (255).DATA�CHAR_MIN
This macro is defined in <limits.h> and represents the minimum value which can be stored in a char. In Easy C it is defined as 0.DIR$,,cF���[�"�!RootDATA�Character I/O Functions
#Parent stdio
These functions read and write from any stream, single characters, or a sequence of characters.

#Table 4 16
<fgetc>
<fgets>
<fputc>
<fputs>
<getc>
<getchar>
<gets>
<putc>
<putchar>
<puts>
<ungetc>
#EndTableDATA�TimsLib:Check.h
#Parent ro_tlib_
This header provides a replacement for the ANSI <assert.h=>assert> header. If an assertion fails, an error box is displayed giving the file, line and reason. The user can then quit the application or continue.

Functions:

#indent 4
#Table columns 2
<Check_Init>
<Check_RegisterCloseDown>
<Check_Assert>
<Check_AssertAlways>
<Check_AssertFailure>
<Check_AssertFailureExt>
<Check_Valid>
<Check_AssertValid>
#EndTable
#indent

Function-like macros:

#indent 10
#Table columns 3
<ASSERT=>ASSERT_>
<VERIFY>
<ASSERT_VALID>
<VERIFY_VALID>
<VALID>

#EndTable

#Table columns 2
Type:

<CloseDownFunction>
Variable:

<check_aborting>
#EndTableDIR$\\hF���P�T&�aborting�hF����T&�AsserttjF����T&�AssertAlways`kF����T&�AssertFailure8lF����#T&�AssertFailureExt�mF����=T&AssertValidoF�����S&�Init�oF����S&RegisterCloseDown�pF���E3T&�ValidDATA�check_aborting
This variable is defined in <TimsLib:Check.h=>Check>. It contains <TRUE> when an irrecoverable error has occurred, or the user has decided to abort due to an assertion failure.DATA�Check_Assert
Syntax:	void Check_Assert (<BOOL> expr, char *reason);
Header:	<TimsLib:Check.h=>Check>

This call checks that /expr/ is <TRUE> - if not then an error box is displayed allowing the user to continue or quit. An optional description of the fault ({/}reason{/}) may be displayed. If /reason/ is <NULL> then no description is displayed.

If the macro {*}_DEBUG{*} is not defined then this has no effect.DATA�Check_AssertAlways
Syntax:	void Check_AssertAlways (<BOOL> expr, char *reason);
Header:	<TimsLib:Check.h=>Check>

This function is identical to <Check_Assert>, except that it gets called regardless of the state of {*}_DEBUG{*}.DATA�Check_AssertFailure
Syntax:	void Check_AssertFailure (char *reason);
Header:	<TimsLib:Check.h=>Check>

This function displays /reason/ in an error box, and gives the user the choice of quitting or continuing.DATA�Check_AssertFailureExt
Syntax:	void Check_AssertFailureExt (char *reason, char *file, int line);
Header:	<TimsLib:Check.h=>Check>

This function displays /reason/, /file/ and /line/ in an error box, and gives the user the choice of quitting or continuing. /file/ and /line/ will normally be set using the {*}__FILE__{*} and {*}__LINE__{*} macros.

If the user quits, then the function registered with <Check_RegisterCloseDown> is called.DATACheck_AssertValid
Syntax:	void Check_AssertValid (void *p);
Header:	<TimsLib:Check.h=>Check>

This function checks if the given pointer /p/ is valid. If it is not then an assertion failure occurs. If the macro {*}_DEBUG{*} is not defined, it has no effect.DATA�Check_Init
Syntax:	void Check_Init (void);
Header:	<TimsLib:Check.h=>Check>

Initialises the Check module. This must be called before calling any other Check functions.DATACheck_RegisterCloseDown
Syntax:	void Check_RegisterCloseDown (<CloseDownFunction> func);
Header:	<TimsLib:Check.h=>Check>

This function registers a function to be called in the event of an irrecoverable assertion failure. If /func/ = <NULL> then no function will be called.DATA�Check_Valid
Syntax:	<BOOL> Check_Valid (void *p, char *file, int line);
	<BOOL> Check_Valid (void *p);
Header:	<TimsLib:Check.h=>Check>

Returns:	<TRUE> if the pointer is valid.

This function checks if the given pointer /p/ is valid and returns <TRUE> or <FALSE> accordingly. The first form of the function is used if the macro {*}_DEBUG{*} is defined, otherwise the second form is used. Normally this function will only be called as a result of using <VALID> or <ASSERT_VALID>.DATA�clearerr
Syntax:	void clearerr (<FILE> *stream);
Header:	<stdio.h=>stdio>

This function clears the end-of-file and error flags of the specified stream.DATA�clock
Syntax:	<clock_t> clock (void);
Header:	<time.h=>time_h>

Returns:	The number of clock ticks.

This function reads the number of clock ticks which have occurred since the last time the computer's internal clock was reset. The number of clock ticks per second is given by <CLOCKS_PER_SEC>.

This function is roughly equivalent to the SWI <OS_ReadMonotonicTime=>SWI:OS_ReadMonotonicTime>.DIR$((uF���VI�"�tDATA�clock_t
The type {/}clock_t{/} is defined in <time.h=>time_h> as an object capable of holding all possible values returned by the function <clock>. In Easy C it is defined as an /unsigned int/.DIR$,,vF���<=�">PER_SECDATA>CLOCKS_PER_SEC
The macro {/}CLOCKS_PER_SEC{/} is defined in <time.h=>time_h> to represent the number of clock ticks per second (or more formally, the difference in the return values of the function <clock> at one second intervals). In Easy C it is defined as 100, hence the clock tick value is in centiseconds.DATA�CloseDownFunction
This type is defined in <TimsLib:Check.h=>Check>. It is the type of a function called on a assertion failure. The function should have the form:

{fCode;align centre}void my_func ();DIR$ddxxF�����a%cmyk�yF���\�a%hsv�zF���<�a%"rgbDATAcolour_cmyk
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to hold a CMYK colour:

  \{
    unsigned int key		: 8;
    unsigned int yellow		: 8;
    unsigned int magenta	: 8;
    unsigned int cyan		: 8;
  }

See the PopUp documentation for more details.DATAcolour_hsv
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to hold an HSV colour:

  \{
    unsigned int value		: 8;
    unsigned int saturation	: 8;
    unsigned int hue		: 16; /* 0 - 359 */
  }

See the PopUp documentation for more details.DATA"colour_rgb
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to hold an RGB colour:

  \{
    unsigned int transparency	: 8;
    unsigned int red		: 8;
    unsigned int green		: 8;
    unsigned int blue		: 8;
  }

See the PopUp documentation for more details.DATA�colourmenu.h
The \<colourmenu.h> header declares one function, as follows:

Syntax:	<menu> colourmenu_make (char *title, <BOOL> noneflag);
Header:	<colourmenu.h=>colourmenu>

Returns:	Pointer to menu structure.

This function creates a menu containing the 16 Wimp colours. If /noneflag/ = <TRUE> then an additional entry 'None' will be present. /title/ points to the title for the menu. The menu is only created, not displayed.

The icons on this menu are numbered from 1.DATA�ColourTran.h
Version: 1.00 (13 May 1994)
#line
The \<ColourTran.h> header defines several functions which access the routines in the <ColourTrans=>SWI:ColourTrans_> module. It also defines one type.

Functions:

#indent 8
<ColourTrans_SetGCOL>
<ColourTrans_InvalidateCache>
<ColourTrans_SelectTable>
<ColourTrans_ReturnFontColours>
<ColourTrans_ReturnColourNumberForMode>
#indent

Type:

#indent 8
<colourtrans_fontblock>DIR$,,��F���'�#/colournumbertoGCOL��F���F�#0GCOL_tocolournumber�F����!#�h؇F�����#%invalidate_cache�F�����#freturn_colournumberh�F����#�return_GCOLformode��F���f#Oreturn_OppGCOLL�F�����#
returnfontcolours\�F���0�#]returnGCOL��F���-�#�select_GCOLtable@�F���f�#~select_table��F�����#Lsetfontcolours�F���_�#�setGCOL��F����t�"setOppGCOL�F���
_#�return_colourformode��F���\�#uconvert_device_colour(�F���3~#�return_OppcolourformodeԞF���Gn#areturn_Oppcolournumber8�F���*v#�return_OppGCOLformodeDATA/colourtran_colournumbertoGCOL
Syntax:	<os_error> *colourtran_colournumbertoGCOL (int col, int *gcol);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function translates a colour number to a GCOL (assuming 256 colour mode) and returns it in {/}*gcol{/}.DATA0colourtran_GCOL_tocolournumber
Syntax:	<os_error> *colourtran_GCOL_tocolournumber (int gcol, int *col);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function translates a GCOL to a colour number (assuming 256 colour mode) and returns it in {/}*col{/}.DATA�colourtran.h
The \<colourtran.h> header declares functions
accessing the routines in the ColourTrans
module.

Functions:

     <colourtran_select_table>
     <colourtran_select_GCOLtable>
     <colourtran_returnGCOL>
     <colourtran_setGCOL>
     <colourtran_return_colournumber>
     <colourtran_return_GCOLformode>
     <colourtran_return_colourformode>
     <colourtran_return_OppGCOL>
     <colourtran_return_Oppcolournumber>
     <colourtran_return_OppGCOLformode>
     <colourtran_return_Oppcolourformode>
     <colourtran_GCOL_tocolournumber>
     <colourtran_colournumbertoGCOL>
     <colourtran_returnfontcolours>
     <colourtran_setfontcolours>
     <colourtran_invalidate_cache>
     <colourtran_convert_device_colour>
     DATA%colourtran_invalidate_cache
Syntax:	<os_error> *colourtran_invalidate_cache (void);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function should be called when the palette has changed since a call was last made to a function in this module.DATAfcolourtran_return_colournumber
Syntax:	<os_error> *colourtran_return_colournumber (<wimp_paletteword> entry, int *col);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function informs you of the closest colour number in the current mode to a given palette entry. The colour number is returned in {/}*col{/}.DATA�colourtran_return_GCOLformode
Syntax:	<os_error> *colourtran_return_GCOLformode (<wimp_paletteword> entry, int destmode, wimp_paletteword *destpal, int *gcol);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function informs you of the closest GCOL to a given palette entry, destination mode and destination palette. The GCOL is returned in {/}*gcol{/}.DATAOcolourtran_return_OppGCOL
Syntax:	<os_error> *colourtran_return_OppGCOL (<wimp_paletteword> entry, int *gcol);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function informs you of the furthest GCOL in the current mode from a given palette entry. The GCOL is returned in {/}*gcol{/}.DATA
colourtran_returnfontcolours
Syntax:	<os_error> *colourtran_returnfontcolours (<font> *handle, <wimp_paletteword> *backgnd, wimp_paletteword *foregnd, int *max_offset);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function informs you of font colours to match the given colours. The closes approximations to fore/background colours will be set, and as many intermediate colours as possible (up to a maximum of {/}*max_offset{/}). Values are retuned through the parameters.DATA]colourtran_returnGCOL
Syntax:	<os_error> *colourtran_returnGCOL (<wimp_paletteword> entry, int *gcol);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function informs you of the closest GCOL in the current mode to a given palette entry. The GCOL value is returned in the variable pointed to /gcol/.DATA�colourtran_select_GCOLtable
Syntax:	<os_error> *colourtran_select_GCOLtable (int srcmode, <wimp_paletteword> *srcpal, int destmode, wimp_paletteword *destpal, void *buffer);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function sets up a list of GCOLs in a buffer, given a source mode and palette, and a destination mode and palette.DATA~colourtran_select_table
Syntax:	<os_error> *colourtran_select_table (int srcmode, <wimp_paletteword> *srcpal, int destmode, wimp_paletteword *destpal, void *buffer);
Header:	<colourtran.h=>colourtran_h>

Returns: Pointer to error, or <NULL> if none.

This function sets up a translation table in a buffer, given a source mode and palette, and a destination mode and palette.DATALcolourtran_setfontcolours
Syntax:	<os_error> *colourtran_setfontcolours (<font> *handle, <wimp_paletteword> *backgnd, wimp_paletteword *foregnd, int *max_offset);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function informs you of font colours to match the given colours. The closes approximations to fore/background colours will be set, and as many intermediate colours as possible (up to a maximum of {/}*max_offset{/}). Values are retuned through the parameters. {*}Font_setfontcolours(){*} is then called with these as parameters.DATA�colourtran_setGCOL
Syntax:	<os_error> *colourtran_setGCOL (<wimp_paletteword> entry, int back, int gcol_in, int *gcol_out);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function informs you of the closest GCOL in the current mode to a given palette entry, and also sets the GCOL. /back/ should be 0 to set a foreground colour, or 128 to set a background colour. {/}gcol_in{/} is the GCOL action and the GCOL is returned in {/}*gcol_out{/}.DATAcolourtran_setOppGCOL
Syntax:  <os_error> *colourtran_setOppGCOL
         (<wimp_paletteword> entry, int back,
         int gcol_in, int *gcol_out);
Header:  <colourtran.h=>colourtran_h>

Returns: Pointer to error, or <NULL> if none.

This function informs you of the furthest GCOL in the
current mode from a given palette entry. The GCOL is
returned in '*gcol_out'. It also sets the GCOL with the
action 'gcol_in'. If 'back' is 128 then the background
colour is set, else if 'back' is 0 then the foreground
colour is set.DATA�colourtran_return_colourformode
Syntax:	<os_error> *colourtran_return_colourformode (<wimp_paletteword> entry, int destmode, wimp_paletteword *destpal, int *col);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function informs you of the closest colour to a given palette entry, destination mode and destination palette. The colour number is returned in {/}*gcol{/}.DATAucolourtran_convert_device_colour
Syntax:	<os_error> *colourtran_convert_device_colour (<wimp_paletteword> dvce, wimp_paletteword *rgb);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function converts the device colour in /dvce/ to a standard RGB colour, returned in {/}*rgb{/}. It uses the current calibration to convert.DATA�colourtran_return_Oppcolourformode
Syntax:	<os_error> *colourtran_return_Oppcolourformode (<wimp_paletteword> entry, int destmode, wimp_paletteword *destpal, int *col);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function informs you of the furthest colour from a given palette entry, destination mode and destination palette. The colour number is returned in {/}*gcol{/}.DATAacolourtran_return_Oppcolournumber
Syntax:	<os_error> *colourtran_return_Oppcolournumber (<wimp_paletteword> entry, int *col);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function informs you of the furthest colour in the current mode from a given palette entry. The colour is returned in {/}*col{/}.DATA�colourtran_return_OppGCOLformode
Syntax:	<os_error> *colourtran_return_OppGCOLformode (<wimp_paletteword> entry, int destmode, wimp_paletteword *destpal, int *gcol);
Header:	<colourtran.h=>colourtran_h>

Returns:	Pointer to error, or <NULL> if none.

This function informs you of the furthest GCOL from a given palette entry, destination mode and destination palette. The GCOL is returned in {/}*gcol{/}.DIR$��ТF���fL�$aSetGCOL4�F������$6InvalidateCachel�F�����$�SelectTable�F�����$wReturnFontColours��F���e��$�ReturnColourNumberForMode`�F���F��$UfontblockDATAaColourTrans_SetGCOL
Syntax:	<os_error> *ColourTrans_SetGCOL (int palette, int <flags=>ct_flags_>, int <action=>VDU:18a>);
Header:	<DeskLib:ColourTran.h=>ColourTran>

Returns:	Pointer to error, or <NULL> if none.

This function works out the closest GCOL in the current mode to a given <palette entry=>ct_palent_> (in {/}palette{/}), and sets it.DATA6ColourTrans_InvalidateCache
Syntax:	<os_error> *ColourTrans_InvalidateCache (void);
Header:	<DeskLib:ColourTran.h=>ColourTran>

Returns:	Pointer to error, or <NULL> if none.

This function informs the ColourTrans module that you have changed the palette. You do not need to do this after a mode change.DATA�ColourTrans_SelectTable
Syntax:	<os_error> *ColourTrans_SelectTable (int src_mode, int *src_pal, int dst_mode, int *dst_pal, char *table);
Header:	<DeskLib:ColourTran.h=>ColourTran>

Returns:	Pointer to error, or <NULL> if none.

This function sets up a translation table in a buffer, for source and destination mode and palette as given.

Mode and palette parameters may be -1 to use the current values.DATAwColourTrans_ReturnFontColours
Syntax:	os_error *ColourTrans_ReturnFontColours (<colourtrans_fontblock> *fontcols);
Header:	<DeskLib:ColourTran.h=>ColourTran>

Returns:	Pointer to error, or <NULL> if none.

This function finds the maximum range of colours which can be used for anti-aliasing a font. If anti-aliasing is desired, {/}fontcols->max{/} should be set to 14 on entry, otherwise it should be set to 0. {/}fontcols->font{/} should be set to the font handle, or 0 for the current font, and the foreground and background <palette entries=>ct_palent_> should be placed in {/}fontcols->back{/} and {/}fontcols->fore{/}.DATA�ColourTrans_ReturnColourNumberForMode
Syntax:	int ColourTrans_ReturnColourNumberForMode (int palette, int mode, int *pal);
Header:	<DeskLib:ColourTran.h=>ColourTran>

Returns:	-1 for error, or colour number.

This function, given a <palette entry=>ct_palent_> in /palette/, a destination mode in /mode/ and a palette in /pal/, returns the closest colour number. /mode/ may be -1 for the current mode, /pal/ may be -1 for the current palette or 0 for the default palette.DATAUcolourtrans_fontblock
This type is defined in <DeskLib:ColourTran.h=>ColourTran> to hold the information needed for the <ColourTrans_ReturnFontColours> function. It is defined as:

{
    int font;	/* font handle */
    int back;	/* background colour */
    int fore;	/* foreground colour */
    int max;	/* maximum colour offset */
}DIR$����F����2Y&�!Root4�F���Ks�"�base_�F���W �"�debug_��F�����"9define_ԵF������"�desktop_��F���&&�"�errorlimit_��F����]�"�image_P�F���HI�"�includes_ �F������"�informationals_йF����h�"�library_��F���<P�"�link_T�F������"�list_�F���{�"map_��F���'�"�object_��F������"Coptimise_ؿF���O��"@profile_�F���V�"}run_��F����5�"�show_��F����?�"�silent_ �F���6��"�standard_�F���=��"�throwback_��F���+��"�warnings_DATA�Compiler Directives
This information is for Easy C only:

These are only used when compiling from the command line using the 'cc' command. They are prefixed by "-". Help can be got by using <*Help cc>. A summary of the directives used is shown below:

#indent 7 
#Table 7
<\-list=>compdir_list_>
<\-optimise=>compdir_optimise_>
<\-standard=>compdir_standard_>
<\-object=>compdir_object_>
<\-define=>compdir_define_>
<\-debug=>compdir_debug_>
<\-errorlimit=>compdir_errorlimit_>
<\-show=>compdir_show_>
<\-silent=>compdir_silent_>
<\-includes=>compdir_includes_>
<\-link=>compdir_link_>
<\-run=>compdir_run_>
<\-image=>compdir_image_>
<\-library=>compdir_library_>
<\-base=>compdir_base_>
<\-map=>compdir_map_>
<\-throwback=>compdir_throwback_>
<\-desktop=>compdir_desktop_>
<\-warnings=>compdir_warnings_>
<\-informationals=>compdir_informationals_>
<\-profile=>compdir_profile_>
#EndTableDATA�-base
Abbreviation:	-b
Syntax:	-base=\<address>

This directive specifies the base address of the executable code. It only applies if <\-link=>compdir_link_> is specified.

eg {fCode}-base=&A000DATA�-debug
Abbreviation:	-deb
Default	-nodebug

This qualifier allows you to set whether debugging information is included with the executable file.DATA9-define
Abbreviation:	-d
Syntax	-define=\<definitions>

This qualifier allows you to define macros in the same form as <#define=>define>. The definitions are separated by commas, and if they contain spaces they must be enclosed in quotes eg

#wrap off
{fCode;align centre}-define="START 0","END 100",DEBUGDATA�-desktop
Abbreviation:	-des
Default:	-nodesktop

This directive causes the compiler to ignore the usual directory naming conventions, and accept full pathnames for source and object files.DATA�-errorlimit
Abbreviation:	-e
Syntax	-errorlimit=\<limit>
Default:	-nodebug

This qualifier allows you to set the number of error which may be produced before the compiler gives up! The limit can be switched using -noerrorlimit.DATA�-image
Abbreviation:	-im
Syntax:	-image=\<filename>

This directive specifies the name of the final executable. It only applies if <\-link=>compdir_link_> or <\-run=>compdir_run_> is specified.DATA�-includes
Abbreviation:	-inc
Syntax:	-includes="\<pathname>"
Default:	-includes=""

This qualifier allows you to specify the path C will search for local headers ie headers enclosed in quote marks.DATA�-informationals
Abbreviation:	-i
Default:	-informationals

This directive causes the compiler to report very minor errors. They can be disabled using -noinformationals.DATA�-library
Abbreviation:	-lib

This directive specifies the libraries to be linked if <\-link=>compdir_link_> or <\-run=>compdir_run_> is specified.

eg {fCode}-library=STDCLib,ROSLibDATA�-link
Abbreviation:	-lin
Default:	-nolink

If -link is specified, Easy C links the program automatically after compilation. It does not generate an object file, saving time and disc space.DATA�-list
Abbreviation:	-l
Default setting:	-nolist

This qualifier causes Easy C to create a listing of code as it compiles. Control over the listing is done using <\-show=>compdir_show_>. By default, Easy C puts listings in the 'list' subdirectory of the current directory, with the source file's name. You can use -list=\<filename> to change the file used. -nolist switches listing off.DATA-map
Abbreviation:	-m
Syntax:	-map=\<filename>
Default:	-nomap

This directive specifies that a file containing map of the functions linked by <\-link=>compdir_link_>. Map files are normally saved in subdirectory "map", but you can specify a particular filename if you want.DATA�-object
Abbreviation:	-ob

This qualifier sets the filename of the object code produced. It is used as:

{fCode;align centre}-object=\<filename>DATAC-optimise
Abbreviation:	-o
Default setting:	-optimise=all

This qualifier sets the degree of optimisation to be performed. You can use the following:

#tab
-nooptimise	No optimisation performed
-optimise=fold	Fold optimisation only
-optimise=peephole	Peephole optimisation only
-optimise=all	Both optimisation typesDATA@-profile
Abbreviation:	-p
Syntax:	-profile=\<modifier>
Default:	-profile=none

This directive causes the compiler to include profiling information for use by a separate profiler. The modifiers are:

#tab
function	Function execution times
line	Line execution times
both	Both of the above
none	Neither of the aboveDATA}-run
Abbreviation:	-r
Default:	-norun

If -run is specified, Easy C runs the program automatically after compilation.DATA�-show
Abbreviation:	-sh
Syntax:	-show=\<modifiers>
Default:	-show=source

This qualifier allows you to set what is included in the listing produced by <\-list=>compdir_list_>. The modifiers are separated by commas and are as follows:

source	Source code is included.
expanded	Each line shown twice, with expanded macros on second line.
code	ARM assembler code is included.
variables	Variable -> register mappings shown.
includes	Include files are listed.
all	All of the above.
none	None of the above.DATA�-silent
Abbreviation:	-si
Default:	-nosilent

This qualifier switches off all output during compilation, except for error messages.DATA�-standard
Abbreviation:	-s
Default setting:	-standard=ANSI

This qualifier sets the standard of C used. You can use the following:

#tab
-standard=KR	Original K & R standard
-standard=ANSI	ANSI standard
-standard=Extended	Easy C extensions

The extended form has 3 extensions to the ANSI standard:

#tab
�	The symbol $ is allowed in variable names.
�	Binary numbers can be specified with prefix 0b
�	Automatic argument counting is supported. See Appendix C of the Easy C manual.DATA�-throwback
Abbreviation:	-th
Default:	-nothrowback

This directive specifies that errors generated are transmitted via the "Throwback" system to an external editor eg StrongED.DATA�-warnings
Abbreviation:	-w
Syntax:	-warnings=\<level>
Default:	-warnings

This directive causes the compiler to report warnings. They can be switched off using -nowarnings. You can also specify the warning level.DIR$,,��F����l�$�blockDATA�convert_block
The type {*}convert_block{*} is defined in <DeskLib:Coord.h=>Coord> as an object capable of holding information about the position of a window and its scroll bars.

\{
    <wimp_rect> screenrect;
    <wimp_point> scroll;
}DATACoord.h
Version: 1.02 (02 Mar 1993)
#line
The \<Coord.h> header defines functions for handling points and rectangles. It also defines one type.

Functions:

#indent 4
#Table 7 23
<Coord_PointInRect>
<Coord_RectContained>
<Coord_RectsOverlap>
<Coord_RectsIntersect>
<Coord_WindowOrigin>
<Coord_XToScreen>
<Coord_YToScreen>
<Coord_PointToScreen>
<Coord_RectToScreen>
<Coord_XToWorkArea>
<Coord_YToWorkArea>
<Coord_PointToWorkArea>
<Coord_RectToWorkArea>
<Coord_RectUnion>
#EndTable
#indent

Type:

#indent 4
<convert_block>DIR$@@�F������$>PointInRectP�F����H�$�PointToScreenD�F����$lRectContained��F���	�$�RectsOverlap��F����L�$�RectToScreen��F���p�T&2RectUnion��F����T&�TL��F����0�$,WindowOrigin��F����>�$ZXToScreen�F���SR�$^XToWorkAreat�F���D�$ZYToScreen��F����W�$^YToWorkArea0�F���r#�$LRectsIntersect|�F����c�$�RectToWorkAreax�F���,^�$�PointToWorkAreaDATA>Coord_PointInRect
Syntax:	<BOOL> Coord_PointInRect (<wimp_point> *p, <wimp_rect> *r);
Header:	<DeskLib:Coord.h=>Coord>

Returns:	<TRUE> or <FALSE>.

This function tests whether the point pointed to by /p/ lies within the rectangle pointed to by /r/. If /p/ is on the perimeter of the rectangle it returns TRUE.DATA�Coord_PointToScreen
Syntax:	void Coord_PointToScreen (<wimp_point> *p, <convert_block> *blk);
Header:	<DeskLib:Coord.h=>Coord>

This function converts the point in work area coordinates pointed to by p, into one in screen coordinates.DATAlCoord_RectContained
Syntax:	<BOOL> Coord_RectContained (<wimp_rect> *inrect, wimp_rect *outrect);
Header:	<DeskLib:Coord.h=>Coord>

Returns:	<TRUE> or <FALSE>.

This function tests whether the rectangle pointed to by /inrect/ is wholly contained by the rectangle pointed to by /outrect/. Points on the perimeter of /outrect/ are considered to be within it.DATA�Coord_RectsOverlap
Syntax:	<BOOL> Coord_RectsOverlap (<wimp_rect> *a, wimp_rect *b);
Header:	<DeskLib:Coord.h=>Coord>

Returns:	<TRUE> or <FALSE>.

This function checks to see if any part of the two rectangles pointed to by /a/ and /b/ overlap.DATA�Coord_RectToScreen
Syntax:	void Coord_RectToScreen (<wimp_rect> *p, <convert_block> *blk);
Header:	<DeskLib:Coord.h=>Coord>

This function converts the rectangle in work area coordinates pointed to by p, into one in screen coordinates.DATA2Coord_RectUnion
Syntax:	void Coord_RectUnion (<wimp_rect> *dest, wimp_rect *a, wimp_rect *b);
Header:	<TimsLib:Coord.h=>Coord_TL>
	<DeskLib:Coord.h=>Coord>

This function finds the union of the two rectangle, /a/ and /b/, and returns it in /dest/. Any of /a/, /b/ or /dest/ can be the same pointer.DATA�TimsLib:Coord.h
#Parent ro_tlib_
This is an extension for <DeskLib:Coord.h=>Coord> that provides one extra function, <Coord_RectUnion>, which is now included in DeskLib anyway.DATA,Coord_WindowOrigin
Syntax:	void Coord_WindowOrigin (<wimp_point> *o, <convert_block> *blk);
Header:	<DeskLib:Coord.h=>Coord>

This function returns in the coordinates pointed to by /o/, the screen coordinates of the origin of a window's work area (ie the top left). The screen position and scroll bar positions of the window should be placed in the structure pointed to by /blk/.

The origin returned can be of great use in redraw code - any drawing done relative to this will always appear at the correct place, irrespective of window positioning.DATAZCoord_XToScreen
Syntax:	int Coord_XToScreen (int x, <convert_block> *blk);
Header:	<DeskLib:Coord.h=>Coord>

Returns:	The x screen coordinate.

This function takes an x work area coordinate and a pointer to a convert_block (which contains the window and scroll bar position) and converts the work area coordinate into a screen coordinate.DATA^Coord_XToWorkArea
Syntax:	int Coord_XToWorkArea (int x, <convert_block> *blk);
Header:	<DeskLib:Coord.h=>Coord>

Returns:	The x work area coordinate.

This function takes an x screen coordinate and a pointer to a convert_block (which contains the window and scroll bar position) and converts the screen coordinate into a work area coordinate.DATAZCoord_YToScreen
Syntax:	int Coord_YToScreen (int y, <convert_block> *blk);
Header:	<DeskLib:Coord.h=>Coord>

Returns:	The y screen coordinate.

This function takes an y work area coordinate and a pointer to a convert_block (which contains the window and scroll bar position) and converts the work area coordinate into a screen coordinate.DATA^Coord_YToWorkArea
Syntax:	int Coord_YToWorkArea (int y, <convert_block> *blk);
Header:	<DeskLib:Coord.h=>Coord>

Returns:	The y work area coordinate.

This function takes an y screen coordinate and a pointer to a convert_block (which contains the window and scroll bar position) and converts the screen coordinate into a work area coordinate.DATALCoord_RectsIntersect
Syntax:	<BOOL> Coord_RectsIntersect (<wimp_rect> *a, wimp_rect *b);
Header:	<DeskLib:Coord.h=>Coord>

Returns:	<TRUE> or <FALSE>.

This function checks to see if any part of the two rectangles pointed to by /a/ and /b/ overlap. However, if one rectangle is contained wholly within the other then the function returns FALSE. This function is actually implemented as the following macro:

{fCode}<#define=>define> Coord_RectsIntersect(r1,r2)
        (<Coord_RectsOverlap>(r1,r2) &&
         !<Coord_RectContained>(r1,r2) &&
         !Coord_RectContained(r2,r1))DATA�Coord_RectToWorkArea
Syntax:	void Coord_RectToWorkArea (<wimp_rect> *p, <convert_block> *blk);
Header:	<DeskLib:Coord.h=>Coord>

This function converts the rectangle in screen coordinates pointed to by /p/, into one in work area coordinates.DATA�Coord_PointToWorkArea
Syntax:	void Coord_PointToWorkArea (<wimp_point> *p, <convert_block> *blk);
Header:	<DeskLib:Coord.h=>Coord>

This function converts the point in screen coordinates pointed to by /p/, into one in work area coordinates.DATA�coords.h
This header contains functions and types for handling window coordinates.

Functions:

#Indent 3;Table 6
<coords_x_toscreen>
<coords_y_toscreen>
<coords_x_toworkarea>
<coords_y_toworkarea>
<coords_box_toscreen>
<coords_box_toworkarea>
<coords_point_toscreen>
<coords_point_toworkarea>
<coords_withinbox>
<coords_offsetbox>
<coords_intersects>
<coords_boxesoverlap>
#EndTable;Indent 0

Types:

#Indent 13;Table 1 24
<coords_cvtstr>
<coords_pointstr>
#EndTableDIR$  l�F����L#�box_toscreen\�F����T#�box_toworkareaP�F���a�#�boxesoverlapH�F���F�#�cvtstr �F���h�#intersects0�F���Ѐ#;offsetboxl�F����^#�point_toscreend�F���Wf#�point_toworkarea`�F���Ψ#�pointstr��F����n#withinbox��F����-#\x_toscreenP�F����=#`x_toworkarea��F����6#\y_toscreen�F���HE#`y_toworkareaDATA�coords_box_toscreen
Syntax:	void coords_box_toscreen (<wimp_box> *b, <coords_cvtstr> *r);
Header:	<coords.h=>coords>

This function converts the rectangle in work area coordinates pointed to by /b/, into one in screen coordinates.DATA�coords_box_toworkarea
Syntax:	void coords_box_toworkarea (<wimp_box> *b, <coords_cvtstr> *r);
Header:	<coords.h=>coords>

This function converts the rectangle in screen coordinates pointed to by /b/, into one in work area coordinates.DATA�coords_boxesoverlap
Syntax:	<BOOL> coords_boxesoverlap (<wimp_box> *a, wimp_box *b);
Header:	<coords.h=>coords>

Returns:	<TRUE> or <FALSE>.

This function checks to see if any part of the two rectangles pointed to by /a/ and /b/ overlap.DATA�coords_cvtstr
This type is defined in <coords.h=>coords> as an object capable of holding information about the position of a window and its scroll bars.

  \{
    <wimp_box> box;
    int      scx, scy;
  }DATAcoords_intersects
Syntax:	<BOOL> coords_intersects (<wimp_box> *l, wimp_box *b, int width);
Header:	<coords.h=>coords>

Returns:	<TRUE> or <FALSE>.

This function checks to see if the line defined by /l/ (with width {/}width{/}) intersects the box defined by /b/.DATA;coords_offsetbox
Syntax:	void coords_offsetbox (<wimp_box> *src, int dx, int dy, <wimp_box> *result);
Header:	<coords.h=>coords>

This function adds /dx/ to all x coordinates in the box /src/ and /dy/ to all y coordinates, and places the result in /result/.

/source/ and /result/ may be the same structure.DATA�coords_point_toscreen
Syntax:	void coords_point_toscreen (<coords_pointstr> *p, <coords_cvtstr> *r);
Header:	<coords.h=>coords>

This function converts the point in work area coordinates pointed to by /p/, into one in screen coordinates.DATA�coords_point_toworkarea
Syntax:	void coords_point_toworkarea (<coords_pointstr> *p, <coords_cvtstr> *r);
Header:	<coords.h=>coords>

This function converts the point in screen coordinates pointed to by /p/, into one in work area coordinates.DATA�coords_pointstr
This type is defined in <coords.h=>coords> as an object capable of holding a coordinate pair.

  \{
    int x, y;
  }DATAcoords_withinbox
Syntax:	<BOOL> coords_withinbox (<coords_pointstr> *p, <wimp_box> *box);
Header:	<coords.h=>coords>

Returns:	<TRUE> or <FALSE>.

This function tests whether the point pointed to by /p/ lies within the rectangle pointed to by /box/.DATA\coords_x_toscreen
Syntax:	int coords_x_toscreen (int x, <coords_cvtstr> *r);
Header:	<coords.h=>coords>

Returns:	The x screen coordinate.

This function takes an x work area coordinate and a pointer to a {/}coords_cvtstr{/} (which contains the window and scroll bar position) and converts the work area coordinate into a screen coordinate.DATA`coords_x_toworkarea
Syntax:	int coords_x_toworkarea (int x, <coords_cvtstr> *r);
Header:	<coords.h=>coords>

Returns:	The x work area coordinate.

This function takes an x screen coordinate and a pointer to a {/}coords_cvtstr{/} (which contains the window and scroll bar position) and converts the screen coordinate into a work area coordinate.DATA\coords_y_toscreen
Syntax:	int coords_y_toscreen (int y, <coords_cvtstr> *r);
Header:	<coords.h=>coords>

Returns:	The y screen coordinate.

This function takes an y work area coordinate and a pointer to a {/}coords_cvtstr{/} (which contains the window and scroll bar position) and converts the work area coordinate into a screen coordinate.DATA`coords_y_toworkarea
Syntax:	int coords_y_toworkarea (int y, <coords_cvtstr> *r);
Header:	<coords.h=>coords>

Returns:	The y work area coordinate.

This function takes an y screen coordinate and a pointer to a {/}coords_cvtstr{/} (which contains the window and scroll bar position) and converts the screen coordinate into a work area coordinate.DATAeDeskLib:Core.h
Version: 1.01 (02 Mar 1994)
#line
The \<Core.h> header defines several macros used by the rest of DeskLib. It also defines two types.

Macros:

#indent 4
#Table columns 4
<FALSE>
<TRUE>
<ERROR>
<NOERROR>
<NULL>
<UNUSED_ARG>
<UNUSED>
<MAX>
<MIN>
<OSCLI>


#EndTable

#indent 0
Types:

#Indent 15
#Table 1 15
<BOOL>
<os_error>
#EndTableDIR$((��F�����T&�TLDATA�TimsLib:Core.h
This header contains definitions used by the rest of TimsLib and also useful definitions for your own code.

Macros:

#Indent 5
#Table 3 14
<UNUSED_ARG>
<UNUSED>
<BOOL>
<TRUE>
<FALSE>
<NULL>
<MAX>
<MIN>
<OSCLI>
#EndTableDATA�cos
Syntax:	double cos (double x);
Header:	<math.h=>math>

Returns:	The cosine of x in radians.

This function calculates the principal value of the cosine of x.DATA�cosh
Syntax:	double cosh (double x);
Header:	<math.h=>math>

Returns:	The hyperbolic cosine of x in radians.

This function calculates the hyperbolic cosine of x. An error occurs if x is too big.DIR$LL��F����}�"�flags_x�F�����$�palent_DATA�ColourTrans_SetGCOL Flags
Bits    Meaning
0-6     Reserved, should be zero.
7       Set background colour.
8       Use dithering to improve approximation.
9-31    Reserved, should be zero.DATA�Palette Entry
This is a long int of the form 0xBBGGRR00 ie the intensity of each of Red, Green, and Blue in each of top three bytes. For example, white is 0xFFFFFF00, bright blue is 0xFF000000 and half intensity red is 0x00007F00.DATA7ctime
Syntax:	char *ctime (<time_t> *timer);
Header:	<time.h=>time_h>

Returns:	Pointer to the time string.

This function converts the calendar time pointed to by /timer/ into a string containing the local time equivalent.

This function is equivalent to:
{align centre}<asctime>( <localtime>(timer) );DATA�ctype.h
#Parent ansi_
The \<ctype.h\> header declares a number of
functions for testing characters. In addition
two functions to change the case of a character
are provided.

Character testing functions:

#Indent 8
#Table 4 15
<isalnum>
<isalpha>
<iscntrl>
<isdigit>
<isgraph>
<islower>
<isprint>
<ispunct>
<isspace>
<isupper>
<isxdigit>
#EndTable

#Indent 0
Case changing functions:

#Indent 12
#Table 1 15
<tolower>
<toupper>
#EndTableDATA)DeskLib:Clear.h
Version: 1.01 (30 Jun 1994)
#line
This header declares several functions and a type for handling Clear files.

Functions:

#indent 5
#table columns 3
<Clear_Init>
<Clear_Load>
<Clear_Save>
<Clear_Create>
<Clear_Free>

#endtable
#indent

Type:

{align centre}<clear_picture>DIR$��X�F���_O&,picture��F����7O&Init�F����OO&�LoadlF���i^O&�Save8F���OyO&%Create`F���r�O&�FreeDATA,clear_picture
This type is defined in <DeskLib:Clear.h=>Clear> as a structure containing a Clear file.

    \{
        char		*creator;
        unsigned	creatorversion;
        unsigned	width, height;
        unsigned	bpp;
        <palette_entry>	*palette;
        unsigned char	*bitmap;
    }DATAClear_Init
Syntax:	void Clear_Init (char *creator, unsigned version);
Header:	<DeskLib:Clear.h=>Clear>

This function tells the Clear library what details it should fill in the appropriate fields when using <Clear_Save>. /version/ is * 100 as usual.DATA�Clear_Load
Syntax:	<clear_picture> *Clear_Load (char *filename);
Header:	<DeskLib:Clear.h=>Clear>

Returns:	Pointer to picture, or <NULL> if an error occurred.

This function loads the named Clear picture into memory.DATA�Clear_Save
Syntax:	void Clear_Save (<clear_picture> *pic,char *filename);
Header:	<DeskLib:Clear.h=>Clear>

This function saves the picture pointer to by /pic/ to the file specified in /filename/.DATA%Clear_Create
Syntax:	<clear_picture> *Clear_Create (unsigned width, unsigned height, unsigned bpp);
Header:	<DeskLib:Clear.h=>Clear>

Returns:	Pointer to picture, or <NULL> if failed.

This function attempts to allocate memory for a picture of the given width, height and colour depth.DATA�Clear_Free
Syntax:	void Clear_Free (<clear_picture> *pic);
Header:	<DeskLib:Clear.h=>Clear>

This function frees all memory used by the Clear picture /pic/.DIR$HHLF���PR&CreatelF���lLR&�DLDATAColourMenu_Create
Syntax:	<menu_ptr> ColourMenu_Create (char *name);
Header:	<DeskLib:ColourMenu.h=>ColourMenu_>

Returns:	Pointer to new menu

This function creates a menu containing the 16 Wimp colours. /name/ contains the menu title. The menu is only created, not displayed.DATA�DeskLib:ColourMenu.h
Version: 1.00 (27 Aug 1994)
#line
This header declares just one function.

Function:

{align centre}<ColourMenu_Create>DIR$���
F���o�/,DBL_PF�����#�dboxF����o�/8dbox_8F����}#�dboxfile�:F����#�dboxquery�<F���Ar�/,dboxquery_�=F���{�#�dboxtcol\@F���ur�/Tdboxtcol_�BF���*A�"DCB�CF����H�"�DCDtDF���O��"?default�DF���]1�"�define�GF������$}dialogHF���s�/$dialog_�]F���.��"�difftime�^F�����$!Dispatch�`F���tt�/HDispatch_�bF����6�">div4dF����t�/(div_<eF����t�/lDL_DkF����e�"�do$nF�����$�Drag�oF���Yu�/,drag_�}F���Į�$DragASpr�~F��� v�/pDragASprite_̅F���Ӊ�"Odraw�F����v�/�	Draw_p�F��� .$#�drawfdiag�F����{�/,drawfdiag_��F���A�%#	drawferror�F���;�&#�drawfobj��F���?|�/,drawfobj_��F����'#{drawftypesL�F���rlE#�drawmod,�F����|�/Hdrawmod_,%F����~�/,dspr_DIR$,,�F����}�":DIG(F����}�">EPSILONhF���i��"�MANT_DIG�F���hȼ"�MAX�
F���_��"�MAX_10_EXPF������"�MAX_EXP�F���v׼"�MIN8F������"�MIN_10_EXP�F���Y��"�MIN_EXPDATA:DBL_DIG
This macro is defined in <float.h=>float>.DATA>DBL_EPSILON
This macro is defined in <float.h=>float>.DATA�DBL_MANT_DIG
This macro is defined in <float.h=>float>. It gives the number of digits in the mantissa of a variable of type 'double'.DATA�DBL_MAX
This macro is defined in <float.h=>float>. It gives the maximum positive value that can be stored in a variable of type 'double'.DATA�DBL_MAX_10_EXP
This macro is defined in <float.h=>float>. It gives the maximum base 10 exponent a variable of type 'double' can contain.DATA�DBL_MAX_EXP
This macro is defined in <float.h=>float>. It gives the maximum exponent a variable of type 'double' can contain.DATA�DBL_MIN
This macro is defined in <float.h=>float>. It gives the minimum positive value that can be stored in a variable of type 'double'.DATA�DBL_MIN_10_EXP
This macro is defined in <float.h=>float>. It gives the minimum base 10 exponent a variable of type 'double' can contain.DATA�DBL_MIN_EXP
This macro is defined in <float.h=>float>. It gives the minimum exponent a variable of type 'double' can contain.DATA�dbox
The type dbox is defined in <dbox.h=>dbox_h> as a type capable of holding an abstract dialogue box handle. The structure to which the type points is as follows:

\{
    struct dbox__str *next;	/* Linked list */
    <wimp_w> w;
    int posatcaret;
    int showing;
    <wimp_caretstr> caretstr;
    <dbox_handler_proc> eventproc;
    void *eventprochandle;
    <dbox_raw_handler_proc> raweventproc; 	
    void *raweventprochandle;
    <dbox_field> field;
    int fieldwaiting;
    int eventdepth;
    int disposepending;
    char name[12];
    char *workspace;
    int workspacesize;
    <wimp_wind> window;
}
This structure is a {/}dbox__str{/}. A dbox is a {/}dbox__str*{/}.DIR$888F���}�#�CLOSE�F���_#}crdl_LF���52#�ctrl_�F����#�dispose�F����}#�eventhandlerxF���hm#yevnt_�F���s7#�fadefield�F���c#�field�F����#Bfieldtype�F���L�#fillin�F���l�#�get� F����=#7getfield�!F���	H#6getnumeric$#F���f4#wh�%F����+#�handler_proct&F����#�hide('F�����#�init(F���~#=newP)F�����#�pend_�)F���v�#�persist�*F���/�#popuph,F����#�readH-F����P#
setfieldT.F���X#;setnumeric�/F���	&#hshow�0F����,#"showstatic2F����#syshandle 3F����\#�unfadefield�3F���ޥ#(raw_eventhandler6F����@#�raw_handler_proc7F�����#�fillin_fixedcaretDATA�dbox_CLOSE
The macro {/}dbox_CLOSE{/} is defined in <dbox.h=>dbox_h> as the value returned when the dialogue is closed using a close icon.DATA}Creating/Deleting Functions
#Table 3 16
<dbox_dispose>
<dbox_hide>
<dbox_new>
<dbox_show>
<dbox_showstatic>
#EndTableDATA�Controlling Functions
#Table 3 18
<dbox_fadefield>
<dbox_getfield>
<dbox_getnumeric>
<dbox_setfield>
<dbox_setnumeric>
<dbox_unfadefield>
#EndTableDATA�dbox_dispose
Syntax:	void dbox_dispose (<dbox> *p);
Header:	<dbox.h=>dbox_h>

This function disposes of the dialogue box whose handle is pointed to by /p/. It also removes it from the screen.DATA�dbox_eventhandler
Syntax:	void dbox_eventhandler (<dbox> d, <dbox_handler_proc> proc, void *handle);
Header:	<dbox.h=>dbox_h>

This function designates a handler which will be called with the handle given whenever a field in the specified dialogue box is activated. The handler is a function whose prototype is:
{fCode;align centre}void proc (dbox d, void *handle);{f;align}

The handle is a user-defined pointer (ie it may be anything you like).DATAyEvent Handling Functions
#Table 2 20
<dbox_eventhandler>
<dbox_get>
<dbox_raw_eventhandler>
<dbox_read>
#EndTableDATA�dbox_fadefield
Syntax:	void dbox_fadefield (<dbox> d, <dbox_field> f);
Header:	<dbox.h=>dbox_h>

This function fades (or shades in Acorn-speak) the specified field so that it no longer responds to mouse clicks.DATA�dbox_field
The type {/}dbox_field{/} is defined in <dbox.h=>dbox_h> as a type capable of holding any field number within a dialogue box. It is actually defined as an /int/.DATABdbox_fieldtype
The type {/}dbox_fieldtype{/} is defined in <dbox.h=>dbox_h> as a type capable of specifying a field type. It is an enumerated type as follows:

enum
\{
    dbox_FACTION,	/* Action field */
    dbox_FOUTPUT,	/* Output field */
    dbox_FINPUT,	/* Input field */
    dbox_FONOFF,	/* On/Off field */
}DATAdbox_fillin
Syntax:	<dbox_field> dbox_fillin (<dbox> d);
Header:	<dbox.h=>dbox_h>

Returns:	The activated field.

This function processes events until a field in the dialogue box is activated. The caret is also placed in the first writeable field in the dialogue box.DATA�dbox_get
Syntax:	<dbox_field> dbox_get (<dbox> d);
Header:	<dbox.h=>dbox_h>

Returns:	The activated field number.

This function reads the field number of the activated field and cancels the event. I think.DATA7dbox_getfield
Syntax:	void dbox_getfield (<dbox> d, <dbox_field> f, char *buf, int size);
Header:	<dbox.h=>dbox_h>

This function reads the contents of the specified field in the specified dialogue box and returns its contents in the character array pointed to by /buf/. /size/ is the size of the array.DATA6dbox_getnumeric
Syntax:	int dbox_getnumeric (<dbox> d, <dbox_field> f);
Header:	<dbox.h=>dbox_h>

Returns:	The field contents.

This function converts the contents of the field into a signed integer and returns it. If the field is an on/off field, then it returns 1 if the field is set, and 0 if unset.DATAwdbox.h
#Parent ro_ansic_
The \<dbox.h> header declares a number of functions for handling dialogue boxes. It also defines a few types relating to dialogue boxes.

Functions:

#Indent 10
#Table 2 20
<Creating/Deleting=>dbox_crdl_>
<Controlling=>dbox_ctrl_>
<Event handling=>dbox_evnt_>
<Pending operations=>dbox_pend_>
#EndTable

#Indent 0
Macros:

{align centre}<dbox_CLOSE>{align}
   
Types:

#Indent 10
#Table 3 20
<dbox>
<dbox_field>
<dbox_fieldtype>
<dbox_handler_proc>
<dbox_raw_handler_proc>
#EndTable

#below;indent 0
Before any dialogue boxes may be used, the dbox system must be initialised by calling <dbox_init>.DATA�dbox_handler_proc
This type is defined in <dbox.h=>dbox_h> as a function type for use by <dbox_eventhandler>. The function is defined as:
{wrap off}
{fCode;align}void proc (<dbox> d, void *handle);{f;align}DATA�dbox_hide
Syntax:	void dbox_hide (<dbox> d);
Header:	<dbox.h=>dbox_h>

This function temporarily closes the dialogue box given in /d/. It may be re-shown with <dbox_show>.DATA�dbox_init
Syntax:	void dbox_init (void);
Header:	<dbox.h=>dbox_h>

This function initialises the dbox system. It must be called once before any dialogue boxes may be used. It must be called after <template_init>, however.DATA=dbox_new
Syntax:	<dbox> dbox_new (char *name);
Header:	<dbox.h=>dbox_h>

Returns:	The dbox handle, <NULL> for error.

This function creates a new dialogue box from the template whose name is given. The template must have been loaded with <template_init>.

This only creates the window, it does not display it.DATA�Pending Operations Functions
#Table 3 25
<dbox_fillin>
<dbox_fillin_fixedcaret>
<dbox_init>
<dbox_persist>
<dbox_popup>
<dbox_syshandle>
#EndTableDATA�dbox_persist
Syntax:	<BOOL> dbox_persist (void);
Header:	<dbox.h=>dbox_h>

Returns:	<TRUE> if the dbox is to remain on screen.

Basically, if the user clicked *Adjust* then this function returns TRUE and you should not destroy the dialogue box.DATAdbox_popup
Syntax:	<dbox_field> dbox_popup (char *name, char *msg);
Header:	<dbox.h=>dbox_h>

Returns:	The activated field number.

This function is the easy way to handle the dbox system. It creates a dialogue box from the named template, puts the string pointed to by /msg/ into field 1, calls <dbox_fillin>, destroys the dbox and returns the number of the activated field.DATA�dbox_read
Syntax:	<dbox_field> dbox_read (<dbox> d);
Header:	<dbox.h=>dbox_h>

Returns:	The activated field number.

This function reads the field number of the activated field and does not cancel the event. I think.DATA
dbox_setfield
Syntax:	void dbox_setfield (<dbox> d, <dbox_field> f, char *p);
Header:	<dbox.h=>dbox>

This function sets the contents of the field given in the dialogue box given to the null-terminated text contained in the character array pointed to by /p/.DATA;dbox_setnumeric
Syntax:	void dbox_setnumeric (<dbox> d, <dbox_field> f, int val);
Header:	<dbox.h=>dbox_h>

This function sets the field in the dialogue box specified to be the textual equivalent of the value given in /val/. If the field is an action field then a non-zero value sets it, and zero unsets it.DATAhdbox_show
Syntax:	void dbox_show (<dbox> d);
Header:	<dbox.h=>dbox_h>

This function shows the dialogue box whose handle is given. Dialogue boxes shown in this way will disappear if the users clicks outside them, or presses *Escape* (like a menu). The dialogue box will be shown near the last menu selection or caret setting (whichever is most recent).DATA"dbox_showstatic
Syntax:	void dbox_showstatic (<dbox> d);
Header:	<dbox.h=>dbox_h>

This function shows the dialogue box whole handle is given. It will remain visible until specifically closed either by the program or by the user. Otherwise this function is identical to <dbox_show>.DATAdbox_syshandle
Syntax:	int dbox_syshandle (<dbox> d);
Header:	<dbox.h=>dbox_h>

Returns:	The window handle of the dbox.

This function returns the window handle of a given dialogue box. This allows you to alter the contents of it using standard calls.DATA�dbox_unfadefield
Syntax:	void dbox_unfadefield (<dbox> d, <dbox_field> f);
Header:	<dbox.h=>dbox_h>

This function unfades (unshades) the specified field so that it responds to mouse clicks.         DATA(dbox_raw_eventhandler
Syntax:	void dbox_raw_eventhandler (<dbox> d, <dbox_raw_handler_proc=>dbox_raw_handler_pr> proc, void *hnd);
Header:	<dbox.h=>dbox_h>

This function designates a handler which will be called with the user handle given ({/}hnd{/}) whenever a field in the specified dialogue box is activated. The handler is a function whose prototype is similar to:
{fCode;align centre}<BOOL> proc (dbox d, void *event, void *hnd);{f;align}

The event will actually be a <wimp_eventstr>* under RISC OS. The handle is a user defined pointer.DATA�dbox_raw_handler_proc
This type is defined in <dbox.h=>dbox_h> as a function type for use by <dbox_raw_eventhandler>. The function is defined as:
{wrap off}
{fCode;align}void proc (<dbox> d, void *event, void *handle);{f;align}DATA�dbox_fillin_fixedcaret
Syntax:	<dbox_field> dbox_fillin_fixedcaret (<dbox> d);
Header:	<dbox.h=>dbox_h>

Returns:	The activated field.

This function processes events until a field in the dialogue box is activated. It does not claim the caret.DATA�dboxfile.h
This header declares just one function as follows:

Syntax:	void dboxfile (char *mess, unsigned type, char *a, int *bufsize);

This function displays a dialogue box with a message (given in {/}mess{/}, no more than 20 characters), an input field (contents taken from and put back in {/}a{/}), and an *OK* button. It opens this using <dbox=>dbox_h> functions and waits for the user to type in a filename and click OK. /bufsize/ gives the size of /a/.

The window used must be called "dboxfile_db". Icon 0 must be *OK* (menu icon), 1 must be the message (indirected text, type {/}NEVER{/}), and 2 must be the filename (indirected text, type {/}WRITEABLE{/}).DATA�dboxquery.h
This header declares just one function as follows:

Syntax:	<dboxquery_REPLY> dboxquery (char *mess);

Returns:	1 = YES, 2 = NO, 3 = CANCELLED.

This function displays a dialogue box with a message (given in {/}mess{/}, no more than 120 characters), and *Yes* and *No* icons, and waits for the user to reply.

The window used must be called "query". Icon 0 must be *Yes* (menu icon), 1 must be the message (indirected text, type {/}NEVER{/}), and 2 must be *No* (menu icon).DIR$,,�<F�����#�REPLYDATA�dboxquery_REPLY
This is an enumerated type used for returning values from the <dboxquery> function. It is defined as:

    \{
      dboxquery_YES	= 1,
      dboxquery_NO	= 2,
      dboxquery_CANCEL	= 3
    }DATA�dboxtcol
This header declares one function and a few other bits and pieces for display and entry of true colours (bit of a misnomer there...)

Syntax:	<BOOL> dboxtcol (<dboxtcol_colour> *col, BOOL transflag, char *name, <dboxtcol_colourhandler> proc, void *r);

Returns:	<TRUE> if colour edited and OK clicked.

This function displays a dialogue box for the user to edit an RGB colour. /colour/ contains the colour to be edited, /transflag/ is TRUE if transparent colours can be selected, /name/ is the title, /proc/ is the handler function, and /r/ is passed direct to /proc/.

/proc/ is called when the user clicks *OK*.

The template should be the same as that used by !Paint, called "dboxtcol".DIR$TT�@F����#�colourPAF���b�#colourhandlerDATA�dboxtcol_colour
This type is defined in <dboxtcol.h=>dboxtcol>. It is a type holding an RGB colour in the form 0xBBGGRR00. It is defined as an /int/.DATAdboxtcol_colourhandler
This type is defined in <dboxtcol.h=>dboxtcol>. It is a function called by dboxtcol when the user has clicked *OK* in the colour selector. The function should be of the form:
{wrap off}
{fCode;align centre}void myfunc (<dboxtcol_colour> col, void *r);{f;align}
{wrap}
Where /col/ is the colour as edited by the user, and /r/ is passed straight through.DATADCB <bytes>
This stores one or more bytes, separated by commas. The bytes may in fact be contained in a quoted string eg:

#wrap off
{align centre;fCode}DCB "This is a null-terminated string",0{f;align;wrap}

DEFB and EQUB are both psuedonyms for DCB.DATA�DCD <bytes>
This stores one or more words, separated by commas.

{fCode;align centre}DCD 1,2,3,4,5{f;align}

DEFW and EQUW are both pseudonyms for DCD.DATA?default
This command is part of the <switch> construct.DATA�#define
This directive defines a macro. Macros are tokens which are substituted when encountered later in the source file, before compiling. A macro can be defined with or without a value. Function-like macros can also be defined.

eg #define MACRO	defines MACRO, but MACRO does not actually stand for anything.

eg #define PEOPLE 7	defines PEOPLE to be 7. Every time PEOPLE is encountered (not within quotes), 7 will be substituted so you can use {fCode}number_of_people=PEOPLE;{f}

eg #define TAB(x,y) <printf>("\\x1f%c%c",x,y)	Every time you use TAB(x,y) printf("\\x1f%c%c",x,y) will be substituted eg. TAB(1,1) converts to printf("\\x1f%c%c",1,1);

It is conventional to use capital letters for macro names.DATA}dialog
The type *dialog* is defined in <DeskLib:Dialog.h=>Dialog_h> as a type holding a pointer to a <dialog_record>.DIR$$$(JF���~��$�CLOSEKF����"�$CreateLF����%�$�Destroy�LF������$�h�OF���7D�$'HideQF���o�$�LastClicked�RF���C��$�NOCHOICE`SF����e�$PersistlTF�����$orecord�UF����*�$2ShowWF����2�$cShowAttXF����9�$gShowStatic�YF����v�$�StillOpen�ZF�����T&�TL|[F����N�$2WaitForClick�\F����U�$(WindowHandleDATA�dialog_CLOSE
The macro 'dialog_CLOSE' is defined in <DeskLib:Dialog.h=>Dialog_h> and is returned by <Dialog_WaitForClick> when the dialogue box is closed by clicking outside window or clicking on close icon.DATADialog_Create
Syntax:	<dialog> Dialog_Create (char *name, int maxtitlesize);
Header:	<DeskLib:Dialog.h=>Dialog_h>

Returns:	Handle of created dialogue box

This function creates (but does not show) a dialogue box from the template whose name is given.DATA�Dialog_Destroy
Syntax:	void Dialog_Destroy (<dialog> d);
Header:	<DeskLib:Dialog.h=>Dialog_h>

This function removes the dialogue box whose handle is given, both from the display and from memory. This handle is now completely invalid.DATA�DeskLib:Dialog.h
Version: 1.01 (02 Mar 1994)
#line
This header declares functions for handling dialogue boxes.

Functions:

#Indent 8
#Table 6 21
<Dialog_Create>
<Dialog_Destroy>
<Dialog_Show>
<Dialog_ShowAt>
<Dialog_ShowStatic>
<Dialog_Hide>
<Dialog_WaitForClick>
<Dialog_WindowHandle>
<Dialog_Persist>
<Dialog_LastClicked>
<Dialog_StillOpen>
#EndTable

#indent 0
Types:

#indent 16
#Table 1 21
<dialog_record>
<dialog>
#EndTable

#indent 0
Macros:

#indent 11
#Table 1 21
<dialog_CLOSE>
<dialog_NOCHOICE>
#EndTable
#indent 0

A dialogue is a window that is popped open to get user choices and then goes away. This header simplifies popping up such dialogues, as it handles opening, closing and simple processing of the window for you.DATA'Dialog_Hide
Syntax:	void Dialog_Hide (<dialog> d);
Headers:	<TimsLib:Dialog.h=>Dialog_TL>
		<DeskLib:Dialog.h=>Dialog_h>

This function hides the given dialogue box by closing the window, but does not destroy it. It may be subsequently reopened with <Dialog_Show> or <Dialog_ShowStatic>.DATA�Dialog_LastClicked
Syntax:	<icon_handle> Dialog_LastClicked (<dialog> d);
Header:	<DeskLib:Dialog.h=>Dialog_h>

Returns:	Icon number last clicked.

This function returns the icon number of the last icon which was clicked in the given dialogue box. If no icons have been clicked yet, it returns <dialog_NOCHOICE>. It is actually defined as a macro returning {/}d->lastclicked{/}.DATA�dialog_NOCHOICE
The macro {*}dialog_NOCHOICE{*} is defined in <DeskLib:Dialog.h=>Dialog_h> and is returned by <Dialog_LastClicked> when the user has not yet done anything. It is actually defined as -2.DATADialog_Persist
Syntax:	<BOOL> Dialog_Persist (<dialog> d);
Header:	<DeskLib:Dialog.h=>Dialog_h>

Returns:	<TRUE> if last dialogue box persists.

This function checks to see if:{tab}
 	�	The last choice was made with *Adjust*
 	�	The dialogue box is still openDATAodialog_record
The type {*}dialog_record{*} is defined in <DeskLib:Dialog.h=>Dialog> as the following structure:

\{
    <window_handle>	window;
    <icon_handle>	lastclicked;
    <button_state>	button;
    struct
    \{{tab}
        unsigned int stillopen	: 1;
        unsigned int persist	: 1;
        unsigned int isstatic	: 1;
    } state;
} dialog_record;DATA2Dialog_Show
Syntax:	void Dialog_Show (<dialog> d);
Header:	<DeskLib:Dialog.h=>Dialog_h>

This function shows the dialogue box whose handle is given in the centre of the screen. The dialogue box is opened as a transient dialogue box, i.e. it will disappear if you click outside it or press *Escape*.DATAcDialog_ShowAt
Syntax:	void Dialog_ShowAt (<dialog> d, int x, int y);
Header:	<DeskLib:Dialog.h=>Dialog_h>

This functions shows the dialogue box whose handle is given with the top left of the dialog at the position specified. The dialogue box is opened as a transient dialogue box, i.e. it will disappear if you click outside it or press *Escape*.DATAgDialog_ShowStatic
Syntax:	void Dialog_ShowStatic (<dialog> d, <window_openpos> openpos);
Header:	<DeskLib:Dialog.h=>Dialog_h>

This function shows the dialogue box whose handle is given as a 'static' dialogue box ie it only closes if the close icon is clicked or if the application closes it. /openpos/ governs the position at which the dbox is shown.DATA�Dialog_StillOpen
Syntax:	<BOOL> Dialog_StillOpen (<dialog> d);
Header:	<DeskLib:Dialog.h=>Dialog_h>

Returns:	<TRUE> if the dialogue box is open

This function is actually defined as a macro returning {/}d->state.stillopen{/}.DATA�TimsLib:Dialog.h
#Parent ro_tlib_
This is an extension to <DeskLib:Dialog.h=>Dialog_h> which
provides one function, <Dialog_Hide>, which is now included in DeskLib anyway.DATA2Dialog_WaitForClick
Syntax:	int Dialog_WaitForClick (<dialog> d);
Header:	<DeskLib:Dialog.h=>Dialog_h>

Returns:	The icon clicked.

This function waits for an icon to be clicked in the dialogue box. All other events are processed normally. If the user closes the window, <dialog_CLOSE> is returned.DATA(Dialog_WindowHandle
Syntax:	<window_handle> Dialog_WindowHandle (<dialog> d);
Header:	<DeskLib:Dialog.h>

Returns:	The window handle.

This function returns the RISC OS WIMP window handle associated with the given dialogue box. It is actually defined as a macro returning {/}d->window{/}.DATA�difftime
Syntax:	double difftime (<time_t> t2, time_t t1);
Header:	<time.h=>time_h>

Returns:	The interval in seconds.

This function calculates the difference between the two calendar times (t2-t1) in seconds.DATA!Dispatch
Syntax:	int Dispatch (int value, int size, int table[], <dispatch_proc> functions[], int arg0, int arg1, int arg2, int arg3);
Header:	<DeskLib:Dispatch.h=>Dispatch_h>

Returns:	-1 if failed.

This function searches through the array /table/ (which has /size/ elements) for a value which matches /value/. It then calls the corresponding function in the /functions/ array with arguments as given.

If one of the elements in /table/ has the value -1, it is always called, so if you want a default action, make it the last function.DIR$HH aF������$�h�aF������$procDATA�DeskLib:Dispatch.h
Version: 1.00 (03 Apr 1992)
#line
This header declares just one function, a function dispatcher. It also defines one type.

Function:	<Dispatch>

Type:		<dispatch_proc>DATAdispatch_proc
The type dispatch_proc is defined in <DeskLib:Dispatch.h=>Dispatch_h> as a type capable of holding a pointer to a function to be called by the <Dispatch> function. Functions should have the form: {fCode}void myfunc(); {f}with up to three arguments.DATA>div
Syntax:	<div_t> div (int x, int y);
Header:	<stdlib.h=>stdlib>

Returns:	The quotient and remainder of x/y.

This function calculates the quotient and remainder of x/y. Formally this is defined as r=x-(q*y), where r is the remainder and q is the quotient. r is always less than y and of the same sign as q.DIR$((\dF���c�"�tDATA�div_t
The type {/}div_t{/} is defined in <stdlib.h=>stdlib> for holding return values from the function <div>. It is defined as the following structure:

\{
    int quot;	/* Quotient */
    int rem;	/* Remainder */
}DIR$ll�eF���/�.Menu�hF���Yk6&�Time@jF����|R&pointerDATADeskLib:Menu.h
Version: 1.03 (Dec 1994)
#line
This header declares functions for handling RISC OS menus easily.

Functions:

#Table columns 3
<Menu_New>
<Menu_Extend>
<Menu_Show>
<Menu_ShowLast>
<Menu_AddSubMenu>
<Menu_CalcHeight>
<Menu_SysHandle=>Menu_SysHandle_>
<Menu_SDispose>
<Menu_FullDispose>
<Menu_MakeIndirected>
<Menu_MakeWritable>
<Menu_SetFlags>
<Menu_GetFlags>
<Menu_SetText>
<Menu_GetText>
<Menu_RemoveItem>
<Menu_Warn>
<Menu_PopUp>
<Menu_PopUpAuto>
<Menu_FontMenu>
<Menu_FontMenu3>
<Menu_FontMenuDecode>
<Menu_FontMenuDecode3>
<Menu_ReviseWidth>
#EndTable

Macros:

#indent 4
#table lines 1
<Menu_FontMenu_NOTICK>
<Menu_FontMenu_TICKSYSFONT>
#endtable
#indent

Variables:

#indent 10
#Table columns 2
<menu_currentpos>
<menu_currentopen>
#EndTableDATA�DeskLib:Time.h
Version: 1.02 (22 May 1994)
#line
This header declares functions to do with time:

Functions:

#indent 10
<Time_Monotonic>
<Time_ConvertDateAndTime>
<Time_ConvertStandardDateAndTime>
#indent 0

Macros:

#Table 2 16
<Time_CTIME>
<Time_STANDARD>
<Time_FANCYDATE>
<Time_SHORTTIME>
<Time_LONGTIME>
<Time_EUROTIME>
#EndTable

The macros are format strings for <Time_ConvertDateAndTime>.DATADeskLib:Pointer.h
Version: 1.00 (28 Sep 1994)
#line
This header contains high-level pointer handling functions.

Functions:

#table columns 2
<Pointer_RestrictToWindow>
<Pointer_RestrictToIcon>
<Pointer_RestrictToRect>
<Pointer_Unrestrict>
#endtableDATA�do
This command defines a /do/ loop. This similar to a <REPEAT=>Basic:REPEAT> loop in Basic (but note it is *while* not *until*. It has the general form:

{fCode;align centre}do \<statement>; while (\<condition>);{f;align}

\<statement>	is the command executed within the loop. It is executed at least once. It may be a compound statement ie several statements enclosed in braces \{}, in which case no semicolon need follow it, but the final semicolon must still be present.

\<condition>	is evaluated at the end of each time round the loop. If it is false (0) then the loop is finished, else it goes round again.

eg.     {fCode}do i=<getchar>(); while (i!='Q');{f}

This gets characters from the keyboard until you press �Q�.DATA�DeskLib:Drag.h
Version: 1.00 (01 Apr 1994)
#line
This header declares functions for automatically handling drag update and finish events.

Functions:

#indent 9
#Table 1 24
<Drag_Initialise>
<Drag_SetHandlers>
#EndTable
#indent

Type:
{align centre}
<drag_handler>{align}

Variables:

#indent 4
#Table 2 24
<drag_currentupdate>
<drag_currentcomplete>
<drag_currentuserdata>
#EndTableDIR$,,�pF����FB&block�rF����
�$�currentcomplete�sF�����$�currentupdate`tF�����$Fhandler�uF���&��$�InitialiseXwF������$USetHandlers�yF���>4B&atype}F����/�$�currentuserdataDATAdrag_block
This type is defined by <DeskLib:Wimp.h=>Wimp>. It is a structure containing information to be passed to <Wimp_DragBox>.

   \{
     <window_handle> window;
     <drag_type>     type;
     <wimp_box>      screenrect;
     wimp_box      parent;
   }

/window/ is only needed for drag types 1-4. /parent/ is only needed for types 5-11. Note that there is no support in DeskLib for types 8-11, because this structure does not allocate space for the extra parameters needed by those types (they are complicated to use anyway!).DATA�drag_currentcomplete
This variable is declared in <DeskLib:Drag.h=>Drag> and contains the function last passed to <Drag_SetHandlers> as the function to be called at the end of the drag.DATA�drag_currentupdate
This variable is declared in <DeskLib:Drag.h=>Drag> and contains the function last passed to <Drag_SetHandlers> as the update function.DATAFdrag_handler
This type is defined in <DeskLib:Drag.h=>Drag>. It is used to define functions called by the Drag module during and at the end of a drag. Functions should be of the form:
{wrap off}
{fCode;align centre}void myfunc (void *ref);{f;align;wrap}

where /ref/ is the value passed when setting the drag handlers.DATA�Drag_Initialise
Syntax:	void Drag_Initialise (<BOOL> usenull);
Header:	<DeskLib:Drag.h=>Drag>

This function must be called to initialise the drag system for use with the <Event> module. /usenull/ should be <TRUE> if you want the Drag module to be able to do things on Null events. You will only usually need this if you are doing any dragging of user-drawn objects. You do not need it for dragging save icons and the like.DATAUDrag_SetHandlers
Syntax:	void Drag_SetHandlers (<drag_handler> uproc, drag_handler cproc, void *ref);
Header:	<DeskLib:Drag.h=>Drag>

This function sets the functions which will be called during and after the drag event. You should call this after starting the actual drag. Now, every null event, {/}uproc{/}() will be called. When the drag terminates, {/}cproc{/}() will be called. /ref/ will be passed directly to both functions. Either function may be <NULL> in which case it will not be used, and /uproc/ will only be used if /usenull/ was set to <TRUE> when calling <Drag_Initialise>.DATAadrag_type
This enumerated type is defined in <DeskLib:Wimp.h=>Wimp>. It is used to define the drag type for <Wimp_DragBox> (no surprise there!).

 \{
   drag_MOVEWINDOW = 1,	/* Drag window pos */
   drag_RESIZEWINDOW,	/* Drag window size */
   drag_SCROLLX,	/* Drag H scroll */
   drag_SCROLLY,	/* Drag V scroll */
   drag_FIXEDBOX,	/* Drag fixed size box */
   drag_RUBBERBOX,	/* Drag rubber box */
   drag_INVISIBLE,	/* Drag point */
   drag_USERFIXEDBBOX,	/* Drag fixed user-drawn box */
   drag_USERRUBBERBOX,	/* Drag rubber user-drawn box */
   drag_USERFIXEDNC	/* Drag fixed user-drawn box */
   drag_USERRUBBERNC	/* Drag rubber user-drawn box */
 }

The 'NC' types are not cancelled when buttons are released. In addition, a type 12 is available which is not defined in this type. It drags vertical and horizontal scroll bars (but only in RISC OS 3).DATA�drag_currentuserdata
This variable is declared in <DeskLib:Drag.h=>Drag> and contains the {/}void *{/} passed to the current handler functions, as set by <Drag_SetHandlers>.DATADragASpr.h
Version: 1.01 (30 Apr 1992)
#line 
The \<DragASpr.h> header defines three functions which access the <DragASprite=>SWI:DragASprite_> module included in the RISC OS 3 ROM.

#indent 5
<DragASprite_Start>
<DragASprite_Stop>
<DragASprite_DragIcon>DIR$ppDF����}�$�Start�F������$�StopԃF������$�DragIconDATA�DragASprite_Start
Syntax:	<os_error> *DragASprite_Start (int <flags=>dspr_flags_>, void *spritearea, char *name, <wimp_rect> *bbox, wimp_rect *parent);
Header:	<DeskLib:DragASpr.h=>DragASpr>

Returns:	Pointer to error, or <NULL> if none.

This function calls the DragASprite_Start SWI with the arguments placed in the appropriate registers. This SWI causes a sprite to be dragged by the mouse. The arguments are as follows:
{tab}
/spritearea/	is a pointer to the <sprite area=>SWI:os_spriteop.b> holding the sprite you want to drag, or 0 for the system sprite area, or 1 for the wimp sprite pool.
/name/	is a pointer to the sprite name.
/bbox/	is a pointer to the bounding box of the sprite, with /parent/ as a pointer to the bounding box for the whole drag (ie the mouse pointer may not move outside this box). /parent/ is only used if the appropriate flag is set.

This function only works on RISC OS 3 or later.DATA�DragASprite_Stop
Syntax:	<os_error> *DragASprite_Stop (void);
Header:	<DeskLib:DragASpr.h=>DragASpr>

Returns:	Pointer to error, or <NULL> if none.

This function terminates any solid drag begun with <DragASprite_Start>. RISC OS 3 only.DATA�DragASprite_DragIcon
Syntax:	os_error *DragASprite_DragIcon (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:DragASpr.h=>DragASpr>

Returns:	Pointer to error, or <NULL> if none.

This function is the easy way to use DragASprite. Just call it with a window handle and icon number, and it will call <DragASprite_Start> for you with all the correct parameters. If it cannot do this, it will use a normal dashed <Wimp_DragBox=>SWI:Wimp_DragBox> instead, so it will work on RISC OS 2 and 3.DATAOdraw.h
The \<draw.h> header declares
functions for handling draw files.DIR$�	�	��F����%#Kallocate�F���\$#�append_diag��F���EG'#�bboxtyp��F���'�$#�box0�F����c'#�captyp�F���S>'#�coltyp��F���'�$#[convertBox�F���JP&#�create_diag��F���Q�&#�createObjectt�F���,�(#�dashstrX�F�����(#�dashstrhdr,�F����{'#�dashtyp�F����&#\deleteObjects<�F�����$#1diagp�F����`&#doObjects��F���<$#�drawToScreenh�F����$#error��F���p$%#�extend�F�����&#�extractObject��F���{�'#7fileheader̨F���:�&#�FirstObject��F����(#Jfontliststr��F�����'#fontliststrhdr�F����'#�fontref��F���Z�'#�fontsizeT�F����2%#-free��F���-)#�groupnametypH�F���o)#groustrd�F���C�(#hjointspec̱F���UT'#�jointyp��F�����&#�LastObjectl�F���(�&#�NoObject�F���'�'#�objcoordĴF���:�$#�objecth�F�����&#�objectType�F�����'#objhdr4�F����J(#�path_tagtype��F���J�(#�pathstrh�F�����(#�pathstrhdr�F�����'#/pathstyle$�F����B'#�pathwidth��F�����$#)querybox�F�����$#rebind_diag�F�����$#AredrawstrD�F�����$#registerMemoryFunctionsL�F����l$#�render_diag�F����C$#�screenToDraw��F���
�&#EsetFontTableD�F����y$#shift_diag`�F����8'#�sizetyp��F���6
)#9spristr,�F���Y�(#spristrhdrH�F���_�'#9tagtyp��F���.S)#Atextareaend��F����:)#�textareahdr��F���xE)#dtextareastrend$�F���+1)#textareastrhdr@�F����')#�textcolhdr4�F����8(#�textstr�F����%(#�textstrhdr��F����'#�textstyle��F���3�&#FtranslateText8�F���p�&#�transTable��F����F%#unknown_object_handler��F���M$#averify_diagP�F����&#�verifyObject��F���p'#�windtyp��F�����$#�set_unknown_object_handlerDATAKdraw_allocate
This type is define in <drawfdiag.h=>drawfdiag>. It is a function used to allocate memory with prototype as follows:
{wrap off}
{fCode;align centre}int myfunc (void **anchor, int n);{f;align}
{wrap}
This should allocate /n/ bytes of store and set {/}*anchor{/} to point to them. Return non-zero if successful.DATA�draw_append_diag
Syntax:	<BOOL> draw_append_diag (<draw_diag> *diag1, draw_diag *diag2, <draw_error> *error);
Header:	<drawfdiag.h=>drawfdiag>

Returns:	<TRUE> if successful.

This function merges two diagrams into one. Both diagrams should have been processed by <draw_verify_diag>. {/}diag1{/} must be in a memory block large enough to contin both diagrams. Its length will be updated to its new value and its bounding box will be set to the union of the bounding boxes of the two diagrams.DATA�draw_bboxtyp
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a bounding box. It is defined as a <draw_box>.DATA�draw_box
This type is defined in <drawfdiag.h=>drawfdiag>. It is a bounding box defined as the following structure:

  \{
    int x0, y0, x1, y1;
  }DATA�draw_captyp
This type is defined in <drawftypes.h=>drawftypes> as an enumerated type describing a path cap style:

 	{
 	 	cap_butt	= 0,
 	 	cap_round	= 1,
 	 	cap_square	= 2,
 	 	cap_triangle	= 3
 	}DATA�draw_coltyp
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a colour value. It is defined as an /int/.DATA[draw_convertBox
Syntax:	void draw_convertBox (draw_box *from, <draw_box> *to, <BOOL> toScreen);
Header:	<drawfdiag.h=>drawfdiag>

This function converts a box to/from screen coordinates. /from/ and /to/ may point to the same box. If /toScreen/ is <TRUE> then conversion is from draw coords to screen coords else it is the other way around.DATA�draw_create_diag
Syntax:	void draw_create_diag (<draw_diag> *diag, char *creator, <draw_box> bbox);
Header:	<drawfobj.h=>drawfobj>

This function creates an empty diagram (ie just the file header), with the bounding box /bbox/. /diag/ must point at sufficient memory to hold the diagram. The first 12 chars of /creator/ are stored in the file header. {/}diag->length{/} is set appropriately by this function.DATA�draw_createObject
Syntax:	<BOOL> draw_createObject (<draw_diag> *diag, <draw_objectType> type, <draw_object> after, BOOL rebind, draw_object *obj, <draw_error> *error);
Header:	<drawfobj.h=>drawfobj>

Returns:	<TRUE> if object created OK.

This function creates an object defined in /type/ in the given diagram after the object in /after/. If /rebind/ is TRUE then the diagram bounding box is updated to include the new object. The handle of the new object is returned in /obj/.DATA�draw_dashstr
This type is defined in <drawftypes.h=>drawftypes> as a type containing dash pattern data. It is defined as the following structure:

 	\{
 	 	int dashstart;
 	 	int dashcount;
 	 	int dashelements[6];
 	}DATA�draw_dashstrhdr
This type is defined in <drawftypes.h=>drawftypes> as a type containing dash pattern data header. It is defined as the following structure:

 	\{
 	 	int dashstart;
 	 	int dashcount;
 	}DATA�draw_dashtyp
This type is defined in <drawftypes.h=>drawftypes> as an enumerated type containing a dash pattern flag:

 	\{
 	 	dash_absent	= 0,
 	 	dash_present	= 1
 	}DATA\draw_deleteObjects
Syntax:	<BOOL> draw_deleteObjects (<draw_diag> *diag, <draw_object> start, draw_object end, BOOL rebind, <draw_error> *error);
Header:	<drawfobj.h=>drawfobj>

Returns:	<TRUE> if objects deleted OK.

This function deletes the specified range of objects from a diagram. If /rebind/ is TRUE then the bounding box is updated.DATA1draw_diag
This type is defined in <drawfdiag.h=>drawfdiag>. It consists of a pointer to the data and a length field:

  \{
    char *data;
    int  length;
  }

The length must be an exact number of words, and is the amount of space used in the diagram, not the size of the memory allocated to it.DATAdraw_doObjects
Syntax:	<BOOL> draw_doObjects (<draw_diag> *diag, <draw_object> start, draw_object end, <draw_redrawstr> *r, double scale, <draw_error> *error);
Header:	<drawfobj.h=>drawfobj>

Returns:	<TRUE> if successful.

This function renders a specified range of objects from a diagram. /start/ and /end/ specify the objects to be rendered. /r/ is the redraw rectangle and /scale/ is the scale factor. Errors are returned in /error/. This function is similar to <draw_render_diag>, but with the addition of specifying the range.DATA�draw_drawToScreen
Syntax:	int draw_drawToScreen (int i);
Header:	<drawfdiag.h=>drawfdiag>

Returns:	/i/ in screen units.

This function-like macro converts from draw units to screen units. It returns ((i) >> 8).DATAdraw_error
This type is defined in <drawfdiag.h=>drawfdiag>. It is an error type:

#indent 2
\{
 	enum
 	\{
 	 	DrawOSError,
 	 	DrawOwnError,
 	 	None
 	} type;
 	union
 	\{
 	 	<os_error> os;
 	 	struct
 	 	\{
 	 	 	int code;
 	 	 	int location;
 	 	} draw;
 	} err;
}
#indent

Where a routine can produce an error, the error itself is returned in a user structure (or not at all if <NULL> is passed). The error block may contain either an OS error or an internal error. See <drawferror.h=>drawferror> for the internal errors.DATA�draw_extend
This type is defined in <drawfdiag.h=>drawfdiag>. It is a function used to extend memory with prototype as follows:
{wrap off}
{fCode;align centre}int myfunc (void **anchor, int n);{f;align;wrap}

This should extend the block of memory which starts at {/}*anchor{/} to a total size of /n/ bytes of store and set {/}*anchor{/} to point to them. Return non-zero if successful.DATA�draw_extractObject
Syntax:	<BOOL> draw_extractObject (<draw_diag> *diag, <draw_object> object, <draw_objectType> res, <draw_error> *err);
Header:	<drawfobj.h=>drawfobj>

Returns:	<TRUE> if object extracted OK.

This function extracts an object from a diagram into a supplied buffer, /res/. /object/ contains the object to be extracted. The buffer for the result must be large enough.DATA7draw_fileheader
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a file header. It is defined as the following structure:

 	\{
 	 	char	title[4];	/* "Draw" */
 	 	int	majorstamp;	/* 201 */
 	 	int	minorstamp;	/* 0 */
 	 	char	progident[12];	
 	 	<draw_bboxtyp>	bbox;	
 	}DATA�draw_FirstObject
This macro is defined in <drawfobj.h=>drawfobj>. It is a symbolic code used by functions that operate on a range of objects and has the meaning 'from the start'. It is defined as (<draw_object>)-1.DATAJdraw_fontliststr
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a font table object. It is defined as the following structure:
{wrap off}
 	\{
 	 	<draw_tagtyp> 	tag;	/* Object type = 0 */
 	 	<draw_sizetyp>	size;	/* Multiple of 4 */
 	 	<draw_fontref>	fontref;	
 	 	char	fontname[1];	
 	}DATAdraw_fontliststrhdr
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a font table object header. It is defined as the following structure:

 	\{
 	 	<draw_tagtyp>	tag;	/* Object type = 0 */
 	 	<draw_sizetyp>	size;	/* Multiple of 4 */
 	}DATA�draw_fontref
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a font reference number. It is defined as a /char/.DATA�draw_fontsize
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a font size value in 1/640 point. It is defined as an /unsigned int/.DATA-draw_free
This type is defined in <drawfdiag.h=>drawfdiag>. It is a function used to free memory with prototype as follows:
{wrap off}
{fCode;align centre}void myfunc (void **anchor);{f;align;wrap}

This should free the block of memory which starts at {/}*anchor{/} and set {/}*anchor{/} to 0.DATA�draw_groupnametyp
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a group object name. It is defined as the following structure:

  \{
    char ch[12];
  }DATAdraw_groustr
This type is defined in <drawftypes.h=>drawftypes> as a type containing a group object. It is defined as the following structure:

 	\{
 	 	<draw_tagtyp>	tag;     /* tag == 6 */
 	 	<draw_sizetyp>	size;
 	 	<draw_bboxtyp>	bbox;
 	 	<draw_groupnametyp>	name;
 	}DATAhdraw_jointspec
This type is defined in <drawftypes.h=>drawftypes> as a type containing path style information. It is defined as the following structure:

 	\{
 	 	char	join;
 	 	char	endcap;
 	 	char	startcap;
 	 	char	reserved;
 	 	int	mitrelimit;
 	 	short	endtricapwid;
 	 	short	endtricaphei;
 	 	short	starttricapwid;
 	 	short	starttricaphei;
 	}DATA�draw_jointyp
This type is defined in <drawftypes.h=>drawftypes> as an enumerated type describing a path join type:

 	\{
 	 	join_mitred	= 0,
 	 	join_round	= 1,
 	 	join_bevelled	= 2
 	}DATA�draw_LastObject
This macro is defined in <drawfobj.h=>drawfobj>. It is a symbolic code used by functions that operate on a range of objects and has the meaning 'to the end'. It is defined as (<draw_object>)-2.DATA�draw_NoObject
This macro is defined in <drawfobj.h=>drawfobj>. It is a symbolic code for no object and is defined as {/}(<draw_object>) -1{/}.DATA�draw_objcoord
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding an object coordinate. It is defined as the following structure:

 	\{
 	 	int x, y;
 	}DATA�draw_object
This type is defined in <drawfdiag.h=>drawfdiag>. It is an offset from the start of the diagram to the object data. It is defined as an /int/.DATA�draw_objectType
This type is defined in <drawfobj.h=>drawfobj>. It is
defined as the following union, used for
operation on complete objects:

 	\{
 	 	<draw_objhdr>	*object;
 	 	<draw_fileheader>	*fileHeader;
 	 	<draw_fontliststr>	*fontList;
 	 	<draw_textstr>	*text;
 	 	<draw_pathstr>	*path;
 	 	<draw_spristr>	*sprite;
 	 	<draw_groustr>	*group;
 	 	<draw_textareahdr>	*textarea;
 	 	char	*bytep;
 	 	int	*wordp;
 	}DATAdraw_objhdr
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a object header. It is defined as the following structure:

 	\{
 	 	<draw_tagtype>	tag;	/* Object type */
 	 	<draw_sizetyp>	size;	/* Multiple of 4 */
 	 	<draw_bboxtyp>	bbox;	
 	}DATA�draw_path_tagtype
This type is defined in <drawftypes.h=>drawftypes> as an
enumerated type containing a tag indentifier
within a path object. It is defined as:

 	\{
 	 	draw_PathTERM	= 0,	/* end of path */
 	 	draw_PathMOVE	= 2,	/* move to (x,y) */
 	 	draw_PathLINE	= 8,	/* draw to (x,y) */
 	 	draw_PathCURVE	= 6,	/* bezier curve */
 	 	draw_PathCLOSE	= 5,	/* close subpath */
 	}DATA�draw_pathstr
This type is defined in <drawftypes.h=>drawftypes> as a type containing a path object. It is defined as the following structure:

 	\{
 	 	<draw_tagtyp>	tag;
 	 	<draw_sizetyp>	size;
 	 	<draw_bboxtyp>	bbox;
 	 	<draw_coltyp>	 fillcolour;
 	 	<draw_coltyp>	pathcolour;
 	 	<draw_pathwidth>	pathwidth;
 	 	<draw_pathstyle>	pathstyle;
 	 	<draw_dashstr>	data;	/* optional */
 	 	int	PATH;	/* ?!?!?!?! */
 	}DATA�draw_pathstrhdr
This type is defined in <drawftypes.h=>drawftypes> as a type containing a path object, without the actual path components. It is defined as the following structure:

 	\{
 	 	<draw_tagtyp>	tag;
 	 	<draw_sizetyp>	size;
 	 	<draw_bboxtyp>	bbox;
 	 	<draw_coltyp>	fillcolour;
 	 	<draw_coltyp>	pathcolour;
 	 	<draw_pathwidth>	pathwidth;
 	 	<draw_pathstyle>	pathstyle;
 	}DATA/draw_pathstyle
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a path style description word. It is defined as the following structure:

 	\{
 	 	unsigned char joincapwind;
 	 	unsigned char reserved8;
 	 	unsigned char tricapwid;
 	 	unsigned char tricaphei;
 	}DATA�draw_pathwidth
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a width value. It is defined as an /int/.DATA)draw_querybox
Syntax:	void draw_querybox (<draw_diag> *diag, <draw_box> *box, <BOOL> screenUnits);
Header:	<drawfdiag.h=>drawfdiag>

This function finds the bounding box of /diag/ and returns it in /box/. If /screenUnits/ is <TRUE> then the box is in screen units else it is in draw units.DATAdraw_rebind_diag
Syntax:	void draw_rebind_diag (<draw_diag> *diag);
Header:	<drawfdiag.h=>drawfdiag>

This function forces the header of a diagram's bounding box to be exactly the union of the objects in it. The diagram should have been processed by <draw_verify_diag>() first.DATAAdraw_redrawstr
This type is defined in <drawfdiag.h=>drawfdiag>. It is a redraw structure. It is the same structure as a <wimp_redrawstr> and may be cast from one.

  \{
    int      reserved;	
    draw_box box;	/* Work area box */
    int      scx, scy;	/* Scroll pos */
    draw_box g;	/* Graphics window */
  }DATAdraw_registerMemoryFunctions
Syntax:	void draw_registerMemoryFunctions (<draw_allocate> alloc, <draw_extend> extend, <draw_free> free);
Header:	<drawfdiag.h=>drawfdiag>

This function registers three functions to be used to allocate, extend, and free memory, when rendering text area objects. If this function is not called (or if memory cannot be allocated) then rendering a text area will have no effect. Note that the functions <flex_alloc>, <flex_extend> and <flex_free> can be used as the three functions.DATA�draw_render_diag
Syntax:	<BOOL> draw_render_diag (<draw_diag> *diag, <draw_redrawstr> *r, double scale, <draw_error> *error);
Header:	<drawfdiag.h=>drawfdiag>

Returns:	<TRUE> if successful.

This function renders the given diagram with the given scale factor, in a given Wimp redraw rectangle. The diagram must have been processed by <draw_verify_diag>(). Very small and negative scale factors will result in a run-time error. /scale/ should be > 0.00009.DATA�draw_screenToDraw
Syntax:	int draw_screenToDraw (int i);
Header:	<drawfdiag.h=>drawfdiag>

Returns:	/i/ in screen units.

This function-like macro converts from screen units to draw units. It returns ((i) \<\< 8).DATAEdraw_setFontTable
Syntax:	void draw_setFontTable (<draw_diag> *diag);
Header:	<drawfobj.h=>drawfobj>

This function scans the given diagram for a font table object and records it. It must be called for <draw_doObjects> to work on a sequence of objects that includes text objects using fonts, but no font table object.DATAdraw_shift_diag
Syntax:	void draw_shift_diag (<draw_diag> *diag, int xMove, int yMove);
Header:	<drawfdiag.h=>drawfdiag>

This function shifts a diagram by a given distance. All coordinates in the diagram are moved by /xMove/ in the x direction and /yMove/ in the y direction.DATA�draw_sizetyp
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a size value. It is defined as an /int/.DATA9draw_spristr
This type is defined in <drawftypes.h=>drawftypes> as a type containing a sprite object. It is defined as the following structure:

 		\{
 	 	<draw_tagtyp>	tag;	/* tag == 5 */
 	 	<draw_sizetyp>	size;
 	 	<draw_bboxtyp>	bbox;
 	 	<sprite_header>	sprite;
 	 	int	palette[1];	/* optional */
 	}DATAdraw_spristrhdr
This type is defined in <drawftypes.h=>drawftypes> as a type containing a sprite object, without the actual sprite. It is defined as the following structure:

 	\{
 	 	<draw_tagtyp>	tag;     /* tag == 5 */
 	 	<draw_sizetyp>	size;
 	 	<draw_bboxtyp>	bbox;
 	}DATA9draw_tagtyp
This type is defined in <drawftypes.h=>drawftypes> as an
enumerated type holding object type numbers:

 	\{
 	 	draw_OBJFONTLIST	= 0,
 	 	draw_OBJTEXT    	= 1,
 	 	draw_OBJPATH    	= 2,
 	 	draw_OBJSPRITE  	= 3,
 	 	draw_OBJGROUP   	= 6,
 	 	draw_OBJTEXTAREA	= 9,
 	 	draw_OBJTEXTCOL 	= 10
 	}DATAAdraw_textareaend
This type is defined in <drawftypes.h=>drawftypes> as a type containing text area object data. It is defined as the following structure:

 	\{
 	 	int	endmark;     /* endmark == 0 */
 	 	int	blank1;
 	 	int	blank2;
 	 	<draw_coltyp>	textcolour;
 	 	<draw_coltyp>	backcolour;
 	 	char	text[1];
 	}DATA�draw_textareahdr
This type is defined in <drawftypes.h=>drawftypes> as a type containing a text area object header. It is defined as the following structure:

 	\{
 	 	<draw_tagtyp>	tag;
 	 	<draw_sizetyp>	size;
 	 	<draw_bboxtyp>	bbox;
 	}DATAddraw_textareastrend
This type is defined in <drawftypes.h=>drawftypes> as a type containing text area object data. It is defined as the following structure:

 	\{
 	 	int	endmark;     /* endmark == 0 */
 	 	int	blank1;
 	 	int	blank2;
 	 	<draw_coltyp>	textcolour;
 	 	<draw_coltyp>	backcolour;
 	}

This is followed immediately by the text itself.DATAdraw_textareastrhdr
This type is defined in <drawftypes.h=>drawftypes> as a type containing a text area object header. It is defined as the following structure:

 	\{
 	 	<draw_tagtyp>	tag;
 	 	<draw_sizetyp>	size;
 	 	<draw_bboxtyp>	bbox;
 	 	<draw_textcolhdr>	column;
 	}DATA�draw_textcolhdr
This type is defined in <drawftypes.h=>drawftypes> as a type containing a text column object. It is defined as the following structure:

 	\{
 	 	<draw_tagtyp>	tag;
 	 	<draw_sizetyp>	size;
 	 	<draw_bboxtyp>	bbox;
 	}DATA�draw_textstr
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a text object. It is defined as the following structure:

 	\{
 	 	<draw_tagtype>	tag;	/* Object type = 1 */
 	 	<draw_sizetyp>	size;	/* Multiple of 4 */
 	 	<draw_bboxtyp>	bbox;
 	 	<draw_coltyp>	textcolour;
 	 	<draw_coltyp>	background;
 	 	<draw_textstyle>	textstyle;
 	 	<draw_fontsize>	fsizex;
 	 	<draw_fontsize>	fsizey;
 	 	<draw_objcoord>	coord;
 	 	char	text[1];
 	}DATA�draw_textstrhdr
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a text object, apart from the actual text. It is defined as the following structure:

 	\{
 	 	<draw_tagtype>	tag;	/* Object type = 1 */
 	 	<draw_sizetyp>	size;	/* Multiple of 4 */
 	 	<draw_bboxtyp>	bbox;
 	 	<draw_coltyp>	textcolour;
 	 	<draw_coltyp>	background;
 	 	<draw_textstyle>	textstyle;
 	 	<draw_fontsize>	fsizex;
 	 	<draw_fontsize>	fsizey;
 	 	<draw_objcoord>	coord;
 	}DATA�draw_textstyle
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a text style word. It is defined as the following structure:

 	\{
 	 	<draw_fontref>	fontref;
 	 	char	reserved8;
 	 	short	reserved16;
 	}DATAFdraw_translateText
Syntax:	void draw_translateText (<draw_diag> *diag);
Header:	<drawfobj.h=>drawfobj>

Returns:	<TRUE> if object extracted OK.

This function updates all font reference numbers for text objects following creation of a font table. If the font table has not been changed then this function does nothing.DATA�draw_transTable
This is an array of 256 integers, used for font translation. Immediately after a call to <draw_createObject> where the object was a font table, this contains the mapping between old and new font reference numbers, such that draw_transTable[old fontref] = new fontref. <draw_translateText> makes use of this table; it is exported for callers who may want to do something elaborate.DATAdraw_unknown_object_handler
This type is defined in <drawfdiag.h=>drawfdiag>. It is a function used for handling unknown objects with the following prototype:
{wrap off}
{fCode;align centre}<BOOL> myfunc (void *obj, void *hnd, draw_error *error);{f;align;wrap}

This handler is called whenever an attempt is made to render an unknown object. It is passed a point to the object /obj/ and a block to write an error status into. If an error occurs, the handler must return <FALSE> and set up the error block, else it must return <TRUE>.DATAadraw_verify_diag
Syntax:	<BOOL> draw_verify_diag (<draw_diag> *diag, <draw_error> *error);
Header:	<drawfdiag.h=>drawfdiag>

Returns:	<TRUE> if diagram is correct.

This function verifies a diagram which has been read in from file. Each object in the file is checked and the first error encountered causes return (with /error/ set appropriately)DATA�draw_verifyObject
Syntax:	<BOOL> draw_verifyObject (<draw_diag> *diag, <draw_object> object, int *size);
Header:	<drawfobj.h=>drawfobj>

Returns:	<TRUE> if object found and verified.

This function verifies the data for an existing object. This ensures that its bounding box is consistent with the data in it - altering it if necessary. The object's size is returned in {/}*size{/} if /size/ is not <NULL>.DATA�draw_windtyp
This type is defined in <drawftypes.h=>drawftypes> as an enumerated type describing a winding rule:

 	\{
 	 	wind_nonzero	= 0,
 	 	wind_evenodd	= 1
 	}DATA�draw_set_unknown_object_handler
Syntax:	<draw_unknown_object_handler> draw_set_unknown_object_handler (draw_unknown_object_handler handler, void *handle);
Header:	<drawfdiag.h=>drawfdiag>

Returns:	The old handler.

This function registers a function to be called when an attempt is made to render an object with an object tag which is not known. The handler can be removed by calling with 0 as a parameter. /handle/ is passed direct to the object handler.DATA�drawfdiag.h
This header deals with processing of Draw format files. It can read in files to diagrams and render them.

Functions:

#Indent 10
#Table 5 21
<drawfdiag_init>
<draw_drawToScreen>
<draw_screenToDraw>
<draw_verify_diag>
<draw_append_diag>
<draw_render_diag>
<draw_shift_diag>
<draw_querybox>
<draw_convertBox>
<draw_rebind_diag>
#EndTable

#indent 0;align centre
<draw_set_unknown_object_handler>
<draw_registerMemoryFunctions>

#align;Indent 0
Types:

#indent 15
#Table 4 21
<draw_diag>
<draw_object>
<draw_box>
<draw_redrawstr>
<draw_error>
<draw_allocate>
<draw_extend>
<draw_free>
#EndTable

#indent 0;align centre
<draw_unknown_object_handler>DIR$,,8�F���>7$#�initDATA�drawfdiag_init
Syntax:	<BOOL> drawfdiag_init (void);
Header:	<drawfdiag.h=>drawfdiag>

Returns:	<TRUE> if successful.

This function initialises the diagram level interface.DATA	drawferror.h
This header defines all the following macros, which each represent an error code. The standard error message for each of these errors is also given for your information.

draw_BadObject	Bad object 
draw_BadObjectHandle	Bad object handle
draw_TooManyFonts	Too many font definitions
draw_BBoxWrong	Bounding box coordinates are in the wrong order
draw_BadCharacter	Bad character in string
draw_ObjectTooSmall	Object size is too small
draw_ObjectTooLarge	Object size is too large
draw_ObjectNotMult4	Object size is not a multiple of 4
draw_ObjectOverrun	Object data is larger than specified size
draw_ManyFontTables	There is more than one font table
draw_LateFontTable	The font table appears after text object(s)
draw_BadTextStyle	Bad text style word
draw_MoveMissing	Path must start with a move
draw_BadPathTag	Path contains an invalid tag
draw_NoPathElements	Path does not contain any line or curve elements
draw_PathExtraData	There is extra data present at the end of a path object
draw_BadSpriteSize	The sprite definition size is inconsistent with the object size
draw_BadTextColumnEnd	Missing end marker in text columns
draw_ColumnsMismatch	Actual number of columns in a text area object does not match specified number of columns
draw_NonZeroReserved	Non-zero reserved words in a text area object
draw_NotDrawFile	This is not a Draw file
draw_VersionTooHigh	Version number too high
draw_BadObjectType	Unknown object type
draw_CorruptTextArea	Corrupted text area (must start with '\\!')
draw_TextAreaVersion	Text area version number is wrong or missing
draw_MissingNewline	Text area must end with a newline character
draw_BadAlign	Text area: bad \\A code (must be L, R, C or D)
draw_BadTerminator	Text area: bad number or missing terminator
draw_ManyDCommands	Text area: more than one \\D command
draw_BadFontNumber	Text area: bad font number
draw_UnexpectedCharacter Text area: unexpected character in \\F command
draw_BadFontWidth	Text area: bad or missing font width in \\F command
draw_BadFontSize	Text area: bad or missing font size in \\F command
draw_NonDigitV	Text area: non-digit in \\V command
draw_BadEscape	Text area: bad escape sequence
draw_FewColumns	Text area must have at least one column
draw_TextColMemory	Out of memory when building text area [location field is always 0 for this error]DATA�drawfobj.h
This header declares types and functions for
processing Draw format files at the object
level.

Functions:

#Indent 2
#Table 5 21
<drawfobj_init>
<draw_create_diag>
<draw_doObjects>
<draw_setFontTable>
<draw_verifyObject>
<draw_createObject>
<draw_deleteObjects>
<draw_extractObject>
<draw_translateText>
#EndTable

#Indent 0
Macros:                  Types:

  <draw_NoObject>     <draw_objectType>
  <draw_FirstObject>
  <draw_LastObject>

Variables:

  <draw_transTable>DIR$,, �F���SD&#�initDATA�drawfobj_init
Syntax:	<BOOL> drawobj_init (void);
Header:	<drawfobj.h=>drawfobj>

Returns:	<TRUE> if successful.

This function initialises the object level interface.DATA{drawftypes.h
This header defines types used by the object level interface for draw files. You do not normally need to <#include=>include> this, <drawfobj.h=>drawfobj> pulls it in.

Macros:

#Table 4 20
<packmask_join>
<packmask_endcap>
<packmask_startcap>
<packmask_windrule>
<packmask_dashed>
<packshft_join>
<packshft_endcap>
<packshft_startcap>
<packshft_windrule>
<packshft_dashed>
#EndTable

Types:

#Table 15 20
<draw_sizetyp>
<draw_coltyp>
<draw_pathwidth>
<draw_bboxtyp>
<draw_jointyp>
<draw_captyp>
<draw_windtyp>
<draw_dashtyp>
<draw_pathstyle>
<draw_fontref>
<draw_textstyle>
<draw_fontsize>
<fontrec>
<draw_tagtyp>
<draw_objcoord>
<draw_fileheader>
<draw_objhdr>
<draw_fontliststrhdr>
<draw_fontliststr>
<draw_textstrhdr>
<draw_textstr>
<draw_path_tagtype>
<Path_movestr>
<Path_linestr>
<Path_curvestr>
<Path_closestr>
<Path_termstr>
<Largest_path_str>
<Path_eleptr>
<draw_dashstrhdr>
<draw_dashstr>
<draw_jointspec>
<draw_pathstrhdr>
<draw_pathstr>
<draw_spristrhdr>
<draw_spristr>
<draw_groupnametyp>
<draw_groustr>
<draw_textcolhdr>
<draw_textareastrhdr>
<draw_textareahdr>
<draw_textareastrend>
<draw_textareaend>
#EndTableDATA�drawmod.h
This header provides an interface to the Draw module (not to be confused with !Draw). It calls the <Draw SWIs=>SWI:Draw_>.

Functions:

#Table 5 23
<drawmod_fill>
<drawmod_stroke>
<drawmod_do_strokepath>
<drawmod_ask_strokepath>
<drawmod_do_flattenpath>
<drawmod_ask_flattenpath>
<drawmod_buf_transformpath>
<drawmod_insitu_transformpath>
<drawmod_processpath>
#endtable

Macros:

#Table 4 23
<cap_butt>
<cap_round>
<cap_square>
<cap_triang>
<join_mitred> 
<join_round> 
<join_bevelled>
#EndTable

Types:

#Table 10 23
<drawmod_pathelemptr>
<drawmod_filltype> 
<drawmod_capjoinspec>
<drawmod_dashhdr> 
<drawmod_line> 
<drawmod_transmat> 
<drawmod_box> 
<drawmod_options> 
<drawmod_buffer> 
<drawmod_tagtype> 
<drawmod_filling_options> 
<drawmod_path_tagtype> 
<drawmod_path_endstr> 
<drawmod_path_ptrstr> 
<drawmod_path_movestr> 
<drawmod_path_closegapstr> 
<drawmod_path_closelinestr>
<drawmod_path_bezierstr> 
<drawmod_path_gaptostr> 
<drawmod_path_linetostr> 
#EndTableDIR$HHt�F���&�E#�ask_flattenpath��F���.�E#�ask_strokepath�F���ƉF#�boxpF����E#hbuf_transformpath�F���ٟF#�buffer�F���spF#�capjoinspec(F����xF#�dashhdr�F����E#ldo_flattenpathd	F�����E#ido_strokepath�
F���6�E#fill�F�����F#�filling_options�F���DaF#NfilltypeF�����E#Vinsitu_transformpathhF����}F#linepF�����F#optionstF����F#path_bezierstr�F�����F#�path_closegapstrHF���v�F#�path_closelinestrF�����F#�path_endstr�F����G#�path_gaptostr�F���G#�path_linetostrlF�����F#�path_movestr,F�����F#�path_ptrstr�F�����F#�path_tagtype�F����8F#pathelemptr�F����E#�processpatht!F�����E#astroke�#F���J�F#�tagtype|$F���$�F#�transmatDATA�drawmod_ask_flattenpath
Syntax:	<os_error> *drawmod_ask_flattenpath (<drawmod_pathelemptr> path, int flatness, int *buflen);
Header:	<drawmod.h=>drawmod>

Returns:	Pointer to error, or <NULL> if none.

This function converts an input path (in {/}path{/}) into a flattened output path, according to the flatness (0 for default). It returns the length of such a path in {/}*buflen{/}.DATA�drawmod_ask_strokepath
Syntax:	<os_error> *drawmod_ask_strokepath (<drawmod_pathelemptr> path, <drawmod_transmat> *matrix, <drawmod_line> *line_style, int *buflen);
Header:	<drawmod.h=>drawmod>

Returns:	Pointer to error, or <NULL> if none.

This function does the same as <drawmod_stroke>, except that output is to a buffer. This function does not actually return the data, just the length of it (in {/}*buflen{/}). <drawmod_do_strokepath> returns the data.DATA�drawmod_box
This type is defined in <drawmod.h=>drawmod> as the following structure:

  \{
    int lowx;
    int lowY;
    int highX;
    int highY;
  }DATAhdrawmod_buf_transformpath
Syntax:	<os_error> *drawmod_buf_transformpath (<drawmod_pathelemptr> path, <drawmod_buffer> *buffer, <drawmod_transmat> *matrix);
Header:	<drawmod.h=>drawmod>

Returns:	Pointer to error, or <NULL> if none.

This function puts the path in /path/ througth the transformation matrix in /matrix/ and places the result in /buffer/.DATA�drawmod_buffer
This type is defined in <drawmod.h=>drawmod> as a type containing a path buffer. It is defined as:

  \{
    int zeroword;
    int sizeword;
  }

Typically, you will allocate space for your path and then set a variable of type {/}drawmod_buffer *{/} to point at it. For functions which take a {/}drawmod_buffer *{/} parameter, /zeroword/ should contain 0 and /sizeword/ should indicate how many bytes follow in memory.DATA�drawmod_capjoinspec
This type is defined in <drawmod.h=>drawmod>. It is a structure containing the caps and join styles.

 	\{
 	 	unsigned char join;
 	 	unsigned char leadcap;
 	 	unsigned char trailcap;
 	 	unsigned char reserved8;
 	 	int mitrelimit;
 	 	unsigned short lead_tricap_w;
 	 	unsigned short leaf_tricap_h;
 	 	unsigned short trail_tricap_w;
 	 	unsigned short trail_tricap_h;
 	}DATA�drawmod_dashhdr
This type is defined in <drawmod.h=>drawmod> as a type containing dash pattern data header. It is defined as the following structure:

  \{
    int dashstart;
    int dashcount;
  }DATAldrawmod_do_flattenpath
Syntax:	<os_error> *drawmod_do_flattenpath (<drawmod_pathelemptr> path, <drawmod_buffer> *buffer, int flatness);
Header:	<drawmod.h=>drawmod>

Returns:	Pointer to error, or <NULL> if none.

This function converts an input path (in {/}path{/}) into a flattened output path (in {/}buffer{/}), according to the flatness (0 for default).DATAidrawmod_do_strokepath
Syntax:	<os_error> *drawmod_do_strokepath (<drawmod_pathelemptr> path, <drawmod_transmat> *matrix, <drawmod_line> *line_style, <drawmod_buffer> *buffer);
Header:	<drawmod.h=>drawmod>

Returns:	Pointer to error, or <NULL> if none.

This function does the same as <drawmod_stroke>, except that output is to a buffer (and not filled).DATAdrawmod_fill
Syntax:	<os_error> *drawmod_fill (<drawmod_pathelemptr> path, <drawmod_filltype> fill, <drawmod_transmat> *matrix, int flat);
Header:	<drawmod.h=>drawmod>

Returns:	Pointer to error, or <NULL> if none.

This function emulates the PostScript 'fill' operator. It performs the following:
{tab}
�	Closes open subpaths.
�	Flattens the path according to the flatness, /flat/. Use 0 for default.
�	Transforms path to standard coords.
�	Fills the resultant path and outputs to VDU.

/matrix/ may be 0 to use the identity matrix.DATA�drawmod_filling_options
This type is defined in <drawmod.h=>drawmod> as the following enumerated type:

  \{
    option_insitu	= 0,
    option_normalfill	= 1,
    option_subpathfill	= 2,
    option_countsize	= 3
  }

These are the values passed to <drawmod_processpath>. They have the following meaning:
{tab}
insitu	: Output to input path buffer
normalfill	: Fill path normally
subpathfill	: Fill subpath-by-subpath
countsize	: Count required buffer sizeDATANdrawmod_filltype
This type is defined in <drawmod.h=>drawmod>. It is an enumerated type containing a fill type:

 	\{
 	 	fill_Default	= 0x00000000,
 	 	fill_WNonzero	= 0x00000000,
 	 	fill_WNegative	= 0x00000001,
 	 	fill_WEvenodd	= 0x00000002,
 	 	fill_WPositive	= 0x00000003,
 	 	fill_FNonbext	= 0x00000004,
 	 	fill_FBext	= 0x00000008,
 	 	fill_FNonbint	= 0x00000010,
 	 	fill_FBint	= 0x00000020,
/* Next four are only for <drawmod_processpath> */
 	 	fill_PClose	= 0x08000000,
 	 	fill_PFlatten	= 0x10000000,
 	 	fill_PThicken	= 0x20000000,
 	 	fill_PReflatten	= 0x40000000
 	}DATAVdrawmod_insitu_transformpath
Syntax:	<os_error> *drawmod_insitu_transformpath (<drawmod_pathelemptr> path, <drawmod_transmat> *matrix);
Header:	<drawmod.h=>drawmod>

Returns:	Pointer to error, or <NULL> if none.

This function puts the path in /path/ through the transformation matrix in /matrix/ and places the result back in /path/.DATAdrawmod_line
This type is defined in <drawmod.h=>drawmod> as a type containing line attributes. It is defined as the following structure:

  \{
    int flatness;
    int thickness;
    <drawmod_capjoinspec> spec;
    <drawmod_dashhdr> *dash_pattern;
  }DATAdrawmod_options
This type is defined in <drawmod.h=>drawmod> as the following structure:

  \{
    <drawmod_tagtype> tag;
    union
    \{
      <drawmod_filling_options> opts;
      <drawmod_box> *box;
      <drawmod_buffer> *buffer;
    } data;
  }DATAdrawmod_path_bezierstr
This type is defined in <drawmod.h=>drawmod>. It is a structure for a bezier curve element:
{wrap off}
  \{
    <drawmod_path_tagtype>	tag;	/* == 6 */
    int	x1,y1,x2,y2,x3,y3;	
  }

(x3,y3) is the end point, the others are control points.DATA�drawmod_path_closegapstr
This type is defined in <drawmod.h=>drawmod>. It is a structure for a close with gap element:
{wrap off}
  \{
    <drawmod_path_tagtype> tag;       /* == 4 */
  }DATA�drawmod_path_closelinestr
This type is defined in <drawmod.h=>drawmod>. It is a structure for a close with line element:
{wrap off}
  \{
    <drawmod_path_tagtype> tag;       /* == 5 */
  }DATA�drawmod_path_endstr
This type is defined in <drawmod.h=>drawmod>. It is a structure for an end of path element:
{wrap off}
  \{
    <drawmod_path_tagtype>	tag;        /* == 0 */
    unsigned int	bytes_free;
  }DATA�drawmod_path_gaptostr
This type is defined in <drawmod.h=>drawmod>. It is a structure for a gap element:
{wrap off}
  \{
    <drawmod_path_tagtype>	tag;	/* == 7 */
    int	x,y;	
  }DATA�drawmod_path_linetostr
This type is defined in <drawmod.h=>drawmod>. It is a structure for a line element:
{wrap off}
  \{
    <drawmod_path_tagtype>	tag;	/* == 8 */
    int	x,y;	
  }DATA�drawmod_path_movestr
This type is defined in <drawmod.h=>drawmod>. It is a
structure for a move element:
{wrap off}
  \{
    <drawmod_path_tagtype>	tag;	/* == 2 */
    int	x, y;	
  }DATA�drawmod_path_ptrstr
This type is defined in <drawmod.h=>drawmod>. It is a
structure for an continuation element:
{wrap off}
  \{
    <drawmod_path_tagtype>	tag;	/* == 1 */
    void	*ptr;	
  }DATA�drawmod_path_tagtype
This type is defined in <drawmod.h=>drawmod>. It is an enumerated type defining path element types:

  \{
    path_term     	= 0,  /* end of path */
    path_ptr      	= 1,
    path_move_2   	= 2,  /* normal move */
    path_move_3   	= 3,
    path_closegap 	= 4,  /* close subpath */
    path_closeline	= 5,  /* close with line */
    path_bezier   	= 6,  /* bezier curve */
    path_gapto    	= 7,
    path_lineto   	= 8   /* line */
  }DATAdrawmod_pathelemptr
This type is defined in <drawmod.h=>drawmod>. It is a union containing a pointer to any type of path element.

 	\{
 	 	<drawmod_path_endstr>	*end;
 	 	<drawmod_path_ptrstr>	*ptr;
 	 	<drawmod_path_movestr>	*move2;
 	 	<drawmod_path_movestr>	*move3;
 	 	<drawmod_path_closegapstr>	*closegap;
 	 	<drawmod_path_closelinestr>	*closeline;
 	 	<drawmod_path_bezierstr>	*bezier;
 	 	<drawmod_path_gaptostr>	*gapto;
 	 	<drawmod_path_linetostr>	*lineto;

 	 	char	*bytep;
 	 	int 	*wordp;
 	}DATA�drawmod_processpath
Syntax:	<os_error> *drawmod_processpath (<drawmod_pathelemptr> path, <drawmod_filltype> fill_style, <drawmod_transmat> *matrix, <drawmod_line> *line_style, <drawmod_options> *options, int *buflen);
Header:	<drawmod.h=>drawmod>

Returns:	Pointer to error, or <NULL> if none.

This function is the main drawmod function. All other functions call the same SWI that this calls eventually. /path/ is the path; /matrix/ is the transformation matrix, or 0 for identity; {/}options->data{/} can be one of the options, or an output buffer pointer, or a pointer to a buffer for holding the path's bouding box. {/}options->tag{/} tags the use of each of these.DATAadrawmod_stroke
Syntax:	<os_error> *drawmod_stroke (<drawmod_pathelemptr> path, <drawmod_filltype> fill_style, <drawmod_transmat> *matrix, <drawmod_line> *line_style);
Header:	<drawmod.h=>drawmod>

Returns:	Pointer to error, or <NULL> if none.

This function emulates the PostScript 'stroke' operator. It performs the following:
{tab}
�	Flattens the path according to {/}line_style->flatness{/}.
�	Applies dash pattern if {/}line_style->dash_pattern{/}!=NULL.
�	Thickens the path, using specified joins/caps.
�	Fills the resultant path and outputs to VDU.

/matrix/ may be 0 to use the identity matrix.DATA�drawmod_tagtype
This type is defined in <drawmod.h=>drawmod> as the following enumerated type:

  \{
    tag_fill	= 1,
    tag_box	= 2,
    tag_buf	= 3
  }DATA�drawmod_transmat
This type is defined in <drawmod.h=>drawmod> as a type containing a transformation matrix. It is defined as an array of six integers ie {/}int [6]{/}DIR$,,X%F������"�flags_DATA�DragASprite Flags
Bits    Meaning
0-1     X position of sprite within bbox
            00 - left, 01 - centre, 10 - right
2-3     Y position of sprite within bbox
            00 - bottom, 01 - centre, 10 - top
4-5     Parent bounding box
            00 - screen, 01 - window,
            10 - specified parent
6       Parent bounding box applies to
            0 - bbox, 1 - pointer
7       Drop-shadow
            0 - absent, 1 - present
8-31    Reserved, should be zero.DIR$HH�*F���l�"�EDOM`+F������"8else�+F���g�/,else_\,F���m��"�elseif0.F����T&�EnableDbug0F������"lendifx0F�����T&�Env1F�����/0Env_�2F���!��"�EOF�3F����t�"�ERANGEt4F����U&"Err�5F���(��/PErr_ 9F���g��/,errhnd_�9F���~�"�errno�:F������/(errno_�;F���˜�$�ERRORT<F���؀�/HError_DMF���ty�"�ESIGNUM0NF�����$%KEvent|QF���ׁ�/(event_�}F����'%}EventMsgF���E��/�EventMsg_\�F���n��$�exit8�F���Є�/LEXIT_��F�����"�expl�F������"YEXPORTDATA�EDOM
The macro EDOM is defined in <errno.h=>errno_h> as an integer value which can be stored in <errno> to indicate that the input arguments for a function are out of a suitable domain. In Easy�C it is defined as 1.DATA8else
This keyword is part of the <if> construct.DIR$,,�+F�����"�!RootDATA�#else
This directive forms part of the <#if=>if>, <#ifdef=>ifdef> and <#ifndef=>ifndef> constructs.

An additional form is <#elseif=>elseif>.DATA�#elseif
This directive combines the functionality of <#else=>else_> and <#if=>if_>. It has the same form as a #if construct but combines this with #else eg.

#fCode
      <#ifndef=>ifndef> MACRO
      \<statements1>;
      #elseif MACRO==1
      \<statements2>;
      #else
      \<statements3>;
      #endif
#f

If MACRO is undefined \<statments1> will be compiled, else if MACRO==1 then \<statements2> will be compiled, else \<statements3> will be compiled.DATA�TimsLib:EnableDbug.h
#Parent ro_tlib_
This header should be <#include=>include>d into any source file you want to use the <MallocDbug=>MallocDbug_h> facilities. It must be included after all other header files and defines the following macros:

\#define <malloc> <mallocdbug>
\#define <free> <freedbug>
\#define <StrSave> <strsavedbug>

It has no effect if the macro {*}_DEBUG{*} is not defined.

See also <TimsLib:MallocDbug.h=>MallocDbug> and <TimsLib:Lib.h=>Lib>.DATAl#endif
This directive marks the end of a <#if=>if_>, <#ifdef=>ifdef> or <#ifndef=>ifndef> construct.DATA�TimsLib:Env.h
#Parent ro_tlib_
This header provides facilities for handling environment variables.

Function:

{align centre}<Env_ReadVarVal>DIR$00@1F����T&QReadVarValDATAQEnv_ReadVarVal
Syntax:	<BOOL> Env_ReadVarVal (char *variable, char *buf, int bufsize);
Header:	<TimsLib:Env.h=>Env>

Returns:	<TRUE> if successful.

This function reads the value of the environment variable whose name is given in /variable/ and places it in /buf/. /bufsize/ is size of /buf/. <OS_ReadVarVal> does the same thing.DATA�EOF
#Parent stdio
The macro EOF is defined in <stdio.h=>stdio> as a negative value returned by some I/O functions indicating an end-of-file condition. In Easy C (and every other C implementation I have seen!) it is defined as (-1).DATA�ERANGE
The macro ERANGE is defined in <errno.h=>errno_h> as an integer value which can be stored in <errno> to indicate that the results of a function are too big to be stored in the return variable. In Easy C it is defined as 2.DATA"TimsLib:Err.h
This header provides facilities for catching errors.

Functions:

#Indent 8
#Table 1 15
<Err_Check>
<Err_Complain>
#EndTable
#indent 0

The format of reported errors is:

{fCode}Filename.Linenumber:Error message{f}

This allows you to find the source of errors easily.DIR$PP�5F���U&Check�7F����#U&"ComplainDATAErr_Check
Syntax:	<BOOL> Err_Check (<os_error> *error);
Header:	<TimsLib:Err.h=>Err>

Returns:	<TRUE> if 'error' is not <NULL>.

This function-like macro will call <Err_Complain> with the current source file and line. It is intended that it will be used to encapsulate error returning functions as follows:

{fCode;align centre}failed=Err_Check(<os_cli>("Load Blob"));{f;align}

If {*}os_cli{*} returns an error then it will be reported and /failed/ will equal TRUE, else /failed/ will equal <FALSE> and no action is taken.DATA"Err_Complain
Syntax:	<BOOL> Err_Complain (char *filename, int line, <os_error> *error);
Header:	<TimsLib:Err.h=>Err>

Returns:	<TRUE> if /error/ is not <NULL>.

This function will report the error if /error/ is not <NULL>. It is intended to be called by using the macro <Err_Check>.DIR$,,L9F���bI�"�!RootDATA�Error Handling Functions
#Parent stdio
These functions handle file errors.

#Table 2 18
<clearerr>
<feof>
<ferror>
<perror>
#EndTableDATA�errno
The variable errno is declared in <errno.h=>errno_h>. It is a variable which is used to store error codes which some ANSI C functions return, eg those in <math.h=>math>.DIR$((�:F���?z�"�hDATA�errno.h
The \<errno.h\> header declares one variable and defines three macros, all of which are used for reporting and interpreting errors.

Macros:

#Indent 5
#Table lines 1
<EDOM>
<ERANGE>
<ESIGNUM>
#EndTable

#Indent 0
Variable:

     <errno>
DATA�ERROR
The macro ERROR is defined in <DeskLib:Core.h=>Core> as a value representing the state that an error exists. It is actually defined as 1.DIR$HH�=F����+�$Check�?F���H�$�CheckFatal�AF����~B&�flagspEF���w��$�h`GF���}T�$cOutOfMemory�HF���m�$�Report\JF�����$�ReportFatalKF���#��$]ReportInternaltLF�����$�ReportFatalInternalDATAError_Check
Syntax:	<BOOL> Error_Check (<os_error> *err);
Header:	<DeskLib:Error.h=>Error_h>

Returns:	<TRUE> if /err/ !=�<NULL>

This function will call <Error_Report>, if /err/ is not *NULL*. It is intended that it will be used to encapsulate error returning functions as follows:
{wrap off}
{fCode;align centre}failed=Error_Check(<os_cli>("Load Blob"));{f;align;wrap}

If {*}os_cli{*} returns an error then it will be reported and /failed/ will equal {*}TRUE{*}, else /failed/ will equal <FALSE> and no action is taken.DATA�Error_CheckFatal
Syntax:	void Error_CheckFatal (<os_error> *err);
Header:	<DeskLib:Error.h=>Error_h>

This function will call <Error_ReportFatal>, if /err/ is not <NULL>. It is intended that it will be used to encapsulate error returning functions as follows:
{wrap off}
{fCode;align centre}Error_CheckFatal(<os_cli>("Load Blob"));{f;align;wrap}

If {*}os_cli{*} returns an error then it will be reported and the program will exit, else no action will be taken.DATA�error_flags
This type is defined in <DeskLib:Wimp.h=>Wimp>. It contains the flags needed by <Wimp_ReportError>, both as a value and as individual bits for easy setting. It is defined as the following union:

  \{
    unsigned int value;
    struct
    \{
      unsigned int ok	: 1;
      unsigned int cancel	: 1;
      unsigned int highlightcancel	: 1;
      unsigned int noprompt	: 1;
      unsigned int noprefix	: 1;
      unsigned int nowait	: 1;
      unsigned int closebox	: 1;
    } data;
  }
{tab}
�	/ok/ and /cancel/ mean provide an OK/Cancel box respectively.
�	/noprompt/ means that "Press SPACE or click mouse to continue" will not appear.
�	/noprefix/ means that the title bar will not contain "Error from".
�	/nowait/ means that the function will return and leave the window open.
�	/closebox/ means that one of the boxes will be selected ({/}ok{/} or {/}cancel{/}) and the window closed.

Bit 7, which is not provided as a separate variable, silences any beep (RISC OS 3 only).DATA�Error.h
Version: 1.054 (13 Jul 1993)
#line
The {*}Error.h{*} header defines a number of function for reporting errors. These functions are not included in the DeskLib library, but are present in a separate object file. This is so you can change their action without changing the call used to invoke them.

Functions:

#indent 2
#Table 4 27
<Error_ReportInternal>
<Error_ReportFatalInternal>
<Error_Report>
<Error_ReportFatal>
<Error_Check>
<Error_CheckFatal>
<Error_OutOfMemory>
#EndTableDATAcError_OutOfMemory
Syntax:	<BOOL> Error_OutOfMemory (BOOL fatal, char *place);
Header:	<DeskLib:Error.h=>Error_h>

Returns:	0 (== <FALSE> == <NULL>).

This function reports a memory error (ie "Unable to claim enough memory for XXX"), where XXX is the place given. If /fatal/ is <TRUE>, then <Error_ReportFatal> is used, else <Error_Report> is used.DATA�Error_Report
Syntax:	void Error_Report (int errno, char *report, ...);
Header:	<DeskLib:Error.h=>Error_h>

This function reports an error to the user, under control of the <format string=>pform_>, /report/. The error number is given in /errno/. The default implementation calls <Wimp_ReportError=>SWI:Wimp_ReportError>, but you can change {*}Error.c{*} and recompile to provide any action you want.DATA�Error_ReportFatal
Syntax:	void Error_ReportFatal (int errno, char *report, ...);
Header:	<DeskLib:Error.h=>Error_h>

This function calls <Error_Report>, and then calls <exit>.DATA]Error_ReportInternal
Syntax:	void Error_ReportInternal (int errno, char *report, ...);
Header:	<DeskLib:Error.h=>Error_h>

This function is identical to <Error_Report>, except it is used for most errors reported by DeskLib. You should use Error_Report. This call exists so you can treat internal errors differently by changing {*}Error.c{*}.DATA�Error_ReportFatalInternal
Syntax:	void Error_ReportFatalInternal (int errno, char *report, ...);
Header:	<DeskLib:Error.h=>Error_h>

This function calls <Error_ReportInternal>, and then calls <exit>.DATA�ESIGNUM
The macro ESIGNUM is defined in <errno.h=>errno_h> as an integer value which can be stored in <errno> to indicate that an unrecognised signal has been caught by the default signal handler. In Easy C it is defined as 3.DATAKDeskLib:Event.h
Version: 1.01 (14 Jul 1993)
#line
This header declares high-level functions for very easy handling of Wimp events.

Functions:

#Indent 10
#Table 4 21
<Event_Initialise>
<Event_Initialise3>
<Event_Claim>
<Event_Release>
<Event_ReleaseWindow>
<Event_Process>
<Event_Poll>
<Event_CloseDown>
#EndTable
#Indent 0

Type:

{align centre}<event_handler>{align}

Variables:

#Indent 10
#Table 3 21
<event_mask>
<event_taskhandle>
<event_wimpversion>
<event_taskname>
<event_lastevent>
#EndTable
#Indent 0

Event polls the Wimp for you, then passes the resulting event to one or more of your handler routines, until you indicate that you have processed the event. You do not need to worry about checking values returned by Wimp_Poll, or masking out unwanted events. Default handlers are provided in <DeskLib:Handler.h=>Handler>.DIR$((�UF����RG#�anywindows4VF����`G#�attachmenu4XF���%zG#'attachmenumaker\ZF���v�$%?Claim�]F�����G#�clear_current_menuD^F����$%�CloseDown�^F�����H&�data�`F���J�G#�getmasktaF����MG#�hcF�����$%MhandlerTdF����N$%InitialiseleF����[$%2Initialise3�gF����G#�is_menu_being_recreated0hF����$%�lastevent�hF�����$%�mask�iF�����G#(menu_maker�jF�����G#hmenu_proclF�����$%Poll4mF�����H&�pollblocknF����\H&�pollmask�rF���5�$%�Process$tF���ŖG#;process_`uF�����$%HRelease�vF�����$%�ReleaseWindow�wF���.�G#�setmask�xF����$%}tasknameyF����AH&�type�{F���S�G#wX|F���"�$%�wimpversion}F�����$%�taskhandleDATA�event_anywindows
Syntax:	<BOOL> event_anywindows (void);
Header:	<event.h=>event_h>

Returns:	<TRUE> if there are any active windows.DATA�event_attachmenu
Syntax:	<BOOL> event_attachmenu (<event_w> win, <menu> m, <event_menu_proc> fn, void *hnd);
Header:	<event.h=>event_h>

Returns:	<TRUE> if successful.

This function attaches a menu /m/ and its associated handler function /fn/ to a window /win/. When the user invokes a menu from the given window, this menu will be activated. The handler function will be called when the user selects a menu entry. A call with {/}m==0{/} removes the attachment. /hnd/ is passed direct to the handler.DATA'event_attachmenumaker
Syntax:	<BOOL> event_attachmenumaker (<event_w> win, <event_menu_maker> make, <event_menu_proc> fn, void *hnd);
Header:	<event.h=>event_h>

Returns:	<TRUE> if successful.

This function attaches a menu maker /make/ and its associated handler function /fn/ to a window /win/. When the user invokes a menu from the given window, the menu maker will be activated. The handler function will be called when the user selects a menu entry. A call with {/}make==0{/} removes the attachment. /hnd/ is passed direct to the handler.DATA?Event_Claim
Syntax:	<BOOL> Event_Claim (<event_type> type, <window_handle> win, <icon_handle> icon, <event_handler> handler, void *ref);
Header:	<DeskLib:Event.h=>Event>

Returns:	TRUE if successful.

This function attaches an event handler to a particular event /type/, window /win/, and icon /icon/. Any of these can be {*}event_ANY{*} to be non-specific. /handler/ is your handler function, /ref/ is passed direct to the handler if it is called and can be anything you like.

Events are prioritised, with the most specific events being called first - so you can have a general routine handling all icon clicks, and then several ones for specific icons, which will be called first if those icons are clicked.

Note that Null_Reason_Code events will not be processed unless you specifically attach a handler to that event.DATA�event_clear_current_menu
Syntax:	void event_clear_current_menu (void);
Header:	<event.h=>event_h>

This function clears the current menu tree from the screen.DATA�Event_CloseDown
Syntax:	void Event_CloseDown (void);
Header:	<DeskLib:Event.h=>Event>

This function closes down (quits) the application and the Event system.DATA�event_data
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is a union containing the data returned by <Wimp_Poll>.

  \{
    <caret_block>	caret;
    <key_block>		key;
    <pollword_block>	pollword;
    <window_openblock>	openblock;
    <message_block>	message;
    <mouse_block>	mouse;
    <wimp_box>		screenrect;
    int			selection[10];
    <scroll_rq>		scroll;
    char		bytes[256];
    int			words[64];
  }DATA�event_getmask
Syntax:	<wimp_emask> event_getmask (void);
Header:	<event.h=>event_h>

Returns:	The mask currently being used.

This function gets the mask used by <wimp_poll> and <wimpt_poll> when polling the Wimp.DATA�event.h
This header declares functions for system-independent central processing of window system events.

Functions:
{indent 12}
<event_anywindows>
<event_attachmenu>
<event_attachmenumaker>
<event_clear_current_menu>
<event_getmask>
<event_is_menu_being_recreated>
<event_process=>event_process_>
<event_setmask>
{indent}
Types:
{indent 12}
<event_w>
<event_menu_proc>
<event_menu_maker>DATAMevent_handler
This type is defined <DeskLib:Event.h=>Event>. It is a function which may be used to process events claimed using <Event_Claim>. The function has the form:
{wrap off}
{fCode;align centre}<BOOL> *myfunc (event_pollblock *, void *);{f;align}
{wrap}
And should return <TRUE> if it processes the event passed to it.DATAEvent_Initialise
Syntax:	void Event_Initialise (char *name);
Header:	<DeskLib:Event.h=>Event>

This function initialises the Wimp and the Event system. /name/ should point to your task name. For RISC OS 3 only applications, <Event_Initialise3> should be called instead.DATA2Event_Initialise3
Syntax:	void Event_Initialise3 (char *name, int version, int *messages);
Header:	<DeskLib:Event.h=>Event>

This function initialises the Wimp and the Event system. /name/ should point to your task name, /version/ to the Wimp version number wanted * 100, and /messages/ to a list of user message numbers terminated by 0. Only these messages will be returned to your task. For all versions but 300, messages can be <NULL>, in which case you will receive all messages.

The function should only be used on RISC OS 3, with /version/ >= 300.DATA�event_is_menu_being_recreated
Syntax:	<BOOL> event_is_menu_being_recreated (void);
Header:	<event.h=>event_h>

Returns:	<TRUE> if it is.DATA�event_lastevent
This variable is defined in <DeskLib:Event.h=>Event>. It is an <event_pollblock> containing the last Wimp event received by the Event system.DATA�event_mask
This variable is defined in <DeskLib:Event.h=>Event>. It is used to hold the mask which the Event system used for <Wimp_Poll>. It is of type <event_pollmask>.DATA(event_menu_maker
This type is defined in <event.h=>event_h>. It is a function called when the user wants a menu creating. The function is of the form:
{wrap off}
{fCode;align centre}<menu> myfunc (void *handle);{f;align;wrap}

The function should create a menu and return its menu handle.DATAhevent_menu_proc
This type is defined in <event.h=>event_h>. It is a function called when the user selects a menu entry. The function is of the form:
{wrap off}
{fCode;align centre}void myfunc (void *handle, char *hit);{f;align}
{wrap}
/hit/ is a string containing a character for each level of nesting in a hierarchical menu structure, terminated by 0.DATAEvent_Poll
Syntax:	void Event_Poll (void);
Header:	<DeskLib:Event.h=>Event>

This function should be called repeatedly once your task is fully initialised. It calls <Wimp_Poll> and then <Event_Process> for you. Use as in:

{fCode;align centre}while (<TRUE>) Event_Poll();DATA�event_pollblock
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is a structure containing both the reason code and data returned by <Wimp_Poll>.

  \{
    <event_type>	type;
    <event_data>	data;
  }DATA�event_pollmask
This is a union defined by <DeskLib:Wimp.h=>Wimp> used for masking out certain reason codes when calling <Wimp_Poll>. It allows access to the mask as individual bits and as a value.

  \{
    unsigned int value;
    struct
    \{
      unsigned int null	: 1;
      unsigned int redraw	: 1;
      unsigned int open	: 1;
      unsigned int close	: 1;
      unsigned int ptrleave	: 1;
      unsigned int ptrenter	: 1;
      unsigned int click	: 1;
      unsigned int userdrag	: 1;
      unsigned int key	: 1;
      unsigned int menu	: 1;
      unsigned int scroll	: 1;
      unsigned int losecaret	: 1;
      unsigned int gaincaret	: 1;
      unsigned int nonzeropollword	: 1;
      unsigned int dummy14	: 1;
      unsigned int dummy15	: 1;
      unsigned int dummy16	: 1;
      unsigned int usermessage	: 1;
      unsigned int usermessagerecorded	: 1;
      unsigned int usermessageack	: 1;
      unsigned int dummy20	: 1;
      unsigned int dummy21	: 1;
      unsigned int r3ispollwordptr	: 1;
      unsigned int highprioritypoll	: 1;
      unsigned int keepfpregisters	: 1;
    } data;
  }

To mask out an event set the corresponding bit.DATA�Event_Process
Syntax:	void Event_Process (<event_pollblock> *event);
Header:	<DeskLib:Event.h=>Event>

This function processes an event, whose data is in /event/. It offers in turn to the handlers currently attached, until one of them returns <TRUE>. Note that <Event_Poll> calls <Wimp_Poll> and Event_Process automatically.

See also the Desktop C function, <event_process=>event_process_>.DATA;event_process
Syntax:	void event_process (void);
Header:	<event.h=>event_h>

This function processes one event. If the number of current active windows is 0 then the program exits. One event is polled and processed (ie passed on to the <win> module). Typically this is called in a loop in the main function.DATAHEvent_Release
Syntax:	<BOOL> Event_Release (<event_type> type, <window_handle> win, <icon_handle> icon, <event_handler> handler, void *ref);
Header:	<DeskLib:Event.h=>Event>

Returns:	<TRUE> if successful.

This function releases an event handler. You should call this with the same parameters as used for <Event_Claim>.DATA�Event_ReleaseWindow
Syntax:	void Event_ReleaseWindow (<window_handle> win);
Header:	<DeskLib:Event.h=>Event>

This function releases all handlers attached to a specific window. Note that this is done automatically by <Window_Delete>.DATA�event_setmask
Syntax:	void event_setmask (<wimp_emask> mask);
Header:	<event.h=>event_h>

This function sets the mask used by <wimp_poll> and <wimpt_poll> when polling the Wimp. The default is to ignore null events only.DATA}event_taskname
This variable is defined in <DeskLib:Event.h=>Event>. It is a string containing your application name.DATA�event_type
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is an enumerated type giving the reason codes returned by <Wimp_Poll>.

  \{
    event_ANY	= -99,  
    event_NULL	= 0,
    event_REDRAW,
    event_OPEN,
    event_CLOSE,
    event_PTRLEAVE,
    event_PTRENTER,
    event_CLICK	= 6,
    event_BUTTON	= 6,
    event_USERDRAG,
    event_KEY,
    event_MENU,
    event_SCROLL,
    event_LOSECARET,
    event_GAINCARET,
    event_NONZEROPOLLWORD,
    event_USERMESSAGE	= 17,
    event_SEND	= 17,
    event_USERMESSAGERECORDED	= 18,
    event_SENDWANTACK	= 18,
    event_USERMESSAGEACK	= 19,
    event_ACK	= 19
  }

{*}event_ANY{*} is used by some DeskLib functions to indicate matching any event/window/icon etc.DATAevent_w
This type is defined in <event.h=>event_h>. It is a type containing a window handle and is defined as an /int/.DATA�event_wimpversion
This variable is defined in <DeskLib:Event.h=>Event>. It is used to hold the current Wimp version multiplied by 100 eg 311 for RISC OS 3.11.DATA�event_taskhandle
This variable is defined in <DeskLib:Event.h=>Event>. It
is used to hold the task handle of your
application.DATA}DeskLib:EventMsg.h
Version: 1.00 (16 Mar 1992)
#line
This header is an add-on for <DeskLib:Event.h=>Event>. It adds functions to provide a better way of handling <User Messages=>SWI:wimp_sendmessage.1> (reason codes 17-19).

Functions:

#table columns 2
<EventMsg_Initialise>
<EventMsg_Claim>
<EventMsg_Release>
<EventMsg_ReleaseWindow >
<EventMsg_ReleaseMessage>
#endtableDIR$���F����6%%)Claim�F���'%%�Initialise��F���#L%%�Release,�F���t^%%ReleaseMessageH�F���V%%ReleaseWindowDATA)EventMsg_Claim
Syntax:	<BOOL> EventMsg_Claim (<message_action> type, <window_handle> win, <event_handler> handler, void *ref);
Header:	<DeskLib:EventMsg.h=>EventMsg>

Returns:	<TRUE> if successful.

This function attaches an message handler to a particular message /type/ and window /win/. Either of these can be {*}event_ANY{*} to be non- specific. /handler/ is your handler function, /ref/ is passed direct to the handler if it is called and can be anything you like.

Evens are prioritised, with those for specific windows being called first.DATA�EventMsg_Initialise
Syntax:	void EventMsg_Initialise (void);
Header:	<DeskLib:EventMsg.h=>EventMsg>

This function initialises the EventMsg system.DATA�EventMsg_Release
Syntax:	<BOOL> EventMsg_Release (<message_action> type, <window_handle> win, <event_handler> handler);
Header:	<DeskLib:EventMsg.h=>EventMsg>

Returns:	<TRUE> if successful.

This function releases a message handler. If /type/ is {*}event_ANY{*} then only non-message-specific handlers may be released. If /win/ is {*}event_ANY{*} then only non-window-specific handlers may be released.DATAEventMsg_ReleaseMessage
Syntax:	int EventMsg_ReleaseMessage (<message_action> type);
Header:	<DeskLib:EventMsg.h=>EventMsg>

This function releases all message handlers for the given message. If /type/ is {*}event_ANY{*} then all non-message-specific handlers are released.DATAEventMsg_ReleaseWindow
Syntax:	int EventMsg_ReleaseWindow (<window_handle> win);
Header:	<DeskLib:EventMsg.h=>EventMsg>

This function releases all message handlers for the given window. If /win/ is {*}event_ANY{*} then all non-window-specific handlers are released.DATA�exit
Syntax:	void exit (int status);
Header:	<stdlib.h=>stdlib>

This function causes the program to terminate normally, returning status to the host environment. Status should be zero (<EXIT_SUCCESS>), or <EXIT_FAILURE>. This is what the function does:
{tab}
�	Calls functions registered with <atexit>, in reverse order of registration (last first).
�	Flushes and closes all open streams.
�	Removes all files created with <tmpfile>.
�	Returns to the host environment.DIR$LL��F������"FAILURE��F������"
SUCCESSDATAEXIT_FAILURE
The macro {/}EXIT_FAILURE{/} is defined in <stdlib.h=>stdlib> as a value which may be passed to the <exit> function to indicate that the program has been unsuccessful. In Easy C (and every other C compiler I have used) it is actually defined as 1.DATA
EXIT_SUCCESS
The macro {/}EXIT_SUCCESS{/} is defined in <stdlib.h=>stdlib> as a value which may be passed to the <exit> function to indicate that the program has been successful. In Easy C (and every other C compiler I have used) it is actually defined as 0.DATA�exp
Syntax:	double exp (double x);
Header:	<math.h=>math>

Returns:	The exponential of x.

This function returns e to the power of x, where e = exp(1) = 2.71828183� . An error occurs if x is too big.DATAYEXPORT <label>
This allows one of your labels to be <IMPORT>ed into another file.DIR$����F����Z�"�fabs��F������$�FALSEX�F������"�fclose�F���hQ�"�feof��F���#U�"�ferrorX�F������"gfflush��F����b�"�fgetc��F����"Zfgetpos�F���Xq�"�fgets��F���9��"#FILE�F�����/file_��F���o��/,filehnd_��F�����G#1fileicon��F������/(FileIcon_X�F���Ԉ�/(FILENAME_��F������/,fileop_`�F�����/,FilerAction_��F���^�'%	FILETYPE��F���M��/,filetype_8�F�����(%EFilter��F������/�Filter_$�F����H#pflex��F��� ��/0flex_�F���<��"'float<�F���ox�"�floor��F������/lFLT_�F���*�"+fmodH�F����*)%�Font@�F�����/@font_[F����~�$fontlist$\F���Đ�/�fontlist_PmF���U�'# fontrecpnF�����$�fontselectpF���_��/@fontselect_�yF������"#fopen�zF���'��/(FOPEN_�{F���w.�")for�F���`��/,formio_�F������/(fpos_�F�����'%}fprintfd�F���Xz�"�fputc(�F���6��"�fputs�F����6�"3freadL�F���j
�"�free(�F�����V&~FreeDbug��F�����$freeprocĉF�����"�freopent�F�����"Ffrexp��F����"�fscanf��F����-�"fseek��F���?�"dfsetpos�F����G�"�ftell��F����/1*fwriteDATA�fabs
Syntax:	double fabs (double x);
Header:	<math.h=>math>

Returns:	The absolute value of x.

This function returns the absolute value of x ie the magnitude of x. This is always positive, so if x = -5.3 then fabs(x) = 5.3.DATA�FALSE
The macro FALSE is defined in <DeskLib:Core.h=>Core> <TimsLib:Core.h=>Core_TL> and <os.h=>os> (Easy C) as a value representing the logical state of False. It is actually defined as 0.DATA�fclose
Syntax:	int fclose (<FILE> *stream);
Header:	<stdio.h=>stdio>

Returns:	Zero if the file is closed, <EOF> if it is not.

This function closes the file stream pointed to by /stream/. The stream is now invalid. Any data currently buffered to be written out will be written out before closure. If the buffer was allocated automatically (the usual case), the memory will be released.DATA�feof
Syntax:	int feof (FILE *stream);
Header:	<stdio.h=>stdio>

Returns:	Zero if not at end-of-file.

This functions tests to see if the end of the specified file stream has been reached.DATA�ferror
Syntax:	int ferror (FILE *stream);
Header:	<stdio.h=>stdio>

Returns:	Zero if there is no error.

This function tests the error flag for the specified stream.DATAgfflush
Syntax:	int fflush (<FILE> *stream);
Header:	<stdio.h=>stdio>

Returns:	<EOF> if any data is written out, or zero if not.

This function causes any buffered output data to be written to the file pointed to by /stream/, but only if the last operation on the file was not input. If /stream/ is a null pointer, flushing occurs on all open streams.DATA�fgetc
Syntax:	int fgetc (<FILE> *stream);
Header:	<stdio.h=>stdio>

Returns:	Character read, or <EOF> for an error.

This function reads a single character from the stream pointed to by /stream/ and returns it as an /int/.DATAZfgetpos
Syntax:	int fgetpos (<FILE> *stream, <fpos_t> *pos);
Header:	<stdio.h=>stdio>

Returns:	Zero if successful.

This function stores the file pointer, for the file pointed to by /stream/, in /pos/. The value stored is not in any specific format (so don't try to use it, folks!). If there is an error, the reason is stored in <errno>.DATA�fgets
Syntax:	char *fgets (char *str, int n, <FILE> *stream);
Header:	<stdio.h=>stdio>

Returns:	Pointer to string read, or a null pointer if there is an error.

This function reads a string of characters from the stream into the character array pointed to by /str/. A maximum of (n-1) characters will be read and in any case reading will terminate at a newline character or end-of-file.

If there is an error, a null pointer will be returned but the array contents may still have changed.DATA#FILE
The type {/}FILE{/} is defined in <stdio.h=>stdio> as an object holding all necessary information about an open file. In Easy C it is defined as the following structure:

\{
    unsigned char *_ptr;
    int _icnt;
    int _ocnt;
    int _flag;
    int :32,:32,:32,:32,:32,:32;
}DIR$ �F�����%%^access��F����&%IClose̤F���A�%%aDelete0�F����&%�EOF�F�����%%Exists�F���]�&%�GetLength��F���Ҩ&%�GetType��F�����'%kh�F�����%%�handlex�F����3'%�IsDirectory0�F���:�%%wlasterror��F���7F'%TLoadTo��F���p7�"�mode_ܵF����&%qOpenP�F�����%%�position�F����g&%�Read32��F����}&%6Read32R�F���pP&%�Read8��F���J6&%<ReadBytes��F���s�%%�READERROR��F���&'&%jReturnPos��F����&%�Seek��F�����&%SetType�F�����%%ISize\�F���#7U&ZTL��F����[&%nWrite32(�F���|�&%WWrite32R��F���LA&%UWrite8��F���/&%HWriteBytes �F���|'%�Date�F���g�'%�printfDATA^file_access
The type {*}file_access{*} is defined in <DeskLib:File.h=>File_h> as an enumerated type which defines the mode in which a file should be opened. The possible values are file_READ, file_WRITE, or file_APPEND; they are defined as follows:

    \{
        file_READ	= 0x40,
        file_WRITE	= 0x80,
        file_APPEND	= 0xC0
    }DATAIFile_Close
Syntax:	<os_error> *File_Close (<file_handle> hnd);
Header:	<DeskLib:File.h=>File_h>

Returns:	Pointer to error, or <NULL> if none.

This function closes the file stream whose handle is given in /hnd/. The stream is now invalid. Any data currently buffered to be written out will be written out before closure.DATAaFile_Delete
Syntax:	<os_error> *File_Delete (char *filename);
Header:	<DeskLib:File.h=>File_h>

Returns:	Pointer to error, or <NULL> if none.

This function attempts to remove the file whose name is contained in /filename/. This is equivalent to *Delete or <OS_File 6=>SWI:os_file6>. If the file is open, the function will almost certainly fail.DATA�File_EOF
Syntax:	<BOOL> File_EOF (<file_handle> hnd);
Header:	<DeskLib:File.h=>File_h>

Returns:	<TRUE> if at end-of-file.

This function tests to see if the end of the specified file stream has been reached.DATAFile_Exists
Syntax:	<BOOL> File_Exists (char *filename);
Header:	<DeskLib:File.h=>File_h>

Returns:	<TRUE> if the file exists.

This function checks if the file whose filename is given exists. It does this by attempting to open the file for reading.DATA�File_GetLength
Syntax:	<os_error> *File_GetLength (char *filename, int *size_ptr);
Headers:	<TimsLib:File.h=>File_TL>
	<DeskLib:File.h=>File_h>

Returns:	Pointer to error, or <NULL> if none.

This function reads the length of the file /filename/ in bytes and returns it in {/}*size_ptr{/}. It is actually defined as a function-like macro calling SWI <OS_File 5=>SWI:os_file5>.DATA�File_GetType
Syntax:	int File_GetType (char *filename);
Header:	<TimsLib:File.h=>File_TL>
	<DeskLib:File.h=>File_h>

Returns:	File type of file, or -1 for error.

This function reads the <file type=>FileTypes:!Root> of the file /filename/.DATAkDeskLib:File.h
Version: 1.03 (26 Jun 1994)
#line
The {*}File.h{*} header defines a number of functions and types for handling files. These functions are much faster than those in <stdio.h=>stdio>, and use RISC OS file handles.

Functions:

#indent 6
#Table columns 3
<File_Close>
<File_Delete>
<File_EOF>
<File_Exists>
<File_Open>
<File_Read8>
<File_Read32>
<File_Read32R>
<File_ReadBytes>
<File_ReturnPos>
<File_Seek>
<File_Size>
<File_Write8>
<File_Write32>
<File_Write32R>
<File_WriteBytes>
<File_SetType>
<File_GetType>
<File_GetLength>
<File_LoadTo>
<File_IsDirectory>
<File_Date>
<File_printf>
#EndTable

#Indent 0
Macros:

#indent 9
#Table 2 20
<file_READERROR>
<FILETYPE>
<Filetype Macros=>filetype_>
#EndTable
#Indent 0

Types:

#indent 14
#Table 2 20
<file_position>
<file_handle>
<file_access>
#EndTable

#Indent 0
Variable:

{align centre}<file_lasterror>DATA�file_handle
The type file_handle is defined in <DeskLib:File.h=>File_h> as a type capable of holding a handle for an open file.DATA�File_IsDirectory
Syntax:	<BOOL> File_IsDirectory (char *pathname);
Headers:	<TimsLib:File.h=>File_TL>
	<DeskLib:File.h=>File_h>

Returns:	<TRUE> if /pathname/ is a directory.DATAwfile_lasterror
The variable file_lasterror is declared in <DeskLib:File.h=>File_h>. It is of type <os_error> *. It is used to return errors from the following functions:

#table columns 3
<File_Open>    
<File_Read8>    
<File_Write8>    
<File_Seek>  
<File_Close>
<File_Read32>
<File_Write32>
<File_ReturnPos>
<File_EOF>
<File_ReadBytes>
<File_WriteBytes>
#endtableDATATFile_LoadTo
Syntax:	<os_error> *File_LoadTo (char *filename, void *address, int *size);
Header:	<DeskLib:File.h=>File_h>

Returns:	Pointer to error, or <NULL> if none.

This functions loads the file whose filename is given into memory at the address specified. If /size/ is not <NULL>, then the size will be returned in {/}*size{/}.DATA�File Modes
The mode parameter is a string specifying the modes in which the file is to be opened. There are three basic modes as follows:

#indent 2
*r*	File is opened for reading. The file must already exist.
*w*	File is opened for writing. If the file exists then it will be deleted first.
*a*	File is opened for appending. All writing takes place at the end of the file.
#indent

Then there are the two qualifiers, b (binary) and + (update).

#indent 2
*b*	Normally files are opened in �text mode� this means that what you send out may not be what is present in the file. Similarly, what you read may not be what is in the file (CR/LF combinations are converted to LF). What's written out and what's read in will be the same. Binary mode means that what you read/write is exactly what is in the file.
{*}+{*}	This allows the file to be updated (ie read and write allowed).
#indent

The most useful options are probably �wb� for writing, �rb� for reading, and �rb+� for updating.DATAqFile_Open
Syntax:	<file_handle> File_Open (char *filename, <file_access> access);
Header:	<DeskLib:File.h=>File_h>

Returns:	Handle of the file stream, or <NULL>.

This function attempts to open the file specified in /filename/ for random access according to /access/.

If the function fails, it returns NULL and the error can be obtained from <file_lasterror>.DATA�file_position
The type file_position is defined in <DeskLib:File.h=>File_h> as a type suitable for holding a sequential file pointer.DATA�File_Read32
Syntax:	int File_Read32 (<file_handle> hnd);
Header:	<DeskLib:File.h=>File_h>

Returns:	<file_READERROR> if failed.

This function reads a 32-bit value (word/int/long) from the file whose handle is given. If an error occurs, file_READERROR is returned and the error can be obtained from <file_lasterror>. The value is stored with LSB first.

This function can also be called with {*}File_ReadWord{*}, {*}File_ReadInt{*} and {*}File_ReadLong{*}.DATA6File_Read32R
Syntax:	int File_Read32R (<file_handle> hnd);
Header:	<DeskLib:File.h=>File_h>

Returns:	<file_READERROR> if failed.

This function is identical to <File_Read32>, but reads the bytes MSB first. It can also be called with {*}File_ReadWordR{*}, {*}File_ReadIntR{*}, and {*}File_ReadLongR{*}.DATA�File_Read8
Syntax:	int File_Read8 (<file_handle> hnd);
Header:	<DeskLib:File.h=>File_h>

Returns:	<file_READERROR> if failed.

This function reads an 8-bit value (byte/char) from the file whose handle is given in hnd. If an error occurs, file_READERROR is returned and the error can be obtained from <file_lasterror>.

This function can also be called with {*}File_ReadByte{*} and {*}File_ReadChar{*}.DATA<File_ReadBytes
Syntax:	int File_ReadBytes (<file_handle> hnd, void *buffer, int nbytes);
Header:	<DeskLib:File.h=>File_h>

Returns:	Number of bytes NOT successfully read.

This function reads the given number of bytes of data from the file whose handle is given, into the area of memory pointed to by buffer.DATA�file_READERROR
The macro file_READERROR is defined in <DeskLib:File.h=>File_h> as a value indicating that an error has occured. It is returned by several functions. It is actually defined as (-1).DATAjFile_ReturnPos
Syntax:	<file_position> File_ReturnPos (<file_handle> hnd);
Header:	<DeskLib:File.h=>File_h>

Returns:	File pointer for stream.

This function reads the file position indicator for the file whose handle is given in /hnd/. This is the number of characters from the beginning of the file. If an error occurs it is stored in <file_lasterror>.DATA�File_Seek
Syntax:	<os_error> *File_Seek (<file_handle> hnd, <file_position> pos);
Header:	<DeskLib:File.h=>File_h>

Returns:	Pointer to error, or <NULL> if none.

This function sets the file position indicator for the file whose handle is given.DATAFile_SetType
Syntax:	<os_error> *File_SetType (char *filename, int type);
Header:	<TimsLib:File.h=>File_TL>
	<DeskLib:File.h=>File_h>

Returns:	Pointer to error, or <NULL> if none.

This function changes the <file type=>FileTypes:!Root> of the file /filename/ to /type/.DATAIFile_Size
Syntax:	int File_Size (char *filename);
Header:	<DeskLib:File.h=>File>

Returns:	Size of the file.

This function reads the size in bytes of the file whose filename is given. A return value of 0 means that the file is of length 0, or an error occured. If an error occured, it can be found from <file_lasterror>.DATAZTimsLib:File.h
#Parent ro_tlib_
This header is an extension to <DeskLib:File.h=>File_h>.

Functions:

#indent 5
#Table 3 18
<File_SetType>
<File_GetType>
<File_GetLength>
<ReadEntries>
<File_IsDirectory>
#EndTable
#indent 0

Macros:

#indent 5
#Table 1 18
<MAX_PATH_LEN>
<FILETYPE>
#EndTable
#indent 0

Types:

{align centre}<object_info>DATAnFile_Write32
Syntax:	<os_error> *File_Write32 (<file_handle> hnd, int word);
Header:	<DeskLib:File.h=>File_h>

Returns:	Pointer to error, or <NULL> if none.

This function writes a 32-bit value (word/int/long) to the file whose handle is given in hnd.

This function can also be called with {*}File_WriteWord{*}, {*}File_WriteInt{*} and {*}File_WriteLong{*}.DATAWFile_Write32R
Syntax:	<os_error> *File_Write32R (<file_handle> hnd, int word);
Header:	<DeskLib:File.h=>File_h>

Returns:	Pointer to error, or <NULL> if none.

This function is identical to <File_Write32>, but writes the bytes MSB first. It can also be called with {*}File_WriteWordR{*}, {*}File_WriteIntR{*} and {*}File_WriteLongR{*}.DATAUFile_Write8
Syntax:	<os_error> *File_Write8 (<file_handle> hnd, int byte);
Header:	<DeskLib:File.h=>File_h>

Returns:	Pointer to error, or <NULL> if none.

This function writes an 8-bit value (byte/char) to the file whose handle is given in /hnd/.

This function can also be called with {*}File_WriteByte{*} and {*}File_WriteChar{*}.DATAHFile_WriteBytes
Syntax:	<os_error> *File_WriteBytes (<file_handle> handle, void *buffer, int nbytes);
Header:	<DeskLib:File.h=>File_h>

Returns:	Pointer to error, or <NULL> if none.

This function writes the given number of bytes of data into the file whose handle is given, from the area of memory pointed to by buffer.DATA�File_Date
Syntax:	void File_Date (char *filename, char *fivebytedate);
Header:	<DeskLib:File.h=>file_h>

This function reads the datestamp of the file /filename/ into the five byte block pointed to by /fivebytedata/.DATA�File_printf
Syntax:	int File_printf (<file_handle> f, char *format, ...);
Header:	<DeskLib:File.h=>File_h>

Returns:	The number of characters written, or a negative value if there was an error.

This function writes output to the file /f/ under control of the <format string=>pform_>. It is equivalent to <fprintf>() but using a RISC OS file handle.

String must not be longer than 512 characters after substitutions.DIR$,,��F����h�"�!RootDATA�File Handling Functions
#Parent stdio
These functions deal with manipulating random access files.

#Table 4 16
<fclose>
<fflush>
<fopen>
<freopen>
<setbuf>
<setvbuf>
<fgetpos>
<fsetpos>
<fseek>
<ftell>
<rewind>
#EndTableDATA1fileicon.h
This header declares just one function:

Syntax:	void fileicon (<wimp_w> win, <wimp_i> icon, int filetype);

This function changes the given icon to display the file icon for the given filetype, using "file_xxx" for unknown types.

See also the TimsLib function, <FileIcon=>FileIcon_h>.DIR$((�F���dU&>hDATA>TimsLib:FileIcon.h
This header provides just one function:

Syntax:	void FileIcon (<window_handle> win, <icon_handle> icon, int filetype);

This function changes the icon specified (which must be an indirected text-only icon) to an indirected sprite-only icon with a sprite representing the filetype specified.DIR$((��F���t��" MAXDATA FILENAME_MAX
#Parent stdio
The macro FILENAME_MAX is defined in <stdio.h=>stdio> as the length of the longest filename that can be handled by the file I/O functions. It is intended to be used as the subscript for a char array used to hold filenames. In Easy�C it is defined as 80.DIR$,,��F���{��"�!RootDATA�File Operation Functions
#Parent stdio
These functions operate on whole files:

#Table 2 18
<remove>
<rename>
<tmpfile>
<tmpnam>
#EndTableDIR$,,��F���
��"M!RootDATAMFilerAction
SendSelectedDirectory
SendSelectedFile
SendStartOperationDATA	FILETYPE
This is a function-like macro defined in <TimsLib:File.h=>File_TL> and <DeskLib:File.h=>File_h>. It simply returns a filetype from a load address. It is defined as:
{wrap off}
{fCode;align centre}<#define=>define> FILETYPE(x) (((x) & 0xFFF00) >> 8)DIR$,,�F���J�(%#!RootDATA#File types
There are macros defined for many of the common file types in <DeskLib:File.h=>File_h>. The macros are:

filetype_AIM		0x004	filetype_DEVICE		0xFCC
filetype_CLEAR		0x690	filetype_CACHE		0xFCF
filetype_DEGAS		0x691	filetype_PCEMCONF	0xFD0
filetype_IMG		0x692	filetype_DEBIMAGE	0xFD3
filetype_AMIGAIFF	0x693	filetype_TASKEXEC	0xFD6
filetype_MACPAINT	0x694	filetype_TASKOBEY	0xFD7
filetype_GIF		0x695	filetype_MAKEFILE	0xFE1
filetype_PCX		0x697	filetype_DOS		0xFE4
filetype_QRT		0x698	filetype_DESKTOP	0xFEA
filetype_MTV		0x699	filetype_OBEY		0xFEB
filetype_CADSOFT	0x69A	filetype_TEMPLATE	0xFEC
filetype_IRLAM		0x69B	filetype_PALETTE	0xFED
filetype_BMP		0x69C	filetype_TIFF		0xFF0
filetype_TARGA		0x69D	filetype_CONFIG		0xFF2
filetype_PBMPlus	0x69E	filetype_PRINTOUT	0xFF4
filetype_ZVDA		0x69F	filetype_POSCRIPT	0xFF5
filetype_ALARMS		0xAE9	filetype_FONT		0xFF6
filetype_DRAWFILE	0xAFF	filetype_BBCFONT	0xFF7
filetype_BBCROM		0xBBC	filetype_ABSOLUTE	0xFF8
filetype_AUDIOWRK	0xBD6	filetype_SPRITE		0xFF9
filetype_RENDPIC	0xD58	filetype_MODULE		0xFFA
filetype_ARCHIVE	0xDDC	filetype_BASIC		0xFFB
filetype_PROART		0xDE2	filetype_UTILITY	0xFFC
filetype_PICTURE	0xDFA	filetype_DATA		0xFFD
filetype_PRNTDEFN	0xFC6	filetype_COMMAND	0xFFE
filetype_DOSDISC	0xFC8	filetype_TEXT		0xFFF
filetype_SUNRASTR	0xFC9DATAEDeskLib:Filter.h
Version: 1.01 (22 Oct 1994)
#line
This header declares functions for the RISC�OS�3 Filter Manager.

Functions:

#table columns 2
<Filter_RegisterPreFilter>
<Filter_RegisterPostFilter>
<Filter_DeRegisterPreFilter>
<Filter_DeRegisterPostFilter>
#endtable

#indent 0
Type:
{align centre}<filter_handler>DIR$��`�F���)%�DeRegisterPostFilter`�F���k�(%�DeRegisterPreFilter\�F�����(%�handlerH�F����(%�RegisterPostFilter��F�����(%TRegisterPreFilterDATA�Filter_DeRegisterPostFilter
Syntax:	void Filter_DeRegisterPostFilter (char *filtername, <filter_handler> handler, int R12, <task_handle> task);
Header:	<DeskLib:Filter.h=>Filter>

This function removes a post-filter from the list of post-filters.DATA�Filter_DeRegisterPreFilter
Syntax:	void Filter_DeRegisterPreFilter (char *filtername, <filter_handler> handler, int R12, <task_handle> task);
Header:	<DeskLib:Filter.h=>Filter>

This function removes a pre-filter from the list of pre-filters.DATA�filter_handler
The type {*}filter_handler{*} is defined by <DeskLib:Filter.h=>Filter> as a function type. Functions should be of the form:
{wrap off}
{fCode;align centre}int myfunc(int event, <event_pollblock> *event, int task);DATA�Filter_RegisterPostFilter
Syntax:	void Filter_RegisterPostFilter (char *filtername, <filter_handler> handler, int R12, <task_handle> task, int eventmask);
Header:	<DeskLib:Filter.h=>Filter>

This function registers a post-filter routine, which will be called whenever the Wimp is about to return from Wimp_Poll to the specified task. If /task/ is zero, then all tasks are affected.DATATFilter_RegisterPreFilter
Syntax:	void Filter_RegisterPreFilter (char *filtername, <filter_handler> handler, int R12, <task_handle> task);
Header:	<DeskLib:Filter.h=>Filter>

This function registers a pre-filter routine, which will be called whenever the specified task polls the Wimp. If /task/ is zero, then all tasks are affected.DATApflex.h
This header provides memory allocation for interactive programs requiring large chunks of store. Such programs must respond to memory full errors.

Functions:

#Indent 5
#Table columns 3
<flex_init>
<flex_alloc>
<flex_free>
<flex_size>
<flex_extend>
<flex_midextend>
<flex_budge>
<flex_dont_budge>
#EndTable

#below;Indent 0
Types:
{indent 5}
<flex_ptr>DIR$00��F���O-H#�alloc`�F����gH#_budge��F����~H#Hdont_budge�F����CH#�extend��F���7:H#�free��F���3#H#�initD�F����[H#Nmidextend��F���3�H#�ptr\�F����=H#�sizeDATA�flex_alloc
Syntax:	int flex_alloc(<flex_ptr> anchor, int n);
Header:	<flex.h=>flex>

Returns:	0 for failure, 1 for success.

This function allocates /n/ bytes of store, obtained from the Wimp free pool and stores its address in the variable pointed to by /anchor/. The allocated store must be accessed through this anchor eg as (*anchor)[0] etc. since the anchor may be altered as memory is moved around.DATA_flex_budge
Syntax:	int flex_budge (int n, void **a);
Header:	<flex.h=>flex>

Returns:	Amount of store acquired.

This function is not to be called directly. It should be registered using the function <_kernel_register_slotextend>. It will allow the flex store to be moved if more heap storage is needed. The default state is <flex_dont_budge>.DATAHflex_dont_budge
Syntax:	int flex_dont_budge (int n, void **a);
Header:	<flex.h=>flex>

Returns:	0

This function is not to be called directly. It should be registered using the function <_kernel_register_slotextend>. It will not allow the flex store to be moved if more heap storage is needed. This is the default state.DATA�flex_extend
Syntax:	int flex_extend (<flex_ptr> anchor, int newsize);
Header:	<flex.h=>flex>

Returns:	0 for failed, 1 for OK.

This function alters the size of the memory block, whose anchor is given, to /newsize/ bytes.DATA�flex_free
Syntax:	void flex_free (<flex_ptr> anchor);
Header:	<flex.h=>flex>

This function frees the memory whose anchor is given. {/}*anchor{/} will be set to 0.DATA�flex_init
Syntax:	void flex_init (void);
Header:	<flex.h=>flex>

This function initialises the flex store. It must be called before any other flex functions.DATANflex_midextend
Syntax:	int flex_midextend (<flex_ptr> anchor, int at, int by);
Header:	<flex.h=>flex>

Returns:	0 for failed, 1 for OK.

This function alters the size of the memory block whose anchor is given. If /by/ is positive then /by/ bytes are inserted at offset /at/, else {/}-by{/} bytes are deleted below offset /at/.DATA�flex_ptr
This type is defined in <flex.h=>flex> as a type capable of holding a pointer to a pointer to a block of memory allocated by <flex_alloc>. It is actually defined as a {/}void **{/}.DATA�flex_size
Syntax:	int flex_size (<flex_ptr> anchor);
Header:	<flex.h=>flex>

Returns:	Size in bytes,

This function finds the size of the memory block whose anchor is given.DATA'float.h
The \<float.h> header declares many macros which give information about the limits of floating point variables.

#Table 10 16
<FLT_ROUNDS>
<FLT_RADIX>
<FLT_MANT_DIG>
<DBL_MANT_DIG>
<LDBL_MANT_DIG>   
<FLT_DIG>
<DBL_DIG>
<LDBL_DIG>
<FLT_MIN_EXP>
<DBL_MIN_EXP>
<LDBL_MIN_EXP>
<FLT_MIN_10_EXP>
<DBL_MIN_10_EXP>
<LDBL_MIN_10_EXP>
<FLT_MAX_EXP>
<DBL_MAX_EXP>
<LDBL_MAX_EXP>
<FLT_MAX_10_EXP>
<DBL_MAX_10_EXP>
<LDBL_MAX_10_EXP>
<FLT_MAX>
<DBL_MAX>
<LDBL_MAX>
<FLT_EPSILON>
<DBL_EPSILON>
<LDBL_EPSILON>
<FLT_MIN>
<DBL_MIN>
<LDBL_MIN>
#EndTableDATA�floor
Syntax:	double �oor (double x);
Header:	<math.h=>math>

Returns:	The smallest integer equal to or less than x.

This function calculates the ��oor� of the given value. This is the smallest integer not greater than x. Basically, if x is an integer value then the function returns x, otherwise it returns the next lowest integer. Note that the result is returned as a double, even though it is an integer value.DIR$llP�F�����":DIG��F���"��">EPSILON��F���:��"�MANT_DIGX�F����ļ"�MAX��F���s��"�MAX_10_EXPx�F���:��"�MAX_EXP��F���gԼ"�MIN��F���:��"�MIN_10_EXP�F���J��"�MIN_EXP��F������"<RADIX�F������"=ROUNDSDATA:FLT_DIG
This macro is defined in <float.h=>float>.DATA>FLT_EPSILON
This macro is defined in <float.h=>float>.DATA�FLT_MANT_DIG
This macro is defined in <float.h=>float>. It gives the number of digits in the mantissa of a variable of type 'float'.DATA�FLT_MAX
This macro is defined in <float.h=>float>. It gives the maximum positive value that can be stored in a variable of type 'float'.DATA�FLT_MAX_10_EXP
This macro is defined in <float.h=>float>. It gives the maximum base 10 exponent a variable of type 'float' can contain.DATA�FLT_MAX_EXP
This macro is defined in <float.h=>float>. It gives the maximum exponent a variable of type 'float' can contain.DATA�FLT_MIN
This macro is defined in <float.h=>float>. It gives the minimum positive value that can be stored in a variable of type 'float'.DATA�FLT_MIN_10_EXP
This macro is defined in <float.h=>float>. It gives the minimum base 10 exponent a variable of type 'float' can contain.DATA�FLT_MIN_EXP
This macro is defined in <float.h=>float>. It gives the minimum exponent a variable of type 'float' can contain.DATA<FLT_RADIX
This macro is defined in <float.h=>float>.DATA=FLT_ROUNDS
This macro is defined in <float.h=>float>.DATA+fmod
Syntax:	double fmod (double x, double y);
Header:	<math.h=>math>

Returns:	The remainder of x/y.

This function calculates the floating point remainder of x/y. Formally this is defined as x�- (i * y), where i is an integer such that the result has the same sign as x and is less than y.DATA�DeskLib:Font.h
Version: 1.01 (22 May 1992)
#line
This header declares functions and types for calling the Font Manager.

Functions:

#indent 4
#Table 12 22
<Font_CacheAddr>
<Font_Caret>
<Font_CharBBox>
<Font_ConverttoOS>
<Font_Converttopoints>
<Font_CurrentFont>
<Font_FindCaret>
<Font_FindCaretJ>
<Font_FindFont>
<Font_FutureFont>
<Font_ListFonts>
<Font_LoseAllFonts>
<Font_LoseFont>
<Font_Paint>
<Font_ReadDefn>
<Font_ReadInfo>
<Font_ReadScaleFactor>
<Font_ReadThresholds>
<Font_SetFont>
<Font_SetFontColours>
<Font_SetPalette>
<Font_SetThresholds>
<Font_StringBBox>
<Font_StringWidth>
#EndTable
#indent

Types:

#indent 5
#Table columns 3
<font_handle>
<font_defn>
<font_info>
<font_string>
<font_colours>
<font_state>
<font_thresholds>
#EndTableDIR$@@�F�����$|!Root�F����լ$�_tree�F���"�Z$�ABSLF����j�$�action_on_bitmap�F�����H&:array$F�����$_BlueGun�F���G)%�CacheAddr	F���g�H#�cacheaddress�
F����H#�CaretLF����I#8CharBBox�F���c2*%�colours$F���,I#�ConverttoOSF���Z?I#Converttopoints F����HI#�current�F����Q)%�CurrentFont�F����"�$defF����+*%HdefnPF����YI#�findPF����sI#�FindCaret�F���@�I#gFindCaretJDF����c)%�FindFont<F���8�I#futureL F����k)%!FutureFontp!F����
�$aGreenGun�!F�����H#gh<%F���r"*%�handle�%F����<�$�info�&F���x�Z$�JUSTIFYX'F���d�I#$list|)F�����)%4ListFonts�+F���ϯI#�lose�,F�����)%�LoseAllFonts�-F�����)%�LoseFontt.F���u�Z$�OSCOORDS,/F�����I#�output_size0F���	�I#�output_to_buffer2F����;Y$youtput_to_null|4F��� EY$�output_to_screend5F���.y�+}Paint�8F����Y$readdef�:F���5�)%�ReadDefn�=F����Y$ReadInfo�?F���+�Y$^ReadScaleFactorAF���'�Y$lReadThresholdsxBF�����$]RedGun�BF���w�Z$�RUBOUT�CF����Y$1setcolour�EF����Z$WSetFontGF����)%LSetFontColoursdIF���J&Z$�SetPalette�KF���,AZ$�setscalefactor�LF����LZ$YSetThresholds4NF���9\�$�state�OF���"G�$-string(QF���x]Z$|StringBBox�RF����*%�StringWidth�UF���2~Z$�strwidthDXF����e�$�threshold�XF����7*%�thresholds�YF����hU&sTLDATA|font
This type is defined in <font.h=>font_h>. It is used to hold a font handle. It is actually defined as an /int/.DATA�font__tree
This variable is declared in <fontlist.h=>fontlist>. It is a pointer to the font tree used by the function <fontlist_list_all_fonts>.DATA�font_ABS
This macro is defined in <font.h=>font_h>. It is the value of the bit used to indicate in the paint options that absolute coordinates are used. It is defined as 0x04.DATA�font_action_on_bitmap
This enumerated type is defined in <font.h=>font_h> as follows:

  \{
    font_CONVERT,
    font_IGNORE,
    font_ERROR
  }DATA:font_array
This type is defined in <DeskLib:Wimp.h=>Wimp> as a type holding a font array used when loading templates. It is defined as the following structure:

  \{
    char fonts[256];
  }

The array contains a count, for each font handle (0-255) of how many times it has been found with <Font_FindFont>.DATA_font_BlueGun
The macro {*}font_BlueGun{*} is defined in <font.h=>font_h> as 0x01000000.DATA�Font_CacheAddr
Syntax:	<os_error> *Font_CacheAddr (int *version, int *cacheused, int *cachesize);
Header:	<DeskLib:Font.h=>Font>

Returns:	Pointer to error, or <NULL> if none.

This function finds the version number, font cache size and amount used. The values are returned in the integers whose pointers are given. /version/ is given multiplied by 100, so version 2.42 is returned as 242.DATA�font_cacheaddress
Syntax:	<os_error> *font_cacheaddress (int *version, int *cacheused, int *cachesize);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This function finds the version number, font cache size and amount used. The values are returned in the integers whose pointers are given. /version/ is given multiplied by 100, so version 2.42 is returned as 242.DATA�Font_Caret/font_caret
Syntax:	<os_error> *Font_Caret (int col, int height, int flags, int x, int y);
Header:	<DeskLib:Font.h=>Font>
	<font.h=>font_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function is called {*}font_caret{*} in Desktop C.

Sets the colour, height (in OS coordinates) and position of the caret. If bit 4 of /flags/ is set, then (x,y) is in millipoints, else it is OS units.DATA8Font_CharBBox/font_charbbox
Syntax:	(DeskLib)	<os_error> *Font_CharBBox (<font_handle> f, char c, int flags, <font_info> *info);
	(Desktop C)	<os_error> *font_charbbox (<font=>font_> f, char c, int flags, <font_info> *info);
Header:	<DeskLib:Font.h=>Font>
	<font.h=>font_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function gets the bounding box of a character into /info/. On entry, /f/ contains the font handle, /c/ the character to be checked and if /flags/ bit 4 is set the coordinates are in OS units, else they are in millipoints.DATA�font_colours
This type is defined in <DeskLib:Font.h=>Font>. It is a structure used for holding font colours:

  \{
    int background, foreground;
  }DATA�Font_ConverttoOS/font_converttoos
Syntax:	<os_error> *Font_ConverttoOS (int x, int y, int *xout, int *yout);
Header:	<DeskLib:Font.h=>Font>
	<font.h=>font_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function converts internal coordinates (x,y) in millipoints, to OS units (using the current scale factor) and places the result in (*xout,*yout).

This function may also be accessed as {*}Font_ConvertToOS{*} in DeskLib. It is called {*}font_converttoos{*} in Desktop C.DATAFont_Converttopoints/font_converttopoints
Syntax:	<os_error> *Font_Converttopoints (int x, int y, int *xout, int *yout);
Header:	<DeskLib:Font.h=>Font>
	<font.h=>font_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function converts OS units (x,y), to internal coordinates in millipoints (using the current scale factor) and places the result in (*xout,*yout).

This function may also be accessed as {*}Font_ConvertToPoints{*} in DeskLib. It is called {*}font_converttopoints{*} in Desktop C.DATA�font_current
Syntax:	<os_error> *font_current (<font_state> *state);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This function reads the current font handle and colours into /state/.DATA�Font_CurrentFont
Syntax:	<os_error> *Font_CurrentFont (<font_state> *state);
Header:	<DeskLib:Font.h=>Font>

Returns:	Pointer to error, or <NULL> if none.

This function reads the current font handle and colours into /state/.DATAfont_def
This type is defined in <font.h=>font_h>. It is a structure used for holding information about a font:

	\{
	 	char name[16];
	 	int xsize, ysize, xres, yres;
	 	int usage, age;
	}

/xsize/ and /ysize/ are in 1/16ths of a point.
/xres/ and /yres/ are in dots per inch.DATAHfont_defn
This type is defined in <DeskLib:Font.h=>Font>. It is a structure used for holding information about a font:

  \{
    char name[128];   /* May be CR terminated */
    int xsize, ysize, xres, yres;
    int age, usage;
  }

/xsize/ and /ysize/' are in 1/16ths of a point.
/xres/ and /yres/ are in dots per inch.DATA�font_find
Syntax:	<os_error> *font_find (char *name, int xsize, int ysize, int xres, int yres, <font=>font_> *handle);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This function returns a handle (in {/}*handle{/}) to a font whose identifier, point size, and screen resolution are given (in {/}name{/}, {/}xsize{/}, {/}ysize{/}, {/}xres{/} and {/}yres{/}). It also sets it as the current font for use by <font_paint> etc.

When you no longer need the font, call <font_lose>.DATA�Font_FindCaret/font_findcaret
Syntax:	<os_error> *Font_FindCaret (<font_string> *string);
Header:	<DeskLib:Font.h=>Font>
	<font.h=>font_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

Called {*}font_findcaret{*} in Desktop C.

On entry, {/}string->s{/} contains a string and (string->x,string->y) contains the offset in millipoints. This function finds the character nearest to the given offset and returns info about it in the /string/ block:

{/}string->term{/} contains the index into the string, {/}string->split{/} gives the number of printable characters before that point, and {/}string->s{/} now points to that character.DATAgFont_FindCaretJ
Syntax:	<os_error> *Font_FindCaretJ (<font_string> *str, int xoff, int yoff);
Header:	<DeskLib:Font.h=>Font>
	<font.h=>font_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function is similar to <Font_FindCaret>, but /xoff/ and /yoff/ contains justification offsets. It is called {*}font_findcaretj{*} in Desktop C.DATA�Font_FindFont
Syntax:	<os_error> *Font_FindFont (<font_handle> *font, char *name, int xsize, int ysize, int xres, int yres);
Header:	<DeskLib:Font.h=>Font>

Returns:	Pointer to error, or <NULL> if none.

This function returns a handle (in {/}*font{/}) to a font whose identifier, point size, and screen resolution are given in /name/, /xsize/, /ysize/, /xres/ and /yres/. It also sets it as the current font for use by <Font_Paint> etc.

When you no longer need the font, call <Font_LoseFont>.DATAfont_future
Syntax:	<os_error> *font_future (<font_state> *state);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This function reads what the state after the next call to <font_paint> would be. You must first have called <font_strwidth>.DATA!Font_FutureFont
Syntax:	<os_error> *Font_FutureFont (<font_state> *state);
Header:	<DeskLib:Font.h=>Font>

Returns:	Pointer to error, or <NULL> if none.

This function reads what the state after the next call to <Font_Paint> would be. You must first have called <Font_StringWidth>.DATAafont_GreenGun
The macro {*}font_GreenGun{*} is defined in <font.h=>font_h> as 0x00010000.DATAgfont.h
This header declares functions allowing access
to the RISC OS font facilities.

Functions:

#table 14 24
<font_cacheaddress>
<font_caret>
<font_charbbox>
<font_converttoos>
<font_converttopoints>
<font_current>
<font_find>
<font_findcaret>
<font_findcaretj>
<font_future>
<font_list>
<font_lose>
<font_output_size>
<font_output_to_buffer>
<font_output_to_null>
<font_output_to_screen>
<font_paint>
<font_readdef>
<font_readinfo>
<font_readscalefactor>
<font_readthresholds>
<font_setcolour>
<font_setfont>
<font_setpalette>
<font_setscalefactor>
<font_setthresholds>
<font_stringbbox>
<font_strwidth>
#endTable

#Table 9 24
Macros:

<font_JUSTIFY>
<font_RUBOUT>
<font_ABS>
<font_OSCOORDS>
<font_BlueGun>
<font_GreenGun>
<font_RedGun>
Types:

<font=>font_>
<font_def>
<font_info>
<font_string>
<font_state>
<font_threshold>
<font_action_on_bitmap>
#EndTableDATA�font_handle
This type is defined in <DeskLib:Font.h=>Font>. It is used to hold a font handle. It is actually defined as an /int/.DATA�font_info
This type is defined in <DeskLib:Font.h=>Font> and <font.h=>font_h> (Desktop C). It is a structure used for holding information about a font's bounding box:

  \{
    int minx, miny, maxx, maxy;
  }DATA�font_JUSTIFY
This macro is defined in <font.h=>font_h>. It is the value of the bit used to indicate in the paint options that text should be justified. It is defined as 0x01.DATA$font_list
Syntax:	<os_error> *font_list (char *name, int *count);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This function calls the <SWI Font_ListFonts=>SWI:Font_ListFonts> (in RISC OS 2 mode). /name/ should point to a buffer for the font name, and {/}*count{/} should initially contain 0. After each call, a font name will be returned in /name/ and {/}*count{/} will be incremented; so by successive calls a complete font list can be built up. {/}*count{/} contains -1 after the last font name has been read.DATA4Font_ListFonts
Syntax:	<os_error> *Font_ListFonts (char *name, int *count);
Header:	<DeskLib:Font.h=>Font>

Returns:	Pointer to error, or <NULL> if none.

This function calls the SWI <Font_ListFonts=>SWI:Font_ListFonts> (in RISC OS 2 mode). /name/ should point to a buffer for the font name, and {/}*count{/} should initially contain 0. After each call, a font name will be returned in /name/ and {/}*count{/} will be incremented; so by successive calls a complete font list can be built up. {/}*count{/} contains -1 after the last font name has been read.DATA�font_lose
Syntax:	<os_error> *font_lose (<font=>font_> f);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This function tells the Font Manager that a particular font is no longer required.DATA�Font_LoseAllFonts
Syntax:	void Font_LoseAllFonts (<font_array> *fonts);
Header:	<DeskLib:Font.h=>Font>

Returns:	Pointer to error, or <NULL> if none.

This function calls <Font_LoseFont> for all fonts in the font usage array /fonts/.DATA�Font_LoseFont
Syntax:	<os_error> *Font_LoseFont (<font_handle> font);
Header:	<DeskLib:Font.h=>Font>

Returns:	Pointer to error, or <NULL> if none.

This function tells the Font Manager that a particular font is no longer required.DATA�font_OSCOORDS
This macro is defined in <font.h=>font_h>. It is the value of the bit used to indicate in the paint options that OS coordinates are used. It is defined as 0x10.DATA�font_output_size
Syntax:	<os_error> *font_output_size (<size_t> *size_ptr);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This causes returns the size of Draw file produced so far in {/}*size_ptr{/}.DATA�font_output_to_buffer
Syntax:	<os_error> *font_output_to_buffer (<drawmod_buffer> *buff_ptr, <BOOL> add_hints, BOOL output_skeleton, <font_action_on_bitmap> action);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This causes further calls to <font_paint> to be output to the buffer, as if they were a draw path. If {/}add_hints{/} is <TRUE> then hints are added, if {/}output_skeleton{/} is TRUE then something else happens (but it's not in the PRM!).DATAyfont_output_to_null
Syntax:	<os_error> *font_output_to_null (<BOOL> add_hints, BOOL output_skeleton, <font_action_on_bitmap> action);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This causes further calls to <font_paint> to be output to nowhere at all, as if they were a draw path. Subsequently calling the function <font_output_size> will return the amount of buffer space used (so you can do it for real with the correct buffer size). If {/}add_hints{/} is <TRUE> then space is allocated for hints as well, if {/}output_skeleton{/} is TRUE then something else happens (but it's not in the PRM!).DATA�font_output_to_screen
Syntax:	<os_error> *font_output_to_screen (void);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This causes further calls to <font_paint> to be output to the screen as normal.DATA}Font_Paint/font_paint
Syntax:	<os_error> *Font_Paint (char *str, int <options=>SWI:font_paint0>, int x, int y);
Header:	<DeskLib:Font.h=>Font>
	<font.h=>font_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function is called {*}font_paint{*} in Desktop C.

This function writes a string to the screen (in the RISC OS 2 way) using the currently selected font (select with <Font_SetFont>), at position (x,y). Certain control characters in /str/ have an effect as follows:

#indent 1;tab
 9,low,middle,high	Move H position
11,low,middle,high	Move V position
17,colour	Change colour
18,back,fore,offset	Change colours
25,pos,thickness	Underline on/off
26,fonthandle	Change font

9 and 11 have three-byte values, in millipoints.
17 changes just one colour (as <VDU 17=>VDU.17>).
18 changes both colours and anti-aliasing.
25 - pos and thickness in 1/256ths of font size.DATAfont_readdef
Syntax:	<os_error> *font_readdef (<font=>font_> f, <font_def> *defn);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This function returns a number of details about a font. /f/ contains the font handle. On exit, {/}defn->name{/} contains the font name, {/}defn->usage{/} gives the number of times that <font_find> has found the font, minus the number of times that <font_lose> has been used on it. {/}defn->age{/} is the number of font acceses made since this one was accessed.DATA�Font_ReadDefn
Syntax:	<os_error> *Font_ReadDefn (<font_handle> font, <font_defn> *defn);
Header:	<DeskLib:Font.h=>Font>

Returns:	Pointer to error, or <NULL> if none.

This function returns a number of details about a font. /font/ contains the font handle. On exit, {/}defn->name{/} contains the font name, {/}defn->usage{/} gives the number of times that <Font_FindFont> has found the font, minus the number of time that <Font_LoseFont> has been used on it. {/}defn->age{/} is the number of font accesses made since this one was accessed.

Note that the font name returned by this function is CR-terminated, so use the <DeskLib:Str=>Str_DL> functions to read it.DATAFont_ReadInfo/font_readinfo
Syntax:	(DeskLib)	<os_error> *Font_ReadInfo (<font_handle> font, <font_info> *info);
	(Desktop C)	<os_error> *font_readinfo (<font=>font_> f, <font_info> *info);

Header:	<DeskLib:Font.h=>Font>
	<font.h=>font_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function returns the bounding box in OS units of the font whose handle is given in /font/. The bounding box is the minimal area covering every character in the font. You should use <Font_CharBBox> in preference, so Acorn say.DATA^Font_ReadScaleFactor
Syntax:	<os_error> *Font_ReadScaleFactor (int *xscale, int *yscale);
Header:	<DeskLib:Font.h=>Font> <font.h=>font_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

Called {*}font_readscalefactor{*} in Desktop C.

This function reads the current scale factors in millipoints/OS unit. The default value is 400.DATAlFont_ReadThresholds
Syntax:	(DeskLib)	<os_error> *Font_ReadThresholds (<font_thresholds> *t);
	(Desktop C)	<os_error> *font_readthresholds (<font_threshold> *t);
Header:	<DeskLib:Font.h=>Font>
	<font.h=>font_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function reads the list of threshold values for painting and stores them in /t/.DATA]font_RedGun
The macro {*}font_RedGun{*} is defined in <font.h=>font_h> as 0x00000100.DATA�font_RUBOUT
This macro is defined in <font.h=>font_h>. It is the value of the bit used to indicate in the paint options that a rub-out box is needed. It is defined as 0x02.DATA1font_setcolour
Syntax:	<os_error> *font_setcolour (<font=>font_> f, int back, int fore, int offset);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This function sets the current font colours (and font if {/}f!=0{/}). The colours for /back/ and /fore/ are logical colours. /offset/ sets the offset from /fore/ to the _real_ foreground colour. Values between /fore/ and {/}fore+offset{/} are used for anti-aliasing.

eg To have colour 0 as background, and use 1-7 for anti-aliasing:

{fCode;align centre}font_setcolour(0,0,1,6);DATAWFont_SetFont/font_setfont
Syntax:	(DeskLib)	<os_error> *Font_SetFont (<font_handle> font);
	(Desktop C)	<os_error> *font_setfont (<font=>font_> f);
Header:	<DeskLib:Font.h=>Font>
	<font.h=>font_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function sets up the font to be used by future calls to the Font Manager.DATALFont_SetFontColours
Syntax:	<os_error> *Font_SetFontColours (<font_handle> font, int back, int fore, int offset);
Header:	<DeskLib:Font.h=>Font>

Returns:	Pointer to error, or <NULL> if none.

This function sets the current font colours (and font if {/}font{/}!=0). The colours for /back/ and /fore/ are logical colours. /offset/ sets the offset from /fore/ to the _real_ foreground colour. Values between /fore/ and {/}fore+offset{/} are used for anti-aliasing.

eg To have colour 0 as background, and use 1-7 for anti-aliasing:

{fCode;align centre}Font_SetFontColours(0,0,1,6);DATA�Font_SetPalette/font_setpalette
Syntax:	<os_error> *Font_SetPalette (int lback, int lfore, int offset, int pback, int pfore);
Header:	<DeskLib:Font.h=>Font>
	<font.h=>font_h> (Desktop C)

Returns: Pointer to error, or <NULL> if none.

This is called {*}font_setpalette{*} in Desktop C.

This function sets the anti-alias palette. It should not be used within the Desktop. The first three parameters are those used in <Font_SetFontColours>/<font_setcolour>. /pback/ and /pfore/ are words in the form 0xBBGGRR00 setting the physical background and foreground colours. The palette entries specified are altered to contain a suitable palette for anti-aliasing.DATA�font_setscalefactor
Syntax:	<os_error> *font_setscalefactor (int x, int y);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This function sets the scale factors used by the font manager.DATAYFont_SetThresholds
Syntax:	(DeskLib)	<os_error> *Font_SetThresholds (<font_thresholds> *t);
	(Desktop C	<os_error> *font_setthresholds (<font_threshold> *t);
Header:	<DeskLib:Font.h=>Font>
	<font.h=>font_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function sets the list of threshold values for painting from /t/.DATA�font_state
This type is defined in <DeskLib:Font.h=>Font> and <font.h=>font_h> (Desktop C). It is a structure used for holding font information. It is defined in DeskLib as:

  \{
    <font_handle>	font;	
    <font_colours>	colour;	
    int	offset;	/* anti-alias */
  }

and in Desktop C as:
{tab}
  \{
    <font=>font_>	f;
    int	back_colour;
    int	fore_colour;
    int	offset;
  }

See <Font_SetFontColours> for a description of /offset/.DATA-font_string
This type is defined in <DeskLib:Font.h=>Font> and <font.h=>font_h> (Desktop C). It is a structure used for holding a font string and caret information:

  \{
    char *s;	/* string */
    int x;	/* in millipoints */
    int y;	
    int split;	
    int term;	/* index into s */
  }DATA|Font_StringBBox/font_stringbbox
Syntax:	<os_error> *Font_StringBBox (char *str, <font_info> *info);
Header:	<DeskLib:Font.h=>Font>
	<font.h=>font_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

Called {*}font_stringbbox{*} in Desktop C.

This function gets the bounding box of /str/ into /info/. The string can contain <Font_Paint> style control sequences..DATA�Font_StringWidth
Syntax:	<os_error> *Font_StringWidth (<font_string> *string);
Header:	<DeskLib:Font.h=>Font>

Returns:	Pointer to error, or <NULL> if none.

This function calculates how wide a string would be under limits. {/}(string->x,string->y){/} contains the maximum width and height. {/}string->split{/} contains the character at which to split the string (eg 32). {/}string->term{/} contains the index of the terminator.

On exit, {/}(string->x, string->y){/} contains the x offset after printing the string. {/}string->split{/} contains the number of split characters, and {/}string->s{/} and {/}string->index{/} are updated to point at the terminating position.

Control sequences as in <Font_Paint> may be used.DATA�font_strwidth
Syntax:	<os_error> *font_strwidth (<font_string> *string);
Header:	<font.h=>font_h>

Returns:	Pointer to error, or <NULL> if none.

This function calculates how wide a string would be under limits. (string->x,string->y) contains the maximum width and height. {/}string->split{/} contains the character at which to split the string (eg 32). {/}string->term{/} contains the index of the termination.

On exit, (string->x, string->y) contains the x offset after printing the string. {/}string->split{/} contains the number of split characters, and {/}string->s{/} and {/}string->index{/} are updated to point at the terminating position.

Control sequences as in <font_paint> may be used.DATA�font_threshold
This type is defined in <font.h=>font_h>. It is a structure used for holding font thresholds:

  \{
    char offset;
    char thresholds[15];
  }DATA�font_thresholds
This type is defined in <DeskLib:Font.h=>Font>. It is a structure used for holding font thresholds:

  \{
    char offset;
    char thresholds[15];
  }DATAsTimsLib:Font.h
This header declares no functions, variables, macros or types. Instead, it <#undef=>undef>s the Font_...macros defined by Desktop C's <swis.h=>swis>, and then #includes "<DeskLib:Font.h=>Font>". This avoids clashes between the Font_... names defined in both headers.

Basically, if you are using swis.h, then include this instead of DeskLib:Font.h.DATAfontlist.h
This header declares functions for creating linked lists of all the available fonts.

Functions:
{align centre}
<fontlist_list_all_fonts>
<fontlist_free_font_tree>
{align}
Type:
{align centre}
<fontlist_node>
{align}
Variable:
{align centre}
<font__tree>DIR$���\F���f��$�free_font_tree�]F���6��$list_all_fonts�^F���ì$node�aF������$�StructDDATA�fontlist_free_font_tree
Syntax:	void fontlist_free_font_tree (<fontlist_node> *font_tree);
Header:	<fontlist.h=>fontlist>

This function recursively frees the memory used by a font tree.DATAfontlist_list_all_fonts
Syntax:	<fontlist_node> *fontlist_list_all_fonts (<BOOL> system);
Header:	<fontlist.h=>fontlist>

Returns:	Pointer to start of font tree.

This function reads in the font list into a font tree. If /system/ is <TRUE> then it includes *System font*.DATAfontlist_node
This type is defined in <fontlist.h=>fontlist>. It contains a single part of a font tree. It is defined as the following structure:

    \{
      char	name[40];
      fontlist_node	*son;
      fontlist_node	*brother;
      int	flag;
    }

/son/ points to the son of this node eg the son of *Trinity* is *Medium*.

/brother/ points the brother of this node eg the brother of *Trinity* might be *Corpus*, the brother of *Medium* might be *Bold*.

If /flag/ is TRUE, then this is a valid font. This would be set for *Medium* but not *Trinity*. The font name is found by adding the names from the first node to this one eg {*}Trinity.Medium{*}.

A typical font structure might be:

#draw c,f fontlist_StructD

#below
This is the structure described above.DATA�Draw�Draw        ���@|�4Homerton.MediumHomerton.Medium.ObliqueX�?���
���@|�            <����pP����p���sons@���P���������brothers<��`[�%�x�����`bTrinity<����`4���������Corpus<�`a���x���Ѕ`bMedium<����� ����Ѕ��Medium<����2���Ѕ�Bold<�����@����Ѕ��Bold<@A`a@|�x���?`bItalic<@A�@|2���?�Italic��
�:M�            `8<
�:M�B 8<�8<
�:M��8<�l����<ȾB �Ⱦ�<Ⱦ�<������Ⱦ���J�X�            `��J��[B ��[��[i��J��[lԏ�[��X�B ��X����[Տ�[ԏW���X���>�djx�u            `hg�djx�uB hg�uhg�djxNmhg�ul�>�i�g�pB �>�p�g�p�g�i�>�i�>�p��>
�jx�            `hg
�jx�B hg�hg
�jx��hg�l�>���g��B �>���g���g���>���>��� ��d�1�u            `� �d�1�uB � �u� �d�1Nm� �ul ��i� �pB  ��p� �p� �i ��i ��p� ���1�.            `� ��1�.B � �.� ��1n&� �.l ��"� �)B  ��)� �)� �" ��" ��)���k6,��X            `��k6,��@B ,��@���@�k6,��@l�h@��XB ��X�i@�h@��X��X�����,�(�            `����,�߲B ,�߲��߲���,�߲l����(�B �(��������'��(�������x=            `������B ������I�����l�����x=B ��x=��������w=��x=DATA fontrec
This type is defined in <drawftypes.h=>drawftypes> as a type capable of holding a font record (I think). It is defined as the following structure:

 	\{
 	 	int	typeface;
 	 	int	typesizex;
 	 	int	typesizey;
 	 	<draw_coltyp>	textcolour;
 	 	<draw_coltyp>	background;
 	}DATA�fontselect.h
This header provides a consistent interface to font choosing.

Functions:

#indent 3;table columns 2
<fontselect_init>
<fontselect_closedown>
<fontselect_closewindows>
<fontselect_selector>
<fontselect_attach_menu>
#endtable;below
{indent}
Macros:

#indent 4;table columns 2
<fontselect_REOPEN>
<fontselect_SETTITLE>
<fontselect_SETFONT>
#endtable;below
{indent}
Types:
{align centre}
<fontselect_fn>DIR$@@XqF���I�$Mattach_menu�rF���L&�$�closedownxsF����)�$�closewindows4tF����^�$fnPuF����"�$�init vF���=N�$fREOPEN�vF���b4�$<selector�xF����R�$gSETFONT,yF���NP�$hSETTITLEDATAMfontselect_attach_menu
Syntax:	<BOOL> fontselect_attach_menu (<menu> mn, <event_menu_proc> process, void *handle);
Header:	<fontselect.h=>fontselect>

Returns:	<TRUE> if successful.

This function attaches a menu /mn/ to all four font selector windows. /process/ is called to handle menu selections with the specified handle.DATA�fontselect_closedown
Syntax:	void fontselect_closedown (void);
Header:	<fontselect.h=>fontselect>

This function closes the font selector windows and frees all memory used by the fontselect system.DATA�fontselect_closewindows
Syntax:	void fontselect_closewindows (void);
Header:	<fontselect.h=>fontselect>

This function closes the font selector windows and unattaches any handlers.DATAfontselect_fn
This type is defined in <fontselect.h=>fontselect>. It does not seem to be documented and I wonder if Acorn know what it's used for? It is a function of the form:

{fCode;align centre}<BOOL> myfunc (char *name, double width, double height, <wimp_eventstr> *e);DATA�fontselect_init
Syntax:	int fontselect_init (void);
Header:	<fontselect.h=>fontselect>

Returns:	<TRUE> if successful.

This function reads in the font list and initialises the font selector window.DATAffontselect_REOPEN
This macro is defined in <fontselect.h=>fontselect>. It is defined as 0x001.DATA<fontselect_selector
Syntax:	int fontselect_selector (char *title, int flags, char *name, double width, double height, <fontselect_fn> uk_icon);
Header:	<fontselect.h=>fontselect>

Returns:	Window handle, or 0 if unsuccessful.

This function opens or reopens the font chooser window.

Flags:{tab}
�	If <fontselect_SETFONT> is set then the font name, width and height are set appropriately.
�	If <fontselect_SETTITLE> is set then the title is set appropriately.
�	If <fontselect_REOPEN> is set then the window will only open if it already is open (use for updating).DATAgfontselect_SETFONT
This macro is defined in <fontselect.h=>fontselect>. It is defined as 0x004.DATAhfontselect_SETTITLE
This macro is defined in <fontselect.h=>fontselect>. It is defined as 0x002.DATA#fopen
Syntax:	<FILE> *fopen (char *filename, char *mode);
Header:	<stdio.h=>stdio>

Returns:	Pointer to the stream, or a null pointer if the file cannot be opened.

This function attempts to open the file specified in /filename/ for random access according to the <mode=>file_mode_>.DIR$((�zF����~�"�MAXDATA�FOPEN_MAX
#Parent stdio
The macro FOPEN_MAX is defined in <stdio.h=>stdio> as the number of files that can be opened simultaneously. It may be possible to open more files than this number, but data may be lost. In Easy�C it is defined as 8.DATA)for
This command defines an interative loop. It has the general form:

{fCode;align centre}for (\<init>; \<cond>; \<iter>) \<statement>;{f;align}

\<init>	is an initialisation statement. It is called once when the for statement is encountered. More than one statement can be used, separated by commas.

\<cond>	is a condition. It is evaluated each time before executing the \<statement>. If it evaluates to 0, or false, then the \<statement> is not executed and the next command is executed - the for loop is finished.

\<iter>	is executed after each time the loop is executed. More than one statement can be used, separated by commas.

\<statement>	is the command executed within the loop. It can be a compound statement ie several statements enclosed in braces \{} (in which case there is no final semicolon), or it can be nothing ie all the work is done in the for statement.

As an example, this loop counts from 1 to 10, printing each number:

{fCode;align centre}for (i=1;i\<=10;i++) <printf>("%d\n",i);{f;align}

Much more complex loops are possible!DIR$,,0�F���2��"�!RootDATA�Formatted I/O Functions
#Parent stdio
These functions read and write, from any stream, formatted sequences of values.

#Table 3 16
<printf>
<fprintf>
<sprintf>
<scanf>
<fscanf>
<sscanf>
<vfprintf>
<vprintf>
<vsprintf>
#EndTableDIR$((D�F������"�tDATA�fpos_t
The type {/}fpos_t{/} is defined in <stdio.h=>stdio> as an object capable of holding any file position. In Easy C it is defined as a /long int/.DATA}fprintf
Syntax:	int fprintf (<FILE> *stream, char *format, ...);
Header:	<stdio.h=>stdio>

Returns:	The number of characters written, or a negative value if there was an error.

This function writes output to the stream under control of the <format string=>pform_>. If there are more arguments than conversion specifications, the extra arguments are evaluated but not used.DATA�fputc
Syntax:	int fputc (int c, <FILE> *stream);
Header:	<stdio.h=>stdio>

Returns:	c, or <EOF> if there is an error.

This function writes the character in /c/ to the stream specified.DATA�fputs
Syntax:	int fputs (char *str, <FILE> *stream);
Header:	<stdio.h=>stdio>

Returns:	<EOF> if there is an error.

This function writes the string pointed to by /str/ to the stream specified. The null terminator is not written.DATA3fread
Syntax:	<size_t> fread (void *ptr, size_t size, size_t nobj, <FILE> *stream);
Header:	<stdio.h=>stdio>

Returns:	The number of objects successfully read.

This function reads /nobj/ objects of size specified by /size/ into the array pointed to by /ptr/, from the stream pointed to by /stream/.DATA�free
Syntax:	void free (void *ptr);
Header:	<stdlib.h=>stdlib>

This function frees memory allocated by either <calloc>, <malloc> or <realloc>. This memory can then be re-used on another occasion by the program.DATA~FreeDbug
Syntax:	void FreeDbug (void *p,char *filename, int line);
Header:	<TimsLib:MallocDbug.h=>MallocDbug>

This function is identical to <free>(), but remembers the file and line at which the call occurred.

This function will normally be called transparently. The macro {*}freedbug{*} is defined to call this function in debug builds, and normal free in release builds.DATAfreeproc
The type *freeproc* is defined in <kernel.h=>kernel> as a procedure which can be used to free memory allocated by an <allocproc>. It is defined as:

{fCode;align centre}void freeproc (void *);{f;align}

The parameter passed is the pointer to the space to be freed.DATA�freopen
Syntax:	<FILE> *freopen (char *filename, char *mode, FILE *stream);
Header:	<stdio.h=>stdio>

Returns:	A null pointer if it fails, otherwise a pointer to the same stream.

This function opens the file specified in /filename/, according to the <mode=>file_mode_>, first closing the file previously associated with that stream. If the file cannot be closed properly it is abandoned and the new file is still opened.DATAFfrexp
Syntax:	double frexp (double x, int *exp);
Header:	<math.h=>math>

Returns:	y, where x = y * (1 \<\< *exp).

This function splits the value x into a normalised fraction (the result, y) and a power of two (stored in the int pointed to by exp). If x is zero then both *exp and y will be zero, else 0.5 \< y \< 1.0.DATA�fscanf
Syntax:	int fscanf (<FILE> *stream, char *format, ...);
Header:	<stdio.h=>stdio>

Returns:	Number of successful inputs, or <EOF> if there was an input error.

This function reads input from the stream under control of the <format string=>sform_>. Each subsequent argument is a pointer to a object in which to place the result. If there are more arguments than conversion specifications, the extra arguments are evaluated but not used.DATAfseek
Syntax:	int fseek (<FILE> *stream, long int pos, int from);
Header:	<stdio.h=>stdio>

Returns:	Zero if successful.

This function sets the file position indicator for the file pointed to by stream. The position is set using a combination of /pos/ and /from/. /pos/ gives the offset from the position set in /from/. /from/ should be either <SEEK_SET>, <SEEK_CUR> or <SEEK_END>. For files not opened in binary mode, /pos/ should be either zero, or a value returned by <ftell> with /from/ equal to SEEK_SET.DATAdfsetpos
Syntax:	int fsetpos (<FILE> *stream, <fpos_t> *pos);
Header:	<stdio.h=>stdio>

Returns:	Zero if successful.

This function sets the file pointer, for the file pointed to by /stream/, to the value stored in /pos/. This value should have been previously stored by the <fgetpos> function. If there is an error, the reason is stored in <errno>.DATA�ftell
Syntax:	long int ftell (<FILE> *stream);
Header:	<stdio.h=>stdio>

Returns:	File pointer for stream, or -1L if there is an error.

This function reads the file position indicator for the file pointed to by /stream/. For binary files this is the number of characters from the beginning of the file, but for text files it could be anything. If there is an error, the reason is stored in <errno>.FREE)��te
Syntax:	<size_t> fread (void *ptr, size_t size, size_t nobj, <FILE> *stream);
Header:	<stdio.h=>stdio>

Returns:	The number of objects written.

This function writes /nobj/ objects of size specified by /size/ from the array pointed to by /ptr/, into the file pointed to by /stream/.DIR$xx(�F����oZ&�GBoden��F���zU&�GColx�F���k��"�getc`�F�����"/getchar��F���V��"KgetenvܝF���H��"7gets�F���jR*%�GFX�F���X��/�GFX_�F���X��"gmtime �F���}�+%:Handler\�F��� ��/PHandler_�F���$�heap��F���/lheap_��F������$�help��F���K��/�help_��F���[SV&�HexDigit��F�����+%Hourglass��F������/�Hourglass_��F���o��/(HUGE_DATA�Gareth Boden
FidoNet email:	2:250/225.10
Internet email:	gdb20@cam.ac.uk

Snail-mail:

{align centre}45 Cedar Street
SOUTHPORT
PR8 6NQ
U.K.DATA�GCol
Syntax:	GCol (int action, int colour);
Header:	<TimsLib:GFX.h=>GFX_TL>

This function-like macro uses <Wimp_SetColour> to set the current colour number and <action=>VDU:18a>.DATA�getc
Syntax:	int getc (<FILE> *stream);
Header:	<stdio.h=>stdio>

Returns:	Character read, or <EOF> for an error.

This function reads a single character from the stream pointed to by /stream/ and returns it as an /int/. It is virtually identical to <fgetc>. The only difference is that the function might be a macro and the argument may be evaluated more than once so you can't use an expression with side effects. For example: getc(f[i++]) may cause i to be incremented twice.DATA/getchar
Syntax:	int getchar (void);
Header:	<stdio.h=>stdio>

Returns:	Character read, or <EOF> for an error.

This function reads a single character from <stdin>. It is identical to <getc>(stdin). It may be implemented as a macro so be careful of using expressions which modify other variables.DATAKgetenv
Syntax:	char *getenv (char *name);
Header:	<stdlib.h=>stdlib>

Returns:	A pointer to the variable contents.

This reads the contents of an environment variable, whose name is given. In DOS it reads the DOS environment variables eg /PATH/, whereas in RISC OS it reads the system variable eg {/}Obey$Dir{/}. When reading the variables it converts numbers to strings and expands macros.

You should not modify the returned string and it may be overwritten by subsequent calls to /getenv/.

This function is equivalent to the SWI <OS_ReadVarVal=>SWI:OS_ReadVarVal>, with R4=3.DATA7gets
Syntax:	char *gets (char *str);
Header:	<stdio.h=>stdio>

Returns:	str, or a null pointer if there is an error.

This function reads a string of characters from <stdin> into the string pointed to by /str/. Reading will terminate at a newline character or end-of-file. See also the function <fgets>.DATA�DeskLib:GFX.h
Version: 0.70 (30 May 1994)
#line
This header declares function and macros for graphics manipulation.

Functions:

#Indent 7
#Table 3 16
<GFX_Plot>
<GFX_Rectangle>
<GFX_CLG >
<GFX_VDU>
<GFX_Write0>
<GFX_WriteN>
<GFX_Wait>
#EndTable
#indent 0

Function-like macros:

#Indent 9
#Table 5 18
<GFX_Move>
<GFX_MoveBy>
<GFX_PlotPoint>
<GFX_PlotPointBy>
<GFX_Draw>
<GFX_DrawBy>
<GFX_RectangleFill>
<GFX_Circle>
<GFX_CircleFill>
<GFX_GCOL>
#EndTableDIR$����F���MJ+%�Circle��F���lQ+%�CircleFillx�F�����*%�CLG�F����7+%�Draw��F����=+%�DrawBy��F����W+%�GCOL��F���&+%�Move|�F����)+%�MoveBy@�F����^*%Plot\�F�����*%�plot_�F���F�*%oplotbmod_X�F�����*%�plotmod_D�F���.+%�PlotPoint�F���-3+%%PlotPointByD�F���f�*%
RectangleT�F����C+%RectangleFilll�F����nU&UTLĹF����*%vVDU<�F���b+%WaitP�F���O+%�Write0(�F���
+%�WriteNDATA�GFX_Circle
Syntax:	void GFX_Circle (int x, int y, int r);
Header:	<DeskLib:GFX.h=>GFX>

This macro uses <GFX_Plot> to draw a circle outline with centre {/}(x,y){/} and radius /r/, in the current graphics foreground colour.DATA�GFX_CircleFill
Syntax:	void GFX_CircleFill (int x,int y,int r);
Header:	<DeskLib:GFX.h=>GFX>

This macro uses <GFX_Plot> to draw a filled circle with centre {/}(x,y){/} and radius /r/, in the current graphics foreground colour.DATA�GFX_CLG
Syntax:	void GFX_CLG (void);
Header:	<DeskLib:GFX.h=>GFX>

This function clears the graphics window to the current background graphics colour.DATA�GFX_Draw
Syntax:	void GFX_Draw (int x, int y);
Header:	<DeskLib:GFX.h=>GFX>

This macro uses <GFX_Plot> to draw a line in the current graphics foreground colour from the current graphics cursor position to {/}(x,y){/}.DATA�GFX_DrawBy
Syntax:	void GFX_DrawBy (int x, int y);
Header:	<DeskLib:GFX.h=>GFX>

This macro uses <GFX_Plot> to draw a line in the current graphics foreground colour from the current graphics cursor position to a position {/}(x,y){/} units away.DATA�GFX_GCOL
Syntax:	GFX_GCOL (int action, int colour);
Header:	<DeskLib:GFX.h=>GFX>

This macro uses <GFX_VDU> to set the current graphics colour and <action=>VDU:18a>.DATA�GFX_Move
Syntax:	void GFX_Move (int x, int y);
Header:	<DeskLib:GFX.h=>GFX>

This macro uses <GFX_Plot> to move the graphics cursor to the positon {/}(x,y){/}. Equivalent to <MOVE=>Basic:MOVE> in Basic.DATA�GFX_MoveBy
Syntax:	void GFX_MoveBy (int x, int y);
Header:	<DeskLib:GFX.h=>GFX>

This macro uses <GFX_Plot> to move the graphics cursor from the curren position relatively by {/}(x,y){/}.DATAGFX_Plot
Syntax:	void GFX_Plot (int code, int x, int y);
Header:	<DeskLib:GFX.h=>GFX>

This function does a plot command. It is the same as <PLOT=>Basic:PLOT> in Basic, or the SWI <OS_Plot=>SWI:OS_Plot>. /code/ is the <plot type=>gfx_plot_>, and /x/ and /y/ are coordinates.DATA�Plot Commands
The following macros are defined in <DeskLib:GFX.h=>GFX>:

Macro			Code	Meaning
#line
plot_SOLIDBOTH		0x00	Solid line including both end points
plot_SOLIDEXFINAL	0x08	Solid line excluding the final point
plot_DOTTEDBOTH		0x10	Dotted line incl. both end points, pattern restarted
plot_DOTTEDEXFINAL	0x18	Dotted line excl. final point, pattern restarted
plot_SOLIDEXINIT	0x20	Solid line excluding the initial point
plot_SOLIDEXBOTH	0x28	Solid line excluding both end points
plot_DOTTEDEXINIT	0x30	Dotted line excl. initial point, pattern continued
plot_DOTTEDEXBOTH	0x38	Dotted line excl. both end points, pattern continued
plot_POINT		0x40	Point plot
plot_HORIZLINEFILLNB	0x48	Horizontal line fill (left & right) to non-background
plot_TRIANGLEFILL	0x50	Triangle fill
plot_HORIZLINEFILLB	0x58	Horizontal line fill (right only) to background
plot_RECTANGLEFILL	0x60	Rectangle fill
plot_HORIZLINEFILLF	0x68	Horizontal line fill (left & right) to foreground
plot_PARALLELFILL	0x70	Parallelogram fill
plot_HORIZLINEFILLNF	0x78	Horizontal line fill (right only) to non-foreground
plot_FLOODTOBACK	0x80	Flood to non-background
plot_FLOODTOFORE	0x88	Flood to foreground
plot_CIRCLE		0x90	Circle outline
plot_CIRCLEFILL		0x98	Circle fill
plot_CIRCLEARC		0xA0	Circular arc
plot_SEGMENT		0xA8	Segment
plot_SECTOR		0xB0	Sector
plot_BLOCK		0xB8	Block copy/move (has different <modifiers=>GFX_plotbmod_>)
plot_ELLIPSE		0xC0	Ellipse outline
plot_ELLIPSEFILL	0xC8	Ellipse fill
plot_GRAPHICSCHAR	0xD0	Font printing (obsolete - don't use)
plot_SPRITE		0xE8	Sprite plot

Onto each of these can be added a <modifier=>GFX_plotmod_> which affects the way the command behaves.DATAoPlot Code Block Modifiers
The following macros are defined in <DeskLib:GFX.h=>GFX>
{wrap off}
Macro			Code	Meaning
#line
plot_BMOVEREL		0	Move relative
plot_BMOVERECTREL	1	Move rectangle relative
plot_BCOPYRECTREL	2	Copy rectangle relative

plot_BMOVEABS		4	Move absolute
plot_BMOVERECTABS	5	Move rectangle absolute
plot_BCOPYRECTABS	6	Copy rectangle absoluteDATA�Plot Code Modifiers
The following macros are defined in <DeskLib:GFX.h=>GFX>.
{wrap off}
Macro			Code	Meaning
#line
plot_MOVECURSORREL	0	Move cursor relative
plot_DRAWRELFORE	1	Plot relative in foreground
plot_DRAWRELINVERSE	2	Plot relative in inverse
plot_DRAWRELBACK	3	Plot relative in background
plot_MOVECURSORABS	4	Move cursor absolute
plot_DRAWABSFORE	5	Plot absolute in foreground
plot_DRAWABSINVERSE	6	Plot absolute in inverse
plot_DRAWABSBACK	7	Plot absolute in backgroundDATA�GFX_PlotPoint
Syntax:	void GFX_PlotPoint (int x, int y);
Header:	<DeskLib:GFX.h=>GFX>

This macro uses <GFX_Plot> to plot a single point on the screen in the current graphics foreground colour at {/}(x,y){/}.DATA%GFX_PlotPointBy
Syntax:	void GFX_PlotPointBy (int x, int y);
Header:	<DeskLib:GFX.h=>GFX>

This macro uses <GFX_Plot> to plot a single point on the screen in the current graphics foreground colour at a point whose offset relative to the current graphics cursor position is {/}(x,y){/}.DATA
GFX_Rectangle
Syntax:	void GFX_Rectangle (int x, int y, int w, int h);
Header:	<DeskLib:GFX.h=>GFX>

This function draws a rectangle outline on the screen in the current graphics foreground colour, with one corner at {/}(x,y){/} and another at {/}(x+w, y+h){/}.DATAGFX_RectangleFill
Syntax:	void GFX_RectangleFill (int x, int y, int w, int h);
Header:	<DeskLib:GFX.h=>GFX>

This macro uses <GFX_Plot> to draw a filled rectangle in the current graphics foreground colour, with one corner at {/}(x,y){/} and another at {/}(x+w, y+h){/}.DATAUTimsLib:GFX.h
This header file declares just one function-like macro, <GCol>.DATAvGFX_VDU
Syntax:	void GFX_VDU (char ch);
Header:	<DeskLib:GFX.h=>GFX>

This function sends the single character specified in /ch/ to the VDU drivers (as if <OS_WriteC=>SWI:OS_WriteC> had been called). /ch/ can contain some <control codes=>VDU:!Root>, as well as printable characters.

A macro is defined which enables you to call this function with {fCode}VDU(ch){f}.DATAGFX_Wait
Syntax:	void GFX_Wait (void);
Header:	<DeskLib:GFX.h=>GFX>

This function waits until the vertical screen refresh has finished. This means that it returns _just after_ the screen has been updated on the monitor, so any alteration made to the screen now will not occur while it is being redrawn (and therefore avoids flicker). It is equivalent to <WAIT=>Basic:WAIT> in Basic.

On TV-type monitors the refresh happens 50 times a second, but multiscans, VGA, SVGA and hi-res mono monitors have different refresh rates.DATA�GFX_Write0
Syntax:	void GFX_Write0 (char *string);
Header:	<DeskLib:GFX.h=>GFX>

This function writes the given null-terminated string to the VDU stream, as if SWI <OS_Write0=>SWI:OS_Write0> had been called.DATA�GFX_WriteN
Syntax:	void GFX_WriteN (char *string, int n);
Header:	<DeskLib:GFX.h=>GFX>

This function writes /n/ characters, from the string whose pointer is given, to the VDU stream. It is equivalent to SWI <OS_WriteN=>SWI:OS_WriteN>.DATAgmtime
Syntax:	<struct�tm> *gmtime (<time_t> *timer);
Header:	<time.h=>time_h>

Returns:	Pointer to the broken-down time.

This function converts the calendar time pointed to by /timer/ into a broken-down time, expressed in Greenwich Mean Time (GMT).DATA:DeskLib:Handler.h
Version: 1.03 (01 Apr 1994)
#line
This header declares functions which are for use with the <Event> or <EventMsg> systems. They are not intended to be called directly.

#indent 5
#table columns 2
<Handler_CloseWindow>
<Handler_DeleteWindow>
<Handler_OpenWindow>
<Handler_NullRedraw>
<Handler_ClickOK>
<Handler_ModeChange>
<Handler_DragNULL>
<Handler_DragFinish>
<Handler_HatchRedraw>
#endtable

#indent
As a consequence of their use, all the functions have the same prototype (they are all <event_handler>s) and all return <TRUE> if successful.DIR$PP��F���i�+%ClickOK��F���T�+%CloseWindow��F�����+%DeleteWindow�F�����+%�DragFinish��F�����+%�DragNULLX�F���^�+%<HatchRedraw��F���z�+%�ModeChange��F���C�+%gNullRedraw��F���ҿ+%OpenWindowDATAHandler_ClickOK
Header:	<DeskLib:Handler.h=>Handler>

This function handles clicks on 3D buttons. It indents the button, waits for 1/3 second and then un-indents the button. Attach it to a particular window/icon and a Mouse_Click event ({*}event_CLICK{*}) with <Event_Claim>.DATAHandler_CloseWindow
Header:	<DeskLib:Handler.h=>Handler>

This function calls <Wimp_CloseWindow> on the data returned by the Wimp. Attach to the Close_Window_Request event using:

{fCode;align centre}<Event_Claim>(event_CLOSE,event_ANY,event_ANY, Handler_CloseWindow,<NULL>);DATAHandler_DeleteWindow
Header:	<DeskLib:Handler.h=>Handler>

This function calls <Window_Delete> on the data returned by the Wimp. Attach to the Close_Window_Request event using:

{fCode;align centre}<Event_Claim>(event_CLOSE,event_ANY,event_ANY, Handler_DeleteWindow,<NULL>);DATA�Handler_DragFinish
Header:	<DeskLib:Handler.h=>Handler>

This function calls the drag-complete handler registered with <Drag_SetHandlers> and resets the Drag module.DATA�Handler_DragNULL
Header:	<DeskLib:Handler.h=>Handler>

This function calls the drag handler registered with <Drag_SetHandlers> on each Null event it receives.DATA<Handler_HatchRedraw
Header:	<DeskLib:Handler.h=>Handler>

This function supplies a redraw loop in which the area of window is redraw with a hatch pattern. This is useful when testing programs without having actually written your own proper redraw routine. Attach it to {*}event_REDRAW{*} using <Event_Claim>.DATA�Handler_ModeChange
Header:	<DeskLib:Handler.h=>Handler>

This function is a handler for mode change events. It calls <Screen_CacheModeInfo> every time the screen mode changes. If you have called <Template_UseOutlineFonts>, and the screen resolution has changed, it also calls <Window_ModeChange> (therefore all your windows must be created with <Window_Create>). Attach it to mode change message with:

{fCode;align centre}<EventMsg_Claim>(message_MODECHANGE, event_ANY, Handler_ModeChange, <NULL>);DATAgHandler_NullRedraw
Header:	<DeskLib:Handler.h=>Handler>

This function supplies a dummy redraw loop. It just calls <Wimp_RedrawWindow> then gets rectangles from the Wimp until they have all been "redrawn". Attach to the Redraw_Window_Request event using:

{fCode;align centre}<Event_Claim>(event_REDRAW,event_ANY,event_ANY, Handler_NullRedraw,<NULL>);DATAHandler_OpenWindow
Header:	<DeskLib:Handler.h=>Handler>

This function calls <Wimp_OpenWindow> on the data returned by the Wimp. Attach to the Open_Window_Request event using:

{fCode;align centre}<Event_Claim>(event_OPEN,event_ANY,event_ANY, Handler_OpenWindow,<NULL>);DATA�heap.h
This header declares functions for <malloc>-style heap allocation within a <flex> block.

Functions:

#table columns 3
<heap_init>
<heap_alloc>
<heap_free>
#endtableDIR$ll0�F���~��$�alloc�F���6��$�free��F�����$initDATA�heap_alloc
Syntax:	void *heap_alloc (unsigned int size);
Header:	<heap.h=>heap>

Returns:	Pointer to allocated block.

Allocated a block of the given size from the heap. Returns 0 if unable to do so.DATA�heap_free
Syntax:	void heap_free (void *heapptr);
Header:	<heap.h=>heap>

Frees the block whose pointer is given in /heapptr/. The block must have been previously allocated with <heap_alloc>.DATAheap_init
Syntax:	void heap_init (<BOOL> heap_shrink);
Header:	<heap.h=>heap>

Initialises the heap allocation system. If {/}heap_shrink{/} is <TRUE> then the flex block will be shrunk when possible. You must call <flex_init> before calling this function.DATA�help.h
This header declares functions providing support for interactive help.

Functions:

#Table columns 2
<help_process>
<help_register_handler>
<help_genmessage>
<help_simplehandler>
<help_dboxrawevents>
<help_reply> 
#EndTableDIR$����F���]�$�dboxrawevents��F���u�$�genmessage��F���x��$jprocess��F���ϻ�$�register_handler��F������$�reply|�F�����$msimplehandlerDATA�help_dboxrawevents
Syntax:	<BOOL> help_dboxrawevents (<dbox> d, void *event, void *handle);
Header:	<help.h=>help>

This function is a routine suitable for passing to <dbox_raw_eventhandler>, for providing help on dialogue boxes. The handle passed should be a message prefix. A single character suffix may be added to it containing the icon number. If this message does not exist (or no icon is pointed at) then just the prefix will be used as the message tag.DATA�help_genmessage
Syntax:	<BOOL> help_genmessage (char *prefix, char *hit);
Header:	<help.h=>help>

Returns:	<TRUE> if this was a menu help message.

This function generates a message tag which is looked up with <msgs_lookup> by adding a the prefix to a string of menu selections eg. "MENU01" if the prefix is "MENU" and the second option off the first submenu has been selected. Numbers {*}0-9{*} and letters {*}a-z{*} are used for the selection list. It is then returned as the interactive help message.DATAjhelp_process
Syntax:	<BOOL> help_process (<wimp_eventstr> *e);
Header:	<help.h=>help>

Returns:	<TRUE> if event has been processed.

This function processes the given event if it is a menu interactive help message. This should be called by the unknown event handler of the program. For it to work, you must inform <wimpt> that you are aware of RISC OS 3.DATA�help_register_handler
Syntax:	void help_register_handler (<event_menu_proc> func, void *handle);
Header:	<help.h=>help>

This function registers the handler to be used when help_process is next called. /handle/ is passed straight to /func/. This should be called by the menu-maker function of every menu in the program. When <help_process> is called, the most recently installed handler is assumed to be the correct one. Call with <NULL> if no help is available on this menu.DATA�help_reply
Syntax:	void help_reply (char *m);
Header:	<help.h=>help>

This function replies to the help message in <wimpt_last_event> with the message specified.DATAmhelp_simplehandler
Syntax:	void help_simplehandler (void *handle, char *hit);
Header:	<help.h=>help>

This function is a simple handler which can be registered with <help_register_handler> in order to handle simple static menus. /handle/ should be the prefix to pass to <help_genmessage>. All this function does is pass the menu selections to that function.DATA�HexDigit
Syntax:	char HexDigit (int n);
Header:	<TimsLib:Lib.h=>Lib>

Returns:	Character representing n in hex.

This function takes a number /n/ in the range 0-15 and returns the appropriate hexadecimal digit (0-F).DATADeskLib:Hourglass.h
Version: 2.00 (24 Jul 1993)
#line
The header \<DeskLib:Hourglass.h> declares functions for handling the <Hourglass=>SWI:Hourglass_>.

#Table 3 24
<Hourglass_On>
<Hourglass_Start>
<Hourglass_Percentage>
<Hourglass_Off>
<Hourglass_Smash>
#EndTableDIR$����F���� ,%Off��F����,%�On��F���o,%=Percentage��F���&,%�SmashL�F����,%uStartDATAHourglass_Off
Syntax:	void Hourglass_Off(void);
Header:	<DeskLib:Hourglass.h=>Hourglass>

Returns:	Pointer to error, or <NULL> if none.

This function removes the indication of the delay. It is equivalent to the SWI <Hourglass_Off=>SWI:Hourglass_Off>.DATA�Hourglass_On
Syntax:	void Hourglass_On (void);
Header:	<DeskLib:Hourglass.h=>Hourglass>

This function changes the mouse pointer to show the user that some delay will occur. It does this by calling the SWI <Hourglass_On=>SWI:Hourglass_On>.DATA=Hourglass_Percentage
Syntax:	void Hourglass_Percentage (int pc);
Header:	<DeskLib:Hourglass.h=>Hourglass>

Returns:	Pointer to error, or <NULL> if none.

This function indicates to the user that the delay is /pc/ percent completed. It is equivalent to the SWI <Hourglass_Percentage=>SWI:Hourglass_Percentage>.DATA�Hourglass_Smash
Syntax:	void Hourglass_Smash (void);
Header:	<DeskLib:Hourglass.h=>Hourglass>

Returns:	Pointer to error, or <NULL> if none.

This function forces the indication of a delay to be removed. Normally, <Hourglass_Off> must be called for each time <Hourglass_On> or <Hourglass_Start> is called. This function is equivalent to the SWI <Hourglass_Smash=>SWI:Hourglass_Smash>.DATAuHourglass_Start
Syntax:	void Hourglass_Start (int delay);
Header:	<DeskLib:Hourglass.h=>Hourglass>

Returns:	Pointer to error, or <NULL> if none.

This function changes the mouse pointer to show the user that some delay will occur. The change will occur delay centiseconds after this call is made. It is equivalent to the SWI <Hourglass_Start=>SWI:Hourglass_Start>.DIR$((��F���&��"�VALDATA�HUGE_VAL
The macro HUGE_VAL is defined in <math.h=>math> as a
positive double. It is used in result overflows
to indicate the sign of the result.DIR$��F���c�.%QIcon��F����/ 	Icon_HDF���㝄/Liconbar_FF�����/�if�HF���7��/,if_hJF���t�"�ifdef LF���Q}�"�ifndef�MF���b�")IMPORTPF����S�"include(SF������/DINT_�TF�����U&4Interface�VF������/�Interface_�dF���T'�"isalnum�eF�����"�isalpha�fF������"�iscntrldgF����"�isdigit(hF���>
�"�isgraphiF�����"�islower�iF�����"�isprint�jF���7!�"5ispunct�kF���A�"�isspacehmF����I�"�isupper(nF����P�"�isxdigit�nF������/(jmp_�oF������/pjoin_rF�����/�k_�wF���ډ0%KbdyF���r��/�Kbd_̃F���9�$7kernel�F���P�>%IKernelSWIsP�F���&��/Lkey_�F����L?%xKeyCodesDATAQDeskLib:Icon.h
Version: 1.14 (Dec 1994)
#line
This header declares functions for high-level icon handling.

#Indent 13
<Controlling=>Icon_cont_>
<Reading/Writing State=>Icon_state_>
<Reading/Writing Contents=>Icon_contents_>
<Dragging=>Icon_drag_>
<Slider operations=>Icon_slide_>
#indent

Type:

{align centre}<icon_incdecblock>DIR$ 	 	�F����x�'WBarIconh�F���b��'�BarIconUser0�F���[!A&�block��F���3W.%ClickWait�F����U0%cont_$�F���0%contents_4�F����'A&�createblock�F���(A&�data�F����,%�Deselect��F�����U&7DisposeData�F�����.%GDisposeIndData$F���
a.%bdrag_�F���6�.%�DragSliderF���ߠ.%OFileIcondF����N8&�flags<F����,%hForceRedraw�	F���o�,%�ForceWindowRedraw�
F�����-%GetBgCol�F����)-%/GetDouble�F�����-%GetFgCol�
F����p-%(GetIntegerF���	�,%�GetSelect�F���.�,%�GetShade�F���yv-%GetText�F����-%�GetTextPtrpF���zs7&handle�F���sf8&�indsprite�F����Y8&�indtext�F�����,%LoseCaret�F���4e-%YprintfF���4�.%�ReadSlider�F���߯.%&ScreenPos F����,%�Select�F�����U&6SelectGroupF�����,%SetBackColour,F���E�-%SSetBgCol�F���+�,%SetCaret�F����8-%cSetDouble� F�����-%HSetFgCol8"F���̡-%�SetFlags�#F�����,%SetForeColour�$F���%0-%<SetInteger0&F�����-%�SetRadios�'F���ڜ,%�SetSelect�(F����,%�SetShade�)F�����.%�SetSlider�*F����F-%KSetText�+F��� U-%�SetTextRJ�-F���N�,%�Shade`.F���;�-%0ShadeGroup�/F����.%�slide_0F����i.%LStartDrag`1F���[x.%StartSolidDragh2F���W.%�state_ 4F���c�U&�TL�5F����U&.TYPE�6F����,%�Unshade�7F���b�.%�UpdateSlider9F����.%�WhichRadio�:F���)D.%9WhichRadioInEsg4<F���6T/%*incdecblock`>F�����/%�InitIncDecHandler�@F����0%KReleaseIncDecHandler0BF����C0%�AlterValidation�CF����n0%�ButtonIsHeldDATAWIcon_BarIcon
Syntax:	<icon_handle> Icon_BarIcon (char *spr, <window_handle> pos);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	Icon handle of created icon.

This function places a normal sprite-only icon on the icon bar. /spr/ is a pointer to the sprite name and /pos/ is the side of the icon bar, either <iconbar_LEFT> or <iconbar_RIGHT>.DATA�Icon_BarIconUser
Syntax:	<icon_handle> Icon_BarIconUser (char *spr, <window_handle> pos, unsigned int *spr_area);
Header:	<DeskLib:Icon.h=>Icon_h>

Returns:	Icon handle of created icon.

This function places a normal sprite-only icon on the icon bar. /spr/ is a pointer to the sprite name and /pos/ is the side of the icon bar, either <iconbar_LEFT> or <iconbar_RIGHT>. The sprite is taken from the user sprite area pointed to by {/}spr_area{/}.DATA�icon_block
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure holding a complete icon definition:

  \{
    <wimp_box>	workarearect;
    <icon_flags>	flags;
    <icon_data>	data;
  }DATAIcon_ClickWait
Syntax:	void Icon_ClickWait (int t);
Header:	<DeskLib:Icon.h=>Icon>

This function waits for /t/ centiseconds. It is a multitasking wait - although your task is halted, the rest of the desktop continues. If an event occurs, the wait is aborted.DATAIcon Controlling Functions
#Table columns 2
<Icon_BarIcon>
<Icon_BarIconUser>
<Icon_ClickWait>
<Icon_DisposeIndData>
<Icon_ForceRedraw>
<Icon_ForceWindowRedraw>
<Icon_LoseCaret>
<Icon_SetCaret>
<Icon_InitIncDecHandler>
<Icon_ReleaseIncDecHandler>
<Icon_ButtonIsHeld>
#EndTableDATAReading/Writing Icon Contents Functions
#Indent 4
#Table columns 2
<Icon_GetDouble>
<Icon_GetInteger>
<Icon_GetText>
<Icon_GetTextPtr>
<Icon_printf>
<Icon_SetDouble>
<Icon_SetInteger>
<Icon_SetText>
<Icon_SetTextRJ>
<Icon_FileIcon>
<Icon_AlterValidation>
#EndTableDATA�icon_createblock
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure holding a block for creating an icon.

  \{
    <window_handle>	window;
    <icon_block>	icondata;
  }DATA�icon_data
This type is defined in <DeskLib:Wimp.h=>Wimp> as a union for accessing icon data:

  \{
    char	text[<wimp_MAXNAME>];
    <icon_indtext>	indirecttext;
    char	spritename[wimp_MAXNAME];
    <icon_indsprite>	indirectsprite;
  }DATA�Icon_Deselect
Syntax:	void Icon_Deselect (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:Icon.h=>Icon>

This function deselects the icon given, if it is selected.DATA7Icon_DisposeData
Syntax:	void Icon_DisposeData (<icon_data> *data, <icon_flags> flags);
Header:	<TimsLib:Icon.h=>Icon_TL>

This function calls <free>() on the indirected data for the icon whose data block and flags word are given. Obviously the data must have been originally allocated using <malloc>...DATAGIcon_DisposeIndData
Syntax:	void Icon_DisposeIndData (<icon_data> *data, <icon_flags> flags);
Header:	<DeskLib:Icon.h=>Icon>

This function finds the indirected data pointer(s) for the icon whose definition is given, and calls <free>() on them. Obviously, this means they should have been <malloc>ed in the first place!DATAbIcon Dragging Functions
#Indent 4
<Icon_StartDrag>
<Icon_StartSolidDrag>
<Icon_DragSlider>DATA�Icon_DragSlider
Syntax:	int Icon_DragSlider (<window_handle> hnd, <icon_handle> base, icon_handle slider);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	New percentage represented.

This function should be called when you get a click in either the icon /base/ or /slider/, which together make up a slider. From now on, every time a NULL event is received, you should call <Icon_UpdateSlider>.DATAOIcon_FileIcon
Syntax:	void Icon_FileIcon (<window_handle> win, <icon_handle> icon, int filetype);
Header:	<DeskLib:Icon.h=>Icon>

This function takes an indirected text-only icon and converts it to an indirected sprite-only icon containing the sprite for the given filetype. If the sprite is not in the Wimp sprite pool then...DATA�icon_flags
This type is defined in <DeskLib:Wimp.h=>Wimp> as the following union, which can be used for easy access to icon flags:

 \{
   unsigned int value;

   struct
   \{
     unsigned int garbage1	: 6;
     unsigned int font		: 1; /* Font flag */
     unsigned int garbage2	: 8;
     unsigned int handle	: 8; /* Font handle */
   } font;

   struct
   \{
     unsigned int text	: 1;
     unsigned int sprite	: 1;
     unsigned int border	: 1;
     unsigned int hcentre	: 1;
     unsigned int vcentre	: 1;
     unsigned int filled	: 1;
     unsigned int font	: 1;
     unsigned int needshelp	: 1;
     unsigned int indirected	: 1;
     unsigned int rightjustify	: 1;
     unsigned int allowadjust	: 1;
     unsigned int halfsize	: 1;
     unsigned int buttontype	: 4;
     unsigned int esg	: 5;
     unsigned int selected	: 1;
     unsigned int shaded	: 1;
     unsigned int deleted	: 1;
     unsigned int foreground	: 4;
     unsigned int background	: 4;
   } data;
 }DATAhIcon_ForceRedraw
Syntax:	<os_error> *Icon_ForceRedraw (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	Pointer to error, or <NULL> if none.

This function forces the WIMP to redraw just the icon contents. It is equivalent to (and in fact <#define=>define>d as):

{fCode;align centre}<Wimp_SetIconState>(hnd,icon,0,0);DATA�Icon_ForceWindowRedraw
Syntax:	void Icon_ForceWindowRedraw (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:Icon.h=>Icon>

This function forces the WIMP to redraw the whole of the icon area, including the 3D border.DATAIcon_GetBgCol
Syntax:	int Icon_GetBgCol (<icon_block> *icon);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	Background colour of icon.

This function finds the foreground colour of an icon whose definition is passed to it. It copes with outline fonts in icons.DATA/Icon_GetDouble
Syntax:	double Icon_GetDouble (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	Value of icon contents.

This function reads the text contents of the given icon and returns it converted to a floating-point value. 0 is returned if an error occurs.DATAIcon_GetFgCol
Syntax:	int Icon_GetFgCol (<icon_block> *icon);
Header:	<TimsLib:Icon.h=>Icon_TL>
	<DeskLib:Icon.h=>Icon>

Returns:	Foreground of icon.

This function finds the foreground colour of an icon whose definition is passed to it. It copes with outline fonts in icons.DATA(Icon_GetInteger
Syntax:	int Icon_GetInteger (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	Value of icon contents.

This function reads the text contents of the given icon and returns it converted to an integer value. 0 is returned if an error occurs.DATA�Icon_GetSelect
Syntax:	<BOOL> Icon_GetSelect (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	<TRUE> if selected.

This function reads whether the specified icon is selected.DATA�Icon_GetShade
Syntax:	<BOOL> Icon_GetShade (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	<TRUE> if shaded.

This function reads whether the specified icon is shaded.DATAIcon_GetText
Syntax:	void Icon_GetText (<window_handle> hnd, <icon_handle> icon, char *t);
Header:	<DeskLib:Icon.h=>Icon>

This function copies the text from the specified icon into the array pointed to by /t/.

Sprite-only icons have their sprite name copied into the array.DATA�Icon_GetTextPtr
Syntax:	char *Icon_GetTextPtr (<window_handle> win, <icon_handle> icon);
Headers:	<TimsLib:Icon.h=>Icon_TL>
	<DeskLib:Icon.h=>Icon>

Returns:	Pointer to text.

This function gets the pointer to the actual indirected text of the given icon. If the given icon is not an indirected text icon, the pointer will be invalid. This allows you to change/read the contents of the icon easily.DATAicon_handle
This type is defined in <DeskLib:Wimp.h=>Wimp> as a type holding an icon handle. It is defined as an /int/.DATA�icon_indsprite
This type is defined in <DeskLib:Wimp.h=>Wimp> as a
structure holding the icon data for an
indirected sprite icon.

  \{
    const char		*name;
    void		*spritearea;
    unsigned int	nameisname;
  }DATA�icon_indtext
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure holding the icon data for an indirected text icon.

  \{
    char	*buffer;
    char	*validstring;
    unsigned int	bufflen;
  }DATAIcon_LoseCaret
Syntax:	void Icon_LoseCaret (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:Icon.h=>Icon_h>

This function ensures that the caret is not contained within the icon given. It will not move the caret if it is somewhere else.DATAYIcon_ printf
Syntax:	void Icon_printf (<window_handle> hnd, <icon_handle> icon, char *format, ...);
Header:	<DeskLib:Icon.h=>Icon>

This function writes output to the icon specified under control of the <format string=>pform_>. It is exactly the same as <sprintf>, but instead of passing in a string, you pass in an indirected text icon.DATA�Icon_ReadSlider
Syntax:	int Icon_ReadSlider (<window_handle> hnd, <icon_handle> base, icon_handle slider);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	Percentage represented

This function reads the value represented by the slider specified.DATA&Icon_ScreenPos
Syntax:	void Icon_ScreenPos (<window_handle> win, <icon_handle> icon, <wimp_rect> *rect);
Header:	<DeskLib:Icon.h=>Icon>

This function gets the coordinates of the specified icon and converts them into screen coordinates, returning them in the block pointed to by /rect/.DATA�Icon_Select
Syntax:	void Icon_Select (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:Icon.h=>Icon>

This function selects the given icon, if it is deselected.DATA6Icon_SelectGroup
Syntax:	void Icon_SelectGroup (<window_handle> win, <icon_handle> icons[], <BOOL> select);
Header:	<TimsLib:Icon.h=>Icon_TL>
	<DeskLib:Icon.h=>Icon>

This function selects or deselects (depending on {/}select{/}) the icons specified in the array /icons/. The array is terminated by -1.DATAIcon_SetBackColour
Syntax:	void Icon_SetBackColour (<window_handle> win, <icon_handle> icon, int wimpcol);
Header:	<DeskLib:Icon.h=>Icon>

This function sets the background colour of an icon. Note that it does not cope with outline font icons, and will completely muck them up.DATASIcon_SetBgCol
Syntax:	<os_error> *Icon_SetBgCol (<window_handle> win, <icon_handle> icon, int col);
Header:	<TimsLib:Icon.h=>Icon_TL>
	<DeskLib:Icon.h=>Icon>

Returns:	Pointer to error, or <NULL> if none.

This function-like macro changes the background colour of the specified icon to /col/. This does not work with outline fonts.DATAIcon_SetCaret
Syntax:	void Icon_SetCaret (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:Icon.h=>Icon>

This function sets the caret within the requested icon, at the righthand end of the text. If the icon is not a text icon, no error is generated.DATAcIcon_SetDouble
Syntax:	void Icon_SetDouble (<window_handle> hnd, <icon_handle> icon, double n, int dp);
Header:	<DeskLib:Icon.h=>Icon>

This function sets the given icon's text to hold the number /n/, given to /dp/ decimal places. The icon is redrawn. If the number is too long it will be chopped off. No error is returned if the icon is not text.DATAHIcon_SetFgCol
Syntax:	<os_error> *Icon_SetFgCol (<window_handle> win, <icon_handle> icon, int col);
Header:	<TimsLib:Icon.h=>Icon_TL>
	<DeskLib:Icon.h=>Icon>

Returns:	Pointer to error, or <NULL> if none.

This function changes the foreground colour of the specified icon to /col/. This does not work with outline fonts.DATA�Icon_SetFlags
Syntax:	<os_error> *Icon_SetFlags (<window_handle> win, <icon_handle> icon, int flags, <BOOL> set);
Header:	<TimsLib:Icon.h=>Icon_TL>
	<DeskLib:Icon.h=>Icon>

Returns:	Pointer to error, or <NULL> if none.

This function-like macro sets the specified icon's flags according to /flags/ and /set/. The flags given are all either set (if {/}set{/} is <TRUE>) or unset (if {/}set{/} is <FALSE>).DATAIcon_SetForeColour
Syntax:	void Icon_SetForeColour (<window_handle> win, <icon_handle> icon, int wimpcol);
Header:	<DeskLib:Icon.h=>Icon>

This function sets the foreground colour of an icon. Note that it does not cope with outline font icons, and will completely muck them up.DATA<Icon_SetInteger
Syntax:	void Icon_SetInteger (<window_handle> hnd, <icon_handle> icon, int n);
Header:	<DeskLib:Icon.h=>Icon>

This function sets the given icon's text to hold the number /n/. The icon is redrawn. If the number is too long it will be chopped off. No error is returned if the icon is not text.DATA�Icon_SetRadios
Syntax:	void Icon_SetRadios (<window_handle> hnd, <icon_handle> first, icon_handle last, icon_handle icon);
Header:	<DeskLib:Icon.h=>Icon>

This function selects the icon whose window and icon handle is given in /hnd/ and /icon/ respectively. All other icons from /first/ to /last/ will be selected.

It is intended that this function is used to select one option from a group of radio icons.DATA�Icon_SetSelect
Syntax:	void <Icon_SetSelect> (<window_handle> hnd, <icon_handle> icon, int s);
Header:	<DeskLib:Icon.h=>Icon>

This function sets or deselects the icon specified, depending on whether /s/ is 1 or 0.DATA�Icon_SetShade
Syntax:	void <Icon_SetShade> (<window_handle> hnd, <icon_handle> icon, int s);
Header:	<DeskLib:Icon.h=>Icon>

This function shades or unshades the icon specified, depending on whether /s/ is 1 or 0.DATA�Icon_SetSlider
Syntax:	int Icon_SetSlider (<window_handle> hnd, <icon_handle> base, icon_handle slider, int pos);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	Position set

This function sets the slider to represent the percentage given in /pos/.DATAKIcon_SetText
Syntax:	void Icon_SetText (<window_handle> hnd, <icon_handle> icon, char *t);
Header:	<DeskLib:Icon.h=>Icon>

This function copies the string pointed to by /t/ into the indirected text of the specified icon. If /t/ is a null pointer, icon text is set to "�". If the icon is not the right type, no error occurs.DATA�Icon_SetTextRJ
Syntax:	void Icon_SetTextRJ (<window_handle> hnd, <icon_handle> icon, char *t);
Header:	<DeskLib:Icon.h=>Icon>

This function copies the string pointed to by /t/ into the indirected text of the specified icon. If /t/ is a null pointer, icon text is set to "". If the icon is not the right type, no error occurs. If the text does not fit in the icon buffer, it is chopped off at the LEFT and prefixed by "...".DATA�Icon_Shade
Syntax:	void Icon_Shade (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:Icon.h=>Icon>

This function shades the specified icon if it is unshaded. In addition the caret will be removed.DATA0Icon_ShadeGroup
Syntax:	void Icon_ShadeGroup (<window_handle> win, <icon_handle> icons[], <BOOL> shade);
Header:	<TimsLib:Icon.h=>Icon_TL>
	<DeskLib:Icon.h=>Icon>

This function shades or unshades (depending on {/}shade{/}) the icons specified in the array /icons/. The array is terminated by -1.DATA�Slider Operations Functions
#Table 2 21
<Icon_DragSlider>
<Icon_ReadSlider>
<Icon_SetSlider>
<Icon_UpdateSlider>
#EndTableDATALIcon_StartDrag
Syntax:	void Icon_StartDrag (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:Icon.h=>Icon>

This function starts a drag operation of the given icon. It calculates the values needed and calls the SWI <Wimp_DragBox=>SWI:Wimp_DragBox>. It does not use DragASprite, for that use <DragASprite_DragIcon>.DATAIcon_StartSolidDrag
Syntax:	os_error *Icon_StartSolidDrag (window_handle hnd, icon_handle icon);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	Pointer to error, or <NULL> if none.

This is simply a <#define=>define>d alternative name for <DragASprite_DragIcon>.DATA�Reading/Writing Icon State Functions
#indent 1
#Table columns 2
<Icon_Deselect>
<Icon_GetSelect>
<Icon_GetShade>
<Icon_Select>
<Icon_SetRadios>
<Icon_SetSelect>
<Icon_SetShade>
<Icon_Shade>
<Icon_Unshade>
<Icon_WhichRadio>
<Icon_WhichRadioInEsg>
<Icon_SetForeColour>
<Icon_SetBackColour>
<Icon_SetFgCol>
<Icon_SetBgCol>
<Icon_ShadeGroup>
<Icon_SelectGroup>
<Icon_GetFgCol>
<Icon_GetBgCol>
<Icon_ScreenPos>
<Icon_SetFlags>
#EndTableDATA�TimsLib:Icon.h
This header is an extension to <DeskLib:Icon.h=>Icon>.

Functions:

#indent 4
#Table 4 20
<Icon_DisposeData>
<Icon_SetFlags>
<Icon_ShadeGroup>
<Icon_SelectGroup>
<Icon_SetFgCol>
<Icon_SetBgCol>
<Icon_GetFgCol>
<Icon_GetTextPtr>
#EndTable
#indent 0

Macros:

#indent 4
#Table 3 20
<NO_ICON_DATA>
<TXT_ONLY>
<SPR_ONLY>
<TXT_AND_SPR>
<ICON_TYPE>
#EndTable
#indent 0DATA.ICON_TYPE
Syntax:	int ICON_TYPE (int flags);
Header:	<TimsLib:Icon.h=>Icon_TL>

Returns:	Icon type.

This function-like macro extracts the icon type from the icon flags and returns a value 0-3 (<NO_ICON_DATA>, <TXT_ONLY>, <SPR_ONLY>, or <TXT_AND_SPR>). It is defined as {fCode}((flags) & 3){f}.DATA�Icon_Unshade
Syntax:	void Icon_Unshade (<window_handle> hnd, <icon_handle> icon);
Header:	<DeskLib:Icon.h=>Icon>

This function unshades the specified icon if it is shaded.DATA�Icon_UpdateSlider
Syntax:	int Icon_UpdateSlider (<window_handle> hnd, <icon_handle> base, icon_handle slider, int pos);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	New slider position

This function should be called on NULL events while the slider is being dragged. It calculates a new slider percentage from the mouse position and, if different from /pos/, alters the icon to show the new length.DATA�Icon_WhichRadio
Syntax:	int Icon_WhichRadio (<window_handle> hnd, <icon_handle> first, icon_handle last);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	Icon number of selected icon.

This function checks through a group of icon from /first/ to /last/ and returns the icon number of the first icon it finds which is selected. If none are selected, it returns the value of /last/.

It is intended that this function be used to find which out of a range of options is chosen.DATA9Icon_WhichRadioInEsg
Syntax:	int Icon_WhichRadioInEsg (<window_handle> win, int esg);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	Icon number of selected icon.

This function checks through all the icons in window /win/ with ESG /esg/ and returns the icon number of the first icon it finds which is selected.DATA*icon_incdecblock
This type is defined in <DeskLib:Icon.h=>Icon> as the following structure, used for holding data for IncDec handlers:
{wrap off}
\{
    <window_handle>	window;		/* window holding icons */
    <icon_handle>	texticon;	/* text icon holding integer */
    <icon_handle>	incrementicon;	/* increment icon handle */
    <icon_handle>	decrementicon;	/* decrement icon handle */
    <BOOL>		loop;		/* loop beyond limits */
    unsigned int	step;		/* step to inc/dec */
    int			min;		/* lower limit */
    int			max;		/* upper limit */
}DATA�Icon_InitIncDecHandler
Syntax:	<icon_incdecblock> *Icon_InitIncDecHandler(<window_handle> window, <icon_handle> texticon, icon_handle incrementicon, icon_handle decrementicon, <BOOL> loop, unsigned int step, int min, int max,int start);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	Result of the claims

This function claims handler for clicks on the icons /incrementicon/ and /decrementicon/, which affect the icon /texticon/, altering the integer number in it in the range /min/ to /max/. If /loop/ is <TRUE> then the value loops around past the limits. /step/ is the change for each click on the icons and /start/ is the initial value.DATAKIcon_ReleaseIncDecHandler
Syntax:	<BOOL> Icon_ReleaseIncDecHandler (<icon_incdecblock> *incdecblock);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	<TRUE> if successful

Given the block previously returned by <Icon_InitIncDecHandler>, this releases the handlers installed by that function and frees the memory used by the block.DATA�Icon_AlterValidation
Syntax:	void Icon_AlterValidation (<window_handle> win, <icon_handle> icon, char *val);
Header:	<DeskLib:Icon.h=>Icon>

This function alters the validation string of the given icon to that contained in /val/ and redraws the icon (to account for border type changes etc). If the new validation string is bigger than the space used by the old one, you're in trouble.DATA�Icon_ButtonIsHeld
Syntax:	<BOOL> Icon_ButtonIsHeld (void);
Header:	<DeskLib:Icon.h=>Icon>

Returns:	<TRUE> if a mouse button is downDIR$LL�DF���W�7&�LEFTPEF���9�7&�RIGHTDATA�iconbar_LEFT
This macro is defined in <Wimp.h=>Wimp> as a macro containing the window handle of the left side of the icon bar, as used when creating an icon. It is defined as -2.DATA�iconbar_RIGHT
This macro is defined in <Wimp.h=>Wimp> as a macro containing the window handle of the right side of the icon bar, as used when creating an icon. It is defined as -1.DATA�if
This command is the same in just about every computer language invented. It has the form:

{fCode;align centre}if (\<condition>) \<statement1>; else \<statement2>;{f;align}

\<condition> is evaluated. If it is non-zero (true) then statement1 is executed. If it is zero (false) then statement2 is executed.

Both statements may be compound statements ie several statements enclosed in \{}, in that case they will not be followed by semicolons.

eg
#fCode
    if (a=='L') <puts>("Load");
    else if (a=='S') puts("Save");
    else puts("Don't know");
#f

This prints �Load� if a is �L�, �Save� if a is �S�, or �Don�t know� otherwise.DIR$,,�HF����j�"�!RootDATA�#if
This directive has the form:

#fCode
    #if \<expression>
       \<statements1>;
    <#else=>else_>
       \<statements2>;
    #endif
#f

\<expression> is any constant expression using the normal operators. It may only involve constant values (macros and numbers), not variables or functions.

If it evaluates to 1 (true) then \<statements1> is compiled else \<statements2> is compiled. The 'else' part is optional.DATA�#ifdef
This directive tests if a particular macro is defined with <#define=>define>. It has the form:

#fCode
    #ifdef \<macroname>
        \<statements1>
    #<else=>else_>
        \<statements2>
    #endif
#f

If \<macroname> is defined, then \<statements1> is compiled. The '#else' bit is optional. If it is present, the if \<macroname> is not defined, \<statements2> is compiled.

After '#endif', normal compilation resumes.DATA�#ifndef
This directive tests if a particular macro is not defined with <#define=>define>. It has the form:

#fCode
    #ifndef \<macroname>
        \<statements1>
    <#else=>else_>
        \<statements2>
    #endif
#f

If \<macroname> is not defined, then \<statements1> is compiled. The '#else' bit is optional. If it is present, the if \<macroname> is defined, \<statements2> is compiled.

After '#endif', normal compilation resumes.DATA)IMPORT <label>
This allows references to a label which is defined externally ie in a different file.

eg

#fCode
      #pragma asm

          IMPORT puts
      .printhello
          STMFD  sp!,\{r0-r12,lk}
          <ADR>    a1,string
          BL     <puts>
          LDMFD  sp!,\{r0-r12,pc}^
      .string
          <DCB>    "Hello Word",0

      #pragma endasm

      void main (void)
      \{
          printhello();
      }
#f

This program above prints �Hello World� on the
screen, using <puts> which is imported from the
run time library.DATA #include
This is followed by a filename, either in angle brackets \<> or in quote marks "". The named file is inserted into the source code at this point. This is normally used to insert so-called "header files" which contain external function declarations. It is these header files which are the subject of most of this help!

eg.	\#include \<<stdio.h=>stdio>>
	\#include "<DeskLib:Event.h=>Event>"

The difference between the brackets and quote marks is that those in quote marks are:

#Tab
�	Searched for in the same place as your source file. eg if your source file is "Source.c.prog", then "Source.h" is searched.
�	Included in the Make file dependency list by 'Create' (Easy C).

Both types are searched for:

�	At the path specified when compiling.
�	In the system header file path.DIR$DDlSF����
�"�MAXTF���h�"�MINDATA�INT_MAX
This macro is defined in <limits.h> and represents the maximum value which can be stored in an int. In Easy C it is defined as 0x7fffffff (2147483647).DATA�INT_MIN
This macro is defined in <limits.h> and represents the minimum value which can be stored in an int. In Easy C it is defined as 0x80000000 (-2147483648).DATA4TimsLib:Interface.h
This header defines function-like macros for accessing some Interface Manager SWIs.

Function-like macros:

#table columns 2
<Interface_SlabButton>
<Interface_Render3dWindow>
<Interface_Initialise>
<Interface_Closedown>
<Interface_SetWorkareaPointer>
<Interface_RemoveWorkareaPointer>
<Interface_Poll>
<Interface_SendHelp>
<Interface_Plot3dIcon>
<Interface_BoundingBox>
#endtable

Type:

{align centre}<wimp_pointer>{align}

Interface Manager is a PD module by Simon Huntingdon which provides many useful functions for Wimp programming.DIR$��xXF����U&8BoundingBox�YF�����U&$Closedown�ZF���a�U&'Initialise�[F���x�U&JPlot3dIconH]F����U&Polld^F����U&KRender3dWindow�_F���;�U&<SendHelp�`F���\�U&RSetWorkareaPointer@bF���L�U&8SlabButtonxcF����U&[RemoveWorkareaPointerDATA8Interface_BoundingBox
Syntax:	<os_error> *Interface_BoundingBox (<icon_block> *icon);
Header:	<TimsLib:Interface.h=>Interface>

Returns:	Pointer to error, or <NULL> if none.

This function-like macro calls the SWI Interface_BoundingBox. For more information see the documentation supplied with Interface.DATA$Interface_Closedown
Syntax:	<os_error> *Interface_Closedown (void);
Header:	<TimsLib:Interface.h=>Interface>

Returns:	Pointer to error, or <NULL> if none.

This function-like macro calls the SWI Interface_Closedown. For more information see the documentation supplied with Interface.DATA'Interface_Initialise
Syntax:	<os_error> *Interface_Initialise (void);
Header:	<TimsLib:Interface.h=>Interface>

Returns:	Pointer to error, or <NULL> if none.

This function-like macro calls the SWI Interface_Initialise. For more information see the documentation supplied with Interface.DATAJInterface_Plot3dIcon
Syntax:	<os_error> *Interface_Plot3dIcon (<window_state> *state, <icon_block> *ic);
Header:	<TimsLib:Interface.h=>Interface>

Returns:	Pointer to error, or <NULL> if none.

This function-like macro calls the SWI Interface_Plot3dIcon. For more information see the documentation supplied with Interface.DATAInterface_Poll
Syntax:	<os_error> *Interface_Poll (int poll);
Header:	<TimsLib:Interface.h=>Interface>

Returns:	Pointer to error, or <NULL> if none.

This function-like macro calls the SWI Interface_Poll. For more information see the documentation supplied with Interface.DATAKInterface_Render3dWindow
Syntax:	<os_error> *Interface_Render3dWindow (<window_redrawblock> *redraw);
Header:	<TimsLib:Interface.h=>Interface>

Returns:	Pointer to error, or <NULL> if none.

This function-like macro calls the SWI Interface_Render3dWindow. For more information see the documentation supplied with Interface.DATA<Interface_SendHelp
Syntax:	<os_error> *Interface_SendHelp (<message_header> *message_block);
Header:	<TimsLib:Interface.h=>Interface>

Returns:	Pointer to error, or <NULL> if none.

This function-like macro calls the SWI Interface_SendHelp. For more information see the documentation supplied with Interface.DATARInterface_SetWorkareaPointer
Syntax:	<os_error> *Interface_SetWorkareaPointer (<wimp_pointer> *pointer);
Header:	<TimsLib:Interface.h=>Interface>

Returns:	Pointer to error, or <NULL> if none.

This function-like macro calls the SWI Interface_SetWorkareaPointer. For more information see the documentation supplied with Interface.DATA8Interface_SlabButton
Syntax:	<os_error> *Interface_SlabButton (<mouse_block> *mouse);
Header:	<TimsLib:Interface.h=>Interface>

Returns:	Pointer to error, or <NULL> if none.

This function-like macro calls the SWI Interface_SlabButton. For more information see the documentation supplied with Interface.
DATA[Interface_RemoveWorkareaPointer
Syntax:	<os_error> *Interface_RemoveWorkareaPointer (<wimp_pointer> *pointer);
Header:	<TimsLib:Interface.h=>Interface>

Returns:	Pointer to error, or <NULL> if none.

This function-like macro calls the SWI Interface_RemoveWorkareaPointer. For more information see the documentation supplied with Interface.DATAisalnum
#Parent ctype
Syntax:	int isalnum (int c);
Header:	<ctype.h=>ctype>

Returns:	Non-zero if c == 'A'-'Z','a'-'z', or '0'-'9'.

This function tests if the given character is alphanumeric.

#align centre
isalnum(c) = ( <isalpha> (c) || <isdigit> (c) );DATA�isalpha
#Parent ctype
Syntax:	int isalpha (int c);
Header:	<ctype.h=>ctype>

Returns: Non-zero if c == 'A'-'Z', or 'a'-'z'.

This function tests if the given character is alphabetic.DATA�iscntrl
#Parent ctype
Syntax:	int iscntrl (int c);
Header:	<ctype.h=>ctype>

Returns:	Non-zero if c is a control character.

This function tests if the given character is a control character.DATA�isdigit
#Parent ctype
Syntax:	int isdigit (int c);
Header:	<ctype.h=>ctype>

Returns: Non-zero if c == '0'-'9'.

This function tests if the given character is a numeric character (digit).DATA�isgraph
#Parent ctype
Syntax:	int isgraph (int c);
Header:	<ctype.h=>ctype>

Returns:	Non-zero if c is a graphic character.

This function tests if the given character is any printing character except space ('�').DATA�islower
#Parent ctype
Syntax:	int islower (int c);
Header:	<ctype.h=>ctype>

Returns:	Non-zero if c == 'a'-'z'.

This function tests if the given character is any lower case letter.DATA�isprint
#Parent ctype
Syntax:	int isprint (int c);
Header:	<ctype.h=>ctype>

Returns:	Non-zero if c is any printing character.

This function tests if the given character is any printing character including space (' ').DATA5ispunct
#Parent ctype
Syntax:	int ispunct (int c);
Header:	<ctype.h=>ctype>

Returns:	Non-zero if c is any punctuation character.

This function tests if the given character is any non-alphanumeric printing character except space ('�').

#align centre
ispunct(c) = ( <isgraph> (c) && !<isalnum> (c) );DATA�isspace
#Parent ctype
Syntax:	int isspace (int c);
Header:	<ctype.h=>ctype>

Returns:	Non-zero if c is a white space character.

This function tests if the given character is
any white space character ie one of the
following:

#indent 6
#Table Columns 2
Space (' ')
Form feed ('\\f')
Newline ('\\n')
Carriage return ('\\r')
Horizontal tab ('\\t')
Vertical tab ('\\v')
#EndTableDATA�isupper
#Parent ctype
Syntax:	int isupper (int c);
Header:	<ctype.h=>ctype>

Returns:	Non-zero if c == 'A'-'Z'.

This function tests if the given character is any upper case letter.DATA�isxdigit
#Parent ctype
Syntax:	int isxdigit (int c);
Header:	<ctype.h=>ctype>

Returns:	Non-zero if c == '0'-'9', or 'A'-'F'.

This function tests if the given character is any hexadecimal digit.DIR$((oF���l�"�bufDATA�jmp_buf
The type jmp_buf is defined in <setjmp.h=>setjmp_h> as an object capable of holding information about the current environment. In Easy C it is defined as a pointer to an array of 22 ints.DIR$ppXpF���'F#�bevelled�pF���F#�mitred�qF���F#�roundDATA�join_bevelled
This macro is defined in <drawmod.h=>drawmod>. It is a value representing a bevelled join. It is defined as ((unsigned char)0x02).DATA�join_mitred
This macro is defined in <drawmod.h=>drawmod>. It is a value representing a mitred join. Is it defined as ((unsigned char)0x00).DATA�join_round
This macro is defined in <drawmod.h=>drawmod>. It is a value representing a rounded join. Is it defined as ((unsigned char)0x01).DIR$���rF�����$�arith_dtF����*�$�env_DvF���zɯ$umem_�vF������$.os_DATA�Arithmetic Functions
These functions have been optimised to make them very fast.

#Indent 5
#Table 3 20
<_kernel_sdiv>
<_kernel_sdiv10>
<_kernel_srem>
<_kernel_udiv>
<_kernel_udiv10>
<_kernel_urem>
#EndTable

#Indent 0
The division functions also calculate the remainder and return it in the second argument (a2). Although this is not accessible from C, using this feature when interfacing from Assembly Language could be a potential timesaver.DATA�Environment Management Functions
#Table 9
<_kernel_current_stack_chunk>
<_kernel_unwind>
<_kernel_procname>
<_kernel_language>
<_kernel_command_string=>_kernel_command_str>
<_kernel_setreturncode>
<_kernel_exit>
<_kernel_raise_error>
<_kernel_exittraphandler>
<_kernel_hostos>
<_kernel_fpavailable>
<_kernel_last_oserror=>_kernel_last_oserro>
<_kernel_getenv>
<_kernel_setenv>
<_kernel_escape_seen>
<_kernel_irqs_on>
<_kernel_irqs_off>
<_kernel_irqs_disabled>
#EndTableDATAuMemory Management Functions
#Indent 2
<_kernel_alloc>
<_kernel_register_allocs>
<_kernel_register_slotextend>DATA.Operating System Calls Functions
#Indent 2
#Table 7
<_kernel_swi>
<_kernel_swi_c>
<_kernel_osbyte>
<_kernel_osrdch>
<_kernel_oswrch>
<_kernel_osbget>
<_kernel_osbput>
<_kernel_osgbpb>
<_kernel_osword>
<_kernel_osfind>
<_kernel_osfile>
<_kernel_osargs>
<_kernel_oscli>
<_kernel_system>
#EndTableDATADeskLib:Kbd.h
Version: 1.01 (24 Jul 1993)
#line
This header declares functions for reading keypresses:

Functions:

#indent 1
#Table columns 3
<Kbd_KeyDown>
<Kbd_GET>
<Kbd_GetModifiers>
#EndTable
#indent

Types:

#indent 9
#Table 1 20
<kbd_neginkey>
<kbd_modifiers>
#EndTableDIR$���yF���O�0%@GET{F���	�0%�GetModifiers�|F�����0%EKeyDown8~F���a�0%�modifiers�F�����0%�neginkey��F���
V&TLDATA@Kbd_GET
Syntax:	char Kbd_GET (void);
Header:	<DeskLib:Kbd.h=>Kbd>

Returns:	ASCII code of next key pressed.

This function reads a character from the current input stream. It waits until one is available, so may halt the program temporarily.

This function is identical to OS_ReadC, or <GET=>Basic:GET> in Basic.DATA�Kbd_GetModifiers
Syntax:	<modifiers> Kbd_GetModifiers (<BOOL> lr);
Header:	<TimsLib:Kbd.h=>Kbd_TL>

Syntax:	<kbd_modifiers> Kbd_GetModifiers (<BOOL> lr);
Header:	<DeskLib:Kbd.h=>Kbd>

Returns:	The status of the modifier keys.

This function finds out the state of various modifier ({*}Shift{*}, {*}Ctrl{*} etc) keys. If /lr/ is <TRUE> then the structure returned will correctly contain the state of the individual left and right keys, else either will count.DATAEKbd_KeyDown
Syntax:	<BOOL> Kbd_KeyDown (int keynum);
Header:	<DeskLib:Kbd.h=>Kbd>

Returns:	<TRUE> if the key is being pressed.

This function checks to see if the given key is currently being pressed (not depressed - we're not interested in its mental state).

/keynum/ is (-1)-<internal key number=>SWI:os_byte121a>DATA�kbd_modifiers
This type is defined in <DeskLib:Kbd.h=>Kbd>. It is a structure used to hold the status of the modifier keys as follows:

  \{
    unsigned alt		: 1;
    unsigned ctrl		: 1;
    unsigned shift		: 1;
    unsigned left_alt		: 1;
    unsigned left_ctrl		: 1;
    unsigned left_shift		: 1;
    unsigned right_alt		: 1;
    unsigned right_ctrl		: 1;
    unsigned right_shift	: 1;
  }DATA�kbd_neginkey
This enumerated type is defined in <DeskLib:Kbd.h=>Kbd>. It contains the negative inkey codes returned by the keys you are most likely to need to test for in a Wimp environemnt.

\{
    inkey_ADJUST	= -12,	/* Adjust button    */
    inkey_MENU		= -11,	/* Menu button      */
    inkey_SELECT	= -10,	/* Select button    */
    inkey_RALT		= -9,	/* Right ALT key    */
    inkey_LALT		= -6,	/* Left ALT key     */
    inkey_ALT		= -3,	/* Either ALT key   */
    inkey_RCTRL		= -8,	/* Right CTRL key   */
    inkey_LCTRL		= -5,	/* Left CTRL key    */
    inkey_CTRL		= -2,	/* Either CTRL key  */
    inkey_RSHIFT	= -7,	/* Right SHIFT key  */
    inkey_LSHIFT	= -4,	/* Left SHIFT key   */
    inkey_SHIFT		= -1	/* Either SHIFT key */
}DATATimsLib:Kbd.h
This header declares one function and type for the purpose of reading the status of the modifier keys (Shift, Ctrl etc). This is useful in handling mouse clicks sometimes (eg Shift- Select on !Printers).

Function:	<Kbd_GetModifiers>

Type:	<modifiers>DATA7kernel.h
The \<kernel.h> header declares many functions which access the built in features of RISC OS. Obviously, programs using these functions will not be portable between different computers unless the same functions are available on both. It also defines ten types and two macros.

Functions:

#Indent 4
#Table 2 25
<Environment Management=>k_env_>
<Operating System Calls=>k_os_>
<Memory Management=>k_mem_>
<Arithmetic=>k_arith_>
#EndTable

#Indent 0
Macros:

#Indent 11
#Table 1 20
<_kernel_NONX>
<_kernel_ERROR>
#EndTable

#Indent 0
Types:

#Indent 7
#Table 5 23
<_kernel_oserror>
<_kernel_stack_chunk>
<_extended_fp_number>
<_kernel_unwindblock>
<_kernel_swi_regs>
<_kernel_osgbpb_block=>_kernel_osgbpb_bloc>
<_kernel_osfile_block=>_kernel_osfile_bloc>
<allocproc>
<freeproc>
<_kernel_ExtendProc>
#EndTableDATAIDeskLib:KernelSWIs.h
Version: 1.02 (3 Jul 1994)
#line
This header declares three low-level functions.

Functions:

#indent 3
#Table columns 2
<OS_Byte=>OS_Byte_>
<OS_Word>
<OS_ReadVarVal>
<OS_ReadModeVariable>
#EndTable
#indent

Types:

#indent 4
#Table columns 2
<osbyte_number>
<osword_number>
<mode_variable>
#EndTableDIR$LL��F����LF&�blockd�F�����E&�pressDATA�key_block
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is a structure containing information returned by a Key_Pressed event.

  \{
    <caret_block>	caret;
    <key_press>		code;
  }DATA�key_press
This type is defined in <DeskLib:Wimp.h=>Wimp> as a type capable of holding a key code as returned by the Wimp. It is actually defined as an /int/.DATAxDeskLib:KeyCodes.h
Version: 1.00 (24 Jan 1992)
This header defines all the keycodes (as used by the WIMP) of special keys using the following macros:

#table 34 19
BACKSPACE
RETURN
ESCAPE
HOME
DELETE
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
PRINT
TAB
COPY
CURSORLEFT
CURSORRIGHT
CURSORDOWN
CURSORUP
PAGEDOWN
PAGEUP
INSERT
SHIFT_BACKSPACE �
SHIFT_RETURN    �
SHIFT_ESCAPE    �
SHIFT_HOME      �
SHIFT_DELETE    �
SHIFT_F1
SHIFT_F2
SHIFT_F3
SHIFT_F4
SHIFT_F5
SHIFT_F6
SHIFT_F7
SHIFT_F8
SHIFT_F9
SHIFT_F10
SHIFT_F11
SHIFT_F12
SHIFT_PRINT
SHIFT_TAB
SHIFT_COPY
SHIFT_CURSORLEFT
SHIFT_CURSORRIGHT
SHIFT_CURSORDOWN
SHIFT_CURSORUP
SHIFT_PAGEDOWN
SHIFT_PAGEUP
SHIFT_INSERT
CTRL_BACKSPACE  �
CTRL_RETURN     �
CTRL_ESCAPE     �
CTRL_HOME       �
CTRL_DELETE     �
CTRL_F1
CTRL_F2
CTRL_F3
CTRL_F4
CTRL_F5
CTRL_F6
CTRL_F7
CTRL_F8
CTRL_F9
CTRL_F10
CTRL_F11
CTRL_F12
CTRL_PRINT
CTRL_TAB
CTRL_COPY
CTRL_CURSORLEFT
CTRL_CURSORRIGHT
CTRL_CURSORDOWN
CTRL_CURSORUP
CTRL_PAGEDOWN
CTRL_PAGEUP
CTRL_INSERT
CTRL_A
CTRL_B
CTRL_C
CTRL_D
CTRL_E
CTRL_F
CTRL_G
CTRL_H
CTRL_I
CTRL_J
CTRL_K
CTRL_L
CTRL_M
CTRL_N
CTRL_O
CTRL_P
CTRL_Q
CTRL_R
CTRL_S
CTRL_T
CTRL_U
CTRL_V
CTRL_W
CTRL_X
CTRL_Y
CTRL_Z
CTRL_SHIFT_BACKSPACE �
CTRL_SHIFT_RETURN    �
CTRL_SHIFT_ESCAPE    �
CTRL_SHIFT_HOME      �
CTRL_SHIFT_DELETE    �
CTRL_SHIFT_F1
CTRL_SHIFT_F2
CTRL_SHIFT_F3
CTRL_SHIFT_F4
CTRL_SHIFT_F5
CTRL_SHIFT_F6
CTRL_SHIFT_F7
CTRL_SHIFT_F8
CTRL_SHIFT_F9
CTRL_SHIFT_F10
CTRL_SHIFT_F11
CTRL_SHIFT_F12
CTRL_SHIFT_PRINT
CTRL_SHIFT_TAB
CTRL_SHIFT_COPY
CTRL_SHIFT_CURSORLEFT
CTRL_SHIFT_CURSORRIGHT
CTRL_SHIFT_CURSORDOWN
CTRL_SHIFT_CURSORUP
CTRL_SHIFT_PAGEDOWN
CTRL_SHIFT_PAGEUP
CTRL_SHIFT_INSERT
#endtable

All macros are preceded by 'keycode_'.

Those marked with a '�' are defined as UNDEFINED, ie -1. They return the same code as their base key eg SHIFT-RETURN gives the same code as just RETURN. To detect the SHIFT version, you need to use <Kbd_KeyDown>.DIR$00��F������/,L_ȕF����<�"�labs��F���Ȣ�/0Largest_�F����/�LC_p�F���Z<�"jlconvܞF���}��/,LDBL_��F����"�ldexp��F����}�"jLDF�F���bA�"�ldivԦF���T��/(ldiv_�F����m�"%LDR�F����N�%PLeafNamed�F���F(V&Libx�F������/`lib_<�F���먻"olimits��F������/linkdir_4�F���X�?%LinkList<�F���\��/ LinkList_�F���л"6locale8�F�����"�localeconv�F������"�localtime�F���Q�".log4�F����-�"log10L�F������/DLONG_��F���3�"�longjmpDIR$,,[E	F����^�7�tmpnamFREE��D	pnam
#Parent stdio
The macro L_tmpnam is defined in <stdio.h=>stdio> as the length of the longest filename that will be used by the function <tmpnam>. In Easy C it is defined as the same as <FILENAME_MAX=>FILENAME_M>.DATA�labs
Syntax:	long int labs (long int x);
Header:	<stdlib.h=>stdlib>

Returns:	The absolute value of x.

This function is identical to the function <abs>, except that all numbers involved are long ints.DIR$00̖F����(#3path_strDATA3Largest_path_str
This type is defined in <drawftypes.h=>drawftypes> as a type whose size is the same as that of the largest path component. It is defined as the following union:

 	\{
 	 	<Path_movestr>	a;
 	 	<Path_linestr>	b;
 	 	<Path_curvestr>	c;
 	 	<Path_closestr>	d;
 	 	<Path_termstr>	e;
 	}DIR$��̘F����B�"�ALLP�F���F�"�COLLATE�F����I�"�CTYPE��F���JL�"�MONETARY0�F���O�"�NUMERICԛF����Q�"�TIMEDATA�LC_ALL
This macro is defined in <locale.h=>locale>. It is used with the <setlocale> function and represents all information.DATA�LC_COLLATE
This macro is defined in <locale.h=>locale>. It is used with the <setlocale> function and represents information regarding string collation.DATA�LC_CTYPE
This macro is defined in <locale.h=>locale>. It is used with the <setlocale> function and represents information regarding character type.DATA�LC_MONETARY
This macro is defined in <locale.h=>locale>. It is used with the <setlocale> function and represents information regarding monetary formatting.DATA�LC_NUMERIC
This macro is defined in <locale.h=>locale>. It is used with the <setlocale> function and represents information regarding numeric string format.DATA�LC_TIME
This macro is defined in <locale.h=>locale>. It is used with the <setlocale> function and represents information regarding time formatting.DATAjstruct lconv
This structure is defined in <locale.h=>locale>. It contains information about the current locale, mainly various country-dependent symbols.

  \{
    char *decimal_point;
    char *thousands_sep;
    char *grouping;
    char *int_curr_symbol;
    char *currency_symbol;
    char *mon_decimal_point;
    char *mon_thousands_sep;
    char *mon_grouping;
    char *positive_sign;
    char *negative_sign;
    char int_frac_digits;
    char frac_digits;
    char p_cs_precedes; 
    char p_sep_by_space;
    char n_cs_precedes;
    char n_sep_by_space;
    char p_sign_posn;
    char n_sign_posn;
  }DIR$,,�F���I͵";DIGD�F���P͵"?EPSILON��F������"�MANT_DIG�F���μ"�MAX��F������"�MAX_10_EXPH�F���4��"�MAX_EXPԢF����ڼ"�MINl�F�����"�MIN_10_EXP�F���ՠ�"�MIN_EXPDATA;LDBL_DIG
This macro is defined in <float.h=>float>.DATA?LDBL_EPSILON
This macro is defined in <float.h=>float>.DATA�LDBL_MANT_DIG
This macro is defined in <float.h=>float>. It gives the number of digits in the mantissa of a variable of type 'long double'.DATA�LDBL_MAX
This macro is defined in <float.h=>float>. It gives the maximum positive value that can be stored in a variable of type 'long double'.DATA�LDBL_MAX_10_EXP
This macro is defined in <float.h=>float>. It gives the maximum base 10 exponent a variable of type 'long double' can contain.DATA�LDBL_MAX_EXP
This macro is defined in <float.h=>float>. It gives the maximum exponent a variable of type 'long double' can contain.DATA�LDBL_MIN
This macro is defined in <float.h=>float>. It gives the minimum positive value that can be stored in a variable of type 'long double'.DATA�LDBL_MIN_10_EXP
This macro is defined in <float.h=>float>. It gives the minimum base 10 exponent a variable of type 'long double' can contain.DATA�LDBL_MIN_EXP
This macro is defined in <float.h=>float>. It gives the minimum exponent a variable of type 'long double' can contain.DATA�ldexp
Syntax:	double ldexp (double x, int y);
Header:	<math.h=>math>

Returns:	x multiplied by (2 to the power of y)

This function calculates x * (1 \<\< y). This is a calculation quite frequently performed so is a useful shortcut.DATAjLDF <register>,<address>
This is equivalent to <LDR>, but for floating point registers and values.DATA�ldiv
Syntax:	<ldiv_t> ldiv (long int x, long int y);
Header:	<stdlib.h=>stdlib>

Returns:	The quotient and remainder of x/y.

This function is identical to the function <div>, except that all numbers involved are long ints.DIR$((��F���>t�"�tDATA�ldiv_t
The type {/}ldiv_t{/} is defined in <stdlib.h=>stdlib> for holding return values from the function <ldiv>. It is defined as the following structure:

\{
    long int quot;	/* Quotient */
    long int rem;	/* Remainder */
}DATA%LDR <register>,<address>
This sets the given register to contain the contents of the given address (usually a label). The contents are a word, unless LDRB is used in which case only a byte is loaded.

#fCode
        LDR   R0,label
        ...
 .label <DCD>   10
#f

r0 will contain 10.DATAPLeafName
Syntax:	char *LeafName (char *pathname);
Header:	<DeskLib:Str.h=>Str_DL>

Returns:	Pointer to leaf name.

This function scans through /pathname/ until it reaches the final '.' and then returns a pointer to the next character, ie the leaf name if /pathname/ is a full pathname. If no '.' is found, it returns /pathname/.DATATimsLib:Lib.h
This header defines all the useful miscellaneous bits which couldn't be found a home elsewhere...

Functions:

#Indent 6
#Table 5 15
<StrSave>
<StrSaveDbug>
<MakeCR>
<MakeASCIIZ>
<HexDigit>
<NumFromHexDigit>
<stricmp>
<strnicmp>
<SplitPathname>
#EndTableDIR$``جF���>(�"S!Root,�F����n�":copyright_h�F����6�"�create_�F���m^�"�delete_��F����e�"�extract_��F����L�"�history_��F���!y�"Bidentification_ĵF���'V�"Binsert_�F���pD�"zlist_��F���h>�"�verify_DATASLibraries
Libraries are files containing one or more object files which can be linked in with applications. Object files inserted into libraries are called 'modules', and may contain one or more functions. The fewer functions in a module, the less unnecessary code will be pulled in when you use one of them, however linking will be slower.

Easy C provides a library facility as described below:

The directives are used with the 'library' command. They are prefixed by "-". Help can be got by using <*Help library>. A summary of the directibes used is shown below.

#Indent 15
#Table columns 3
<\-create=>lib_create_>
<\-verify=>lib_verify_>
<\-list=>lib_list_>
<\-history=>lib_history_>
<\-insert=>lib_insert_>
<\-delete=>lib_delete_>
<\-extract=>lib_extract_>
<\-copyright=>lib_copyright_>
<\-identification=>lib_identification_>
#EndTableDATA:-copyright
Abbreviation:	-co
Syntax:	-copyright=\<text>

This directive specifies the copyright message for a library. If there are spaces in it, it must be enclosed in quotes. It can only be used with the <\-create=>lib_create_> directive.

#wrap off
eg {fCode}*library NewLib -create -co="(C) G Boden 94"DATA�-create
Abbreviation:	-c

This directive allows a new library to be created containing no functions.

#wrap off
eg {fCode}*library NewLib -createDATA�-delete
Abbreviation:	-d
Syntax:	-delete=\<modulename>

This directive deletes object file(s) (modules) from a library.

#wrap off
eg {fCode}*library NewLib -delete=module1DATA�-extract
Abbreviation:	-e
Syntax:	-extract=\<modulename>

This directive extracts an object file (module) from a library and saves it on disc.

#wrap off
eg {fCode}*library NewLib -extract=utilsDATA�-history
Abbreviation:	-h
Syntax:	-history=\<state>

This directive controls the library history mechanism. Switch it on or off using -history=on or -history=off. To display it just use -history.

#wrap off
eg {fCode}*library ROSLib -historyDATAB-identification
Abbreviation:	-id
Syntax:	-identification=\<text>

This directive specifies the identification text
for a library. If there are spaces in it, it must be enclosed in quotes. It can only be used with the <\-create=>lib_create_> directive.

#wrap off
eg {fCode}*library NewLib -create -id="My Library"DATAB-insert
Abbreviation:	-i
Syntax:	-insert=\<objectfile>

This directive inserts object file(s) (module) into a library. The module should be in AOF format, but does not have to be generated from Easy C (eg it could be from Pascal, Desktop Assembler etc).

#wrap off
eg {fCode}*library NewLib -insert=module1,module2DATAz-list
Abbreviation:	-l

This directive lists the contents of a library.

#wrap off
eg {fCode}*library ROSLib -listDATA�-verify
Abbreviation:	-v

This directive verifies the integrity of a library. In addition it displays information about a library.

#wrap off
eg {fCode}*library STDCLib -verifyDATAolimits.h
#Parent ansi_
The \<limits.h\> header declares many macros which indicate the maximum and minimum values which may be placed in integer variables.

#Table 6 14
<CHAR_BIT>
<SCHAR_MIN>
<SCHAR_MAX>
<UCHAR_MAX>
<CHAR_MIN>
<CHAR_MAX>
<MB_LEN_MAX>
<SHRT_MIN>
<SHRT_MAX>
<USHRT_MAX>
<INT_MIN>
<INT_MAX>
<UINT_MAX>
<LONG_MIN>
<LONG_MAX>
<ULONG_MAX>
#EndTableDIR$ĺF���L��"�!Root��F���E��"�base_P�F���t��"�debug_ܽF������"�desktop_|�F������"�image_\�F�����"blibrary_��F������"�map_��F������"�throwback_DATA�Linker Directives
This information is for Easy C only:

These are only used when compiling from the command line using the 'link' command. They are prefixed by "-". Help can be got by using <*Help link>. A summary of the directives used is shown below.

#indent 6
#Table 3 16
<\-image=>linkdir_image_>
<\-library=>linkdir_library_>
<\-base=>linkdir_base_>
<\-debug=>linkdir_debug_>
<\-map=>linkdir_map_>
<\-throwback=>linkdir_throwback_>
<\-desktop=>linkdir_desktop_>


#EndTableDATA�-base
Abbreviation:	-b
Syntax:	-base=\<address>
Default:	-base=&8000

This qualifier allows you to specify the base address of the executable code produced.DATA�-debug
Abbreviation:	-d
Default:	-nodebug

This qualifier causes the linker to include debugging information with the linked file.DATA�-desktop
Abbreviation:	-des
Default:	-desktop

This qualifier causes the linker to accept full pathnames instead of using its usual naming conventions.DATA�-image
Abbreviation:	-i
Syntax:	-image=\<pathname>

This qualifier allows you to specify the filename of the executable file produced. Normally it is the same as the object name and placed in the current directory.DATAb-library
Abbreviation:	-l
Syntax:	-library=\<libraries>
Default:	-library=STDCLib

This qualifier allows you to specify the libraries linked with the object file. STDCLib contains the standard ANSI functions and other essential bits, and ROSLib is the RISC OS functions. In addition DeskLib has its own library.

eg {fCode}-library=STDCLib,ROSLibDATA�-map
Abbreviation:	-m
Syntax:	-map=\<pathname>
Default:	-nomap

This qualifier causes the linker to produce a map file. This is normally stored in subdirectory "map", but you can specify your own pathname.DATA�-throwback
Abbreviation:	-th
Default:	-nothrowback

This qualifier causes the linker to produce "Throwback" output to a suitable external editor.DATADeskLink:LinkList.h
Version: 1.33 (30 May 1994)
#line
This header declares functions and one type for handling linked lists easily.

Functions:

#indent 6
#Table columns 2
<LinkList_AddToHead>
<LinkList_AddToTail>
<LinkList_InsertBefore>
<LinkList_InsertAfter>
<LinkList_InList>
<LinkList_ListLength>
<LinkList_Unlink>
<LinkList_FirstItem>
<LinkList_LastItem>
<LinkList_Init>
<LinkList_InitItem>
<LinkList_NextItem>
<LinkList_PreviousItem>
#EndTable
#indent

Type:

{align centre}<linklist_header>{align}

Items in a linked list are defined as structures, whose first member should be a {*}linklist_header{*}. The rest of the structure may contain the data required in the list but this method ensures that item pointers can be used as {*}linklist_header{*} pointers.DIR$  \�F���J�?%�AddToHeadD�F�����?%�AddToTail,�F�����V&Append0�F����V&�First$�F����?%'FirstItemL�F���j�V&�Free��F�����V&KFreeData$�F�����?%uheader��F����?%&Init��F���M�?%(InitItem��F����?%_InListL�F���s�?%4InsertAfter��F���Ɠ?%7InsertBefore��F�����V&�Last��F���Ʊ?%#LastItem��F���D�?%�ListLengthp�F�����V&nNext��F���>�?%NNextItem0�F�����V&Prepend8�F���P�V&vPrevious��F���f�?%_PreviousItem�F����V&~TL��F����?%oUnlinkDATA�LinkList_AddToHead
Syntax:	void LinkList_AddToHead (<linklist_header> *anchor, linklist_header *item);
Header:	<DeskLib:LinkList.h=>LinkList>

This function adds an item to the head of the linked list whose anchor is given.DATA�LinkList_AddToTail
Syntax:	void LinkList_AddToTail (<linklist_header> *anchor, linklist_header *item);
Header:	<DeskLib:LinkList.h=>LinkList>

This function adds an item to the tail of the linked list whose anchor is given.DATALinkList_Append
Syntax:	void LinkList_Append (void *anchor, void *item);
Header:	<TimsLib:LinkList.h=>LinkList_TL>

This function-like macro adds the item whose pointer is given to the end of the list whose anchor is given, using <LinkList_AddToTail>.DATA�LinkList_First
Syntax:	void *LinkList_First (void *anchor);
Header:	<TimsLib:LinkList.h=>LinkList_TL>

Returns:	Pointer to the first item.

This function-like macro returns a pointer to the first item of the list whose anchor is given.DATA'LinkList_FirstItem
Syntax:	void *LinkList_FirstItem (<linklist_header> *anchor);
Header:	<DeskLib:LinkList.h=>LinkList>

Returns:	Pointer to first item.

This function returns a pointer to the first item in the list whose anchor is given. It is actually defined as a function-like macro.DATA�LinkList_Free
Syntax:	void LinkList_Free (<linklist_header> *anchor);
Header:	<TimsLib:LinkList.h=>LinkList_TL>

This function de-allocates the memory used by all the members of the list whose anchor is given (using <free>), and then de-allocate the space used by the anchor (again using free). Note that it will not deallocate any memory whose pointer is contained within a list item.DATAKLinkList_FreeData
Syntax:	void LinkList_FreeData (<linklist_header> *anchor);
Header:	<TimsLib:LinkList.h=>LinkList_TL>

This function de-allocates the memory used by all the members of the list whose anchor is given (using <free>). Note that it will not deallocate any memory whose pointer is contained within a list item.DATAulinklist_header
This type is defined in <DeskLib:LinkList.h=>LinkList> as a type capable of holding pointers to the previous and next records in a linked list. It is also used as an anchor for the linked list, holding pointers to the first and last items.

typedef struct
\{
    struct linklist_header *next;
    struct linklist_header *previous;
} linklist_header;DATA&LinkList_Init
Syntax:	void LinkList_Init (<linklist_header> *anchor);
Header:	<DeskLib:LinkList.h=>LinkList>

This function initialises a list anchor. This should be called before the anchor is used. It is defined as a function-like macro and simply initialises both pointers to <NULL>.DATA(LinkList_InitItem
Syntax:	void LinkList_InitItem (<linklist_header> *item);
Header:	<DeskLib:LinkList.h=>LinkList>

This function initialises a list item. This should be called before the item is used. It is defined as a function-like macro and simply initialises both pointers to <NULL>.DATA_LinkList_InList
Syntax:	<BOOL> LinkList_InList (<linklist_header> *anchor, linklist_header *item);
Header:	<DeskLib:LinkList.h=>LinkList>

Returns:	<TRUE> if item is in list.

This function scans through a linked list (whose anchor is given) to see if any of the pointers point to the item given. Note that it does not check the item contents!DATA4LinkList_InsertAfter
Syntax:	void LinkList_InsertAfter (<linklist_header> *anchor, linklist_header *pos, linklist_header *item);
Header:	<DeskLib:LinkList.h=>LinkList>

This function inserts the item whose pointer is given in the linked list whose anchor is given, after the item pointed to by /pos/.DATA7LinkList_InsertBefore
Syntax:	void LinkList_InsertBefore (<linklist_header> *anchor, linklist_header *pos, linklist_header *item);
Header:	<DeskLib:LinkList.h=>LinkList>

This function inserts the item whose pointer is given in the linked list whose anchor is given, before the item pointed to by /pos/.DATA�LinkList_Last
Syntax:	void *LinkList_Last (void *anchor);
Header:	<TimsLib:LinkList.h=>LinkList_TL>

Returns:	Pointer to the lastt item.

This function-like macro returns a pointer to the last item of the list whose anchor is given.DATA#LinkList_LastItem
Syntax:	void *LinkList_LastItem (<linklist_header> *anchor);
Header:	<DeskLib:LinkList.h=>LinkList>

Returns:	Pointer to last item.

This function returns a pointer to the last item in the list whose anchor is given. It is actually defined as a function-like macro.DATA�LinkList_ListLength
Syntax:	int LinkList_ListLength (<linklist_header> *anchor);
Header:	<DeskLib:LinkList.h=>LinkList>

Returns:	Number of items in list.

This function scans through a linked list (whose anchor is given) and counts the number of items it finds. Consequently it may be quite slow in computing terms so if you need this information regularly, alter your program to keep track of it as it changes.DATAnLinkList_Next
This is just a <#define=>define>d alternative name for the function <LinkList_NextItem>.DATANLinkList_NextItem
Syntax:	void *LinkList_NextItem (void *item);
Header:	<DeskLib:LinkList.h=>LinkList>

Returns:	Pointer to next item, or <NULL>.

This function returns the next item along the list from the given item. If this item is the last one, NULL is returned. This function is actually defined as a function-like macro.DATALinkList_Prepend
Syntax:	void LinkList_Prepend (void *anchor, void *item);
Header:	<TimsLib:LinkList.h=>LinkList_TL>

This function-like macro adds the item whose pointer is given to the start of the list whose anchor is given, using <LinkList_AddToHead>.DATAvLinkList_Previous
This is just a <#define=>define>d alternative name for the function <LinkList_PreviousItem>.DATA_LinkList_PreviousItem
Syntax:	void *LinkList_PreviousItem (void *item);
Header:	<DeskLib:LinkList.h=>LinkList>

Returns:	Pointer to previous item, or <NULL>.

This function returns the previous item along the list from the given item. If this item is the first one, NULL is returned. This function is actually defined as a function-like macro.DATA~TimsLib:LinkList.h
This header is an extension to <DeskLib:LinkList.h=>LinkList>, providing some useful extra facilities.

Functions:

#Indent 4
#Table 2 21
<LinkList_Free>
<LinkList_FreeData>
<LinkList_Next>
<LinkList_Previous>
#EndTable
#indent 0

Function-like macros:

#Indent 6
#Table 2 21
<LinkList_First>
<LinkList_Last>
<LinkList_Append>
<LinkList_Prepend>
#ENdtableDATAoLinkList_Unlink
Syntax:	void LinkList_Unlink (<linklist_header> *anchor, linklist_header *item);
Header:	<DeskLib:LinkList.h=>LinkList>

This function unlinks the item from the list whose anchor is given. It does this by making the item before this one point to the item after this one and vice versa. Once unlinked, you can free the memory used by this item.DATA6locale.h
The header \<locale.h> declares functions, a type and some macros relating to the current locale.

Functions:

#Table 1
<localeconv>
<setlocale>
#EndTable
#Indent 0

Type:

<struct lconv=>lconv>

Macros:

#Table 2
<LC_ALL>
<LC_COLLATE>
<LC_CTYPE>
<LC_MONETARY>
<LC_NUMERIC>
<LC_TIME>
#EndTableDATA�localeconv
Syntax:	<struct lconv=>lconv> *localeconv (void);
Header:	<locale.h=>locale>

Returns:	Pointer to locale information.

This function returns information about the current locale in a structure.DATA�localtime
Syntax:	<struct�tm> *localtime (<time_t> *timer);
Header:	<time.h=>time_h>

Returns:	Pointer to the broken-down time.

This function converts the calendar time pointed to by /timer/ into a broken-down time expressed in local time.DATA.log
Syntax:	double log (double x);
Header:	<math.h=>math>

Returns:	The natural logarithm of x.

This function calculates the natural logarithm of x, ie the power to which e ( = <exp>(1) = 2.71828183� ) must be raised in order to obtain x. Frequently called �LN� in non-C environments eg Basic.DATAlog10
Syntax:	double log10 (double x);
Header:	<math.h=>math>

Returns:	The base ten logarithm of x.

This function calculates the base 10 logarithm
of x, ie the power to which 10 must be raised
in order to obtain x. Frequently called �LOG�
in non-C environments eg Basic.DIR$DD��F�����"�MAX<�F���%�"�MINDATA�LONG_MAX
This macro is defined in <limits.h> and represents the maximum value which can be stored in a long int. In Easy C it is defined as 0x7fffffff (2147483647).DATA�LONG_MIN
This macro is defined in <limits.h> and represents the minimum value which can be stored in a long int. In Easy C it is defined as 0x80000000 (-2147483648).DATA�longjmp
Syntax:	void longjmp (<jmp_buf> env, int n);
Header:	<setjmp.h=>setjmp_h>

This function jumps to the position of the most recent <setjmp> call. It jumps in to the code by pretending to return from the setjmp call, and returns the value given in n (instead of zero, which is returned if setjmp is called directly). The environment should be that which is passed to the setjmp call.

Please try not to use this - write structured programs instead!DIR$����F������/�m_4�F����cZ&�maelstrom��F����ð$Kmagnify8�F���}��/,magnify_��F������/,make_�F���UMV&�MakeASCIIZ�F����GV&�MakeCR�F���Oj�(�malloc�F�����V&MallocDbug�F�����/,MallocDbug_�F�����"fmath0F�����$�MAX�F���a��/0MAX_�F������/LMB_�F���Y��"mblen�
F�����"�mbstowcsl
F���l��"�mbtowc,F����@%^Mem�F�����/�Mem_P"F������"-memchr�#F���"#�"tmemcmp�$F������" memcpy&F���/��"pmemmove�'F�����V&�MemoryDumpp(F���̉�"�memseth)F���K�G#�menuD+F������/�Menu_<�F������/�message_�F�����$�MIN��F���4��"�mktime��F���P��"HmodfܮF���#V&�modifiersd�F���i�C%�Module�F���l��/LModule_��F������/,mouse_�F���@�C%5Msgs�F���/�Msgs_�F����>%�mode_variableDIR$��P�F���~�"wexp/log_��F���]l�"[hyper_$�F���z��"dmisc_��F����3�";power_��F���]b�"ntrig_DATAwExponential/Logarithmic Functions
#Parent math
#indent 6
#Table 1
<exp>
<frexp>
<ldexp>
<log>
<log10>
#EndTableDATA[Hyperbolic Functions
#Parent math
#indent 5
#Table 1
<cosh>
<sinh>
<tanh>
#EndTableDATAdMiscellaneous Functions
#Parent math
#Table 1
<ceil>
<fabs>
<floor>
<fmod >
<modf>
#EndTableDATA;Power Functions
#Parent math
#Indent 7
<pow>
<sqrt>DATAnTrigonometric Functions
#Parent math
#Table 1
<acos>
<asin>
<atan>
<atan2>
<cos>
<sin>
<tan>
#EndTableDATA�Maelstrom Software
#Sprite 0,0 maelstrom




Maelstrom Software are:

  � <Gareth Boden=>GBoden>
  � Stephen Crouch
  � Ainsley Pereira
  � Andrew Pepperell
  � Brett GibsonDATAKmagnify.h
This header declares just one function:

<magnify_select>DIR$,,d�F���wݰ$�selectDATA�magnify_select
Syntax:	void magnify_select (int *mul, int *div, int maxmul, int maxdiv, void (*proc)(void *), void *handle);
Header:	<magnify.h=>magnify>

This function displays a dialogue box (called "magnifier") to set magnification factors. /mul/ and /div/ are the initial values of the ration, and /maxmul/ and /maxdiv/ are their respective limits. The template "magnifier" must be loaded and have a similar definition to those used in !Draw or !Paint. /mul/ and /div/ are updated automatically.

The function /proc/ is called each time the magnification changes. The function should be of the form:
{fCode;align centre}void proc (void *handle);DIR$,,$�F�����"�!RootDATA�Make Files
Make Files provide an easy way to deal with compiling and linking multiple source files.

In Easy C, Make Files can be created automatically for you. Simply drag the files you want to compile and link to the Source and Object windows and then click Create. When you perform a Make, the Make facility only compiles/links those parts which are not up to date.

Easy C Make files have the following format:

    Macro definitions
    Targets
    Dependencies

Macro definitions are in the form:
{fCode}MACRONAME = \<definition>{f}

Targets specify what executable files are created from what objects. They are in the form:
{fCode}\<target> : \<list of objects>{f}
The list of objects are object names (specified in the proper RISC OS way eg "o.object") separated by spaces.

Dependencies are in the form:
{fCode}\<object file> : \<header file>{f}
If the specified header file is altered then the Make facility recognises that the object file needs to be recompiled/linked.DATA�MakeASCIIZ
Syntax:	void MakeASCIIZ (char *s, int max_len);
Header:	<TimsLib:Lib.h=>Lib>

This function converts the carriage return-terminated string pointed to by /s/ into a zero-terminated string. <MakeCR>() converts the other way.DATA�MakeCR
Syntax:	void MakeCR (char *s, int max_len);
Header:	<TimsLib:Lib.h=>Lib>

This function converts the zero-terminated string pointed to by /s/ into a carriage return-terminated string. <MakeASCIIZ>() converts the other way.DATA�malloc
Syntax:	void *malloc (<size_t> size);
Header:	<stdlib.h=>stdlib>

Returns:	Pointer to space, or <NULL> if failed.

This function allocates an area of memory of size specified. The contents of the space are undefined.DATATimsLib:MallocDbug.h
This header provides facilities for tracking memory allocation.

Functions:

#Indent 7
#Table columns 3
<MallocDbug=>mallocdbug_>
<FreeDbug>
<MemoryDump>
#EndTable

#indent 0
Macros:

#indent 16
#table 1 15
<mallocdbug=>mallocdbug_>
<freedbug>
#endtable
#indent 0

On exit from your program, you can call <MemoryDump>, which will tell you any memory which has been mallocd but not freed. This module use <Trace=>Trace_TL> to do all its output and so will not work unless you have a copy of VDUStream.DIR$,,F���-�V&�!RootDATA�MallocDbug
Syntax:	void *MallocDbug (<size_t> size, char *filename, int line);
Header:	<TimsLib:MallocDbug.h=>MallocDbug>

Returns:	Pointer to the allocated block.

This function is identical to <malloc>(), but remembers the file and line at which the call occurred.

This function will normally be called transparently. The macro {*}mallocdbug{*} is defined to call this function in debug builds, and normal malloc in release builds.DATAfmath
The \<math.h\> header declares a number of functions for floating point arithmetic. All the functions accept and return /double/ values. In addition, one macro is defined.

Functions:

#Indent 3
#Table 3 25
<Trigonometric=>m_trig_>
<Hyperbolic=>m_hyper_>
<Exponential/Logarithmic=>m_exp/log_>
<Power=>m_power_>
<Miscellaneous=>m_misc_>
#EndTable
#Indent 0

Macro:

   <HUGE_VAL>

If the input arguments are outside a suitable range for the function (the domain), the value of the macro <EDOM> is stored in <errno>.

Similarly, if the result is too big to be stored in a /double/, the function returns the value of the macro <HUGE_VAL> with the same sign as the true result - ie -{*}HUGE_VAL{*} if the result is negative. The value of the macro <ERANGE> is stored in <errno>.

If the result is too small to be stored in a /double/, the function returns zero.DATA�MAX
This macro is defined in <TimsLib:Core.h=>Core_TL> and <DeskLib:Core.h=>Core>. It is used to find the maximum of two values. MAX(x,y) will give you /x/ if x>y, or /y/ if x\<=y.DIR$00F���UU&�PATH_LENDATA�MAX_PATH_LEN
This macro is defined in <TimsLib:File.h=>File_TL> as the maximum length of a pathname. It is actually defined as (256).DIR$LL�F�����"CUR_MAXF������"�LEN_MAXDATAMB_CUR_MAX
The macro {/}MB_CUR_MAX{/} is defined in <stdlib.h=>stdlib> as a macro which represents the maximum number of bytes in a multibyte character specified by the current locale. Its value is never greater than <MB_LEN_MAX>. In Easy C it is defined as 1.DATA�MB_LEN_MAX
This macro is defined in <limits.h> and represents the maximum length in bytes of a multibyte character. In Easy C it is defined as 1.DATAmblen
Syntax:	int mblen (char *s, <size_t> n);
Header:	<stdlib.h=>stdlib>

Returns:	See below.

If /s/ is not a null pointer, then this function determines the number of bytes comprising the the multibyte character pointed to by /s/. It returns a 0 if /s/ points to a null character, or the number of bytes. If /s/ is not a valid multibyte character it returns - 1. At most /n/ bytes will be examined.

If /s/ is a null pointer, this function returns zero if multibyte character encodings do not have state-dependent encodings.DATA�mbstowcs
Syntax:	<size_t> mbstowcs (<wchar_t> *pwcs, char *s, size_t n);
Header:	<stdlib.h=>stdlib>

Returns:	See below.

Converts a sequence of multibyte characters that begins in the initial shift state from the array pointed to by /s/ into a sequence of corresponding codes and stores not more than /n/ codes into the array pointed to by /pwcs/. No multibyte character that follows a null character (which is converted into a code with value zero) will be examined or converted. Each multibyte character is converted as if by a call to the <mbtowc> function.

If an invalid multibyte character is found, this returns -1, otherwise it returns the number of array elements modified.DATA�mbtowc
Syntax:	int mbtowc (<wchar_t> *pwc, char *s, <size_t> n);
Header:	<stdlib.h=>stdlib>

Returns:	See below.

If /s/ is not a null pointer, then this function determines the number of bytes comprising the the multibyte character pointed to by /s/ and also determines the value of type /wchar_t/ which corresponds to that character and stores it in {/}*pwc{/}, if /pwc/ is not <NULL>. It returns a 0 if /s/ points to a null character, or the number of bytes. If /s/ is not a valid multibyte character it returns -1. At most /n/ bytes of the array will be examined.

If /s/ is a null pointer, this function returns zero if multibyte character encodings do not have state-dependent encodings.DATA^DeskLib:Mem.h
Version: 1.01 (22 May 1994)
#line
This header declares functions and types for dynamic memory management.

Functions:

#Indent 2 
#Table columns 3
<Mem_Initialise>
<Mem_Alloc>
<Mem_MidExtend>
<Mem_MoveAnchor>
<Mem_Free>
<Mem_Compact>
<Mem_Size>
<Mem_CheckHeap>
#EndTable
#Indent 0

Types:

#Indent 14 
#Table 1 21
<mem_anchor>
<mem_compaction>
#EndTable

#Indent 0
Variable:

{align centre}<mem_autocompact>{align}

The advantage of these function over the standard ANSI functions <malloc> etc, is that these adjust the program's WimpSlot as needed, both increasing and decreasing it.DIR$��F����@%�Alloc�F����Y@%�anchor�F���p�@%�autocompact�F���UL@%�CheckHeap�F���C@%�CompactLF���kҵ"�compaction�F���>@%Free�F����@%�Initialise�F����'@%�MidExtend�F����7@%MoveAnchor�!F����H@%�SizeDATA�Mem_Alloc
Syntax:	<BOOL> Mem_Alloc (<mem_anchor> *anchor, int size);
Header:	<DeskLib:Mem.h=>Mem>

Returns:	<TRUE> if succeeded.

This function attempts to allocate the given amount of memory ({/}size{/} bytes) in the Mem heap. The anchor whose pointer is given will point to this block, or will contain <NULL> if the function fails. The allocated block is guaranteed to be word-aligned.

Depending on the setting of <mem_autocompact>, this function may relocate other Mem blocks.DATA�mem_anchor
The type {*}mem_anchor{*} is defined in <DeskLib:Mem.h=>Mem> as a type capable of holding a pointer to a block of memory allocated by <Mem_Alloc>. It is actually defined as a {/}void *{/}.DATA�mem_autocompact
This variable is declared by <DeskLib:Mem.h=>Mem> and defines the extent to which Mem will auto-compact. It can take values:

 	mem_NOCOMPACT = 0	:	Compact only when <Mem_Compact> is called.
 	mem_FASTCOMPACT
{wrap off} 	mem_PARTCOMPACT = 1	:	** DEFAULT SETTING **
{wrap} 			 	 		Compact only when necessary to allocate memory.
 	mem_FULLCOMPACT = 2	:	Compact every time space is freed.

Changes to this variable take immediate effect.DATA�Mem_CheckHeap
Syntax:	<BOOL> Mem_CheckHeap (void);
Header:	<DeskLib:Mem.h=>Mem>

Returns:	<TRUE> if heap is valid.

This functions checks the heap data structure, ie checks that all links are intact and anchors are consistent.DATA�Mem_Compact
Syntax:	void Mem_Compact (void);
Header:	<DeskLib:Mem.h=>Mem>

This function compacts the Mem workspace, moving all free space to the end of the workspace and freeing memory back to the rest of the WIMP if possible. Anchors will be updated to reflect the new positions of blocks.

Ideally, this should be called before each time you poll the WIMP. It may also be called by other Mem functions, depending on the setting of <mem_autocompact>.DATA�mem_compaction
This type is defined by <DeskLib:Mem.h=>Mem>. It is an
enumerated type used for the <mem_autocompact>
variable.DATAMem_Free
Syntax:	void Mem_Free (<mem_anchor> *anchor);
Header:	<DeskLib:Mem.h=>Mem>

This function releases a block of memory whose anchor is pointed to. The anchor will now contain <NULL>.

This call may relocate other blocks, according to <mem_autocompact>.DATA�Mem_Initialise
Syntax:	<BOOL> Mem_Initialise (void);
Header:	<DeskLib:Mem.h=>Mem>

Returns:	<FALSE> if it fails.

This function initialises the Mem system ready for use.DATA�Mem_MidExtend
Syntax:	<BOOL> Mem_MidExtend (<mem_anchor> *anchor, int at, int by);
Header:	<DeskLib:Mem.h=>Mem>

Returns:	<TRUE> if successful.

This function attempts to alter the size of a Mem block, by inserting a block of /by/ bytes at offset /at/ within the block. If /by/ is negative then the {/}-by{/} bytes _below_ /at/ will be deleted. Either way, existing data (except that deleted) is preserved.

This call may relocate other blocks, depending on the value of <mem_autocompact>.DATAMem_MoveAnchor
Syntax:	void Mem_MoveAnchor (<mem_anchor> *from, <mem_anchor> *to);
Header:	<DeskLib:Mem.h=>Mem>

This function copies moves an anchor from one variable to another. This is necessary because, due to the relocating nature of Mem chunks, anchors are automatically updated. If you simply copy the value, the new anchor will not be updated.

If this function works, the anchor pointed to by /from/ will contain <NULL>, and the anchor pointed to by /to/ will contain the previous contents of /from/.DATA�Mem_Size
Syntax:	int Mem_Size (<mem_anchor> *anchor);
Header:	<DeskLib:Mem.h=>Mem>

Returns:	Size in bytes

This function finds the size of a Mem block whose anchor pointer is given.DATA-memchr
Syntax:	void *memchr (void *ptr, int c, <size_t> n);
Header:	<string.h=>string>

Returns:	Pointer to the found character, or a null pointer if not found.

This function searches for /c/ (converted to an {/}unsigned char{/}) in the first /n/ characters of the object pointed to by /ptr/.DATAtmemcmp
Syntax:	int memcmp (void *ptr1, void *ptr2, <size_t> n);
Header:	<string.h=>string>

Returns:	Greater than, less than or equal to zero, depending if the object pointed to by {/}ptr1{/} is greater than, less than or equal to the object pointed to by {/}ptr2{/}.

This function compares the first /n/ characters of each object and returns a value accordingly.DATA memcpy
Syntax:	void *memcpy (void *ptr1, void *ptr2, <size_t> n);
Header:	<string.h=>string>

Returns:	ptr1

This function copies /n/ characters from {/}ptr2{/} to {/}ptr1{/}. The areas to be copied must not overlap. If you want to copy between overlapping objects, use <memmove>.DATApmemmove
Syntax:	void *memmove (void *ptr1, void *ptr2, <size_t> n);
Header:	<string.h=>string>

Returns:	ptr1

This function copies /n/ characters from {/}ptr2{/} to {/}ptr1{/}. The areas to be copied may overlap, because it first of all copies from {/}ptr2{/} to a temporary buffer and then copies from there to {/}ptr1{/}. This makes it slower than <memcpy>.DATA�MemoryDump
Syntax:	void MemoryDump (void);
Header:	<TimsLib:MallocDbug.h=>MallocDbug>

This function scans through the memory allocated by <MallocDbug=>MallocDbug_> and prints a list of blocks not deallocated with <FreeDbug>.DATA�memset
Syntax:	void *memset (void *ptr, int c, <size_t> n);
Header:	<string.h=>string>

Returns:	ptr

This function sets the first /n/ characters of the object pointed to by /ptr/, to the value in /c/ (converted to an {/}unsigned char{/}).DATA�menu
The type menu is defined in <menu.h=>menu_h> (Desktop C) and <TimsLib:Menu.h=>Menu_TL> as a type capable of holding an abstract menu handle. In Desktop C it is defined as the following structure:

\{
    <wimp_menuhdr> *m;	/* The actual menu */
    int nitems;
    void *entryspace;	/* Submenus/Indirected */
    int nbytes;
    int maxentrywidth;
}

and in TimsLib it is defined as an /int/, although it can be cast as a <menu_ptr> for low-level manipulation.DIR$��(4F����W&AddDialogBox85F���
�W&`AddDynamicDialogBox�6F���#�A%�AddSubMenu|7F�����W&adjust_pressed�8F�����W&�AttachMenul:F����W&sAttachMenuMaker�<F�����E& block?F����4B%-CalcHeight0@F���\W&_ColourMenu�AF�����W&�current_icon\BF����W&�current_window0CF�����C%�currentopen�CF����|C%�currentpos�DF����%A%�desc_(FF�����W&oDetachMenu�GF�����$Hdispose�HF���B8A%�ExtenddJF����"�$extend_lKF�����W&�FadeEntryLF����E&/flagsLPF����"B%#GetFlagspQF����.B%�GetText@RF���
�$h�SF���X�W&<handler�TF�����E&itemWF���(/�$%make_sprite8XF���E>�$tmake_writeable�YF���&�W&'maker�ZF���NB%�MakeWritable�\F����A%SNew�^F����P�$�new_�`F����JW&kNew__bF�����G#bptrpbF����kB%�RemoveItemlcF����HB%SDisposetdF����W&selection�eF����B%�SetFlags gF���vc�$asetflags_�hF����(B%�SetTextTiF����GA%?Show�jF�����W&PShow_�kF����OA%ShowLast�lF���<r�$�submenu�nF�����E&isubmenu_pF���E�W&�submenupos�pF�����$�syshandle�qF����BB%;SysHandle_$sF���m�W&9SysHandle__`tF�����W&�TickEntryuF�����,�TL�xF���\�W&�UnFadeEntryTyF�����W&�UnTickEntryzF����sB%tWarn|{F���̌A%�PopUpl|F�����A%PopUpAuto�}F�����A%�MakeIndirected�~F����cB%�FullDisposexF����B%�ReviseWidthx�F���pC%�FontMenu�F���

C%�FontMenu3��F����(C%+FontMenuDecodeЄF���Y/C%FontMenuDecode3ԅF���FfC%�FontMenu_NOTICKx�F����pC%�FontMenu_TICKSYSFONTDATAMenu_AddDialogBox
Syntax:	void Menu_AddDialogBox (<menu> m, int entry, <window_handle> win);
Header:	<TimsLib:Menu.h=>Menu_TL>

This function attaches a window whose handle is given in /win/ as a submenu item (dialogue box) to the menu /m/ at the entry specified.DATA`Menu_AddDynamicDialogBox
Syntax:	void Menu_AddDynamicDialogBox (<window_handle> win);
Header:	<TimsLib:Menu.h=>Menu_TL>

This function shows a window as a dialogue box. It should only be called by a menu selection handler when a menu warning message is received. The handler should create the window needed and pass its handle to this function.DATA�Menu_AddSubMenu
Syntax:	void Menu_AddSubMenu (<menu_ptr> menu, int entry, menu_ptr submenu);
Header:	<DeskLib:Menu.h=>DL_Menu>

This function adds a submenu to existing menu at position /entry/ (the first entry being 0).DATAmenu_adjust_pressed
This variable of type <BOOL> is defined in <TimsLib:Menu.h=>Menu_TL>. It contains <TRUE> if the menu is being shown because it is being recreated due to an adjust click. A menu maker can set this to <FALSE> to prevent the menu opening.DATA�Menu_AttachMenu
Syntax:	<BOOL> Menu_AttachMenu (<menu> m, <window_handle> win, <icon_handle> icon, <menu_handler> handler, void *ref);
Header:	<TimsLib:Menu.h=>Menu_TL>

Returns:	<TRUE> if successful.

This function attaches a menu to a particular window and icon. Either of these can be {*}event_ANY{*} if they are required to be non-specific. The menu /m/ will be shown whenever the user clicks in the places specified. A selection off the menu will be handled by the /handler/.DATAsMenu_AttachMenuMaker
Syntax:	<BOOL> Menu_AttachMenuMaker (<menu_maker> maker, <window_handle> win, <icon_handle> icon, <menu_handler> handler, void *ref);
Header:	<TimsLib:Menu.h=>Menu_TL>

Returns:	<TRUE> if successful.

This function attaches a menu to a particular window and icon. However, unlike <Menu_AttachMenu>, a new menu is created using the /maker/ rather than an existing menu shown. Either of these can be {*}event_ANY{*} if they are required to be non-specific. The function /maker/ will be shown whenever the user clicks in the places specified. A selection off the menu will be handled by the /handler/.DATA menu_block
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is a structure holding a complete menu header (apart from the menu items):

  \{
    char	title [wimp_MAXNAME];
    char	titlefore,titleback;
    char	workfore,workback;
    unsigned int	width;
    unsigned int	height;
    unsigned int	gap;
  }

This should be immediately followed in memory by the <menu_item>s.

/titlefore/ - /workback/ are the colours of the menu. For a standard menu they should be 7,2,7 and 1 respectively. /gap/ should be 0, and /height/ should be 44.DATA-Menu_CalcHeight
Syntax:	int Menu_CalcHeight (<menu_ptr> menu);
Header:	<DeskLib:Menu.h=>DL_Menu>

Returns:	Height in OS coords.

This function calculates the height of a menu in OS coords. The only use for this is calculating position for icon bar menus, but <Menu_Show> can do this for you...DATA_Menu_ColourMenu
Syntax:	<menu> Menu_ColourMenu (char *t, char *last_item);
Header:	<TimsLib:Menu.h=>Menu_TL>

Returns:	Menu handle of the menu.

This function creates a menu containing all 16 Wimp colours, with title /t/ and additional last item {/}last_item{/} eg "None". If {/}last_item{/} is <NULL> then only the 16 colour items are listed.DATA�menu_current_icon
This variable of type <icon_handle> is defined in <TimsLib:Menu.h=>Menu_TL>. It contains the icon over which the last menu was popped up ie the current menu if it is still open.DATA�menu_current_window
This variable of type <window_handle> is defined in <TimsLib:Menu.h=>Menu_TL>. It contains the window over which the last menu was popped up ie the current menu if it is still open.DATA�menu_currentopen
The variable {*}menu_currentopen{*} is defined in <DeskLib:Menu.h=>DL_Menu> as a variable holding the <menu_ptr> of the last menu opened.DATA�menu_currentpos
This variable is defined in <DeskLib:Menu.h=>DL_Menu>. It is of type <wimp_point>, and holds the position of the most recent menu shown with <Menu_Show>.DATA�Menu Descriptor
A menu descriptor defines a sequence of entries in a menu. It consists of a string with each entry, separated by either ',' or '|'.

Each entry may be prefixed by one or more of the following:

    !	Tick this entry
    ~	Shade this entry (cannot be selected)
    >	This entry has a dialogue box

Entries may not contain ',' or '|' and may not start with '!','~', or '>', for obvious reasons.DATAoMenu_DetachMenu
Syntax:	void Menu_DetachMenu (<window_handle> win, <icon_handle> icon);
Header:	<TimsLib:Menu.h=>Menu_TL>

This function detaches any menus or menu makers from the given window (and optionally, the icon may also be specified). If /window/ is {*}event_ANY{*} then only handlers installed with the window set to {*}event_ANY{*} will be detached.DATAHmenu_dispose
Syntax:	void menu_dispose (<menu> *m, int rec);
Header:	<menu.h=>menu_h> (Desktop C)

Syntax:	void Menu_Dispose (<menu> m, <BOOL> rec);
Header:	<TimsLib:Menu.h=>Menu_TL> (TimsLib)

This function disposes of the menu pointed to by /m/. If /rec/ is non-zero then all submenus are recursively disposed of also.DATA�Menu_Extend
Syntax:	<menu_ptr> Menu_Extend (menu_ptr menu, char *desc);
Header:	<DeskLib:Menu.h=>DL_Menu>

Returns:	Pointer to menu.

This function adds the <menu description=>menu_desc_> in /desc/ to the bottom of the menu whose pointer is given. If it cannot succeed, it returns the pointer to the original menu.

See also the Desktop C function, <menu_extend=>menu_extend_>.DATAmenu_extend
Syntax:	void menu_extend (<menu> m, char *desc);
Header:	<menu.h=>menu_h>

This function adds the <menu description=>menu_desc_> given to the bottom of the menu specified.

A menu which is already a submenu of another menu cannot be extended.DATA�Menu_FadeEntry
Syntax:	void Menu_FadeEntry (<menu> m, int entry);
Header:	<TimsLib:Menu.h=>Menu_TL>

This function-like macro shades the given entry in the given menu.DATA/menu_flags
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is a type giving easy access to individual menu flags and their combined value. It is defined as the following union:

  \{
    unsigned int value;
    struct
    \{
      unsigned int ticked	: 1;
      unsigned int dotted	: 1;
      unsigned int writable	: 1;
      unsigned int notifysub	: 1;
      unsigned int openshaded	: 1;
      unsigned int dummy2	: 2;
      unsigned int last	: 1;
      unsigned int indtitle	: 1;
      unsigned int dummy13	: 13;
      unsigned int shaded	: 1;
      unsigned int dummy1	: 1;
      unsigned int foreground	: 4;
      unsigned int background	: 4;
    } data;
  }
{tab}
�	/notifysub/ will cause the task to receive a message rather than opening a submenu.
�	/openshaded/ allows the submenu to be opened even if this entry is shaded.
�	/last/ should be set for the last entry in the menu.
�	/indtitle/ in the _first menu entry_ allows the title to be indirected.
�	/foreground/, /background/ and /shaded are useless and have no purpose. What are they doing here?DATA#Menu_GetFlags
Syntax:	void Menu_GetFlags (<menu_ptr> menu, int entry, int *tick, int *shade);
Header:	<DeskLib:Menu.h=>DL_Menu>

This function reads the state of /entry/ in the given menu. It will set {/}*tick{/} or {/}*shade{/} to 1 if the entry is ticked or shaded, as appropriate.DATA�Menu_GetText
Syntax:	char *Menu_GetText (<menu_ptr> menu, int entry);
Header:	<DeskLib:Menu.h=>DL_Menu>

Returs:	Pointer to text.

This function returns a pointer to the text of the given menu entry.DATAmenu.h
The \<menu.h> header declares a number of functions for handling menus. It also defines one type relating to menus.

Functions:
{indent 9}
#Table 4
<menu_dispose>
<menu_extend=>menu_extend_>
<menu_make_sprite>
<menu_make_writeable>
<menu_new=>menu_new_>
<menu_setflags=>menu_setflags_>
<menu_submenu>
<menu_syshandle>
#EndTable

#indent 0
Type:

{align centre}<menu>

DATA<menu_handler
This type is defined in <TimsLib:Menu.h=>Menu_TL>. It is a function used when selections are made from a menu. It has the form:

{fCode;align centre}void myfunc (void *reference, int *hit);{f;align}

where /reference/ is a user defined value and /hit/ is a -1 terminated list of menu selections.DATAmenu_item
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is a structure containing the definition of a menu item:

  \{
    <menu_flags>	menuflags;
    <menu_submenu=>menu_submenu_>	submenu;
    <icon_flags>	iconflags;
    <icon_data>	icondata;
  }

If the entry has no submenu/window, {/}submenu.value{/} should be set to -1.

Some bits of the iconflags are ignored:
{tab}
�	Icon is always vertically centred.
�	Icon never needs help for redrawing
�	Button type is always 9
�	ESG is always 0
�	Deleted bit is ignoredDATA%menu_make_sprite
Syntax:	void menu_make_sprite (<menu> m, int entry, char *spr);
Header:	<menu.h=>menu_h>

This function makes one menu entry in the specified menu into a sprite. Entry is the entry number and /spr/ is a pointer to the sprite name. The sprite is from the <resspr_area>.DATAtmenu_make_writeable
Syntax:	void menu_make_writeable (<menu> m, int entry, char *buf, int buflen, char *valstr);
Header:	<menu.h=>menu_h>

This function makes one of the entries in the given menu into a writeable entry. /buf/ is a pointer to a buffer (of length {/}buflen{/}) to hold the text. /valstr/ points to the <validation string=>SWI:wimp_validationstring>.DATA'menu_maker
This type is defined in <TimsLib:Menu.h=>Menu_TL>. It is a function used when a menu needs to be created. It has the form:

{fCode;align centre}<menu> myfunc (void *reference);{f;align}

where /reference/ is a user defined value and the function returns the new menu's handle.DATA�Menu_MakeWritable
Syntax:	void Menu_MakeWritable (<menu_ptr> menu, int entry, char *t, int size, char *v);
Header:	<DeskLib:Menu.h=>DL_Menu>

Syntax:	void Menu_MakeWritable (<menu> m, int entry, char *t, int size, char *v);
Header:	<TimsLib:Menu.h=>Menu_TL>

This function makes a menu item writeable. Item /entry/ will become an indirected writeable icon, with data pointer /t/, validation string /v/, and maximum length /size/.DATASMenu_New
Syntax:	<menu_ptr> Menu_New(char *t, char *desc);
Header:	<DeskLib:Menu.h=>DL_Menu>

Returns:	Menu pointer, or <NULL> if failed.

This function creates a new menu. The title of the menu is given in the string pointed to by /t/, and the <menu descriptor=>menu_desc_> is given in /desc/. The menu can be displayed using <Menu_Show>.

NB: This function needs <DeskLib:Screen.h=>Screen> functions. You must have called <Screen_CacheModeInfo> before using Menu functions.

See also the Desktop C function, <menu_new=>menu_new_>.
See also the TimsLib function, <Menu_New=>Menu_New__>.DATA�menu_new
Syntax:	<menu> menu_new (char *t, char *desc);
Header:	<menu.h=>menu_h>

Returns:	The menu handle of the menu.

This function creates a new menu. The title of the menu is given in the string pointed to by /t/, and the <menu descriptor=>menu_desc_> is given in /desc/. The entries are indexed from 1. A handler needs to be attached using <event_attachmenu>.

Example:
{fCode;align centre}m=menu_new("Edit",">Info,Create,Quit");

DATAkMenu_New
Syntax:	<menu> Menu_New (char *t, char *desc);
Header:	<TimsLib:Menu.h=>Menu_TL>

Returns:	The menu handle of the menu.

This function creates a new menu. The title of the menu is given in the string pointed to by /t/, and the <menu descriptor=>menu_desc_> is given in /desc/.

Example:
{fCode;align centre}m=Menu_New("Edit",">Info,Create,Quit");DATAbmenu_ptr
This type is defined in <DeskLib:Wimp.h=>Wimp> as a pointer to type <menu_block>.DATA�Menu_RemoveItem
Syntax:	void Menu_RemoveItem (<menu_ptr> menu, int entry);
Header:	<DeskLib:Menu.h=>DL_Menu>

This function removes one item from a menu, provided there is more than one item in it, and shuffles the others up to fill the space.DATAMenu_SDispose
Syntax:	void Menu_SDispose (<menu_ptr> menu);
Header:	<DeskLib:Menu.h=>DL_Menu>

This is a VERY simple dispose function. It does not free memory used by submenus, or by indirected icon text. In fact it is just a macro which calls <free>().DATAmenu_selection
This variable of type <BOOL> is defined in <TimsLib:Menu.h=>Menu_TL>. It contains <TRUE> if the menu handler is being called as the result of an active selection off a menu (ie a click) or <FALSE> if it is due to a submenu being opened (a menu warning event).DATA�Menu_SetFlags
Syntax:	void Menu_SetFlags (<menu_ptr> menu, int entry, int tick, int shade);
Header:	<DeskLib:Menu.h=>DL_Menu>

Syntax:	void Menu_SetFlags (<menu> m, int entry, <BOOL> tick, BOOL shade);
Header:	<TimsLib:Menu.h=>Menu_TL>

This function alters the state of /entry/ on the menu given. Setting /tick/ or /shade/ to 1 sets the entry to have those states, 0 unticks and/or unshades.DATAamenu_setflags
Syntax:	void menu_setflags (<menu> m, int entry, int tick, int fade);
Header:	<menu.h=>menu_h>

This function sets the flags for a particular menu entry (specified by {/}m{/} and {/}entry{/}). If /tick/ is non-zero then the entry is ticked, and if /fade/ is non-zero then the entry is faded (shaded) so that it can not be selected.DATA�Menu_SetText
Syntax:	void Menu_SetText (<menu_ptr> menu, int entry, char *text);
Header:	<DeskLib:Menu.h=>DL_Menu>

This function sets the text for a given menu entry to be that pointed to by /text/.DATA?Menu_Show
Syntax:	void Menu_Show (<menu_ptr> menu, int x, int y);
Header:	<DeskLib:Menu.h=>DL_Menu>

This function shows the given menu on screen, at the given /x/ and /y/ position. If /y/ is -1 then the height is correct for icon bar icons (very handy).

See also the TimsLib function, <Menu_Show=>Menu_Show_>.DATAPMenu_Show
Syntax:	void Menu_Show (<menu> m, <wimp_point> mouse_pos, <BOOL> iconbar);
Header:	<TimsLib:Menu.h=>Menu_TL>

This function shows the menu /m/ on screen, using the mouse position given. If /iconbar/ is <TRUE> then the vertical mouse position is ignored and the menu is placed in the correct position over the icon bar.DATAMenu_ShowLast
Syntax:	void Menu_ShowLast (void);
Header:	<DeskLib:Menu.h=>DL_Menu>

This function shows the last menu shown with <Menu_Show>, in the same place as before. It is intended that this should be called when *Adjust* is clicked on a menu.DATA�menu_submenu
Syntax:	void menu_submenu (<menu> m, int entry, menu submenu);
Header:	<menu.h=>menu_h> (Desktop C)
	<TimsLib:Menu.h=>Menu_TL> (TimsLib)

Known in TimsLib as {*}Menu_SubMenu{*}.

This function attaches the submenu whose menu handle is given to the menu /m/, at the entry specified. If /submenu/ is zero then the existing submenu is removed.

Once attached, a submenu cannot be extended, or deleted (on its own).DATAimenu_submenu
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is used as part of a menu definition to indicate the submenu or subwindow attached to a particular entry. It is defined as the following union:

  \{
    <menu_ptr>	menu;
    <window_handle>	window;
    int	value;
  }

/value/ should be set to -1 if no submenu/subwindow is to be attached.DATA�menu_submenupos
This variable of type <wimp_point> is defined in <TimsLib:Menu.h=>Menu_TL>. It contains the position passed by any MenuWarning messages ie the position a submenu should be opened at in response to the message.DATA�menu_syshandle
Syntax:	void *menu_syshandle (<menu> m);
Header:	<menu.h=>menu_h>

Returns:	A pointer to a <wimp_menustr>.

This function gets the menu pointer for a given menu.

See also the TimsLib function, <Menu_SysHandle=>Menu_SysHandle__>.DATA;Menu_SysHandle
Syntax:	<menu_ptr> Menu_SysHandle (menu_ptr m);
Header:	<DeskLib:Menu.h=>DL_Menu>

Returns:	The value passed, /m/!

This is a pointless function, retained only for compatibility with Desktop C's <menu_syshandle>, since {*}menu_ptr{*}s in DeskLib are pointer to the underlying Wimp definition.DATA9Menu_SysHandle
Syntax:	<menu_ptr> Menu_SysHandle (<menu> m);
Header:	<TimsLib:Menu.h=>Menu_TL>

Returns:	Pointer to the menu.

This function returns a pointer to the menu structure itself, for you to modify if needed. It is actually defined as a function like macro returning /m/ cast as a {*}menu_ptr{*}.DATA�Menu_TickEntry
Syntax:	void Menu_TickEntry (<menu> m, int entry);
Header:	<TimsLib:Menu.h=>Menu_TL>

This function-like macro ticks the given entry in the given menu.DATA�TimsLib:Menu.h
This header is a complete replacement for both Desktop C's <menu.h=>menu_h> and DeskLib's <Menu.h=>DL_Menu>. It provides superior menu handling facilities to the standard DeskLib functions, allowing menus to be attached in a similar way to the <Event> module.

Functions:

#indent 4
#Table 9 20
<Menu_New=>Menu_New__>
<Menu_ColourMenu>
<Menu_Dispose>
<Menu_SubMenu>
<Menu_AddDialogBox>
<Menu_SetFlags>
<Menu_TickEntry>
<Menu_UnTickEntry>
<Menu_FadeEntry>
<Menu_UnFadeEntry>
<Menu_MakeWritable>
<Menu_Show=>Menu_Show_>
<Menu_SysHandle=>Menu_SysHandle__>
<Menu_AttachMenu>
<Menu_AttachMenuMaker>
<Menu_AddDynamicDialogBox>
<Menu_DetachMenu>
#EndTable
#indent

Types:

#indent 11
#table lines 1
<menu>
<menu_handler>
<menu_maker>
#endtable
#indent

Variables:

#table columns 3
<menu_adjust_pressed>
<menu_current_window>
<menu_current_icon>
<menu_selection>
<menu_submenupos>

#EndTableDATA�Menu_UnFadeEntry
Syntax:	void Menu_UnFadeEntry (<menu> m, int entry);
Header:	<TimsLib:Menu.h=>Menu_TL>

This function-like macro unshades the given entry in the given menu.DATA�Menu_UnTickEntry
Syntax:	void Menu_UnTickEntry (<menu> m, int entry);
Header:	<TimsLib:Menu.h=>Menu_TL>

This function-like macro unticks the given entry in the given menu.DATAtMenu_Warn
Syntax:	void Menu_Warn (<menu_ptr> menu, int entry, <BOOL> yn, <event_handler> handler, void *ref);
Header:	<DeskLib:Menu.h=>DL_Menu>

This function claims the Menu Warning message using <EventMsg> and attaches the given handler to the given menu entry, making it Menu Warning messages. If /yn/ is <TRUE> it attaches the handler, otherwise it removes it.DATA�Menu_PopUp
Syntax:	void Menu_PopUp (<menu_ptr> menu, <window_handle> win, <icon_handle> icon);
Header:	<DeskLib:Menu.h=>DL_Menu>

This function pops the menu /menu/ up just beside the given icon, as recommended in the style guide.DATAMenu_PopUpAuto
Syntax:	void Menu_PopUpAuto (<menu_ptr> menu);
Header:	<DeskLib:Menu.h=>DL_Menu>

This function pops the menu /menu/ up just beside the icon which is determined by the last Wimp event processed by the <Event> module. If no info can be found, nothing happens.DATA�Menu_MakeIndirected
Syntax:	void Menu_MakeIndirected (<menu_ptr> menu, int entry, char *buf, int size);
Header:	<DeskLib:Menu.h=>DL_Menu>

This function converts the given menu entry into an indirected item using the buffer /buf/ of length /size/.DATA�Menu_FullDispose
Syntax:	void Menu_FullDispose (<menu_ptr> menu);
Header:	<DeskLib:Menu.h=>DL_Menu>

This frees up the memory used by a menu. It doesn't recursively dispose of submenus but it _does_ dispose of indirected menu data.DATA�Menu_ReviseWidth
Syntax:	void Menu_ReviseWidth (<menu_ptr> menu);
Header:	<DeskLib:Menu.h=>DL_Menu>

This function rescans through a menu definition and revises its width based on the title and item lengths. At least one item must be in the menu.DATA�Menu_FontMenu
Syntax:	<menu_ptr> Menu_FontMenu (<BOOL> sysfont, char *tick);
Header:	<DeskLib:Menu.h=>DL_Menu>

Returns:	Pointer to menu, or 0 if failed.

This function creates a font menu, including 'System font' if /sysfont/ is <TRUE>. /tick/ indicates the font name to be ticked, or <Menu_FontMenu_NOTICK>, or <Menu_FontMenu_TICKSYSFONT>. If you don't need to be RISC OS 2 compatible, use <Menu_FontMenu3>.DATA�Menu_FontMenu3
Syntax:	<menu_ptr> Menu_FontMenu3 (<BOOL> sysfont, char *tick);
Header:	<DeskLib:Menu.h=>DL_Menu>

Returns:	Pointer to menu, or 0 if failed.

This function creates a font menu, including 'System font' if /sysfont/ is <TRUE>. /tick/ indicates the font name to be ticked, or <Menu_FontMenu_NOTICK>, or <Menu_FontMenu_TICKSYSFONT>. This function won't work on RISC OS 2.DATA+Menu_FontMenuDecode
Syntax:	char *Menu_FontMenuDecode (int *sel);
Header:	<DeskLib:Menu.h=>DL_Menu>

Returns:	Font name, or 0 if an error.

This function, given a list of selections from the font menu, returns the font name. If you only need to support RISC OS 3, use <Menu_FontMenuDecode3>.DATAMenu_FontMenuDecode3
Syntax:	char *Menu_FontMenuDecode3 (int *sel);
Header:	<DeskLib:Menu.h=>DL_Menu>

Returns:	Font name, or 0 if an error.

This function, given a list of selections from the font menu, returns the font name. This is RISC OS 3 only.DATA�Menu_FontMenu_NOTICK
This macro is defined in <DeskLib:Menu.h=>DL_Menu>. It specifies that no entry on the font menu should be ticked and is defined as 0.DATA�Menu_FontMenu_TICKSYSFONT
This macro is defined in <DeskLib:Menu.h=>DL_Menu>. It specifies that the 'System font' entry on the font menu should be ticked and is defined as ((char *) 1).DIR$���F�����F&action��F����H&�block��F���G&`dataload�F���M/G&�dataopen��F����F&�datasaveT�F����G&�datasaveack�F���F�F&�destineeĜF���m�F&=header�F���%JG&Zhelpreply`�F����DG&helprequestx�F���UcG&fmenuwarn�F����a%bpopuprequestD�F���E�a%tpopupstate��F����QG&�print|�F����5G&�ramfetch(�F���m?G&�ramtransmitܦF����%G&dataloadack�F���'�G&aiconizeT�F�����G&�windowinfoDATAmessage_action
This type is defined in <DeskLib:Wimp.h>. It is an enumerated type containing values for common Wimp messages.
{wrap off}
 \{
  message_QUIT			= 0,		/* Quit */
  message_CLOSEDOWN		= 0,    
  message_DATASAVE		= 1,		/* DataSave */
  message_DATASAVEACK		= 2,		/* DataSaveAck */
  message_DATASAVEOK		= 2,    
  message_DATALOAD		= 3,		/* DataLoad */
  message_DATALOADACK		= 4,		/* DataLoadAck */
  message_DATALOADOK		= 4,    
  message_DATAOPEN,		 		/* DataOpen */
  message_RAMFETCH,		 		/* RAMFetch */
  message_RAMTRANSMIT,		 		/* RAMTransmit */
  message_PREQUIT,		 		/* PreQuit */
  message_PALETTECHANGE,	 		/* PaletteChange */
  message_SAVEDESK,		 		/* SaveDesktop */
  message_DEVICECLAIM,		 		/* DeviceClaim */
  message_DEVICEINUSE,		 		/* DeviceInUse */
  message_DATASAVED,		 		/* DataSaved */
  message_FILEROPENDIR		= 0x400,	/* FilerOpenDir */
  message_FILERCLOSEDIR,	 		/* FilerCloseDir */
  message_HELPREQUEST		= 0x502,	/* HelpRequest */
  message_HELPREPLY,		 		/* HelpReply */
  message_NOTIFY		= 0x40040,	/* Notify */
  message_MENUWARNING		= 0x400C0,	/* MenuWarning */
  message_MENUWARN		= 0x400C0,
  message_MODECHANGE,		 		/* ModeChange */
  message_TASKINITIALISE	= 0x400C2,	/* TaskInitialise */
  message_INITTASK		= 0x400C2,
  message_TASKCLOSEDOWN		= 0x400C3,	/* TaskCloseDown */
  message_CLOSETASK		= 0x400C3,
  message_SLOTSIZE		= 0x400C4,	/* SlotSize */
  message_SLOTCHANGE		= 0x400C4,
  message_SETSLOT		= 0x400C5,	/* SetSlot */
  message_TASKNAMERQ,		 		/* TaskNameRq */
  message_TASKNAMEIS,		 		/* TaskNameIs */
  message_TASKSTARTED,		 		/* TaskStarted */
  message_MENUSDELETED,		 		/* MenusDeleted */
  message_WINDOWINFO		= 0x400CC,	/* WindowInfo */
  message_POPUPRQ		= 0x46D40,
  message_POPUPREQUEST		= 0x46D40,
  message_POPUPSTATE,
  message_POPUPCLOSED,  
  message_PRINTFILE		= 0x80140,	/* PrintFile */
  message_WILLPRINT,		 		/* WillPrint */
  message_PRINTTYPEODD		= 0x80145,	/* PrintTypeOdd */
  message_PRINTTYPEKNOWN,	 		/* PrintTypeKnown */
  message_PRINTERCHANGE		 		/* SetPrinter */
 }DATA�message_block
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is the structure used for Wimp messages.

  \{
    <message_header>  header;
    union
    \{
      char			bytes [236];
      int			words [59];
      <message_datasave>	datasave;
      <message_datasaveack>	datasaveack;
      <message_dataload>	dataload;
      <message_dataopen>	dataopen;
      <message_ramfetch>	ramfetch;
      <message_ramtransmit>	ramtransmit;
      <message_helprequest>	helprequest;
      <message_helpreply>	helpreply;
      <message_print>		print;
      <message_menuwarn>	menuwarn;
      <message_iconize>		iconize;
      <message_windowinfo>	windowinfo;
    } data;
  }

As can be seen, certain messages have their own types predefined. For others, define your own and cast {/}data.bytes{/} into this type, or just access the data directly from {/}data.bytes{/} or {/}data.words{/}.

<dataloadack=>message_dataloadack> is strangely absent.DATA`message_dataload
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure holding data from a DataLoad message.

  \{
    <window_handle>	window;
    <icon_handle>	icon;
    <wimp_point>	pos;
    int			size;
    int			filetype;
    char		filename[212];
  }

The receiver of this message should load the file and send a DataLoadAck message.DATA�message_dataopen
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure holding data from a DataOpen message. It is defined as a <message_dataload>.DATA�message_datasave
This is a type defined in <DeskLib:Wimp.h=>Wimp> as a type suitable for holding data from a DataSave message. It is defined as the following structure:

  \{
    <window_handle>	window;
    <icon_handle>	icon;
    <wimp_point>	pos;
    int			estsize;
    int			filetype;
    char		leafname[12];
  }

This message indicates that the sender wants to save data to the receiver. The receiver should respond with a DataSaveAck or RamFetch message.

The /window/, /icon/, and /pos/ come from <Wimp_GetPointerInfo>. The rest should be filled in by the saving task. /filetype/ can be 0x1000 for a directory, 0x2000 for an application, or 0xffffffff for untyped.DATA�message_datasaveack
This is a structure defined in <DeskLib:Wimp.h=>Wimp>, used for holding data from a DataSaveAck message.

  \{
    <window_handle>	window;
    <icon_handle>	icon;
    <wimp_point>	pos;
    int			estsize;
    int			filetype;
    char		filename[212];
  }

This message acknowledges a DataSave message. The receiver should respond with a DataLoad message.

/estsize/ will be -1 if the file is not 'safe'.DATA�message_destinee
This type is defined in <DeskLib:Wimp.h=>Wimp> as a type capable of holding a message destination handle (either a window or task handle). It is defined as an /int/.DATA=message_header
This type is defined in <DeskLib:Wimp.h=>Wimp> as a type suitable for holding a Wimp message header. It is defined as the following structure:

    \{
      unsigned int	size;
      <task_handle>	sender;
      unsigned int	myref;
      unsigned int	yourref;
      <message_action>	action;
    }DATAZmessage_helpreply
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure holding data for a HelpReply message.

  \{
    char text[200];
  }

This message is used to provide interactive help. You reply to a HelpRequest message with this message which indicates the help to be displayed. "|M" within the text indicates a line break.DATAmessage_helprequest
This type is defined in <DeskLib:Wimp.h=>Wimp> as a
structure holding data for a HelpRequest
message.

  \{
    <mouse_block> where;
  }

This message is used to provide interactive
help. /where/ tells you for which window and
icon help is required.DATAfmessage_menuwarn
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure holding data for a MenuWarning message.

  \{
    int			id;
    <wimp_point>	openpos;
    int			selection[10];
  }
{tab}
�	/id/ is the number given to Wimp_CreateMenu.
�	/openpos/ is the position to open submenu at.
�	/selection/ is a list of selections, terminated by -1DATAbmessage_popuprequest
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to contain information passed by a message_POPUPREQUEST event:

  \{
    <window_handle>	window;
    <wimp_point>	openpos;
  }

You should cast the <event_pollblock>.data.message.data union into this type.

See the PopUp documentation for more details.DATAtmessage_popupstate
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to contain information passed by a message_POPUPSTATE event:

  \{
    <popup_handle>	handle;
    char		name[12];
    <popup_returndata>	data;
  }

You should cast the <event_pollblock>.data.message.data union into this type.

See the PopUp documentation for more details.DATA�message_print
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure holding data for a PrintTypeOdd message.

  \{
    int filler[5];
    int filetype;
    char filename[212];
  }DATA�message_ramfetch
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure holding data for a RAMFetch message.

  \{
    char	*buffer;
    int		buffsize;
  }DATA�message_ramtransmit
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure holding data for a RAMTransmit message.

  \{
    char	*buffer;
    int		byteswritten;
  }DATAmessage_dataloadack
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure holding data from a DataLoadAck message.

  \{
    <window_handle>	window;
    <icon_handle>	icon;
    <wimp_point>	pos;
    int			size;
    int			filetype;
    char		filename[212];
  }DATAamessage_iconize
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure holding data for an Iconize message.

  \{
    <window_handle>	window;
    <task_handle>	task;
    char		title[20];
  }
{tab}
�	/window/ is the window to iconize.
�	/task/ is the task owning the window.
�	/title/ is 20 bytes of title string (last part of first word).DATA�message_windowinfo
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure holding data for an WindowInfo message.

  \{
    <window_handle>	window;
    int			dummy;
    char		spritename[8];
    char		title[20];
  }
{tab}
�	/window/ is the window to iconize.
�	/dummy/ is reserved and must be 0.
�	/spritename/ is the sprite to use.
�	/title/ is 20 bytes of title string (last part of first word).DATA�MIN
This macro is defined in <TimsLib:Core.h=>Core_TL> and <DeskLib:Core.h=>Core>. It is used to find the minimum of two values. MIN(x,y) will give you /x/ if x\<y, or /y/ if x>=y.DATA�mktime
Syntax:	<time_t> mktime (<struct�tm> *tptr);
Header:	<time.h=>time_h>

Returns:	The calendar time.

This function takes the broken-down time (expressed as local time) pointed to by /tptr/ and converts in into a calendar time value. {/}tptr->tm_wday{/} and {/}tptr->tm_yday{/} are ignored on entry.

The values in the broken-down time structure may be altered so that they fit within the normal ranges. Also {/}tm_wday{/} and {/}tm_yday{/} will be set to the correct values.DATAHmodf
Syntax:	double modf (double x, double *i);
Header:	<math.h=>math>

Returns:	The fractional part of x.

This function splits the floating point number in x into an integer part and a fractional part. It stores the integer part (as a double!) in the variable pointed to by i. The function returns the fractional part.DATA�modifiers
This type is defined in <TimsLib:Kbd.h=>Kbd_TL>. It is a structure used to hold the status of the modifier keys as follows:

  \{
    unsigned alt	: 1;
    unsigned ctrl	: 1;
    unsigned shift	: 1;
    unsigned left_alt	: 1;
    unsigned left_ctrl	: 1;
    unsigned left_shift	: 1;
    unsigned right_alt	: 1;
    unsigned right_ctrl	: 1;
    unsigned right_shift	: 1;
  }DATA�DeskLib:Module.h
Version: 1.00 (23 Nov 1993)
#line
This header declares a few veneers for the <OS_Module=>SWI:OS_Module> SWI.

{align centre}<Module_Claim>
<Module_Free>DIR$LLd�F���B�C%3Claim��F����C%FreeDATA3Module_Claim
Syntax:	<os_error> *Module_Claim (unsigned size, void **block);
Header:	<DeskLib:Module.h=>Module>

Returns:	Pointer to error, or <NULL> if none.

This function claims an area of RMA space of size specified and returns a pointer to it in {/}*block{/}. /block/ is a pointer to a pointer.DATAModule_Free
Syntax:	<os_error> *Module_Free (void *block);
Header:	<DeskLib:Module.h=>Module>

Returns:	Pointer to error, or <NULL> if none.

This function releases a block of RMA space previously claimed using <Module_Claim>. /block/ is the pointer to the block.DIR$,,ԳF����B&blockDATAmouse_block
This type is defined by <DeskLib:Wimp.h=>Wimp>. It is a structure used to contain information on the mouse position and status, as follows:

  \{
    <wimp_point>	pos;
    <button_state>	button;
    <window_handle>	window;
    <icon_handle>	icon;
  }DATA5DeskLib:Msgs.h
Version: 1.01 (04 Aug 1993)
#line
This header declares functions for handling message files. Note that these functions do not use <MessageTrans=>SWI:MessageTrans_>.

Functions:

#indent 4
#Table columns 3
<Msgs_Lookup>
<Msgs_printf>
<Msgs_LoadFile>
<Msgs_DropGroup>
<Msgs_Report>
<Msgs_ReportFatal>
#EndTable
#indent 0

Acorn recommend that message files should be used for all textual messages eg menus, errors etc within programs so that versions in other languages can be produced easily by users without access to the program source code.DIR$��иF���&D%DropGroup�F�����$�hػF���ͱ$linitD�F���bD%�LoadFileD�F���<�C%�Lookup��F����$�lookup_��F���A�$xMSG_MAXL�F���c�C%printfP�F���f�$vreadfile��F����-D%�Report��F���95D%�ReportFatal��F�����${TAG_MAX,�F����X&�TLDATAMsgs_DropGroup
Syntax:	void Msgs_DropGroup (char *group);
Header:	<DeskLib:Msgs.h=>Msgs>

This function deletes a complete message group from memory. /group/ points to the group name. ie this function deletes all messages of the form: {fCode}group.*{f}, where "*" is any tag.DATA�msgs.h
This header declares functions for handling message files.

Functions:

#indent 8;table lines 1
<msgs_init>
<msgs_readfile>
<msgs_lookup=>msgs_lookup_>
#endtable
#indent

Macros:

#indent 9;table lines 1
<msgs_TAG_MAX>
<msgs_MSG_MAX>
#endtable
#indent

Acorn recommend that message files should be used for all textual messages eg menus, errors etc within programs so that versions in other languages can be produced easily by users without access to the program source code.DATAlmsgs_init
Syntax:	void msgs_init (void);
Header:	<msgs.h=>msgs_h>

This function reads in the messages in the resource file "Messages". It expects lines of the form:
{wrap off}
{fCode;align centre}tag1/tag2/tag3:Message text until newline{f;align;wrap}

Where {/}tag1{/}, {/}tag2{/} and {/}tag3{/} (up to 8 can be used) are all identifiers for the message.DATA�Msgs_LoadFile
Syntax:	<BOOL> Msgs_LoadFile (char *leaf);
Header:	<DeskLib:Msgs.h=>Msgs>

This function adds the message in the file specified into the current list of messages, with new messages overwriting old ones of the same name. Expects lines of the form:
{fCode;align centre}group.tag: message text until newline{f;align}

Leading spaces are stripped. Comments can be included if the line starts with "#".

The file is found using the <resource_pathname>, and /leaf/ which contains the leafname.DATA�Msgs_Lookup
Syntax:	<BOOL> Msgs_Lookup (char *tag, char *result, int maxlength);
Header:	<DeskLib:Msgs.h=>Msgs>

Returns:	<TRUE> if successful.

See also the Desktop C function, <msgs_lookup=>msgs_lookup_>.

This function looks in the message list (loaded with <Msgs_LoadFile>) for the tag specified. It then copies up to /maxlength/ characters of the associated message into /result/. Tags should be of the form:

{fCode}  group.tag:{f}

Messages can include other messages by enclosing their tag in \<>s:

{fCode}  err.pref:Nasty error alert:
  err.wally:\<err.pref> There's a wally about.{f}

Using this function on "err.wally" will return "Nasty error alert: There's a wally about."

DATA�msgs_lookup
Syntax:	char *msgs_lookup (char *tag);
Header:	<msgs.h=>msgs_h>

Returns:	Pointer to the message text.

This function finds the given tag in the list of messages and returns the message associated with it. /tag/ can be followed by a colon and a message - this is used as a default if the tag is not found eg
{wrap off}
{fCode;align centre}msgs_lookup("ERROR01:Whoops!");{f;align}
{wrap}
This will return "Whoops!" if the tag ERROR01 cannot be found.DATAxmsgs_MSG_MAX
This macro is defined in <msgs.h=>msgs_h> as the maximum length of a message. It is defined as 255.DATAMsgs_printf
Syntax:	void Msgs_printf (char *out, char *format, ...);
Header:	<DeskLib:Msgs.h=>Msgs>

This function is equivalent to <sprintf>, but the format string is a tag which is looked up by <Msgs_Lookup> to get the real <format string=>pform_>.DATAvmsgs_readfile
Syntax:	void msgs_readfile (char *name);
Header:	<msgs.h=>msgs_h>

This function reads in the messages in the resource file /name/. It expects lines of the form:
{wrap off}
{fCode;align centre}tag1/tag2/tag3:Message text until newline{f;align;wrap}

Where {/}tag1{/}, {/}tag2{/} and {/}tag3{/} (up to 8 can be used) are all identifiers for the message.DATA�Msgs_Report
Syntax:	void Msgs_Report (int errno, char *report, ...);
Header:	<DeskLib:Msgs.h=>Msgs>

This function calls <Error_Report>, but /report/ is a message tag which is looked up to get the real <format string=>pform_>.DATA�Msgs_ReportFatal
Syntax:	void Msgs_ReportFatal (int errno, char *report, ...);
Header:	<DeskLib:Msgs.h=>Msgs>

This function calls <Error_ReportFatal>, but /report/ is a message tag which is looked up to get the real <format string=>pform_>.DATA{msgs_TAG_MAX
This macro is defined in <msgs.h=>msgs_h> as the maximum length of a message tag. It is defined as 10.DATA�TimsLib:Msgs.h
This header declares one macro called {*}msgs_lookup{*}. This allows you to call a Desktop C-style <msgs_lookup=>msgs_lookup_> function and it maps this call onto a call to DeskLib's <Msgs_Lookup>.DATA�mode_variable
This type is defined in <DeskLib:KernelSWIs.h=>KernelSWIs>. It is an enumerated
type giving names to the mode variable numbers.

\{
  modevar_MODEFLAGS = 0,
  modevar_RIGHTCOLUMN,
  modevar_BOTTOMROW,
  modevar_NCOLOUR,
  modevar_XEIGFACTOR,
  modevar_YEIGFACTOR,
  modevar_LINELENGTH,
  modevar_SCREENSIZE,
  modevar_YSHIFTFACTOR,
  modevar_LOG2BPP,
  modevar_LOG2BPC,
  modevar_XWINDOWLIMIT,
  modevar_YWINDOWLIMIT
}DIR$ll,�F���5��/0NO_ �F������$�NOERROR��F����]�"�NULL��F���aV&$NumFromHexDigit��F������/,object_8�F����o�"Ioffsetof��F���tb�$�os�F����/Pos_�%F������/,osbyte_�3F������$OSCLI�4F���⹄/,osword_DIR$00\�F���ڙU&�ICON_DATADATA�NO_ICON_DATA
This macro is defined in <TimsLib:Icon.h=>Icon_TL>. It is the value the returned by <ICON_TYPE> when the icon in question is a 'no text, no sprite' icon. It is defined as 0.DATA�NOERROR
The macro NOERROR is defined in <DeskLib:Core.h=>Core> as a value representing the state that no error exists. It is actually defined as 0.DATA�NULL
The macro NULL is defined in <stdio.h=>stdio>, <stdlib.h=>stdlib>, <stddef.h=>stddef>, <string.h=>string>, <DeskLib:Core.h=>Core>, and <TimsLib:Core.h=>Core_TL> and used as a null pointer. In Easy�C it is actually defined as 0.DATA$NumFromHexDigit
Syntax:	int NumFromHexDigit (char digit);
Header:	<TimsLib:Lib.h=>Lib>

Returns:	Value of the hexadecimal character.

This function takes a character /digit/ which is a hexadecimal digit (0-F). It returns the value of this (0-15). -1 is returned if /digit/ is invalid.DIR$,,��F���Q]U&:infoDATA:object_info
This type is defined in <TimsLib:File.h=>File_TL>. It contains information on a file as returned by the function <ReadEntries>. It is defined as the following structure:

  \{
    unsigned	load;
    unsigned	exec;
    unsigned	length;
    unsigned	attr;
    unsigned	type;
    char	name[1];
  }DATAIoffsetof
Syntax: offsetof(type, id);

This function-like macro is defined in <stddef.h=>stddef> for the purpose of finding the offset in bytes from the beginning of a structure to one of its members. The parameters are /type/, the structure type eg. /struct mystruct/ or /FILE/; and /id/, the member within the structure.DATA�os.h
The \<os.h> header declares functions for accessing Operating System routines. It is intended as an alternative to \<kernel.h>.

Functions:

#Indent 10
#Table 3 12
<os_swi >
<os_byte>
<os_word>
<os_gbpb>
<os_file>
<os_args>
<os_find>
<os_cli>
<os_read_var_val>
#EndTable

#Indent 0
Macros:

#Indent 7
#Table columns 4
<BOOL>
<TRUE>
<FALSE>
<OS_CLI=>os_macros_>
<OS_Byte=>os_macros_>
<OS_Word=>os_macros_>
<OS_File=>os_macros_>
<OS_Args=>os_macros_>
<OS_GBPB=>os_macros_>
<OS_Find=>os_macros_>
<os_X=>os_macros_>

#EndTable
#Indent 0

Types:

#Indent 7
#Table columns 4
<os_regset>
<os_error>
<os_gbpbstr>
<os_filestr>
#EndTableDIR$PPT�F���N��$�adval��F����C�$@args4�F�����$�byte��F���1�>%�Byte_��F����3�$�circle��F���\=�$�circlefill��F����B�$�clg\�F���\�$ucli��F���/F�$�cls��F���eR�$colour��F���f�$&cursor��F���r�$�draw��F����y�$drawby��F���,��$�error|�F���J3�$Pfile��F����(�$�filestrx�F������$�fill4�F���4O�$Lfind��F����'�$Pgbpb�F����"�$Agbpbstr�F���٦�$�gcol�F������$}get��F������$sinkey�F������$�macros_��F������$�mode�F���G��$�move`F���$��$�moveby@F�����$*originlF���T��$�palette\F�����$plottF����%�$point|F����)�$�posP	F���,l�$�read_var_valF���h�>%2ReadVarVal@F���C>�$9rectangle|
F���jj�$Grectanglefill�F������$regset�F���v�$ernd4F���3-�$�soundF����x�$	swi(F���䜲$�swi_�F���eF�$�swix�F����u�$tab�F������$<tint�F������$vduF������$�vduq F���>��$-vduw0!F������$�vpos"F���2�$word$F����9?%pReadModeVariableDATA�os_adval
Syntax:	int os_adval (int buf);
Header:	<roslib.h=>roslib>

Returns:	A value, depending on the value of /buf/.

This function reads the contents and status of various buffers, depending on the value of /buf/:

#indent 4;tab
7	X coordinate of mouse (do not use)
8	Y coordinate of mouse (do not use)
246	Bytes free in mouse buffer
252	Bytes free in printer buffer
253	Bytes free in RS423 output buffer
254	Bytes in RS423 input buffer
255	Bytes in keyboard buffer
#indent

It is recommended by Acorn that you do not use os_adval 7 and 8 to read the mouse position, but call the OS_Mouse SWI instead.

This call is equivalent to <OS_Byte=>SWI:OS_Byte> 128.DATA@os_args
Syntax:	<os_error> *os_args (<os_regset> *r);
Header:	<roslib.h=>roslib>	(Easy C)
	<os.h=>os>	(Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function calls the <OS_Args=>SWI:OS_Args> SWI which performs various functions. The registers R0-R9 are set to the values in /r/ before the call.DATA�os_byte
Syntax:	<os_error> *os_byte (int r0, int *r1, int *r2);
Header:	<roslib.h=>roslib>	(Easy C)
	<os.h=>os.h>	(Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function calls the <OS_Byte=>SWI:OS_Byte> SWI with the register R0 set to the value passed in r0, and registers R1 and R2 set to the values pointed to by {/}r1{/} and {/}r2{/}. Values may also be returned in the ints pointed to by {/}r1{/} and {/}r2{/}.DATA�OS_Byte
Syntax:	<os_error> *OS_Byte (<osbyte_number> r0, int r1in, int r2in, int *r1out, int *r2out);
Header:	<DeskLib:KernelSWIs.h=>KernelSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function calls the <OS_Byte=>SWI:OS_Byte> SWI with the register R0 set the the value passed in {/}r0{/}, and registers R1 and R2 set to the values passed in {/}r1in{/} and {/}r2in{/}. Values may be returned in the /ints/ pointed to by {/}r1out{/} and {/}r2out{/}.DATA�os_circle
Syntax:	void os_circle (int x, int y, int r);
Header:	<roslib.h=>roslib>

This function draws a circle with centre at screen coordinates {/}(x,y){/} and radius /r/. Equivalent to <CIRCLE=>Basic:CIRCLE> in Basic.DATA�os_circlefill
Syntax:	void os_circlefill (int x, int y, int r);
Header:	<roslib.h=>roslib>

This function draws a filled circle with centre at screen coordinates {/}(x,y){/} and radius /r/. Equivalent to <CIRCLE FILL=>Basic:CIRCLE> in Basic.DATA�os_clg
Syntax:	void os_clg (void);
Header:	<roslib.h=>roslib>

This functions clears the graphics window to the current background graphics colour (set using <os_gcol>).DATAuos_cli
Syntax:	<os_error> *os_cli (char *command);
Header:	<roslib.h=>roslib>	(Easy C)
	<os.h=>os>	(Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This functions passes the string given to the operating system CLI to be executed as if it had been typed in as a "star command". For instance, {fCode}os_cli("Modules"){f} has the same effect as <*Modules>.DATA�os_cls
Syntax:	void os_cls (void);
Header:	<roslib.h=>roslib>

This function clears the text window to the current background text colour (set using <os_colour>).DATAos_colour
Syntax:	void os_colour (int c);
Header:	<roslib.h=>roslib>

This function sets the current text colour to the value in /c/. For /c/ \< 127 this alters the text foreground colour to /c/, and for /c/ \> 127 this alters the text background colour to /c/ - 128.DATA&os_cursor
Syntax:	void os_cursor (int n);
Header:	<roslib.h=>roslib>

This function changes the appearance of the text cursor depending on /n/. Possible values are:

#indent 2;tab
0	Hide cursor
1	Show cursor
2	Steady cursor
3	Flashing cursor{indent}

Equivalent to <VDU 23,1=>VDU:23,1>.DATA�os_draw
Syntax:	void os_draw (int x, int y);
Header:	<roslib.h=>roslib>

This function draws a line in the current foreground graphics colour from the current position to {/}(x,y){/}. Equivalent to <DRAW=>Basic:DRAW> in Basic.DATAos_drawby
Syntax:	void os_drawby (int x, int y);
Header:	<roslib.h=>roslib>

This function draws a line in the current foreground graphics colour from the current position relatively by {/}(x,y){/} coordinates. Equivalent to <DRAW BY=>Basic:DRAW> in Basic.DATA�os_error
The type {*}os_error{*} is defined in <roslib.h=>roslib> (Easy
C), <os.h=>os> (Desktop C) and <DeskLib:Core.h=>Core> as an
object holding a standard RISC OS error block.
It is defined as the following structure in
roslib.h:

\{
    int errnum;	/* Error number  */
    char errmess[255];	/* Error message */
}

and in os.h and DeskLib:Core.h it is defined as:

\{
    int errnum;	/* Error number  */
    char errmess[252];	/* Error message */
}DATAPos_file
Syntax:	<os_error> *os_file (<os_filestr> *blk);
Header:	<roslib.h=>roslib>	(Easy C)
	<os.h=>os>	(Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function calls the <OS_File=>SWI:OS_File> SWI which performs various functions on whole files. The parameters for the call are set from and returned in /blk/.DATA�os_filestr
The type os_filestr is defined in <roslib.h=>roslib> (Easy C) and <os.h=>os> (Desktop C) as an object holding information to be passed to the function <os_file>. It is defined as the following structure:

#indent 10
#table columns 2
Easy C:                  
\{                        
    int action;          
    char *objname;       
    int loadaddr;        
    int execaddr;        
    int startaddr;       
    int endaddr;         
    int reserved[4];     
}                        
Desktop C
\{
    int action;     
    char *name;     
    int loadaddr;   
    int execaddr;   
    int start;      
    int end;        
    int reserved[4];
}
#endtableDATA�os_fill
Syntax:	void os_fill (int x, int y);
Header:	<roslib.h=>roslib>

This functions flood fills an area with the current foreground graphics colour, starting at {/}(x,y){/}.DATALos_find
Syntax:	<os_error> *os_find (<os_regset> *r);
Header:	<roslib.h=>roslib>	(Easy C)
	<os.h=>os>	(Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function calls the <OS_Find=>SWI:OS_Find> SWI which handles opening and closing of random access files. The registers R0-R9 are set from and returned in /r/.DATAPos_gbpb
Syntax:	<os_error> *os_gbpb (<os_gbpbstr> *blk);
Header:	<roslib.h=>roslib>	(Easy C)
	<os.h=>os>	(Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This function calls the <OS_GBPB=>SWI:OS_GBPB> SWI which performs a myriad of different operations. The parameters for the call are set from and returned in /blk/.DATAAos_gbpbstr
The type os_gbpbstr is defined in <roslib.h=>roslib> (Easy C) and <os.h=>os> (Desktop C) as an object holding data to be passed to the function <os_gbpb>. It is defined as the following structure:

#indent 9
#table columns 2
Easy C:
\{
    int action;
    int handle;
    void *startaddr;
    int number;
    int pointer;
    int buf_len;
    char *wildcard;
    int reserved[3];
}
Desktop C:
\{
    int action;
    int file_handle;
    void *data_addr;
    int number;
    int seq_point;
    int buf_len;
    char *wild_fld;
    int reserved[3];
}
#endtableDATA�os_gcol
Syntax:	void os_gcol (int a, int c);
Header:	<roslib.h=>roslib>

This function changes the current graphics foreground colour (in {/}c{/}) and <action=>VDU:18a> ({/}a{/}). If /c/ \>�128 then the background colour is set to /c/ -�128.DATA}os_get
Syntax:	int os_get (void);
Header:	<roslib.h=>roslib>

Returns:	The character read.

This function reads a character from the current input stream. It waits until one is available, so may halt the program temporarily. If an escape condition occurs, the function returns a value greater than 255.

This function is identical to OS_ReadC, or <GET=>Basic:GET> in Basic.DATAsos_inkey
Syntax:	int os_inkey (int n);
Header:	<roslib.h=>roslib>

Returns:	n>=0	The character read.
	n\<0	-1 if the key is being pressed, or 0 if not.
	n==256	The Operating System version.

This function either reads a character from the input stream within a time limit, tests a specific key, or reads the Operating System version.

To read a character within a time limit, /n/ should be the time limit in centiseconds (up to 32767 - it can be 0). The program will wait until a character is input, for a maximum of /n/ centiseconds, and return the ASCII value of the key.

To test a specific key, /n/ should be a value from -255 to -1, and the key represented by that value will be tested. The value should be (-1 - <key nr=>SWI:os_byte121a>)

To read the OS version, /n/ =�-256.

This function is equivalent to <OS_Byte=>SWI:OS_Byte> 129, or <INKEY=>Basic:INKEY> in Basic.DATA�os.h Macros
Eight macros are defined relating to SWI numbers. The following macros are defined as the number of their namesake's SWI:

#Indent 7
#Table columns 3
{*}OS_CLI{*}
{*}OS_Byte{*}
{*}OS_Word{*}
{*}OS_File{*}
{*}OS_Args{*}
{*}OS_GBPB{*}
{*}OS_Find{*}
#EndTable
#Indent 0

The macro {*}os_X{*} is the value of the 'X bit' in SWI numbers. It should be logically ORed with the SWI number to call the X form of the SWI.DATA�os_mode
Syntax:	void os_mode (int m);
Header:	<roslib.h=>roslib>

This function changes the current <screen mode=>VDU:22a> to the one specified in /m/. It is equivalent to <MODE=>Basic:MODE> in Basic, or <VDU 22=>VDU:22>.DATA�os_move
Syntax:	void os_move (int x, int y);
Header:	<roslib.h=>roslib>

This function moves the graphics cursor to the position given by (x,y). Equivalent to <MOVE=>Basic:MOVE> in Basic.DATA�os_moveby
Syntax:	void os_moveby (int x, int y);
Header:	<roslib.h=>roslib>

This function moves the graphics cursor from the current position relatively by {/}(x,y){/}. Equivalent to <MOVE BY=>Basic:MOVE> in Basic.DATA*os_origin
Syntax:	void os_origin (int x, int y);
Header:	<roslib.h=>roslib>

This function moves the current graphics origin (ie the position of (0,0) on the screen) to {/}(x,y){/}. The coordinates are given relative to the screen bottom left. Equivalent to <ORIGIN=>Basic:ORIGIN> in Basic.DATA�os_palette
Syntax:	void os_palette (int c, int m, int r, int g, int b);
Header:	<roslib.h=>roslib>

This function redefined the colour specified in c either to the physical colour in /m/ (if /m/ \<�16) or to the colour whose red, green, and blue components are given by /r/, /g/, and /b/. /m/ can be one of the following:

#indent 2;tab
0-15	Colour /c/ is redefined to be the physical colour in /m/.
16	Colour /c/ is redefined to {/}(r,g,b){/}.
17	First flash colour for /c/ is {/}(r,g,b){/}.
18	Second flash colour for /c/ is {/}(r,g,b){/}.
24	Border colour is {/}(r,g,b){/}. /c/ is ignored.
25	Mouse colour /c/ is {/}(r,g,b){/}.
#indent

128 added to any of the above sets the supremacy bit.

This command is equivalent to <VDU 19=>VDU:19>.DATAos_plot
Syntax:	void os_plot (int n, int x, int y);
Header:	<roslib.h=>roslib>

This function does lots of things. It is the same as <PLOT=>Basic:PLOT> in Basic, or the SWI <OS_Plot=>SWI:OS_Plot>. /n/ is the <plot type=>SWI:os_plot.index>, and /x/ and /y/ are coordinates.DATAos_point
Syntax:	int os_point (int x, int y);
Header:	<roslib.h=>roslib>

Returns:	The colour of the pixel.

This function reads the logical colour of pixel at coordinates {/}(x,y){/}. If the coordinates are outside the graphics window then it returns -1.DATA�os_pos
Syntax:	int os_pos (void);
Header:	<roslib.h=>roslib>

Returns:	The cursor position.

This function reads the X coordinate of the text cursor, from the left hand edge of the current text window.DATA�os_read_var_val
Syntax:	void os_read_var_val (char *name, char *buf, int len);
Header:	<os.h=>os>

This function gets the value of system variable whose name is specified and places it in the character array pointed to by /buf/. The length of the array is given by /len/. When reading the variables it converts numbers to strings and expands macros.

This function is equivalent to the SWI <OS_ReadVarVal=>SWI:OS_ReadVarVal>, with R4=3.DATA2OS_ReadVarVal
Syntax:	<BOOL> OS_ReadVarVal (char *var, char *buf, int bufsize);
Header:	<DeskLib:KernelSWIs.h=>KernelSWIs>

Returns:	<TRUE> if successful.

This function reads the value of the system variable whose name is given in /var/ and returns it in the buffer /buf/, whose size is /bufsize/.DATA9os_rectangle
Syntax:	void os_rectangle (int x, int y, int w, int h);
Header:	<roslib.h=>roslib>

This function draws a rectangle on the screen, with the bottom left at position {/}(x,y){/} and width and height as given by /w/ and /h/. Equivalent to {fCode}<RECTANGLE=>Basic:RECTANGLE> x,y,w,h{f} in Basic.DATAGos_rectanglefill
Syntax:	void os_rectanglefill (int x, int y, int w, int h);
Header:	<roslib.h=>roslib>

This function draws a filled rectangle on the screen, with bottom left at {/}(x,y){/} and width and height specified by /w/ and /h/. It is equivalent to {fCode}<RECTANGLE FILL=>Basic:RECTANGLE> x,y,w,h{f} in Basic.DATAos_regset
The type os_regset is defined in <roslib.h=>roslib> (Easy C) and <os.h=>os> (Desktop C) as an object capable of holding the registers R0-R9 so that they can be passed to the operating system. It is defined as the structure:

\{
    int r[10];
}DATAeos_rnd
Syntax:	unsigned os_rnd (int n);
Header:	<roslib.h=>roslib>

Returns:	A random number, or 0 if /n/ is negative.

This function generates random numbers in the range 0 to /n/ -�1. If /n/ is negative then it reseeds the random number generator. After reseeding with the same number, the same sequence of random numbers will always be generated.DATA�os_sound
Syntax:	<os_error> *os_sound (int c, int a, int p, int d);
Header:	<roslib.h=>roslib>

Returns:	Pointer to error, or <NULL> if none.

This function generates a sound with channel, amplitude, pitch and duration set by /c/, /a/, /p/ and /d/ respectively.

Amplitude may be either 0-15 for linear control, or 0x100 to 0x17F for logarithmic control in which case bit 7 set means smooth pitch changes. In the logarithmic scale a change of 0x10 means a doubling or halving of volume.

<Pitch=>sound_pitch_> may be either 0-255 in quarter-semitone steps, or 0x100 to 0x7FF for fine control (4096 steps per octave!) in which case bits 0-11 represent the note and bits 12-14 represent the octave.

Duration is in twentieths of a second.DATA	os_swi
Syntax:	void os_swi (int n, <os_regset> *r);
Header:	<roslib.h=>roslib>	(Easy C)
	<os.h=>os>	(Desktop C)

This function calls a <SWI=>SWI:!Root>, whose number is given in /n/. The registers R0-R9 are set to and returned in the values in /r/.

If an error occurs it is reported by the operating system and your program will halt execution.

A number of macros allowing the SWI numbers to be made more readable to humans are defined in <swis.h=>swis> (Easy C).

Desktop C provides <other SWI calls=>os_swi_>.DATA�Desktop C os_swi() Calls
These functions all perform SWIs. The functions are of the form:

<os_error> *os_swiN[r](int n, [\{int}], [\{int *}]);

Where /N/ is the number of registers (0-4,6) to be passed to the call (and returned). If /r/ is present then registers are returned as well.

The registers to be passed to the SWI are given as integer arguments. The registers to be passed back are given as integer pointers.

If the SWI number has its X bit set, then the X form of the SWI will be called and a pointer to an error returned if there is one. Otherwise, the normal form will be called and the function returns <NULL>. You should always use the X form.DATA�os_swix
Syntax:	<os_error> *os_swix (int n, <os_regset> *r);
Header:	<roslib.h=>roslib>

Returns:	Pointer to an error, or <NULL> if none.

This function calls a <SWI=>SWI:!Root>, whose number is given in /n/. The registers R0-R9 are set to and returned in the values in /r/.

If an error occurs it is returned by the function and not reported by the operating system.

A number of macros allowing the SWI numbers to be made more readable to humans are defined in <swis.h=>swis>.DATAos_tab
Syntax:	void os_tab (int x, int y);
Header:	<roslib.h=>roslib>

This function moves the text cursor to position {/}(x,y){/}. If /x/ or /y/ are outside the current text window, the function does not move the cursor. This is equivalent to <VDU 31,x,y=>VDU:31>.DATA<os_tint
Syntax:	void os_tint (int c, int t);
Header:	<roslib.h=>roslib>

This function sets the tint (ie the amount of white added) for a colour (256 colour modes only). The colour for which the tint is set is specified by c, which may be any of the following:

#indent 4;tab
0	Text foreground colour
1	Text background colour
2	Graphics foreground colour
3	Graphics background colour.
#indent

The tint, given in /t/, should be either 0x00, 0x40, 0x80 or 0xC0. The higher it is, the brighter the colour is.

This function is equivalent to <VDU 23,17=>VDU:23,17,0>.DATAos_vdu
Syntax:	void os_vdu (int <c=>VDU:!Root>);
Header:	<roslib.h=>roslib>

This function sends the single character specified in /c/ to the VDU drivers (as if <OS_WriteC=>SWI:OS_WriteC> had been called). /c/ is a single byte, although it is stored in an /int/.DATA�os_vduq
Syntax:	void os_vduq (int c, ...);
Header:	<roslib.h=>roslib>

This function sends a sequence of bytes to the VDU drivers. Each byte takes one argument. It is identical in operation to <os_vdu>, but can send more than one byte.DATA-os_vduw
Syntax:	void os_vduw (int n);
Header:	<roslib.h=>roslib>

This function send the 16-bit value in /n/ to the VDU driver as two bytes, lower byte first (little endian). It would typically be used for sending screen coordinates to the VDU drivers, as these are always two-byte quantities.DATA�os_vpos
Syntax:	int os_vpos (void);
Header:	<roslib.h=>roslib>

Returns:	The cursor position.

This function reads the Y coordinate of the text cursor, from the top edge of the current text window.DATAos_word/OS_Word
Syntax:	<os_error> *os_word (int r0, void *r1);
Headers:	<roslib.h=>roslib>	(Easy C)
	<os.h=>os>	(Desktop C)

Syntax:	<os_error> *OS_Word (<osword_number> r0, void *r1);
Header:	<DeskLib:KernelSWIs.h=>KernelSWIs>

Returns:	Pointer to an error, or <NULL> if none.

This function calls the <OS_Word=>SWI:OS_Word> SWI with the register R0 set to the value passed in {/}r0{/}, and the register R1 set to the pointer {/}r1{/}, which points to a parameter block. Values are read from and returned in the parameter block.DATApOS_ReadModeVariable
Syntax:	<os_error> *OS_ReadModeVariable (int mode, <mode_variable> var, int *value);
Header:	<DeskLib:KernelSWIs.h=>KernelSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function reads a <mode variable=>SWI:OS_ReadModeVariable.variables> for the screen mode /mode/ (-1 for the current mode) and returns its value in {/}*value{/}.DIR$,,�%F���[>%�
numberDATA�
osbyte_number
This type is defined in <DeskLib:KernelSWIs=>KernelSWIs>. It is an enumerated type giving names to most <OS_Byte=>OS_Byte_> calls:

\{
  osbyte_DISPLAYOSVERSION = 0,
  osbyte_SPECIFYINPUT = 2,
  osbyte_SPECIFYOUTPUT,
  osbyte_CURSORKEYSTATUS,
  osbyte_WRITEPRINTERDRIVERTYPE,
  osbyte_WRITEPRINTERIGNORECHAR,
  osbyte_WRITERS423RXRATE,
  osbyte_WRITERS423TXRATE,
  osbyte_WRITEDURATION1STFLASHCOLOUR,
  osbyte_WRITEDURATION2NDFLASHCOLOUR,
  osbyte_WRITEKEYREPEATDELAY,
  osbyte_WRITEKEYREPEATRATE,
  osbyte_DISABLEEVENT,
  osbyte_ENABLEEVENT,
  osbyte_FLUSHBUFFER,
  osbyte_RESETFUNCTIONKEYS = 18,
  osbyte_WAITFORVSYNC,
  osbyte_RESETFONTDEFINITIONS,
  osbyte_FLUSHSELECTEDBUFFER,
  osbyte_RESETGROUPOFFONTDEFINITIONS = 25,
  osbyte_RW_COUNTRYNUMBER = 70,
  osbyte_RW_ALPHABET = 71,
  osbyte_RW_KEYBOARD = 71,
  osbyte_SELECTPOINTER = 106,
  osbyte_ACTIVATEMOUSE = 106,
  osbyte_WRITESHADOWSTATE,
  osbyte_READVDUSTATUS = 117,
  osbyte_REFLECTKEYBOARDSTATUSINLEDS,
  osbyte_KEYBOARDSCAN = 121,
  osbyte_KEYBOARDSCANNOSHIFT,
  osbyte_CLEARESCAPECONDITION = 124,
  osbyte_SETESCAPECONDITION,
  osbyte_ACKNOWLEDGEESCAPECONDITION,
  osbyte_CHECKFOREOF,
  osbyte_GETBUFFERORMOUSESTATUS,
  osbyte_SCANFORKEY = 129,
  osbyte_READOSIDENTIFIER = 129,
  osbyte_READTEXTCURSORPOSITION = 134,
  osbyte_READCHARACTERATTEXTCURSOR = 135,
  osbyte_READSCREENMODE = 135,
  osbyte_INSERTCHARACTERCODEINTOBUFFER = 138,
  osbyte_WRITEFSOPTIONS,
  osbyte_ISSUEMODULESERVICECALL = 143,
  osbyte_SETTVCHARACTERISTICS,
  osbyte_GETCHARACTERFROMBUFFER,
  osbyte_EXAMINEBUFFERSTATUS = 152,
  osbyte_INSERTCHARACTERINTOBUFFER,
  osbyte_RW_ASYNCCOMMSSTATE = 156,
  osbyte_READVDUVARIABLE = 160,
  osbyte_READCMOSRAM,
  osbyte_WRITECMOSRAM,
  osbyte_RW_GENERALGRAPHICSINFO,
  osbyte_READOUTPUTCURSORPOSITION = 165,
  osbyte_RW_50HZCOUNTER = 176,
  osbyte_READINPUTSOURCE,
  osbyte_RW_RS423INPUTINTERPTRETATION = 181,
  osbyte_RW_NOIGNORESTATE,
  osbyte_RW_RS423BUSYFLAG = 191,
  osbyte_READRS423CONTROLBYTE,
  osbyte_RW_FLASHCOUNTER,
  osbyte_READDURATION2NDFLASHCOLOUR,
  osbyte_READDURATION1STFLASHCOLOUR,
  osbyte_RW_KEYREPEATDELAY,
  osbyte_RW_KEYREPEATRATE,
  osbyte_RW_EXECFILEHANDLE,
  osbyte_RW_SPOOLFILEHANDLE,
  osbyte_RW_BREAKESCAPEEFFECT,
  osbyte_RW_KEYBOARDDISABLEFLAG,
  osbyte_RW_KEYBOARDSTATUSBYTE,
  osbyte_RW_RS423INPUTBUFFERMINSPACE,
  osbyte_RW_RS423IGNOREFLAG,
  osbyte_RW_BELLCHANNEL = 211,
  osbyte_RW_BELLVOLUME,
  osbyte_RW_BELLFREQUENCY,
  osbyte_RW_BELLDURATION,
  osbyte_RW_FUNCTIONKEYSTRINGLENGTH = 216,
  osbyte_RW_PAGEDMODELINECOUNT,
  osbyte_RW_BYTESINVDUQUEUE,
  osbyte_RW_TABKEYCODE,
  osbyte_RW_ESCAPECHARACTER,
  osbyte_RW_INTERPRETATIONOFBUFFERCODES_C0_CF,
  osbyte_RW_INTERPRETATIONOFBUFFERCODES_D0_DF,
  osbyte_RW_INTERPRETATIONOFBUFFERCODES_E0_EF,
  osbyte_RW_INTERPRETATIONOFBUFFERCODES_F0_FF,
  osbyte_RW_FUNCTIONKEYINTERPRETATION,
  osbyte_RW_SHIFTFUNCTIONKEYINTERPRETATION,
  osbyte_RW_CTRLFUNCTIONKEYINTERPRETATION,
  osbyte_RW_CTRLSHIFTFUNCTIONKEYINTERPRETATION,
  osbyte_RW_ESCAPEKEYSTATUS,
  osbyte_RW_ESCAPEEFFECTS,
  osbyte_RW_CHARACTERDESTINATIONSTATUS = 236,
  osbyte_RW_CURSORKEYSTATUS,
  osbyte_RW_NUMERICKEYPADINTERPRETATION,
  osbyte_READCOUNTRYFLAG = 240,
  osbyte_READRS423BAUDRATES = 242,
  osbyte_READTIMERSWITCHSTATE,
  osbyte_READPRINTERDRIVERTYPE = 245,
  osbyte_RW_PRINTERIGNORECHARACTER,
  osbyte_RW_BREAKKEYACTIONS,
  osbyte_READVDUDRIVERSCREENBANK = 250,
  osbyte_READDISPLAYSCREENBANK,
  osbyte_READLASTBREAKTYPE = 253,
  osbyte_RW_EFFECTOFSHIFTCTRLONNUMERICKEYPAD,
  osbyte_RW_BOOTOPTION
}DATAOSCLI
This macro is defined in <TimsLib:Core.h=>Core_TL> and <DeskLib:Core.h=>Core>. It is a handy veneer to the OS_CLI SWI.

OSCLI(command) calls OS_CLI with R0=command.

It is actually defined as:{wrap off}
{fCode}<#define=>define> OSCLI(cmd) (<SWI>(1,0,OS_CLI,(cmd)))DIR$,,�4F��� o>%numberDATAosword_number
This type is defined in <DeskLib:KernelSWIs=>KernelSWIs>. It
is an enumerated type giving names to most
<OS_Word_> calls:

\{
  osword_READLINE = 0,
  osword_READSYSCLOCK,
  osword_WRITESYSCLOCK,
  osword_READINTERVALTIMER,
  osword_WRITEINTERVALTIMER,
  osword_READPIXELCOLOUR = 9,
  osword_READCHARACTERDEFN,
  osword_READPALETTE,
  osword_WRITEPALETTE,
  osword_READGFXCURSORS,
  osword_READCMOSCLOCK,
  osword_WRITECMOSCLOCK,
  osword_DEFINEPOINTERANDMOUSE = 21,
  osword_WRITESCREENBASE
}DIR$�:F���6��/�packmask_\@F������/�packshft_8EF�����/Lpalette_pGF���	^D%�PaneKF���a��/lPane_�\F���>��/�Path_�cF����`%PDriver�gF���ּ�/�PDriver_̉F���a�"perror�F���b��/,pform_X�F������/�pf_�F����?�$�pointer�F�����/pointer_4�F������/,pollword_X�F���la%fPopUp��F���/�popuptc_̭F���w��/$popup_��F����7�"�pow|�F���_„/,ppdir_��F���f��"pragma�F����„/Lpragma_��F���{�$sprintl�F����„/�printdriver_��F���8Ä/,printer_$�F���[��"1printfX�F���yÄ/Hprintfeat_��F���CĄ/�print_hF���OƄ/(ptrdiff_xF�����"�putc8F������"0putcharhF������"�putsDIR$���;F���,'#�dashed�<F����'#�endcap�=F����'#�joinx>F����'#�startcapl?F���'#�windruleDATA�packmask_dashed
This macro is defined in <drawftypes.h=>drawftypes>. It is a value which when logically ANDed with a path style desciption word will mask out all bits but those containing the dash pattern flag. It is defined as 0x80.DATA�packmask_endcap
This macro is defined in <drawftypes.h=>drawftypes>. It is a value which when logically ANDed with a path style desciption word will mask out all bits but those containing the end cap style. It is defined as 0x0C.DATA�packmask_join
This macro is defined in <drawftypes.h=>drawftypes>. It is a value which when logically ANDed with a path style desciption word will mask out all bits but those containing the join style. It is defined as 0x03.DATA�packmask_startcap
This macro is defined in <drawftypes.h=>drawftypes>. It is a value which when logically ANDed with a path style desciption word will mask out all bits but those containing the start cap style. It is defined as 0x30.DATA�packmask_windrule
This macro is defined in <drawftypes.h=>drawftypes>. It is a value which when logically ANDed with a path style desciption word will mask out all bits but those containing the winding rule. It is defined as 0x40.DIR$��AF����-'#�dashed�AF���$'#�endcap�BF���!'#�join�CF���o''#�startcapdDF����*'#�windruleDATA�packshft_dashed
This macro is defined in <drawftypes.h=>drawftypes>. It is a value which is the left shift required on a dash pattern flag to move it into the correct bit for the path style description word.DATA�packshft_endcap
This macro is defined in <drawftypes.h=>drawftypes>. It is a value which is the left shift required on a end cap style to move it into the correct bit for the path style description word.DATA�packshft_join
This macro is defined in <drawftypes.h=>drawftypes>. It is a value which is the left shift required on a join style to move it into the correct bit for the path style description word.DATA�packshft_startcap
This macro is defined in <drawftypes.h=>drawftypes>. It is a value which is the left shift required on a start cap style to move it into the correct bit for the path style description word.DATA�packshft_windrule
This macro is defined in <drawftypes.h=>drawftypes>. It is a value which is the left shift required on a winding rule to move it into the correct bit for the path style description word.DIR$LL�EF���Y�7&�block�FF����7&�entryDATA�palette_block
This is defined in <DeskLib:Wimp.h=>Wimp> as the following structure:

   \{
      <palette_entry> colour[16];
      palette_entry border;
      palette_entry mouse1;
      palette_entry mouse2;
      palette_entry mouse3;
   }DATA�palette_entry
This type is defined in <DeskLib:Wimp.h=>Wimp> as the following union:

   \{
      int value;
      struct
      \{
         char gcol;
         char red;
         char green;
         char blue;
      } data;
   }DATA�DeskLib:Pane.h
Version: 1.11 (30th March 1994)
#line
This header file provides facilities for using linked windows ie when you open one window another one opens as well eg the status bar on StrongED, the toolbox on Draw.

Functions:

#Indent 6
#Table 4 21
<Pane_CreateAndLink>
<Pane_Delete>
<Pane_GetSysHandle>
<Pane_Hide>
<Pane_Link>
<Pane_OpenEventHandler>
<Pane_SetFlags>
<Pane_Show>
#EndTable
#Indent 0

Macros:

#Indent 13
#Table 3 21
<pane_OPEN=>pane_flags_>
<pane_FIXED=>pane_flags_>
<pane_RESIZE=>pane_flags_>
<pane_HORIZ=>pane_flags_>
<pane_VERT=>pane_flags_>
#EndTable
#Indent 0

Types:

{align centre}<pane_data>{align}

To use windows with panes, first link two windows using <Pane_Link> or <Pane_CreateAndLink>. You can then open and close then using <Pane_Show> and <Pane_Hide> instead of <Window_Show> and <Window_Hide>. It is best to install <Pane_OpenEventHandler> using <Event_Claim> for easy window opening.DIR$ll�LF���&uD%5CreateAndLink�NF���xE%	data�QF���L{D%�Delete�RF���_�D%�flags_<UF���~�D%"GetSysHandle`VF���H�D%�HideWF����D%�Link�XF���H�D%yOpenEventHandler@ZF�����D%�SetFlags�[F���1�D%�ShowDATA5Pane_CreateAndLink
Syntax:	<window_handle> Pane_CreateAndLink (char *mastname, char *panename, int mastmaxsize, int panemaxsize, <wimp_point> *offset, wimp_point *size, int <flags=>pane_flags_>);
Header:	<DeskLib:Pane.h=>Pane>

Returns:	Window handle of master window.

This function creates and links the two windows given in /mastname/ and /panename/ with title sizes as for <Template_Clone>. /offset/ contains the offset from the master window to the pane window. If /offset/ or /size/ are <NULL> then the offset between the templates as defined is used.DATA	pane_data
This type is defined in <DeskLib:Pane.h=>Pane>. It contains details about a linked window pair in the following structure:

\{
 <window_handle>	master;
 <window_handle>	pane;
 <wimp_point>		offset;
 <wimp_point>		size;
 union
 \{
  int value;
  struct
  \{{tab}
   unsigned isopen	: 1;	/* Currently open */
   unsigned fixed	: 1;	/* Pane stays in place */
   unsigned resize	: 1;	/* Pane shrinks */
   unsigned horiz	: 1;	/* Horizontal pane */
   unsigned vert	: 1;	/* Vertical pane */
   unsigned dummy	: 27;
  } data;
 } flags;
}

/resize/ means that the pane is resized with the main window. Horizontal/Vertical defines the way the pane window shrinks (only if /resize/ set). /fixed/ means that the pane keeps the same relative position to the main window.DATA�Pane_Delete
Syntax:	void Pane_Delete (<window_handle> win);
Header:	<DeskLib:Pane.h=>Pane>

/win/ is the master window handle. This function unlinks it from its pane and calls <Window_Delete> for both windows.DATA�Pane flags
These determine the status of the master/pane window combination. The individual bits have the following meaning:

#tab ,align centre,align centre,align left
 	Bit	Value	Macro
 	0	1	pane_OPEN
 	1	2	pane_FIXED
 	2	4	pane_RESIZE
 	3	8	pane_HORIZ
 	4	16	pane_VERT

The macros are defined as the individual bit values. {*}pane_OPEN{*} indicates that the combination is currently open. {*}pane_FIXED{*} indicates that the pane stays in place relative to the top left of the main window. {*}pane_RESIZE{*} indicates that the pane is resized with the main window, and {*}pane_HORIZ{*} and {*}pane_VERT{*} indicate the direction in which these resize.DATA"Pane_GetSysHandle
Syntax:	<pane_data> *Pane_GetSysHandle (<window_handle> master);
Header:	<DeskLib:Pane.h=>Pane>

Returns:	Pointer to structure, or <NULL>.

This function gets a pointer to the data associated with the /master/ window. It returns <NULL> if the window is not linked.DATA�Pane_Hide
Syntax:	void Pane_Hide(<window_handle> window);
Header:	<DeskLib:Pane.h=>Pane>

This function calls <Window_Hide> both the given master window and its pane.DATA�Pane_Link
Syntax:	void Pane_Link (<window_handle> mast, window_handle pane, <wimp_point> *offset, wimp_point *size, int <flags=>pane_flags_>);
Header:	<DeskLib:Pane.h=>Pane>

This function links the master and pane windows whose window handles are given. /offset/ specifies the offset between the master and pane windows. If /offset/ or /size/ are <NULL> then this information is taken from the window definitions themselves.DATAyPane_OpenEventHandler
Header:	<DeskLib:Pane.h=>Pane>

This function calls <Wimp_OpenWindow> on both the window given and its associated pane window. Attach to the Open_Window_Request event for the master window using:

{fCode;align centre}<Event_Claim> (event_OPEN,[master],event_ANY, Pane_OpenEventHandler,<NULL>);{f;align}

where [master] is the master window handle.DATA�Pane_SetFlags
Syntax:	int Pane_SetFlags (<window_handle> win, int <flags=>pane_flags_>);
Header:	<DeskLib:Pane.h=>Pane>

Returns:	Current flags or <NULL> or undefined.

This function sets the flags of the linked windows. The master window handle is given in /win/ and the flags in /flags/. If {/}flags==-1{/} then the current flags are returned. If the master window is not linked then *NULL* is returned.DATA�Pane_Show
Syntax:	void Pane_Show (<window_handle> window, <window_openpos> openpos);
Header:	<DeskLib:Pane.h=>Pane>

This function calls <Window_Show> for both the given master window and its associated pane.DIR$���]F���4�(#�closestrx^F�����(#Icurvestr�_F���K�(#QeleptraF����l(#�linestrbF����X(#�movestrcF�����(#�termstrDATA�Path_closestr
This type is defined in <drawftypes.h=>drawftypes> as a type containing data for a close component of a path. It is defined as the following structure:
{wrap off}
 	\{
 	 	draw_path_tagtype tag;  /* tag == 5 */
 	}DATAIPath_curvestr
This type is defined in <drawftypes.h=>drawftypes> as a type containing data for a bezier curve component of a path. It is defined as the following structure:
{wrap off}
 	\{
 	 	<draw_path_tagtype>	tag;	/* tag == 6 */
 	 	int	x1,y1;	/* control point */
 	 	int	x2,y2;	/* control point */
 	 	int	x3,y3;
 	}DATAQPath_eleptr
This type is defined in <drawftypes.h=>drawftypes> as a type containing a pointer to a path component. It is defined as the following union:

 	\{
 	 	<Path_movestr>	*move;
 	 	<Path_linestr>	*line;
 	 	<Path_curvestr>	*curve;
 	 	<Path_closestr>	*close;
 	 	<Path_termstr>	*term;
 	 	char	*bytep;
 	 	int	*wordp;
 	}DATA�Path_linestr
This type is defined in <drawftypes.h=>drawftypes> as a type containing data for a line component of a path. It is defined as the following structure:
{wrap off}
 	\{
 	 	<draw_path_tagtype>	tag;	/* tag == 8 */
 	 	int	x,y;
 	}DATA�Path_movestr
This type is defined in <drawftypes.h=>drawftypes> as a type containing data for a move component of a path. It is defined as the following structure:

 	\{
 	 	<draw_path_tagtype>	tag;	/* tag == 2 */
 	 	int	x,y;
 	}DATA�Path_termstr
This type is defined in <drawftypes.h=>drawftypes> as a type containing data for an end-of-path component of a path. It is defined as the following structure:
{wrap off}
  \{
    draw_path_tagtype tag;  /* tag == 0 */
  }DATADeskLib:PDriver.h
Version: 1.11 (26 Oct 1993)
#line
This header provides functions and types for accessing RISC OS printer driver SWIs from C.

Functions:

#indent 2
#Table 9 23
<PDriver_Info>
<PDriver_PrinterName>
<PDriver_CheckFeatures>
<PDriver_PageSize>
<PDriver_SelectJob>
<PDriver_CurrentJob>
<PDriver_EndJob>
<PDriver_AbortJob>
<PDriver_GiveRectangle>
<PDriver_DrawPage>
<PDriver_GetRectangle>
<PDriver_CancelJob>
<PDriver_ScreenDump>
<PDriver_EnumerateJobs>
<PDriver_CancelJobWithError>
<PDriver_SelectIllustration>
<PDriver_InsertIllustration>
#EndTable
#indent

Macros:

#indent 1
#Table 7 23
<printdriver_POSTSCRIPT>
<printdriver_FX80>
<printdriver_LASERJET>
<printdriver_INTEGREX>
<printfeat_COLOUR>
<printfeat_LIMITED>
<printfeat_DISCRETE>
<printfeat_NOFILL>
<printfeat_NOTHICKNESS>
<printfeat_NOOVERWRITE>
<printfeat_SCREENDUMP>
<printfeat_TRANSFORMS>
<printfeat_ILLUSTRATIONS>
#EndTable
#indent

Types:

#indent 8
#Table 2 23
<print_job>
<print_transformation>
<print_features>
<printer_info>
#EndTableDIR$���jF���ť_%dAbortJob�kF����_%yCancelJobhmF����
`%yCancelJobWithError�nF����X_%CheckFeatures�pF�����_%DCurrentJob,rF�����_%`DrawPage�uF����_%%EndJob�vF����`%�EnumerateJobsXxF�����_%%GetRectangle�zF����_%�GiveRectanglep}F���\�^%rInfo�~F����5`%TInsertIllustration8�F���0k_%�PageSizêF����G_%oPrinterName<�F����_%�ScreenDump��F���0`%�SelectIllustration`�F���b}_%lSelectJobDATAdPDriver_AbortJob
Syntax:	<os_error> *PDriver_AbortJob (<print_job> job);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function ends a print job abnormally. It should be called immediately you get an error while printing (even before showing an error message). No further printer output will be produced.DATAyPDriver_CancelJob
Syntax:	<os_error> *PDriver_CancelJob (<print_job> job);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function causes subsequent attempts to output to the print job given to do nothing other than generate the error 'Print cancelled'. An application is expected to respond to this by aborting the print job.DATAyPDriver_CancelJobWithError
Syntax:	<os_error> *PDriver_CancelJobWithError (<print_job> job, os_error *error);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function cancels a print job so that any attempt to output to it will do nothing other than generate the error given in /error/.

This function is RISC OS 3 only, folks!DATAPDriver_CheckFeatures
Syntax:	<os_error> *PDriver_CheckFeatures (<print_features> m, print_features val);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function checks the features of a printer. If those bits which are set in /m/ have the same values in both the current printer's features and in /val/ then no error is generated. ie if the current printer driver's features are called /feat/, this function checks that:

{fCode;align centre}feat & m == val & mDATADPDriver_CurrentJob
Syntax:	<os_error> *PDriver_CurrentJob <print_job> *current);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function gets the file handle of the current job and stores it in the variable pointed to by /current/. Zero is stored if no print job is active.DATA`PDriver_DrawPage
Syntax:	<os_error> *PDriver_DrawPage (int copies, <wimp_rect> *rect, int seq, char *page, int *finish, int *rect_id);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function should be called after all rectangles have been specified using <PDriver_GiveRectangle>. /copies/ contains the number of copies to print, /seq/ should be zero, or contain the page number, /page/ should be <NULL> or give the page number in text form.

On return, /rect/ contains the rectangle to be printed (in OS units) _within_ the rectangle whose id is returned in {/}rect_id{/}. /finish/ contains the number of copies still to be printed hence it is zero when the job is finished.

After plotting the page using normal plotting routines (which the printer driver will intercept), you should call <PDriver_GetRectangle>.DATA%PDriver_EndJob
Syntax:	<os_error> *PDriver_EndJob (<print_job> job);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function ends a print job normally. This may result in further printer output (a PostScript printer driver outputs a trailer).DATA�PDriver_EnumerateJobs
Syntax:	<os_error> *PDriver_EnumerateJobs (<print_job> *job);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function enumerates all the existing print jobs. You get the complete list you should call the function with {/}*job{/}=0, {/}*job{/} will be updated to contain the next handle, you should then call the function again with that handle.DATA%PDriver_GetRectangle
Syntax:	<os_error> *PDriver_GetRectangle (<wimp_rect> *rect, int *finish, int *rect_id);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function should be called after <PDriver_DrawPage>, and then called repeatedly until /finish/ returns zero.

On return, /rect/ contains the rectangle to be printed (in OS units) _within_ the rectangle whose id is returned in {/}rect_id{/}. /finish/ contains the number of copies still to be printed hence it is zero when the job is finished.DATA�PDriver_GiveRectangle
Syntax:	<os_error> *PDriver_GiveRectangle (int rect_id, <wimp_rect> *rect, <print_transformation> *matrix, <wimp_point> *pos, int backcol);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function allows an application to tell the printer driver what it wants to print.

{/}rect_id{/}	is a user-defined value to identify each rectangle you send.
/rect/		defines the rectangle to be printed in OS units.
/matrix/	is the transformation matrix.
/pos/		is the position on the page in millipoints (of the bottom left).
/backcol/	specifies the background colour, in the form 0xBBGGRR00.

An application should make one or more calls to this function, before calling <PDriver_DrawPage>.DATArPDriver_Info
Syntax:	<os_error> *PDriver_Info (<printer_info> *block);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function gets information on the printer driver. It allows the application to change the way it outputs its data to suit the printer. The information is returned in the structure pointed to by /block/.DATATPDriver_InsertIllustration
Syntax:	<os_error> *PDriver_InsertIllustration (int handle, void *drawpath, <wimp_point> *bot_left, wimp_point *bot_right, wimp_point *top_left);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

If the function is supported (check the <PDriver_Info>), it inserts an external file into the current job's output.

/handle/	is the file handle of the illustration.
/drawpath/	is a pointer to a clipping path, or 0.
{/}bot_left{/},
{/}bot_right{/},
{/}top_left{/}	define the position of the illustration in 1/256ths of an OS unit.DATA�PDriver_PageSize
Syntax:	<os_error> *PDriver_PageSize (<wimp_point> *size, <wimp_rect> *print);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function finds how large the paper and print area is. On exit, /size/ contains the paper size in millipoints, and /print/ contains the printable rectangle (origin at bottom left, coordinates in millipoints).DATAoPDriver_PrinterName
Syntax:	char *PDriver_PrinterName (void);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to name.

This function returns the name of the current printer. If it is to be used, a copy of it should be taken since it can change in a multiple printer driver system ({*}!Printers{*}). _It must not under any circumstances be written to_.DATA�PDriver_ScreenDump
Syntax:	<os_error> *PDriver_ScreenDump (<print_job> job);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function makes the printer driver output a screen dump to the job given. Note that none of the standard Acorn driver support this feature (check the features first using <PDriver_CheckFeatures> or <PDriver_Info>).DATA�PDriver_SelectIllustration
Syntax:	<os_error> *PDriver_SelectIllustration (<print_job> new, char *title, print_job *old);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function does the same as <PDriver_SelectJob>, except that if a new print job is started:
{tab}
�	It must be only one page long.
�	Output may differ eg EPS instead of PostScript.

RISC OS 3 only.DATAlPDriver_SelectJob
Syntax:	<os_error> *PDriver_SelectJob (<print_job> new, char *title, print_job *old);
Header:	<DeskLib:PDriver.h=>PDriver>

Returns:	Pointer to error, or <NULL> if none.

This function makes a given print job the current one. The job is identified by /new/ which must be a file (eg {/}printer:{/}) previously opened for output (eg by <File_Open>). /title/ gives a human-readable name for the job.

The current print job is suspended and the new job (re)started. The old job handle (if any) is returned in the variable pointed to by /old/.

NB If /new/ is zero then the current job is suspended.DATAperror
Syntax:	void perror (char *str);
Header:	<stdio.h=>stdio>

This function writes a description of the error in <errno> to the stream <stderr>. If /str/ is not a null pointer then it prefixes the error description with the string pointed to by /str/ and a colon (':').DIR$,,�F���+�"C!RootDATACprintf() Format String
The format string is composed of a sequence of characters. All characters except '%' are copied directly to the output. '%' marks the beginning of a conversion specification. If a literal percent is required, then "%%" should be used.

A conversion specification results in one argument from the argument list being printed according to the specification. The structure of a conversion specification is shown below:

#wrap off
%[<flags=>pf_flags_>][<field width=>pf_fw_>][<.precision=>pf_prec_>][<modifier=>pf_mod_>]\<<conversion char=>pf_conv_>\> DIR$���F���Na�"�conv_��F���)�"�flags_��F���O'�"�fw_p�F����:�"�mod_�F���n+�"�prec_DATA�Format String Conversion Character
One of the following:

d,i	The int argument is output as a signed decimal.

o,u,x,X	The unsigned int argument is output as octal (o), unsigned decimal (u), or unsigned hexadecimal (x or X). x causes hexadecimal to be output in lower case, and X in upper case.

f	The double argument is output as a signed decimal. If no <precision=>pf_prec_> is specified it defaults to 6.

e,E	The double argument is output in standard form notation (scientific). If no precision is specified it defaults to 6.

g,G	The double argument is output in style f or e/E. The style used is the one which produces the neatest output.

c	The int argument is converted to an unsigned char and output.

s	The char* argument is output as a string.

p	The argument is a void* pointer, the value of which (not the value it points to) is printed.

n	The number of characters written so far is written into the int pointed to by the argument.DATA�Format String Flags
The following flags may be used:

-	Left-justify the result.
+	Begin signed results with either + or -.
(space)	If no sign is used, use a space instead.
#	Alters the output depending on the <conversion character=>pf_conv_>. For o conversion it adds a leading 0. For x conversion it adds a leading '0x'. For e, E, f, g, and G conversion the result will always contain a decimal point. For G and g, trailing zeros will not be removed.
0	For d, i, o, u, x, X, e, E, f, g, and G conversions, leading zeros will be used as padding instead of spaces. This will have no effect if the '-' flag is used, neither will it have any effect if a precision is specified for d, i, o, u, x, and X conversions..DATA�Format String Field Width
This is an unsigned integer value. If the converted value has fewer characters than the field width, it will be padded by spaces (on the left unless the <'-' flag=>pf_flags_> is present).DATA�Format String Length Modifier
One of the following:

h	For d, i, o, u, x or X conversion specifies that the argument is a short int. For n conversion specifies that the pointer is to a short int.

l	For d, i, o, u, x, or X conversion specifies that the argument is a long int. For n conversion specifies that the pointer is to a long int.

L	For e, E, f, g or G conversion specifies that the argument is a long double.DATA�Format String Precision
This is a period ('.') followed by an integer. The value has an effect depending on the <conversion character=>pf_conv_> as follows:

e, E, f:
   The precision is the number of digits to
   appear after the decimal point.

g, G:
   The precision is the number of significant
   digits to be output.

s:
   The precision is the maximum number of
   characters to be output from the string.

d, i, o, u, x, and X:
   The precision is the minimum number of
   digits to appear.DATA�pointer.h
This header declares functions for setting the pointer shape.

Functions:

#indent 1
#table lines 1
<pointer_set_shape>
<pointer_reset_shape>
#endtable

Macro:
{align centre}
<wimp_spritearea>DIR$�F���!K�$�reset_shape��F���TF�$Pset_shape��F���nB&shapeblock��F�����R&RestrictToWindow�F���ܾR&?RestrictToIconX�F�����R&RestrictToRect\�F�����R&�UnrestrictDATA�pointer_reset_shape
Syntax:	void pointer_reset_shape (void);
Header:	<pointer.h=>pointer>

This function resets the pointer to be shape 1 (the default pointer).DATAPpointer_set_shape
Syntax:	<os_error> *pointer_set_shape (<sprite_area> *area, <sprite_id> *spr, int active_x, int active_y);
Header:	<pointer.h=>pointer>

Returns:	Pointer to error, or <NULL> if none.

This function sets the pointer (using pointer 2) to be the sprite specified. The active point is given in (active_x,active_y).DATApointer_shapeblock
This is defined in <DeskLib:Wimp.h=>Wimp>. It is a structure used by <Wimp_SetPointerShape> which defines the shape and size of the pointer.

    \{
      int		shapenumber;
      char		*shapedata;
      unsigned int	width;
      unsigned int	height;
      <wimp_point>	active;
    }

/shapenumber/ should be 0 to switch the pointer off, or 2 to define your own pointer. /active/ defines the offset (in pixels from the top-left) of the active point. /shapedata/ can be -1 for no change.DATAPointer_RestrictToWindow
Syntax:	<os_error> *Pointer_RestrictToWindow (<window_handle> win);
Header:	<DeskLib:Pointer.h=>DL_Pointer>

Returns:	Pointer to error, or <NULL> if none.

This function restricts the pointer to the rectangle which is the window specified in /win/.DATA?Pointer_RestrictToIcon
Syntax:	<os_error> *Pointer_RestrictToIcon (<window_handle> win, <icon_handle> icon);
Header:	<DeskLib:Pointer.h=>DL_Pointer>

Returns:	Pointer to error, or <NULL> if none.

This function restricts the pointer to the rectangle which is the bounding box of the icon /icon/ in window /win/.DATAPointer_RestrictToRect
Syntax:	<os_error> *Pointer_RestrictToRect (<wimp_rect> rect);
Header:	<DeskLib:Pointer.h=>DL_Pointer>

Returns:	Pointer to error, or <NULL> if none.

This function restricts the pointer to the rectangle which is given in /rect/.DATA�Pointer_Unrestrict
Syntax:	<os_error> *Pointer_Unrestrict (void);
Header:	<DeskLib:Pointer.h=>DL_Pointer>

Returns:	Pointer to error, or <NULL> if none.

This function removes any restriction on the pointer.DIR$,,`�F����YF&�blockDATA�pollword_block
This is a type defined by <DeskLib:Wimp.h=>Wimp> which contains the data returned by a PollWord_NonZero event.
{wrap off}
   \{
     int address;	/* Address of poll word  */
     int contents;	/* Contents of poll word */
   }DATAfDeskLib:PopUp.h
Version: 1.00 (20 May 1993)
#line
This header provides functions and types relating to Jason Williams' PopUp system.

Functions:

#indent 5
#Table 3 21
<PopUp_Open>
<PopUp_Close>
<PopUp_ShowMenuLeaf>
<PopUp_ShowPtr>
<PopUp_ShowStandalone>
<PopUp_ShowStatic>
#EndTable
#indent

Macros:

#indent 3
#Table 6 21
<popup_ISLEAF>
<popup_ISSTATIC>
<popup_STANDALONE>
<popup_MENULEAF>
<popup_STATIC>
<popuptc_RGB>
<popuptc_HSV>
<popuptc_CMYK>
<popuptc_TRANSPARENT0>
<popuptc_TRANSPARENT1>
<popuptc_TRANSPARENT256>
#EndTable
#indent

Types:

#indent 7
#Table 9 21
<popup_handle>
<popup_magnify>
<popup_proginfo>
<popup_report>
<popup_saveas>
<popup_saveasreturn>
<popup_wimpcolour>
<colour_rgb>
<colour_hsv>
<colour_cmyk >
<popup_truecolour>
<popup_header>
<popup_data>
<popup_returndata>
<message_popuprequest>
<message_popupstate>
<popup_block>
#EndTableDIR$����F����^a%�CMYK@�F���n[a%�HSV�F���Xa%�RGB��F����aa%�TRANSPARENT0H�F���0ka%;TRANSPARENT1��F���2sa%HTRANSPARENT256DATA�popuptc_CMYK
This macro is defined in <DeskLib:PopUp.h=>PopUp>. It is the value of the colour model number representing the CMYK model. It is defined as 2.DATA�popuptc_HSV
This macro is defined in <DeskLib:PopUp.h=>PopUp>. It is the value of the colour model number representing the HSV model. It is defined as 1.DATA�popuptc_RGB
This macro is defined in <DeskLib:PopUp.h=>PopUp>. It is the value of the colour model number representing the RGB model. It is defined as 0.DATA�popuptc_TRANSPARENT0
This macro is defined in <DeskLib:PopUp.h=>PopUp>. It is the value to OR into the colour model number which represents no transparency. It is defined as 0x00000.DATA;popuptc_TRANSPARENT1
This macro is defined in <DeskLib:PopUp.h=>PopUp>. It is the value to OR into the colour model number which represents one transparency. It is defined as 0x10000.

For example, a '!Draw' style colour would be given by:
{wrap off}
{fCode;align centre}<popuptc_RGB> | popuptc_TRANSPARENT1DATAHpopuptc_TRANSPARENT256
This macro is defined in <DeskLib:PopUp.h=>PopUp>. It is the value to OR into the colour model number which represents full transparency. It is defined as 0x20000.

For example, a full transparency HSV colour would be given by:
{wrap off}
{fCode;align centre}<popuptc_HSV> | popuptc_TRANSPARENT256DIR$$$�F���}�a%block�F���� a%�Close�F�����a%kdatal�F����xa%�handle�F�����a%:headerT�F����Ea%�ISLEAF8�F���fJa%�ISSTATIC�F���	|a%magnify(�F���Ra%�MENULEAFйF���a%GOpen�F����a%)proginfoD�F����a%�report�F�����a%�returndata��F���:�a%+saveas(�F�����a%�saveasreturn��F���.a%mShowMenuLeaf$�F���I8a%�ShowPtr��F���	>a%ShowStandalone��F����Ba%�ShowStatic��F����Na%�STANDALONE��F��� Ua%�STATIC8�F�����a%jtruecolour��F���"�a%�wimpcolourDATApopup_block
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to contain complete information about a PopUp request as sent to <PopUp_Open>.

  \{
    <popup_header>	header;
    <popup_data>	data;
  }

See the PopUp documentation for more details.DATA�PopUp_Close
Syntax:	void PopUp_Close (<popup_handle> handle);
Header:	<DeskLib:PopUp.h=>PopUp>

This simply calls the SWI PopUp_Close. It closes any PopUp given that PopUp's handle. This functions should only be necessary for STATIC PopUps.DATAkpopup_data
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a union used to send data to the PopUp manager.

  \{
    <popup_magnify>	magnify;
    <popup_proginfo>	proginfo;
    <popup_report>	report;
    <popup_saveas>	saveas;
    <popup_wimpcolour>	wimpcolour;
    <popup_truecolour>	truecolour;
  }

See the PopUp documentation for more details.DATA�popup_handle
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a type capable of holding a unique identifier for each PopUp opened. It is defined as an /int/.DATA:popup_header
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to pass standard vital information to PopUp.

  \{
    char name[12];  /* PopUp name */
    <wimp_point> openpos;
    char flags;
    char reserved1,reserved2,reserved3;
  }

See the PopUp documentation for more details.DATA�popup_ISLEAF
This macro is defined in <DeskLib:PopUp.h=>PopUp>. It is the value of the flag bit indicating that a PopUp should be opened as a menu leaf dialogue box. It is preferable to use the macro <popup_MENULEAF>.DATA�popup_ISSTATIC
This macro is defined in <DeskLib:PopUp.h=>PopUp>. It is the value of the flag bit indicating that a PopUp should be opened as a static dialogue box. It is preferable to use the macro <popup_STATIC>.DATApopup_magnify
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to hold information for the "Magnify" popup, as follows:

  \{
    int mul,div;
    int minmul,maxmul;
    int mindiv,maxdiv;
  }

See the PopUp documentation for more details.DATA�popup_MENULEAF
This macro is defined in <DeskLib:PopUp.h=>PopUp>. It is the value of the flag byte needed to open a PopUp as a menu leaf. It is defined as 0x01.DATAGPopUp_Open
Syntax:	<popup_handle> PopUp_Open (<popup_block> *blk);
Header:	<DeskLib:PopUp.h=>PopUp>

Returns:	Handle of created PopUp.

This simply calls the SWI PopUp_Open. You shoud use one of the PopUpShow functions instead.

See <PopUp_ShowMenuLeaf>, <PopUp_ShowPtr>, <PopUp_ShowStandalone>, and <PopUp_ShowStatic>.DATA)popup_proginfo
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to hold information for the "ProgInfo" popup, as follows:

  \{
    char appname[32];
    char purpose[32];
    char author[32];
    char version[32];
  }

See the PopUp documentation for more details.DATA�popup_report
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to hold information for the "Report" popup, as follows:

  \{
    struct
    \{
      unsigned int cancel	: 1;
      unsigned int ok		: 1;
      unsigned int reserved	: 6;
      unsigned int userhandle	: 24;
    } flags;
    char oktext[12];
    char canceltext[12];
    char appname[12];
    char message[188];
  }

See the PopUp documentation for more details.DATA�popup_returndata
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used when receiving data from the PopUp manager.

  \{
    <popup_magnify>	magnify;
    <popup_report>	report;
    <popup_saveas>	saveasreturn;
    <popup_wimpcolour>	wimpcolour;
    <popup_truecolour>	truecolour;
  }

Note that this structure is actually wrong. The third line should be a <popup_saveasreturn>. And it should be a union not a structure.

See the PopUp documentation for more details.DATA+popup_saveas
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to hold information for the "SaveAs" popup, as follows:

  \{
    char iconsprite[12];
    char filename[212];
  }

This PopUp returns a <popup_saveasreturn>.

See the PopUp documentation for more details.DATA�popup_saveasreturn
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to hold information returned by the "SaveAs" popup, as follows:

  \{
    struct
    \{
      unsigned int wasdragged	: 1;
      unsigned int shiftdown	: 1;
      unsigned int reserved	: 30;
    } flags;
    int reserved;
    char filename[212];
  }

See the PopUp documentation for more details.DATAmPopUp_ShowMenuLeaf
Syntax:	<popup_handle> PopUp_ShowMenuLeaf (char *name, <popup_data> *def, <message_menuwarn> *msg);
Header:	<DeskLib:PopUp.h=>PopUp>

Returns:	Handle of PopUp.

This functions shows a MENU-LEAF PopUp. /name/ is the PopUp name, /def/ is the data for the PopUp and /msg/ contains the message_MENUWARN which caused you to call this function.DATA�PopUp_ShowPtr
Syntax:	<popup_handle> PopUp_ShowPtr (char *name, <BOOL> static, <popup_data> *def);
Header:	<DeskLib:PopUp.h=>PopUp>

Returns:	Handle of PopUp.

This functions shows either a standalone transient (Menu) PopUp or a static PopUp. /name/ is the PopUp name, /def/ is the data for the PopUp and /static/ contains <TRUE> if the PopUp should be static.

You should use <PopUp_Showstandalone> or <PopUp_ShowStatic> instead.DATAPopUp_ShowStandalone
Syntax:	<popup_handle> PopUp_ShowStandalone (char *name, <popup_data> *def);
Header:	<DeskLib:PopUp.h=>PopUp>

Returns:	Handle of PopUp.

This is a function-like macro which simply calls <PopUp_ShowPtr> with /static/ set to <FALSE>.DATA�PopUp_ShowStatic
Syntax:	<popup_handle> PopUp_ShowStatic (char *name, <popup_data> *def);
Header:	<DeskLib:PopUp.h=>PopUp>

Returns:	Handle of PopUp.

This is a function-like macro which simply calls <PopUp_ShowPtr> with /static/ set to <TRUE>.DATA�popup_STANDALONE
This macro is defined in <DeskLib:PopUp.h=>PopUp>. It is the value of the flag byte needed to open a stand-alone PopUp. It is defined as 0x00.DATA�popup_STATIC
This macro is defined in <DeskLib:PopUp.h=>PopUp>. It is the value of the flag byte needed to open a PopUp as a static dialogue box. It is defined as 0x02.DATAjpopup_truecolour
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to hold information for the "TrueColour" popup, as follows:

  \{
    int colourmodel;
    union
    \{
      <colour_rgb>	rgb;
      <colour_hsv>	hsv;
      <colour_cmyk>	cmyk;
    } colour;
    int transparency;
  }

See the PopUp documentation for more details.DATA�popup_wimpcolour
This type is defined in <DeskLib:PopUp.h=>PopUp>. It is a structure used to hold information for "WimpColour" popup, as follows:

  \{
    char colour;   /* Wimp colour 0-15 */
  }

See the PopUp documentation for more details.DATA�pow
Syntax:	double pow (double x, double y);
Header:	<math.h=>math>

Returns:	The value of x raised to the power y.

This function calculates x to the power of y. If x is negative, then y must be an integer.  DIR$,,��F���Q�"L!RootDATALPreprocessor Directives
These directives are within the source code
itself, they are all start with "#". The
directives are:

#Indent 10
#Table 5 15
<#define=>define>
<#include=>include>
<#if=>if_>
<#ifdef=>ifdef>
<#ifndef=>ifndef>
<#else=>else_>
<#elseif=>elseif>
<#endif=>endif>
<#undef=>undef>
<#pragma=>pragma>
#EndTableDATA#pragma
This is an addition to the orignal C standard.
It does different things in different
compilers. The general form is:

{fCode;align centre}#pragma \<command>{f;align}

The commands in Easy C are:

#align centre
<#pragma asm=>pragma_asm_>
<#pragma endasm=>pragma_endasm_>DIR$LL`�F�����"Iasm_��F������"Lendasm_DATAI#pragma asm
Unlike Desktop C, Easy C contains an integrated ARM assembler. {fCode}#pragma asm{f} marks the start of a section of assembly language. It may be placed at any position where a function definition may be placed. Registers can take normal names ({/}R0-R15{/}) or the APCS standard names ({/}a1{/} etc, {/}f1{/} etc, {/}sp{/}, {/}lk{/} and {/}pc{/}).

Expressions are in the normal C format and all pre-processing applies to the assembly language section as well.

Labels are prefixed by a full stop and they may be referred to outside of the Assembly language section as a function, unless they finish in a '$' character. To make them available externally, use <EXPORT> \<labelname>.

SWIs can be called by name or number, without using quotes eg {fCode}SWI <OS_WriteS=>SWI:OS_WriteS>{f}, {fCode}SWI 0x12344{f}.

Note that to store data, variables must be used - the assembled code is read-only. This is not really a problem...

The following pseudo-instructions are available:

#indent 10
#Table 2 9
<IMPORT>
<EXPORT>
<ALIGN>
<DCB>
<DCD>
<ADR>
<LDR>
<STR>
<LDF>
<STF>
#EndTableDATAL#pragma endasm
This marks the end of a section of assembly language.DATAsprint.h
This header file declares function and types for accessing RISC OS printer drivers from C.

Functions:

#indent 8
#Table columns 2
<print_info>
<print_setinfo>
<print_checkfeatures>
<print_pagesize>
<print_setpagesize>
<print_selectjob>
<print_currentjob>
<print_endjob>
<print_abortjob>
<print_canceljob>
<print_reset>
<print_selectillustration>
<print_giverectangle>
<print_drawpage>
<print_getrectangle>
<print_screendump>
#EndTable
#indent

Types:

#indent 5
#Table columns 3
<print_identity>
<print_features>
<print_infostr>
<print_box>
<print_pagesizestr>
<print_transmatstr>
<print_positionstr>
#EndTableDIR$���F����E`%�FX80��F����S`%�INTEGREXh�F����M`%�LASERJET �F����@`%�POSTSCRIPTDATA�printdriver_FX80
The macro {*}printdriver_FX80{*} is defined by <DeskLib:PDriver.h=>PDriver>. It is the drivertype of <printer_info> representing an Epson printer.DATA�printdriver_INTEGREX
The macro {*}printdriver_INTEGREX{*} is defined by <DeskLib:PDriver.h=>PDriver>. It is the drivertype of <printer_info> representing a ColourJet printer.DATA�printdriver_LASERJET
The macro {*}printdriver_LASERJET{*} is defined by <DeskLib:PDriver.h=>PDriver>. It is the drivertype of <printer_info> representing a LaserJet printer.DATA�printdriver_POSTSCRIPT
The macro {*}printdriver_POSTSCRIPT{*} is defined by <DeskLib:PDriver.h=>PDriver>. It is the drivertype of <printer_info> representing a PostScript printer.DIR$,,�F���ԏ`%infoDATAprinter_info
This structure is defined by <DeskLib:PDriver.h=>PDriver> as a structure containing the information returned by <PDriver_Info>.

    \{
        unsigned int version : 16;
        int drivertype : 16;
        <wimp_point> resolution;
        <print_features> features;
        char *description;
        wimp_point halftone_res;
        int id_number;
    }

/version/ is the version number * 100.
/resolution/ gives x and y res in dpi.
{/}halftone_res{/} in repeats per inch.
{/}id_number{/} is for internal use only.DATA1printf
Syntax:	int printf (char *format, ...);
Header:	<stdio.h=>stdio>

Returns:	The number of characters written, or a negative value if there was an error.

This function writes output to <stdout> under control of the <format string=>pform_>.

It is identical to <fprintf>(stdout, format, ...);DIR$HH��F����W`%�COLOURd�F���-]`%�DISCRETE@�F���es`%�ILLUSTRATIONS �F���tZ`%�LIMITED��F���.``%�NOFILL��F���Zf`%�NOOVERWRITE��F���|c`%�NOTHICKNESS��F���(j`%�SCREENDUMP|�F����n`%"TRANSFORMSDATA�printfeat_COLOUR
This macro is defined by <DeskLib:PDriver.h=>PDriver> as a value representing a bit in the features word. If set, it indicates that the printer driver can print in colour.DATA�printfeat_DISCRETE
This macro is defined by <DeskLib:PDriver.h=>PDriver> as a value representing a bit in the features word. If set, it indicates that the printer driver can only print a discrete set of colours.DATA�printfeat_ILLUSTRATIONS
This macro is defined by <DeskLib:PDriver.h=>PDriver> as a value representing a bit in the features word. If set, it indicates that the printer driver supports <PDriver_InsertIllustration>.DATA�printfeat_LIMITED
This macro is defined by <DeskLib:PDriver.h=>PDriver> as a value representing a bit in the features word. If set, it indicates that the printer driver can only print a limited set of colours.DATA�printfeat_NOFILL
This macro is defined by <DeskLib:PDriver.h=>PDriver> as a value representing a bit in the features word. If set, it indicates that the printer driver can't handle filled shapes properly.DATA�printfeat_NOOVERWRITE
This macro is defined by <DeskLib:PDriver.h=>PDriver> as a value representing a bit in the features word. If set, it indicates that the printer driver can't handle overwriting of one colour by another properly.DATA�printfeat_NOTHICKNESS
This macro is defined by <DeskLib:PDriver.h=>PDriver> as a value representing a bit in the features word. If set, it indicates that the printer driver can't handle thick lines properly.DATA�printfeat_SCREENDUMP
This macro is defined by <DeskLib:PDriver.h=>PDriver> as a value representing a bit in the features word. If set, it indicates that the printer driver supports screen dumps with <PDriver_ScreenDump>.DATA"printfeat_TRANSFORMS
This macro is defined by <DeskLib:PDriver.h=>PDriver> as a value representing a bit in the features word. If clear, it indicates that the printer driver does not support any transformations except scalings, translations and rotations by multiples of 90 degrees.DIR$��H�F���T�$Labortjob��F���#��$�box(�F�����$acanceljob��F������$�checkfeaturest�F���)ܴ$-currentjob��F����-�$Ldrawpage��F�����$
endjob�F����e�$@features@�F����w�$features_`�F���#F�$getrectanglet�F���`�$�giverectangleT�F����T�$�identity<�F������$cinfo�F���₵$�infostr�F���my`%�job8F���P��$cpagesize�F���a��$	pagesizestr�F������$�positionstr<F�����$�reset�F����N�$iscreendumpTF������$selectillustration�	F���=ϴ$:selectjobF���;��$Rsetinfod
F������$_setpagesize�F�����`%KtransformationF������$XtransmatstrDATALprint_abortjob
Syntax:	<os_error> *print_abortjob (int job);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function ends a print job abnormally. It should be called immediately you get an error while printing (even before showing an error message). No further printer output will be produced.DATA�print_box
This type is defined in <print.h=>print>. It is a structure containing an abitrary rectangle.

  \{
    int x0, y0, x1, y1;
  }DATAaprint_canceljob
Syntax:	<os_error> *print_canceljob (int job);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function causes subsequent attempts to output to the print job given to do nothing other than generate the error 'Print cancelled'. An application is expected to respond to this by aborting the print job.DATA�print_checkfeatures
Syntax:	<os_error> *print_checkfeatures (int mask, int value);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function checks the features of a printer. If those bits which are set in /mask/ have the same values in both the current printer's features and in /value/ then no error is generated. ie if the current printer driver's features are called /feat/, this function checks that:

{align centre}feat & mask == value & maskDATA-print_currentjob
Syntax:	<os_error> *print_currentjob (int *current);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function gets the file handle of the current job and stores it in the variable pointed to by /current/. Zero is stored if no print job is active.DATALprint_drawpage
Syntax:	<os_error> *print_drawpage (int copies, int seq, char *page, <print_box> *rect, int *finish, int *rect_id);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function should be called after all rectangles have been specified using <print_giverectangle>. /copies/ contains the number of copies to print, /seq/ should be zero, or contain the page number, /page/ should be <NULL> or give the page number in text form.

On return, /rect/ contains the rectangle to be printed (in OS units) _within_ the rectangle whose id is returned in {/}rect_id{/}. /finish/ contains the number of copies still to be printed hence it is zero when the job is finished.

After plotting the page using normal plotting routines (which the printer driver will intercept), you should call <print_getrectangle>.DATA
print_endjob
Syntax:	<os_error> *print_endjob (int job);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function ends a print job normally. This may result in further printer output (a PostScript printer driver outputs a trailer).DATA@print_features
This is a union defined by <DeskLib:PDriver.h=>PDriver> to contain printer driver features, both as a value and as individual bits. It is also an <enumerated type=>print_features_> defined by <print.h=>print> (Desktop C).

    \{
        int value;
        struct
        \{
            unsigned int colour	: 1;
            unsigned int limited	: 1;
            unsigned int discrete	: 1;
            unsigned int filler1	: 5;
            unsigned int nofill	: 1;
            unsigned int nothickness	: 1;
            unsigned int nooverwrite	: 1;
            unsigned int filler2	: 5;
            unsigned int filler3	: 8;
            unsigned int screendump	: 1;
            unsigned int transforms	: 1;
            unsigned int illustrations	: 1;
            unsigned int filler4	: 5;
        } data;
    }DATAprint_features
\{
    print_colour	= 0x0000001,
    print_limited	= 0x0000002,
    print_discrete	= 0x0000004,
    print_NOFILL	= 0x0000100,
    print_NOTHICKNESS	= 0x0000200,
    print_NOOVERWRITE	= 0x0000400,
    print_SCREENDUMP	= 0x1000000,
    print_TRANSFORM	= 0x2000000
}DATAprint_getrectangle
Syntax:	<os_error> *print_getrectangle (<print_box> *rect, int *finish, int *rect_id);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function should be called after <print_drawpage>, and then called repeatedly until /finish/ returns zero.

On return, /rect/ contains the rectangle to be printed (in OS units) _within_ the rectangle whose id is returned in {/}rect_id{/}. /finish/ contains the number of copies still to be printed hence it is zero when the job is finished.DATA�print_giverectangle
Syntax:	<os_error> *print_giverectangle (int rect_id, <print_box> *rect, <print_transmatstr> *matrix, <print_positionstr> *pos, int backcol);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function allows an application to tell the printer driver what it wants to print.

{/}rect_id{/}	is a user-defined value to identify each rectangle you send.
/rect/	defines the rectangle to be printed in OS units.
/matrix/	is the transformation matrix.
/pos/	is the position on the page in millipoints (of the bottom left).
/backcol/	specifies the background colour, in the form 0xBBGGRR00.

An application should make one or more calls to this function, before calling <print_drawpage>.DATA�print_identity
This type is defined in <print.h=>print>. It is an enumerated type listing the different printer types available. It is defined as follows:

   \{
     print_PostScript	= 0,
     print_FX80compatible	= 1
   }DATAcprint_info
Syntax:	<os_error> *print_info (<print_infostr> *block);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function gets information on the printer driver. It allows the application to change the way it outputs its data to suit the printer. The information is returned in the structure pointed to by /block/.DATA�print_infostr
This structure is defined by <printer.h=>printer> as a structure containing the information returned by <printer_info>.

    \{
        short int version;
        short int identity;
        int xres,yres;
        int features;
        char *description;
        int xhalf, yhalf;
        int number;
    }

/version/ is the version number * 100.
(xres,yres) gives x and y res in dpi.
(xhalf,yhalf) halftone res in repeats per inch.
/number/ is for internal use only.DATA�print_job
The type {*}print_job{*} is defined in <DeskLib:PDriver.h=>PDriver> as a type capable of holding a print job handle. It is actually defined as an /int/.DATAcprint_pagesize
Syntax:	<os_error> *print_pagesize (<print_pagesizestr> *size);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function finds how large the paper and print area is. On exit, /size/ contains the paper size in millipoints, and the printable rectangle (origin at bottom left, coordinates in millipoints).DATA	print_pagesizestr
This type is defined in <print.h=>print>. It is a structure containing a page and its margins.

  \{
    int xsize, ysize;
    <print_box> bbox;
  }

{/}(xsize,ysize){/} is the page size in millipoints.
/bbox/ is the actual printable area.DATA�print_positionstr
This type is defined in <printer.h=>printer>. It is a structure giving an abitrary coordinate:

  \{
    int dx, dy;
  }DATA�print_reset
Syntax:	<os_error> *print_reset (void);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function aborts all print jobs.DATAiprint_screendump
Syntax:	<os_error> *print_screendump (int job);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function makes the printer driver output a screen dump to the job given. Note that none of the standard Acorn drivers support this feature (check the features first using <print_checkfeatures> or <print_info>).DATAprint_selectillustration
Syntax:	<os_error> *print_selectillustration (int new, char *title, int *old);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function does the same as <print_selectjob>, except that if a new print job is started:
{tab}
�	It must be only one page long.
�	Output may differ eg EPS instead of PostScript.

RISC OS 3 only.DATA:print_selectjob
Syntax:	<os_error> *print_selectjob (int new, char *title, int *old);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function makes a given print job the current one. The job is identified by /new/ which must be a file (eg {*}printer:{*}) previously opened for output. /title/ gives a human-readable name for the job.

The current print job is suspended and the new job (re)started. The old job handle (if any) is returned in the variable pointed to by /old/.

NB If /new/ is zero then the current job is suspended.DATARprint_setinfo
Syntax:	<os_error> *print_setinfo (<print_infostr> *block);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function reconfigures the printer driver. The version, identity and description fields are not used. Leave bit 0 clear in the features field for monochrome, set bit 0 for colour.DATA_print_setpagesize
Syntax:	<os_error> *print_setpagesize (<print_pagesizestr> *size);
Header:	<print.h=>print>

Returns:	Pointer to error, or <NULL> if none.

This function sets how large the paper and print area is. /size/ contains the paper size in millipoints, and the printable rectangle (origin at bottom left, coordinates in millipoints).DATAKprint_transformation
This type is defined in <DeskLib:PDriver.h=>PDriver> as a type capable of specifying an arbitrary transformation. It is the structure:

    \{
        int xx;
        int xy;
        int yx;
        int yy;
    }

The coordinates (x,y) are mapped to:

((x*xx+y*yx) / (1\<\<16) ,(x*xy+y*yy) / (1\<\<16))DATAXprint_transmatstr
This type is defined in <printer.h=>printer> as a type capable of specifying an arbitrary transformation. It is the structure:

    \{
        int xx;
        int xy;
        int yx;
        int yy;
    }

The coordinates (x,y) are mapped to:
{wrap off}
{align centre}((x*xx+y*yx) / (1\<\<16) ,(x*xy+y*yy) / (1\<\<16))DIR$((�F����~�"�tDATA�ptrdiff_t
The type {/}ptrdiff_t{/} is defined in <stddef.h=>stddef> as an object capable of holding the result of subtracting one pointer from another. It is actually defined in both Desktop C and Easy C as a /signed int/.DATA�putc
Syntax:	int putc (int c, <FILE> *stream);
Header:	<stdio.h=>stdio>

Returns:	c, or <EOF> if there is an error.

This function writes the character in /c/ to the stream specified. It is virtually identical to <fputc>. The only difference is that the function might be a macro and the argument may be evaluated more than once so you can't use an expression with side effects. For example putc(i++) may cause i to be incremented twice.DATA0putchar
Syntax:	int putchar (int c);
Header:	<stdio.h=>stdio>

Returns:	c, or <EOF> if there is an error.

This function writes the character in /c/ to <stdout>. It is identical to <putc>(c,stdout). It may be implemented as a macro so be careful of using expressions which modify other variables.DATA�puts
Syntax:	int puts (char *str);
Header:	<stdio.h=>stdio>

Returns:	<EOF> if there is an error.

This function writes the string pointed to by /str/, followed by a newline, to <stdout>. The null terminator is not written.DIR$���F�����"�qsort�F���u<�"�raisexF����H�"�rand0F���DŽ/(RAND_F����LU&dReadEntriesdF���;\�"�realloc�#F���c��"Mremove8%F�����"�rename�&F������$�res�'F���uIb%{Resource)F����DŽ/�Resource_/F���L;�$�resspr�/F���#Ȅ/Lresspr_�1F���[Ȅ/tres_p5F�����"return�7F����P�"�rewindT8F����Ȅ/,riscos_:F����Ȅ/�rl_�=F�����$%roslib$@F���aɄ/�ro_DATA�qsort
Syntax:	void qsort (void *base, <size_t> num, size_t size, int (*func) (void *, void *));
Header:	<stdlib.h=>stdlib>

This function sorts an array of /num/ objects, each of which is /size/ bytes long, and whose first object is pointed to by /base/ into ascending order.

The function which must be defined by you is called with pointers to objects. If the first is less than, equal to, or greater than the second then the function should return less than, equal to, or greater than zero.DATA�raise
Syntax:	int raise (int sig);
Header:	<signal.h=>signal>

Returns:	Zero if successful

This function sends the signal /sig/ to the executing program.DATA�rand
Syntax:	int rand (void);
Header:	<stdlib.h=>stdlib>

Returns:	A psuedo-random number.

This function generates a psuedo-random number in the range from 0 to <RAND_MAX>.DIR$((XF���Z��"�MAXDATA�RAND_MAX The macro {/}RAND_MAX{/} is defined in <stdlib.h=>stdlib> as the maximum value returned by the function <rand>. In Easy C it is defined as 0x7fffffff.DATAdReadEntries
Syntax:	int ReadEntries (char *pathname, <object_info> *buf, int num, int *off, int buf_size, char *fspec);
Header:	<TimsLib:File.h=>File_TL>

Returns:	Number of objects read.

This function reads entries from a directory. /pathname/ contains the directory name, /buf/ is a store of size {/}buf_size{/} for the object info read. /num/ is the number of objects to read and {/}*off{/} is the offset to start from. /fpsec/ determines the leaf names to match - if it is <NULL> then "*" is used.

{/}*off{/} is automatically updated after each call.

This function is equivalent to SWI OS_GBPB 10.DATA�realloc
Syntax:	void *realloc (void *ptr, size_t size);
Header:	<stdlib.h=>stdlib>

Returns:	Pointer to space, or <NULL> if failed.

This function changes the size of a space initially allocated with <calloc>, <malloc>, or realloc. It takes a pointer to the space in /ptr/, and a new size in /size/. The contents of the space are unaltered (although they may be chopped off the new size is smaller). Any new bytes allocated have undefined values. The space may be moved rather than just extended and so this function returns a new pointer.

If /ptr/ is <NULL> then this function behaves as <malloc>, else if /size/ is zero then this function behaves as <free>. If the space cannot be reallocated then the contents are unchanged. However, the function will return NULL so you will not be able to access the memory using the original pointer. Therefore, do not use the following code:

{fCode}do \{
	{fCode}size -= 1024;
	{fCode}space = (char *) realloc (space,size);
{fCode}} while (space==NULL);{f}

Use instead:

{fCode}do \{
	{fCode}size -= 1024;
	{fCode}newspace = (char *) realloc (space, size);
{fCode}} while (newspace==NULL);
space=newspace;DATAMremove
Syntax:	int remove (char *filename);
Header:	<stdio.h=>stdio>

Returns:	Zero if the file is removed.

This function attempts to remove the file whose name is contained in filename. This is equivalent to <*Delete=>*Help Delete> or <OS_File 6=>SWI:os_file6>. If the file is open, the function will almost certainly fail.DATA�rename
Syntax:	int rename (char *old, char *new);
Header:	<stdio.h=>stdio>

Returns:	Zero if the file is renamed.

This function renames the file whose name is in old, to the name in new. This is equivalent to <*Rename=>*Help Rename> or <OS_FSControl 25=>SWI:OS_FSControl>. If the file in new already exists the attempt will fail. If the attempt fails, the file will still be called by its old name.DATA�res.h
This header declares functions for handling resource files (ie files within the application directory).

Functions:

#Indent 4
#Table 2 21
<res_init>
<res_findname>
<res_openfile>
#EndTableDATA{DeskLib:Resource.h
Version: 1.02 (Dec 1994)
#line
This header declares functions for handling resource files (ie files within the application directory).

Functions:

#indent 3
#Table columns 2
<Resource_Initialise>
<Resource_InitialisePath>
<Resource_LoadSprites>
#EndTable

#Indent 0
Variables:

#indent 6
#table lines 1
<resource_pathname>
<resource_sprites>
#endtableDIR$���)F���a%b%�Initialise�*F���8-b%�InitialisePathL+F���Xb%Wpathname�,F���2fb%�sprites�-F����b%tLoadSpritesDATA�Resource_Initialise
Syntax:	void Resource_Initialise (char *name);
Header:	<DeskLib:Resource.h=>Resource>

This function sets the variable <resource_pathname> to "\<Name$Dir>."DATA�Resource_InitialisePath
Syntax:	void Resource_InitialisePath (char *name);
Header:	<DeskLib:Resource.h=>Resource>

This function sets the variable <resource_pathname> to "Name:".DATAWresource_pathname
The variable {/}resource_pathname{/} is defined in <DeskLib:Resource.h=>Resource>. It is a string ({/}char *{/}) which is used as a prefix for all pathnames used by DeskLib for loading resource files. It is set to be either "\<Name$Dir>." or "Name:" by the function <Resource_Initialise> or <Resource_InitialisePath>.DATA�resource_sprites
The variable {*}resource_sprites{*} indicates a sprite area containing sprites belonging to your task. If you have not loaded any with <Resource_LoadSprites>, it will point to the wimp sprite area. It is of type <sprite_area>.DATAtResource_LoadSprites
Syntax:	void Resource_LoadSprites (void);
Header:	<DeskLib:Resource.h=>Resource>

This function loads the 'Sprites' file and sets up <resource_sprites> to point to it. You must have already called <Resource_Initialise> or <Resource_InitialisePath>. To use the sprites in your windows, call {fCode}<Template_UseSpriteArea>(resource_sprites);{f}DATA�resspr
This header declares functions for accessing sprite resources.

Functions:

#indent 1
#table columns 2
<resspr_init>
<resspr_area>
#endtableDIR$LL�/F���"B�$�area�0F����$�$�initDATA�resspr_area
Syntax:	<sprite_area> *resspr_area (void);
Header:	<resspr.h=>resspr>

This function returns a pointer to the sprite area into which your sprites were loaded.DATA�resspr_init
Syntax:	void resspr_init (void);
Header:	<resspr.h=>resspr>

This function must be called before any other *resspr* functions and before using <template_init>. It reads in your sprites (I assume <res_init> must be called first).DIR$tt2F���ɹ�$�findname3F���p��$BinitP4F���辵$openfileDATA�res_findname
Syntax:	int res_findname (char *leaf, char *buf);
Header:	<res.h=>res>

Returns:	<TRUE> (always!).

This function adds the prefix specified when calling <res_init>, to the leaf name given and places the result in /buf/.DATABres_init
Syntax:	void res_init (char *progname);
Header:	<res.h=>res>

This function initialises the Resource system. You should call it with the name of your program. It will use "\<MyProg$Dir>." to prefix resource files, if you pass "MyProg" to it (so you must have defined the system variable in your !Run file.DATAres_openfile
Syntax:	<FILE> *res_openfile (char *leaf, char *mode);
Header:	<res.h=>res>

Returns:	Pointer to the file, or <NULL>.

This function calls <res_findname> on the given leaf name, and then calls <fopen> to attempt to open the file according to the <mode=>file_mode_>.DATAreturn
This keyword immediately jumps out of a function back to the point at which it was called. It may be followed by a value for the function to return, if the function is defined as one returning values.

eg
#fCode
     void test1 (int a, int *b)
     \{
        if (a==2) return;
        b[0]=a;
     }
#f

This function sets the first element in the array /b/ to the value of /a/, so long as /a/ is not 2.

#fCode
    int square (int a)
    \{
        return a*a;
    }
#f

This function returns the square of /a/.DATA�rewind
Syntax:	void rewind (<FILE> *stream);
Header:	<stdio.h=>stdio>

This function sets the file pointer for the stream to the beginning of the file. It is equivalent to <fseek>(stream, 0, <SEEK_SET>);DIR$,,�8F���4{Z&�!RootDATA�RISC OS Functions
RISC OS Functions are provided by each of the Archimedes C compilers, and also by the freeware libraries "DeskLib" and "TimsLib".

#Sprite 208,128 !ansic;indent 22
<Desktop C (Acorn)=>ro_ansic_>


#Sprite 208,236 !easyc
<Easy C (Beebug)=>ro_easyc_>


#Sprite 208,344 !desklib
<DeskLib (Freeware)=>ro_dlib_>


#Sprite 208,452 !timslib
<TimsLib (Freeware)=>ro_tlib_>
DIR$���:F�����$�file_0;F���,�$�graph_�<F���x��$�io_l=F����$�misc_DATA�File Handling Functions
#Parent roslib
These functions all act on files in some way.

#Table lines 1
<os_args>
<os_file>
<os_find>
<os_gbpb>
#EndTableDATA�Graphics Functions
#Parent roslib
These functions all affect the screen display in some way.

#indent 5
#Table 9 16
<os_circle>
<os_circlefill>
<os_clg>
<os_cls>
<os_colour>
<os_cursor>
<os_draw>
<os_drawby>
<os_fill>
<os_gcol>
<os_mode>
<os_move>
<os_moveby>
<os_origin>
<os_palette>
<os_plot>
<os_point>
<os_pos>
<os_rectangle>   
<os_rectanglefill>
<os_tab>
<os_tint>
<os_vdu>
<os_vduq>
<os_vduw>
<os_vpos>
#EndTableDATA�Input/Output Functions
These functions are all concerned with input and/or output.

#Table 1 16
<os_adval>
<os_get>
<os_inkey>
#EndTableDATA�Miscellaneous Functions
#Parent roslib
#Table columns 3
<os_byte>
<os_cli>
<os_rnd>
<os_sound>
<os_swi>
<os_swix>
<os_word>
#EndTableDATA%roslib.h
#Parent ro_easyc_
The \<roslib.h\> header defines quite a few functions which access the built in features in RISC OS. Obviously, programs using these functions will not be portable between different computers unless the same functions are available on both. It also defines four types.

Functions:

#Indent 12
#Table 2 23
<Graphics=>rl_graph_>
<File handling=>rl_file_>
<Input/Output=>rl_io_>
<Miscellaneous=>rl_misc_>
#EndTable

#Indent 0
Types:

#Indent 6
#Table lines 1
<os_error>
<os_filestr>
<os_gbpbstr>
<os_regset>
#EndTableDIR$���@F���[�Z&�ansic_�EF�����Z&bdlib_�JF����}Z&easyc_LF���{�Z&�tlib_DATA�Desktop C RISC OS Functions
#Parent riscos_
#Indent 6
#Sprite 0,0 !ansic
Desktop C functions are grouped into 50 header files. All the routines are contained in the {*}RISCOS_Lib{*} library.

#Indent 7
#Table columns 4
<akbd.h=>akbd>
<alarm.h=>alarm>
<baricon.h=>baricon_h>
<bbc.h=>bbc>
<colourmenu.h=>colourmenu>
<colourtran.h=>colourtran_h>
<coords.h=>coords>
<dbox.h=>dbox_h>
<dboxfile.h=>dboxfile>
<dboxquery.h=>dboxquery>
<dboxtcol.h=>dboxtcol>
<drawfdiag.h=>drawfdiag>
<drawferror.h=>drawferror>
<drawfobj.h=>drawfobj>
<drawftypes.h=>drawftypes>
<drawmod.h=>drawmod>
<event.h=>event_h>
<fileicon.h=>fileicon>
<flex.h=>flex>
<font.h=>font_h>
<fontlist.h=>fontlist>
<fontselect.h=>fontselect>
<heap.h=>heap>
<help.h=>help>
<kernel.h=>kernel>
<magnify.h=>magnify>
<menu.h=>menu_h>
<msgs.h=>msgs_h>
<os.h=>os>
<pointer.h=>pointer>
<print.h=>print>
<res.h=>res>
<resspr.h=>resspr>
<saveas.h=>saveas>
<sprite.h=>sprite_h>
<template.h=>template_h>
<trace.h=>trace>
<txt.h=>txt_h>
<txtedit.h=>txtedit>
<txtopt.h=>txtopt>
<txtscrap.h=>txtscrap>
<txtwin.h=>txtwin>
<typdat.h=>typdat>
<visdelay.h=>visdelay>
<werr.h=>werr>
<wimp.h=>wimp_h>
<wimpt.h=>wimpt>
<win.h=>win>
<xferrecv.h=>xferrecv>
<xfersend.h=>xfersend>


#EndTableDATAbDeskLib RISC OS Functions
#Parent riscos_
#Indent 6
#Sprite 0,0 !desklib
Version: 2.16
DeskLib functions are grouped into 49 header files. All the routines are contained in the DeskLib library.

#indent 3
#Table columns 4
<Clear.h=>Clear>
<ColourMenu.h=>ColourMenu_DL>
<ColourTran.h=>ColourTran>
<Coord.h=>Coord>
<Core.h=>Core>
<Dialog.h=>Dialog_h>
<Dispatch.h=>Dispatch_h>
<Drag.h=>Drag>
<DragASpr.h=>DragASpr>
<Error.h=>Error_h>
<Event.h=>Event>
<EventMsg.h=>EventMsg>
<File.h=>File_h>
<Filter.h=>Filter>
<Font.h=>Font>
<GFX.h=>GFX>
<Handler.h=>Handler>
<Hourglass.h =>Hourglass>
<Icon.h=>Icon>
<Kbd.h=>Kbd>
<KernelSWIs.h=>KernelSWIs>
<KeyCodes.h=>KeyCodes>
<LinkList.h=>LinkList>
<Mem.h=>Mem>
<Menu.h=>DL_Menu>
<Module.h=>Module>
<Msgs.h=>Msgs>
<Pane.h=>Pane>
<PDriver.h=>PDriver>
<Pointer.h=>DL_Pointer>
<PopUp.h=>PopUp>
<Resource.h=>Resource>
<Save.h=>Save>
<Screen.h=>Screen>
<Serial.h=>Serial>
<Slider.h=>Slider>
<Sound.h=>Sound>
<Sprite.h=>Sprite_DL>
<Str.h=>Str_DL>
<StringCR.h=>StringCR>
<SWI.h=>SWI>
<Template.h=>Template>
<TextFile.h=>TextFile>
<Time.h=>DL_Time>
<Validation.h=>Validation>
<WAssert.h=>WAssert>
<Wimp.h=>Wimp>
<WimpSWIs.h=>WimpSWIs>
<Window.h=>Window>
#EndTable

#indent 0
To include one of the DeskLib header files use:{wrap off}
{fCode;align centre}<#include=>include> "DeskLib:XXX.h"{f;align;wrap}
where XXX is the name of the header file.DATAEasy C RISC OS Functions
#indent 6
#Sprite 0,0 !easyc
RISC OS functions are grouped into three header files. kernel.h accesses routines in the <Shared�C Library=>SWI:SharedCLibrary_> module.

#Indent 7
#Table 2 17
<kernel.h=>kernel>
<roslib.h=>roslib>
<swis.h=>swis>
#EndTableDATA�TimsLib RISC OS Functions
#Parent riscos_
#Indent 6
#Sprite 0,0 !timslib
TimsLib functions are grouped into 28 header files. TimsLib is intended to be used in conjunction with <DeskLib=>ro_dlib_>.

#indent 0
Much of TimsLib is intended for use with DeskLib version 2.04 and is now redundant with DeskLib version 2.16.

#Indent 4
#Table columns 4
<AskUser.h=>AskUser_h>
<Check.h=>Check>
{/}<Coord.h=>Coord_TL>{/}
<Core.h=>Core_TL>
{/}<Dialog.h=>Dialog_TL>{/}
<EnableDbug.h=>EnableDbug>
<Env.h=>Env>
<Err.h=>Err>
{/}<File.h=>File_TL>{/}
<FileIcon.h=>FileIcon_h>
{/}<Font.h=>Font_TL>{/}
{/}<GFX.h=>GFX_TL>{/}
{/}<Icon.h=>Icon_TL>{/}
<Interface.h=>Interface>
<Kbd.h=>Kbd_TL>
<Lib.h=>Lib>
{/}<LinkList.h=>LinkList_TL>{/}
<MallocDbug.h=>MallocDbug>
<Menu.h=>Menu_TL>
{/}<Msgs.h=>Msgs_TL>{/}
<SaveAs.h=>SaveAs_TL>
<SWIs.h=>SWIs_TL>
<Time.h=>Time_TL>
<Trace.h=>Trace_TL>
<WimpExt.h=>WimpExt>
{/}<Window.h=>Window_TL>{/}
<XferRecv.h=>XferRecv_TL>
<XferSend.h=>XferSend_TL>
#EndTable

#indent 0
To include one of the TimsLib header files use:
{fCode;align centre}<#include=>include> "TimsLib:XXX.h"{f;align}
where XXX is the name of the header file.

Some of the headers are extensions to DeskLib, ie they themselves include the DeskLib header then add more functions. These are shown in /italics/. Many of the functions have different effects depending on the macro {*}_DEBUG{*}. More information can be found in the "!Help" and "ReadMe" files within TimsLib.DIR$d
d
_F���YOd%�Save�`F����b�$$saveas�cF���<ʄ/�SaveAs_�kF����ʄ/@save_F���s˄/,scale_�F������"#scanf��F����˄/DSCHAR_��F����ed%Screen��F����˄/�screen_T�F���k̄/Hscroll_��F���=�$;SCrouch̋F����̄/`SEEK_ȎF���("e%6Serial�F���̈́/lSerial_��F�����"�setbuf��F�����"�setjmpX�F����΄/(setjmp_��F����*�"�setlocale �F������"�setvbufԭF����΄/,sform_T�F���τ/�sf_x�F���yτ/DSHRT_�F���kh�"ZSIGABRTx�F����k�"YSIGFPEԼF����n�"YSIGILL0�F����r�"YSIGINT��F�����"�signal8�F����τ/,signal_T�F���3v�"ZSIGSEGV��F����{�"ZSIGSTAK�F���$y�"ZSIGTERMh�F���NЄ/�sig_,�F������"�sin��F���aͽ"�sinh��F���2��"
sizeof��F����Є/(size_��F�����%Slider��F���ф/�Slider_��F����ф/sl_��F���y�e%�Soundt�F���E҄/Lsound_�F����mV&HSplitPathnameL�F���|��"�sprintf��F���mI�%�sprite`�F���ô�%�spritemem_flags4�F����҄/Lspritepool_�F���Rӄ/�sprite_d�	F���.݄/,SPR_H�	F���w<�"�sqrt�	F����S�"�srand|�	F�����"�sscanf �	F���%�"�stdarg�	F�����"�stddef�	F���\��"�stderr��	F�����"�stdinh�	F����/�"�stdio�	F������"hstdlib\�	F���2��"�stdout(�	F������"jSTF��	F���Su�"MSTR��	F���q��"�strcat��	F����.�%+strcatcr�	F���(��"!strchr0�	F���~-�"Qstrcmp��	F���>�%strcmpcr��	F���@<�"�strcoll�	F���N��"�strcpy��	F����9�%strcpycr��	F���5��"�strcspn��	F����T�%strdup��	F����ބ/,streamio_��	F������"�strerror��	F�����"lstrftime$�	F���]	�%�stricmp��	F���E�%]stricmpcr�	F����D�"�string��	F����{�%�StringCR<�	F���+��"�strlen,�	F���4��%�strlencr�	F���O�"strncat0�	F����Q�"�strncmp��	F���/��"=strncpy�	F���VD�%<strncpycrD�	F���=�%�strnicmp��	F����&�%lstrnicmpcrP�	F���%��"�strpbrkP�	F���!��",strrchr|�	F����4V&\StrSave��	F����?V&�StrSaveDbug��	F������"strspn��	F������"Jstrstr��	F���j�"�strtod��	F���t1�"dstrtok�	F���l�"(strtol8�	F���T;�"0strtoulh�	F�����"}struct�	F����^�"�struct�tm�	F��� f�"strxfrm�	F���7�/Pstr_$

F�����%zSWI�
F������$Jswis�
F���9�/(SWIs_�
F������"switch�
F���z�/,SWI_<8
F�����"�systemDATA�DeskLib:Save.h
Version: 1.02 (18 Jun 1994)
#line
This header declares functions and types for automatic handling of data export by icon drag ie "Save as" windows.

Functions:

#indent 6
#table columns 2
<Save_InitSaveWindowHandler>
<Save_ReleaseSaveHandlers>
<Save_SetFiletype>
#endtable
#indent

Types:

#indent 5
#Table columns 3
<save_filesaver>
<save_ramsaver>
<save_result>
<save_resulthandler>
<save_saveblock>

#EndTable
DATA$saveas
Syntax:	<BOOL> saveas (int type, char *name, int size, <xfersend_saveproc> save, <xfersend_sendproc> send, <xfersend_printproc> print, void *hnd);
Header:	<saveas.h=>saveas_h>

Returns:	<TRUE> if successful.

See also the TimsLib function, <SaveAs=>SaveAs_>.

This function opens a dialogue box (must be called "xfer_send" and similar to those in Draw, Edit and Paint). /type/ contains the file type, /name/ the file name, /size/ the estimated file size, /save/ is the function used for saving to a file, /send/ is the function used for RAM transfer, /print/ is the function used for printing, and /hnd/ is passed straight to those functions.

This function also deals with all the messages needed to perform the data transfer. /send/ or /print/ can be 0 to use the /save/ routine instead.DIR$���dF����1X&�!Root�gF�����"h�hF�����"read_leaf�iF���t=X&ReadLeafname�jF����X&�TLDATA�SaveAs
Syntax:	<BOOL> SaveAs (int type, char *name, int size, <xfersend_saveproc> save, void *hnd);
Header:	<TimsLib:SaveAs.h=>SaveAs_TL>

Returns:	<TRUE> if file is successfully saved.

This function opens a "Save as:" dialogue box and handles all the dragging and messages needed to save the file. /type/ contains the file type, /name/ the file name, /size/ the estimated file size, /save/ is the function used for saving and /hnd/ is passed straight to that function. The template "xfer_send" must be loaded with <Template_LoadFile> and should have the following icons:

0	'OK' icon. Button type 'Click'.
2	Filename icon. Indirected text, size 256. Button type 'Writeable'.
3	File icon. Indirected text, size 16. Button type 'Click/Drag'.DATAsaveas.h
This header declares functions for manipulating
save dialogue boxes (or as Acorn put it,
"export of data by dragging icon from dialogue
box".

Functions:

       <saveas                          >
       <saveas_read_leafname_during_send=>saveas_read_leaf>DATAsaveas_read_leafname_during_send
Syntax:  void saveas_read_leafname_during_send
         (char *name, int length);
Header:  <saveas.h=>saveas_h>

This function reads the leaf name of the file
name in the "xfer_send" dialogue box. 'length'
contains the length of the name buffer.DATASaveAs_ReadLeafname
Syntax:	void SaveAs_ReadLeafname (char *name, int length);
Header:	<TimsLib:SaveAs.h=>SaveAs_TL>

This function reads the leafname of the file saved using <SaveAs=>SaveAs_>.

The name is stored in name, an array of length /length/.DATA�TimsLib:SaveAs.h
This header declares functions for easy handling of standard "save as" dialogue boxes.

Functions:

#table columns 2
<SaveAs=>SaveAs_>
<SaveAs_ReadLeafname>
#endtableDIR$@@�lF���Ec%{filesaverDnF���B�0<InitSaveWindowHandler4�F����20]ramsaver�uF����c%�ReleaseSaveHandlerstwF���TCc%result|xF���CQc%bresulthandler�yF����c%�saveblock�}F����3d%qSetFiletypeDATA{save_filesaver
This type is defined in <DeskLib:Save.h=>Save>. It defines a function type used for saving data. The function is of the form:
{wrap off}
{fCode;align centre}<BOOL> myfunc (char *f, void *ref);{f;align;wrap}

The function should save data to file /f/, /ref/ is passed straight from <Save_InitSaveWindowHandler>. It should return <TRUE> if an error occurred.DATA<Save_InitSaveWindowHandler
Syntax:	<save_saveblock> *Save_InitSaveWindowHandler (<window_handle> w, <BOOL> is_menu, BOOL is_win, BOOL release, <icon_handle> drag, icon_handle ok, icon_handle cancel, icon_handle name, <save_filesaver> filesave, <save_ramsaver> ramsave, <save_resulthandler> res_handle, <size_t> estsize, int filetype, void *ref);
Header:	<DeskLib:Save.h=>Save>

Returns:	Pointer to save block.

This function handles everything to do with saving. Once your save
window is created all you need to do is call this with:
{tab}
�	The window handle of the save window
�	If the save window is on a menu or just a window
�	If the save handlers should be released afterwards
�	The icon handles of the draggable icon, OK, Cancel and filename
�	The handlers for saving to file, RAM transfer, and afterwards
�	The estimated file size (pretty useless really)
�	A user value ({/}ref{/}) which is passed directly to the handlers.

Points to note:

�	The filename must be indirected text and should contain a default name.
�	/ramsave/ and {/}res_handle{/} are optional (<NULL> if not required).
�	/release/ can be <FALSE> if you want to only call this function once when the window is created. In this case you may need to access the returned structure yourself.
�	The save window can have a close icon, but this is not good style.FREE]����_ramsaver
This type is defined in <DeskLib:Save.h=>Save>. It defines a function type used for saving data. The function is of the form:

{fCode;align centre}int myfunc (<task_handle> source, void *ref, task_handle destin, void *buf, unsigned int size, int count);{f;align}

The function should use <Wimp_TransferBlock> to transfer data to /buf/ in the task /destin/. /size/ gives the size of /buf/ ie the amount to transfer and /count/ is the amount transferred to far. /source/ is your task handle. The function should return the number of bytes transferred, or negative if an error occurred.DATA�Save_ReleaseSaveHandlers
Syntax:	void Save_ReleaseSaveHandlers (<save_saveblock> *saveblock);
Header:	<DeskLib:Save.h=>Save>

This function releases the save handlers. You will only need to call this if for some reason the Save module cannot detect the menu closing or the window closing. For instance, under RISC OS 2 menu closing cannot be detected and so you will have to call this sometime.DATAsave_result
This type is defined in <DeskLib:Save.h=>Save>. It is an enumerated type containing the possible results of a save attempt.

    \{
      save_SAVEOK	= 0,
      save_RECEIVERFAILED,	
      save_FILESAVERFAILED,	
      save_RAMSAVERFAILED	
    }DATAbsave_resulthandler
This type is defined in <DeskLib:Save.h=>Save>. It defines a function type called after saving. The function is of the form:
{wrap off}
{fCode;align centre}void myfunc (<save_result> result, void *ref);{f;align;wrap}

The function should act on the result code given, /ref/ is passed straight from <Save_InitSaveWindowHandler>.DATA�save_saveblock
This type is defined in <DeskLib:Save.h=>Save>. It is a rather large structure which contains all the information needed to handle a save operation. You will not generally need to access this structure internally, but for the interested it is:

\{
  <window_handle> window;

  union
  \{
    unsigned int value;
    struct
    \{
      unsigned int is_menu		: 1;
      unsigned int is_save_window	: 1;
      unsigned int we_are_dragging	: 1;
      unsigned int quit_after_save	: 1;
      unsigned int release_after	: 1;

      unsigned int padding		: 27;
    } data;
  } flags;
{tab}
  <icon_handle>		dragsprite;
  <icon_handle>		okbutton;
  <icon_handle>		cancelbutton;
  <icon_handle>		filenameicon;
  <save_filesaver>	filesaver;
  <save_ramsaver>	ramsaver;
  <save_resulthandler>	resulthandler;
  <size_t>		estimatedsize;
  int			filetype
  void			*ref;
  int			ram_progress;
  unsigned int		last_message_ref;
}DATAqSave_SetFiletype
Syntax:	void Save_SetFiletype (<save_saveblock> *block, int filetype);
Header:	<DeskLib:Save.h=>Save>

This function sets the sprite in the save window to be "file_..." ie the correct file icon for the filetype, and also alters the saveblock so that the filetype is used.

NB The drag icon is set to non-indirected sprite-only by this function.DIR$,,,F���\�H&�blockDATA�scale_block
This type is defined in <DeskLib:Wimp.h=>Wimp> as a type holding data for use by <Wimp_ReadPixTrans>.

  \{
    wimp_point mul;
    wimp_point div;
  }DATA#scanf
Syntax:	int scanf (char *format, ...);
Header:	<stdio.h=>stdio>

Returns:	Number of successful inputs, or <EOF> if there was an input error.

This function reads input from <stdin> under control of the <format string=>sform_>.

It is identical to <fscanf>(stdin, format, ...); DIR$DD@�F�����"�MAX�F�����"�MINDATA�SCHAR_MAX
This macro is defined in <limits.h> and represents the maximum value which can be stored in a signed char. In Easy C it is defined as 0x7f (127).DATA�SCHAR_MIN
This macro is defined in <limits.h> and represents the minimum value that can be stored in a signed char. In Easy C it is defined as 0x80 (-128).DATADeskLib:Screen.h
Version: 1.00 (23 Mar 1992)
#line
This header declares one function, which reads several mode variables.

Function: <Screen_CacheModeInfo>

Variables:

#indent 2
#Table lines 2
<screen_mode>
<screen_size>
<screen_eig>
<screen_delta>
<screen_bpp>

#EndTableDIR$��p�F�����d%�bpp�F����md%�CacheModeInfo��F���̀d%�deltax�F����zd%�eig<�F���qqd%~mode��F���%td%�sizeDATA�screen_bpp
This variable is defined in <DeskLib:Screen.h=>Screen>. It is used to hold the current number of bits per pixel.

{align centre}Colours = 1 \<\< BPPDATA�Screen_CacheModeInfo
Syntax:	<BOOL> Screen_CacheModeInfo (void);
Header:	<DeskLib:Screen.h=>Screen>

Returns:	<TRUE> (always!)

This function sets up the variables <screen_mode>, <screen_eig>, <screen_bpp>, <screen_size> and <screen_delta>.

It should be called before you try to use any of these variables and every time the mode changes. The function <Handler_ModeChange> is provided for this purpose.DATA�screen_delta
This variable is defined in <DeskLib:Screen.h=>Screen>. It is used to hold the current screen delta values (as a <wimp_point>).

{align centre}OS units = Pixels * Delta valueDATA�screen_eig
This variable is defined in <DeskLib:Screen.h=>Screen>. It is used to hold the current screen eigen values (as a <wimp_point>).

{align centre}OS Units = Pixels \<\< Eigen valueDATA~screen_mode
This variable is defined in <DeskLib:Screen.h=>Screen>. It is used to hold the current screen mode number.DATA�screen_size
This variable is defined in <DeskLib:Screen.h=>Screen>. It is used to hold the current screen size (as a <wimp_point>) in OS units.DIR$HH��F���yoH&�rqp�F���Y�X&typeDATA�scroll_rq
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is a structure containing the data returned by a Scroll_Request event.

  \{
    <window_openblock>	openblock;
    <wimp_point>	direction;
  }DATAscroll_type
This type is defined in <TimsLib:Window.h=>Window_TL>. It is an enumerated type containing the three ways a window can scroll.

   \{
     scroll_X	= 3,
     scroll_Y	= 4,
     scroll_2D	= 12
   }

The last one is a scroll in both directions at once (RISC OS 3 only).DATA;Stephen Crouch
Internet email: sc93@ecs.soton.ac.ukDIR$``,�F����8�"�CUR�F���y;�"�END�F���5�"�SETDATA�SEEK_CUR
#Parent stdio
The macro SEEK_CUR is defined in <stdio.h=>stdio> and is a value used as an argument for the function <fseek>. It causes the file pointer to be repositioned relative to the current position.DATA�SEEK_END
#Parent stdio
The macro SEEK_END is defined in <stdio.h=>stdio> and is a value used as an argument for the function <fseek>. It causes the file pointer to be repositioned relative to the end of the file.DATA�SEEK_SET
#Parent stdio
The macro SEEK_SET is defined in <stdio.h=>stdio> and is a value used as an argument for the function <fseek>. It causes the file pointer to be repositioned relative to the start of the file.DATA6DeskLib:Serial.h
Version: 1.10 (12 Dec 1993)
#line
This header declares functions for serial I/O.

Functions:

#Table 7 20
<Serial_Activate>
<Serial_Deactivate>
<Serial_GetStatus>
<Serial_SetStatus>
<Serial_GetFormat>
<Serial_SetFormat>
<Serial_GetTxRate>
<Serial_GetRxRate>
<Serial_SetTxRate>
<Serial_SetRxRate>
<Serial_GetByte>
<Serial_PutByte>
<Serial_SendBreak>
<Serial_NonZeroPollWordOnReceive>
#EndTable

Macros:

#indent 12
#Table 1 20
<Status bits=>Serial_stat_>
<Data format bits=>Serial_data_>
#EndTable
#indent

Types:

{align centre}<serial_rate>DIR$lll�F�����d%�Activated�F���.e%data_p�F����d%�Deactivatel�F�����d%�GetByteL�F����d%�GetFormat�F�����d%�GetRxRate�F���*�d%�GetStatusȚF���-�d%�GetTxRate��F�����d%�PutBytel�F����)e%�rateP�F�����d%�SendBreak$�F���x�d%�SetFormat�F�����d%�SetRxRate�F���%�d%SetStatus�F�����d%�SetTxRate�F����e%�stat_��F�����d%NonZeroPollWordOnReceiveDATA�Serial_Activate
Syntax:	<os_error> *Serial_Activate (void);
Header:	<DeskLib:Serial.h=>Serial>

Returns:	Pointer to error, or <NULL> if none.

This function activates the serial drivers. It is equivalent to SWI <OS_Byte=>SWI:OS_Byte> 2,2.DATAData format bits
The following macros are defined in <DeskLib:Serial.h=>Serial> for use when reading/writing the data format. The macros for the required bits should be added together.

serial_8BITWORD	0x00000000
serial_7BITWORD	0x00000001
serial_6BITWORD	0x00000002
serial_5BITWORD	0x00000003
serial_1STOPBIT	0x00000000
serial_2STOPBITS	0x00000004
serial_NOPARITY	0x00000000
serial_PARITY	0x00000008
serial_ODDPARITY	0x00000000
serial_EVENPARITY	0x00000010
serial_MARKPARITY	0x00000020
serial_SPACEPARITY	0x00000030DATA�Serial_Deactivate
Syntax:	<os_error> *Serial_Deactivate (void);
Header:	<DeskLib:Serial.h=>Serial>

Returns:	Pointer to error, or <NULL> if none.

This function deactivates the serial drivers. It is equivalent to SWI <OS_Byte=>SWI:OS_Byte> 2,0.DATA�Serial_GetByte
Syntax:	int Serial_GetByte (void);
Header:	<DeskLib:Serial.h=>Serial>

Returns:	Byte read, or -1.

This function reads a single byte from the serial input buffer. If none are available it returns -1.DATA�Serial_GetFormat
Syntax:	int Serial_GetFormat (void);
Header:	<DeskLib:Serial.h=>Serial>

Returns:	Current data format.

This function gets the current <data format=>Serial_data_> used for serial I/O.DATA�Serial_GetRxRate
Syntax:	<serial_rate> Serial_GetRxRate (void);
Header:	<DeskLib:Serial.h=>Serial>

Returns:	Pointer to error, or <NULL> if none.

This function returns the current speed of serial input.DATA�Serial_GetStatus
Syntax:	int Serial_GetStatus (void);
Header:	<DeskLib:Serial.h=>Serial>

Returns:	Current status.

This function gets the current status of the serial port. It is equivalent to OS_SerialOp 0.DATA�Serial_GetTxRate
Syntax:	<serial_rate> Serial_GetTxRate (void);
Header:	<DeskLib:Serial.h=>Serial>

Returns:	Pointer to error, or <NULL> if none.

This function returns the current speed of serial output.DATA�Serial_PutByte
Syntax:	<BOOL> Serial_PutByte (int c);
Header:	<DeskLib:Serial.h=>Serial>

Returns:	<TRUE> if unable to send byte.

This function inserts a single byte into the serial output buffer.DATA�serial_rate
This type is defined in <DeskLib:Serial.h=>Serial>. It is an enumerated type containing the values used when setting/reading baud rates:

  \{
    serial_9600BAUD = 0,
    serial_75BAUD,
    serial_150BAUD,
    serial_300BAUD,
    serial_1200BAUD,
    serial_2400BAUD,
    serial_4800BAUD,
    serial_19200BAUD = 8,
    serial_50BAUD,
    serial_110BAUD,
    serial_134_5BAUD,
    serial_600BAUD,
    serial_1800BAUD,
    serial_3600BAUD,
    serial_7200BAUD
  }DATA�Serial_SendBreak
Syntax:	<os_error> *Serial_SendBreak (int len);
Header:	<DeskLib:Serial.h=>Serial>

Returns:	Pointer to error, or <NULL> if none.

This function transmits a break of the specified length.DATA�Serial_SetFormat
Syntax:	os_error *Serial_SetFormat (int form);
Header:	<DeskLib:Serial.h=>Serial>

Returns:	Pointer to error, or <NULL> if none.

This function sets the current <data format=>Serial_data_> used for serial I/O.DATA�Serial_SetRxRate
Syntax:	<os_error> *Serial_SetRxRate (<serial_rate> rate);
Header:	<DeskLib:Serial.h=>Serial>

Returns:	Pointer to error, or <NULL> if none.

This function sets the current speed of serial input.DATASerial_SetStatus
Syntax:	<os_error> *Serial_SetStatus (int eor, int and);
Header:	<DeskLib:Serial.h=>Serial>

Returns:	Pointer to error, or <NULL> if none.

This function sets the current status of the serial port.

{align centre}NEW_STATUS = (OLD_STATUS AND and) EOR eorDATA�Serial_SetTxRate
Syntax:	<os_error> *Serial_SetTxRate (<serial_rate> rate);
Header:	<DeskLib:Serial.h=>Serial>

Returns:	Pointer to error, or <NULL> if none.

This function sets the current speed of serial output.DATA�Status bits
The following macros are defined in <DeskLib:Serial.h=>Serial> for use when reading/writing the status. The macros for the required bits should be added together.

serial_USEXONXOFF	0x00000001   
serial_IGNOREDCDBIT	0x00000002
serial_IGNOREDSRBIT	0x00000004
serial_DTROFF	0x00000008
serial_IGNORECTSBIT	0x00000010
serial_DONTUSERTSFLOWCONTROL	0x00000020
serial_SUPPRESSINPUT	0x00000040
serial_RTSHIGH	0x00000080
serial_XOFFRECEIVED	0x00010000
serial_XOFFSENT	0x00020000
serial_DCDHIGH	0x00040000
serial_NOCARRIER	0x00040000
serial_DSRHIGH	0x00080000
serial_RIHIGH	0x00100000
serial_CTSHIGH	0x00200000
serial_XOFFSENTMANUALLY	0x00400000
serial_SPACEINRECEIVEBUFFER	0x00800000DATASerial_NonZeroPollWordOnReceive
Syntax:	void Serial_NonZeroPollWordOnReceive (int value, void *pollword);
Header:	<DeskLib:Serial.h=>Serial>

This function alters the word pointed to by /pollword/ to /value/ whenever an insertion into the serial input buffer occurs.DATA�setbuf
Syntax:	void setbuf (<FILE> *stream, char *buf);
Header:	<stdio.h=>stdio>

This function causes the file pointed to by /stream/ to be fully buffered in the buffer pointed to by /buf/, which is a character array of size <BUFSIZ>. If /buf/ is a null pointer then the file is unbuffered. This function is equivalent to:
{align centre}<setvbuf> (FILE *stream, char *buf, <_IOFBF>, BUFSIZ);{align}
or:
{align centre}setvbuf (FILE *stream, NULL, <_IONBF>, 0);{align}
if /buf/ is a null pointer.DATA�setjmp
Syntax:	int setjmp (<jmp_buf> env);
Header:	<setjmp.h=>setjmp_h>

Returns:	Zero when called directly.

This function marks a position to jump to with <longjmp>.DIR$((��F�����"hDATAsetjmp.h
The \<setjmp.h> header declares two functions and one type used for making non-local jumps (ie jumps out of the current statement block).

Functions:

#Indent 11
#Table 1 15
<setjmp>
<longjmp>
#EndTable

#Indent 0
Types:

#Indent 11
<jmp_buf>DATA�setlocale
Syntax:	char *setlocale (int cat, char *loc);
Header:	<locale.h=>locale>

Returns:	Old setting.

This function sets a particular category 'cat' of the locale to the string pointer to by 'loc'. For instance, to set the monetary information to that suitable for the UK, one would use:

#align centre
setlocale(<LC_MONETARY>,"uk");
#align

The old setting can be read by setting 'loc' to <NULL>.DATA�setvbuf
Syntax:	int setvbuf (<FILE> *stream, char *buf, int mode, <size_t> size);
Header:	<stdio.h=>stdio>

Returns:	Zero if successful.

This function sets the buffering type for a particular stream. The mode gives the buffering type, one of the macros <_IOFBF>, <_IOLBF>, or <_IONBF>. If /buf/ is a null pointer then setvbuf allocates its own buffer, else /buf/ points to a character array and /size/ indicates the size of it.DIR$,,�F������"Q!RootDATAQscanf() Format String
The format string is composed of a sequence of characters. All characters except '%' are expected to be matched directly in the input. '%' marks the beginning of a conversion specification. If a literal percent is required, then "%%" should be used.

A conversion specification results in one argument from the argument list having its contents altered according to the input received. The structure of a conversion specification is shown below:

{wrap off; align centre}%[<*=>sf_star_>][<field width=>sf_fw_>][<modifier=>sf_mod_>]\<<conversion char=>sf_conv_>\> DIR$��ܰF���*��"�conv_t�F���ݲ�"�fw_�F���b��"�mod_��F������"�star_DATA�Format String Conversion Character
One of the following:

d	A decimal integer read from the input stream is placed in the int pointed to by the argument.

i	An integer (decimal, octal, or hex) read from the input stream is placed in the int pointed to by the argument.

o	An octal integer read from the input stream is placed in the unsigned int pointed to by the argument.

u	A decimal integer read from the input stream is placed in the unsigned int pointed to by the argument.

x	A hexadecimal integer read from the input stream is placed in the unsigned int pointed to by the argument.

e,f,g	A floating point number read from the input stream is placed in the float pointed to by the argument. The number may be in Scientific (standard) form.

s	A sequence of non-white-space characters see <isspace>) are placed in the character array pointed to by the argument. A terminating null character is added automatically.

c	A sequence of characters of length specified in the <field width=>sf_fw_> (1 if no field width given) is placed in the character array pointed to by the argument. No null character is added.

p	A pointer value in an compiler-defined format is placed in the void * pointer to by the argument (the argument is a void�**). This is not very useful!

n	The number of characters read so far is placed in the int pointed to by the argument.

[...]	A sequence of those characters specified inside the brackets. If the first character specified is a caret ('^') then sequence must contain only the characters NOT contained inside the brackets. If the character ']' is required as once of the specified characters it must be the first one ie use []...] or [^]...].DATA�Format String Field Width
This is a decimal integer which gives the maximum input field width. Only this many characters will be accepted from the input.DATA�Format String Length Modifier
One of the following:

h	For d, i, n, o, u, or x conversion specifies that the argument is a pointer to a short int.

l	For d, i, n, o, u, or x conversion specifies that the argument is a pointer to a long int.
	For e, f, or g conversion specifies that the argument is a pointer to a double.

L	For e, f, or g conversion specifies that the argument is a pointer to a long double.DATA�Format String '*'
The optional '*' character indicates that the current conversion should take place but the result should not be placed in the variable specified by the argument.DIR$DD��F���)�"�MAXl�F������"�MINDATA�SHRT_MAX
This macro is defined in <limits.h> and represents the maximum value which can be stored in a short int. In Easy C it is defined as 0x7fffffff (2147483647).DATA�SHRT_MIN
This macro is defined in <limits.h> and represents the minimum value which can be stored in a short int. In Easy C it is defined as 0x80000000 (-2147483648).DATAZSIGABRT
This macro is defined in <signal.h=>signal>. In Easy C it is defined as 1.DATAYSIGFPE
This macro is defined in <signal.h=>signal>. In Easy C it is defined as 2.DATAYSIGILL
This macro is defined in <signal.h=>signal>. In Easy C it is defined as 3.DATAYSIGINT
This macro is defined in <signal.h=>signal>. In Easy C it is defined as 4.DATA�signal.h
The \<signal.h> header declares functions, macros and one type for handling signals.

Functions:

#Indent 4
#Table 3 27
<__default_signal_handler>
<__error_signal_marker>
<__ignore_signal_handler>
<signal=>signal_>
<raise>
#EndTable
#Indent 0

Type:

#indent 4
<sig_atomic_t>
#indent

Macros:

#Table 2 9
<SIG_DFL>
<SIG_ERR>
<SIG_IGN>
<SIGABRT>
<SIGFPE>
<SIGILL>
<SIGINT>
<SIGSEGV>
<SIGTERM>
<SIGSTAK>
#EndTableDIR$,,d�F���&7�"�!RootDATA�signal
Syntax:	void (*signal(int sig, void (*func)(int)))(int);
Header:	<signal.h=>signal>

Returns:	/func/ of most recent call.

This function sets that any future occurrences of the signal /sig/ will use the signal handler /func/.DATAZSIGSEGV
This macro is defined in <signal.h=>signal>. In Easy C it is defined as 5.DATAZSIGSTAK
This macro is defined in <signal.h=>signal>. In Easy C it is defined as 7.DATAZSIGTERM
This macro is defined in <signal.h=>signal>. In Easy C it is defined as 6.DIR$���F����@�"eatomic_tT�F����Q�"�DFL��F���]�"�ERR��F���ee�"�IGNDATAesig_atomic_t
This type is defined in <signal.h=>signal>. In Easy C it is defined as an /int/.DATA�SIG_DFL
This macro is defined in <signal.h=>signal>. It is defined to be a pointer to the default signal handler ie {/}&<__default_signal_handler>{/}.DATA�SIG_ERR
This macro is defined in <signal.h=>signal>. It is defined to be a pointer to the error signal handler ie {/}&<__error_signal_marker>{/}.DATA�SIG_IGN
This macro is defined in <signal.h=>signal>. It is defined to be a pointer to the ignore signal handler ie {/}&<__ignore_signal_handler>{/}.DATA�sin
Syntax:	double sin (double x);
Header:	<math.h=>math>

Returns:	The sine of x in radians.

This function calculates the principal value of the sine of x.DATA�sinh
Syntax:	double sinh (double x);
Header:	<math.h=>math>

Returns:	The hyperbolic sine of x in radians.

This function calculates the hyperbolic sine of x. An error occurs if x is too big.DATA
sizeof
This is (the only?) built in function of C. It tells you the size in bytes of something, this can be a specific <variable=>c_var_> or a <type=>c_types_>. eg:

    sizeof(int)	/* Equals 4 */
    sizeof(a.b)	/* Depends */
    sizeof(char)	/* Equals 1 */DIR$((��F������"�tDATA�size_t
The type {/}size_t{/} is defined in <stdio.h=>stdio>, <stdlib.h=>stdlib>, <stddef.h=>stddef>, and <string.h=>string>, and is used for several functions to indicate the size of things. It is defined in Easy C as an /unsigned int/.DATADeskLib:Slider.h
Version: 1.00 (12 Mar 1994)
#line
This header declares functions for easy handling of slider icons. These are better than those found in <DeskLib:Icon.h=>Icon>.

Functions:

#Indent 10
#Table 2 20
<Slider_Redraw>
<Slider_ReadValue>
<Slider_SetValue>
<Slider_Drag>
#EndTable
#Indent 0

Type:

{align centre}<slider_info>

The slider functions need <screen_delta> to be kept up to date. <Handler_ModeChange> should be called on a mode change, with <Screen_CacheModeInfo> called at the start of your program.DIR$����F���0�e%�DragL�F����e%{info��F���-qe%+ReadValue��F���;he%lRedraw`�F���.e%+SetValueDATA�Slider_Drag
Syntax:	<os_error> *Slider_Drag (<slider_info> *slider, <BOOL> *closed, int *value, void *ref);
Header:	<DeskLib:Slider.h=>Slider>

Returns:	Pointer to error, or <NULL> if none.

This function starts dragging the specified slider and should be called when the user clicks on the slider. It returns when dragging stops, the update function tell it to, or the window is closed. It multitasks by calling <Event_Process>. The update function will be called (with {/}ref{/}) if the value changes.

If /closed/ is not NULL then {/}*closed{/} is set to TRUE if the window is  closed while dragging. If /value/ is not NULL then {/}*value{/} is set to the slider value in user units on exit.DATA{slider_info
This structure is defined in <DeskLib:Slider.h=>Slider> and contains full information about a slider which DeskLib is to handle.

\{
  <window_handle> window;
  <icon_handle>   icon;

  int value;   /* Internal slider position */

  struct
  \{ int         min;
    int         max;
  } limits;    /* Values returned by slider */

  struct
  \{ int foreground;
    int background;
  } colour;    /* Colours of slider */

  struct
  \{ int x;
    int y;
  } border;    /* Border size */

  struct
  \{ <sprite_areainfo> *spritearea; /* <NULL> */
    <sprite_header>   *sprite;
  } knob;      /* Not currently used */

  struct
  \{ int  vertical  :1;  /* Orientation */
    int  rgb       :1;  /* Colours are RGB */
    int  dragging  :1;  /* Currently dragging */
    int  clickstop :1;  /* Drag whole units */
    int  reserved  :28; /* Zero */
  } flags;

  int ( *update )( void *, void * );
  int reference;        /* Whatever you like */
}

If /clickstop/ is set that means that the slider is only redrawn when its value in user units (ie between /limits/) changes. Otherwise, it can be dragged a pixel at a time.

/update/ is a function called whenever the slider value in user units changes. Its first argument is a pointer to the slider_info structure. The second argument is passed through from <Slider_SetValue> or <Slider_Drag>. It should return non-zero to stop the drag.DATA+Slider_ReadValue
Syntax:	int Slider_ReadValue (<slider_info> *slider);
Header:	<DeskLib:Slider.h=>Slider>

Returns:	Slider value in user units.

This function reads the position of the specified slider, converted into user units between {/}slider->limits.min{/} and {/}slider->limits.max{/}.DATAlSlider_Redraw
Syntax:	<os_error> *Slider_Redraw (<slider_info> *slider, <wimp_rect> *clip);
Header:	<DeskLib:Slider.h=>Slider>

Returns:	Pointer to error, or <NULL> if none.

This function redraws a slider icon. /slider/ contains the slider info and /clip/ contains the area of screen being redrawn (in OS coords). Call this function from your redraw loop.DATA+Slider_SetValue
Syntax:	<os_error> *Slider_SetValue (<slider_info> *slider, int value, int *valueset, void *ref);
Header:	<DeskLib:Slider.h=>Slider>

Returns:	Pointer to error, or <NULL> if none.

This function sets /slider/ to /value/ (in user units). If the slider is currently being dragged, then the function does nothing. The update function will be called (with /ref/) if the value has changed. If /value/ is outside the limits then it will be clamped to them. If /valueset/ is not <NULL> then it the actual value set will be returned in it.DIR$��F���	"�"Varith_��F���H��"�data_��F���ho�"oenv_T�F�����"�mbchar_4�F������"Xmbstr_��F���Cb�"Qmem_��F���D�"�rand_��F���t�"tstrconv_DATAVArithmetic Functions
#Indent 8
#Table 2 10
<abs>
<div>
<labs>
<ldiv>
#EndTableDATA�Data Processing Functions
These functions work on arrays of objects whose size is given. They both require an external function (defined by you) which handles comparing the objects.

#Indent 7
#Table 1
<bsearch>
<qsort>
#EndTableDATAoEnvironment Management Functions
#Indent 4
#Table 1
<abort>
<atexit>
<exit>
<getenv>
<system>
#EndTableDATA�Multibyte Character Functions
#indent 13
#Table 1 10
<mblen>
<mbtowc>
<wctomb>
#EndTable
#indent 0

The behaviour of the multibyte character functions is affected by the <LC_CTYPE> category of the current locale. For a state-dependent encoding, each function is placed into its initial state by a call for which its character pointer argument, /s/, is a null pointer. Subsequent calls with /s/ as other than a null pointer cause the internal state of the function to be altered as necessary. A call with /s/ as a null pointer causes these functions to return a non-zero value if encoding have state dependency, and a zero otherwise. After the <LC_CTYPE> category is changed, the shift state of these functions is indeterminate.DATAXMultibyte String Functions
#indent 6
#Table 1 12
<mbstowcs>
<wcstombs>
#EndTableDATAQMemory Management Functions
The following functions are used for allocating storage space for data. The functions can be cast to return any type of pointer. No checking is done when storing data in the space so make sure you only store data in allocated space!

#Indent 11
#Table 2 15
<calloc>
<free>
<malloc>
<realloc>
#EndTableDATA�Random Number Functions
These functions are concerned with generating
psuedo-random sequences of values.

#Indent 6
#Table 1 15
<rand>
<srand>
#EndTableDATAtString Conversion Functions
#Indent 6
#Table 3 12
<atof>
<atoi>
<atol>
<strtod>
<strtol>
<strtoul>
#EndTableDATA�DeskLib:Sound.h
Version: 0.01 (28 Mar 1993)
#line
This header declares just one function:

{align centre}<Sound_SysBeep>DIR$LL��F�����"�pitch_|�F���\��%�SysBeepDATA�Pitch Values
Octave	0	1	2	3	4	5	6	7	8
Note

A	 	0x0C00	0x1C00	0x2C00	0x3C00	0x4C00	0x5C00	0x6C00	0x7C00
	 	 	 	 	0x29	0x59	0x89	0xB9	0xE9
A#	 	0x0D55	0x1D55	0x2D55	0x3D55	0x4D55	0x5D55	0x6D55	0x7D55
	 	 	 	 	0x2D	0x5D	0x8D	0xBD	0xED
B	 	0x0EAA	0x1EAA	0x2EAA	0x3EAA	0x4EAA	0x5EAA	0x6EAA	0x7EAA
	 	 	 	0x01	0x31	0x61	0x91	0xC1	0xF1
C	 	0x1000	0x2000	0x3000	0x4000	0x5000	0x6000	0x7000
	 	 	 	0x05	0x35	0x65	0x95	0xC5	0xF5
C#	0x0155	0x1155	0x2155	0x3155	0x4155	0x5155	0x6155	0x7155
	 	 	 	0x09	0x39	0x69	0x99	0xC9	0xF9
D	0x02AA	0x12AA	0x22AA	0x32AA	0x42AA	0x52AA	0x62AA	0x72AA
	 	 	 	0x0D	0x3D	0x6D	0x9D	0xCD	0xFD
D#	0x0400	0x1400	0x2400	0x3400	0x4400	0x5400	0x6400	0x7400
	 	 	 	0x11	0x41	0x71	0xA1	0xD1
E	0x0555	0x1555	0x2555	0x3555	0x4555	0x5555	0x6555	0x7555
	 	 	 	0x15	0x45	0x75	0xA5	0xD5
F	0x06AA	0x16AA	0x26AA	0x36AA	0x46AA	0x56AA	0x66AA	0x76AA
	 	 	 	0x19	0x49	0x79	0xA9	0xD9
F#	0x0800	0x1800	0x2800	0x3800	0x4800	0x5800	0x6800	0x7800
	 	 	 	0x1D	0x4D	0x7D	0xAD	0xDD
G	0x0955	0x1955	0x2955	0x3955	0x4955	0x5955	0x6955	0x7955
	 	 	 	0x21	0x51	0x81	0xB1	0xE1
G#	0x0AAA	0x1AAA	0x2AAA	0x3AAA	0x4AAA	0x5AAA	0x6AAA	0x7AAA
	 	 	 	0x25	0x55	0x85	0xB5	0xE5

Middle C is the C in octave 4 (0x4000 or 0x35).DATA�Sound_SysBeep
Syntax:	void Sound_SysBeep (void);
Header:	<DeskLib:Sound.h=>Sound>

This function sounds the system beep (VDU 7).DATAHSplitPathname
Syntax:	void SplitPathname (char *path,
         char *dir, char *leaf);
Header:	<TimsLib:Lib.h=>Lib>

This function splits the pathname in /path/ into directory name and leaf name and stores them in /dir/ and /leaf/ respectively. Either /dir/ or /leaf/ may be <NULL>, in which case that part is discarded.DATA�sprintf
Syntax:	int sprintf (char *out, char *format, ...);
Header:	<stdio.h=>stdio>

Returns:	The number of characters written.

This function writes output into the string pointed to by /out/ under control of the <format string=>pform_>.

In operation it is similar to <fprintf>, but output is directed to a string instead of to a stream. The terminating null byte is added automatically.DATA�sprite
This type is defined in <DeskLib:Sprite.h=>Sprite_DL>. It is defined as a pointer to type {/}struct <sprite_info>{/}.DATA�spritemem_flags
This enumerated type is defined in <DeskLib:Sprite.h=>Sprite_DL>. It contains details of what type of sprite you want.
{wrap off}
\{
  sprite_HASNOMASKPAL	= 0x00,	/* Sprite has no mask or palette */
  sprite_HASNOPALMASK	= 0x00,
  sprite_HASMASK	= 0x01,	/* Sprite has a mask only        */
  sprite_HASPAL		= 0x02,	/* Sprite has a palette only     */
  sprite_HASMASKPAL	= 0x03,	/* Has both mask and palette     */
  sprite_HASPALMASK	= 0x03
}DIR$LL��F����1�%�SYSTEMX�F���s6�%�WIMPDATA�spritepool_SYSTEM
This macro is defined in <DeskLib:Sprite.h=>Sprite_DL>. When a sprite area is required, this can be used to access the System sprite area. PLEASE DO NOT USE SYSTEM SPRITES. PLEASE.

PLEASE.DATA�spritepool_WIMP
This macro is defined in <DeskLib:Sprite.h=>Sprite_DL>. When a sprite area is required, this can be used to access the Wimp sprite area. It is defined as 1.DIR$���F���X��$�!RootX	F����W�%�Append	F���(��$5areaH	F������$;area_�	F�����$�area_load 	F����$area_merge8		F�����$9area_reinitt
	F����%�$Qarea_save�	F���O�%	areainfo�	F���hD�$}boxT
	F���5�$�change_size	F���M*�$�colour�	F�����$copy�	F���XF�%�Copy_h	F����|�$�create	F����%�%�Create_	F������$Ecreate_maskP	F���8��$�create_rp 	F����%�%�CreateMask	F���De�%wCreatePalette�	F�����$hdelete�	F���C,�%#Delete_	F������$�delete_row� 	F���1��%�DeleteColumn$"	F���@3�%�DeleteRow�#	F���{^�%�DL�)	F���(��$�factors*	F�����$=flip_x\+	F�����$=flip_y�,	F����D�%=FlipX�-	F������%=FlipY/	F����C�$,getH1	F���eq�%Get_L3	F����`�$get_given\5	F���/o�$�get_given_rp<7	F����O�$�get_rp�8	F����6�$�getnamep;	F���� �%}GetName_�<	F���=��$ZhL?	F������$oheader�A	F���~)�%
IconMemorySize�C	F�����$�id��F�����T6�info8F	F���S�%�InitArea4G	F������$�insert_row�H	F���+*�%�InsertRow\J	F����%gLoad�K	F�����%7LoadFile�L	F���b��$�mainarea�M	F���'0�$�maskstatepN	F����.�%�MAXNAMEO	F�����%�MemorySizeQ	F�����%�Merge�R	F����\�%�outputstate�S	F����9�$*outputtomaskU	F���0>�$	outputtoscreenV	F���
4�$)outputtosprite<W	F���J��$�palflagX	F���4:�$�pgm�X	F�����$�pixtranspY	F������%�PlotP[	F�����%�PlotGrey0^	F������%0PlotMask``	F������%PlotMaskScaledpb	F������%]PlotScaled�d	F���J��$�ptrpe	F���Y�$�putLg	F����#�$�put_given(i	F���/z�$put_maskDk	F��� ��$0put_mask_pgmtl	F���z��$Dput_mask_trans�m	F���B��$3put_pgm�n	F���C8�$,put_scaledr	F������$Hput_trans`s	F�����%�ReadControlLu	F�����%�ReadInfo�v	F���=�$�readmasklx	F������%1ReadMask_�y	F����	�$�readpixelD{	F���As�%�ReadPixel_<|	F���)�%JReadSaveAreaSize�}	F������$Freadsize�~	F������%Redirect܁	F����6�%.remove_mask�	F���m�%&RemovePalette4�	F���7U�$-removewastaged�	F�����$�renameL�	F���!9�%�Rename_�	F����-�$�restorestate��	F���y�$�ro3_Ċ	F�����%Save܋	F����d�%�scalefactors��	F������$@screenload��	F�����%�ScreenLoad_|�	F�����$8screensave��	F���޳%�ScreenSave_l�	F���J��$�select�	F������$zselect_rpp�	F������$Wsimple_ȕ	F���LD�$sizeof_screencontext�	F���L�$Asizeof_spritecontext(�	F����4�$ustate��	F���_@�$rtransmat�	F���_�$�type�	F�����%6UnRedirectH�	F�����%�WimpPlot0�	F����&�$�writemaskȞ	F���ܐ�%YWriteMask_$�	F�����$�writepixel��	F����|�%dWritePixel_�	F������$aarea_initialise��	F������$garea_readinfo�	F���Fm�$�put_greyscaled�	F���H��$put_mask_given��	F���&��$!put_mask_scaled �	F���ө�$�put_char_scaled�	F���n��$�insert_columnа	F������$�delete_column`�	F����f%_LoadFiles��	F�����%�RemoveMask��	F������%�InsertColumnDATA�sprite.h Sprite Functions
These functions operate on sprites in the system or a user area, and can access the sprites either by name or by a pointer to the sprite.

#indent 4
#Table columns 2
<sprite_select>
<sprite_select_rp>
<sprite_delete>
<sprite_rename>
<sprite_copy>
<sprite_put>
<sprite_put_given>
<sprite_put_scaled>
<sprite_put_greyscaled>
<sprite_put_mask>
<sprite_put_mask_given>
<sprite_put_mask_scaled>
<sprite_put_char_scaled>
<sprite_create_mask>
<sprite_remove_mask>
<sprite_insert_row>
<sprite_delete_row>
<sprite_insert_column>
<sprite_delete_column>
<sprite_flip_x>
<sprite_flip_y>
<sprite_readsize>
<sprite_readpixel>
<sprite_writepixel>
<sprite_readmask>
<sprite_writemask>
<sprite_restorestate>
<sprite_outputtosprite>
<sprite_outputtomask>
<sprite_outputtoscreen>
<sprite_sizeof_spritecontext>
<sprite_sizeof_screencontext>
<sprite_removewastage>
<sprite_change_size>
#EndTableDATA�Sprite_Append
Syntax:	<os_error> *Sprite_Append (<sprite_area> area, char *name1, char *name2, int dir);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function joins two sprites together. {/}name2{/} is deleted and joined onto {/}name1{/}. If /dir/ is 0 they are joined horizontally and must have the same height, if /dir/ is 1 they are joined vertically and must have the same width.DATA5sprite_area
This type is defined in <sprite.h=>sprite_h> (Desktop C) and <DeskLib:Sprite.h=>Sprite_DL>. It is defined as the following structure in Desktop C:

  \{
    int size;
    int number;
    int sproff;
    int freeoff;
  }

and in DeskLib it is defined as a pointer to type <sprite_areainfo>.DATA;sprite.h Sprite Area Functions
#table columns 2
<sprite_area_initialise>
<sprite_area_readinfo>
<sprite_area_reinit>
<sprite_area_load>
<sprite_area_merge>
<sprite_area_save>
<sprite_getname>
<sprite_get>
<sprite_get_rp>
<sprite_get_given>
<sprite_get_given_rp>
<sprite_create >
<sprite_create_rp>
#endtableDATA�sprite_area_load
Syntax:	<os_error> *sprite_area_load (<sprite_area> *area, char *filename);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function loads all the sprites in the specified file into the sprite area whose pointer is given. Any sprites already in the area are deleted. It is equivalent to {*}OS_SpriteOp{*} 10, or *SLoad when used with the system area.DATAsprite_area_merge
Syntax:	<os_error> *sprite_area_merge (<sprite_area> *area, char *filename);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function loads all the sprites in the specified file into the sprite area whose pointer is given. The sprites are added to any sprites already in the area. If any new sprites have the same name as existing sprites, the old ones are deleted. This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 11 or *SMerge when used with the system area.DATA9sprite_area_reinit
Syntax:	<os_error> *sprite_area_reinit (<sprite_area> *area);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function re-initialises the sprite area. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 9, or *SNew when used with the system sprite area.DATAQsprite_area_save
Syntax:	<os_error> *sprite_area_save (<sprite_area> *area, char *filename);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function saves all the sprites in a sprite area to a file. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 12 or *SSave when used with the system area.DATA	sprite_areainfo
This type is defined in <DeskLib:Sprite.h=>Sprite_DL>. It is defined as the following structure:

    \{
        unsigned int areasize;
        unsigned int numsprites;
        unsigned int firstoffset;
        unsigned int freeoffset;
    }DATA}sprite_box
This type is defined in <sprite.h=>sprite_h> as the following structure:

  \{
    int x0, y0, x1, y1;
  }DATA�sprite_change_size
Syntax:	<os_error> *sprite_change_size (<sprite_area> *area, <sprite_id> *spr, <BOOL> rows, int at, int number);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function removes or inserts rows or columns. /rows/ determines whether this operates on rows or columns. If /number/ is -ve then rows/columns are deleted. This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp>s 57 and 58.DATA�sprite_colour
This type is defined in <sprite.h=>sprite_h> as the following structure:

  \{
    int colour;
    int tint;
  }DATAsprite_copy
Syntax:	<os_error> *sprite_copy (<sprite_area> *area, <sprite_id> *spr, char *name);
Header:	<sprite.h=>sprite>

Returns:	Pointer to error, or <NULL> if none.

This function creates an exact copy of the sprite whose ID is given by /spr/, in the specified sprite area. The new sprite's name is taken from the string pointed to by /name/. If a sprite of that name already exists, an error is returned. It is identical to <OS_SpriteOp=>SWI:OS_SpriteOp> 27, or *SCopy if used with the system sprite area.DATA�Sprite_Copy
Syntax:	<os_error> *Sprite_Copy (<sprite_area> area, char *old, char *new);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function creates an exact copy of the sprite in the given area whose name is given in /old/ so that its new name is that given in /new/. An error is returned if a sprite of the new name already exists. It is identical to SWI <OS_SpriteOp=>SWI:OS_SpriteOp> 27.DATA�sprite_create
Syntax:	<os_error> *sprite_create (<sprite_area> *area, char *name, <sprite_palflag> x, int w, int h, int m);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function creates a new, blank, sprite with the given name in the sprite area specified. The width and height of the sprite in pixels are given by /w/ and /h/ respectively. The screen mode of the sprite is given in /m/.DATA�Sprite_Create
Syntax:	<os_error> *Sprite_Create (<sprite_area> area, char *name, int palflag, int w, int h, int mode);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function creates a new, blank, sprite with the given name in the sprite area specified. The width and height of the sprite in pixels are given by /w/ and /h/ respectively. The screen mode of the sprite is given in /mode/. The sprite will have a palette if /palflag/ is <TRUE>.DATAEsprite_create_mask
Syntax:	<os_error> *sprite_create_mask (<sprite_area> *area, <sprite_id> *spr);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function creates a mask for the specified sprite with all pixels set to be solid. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 29.DATA�sprite_create_rp
Syntax:	<os_error> *sprite_create_rp (<sprite_area> *area, char *name, <sprite_palflag> x, int w, int h, int m, <sprite_ptr> *addr);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function creates a new, blank, sprite with the given name in the sprite area specified.

It is identical to the function <sprite_create>, but returns the address of the sprite in the {/}sprite_ptr{/} pointed to by /addr/.DATA�Sprite_CreateMask
Syntax:	<os_error> *Sprite_CreateMask (<sprite_area> area, char *name);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function creates a mask for the given sprite.DATAwSprite_CreatePalette
Syntax:	int Sprite_CreatePalette (<sprite_area> area, char *name, <BOOL> big);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function creates a palette for the given sprite. If /big/ is true then a 256 entry palette is created (RISC OS 3 only). This is equivalent to <OS_SpriteOp=>SWI:OS_Spriteop> 37.DATAhsprite_delete
Syntax:	<os_error> *sprite_delete (<sprite_area> *area, <sprite_id> *spr);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function deletes the sprite whose ID is given in /spr/, in the area specified. It is identical to <OS_SpriteOp=>SWI:OS_SpriteOp> 25, or *SDelete if used with the system sprite area.DATA#Sprite_Delete
Syntax:	<os_error> *Sprite_Delete (<sprite_area> area, char *name);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function deletes the sprite whose name is given, in the area specified. It is identical to SWI OS_SpriteOp 25.DATA�sprite_delete_row
Syntax:	<os_error> *sprite_delete_row (<sprite_area> *area, <sprite_id> *spr, int row);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function deletes a row in the sprite at the position identified (the bottom row is row 0), shifting all rows above it (if any) down one. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 32.DATA�Sprite_DeleteColumn
Syntax:	<os_error> *Sprite_DeleteColumn (<sprite_area> area, char *name, int pos);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function deletes a column in the sprite at the position identified (the left column is row 0), shifting all rows after it (if any) left one. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 46.DATA�Sprite_DeleteRow
Syntax:	<os_error> *Sprite_DeleteRow (<sprite_area> area, char *name, int pos);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function deletes a row in the sprite at the position identified (the bottom row is row 0), shifting all rows above it (if any) down one. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 32.DATA�DeskLib:Sprite.h
Version: 0.28 (22 Oct 1994)
#line
This library declares functions and types for simple handling of sprites. Functions only operate on named sprites in a user sprite area.

Functions:

#table columns 3
<Sprite_ScreenSave=>Sprite_ScreenSave_>
<Sprite_ScreenLoad=>Sprite_ScreenLoad_>
<Sprite_InitArea>
<Sprite_Load>
<Sprite_LoadFile>
<Sprite_LoadFiles>
<Sprite_Merge>
<Sprite_Save>
<Sprite_Create=>Sprite_Create_>
<Sprite_Delete=>Sprite_Delete_>
<Sprite_Rename=>Sprite_Rename_>
<Sprite_Copy=>Sprite_Copy_>
<Sprite_Get=>Sprite_Get_>
<Sprite_Plot>
<Sprite_ReadInfo>
<Sprite_Redirect>
<Sprite_UnRedirect>
<Sprite_ReadSaveAreaSize>
<Sprite_ReadControl>
<Sprite_GetName=>Sprite_GetName_>
<Sprite_CreateMask>
<Sprite_RemoveMask>
<Sprite_InsertRow>
<Sprite_DeleteRow>
<Sprite_FlipX>
<Sprite_Append>
<Sprite_CreatePalette>
<Sprite_RemovePalette>
<Sprite_ReadPixel=>Sprite_ReadPixel_>
<Sprite_WritePixel=>Sprite_WritePixel_>
<Sprite_ReadMask=>Sprite_ReadMask_>
<Sprite_WriteMask=>Sprite_WriteMask_>
<Sprite_InsertColumn>
<Sprite_DeleteColumn>
<Sprite_FlipY>
<Sprite_PlotMask>
<Sprite_PlotMaskScaled>
<Sprite_PlotScaled>
<Sprite_PlotGrey>
<Sprite_WimpPlot>
<Sprite_MemorySize>
<Sprite_IconMemorySize>
#endtable

Macros:

#indent 4
#Table 1 24
<sprite_MAXNAME>
<spritepool_SYSTEM>
<spritepool_WIMP>
#EndTable
#indent

Types:

#indent 7
#Table 3 24
<sprite>
<sprite_area>
<sprite_areainfo>
<sprite_header>
<sprite_info>
<sprite_outputstate>
<spritemem_flags>
<sprite_scalefactors>
#EndTableDATA�sprite_factors
This type is defined in <sprite.h=>sprite_h>. It is a structure containing scale factors:

  \{
    int xmag,ymag,xdiv,ydiv;
  }DATA=sprite_flip_x
Syntax:	<os_error> *sprite_flip_x (<sprite_area> *area, <sprite_id> *spr);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function flips the specified sprite about the x axis, ie reverses it top-to-bottom. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 33.DATA=sprite_flip_y
Syntax:	<os_error> *sprite_flip_y (<sprite_area> *area, <sprite_id> *spr);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function flips the specified sprite about the y axis, ie reverses it left-to-right. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 47.DATA=Sprite_FlipX
Syntax:	<os_error> *Sprite_FlipX (<sprite_area> area, char *name);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function flips the specified sprite about the X axis, ie reverses it top-to-bottom. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 33.DATA=Sprite_FlipY
Syntax:	<os_error> *Sprite_FlipY (<sprite_area> area, char *name);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function flips the specified sprite about the Y axis, ie reverses it left-to-right. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 47.DATA,sprite_get
Syntax:	<os_error> *sprite_get (<sprite_area> *area, char *name, <sprite_palflag> x);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function creates a new sprite with the name given, in the sprite area specified. Whether the palette is included depends on /x/. The contents of the sprite are taken from the screen rectangle delimited by the current and previous graphics cursor positions.

This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 14, or *SGet if used with the system sprite area.DATASprite_Get
Syntax:	<os_error> *Sprite_Get (<sprite_area> area, char *name, int palflag, int xlo, int ylo, int xhi, int yhi);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function creates a new sprite with the name given, in the sprite area specified. Whether the palette is included depends on /palflag/. The contents of the sprite are taken from the screen rectangle delimited by /xlo/ - /yhi/.

This function is equivalent to <OS_SpriteOp=>SWI:OS_Spriteop> 16.DATAsprite_get_given
Syntax:	<os_error> *sprite_get_given (<sprite_area> *area, char *name, <sprite_palflag> palflag, int xlo, int ylo, int xhi, int yhi);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function creates a new sprite with the name given, in the sprite area specified. Whether the palette is included depends on /x/. The contents of the sprite are taken from the screen rectangle delimited by {/}xlo-yhi{/}.

This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 16.DATA�sprite_get_given_rp
Syntax:	<os_error> *sprite_get_given_rp (<sprite_area> *area, char *name, <sprite_palflag> x, int xlo, int ylo, int xhi, int yhi, <sprite_ptr> *addr);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function creates a new sprite with the name given, in the sprite area specified.

It is identical to the function <sprite_get_given>, but returns the address of the sprite in the {/}sprite_ptr{/} pointed to by /addr/.DATA�sprite_get_rp
Syntax:	<os_error> *sprite_get_rp (<sprite_area> *area, char *name, <sprite_palflag> x, <sprite_ptr> *addr);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function creates a new sprite with the name given, in the sprite area specified.

It is identical to the function <sprite_get>, but returns the address of the sprite in the /sprite_ptr/ pointed to by /addr/.DATA�sprite_getname
Syntax:	<os_error> *sprite_getname (<sprite_area> *area, void *buffer, int *length, int index);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

See also the DeskLib function, <Sprite_GetName=>Sprite_GetName_>.

This function returns the name of the sprite whose position in the specified sprite area is given by /index/ (numbered from 1).

The name is placed in the area pointed to by /buffer/. On entry the integer pointed to by /length/ should contain the length of this buffer. On exit, it will contain the length of the name read.

This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 13.DATA}Sprite_GetName
Syntax:	int Sprite_GetName (<sprite_area> area, char *name, int n);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Length of name.

This function reads the name of a sprite in a given area. The sprite's number must be given, the first sprite being 1 and the name is returned in the buffer pointer to by /name/, which should be <sprite_MAXNAME>+1 bytes long.DATAZsprite.h
The \<sprite.h> header declares quite a few functions for handling sprites.

Functions:

#indent 7
#Table 2 24
<Simple Functions=>sprite_simple_>
<Sprite Area Functions=>sprite_area_>
<Sprite Functions=>sprite_>
<RISC OS 3 Functions=>sprite_ro3_>
#EndTable
#indent

Macros:

#indent 7
<sprite_mainarea>
#indent

Types:

#indent 7
#Table columns 3
<sprite_palflag>
<sprite_factors>
<sprite_pixtrans>
<sprite_area>
<sprite_header>
<sprite_ptr>
<sprite_type>
<sprite_id>
<sprite_info>
<sprite_colour>
<sprite_maskstate>
<sprite_state>
<sprite_pgm>
<sprite_transmat>
<sprite_box>
#endtableDATAosprite_header
This type is defined in <sprite.h=>sprite_h> (Desktop C) and <DeskLib:Sprite.h=>Sprite_DL>. It is defined as the following structure in Desktop C:

    \{
        int	next;
        char	name[12];
        int	width;
        int	height;
        int	lbit;
        int	rbit;
        int	image;
        int	mask;
        int	mode;
    }

and in DeskLib it is defined as:
{tab}
    \{
        int	offset_next;
        char	name[<sprite_MAXNAME>];
        int	width;
        int	height;
        int	leftbit;
        int	rightbit;
        int	imageoffset;
        int	maskoffset;
        int	screenmode;
    }DATA
Sprite_IconMemorySize
Syntax:	int Sprite_IconMemorySize (<window_block> *win, <icon_handle> icon, int m, <spritemem_flags> flags, <wimp_point> *size);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Size in bytes.

This function takes a window definition /win/, an icon number /icon/, a screen mode /m/ and some flags /flags/, puts them in the Magimix and finds how much memory is needed for a sprite the same size as that icon in that mode with those flags. If /size/ is not <NULL>, it'll tell you the icon size too!DATA�sprite_id
This is a type defined in <sprite.h=>sprite_h> as the following structure:

  \{
  	union
  	\{
  	 	char *	name;
  	 	<sprite_ptr>	addr;
  	} s;
  	 <sprite_type> tag;
  }FREE���te_info
This type is defined in <sprite.h=>sprite_h> (Desktop C) and <DeskLib:Sprite.h=>Sprite_DL>. It is defined as the following structure in Desktop C:

    \{
        int width;
        int hDATA�L_tmpnam
#Parent stdio
The macro L_tmpnam is defined in <stdio.h=>stdio> as the length of the longest filename that will be used by the function <tmpnam>. In Easy C it is defined as the same as <FILENAME_MAX>.  }DATA�Sprite_InitArea
Syntax:	<os_error> *Sprite_InitArea (<sprite_area> area);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function initialises the sprite area. It is equivalent to SWI OS_SpriteOp 9.DATA�sprite_insert_row
Syntax:	<os_error> *sprite_insert_row (<sprite_area> *area, <sprite_id> *spr, int row);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function inserts a row in the given sprite and the position identified, shifting all rows above it (if any) up one. Row 0 is at the bottom. This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 31.DATA�Sprite_InsertRow
Syntax:	<os_error> *Sprite_InsertRow (<sprite_area> area, char *name, int pos);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function inserts a row in the given sprite and the position identified, shifting all rows above it (if any) up one. Row 0 is at the bottom. This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 31.DATAgSprite_Load
Syntax:	<os_error> *Sprite_Load (<sprite_area> area, char *filename);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function loads all the sprites in the specified file into the sprite area whose pointer is given. Any sprites already in the area are deleted. It is equivalent to OS_SpriteOp 10.DATA7Sprite_LoadFile
Syntax:	<sprite_area> Sprite_LoadFile (char *filename);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to sprite area created.

This function allocates space for a sprite area with <malloc>, initialises it and load the specified file into it. The easy way to load a sprite file.DATA�sprite_mainarea
This macro is defined in <sprite.h=>sprite_h>. It can be used as a sprite area pointer to indicate the system sprite area. It is defined as:

{fCode;align centre}((sprite_area *) 0)DATA�sprite_maskstate
This enumerated type is defined in <sprite.h=>sprite> as follows:

   \{
     sprite_masktransparent	= 0,
     sprite_masksolid	= 1
   }DATA�sprite_MAXNAME
This macro is defined in <DeskLib:Sprite.h=>Sprite_DL> as a value representing the longest sprite name which can be used. It is defined as 12.DATA�Sprite_MemorySize
Syntax:	int Sprite_MemorySize (int w, int h, int m, <spritemem_flags> flags);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Size in bytes.

This function calculates the amount of memory needed to hold the sprite whose width, height and mode are specified (in {/}w{/}, {/}h{/} and {/}m{/}). The status of the mask and palette are determined by the /flags/.

Remember that for a sprite area, you need to find the sizes of all the sprites and add sizeof(<sprite_areainfo>).DATA�Sprite_Merge
Syntax:	<os_error> *Sprite_Merge (<sprite_area> area, char *filename);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function loads all the sprites in the specified file into the sprite area whose pointer is given. The sprites are added to any sprites already in the area. If any new sprites have the same name as existing sprites, the old ones are deleted. This function is equivalent to OS_SpriteOp 11.DATA�sprite_outputstate
This type is defined in <DeskLib:Sprite.h=>Sprite_DL>. It is defined as the following structure:

    \{
        int		callno;
        <sprite_area>	spritearea;
        <sprite>	sprite;
        void		*savearea;
    }DATA*sprite_outputtomask
Syntax:	<os_error> *sprite_outputtomask (<sprite_area> *area, <sprite_id> *spr, int *savearea, <sprite_state> *state);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function redirects VDU output to a sprite mask, saving the old state.DATA	sprite_outputtoscreen
Syntax:	<os_error> *sprite_outputtoscreen (int *savearea, <sprite_state> *state);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function redirects VDU output back to the screen, saving the old state.DATA)sprite_outputtosprite
Syntax:	<os_error> *sprite_outputtosprite (<sprite_area> *area, <sprite_id> *spr, int *savearea, <sprite_state> *state);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function redirects VDU output to a sprite, saving the old state.DATA�sprite_palflag
This is an enumerated type defined in <sprite.h=>sprite_h>. It is used to indicate whether the sprite has a palette.

  \{
    sprite_nopalette	= 0,
    sprite_haspalette	
  }DATA�sprite_pgm
This type is defined in <sprite.h=>sprite_h> as the following structure:
{wrap off}
  \{
    int p0[2], p1[2], p2[2], p3[2];
  }DATA�sprite_pixtrans
This is a type defined in <sprite.h=>sprite_h> such that a pointer to this type is a pointer to a pixel translation table. Hence it is defined as a /char/ (ie the pointer is a {/}char *{/}).DATA�Sprite_Plot
Syntax:	<os_error> *Sprite_Plot (<sprite_area> area, char *name, int x, int y, int a);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function plots the sprite identified on the screen with its bottom left corner at {/}(x,y){/}. The plot <action=>VDU:18a>, given in /a/, is the same as that used for <GCOL=>Basic:GCOL> except that values 8-15 indicate that the mask should be used. Values above 16 have no meaning.DATA�Sprite_PlotGrey
Syntax:	<os_error> *Sprite_PlotGrey (<sprite_area> area, char *name, <wimp_point> *pos, <sprite_scalefactors> sc, void *pixtran);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function is similar to <Sprite_PlotScaled>, except that it anti-aliases the sprite as it scales it. The sprite must have been defined in a 16 colour mode, and the palette must be a linear grey-scale.

This call is slow and should only be used when the quality is more important than speed. If this quality is needed for something that will be redrawn more than once, it is advisable to redraw it once into another sprite, using <Sprite_Redirect>, and then redraw to screen using this sprite.DATA0Sprite_PlotMask
Syntax:	<os_error> *Sprite_PlotMask (<sprite_area> area, char *name, <wimp_point> *pos);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function plots a sprite mask in the current background graphics colour and action (set using <GFX_GCOL>), at the current graphics cursor position. All 1 bits in the mask are plotted, 0 bits are not. If the specified sprite has no mask, a rectangle the size of the sprite is plotted instead. This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 48.DATASprite_PlotMaskScaled
Syntax:	<os_error> *Sprite_PlotMaskScaled (<sprite_area> area, char *name, <wimp_point> *p, <sprite_scalefactors> sc);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function plots a sprite mask in the current background graphics colour and action (set using <GFX_GCOL>) at {/}(x,y){/}. All 1 bits in the mask are plotted, 0 bits are not. The mask is scaled according to the scaled factors pointed to by /sc/. This function is equivalent to OS_Sprite 50.DATA]Sprite_PlotScaled
Syntax:	<os_error> *Sprite_PlotScaled (<sprite_area> area, char *name, <wimp_point> *pos, <sprite_scalefactors> sc, void *pixtran);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function will plot the sprite identified on the screen with its bottom left corner at position /pos/ using the current graphics colour and action.

In addition the sprite will be scaled using the scaling factors pointed to by /sc/, and using the pixel translation table given by /pixtran/.

This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 52.DATA�sprite_ptr
This type is defined in <sprite.h=>sprite_h> as a type capable of holding a pointer to a sprite. It is actually defined as a {/}void *{/}.DATA�sprite_put
Syntax:	<os_error> *sprite_put (<sprite_area> *area, <sprite_id> *spr, int a);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function puts the sprite identified on the screen with its bottom left corner at the current graphics cursor position. The plot <action=>VDU:18a>, given in /a/, is the same as that used for <os_gcol> except that values 8-15 indicate that the mask should be used. Values above 16 have no meaning.DATA�sprite_put_given
Syntax:	<os_error> *sprite_put_given (<sprite_area> *area, <sprite_id> *spr, int a, int x, int y);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function puts the sprite identified on the screen with its bottom left corner at {/}(x,y){/}. The plot <action=>VDU:18a>, given in /a/, is the same as that used for <os_gcol> except that values 8-15 indicate that the mask should be used. Values above 16 have no meaning.DATAsprite_put_mask
Syntax:	<os_error> *sprite_put_mask (<sprite_area> *area, <sprite_id> *spr);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function plots a sprite mask in the current background graphics colour and action (set using <os_gcol>), at the current graphics cursor position. All 1 bits in the mask are plotted, 0 bits are not. If the specified sprite has no mask, a rectangle the size of the sprite is plotted instead. This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 48.DATA0sprite_put_mask_pgm
Syntax:	<os_error> *sprite_put_mask_pgm (<sprite_area> *area, <sprite_id> *spr, <sprite_box> *box, <sprite_pgm> pgm);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function plots a box from the mask in background colours to a parallelogram.DATADsprite_put_mask_trans
Syntax:	<os_error> *sprite_put_mask_trans (<sprite_area> *area, <sprite_id> *spr, <sprite_box> *box, <sprite_transmat> t);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function plots a box from the mask in background colours through a transformation matrix.DATA3sprite_put_pgm
Syntax:	<os_error> *sprite_put_pgm (<sprite_area> *area, <sprite_id> *spr, int action, <sprite_box> *box, <sprite_pgm> *t, <sprite_pixtrans> *p);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function plots a box from the sprite to a parallelogram.DATA,sprite_put_scaled
Syntax:	<os_error> *sprite_put_scaled (<sprite_area> *area, <sprite_id> *spr, int a, int x, int y, <sprite_factors> *fact, <sprite_pixtrans> pixt[]);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function will plot the sprite identified on the screen with its bottom left corner at position {/}(x,y){/}. The plot <action=>VDU:18a>, given in /a/, is the same as that used for <os_gcol> except that values 8-15 indicate that the mask should be used. Values above 16 have no meaning.

In addition the sprite will be scaled using the scaling factors pointed to by /fact/, and using the pixel translation table given by /pixt/. If either of these values are *NULL*, they will not be used.

This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 52.DATAHsprite_put_trans
Syntax:	<os_error> *sprite_put_trans (<sprite_area> *area, <sprite_id> *spr, int action, <sprite_box> *box, <sprite_transmat> *t, <sprite_pixtrans> p);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function plots a box from the sprite through a transformation matrix.DATA�Sprite_ReadControl
Syntax:	int Sprite_ReadControl (<sprite_area> area, int *size, <sprite> *first, void *free);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Number of sprites in area.

This function reads information about a sprite area, /area/. If /size/, /first/ or /free/ is <NULL> then that value is not returned. On exit, {/}*size{/} contains the size of the area, {/}*first{/} contains a pointer to the first sprite, and {/}*free{/} contains a pointer to the first free word.DATA�Sprite_ReadInfo
Syntax:	<os_error> *Sprite_ReadInfo (<sprite_area> area, char *name, <sprite_info> *info);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function returns information (in {/}info{/}) about the sprite specified, giving its width and height in pixels, whether the sprite has a mask and the screen mode in which the sprite was defined.DATA�sprite_readmask
Syntax:	<os_error> *sprite_readmask (<sprite_area> *area, <sprite_id> *spr, int x, int y, <sprite_maskstate> *mask);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

DeskLib:	See <Sprite_ReadMask=>Sprite_ReadMask_>

This function reads the state of a given pixel in the specified sprite mask. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 43.DATA1Sprite_ReadMask
Syntax:	<BOOL> Sprite_ReadMask (<sprite_area> area, char *name, <wimp_point> *pos);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	<TRUE> if solid.

This function reads the state of a given pixel in the specified sprite mask. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 43.DATA�sprite_readpixel
Syntax:	<os_error> *sprite_readpixel (<sprite_area> *area, <sprite_id> *spr, int x, int y, <sprite_colour> *result);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

See also the DeskLib function, <Sprite_ReadPixel=>Sprite_ReadPixel_>.

This function reads the colour of a given pixel in the specified sprite. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 41.DATA�Sprite_ReadPixel
Syntax:	int Sprite_ReadPixel (<sprite_area> area, char *name, <wimp_point> *pos);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Colour of pixel.

This function returns the colour of the pixel at /pos/ in the given sprite.DATAJSprite_ReadSaveAreaSize
Syntax:	<os_error> *Sprite_ReadSaveAreaSize (<sprite_area> area, char *name, int *size);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function calculates how large a save area must be for a given sprite, and return it in the /int/ pointed to by /size/.DATAFsprite_readsize
Syntax:	<os_error> *sprite_readsize (<sprite_area> *area, <sprite_id> *spr, <sprite_info> *resultinfo);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function reads the size information for the specified sprite. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 40.DATASprite_Redirect
Syntax:	<os_error> *Sprite_Redirect (<sprite_area> area, char *name, void *save, <sprite_outputstate> *old);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function causes VDU output to be sent to a sprite (given in {/}area{/} and {/}name{/}) instead of the screen. /save/ is a pointer to a block whose size is that returned by the function <Sprite_ReadSaveAreaSize>. The first four bytes of this block must be set to zero. Alternatively, it may be 0 for no save area. This block is used to store the current VDU state for restoration by <Sprite_UnRedirect> in the event of another redirection. The old state is returned in /old/.

The Wimp must not be called whilst output is switched in this way. Dunno why....DATA.sprite_remove_mask
Syntax:	<os_error> *sprite_remove_mask (<sprite_area> *area, <sprite_id> *spr);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function removes the mask definition for the given sprite. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 30.DATA&Sprite_RemovePalette
Syntax:	int Sprite_RemovePalette (<sprite_area> area, char *name);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function removes the palette for the given sprite. This is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 37.DATA-sprite_removewastage
Syntax:	<os_error> *sprite_removewastage (<sprite_area> *area, <sprite_id> *spr);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function removes the left hand wastage from a sprite. It is equivalent to <OS_SpriteOp=>SWI:OS_SPriteOp> 54.DATA�sprite_rename
Syntax:	<os_error> *sprite_rename (<sprite_area> *area, <sprite_id> *spr, char *name);
Header:	<sprite.h=>sprite>

Returns:	Pointer to error, or <NULL> if none.

This function renames specified sprite in the given sprite area so that its new name is that pointed to by /name/. An error is returned if a sprite of the new name already exists in that sprite area. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 26, or *SRename if used with the system sprite area.DATA�Sprite_Rename
Syntax:	<os_error> *Sprite_Rename (<sprite_area> area, char *old, char *new);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function renames the sprite in the given area whose name is given in /old/ so that its new name is that given in /new/. An error is returned if a sprite of the new name already exists. It is identical to SWI <OS_SpriteOp=>SWI:OS_SpriteOp> 26.DATA�sprite_restorestate
Syntax:	<os_error> *sprite_restorestate (<sprite_state> state);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function restores the old state after one of the sprite redirection calls.DATA�sprite.h RISC OS 3 Functions
These functions can only be used on RISC OS 3.
{align centre}
<sprite_change_size>
<sprite_put_mask_trans>
<sprite_put_mask_pgm>
<sprite_put_trans>
<sprite_put_pgm >DATASprite_Save
Syntax:	<os_error> *Sprite_Save (<sprite_area> area, char *filename);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function saves all the sprites in a sprite area to a file. It is equivalent to SWI OS_SpriteOp 12.DATA�sprite_scalefactors
This type is defined in <DeskLib:Sprite.h=>Sprite_DL> as the following structure:

  \{
    <wimp_point> multiply;
    <wimp_point> divide;
  }

Using this structure any scale can be created.DATA@sprite_screenload
Syntax:	void sprite_screenload (char *file);
Header:	<sprite.h=>sprite_h>

This function loads the first sprite in the given sprite file and displays it at the bottom left of the screen, in the correct mode and palette.

This function is equivalent to the SWI <OS_SpriteOp 3=>SWI:os_spriteop3>.DATA�Sprite_ScreenLoad
Syntax:	<os_error> *Sprite_ScreenLoad (char *filename);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function loads the first sprite in the given sprite file and displays it at the bottom left of the screen, in the correct mode and palette.

This function is equivalent to the SWI <OS_SpriteOp 3=>SWI:os_Spriteop3>.DATA8sprite_screensave
Syntax:	void sprite_screensave (char *file, <sprite_palflag> flg);
Header:	<sprite.h=>sprite_h>

This function saves the current graphics window with a palette if requested as the spritefile whose name is given.

This function is equivalent to the SWI <OS_SpriteOp 2=>SWI:os_spriteop2>.DATA�Sprite_ScreenSave
Syntax:	<os_error> *Sprite_ScreenSave (char *filename, <BOOL> palflag);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function saves the current graphics window with a palette if requested as the spritefile whose name is given. If /palflag/ is <TRUE> then the palette is saved with the sprite.

This function is equivalent to the SWI <OS_SpriteOp 2=>SWI:OS_SpriteOp2>.DATA�sprite_select
Syntax:	<os_error> *sprite_select (<sprite_area> *area, <sprite_id> *spr);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function selects the specified sprite for plotting (perhaps using <os_plot>) with plot code 0xED (and similar). It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 24, or *SChoose when used with the system area.DATAzsprite_select_rp
Syntax:	<os_error> *sprite_select_rp (<sprite_area> *area, <sprite_id> *spr, <sprite_ptr> *addr);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function selects a sprite for plotting.

It is identical to the function <sprite_select>, but returns the address of the sprite in the {/}sprite_ptr{/} pointed to by /addr/.DATAWsprite.h Simple Functions
#align centre
<sprite_screenload>
<sprite_screensave>DATAsprite_sizeof_screencontext
Syntax:	<os_error> *sprite_sizeof_screencontext (int *size);
Header:	<sprite.h=>sprite_h>

Returns: Pointer to error, or <NULL> if none.

This function gets the size of the save area needed to save the screen context and returns it in {/}*spr{/}.DATAAsprite_sizeof_spritecontext
Syntax:	<os_error> *sprite_sizeof_spritecontext (<sprite_area> *area, <sprite_id> *spr, int *size);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function gets the size of the save area needed to save the sprite context and returns it in {/}*spr{/}.DATAusprite_state
This type is defined in <sprite.h=>sprite_h> as the following structure:

  \{
    int r[4];
  }DATArsprite_transmat
This type is defined in <sprite.h=>sprite_h> as a {/}int [6]{/} ie an array of 6 integers.DATA�sprite_type
This is a type defined in <sprite.h=>sprite_h> as the following enumerated type:

  \{
    sprite_id_name	= 0,
    sprite_id_addr	= 0x74527053
  }

It is used to indicate whether a sprite name or address is used in a <sprite_id>.DATA6Sprite_UnRedirect
Syntax:	<os_error> *Sprite_UnRedirect (<sprite_outputstate> *old);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function restores VDU output back to a saved state. This state should be that returned in /old/ by <Sprite_Redirect>, I think!DATA�Sprite_WimpPlot
Syntax:	<os_error> *Sprite_WimpPlot (<sprite_area> area, char *name, <wimp_point> *pos, <convert_block> *convert, int action);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function plots the specified sprite at work area coordinates /pos/ for the window whose convert block is given, with graphics action /action/. All relevant scaling/colour translation occurs to plot the sprite as the Wimp would do were it an icon.DATA�sprite_writemask
Syntax:	<os_error> *sprite_writemask (<sprite_area> *area, <sprite_id> *spr, int x, int y, <sprite_maskstate> *mask);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

DeskLib: See <Sprite_WriteMask=>Sprite_WriteMask_>.

This function writes the state of a given pixel in the specified sprite mask. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 44.DATAYSprite_WriteMask
Syntax:	<os_error> *Sprite_WriteMask (<sprite_area> area, char *name, <wimp_point> *pos, <BOOL> solid);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function sets the state of a given pixel in the specified sprite mask. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 43.DATA�sprite_writepixel
Syntax:	<os_error> *sprite_writepixel (<sprite_area> *area, <sprite_id> *spr, int x, int y, <sprite_colour> *colour);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

DeskLib: See <Sprite_WritePixel=>Sprite_WritePixel_>.

This function writes the colour of a given pixel in the specified sprite. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 42.DATAdSprite_WritePixel
Syntax:	os_error *Sprite_WritePixel (<sprite_area> area, char *name, <wimp_point> *pos, int col, int tint);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function sets the colour and tint of the pixel at /pos/ in the given sprite. It is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 42.DATAasprite_area_initialise
Syntax:	void sprite_area_initialise (<sprite_area> *ptr, int size);
Header:	<sprite.h=>sprite_h>

This function initialises an area of memory pointed to by /ptr/, whose size is given in /size/, for use as a sprite area. There is no {*}OS_SpriteOp{*} call to do this, so this is a useful function which saves you some work.DATAgsprite_area_readinfo
Syntax:	<os_error> *sprite_area_readinfo (<sprite_area> *area, sprite_area *result);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function reads all the information contained in the control block of the sprite area pointed to by /area/, and places it in the sprite area pointed to by /result/.DATA�sprite_put_greyscaled
Syntax:		<os_error> *sprite_put_greyscaled (<sprite_area> *area, <sprite_id> *spr, int x, int y, <sprite_factors> *fact, <sprite_pixtrans> *pixt);
Header:		<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function is similar to <sprite_put_scaled>, except that it anti-aliases the sprite as it scales it. The sprite must have been defined in a 16 colour mode, and the palette must be a linear grey-scale.

This call is slow and should only be used when the quality is more important than speed. If this quality is needed for something that will be redrawn more than once, it is advisable to redraw it once into another sprite, using <sprite_outputtosprite>, and then redraw to screen using this sprite.DATAsprite_put_mask_given
Syntax:	<os_error> *sprite_put_mask_given (<sprite_area> *area, <sprite_id> *spr, int x, int y);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function plots a sprite mask in the current background graphics colour and action (set using <os_gcol>), at {/}(x,y){/}. All 1 bits in the mask are plotted, 0 bits are not. If the specified sprite has no mask, a rectangle the size of the sprite is plotted instead. This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 49.DATA!sprite_put_mask_scaled
Syntax:	<os_error> *sprite_put_mask_scaled (<sprite_area> *area, <sprite_id> *spr, int x, int y, <sprite_factors> *fact);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function plots a sprite mask in the current background graphics colour and action (set using <os_gcol>) at {/}(x,y){/}. All 1 bits in the mask are plotted, 0 bits are not. The mask is scaled according to the scaled factors pointed to by /fact/. This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 50.DATA�sprite_put_char_scaled
Syntax:	<os_error> *sprite_put_char_scaled (char c, int x, int y, <sprite_factors> *fact);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function plots a text character, whose character code is given in /c/, on the screen in the current graphics foreground colour and action, with its bottom left at {/}(x,y){/}. It is scaled according to the scaling factors given by /fact/. This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 51.DATA�sprite_insert_column
Syntax:	<os_error> *sprite_insert_column (<sprite_area> *area, <sprite_id> *spr, int column);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function inserts a column in the given sprite at the position identified, shifting all columns after it (if any) to the right. The left-hand column is numbered zero. This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 45.DATA�sprite_delete_column
Syntax:	<os_error> *sprite_delete_column (<sprite_area> *area, <sprite_id> *spr, int column);
Header:	<sprite.h=>sprite_h>

Returns:	Pointer to error, or <NULL> if none.

This function deletes a column in the sprite at the position identified (the left column is row 0), shifting all rows after it (if any) left one. It is equivalent to <OS_SpriteOp=>SWI:os_spriteop> 46.DATA_Sprite_LoadFiles
Syntax:	<sprite_area> Sprite_LoadFiles (int num, ...);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to sprite area created.

This function allocates space for a sprite area with <malloc>, initialises it and loads /num/ sprite files into it, all of whose names are passed as parameters in the variable argument list.DATA�Sprite_RemoveMask
Syntax:	<os_error> *Sprite_RemoveMask (<sprite_area> area, char *name);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function removes the mask from the given sprite.DATA�Sprite_InsertColumn
Syntax:	<os_error> *Sprite_InsertColumn (<sprite_area> area, char *name, int pos);
Header:	<DeskLib:Sprite.h=>Sprite_DL>

Returns:	Pointer to error, or <NULL> if none.

This function inserts a column in the given sprite at the position identified, shifting all columns after it (if any) to the right. The left-hand column is numbered zero. This function is equivalent to <OS_SpriteOp=>SWI:OS_SpriteOp> 45.DIR$,,��	F����U&�ONLYDATA�SPR_ONLY
This macro is defined in <TimsLib:Icon.h=>Icon_TL>. It is the value the returned by <ICON_TYPE> when the icon in question is a 'sprite only' icon. It is defined as 2.DATA�sqrt
Syntax:	double sqrt (double x);
Header:	<math.h=>math>

Returns:	The square root of x.

This function calculates the square root of x. x must not be negative.DATA�srand
Syntax:	void srand (unsigned int s);
Header:	<stdlib.h=>stdlib>

This function seeds the psuedo-random number generating function with the value in /s/. The seed defines what sequence of numbers <rand> will give - after calling /srand/ with the same value the same sequence will be generated. At the start of execution the sequence generated is as if srand(1) had been called.DATA�sscanf
Syntax:	int sscanf (char *in, char *format, ...);
Header:	<stdio.h=>stdio>

Returns:	The number of successful inputs or <EOF> if there was an input error.

This function reads input from the string pointed to by /in/ under control of the <format string=>sform_>.

In operation it is similar to <fscanf>, but input is read from a string instead of a stream. The end of the string counts as the end of file.DATA�stdarg.h
The \<stdarg.h> header declares three functions and one type for handling variable argument lists.

Functions:

#Indent 6
#Table 1 14
<va_start>
<va_arg>
<va_end>
#EndTable

#Indent 0
Type:

#Indent 6
<va_list>
#Indent 0DATA�stddef.h
The \<stddef.h> header declares a few types and two macros.

Macros:

#Indent 5
#Table 1 14
<offsetof>
<NULL>
#EndTable

#Indent 0
Types:

#Indent 5
#Table 1 14
<ptrdiff_t>
<size_t>
<wchar_t>
#EndTableDATA�stderr
The macro stderr is defined in <stdio.h=>stdio> and is a pointer to type <FILE>. It can be used as a stream for reporting errors in functions such as <fprintf>.DATA�stdin
The macro stdin is defined in <stdio.h=>stdio> and is a pointer to type <FILE>. It refers to the standard input stream (keyboard by default) and can be used in functions such as <fscanf>.DATA�stdio.h
#Parent ansi_
The \<stdio.h\> header declares many functions concerned with input and output. In addition, it declares three types and a number of macros.

Functions:

#Indent 5
#Table 3 23
<File operations=>fileop_>
<File handling=>filehnd_>
<Character I/O=>chario_>
<Formatted I/O=>formio_>
<Stream I/O=>streamio_>
<Error handling=>errhnd_>
#EndTable

#Indent 0
Macros:

#Indent 5
#Table 6 14
<NULL>
<_IOFBF>
<_IOLBF>
<_IONBF>
<BUFSIZ>
<EOF>
<FOPEN_MAX>
<FILENAME_MAX>
<L_tmpnam>
<SEEK_CUR>
<SEEK_END>
<SEEK_SET>
<TMP_MAX>
<stdin>
<stdout>
<stderr>
#EndTable

#Indent 0
Types:

#Indent 5
#Table 1 15
<FILE>
<fpos_t>
<size_t>
#EndTableDATAhstdlib.h
The \<stdlib.h> header declares many functions of general utility. In addition, it declares four types and five macros.

Functions:

#Indent 2
#Table 4 24
<String conversion=>sl_strconv_>
<Random numbers=>sl_rand_>
<Memory management=>sl_mem_>
<Environment management=>sl_env_>
<Data processing=>sl_data_>
<Arithmetic=>sl_arith_>
<Multibyte character=>sl_mbchar_>
<Multibyte string=>sl_mbstr_>
#EndTable

#Indent 0
Macros:

#Indent 5
#Table 2
<EXIT_FAILURE>
<EXIT_SUCCESS>
<MB_CUR_MAX>
<NULL>
<RAND_MAX>

#EndTable

#Indent 0
Types:

#Indent 11
#Table 1
<div_t>
<ldiv_t>
<size_t>
<wchar_t>
#EndTableDATA�stdout
The macro stdout is defined in <stdio.h=>stdio> and is a pointer to type <FILE>. It refers to the standard output stream (screen by default) and can be used in functions such as <fprintf>.DATAjSTF <register>,<address>
This is equivalent to <STR>, but for floating point registers and values.DATAMSTR <register>,<address>
This sets the given address (usually a label) to contain the contents of the given register. The contents are a word, unless STRB is used in which case only a byte is stored.

#fCode
        MOV   R0,#10
        STR   R0,label
        ...
 .label <DCD>   0
#f

The contents at 'label' will now be 10.DATA�strcat
Syntax:	char *strcat (char *str1, char *str2);
Header:	<string.h=>string>

Returns:	str1

This function appends {/}str2{/} to the end of {/}str1{/}, overwriting the null byte at the end of {/}str1{/}. The two strings should not overlap.DATA+strcatcr
Syntax:	char *strcatcr (char *s1, char *s2);
Header:	<DeskLib:Str.h=>Str_DL>

Returns:	s1

This function appends {/}s2{/} to the end of {/}s1{/}, overwriting the terminator at the end of {/}s1{/}. The two strings should not overlap, and the resulting string will be null-terminated.DATA!strchr
Syntax:	char *strchr (char *str, int c);
Header:	<string.h=>string>

Returns:	Pointer to the found character, or a null pointer if not found.

This function searches for /c/ (converted to an {/}unsigned char{/}) in the string pointed to by /str/ (including null terminator).DATAQstrcmp
Syntax:	int strcmp (char *str1, char *str2);
Header:	<string.h=>string>

Returns:	Greater than, less than or equal to zero, depending if the string pointed to by {/}str1{/} is greater than, less than or equal to the string pointed to by {/}str2{/}.

This functions compares the two strings and returns a value accordingly.DATAstrcmpcr
Syntax:	int strcmpcr (char *s1, char *s2);
Header:	<DeskLib:Str.h=>Str_DL>

Returns:	0 if the strings match
		-1 if s1\<s2 (alphabetically)
		+1 if s1>s2 (alphabetically)

This function compares the two strings and returns a value accordingly.DATA�strcoll
Syntax:	int strcoll (char *str1, char *str2);
Header:	<string.h=>string>

Returns:	Greater than, less than or equal to zero, depending if the string pointed to by {/}str1{/} is greater than, less than or equal to the string pointed to by {/}str2{/}.

This function interprets the two strings according to the <LC_COLLATE> category of the current locale and then compares them.DATA�strcpy
Syntax:	char *strcpy (char *str1, char *str2);
Header:	<string.h=>string>

Returns:	str1

This function copies the whole of the string in {/}str2{/} to {/}str1{/} (including the null terminator).DATAstrcpycr
Syntax:	char *strcpycr (char *s1, char *s2);
Header:	<DeskLib:Str.h=>Str_DL>

Returns:	s1

This function copies the whole of the string in {/}s2{/} to {/}s1{/}. The terminator of {/}s1{/} will be null, regardless of the the {/}s2{/} terminator.DATA�strcspn
Syntax:	<size_t> strcspn (char *str1, char *str2);
Header:	<string.h=>string>

Returns:	The number of characters.

This function finds the number of characters at the start of {/}str1{/} which are not present in {/}str2{/}.DATAstrdup
Syntax:	char *strdup (char *str);
Header:	<DeskLib:Str.h=>Str_DL>

Returns:	Address of new string.

This function allocates memory and copies the string pointed to by /str/ into that memory. It then returns a pointer to it, or <NULL> if memory could not be allocated.DIR$,,$�	F����*�"�!RootDATA�Stream I/O Functions
#Parent stdio
These functions read and write any number of data items of any size, into an array.

#Table 1 18
<fread>
<fwrite>
#EndTableDATA�strerror
Syntax:	char *strerror (int err);
Header:	<string.h=>string>

Returns:	Pointer to the error message.

This function converts the error number in /err/ into an error message string. *Do not alter the returned string*.DATAlstrftime
Syntax:	<size_t> strftime (char *s, size_t len, char *format, <struct�tm> *tptr);
Header:	<time.h=>time>

Returns:	The number of characters written.

This function writes the time pointed to by /tptr/ to the character array pointed to by /s/ under control of the <format string=>tform_>.

No more than len characters will be written to the string.DATA�stricmp
Syntax:	int stricmp (char *str1, char *str2);
Header:	<TimsLib:Lib.h=>Lib>
	<DeskLib:Str.h=>Str_DL>

Returns:	Greater than, less than or equal to zero, depending if the string pointed to by str1 is greater than, less than or equal to the string pointed to by str2.

This functions compares the two strings and returns a value accordingly. It is not case senstive, unlike <strcmp>.DATA]stricmpcr
Syntax:	int stricmpcr (char *str1, char *str2);
Header:	<DeskLib:Str.h=>Str_DL>

Returns:	Greater than, less than or equal to zero, depending if the string pointed to by str1 is greater than, less than or equal to the string pointed to by str2.

This function is equivalent to <stricmp>, but works with any control code terminator.DATA�string.h
The \<string.h\> header declares quite a few functions mainly to do with strings (no surprise there!). It also declares one type and defines a macro.

Functions:

#Indent 5
#Table 3 23
<Copying=>str_copy_>
<Appending=>str_cat_>
<Comparison=>str_cmp_>
<Searching=>str_find_>
<Miscellaneous=>str_misc_>
#EndTable

#Indent 0
Macro:                 Type:

     <NULL>                   <size_t>DATA�DeskLib:StringCR.h
Version: 1.13 (30 May 1993)
#line
This header is obsolete. It now simply
<#include=>include>s <DeskLib:Str.h=>Str_DL>.DATA�strlen
Syntax:	<size_t> strlen (char *str);
Header:	<string.h=>string>

Returns:	Length of the string.

This function works out the length of the string pointed to by /str/ (ie the number of characters before the null terminator).DATA�strlencr
Syntax:	int strlencr (char *s);
Header:	<DeskLib:Str.h=>Str_DL>

Returns:	Length of the string.

This function works out the length of the string pointed to by /s/ (ie the number of characters before the terminator).DATAstrncat
Syntax:	char *strncat (char *str1, char *str2, <size_t> n);
Header:	<string.h=>string>

Returns:	str1

This function appends up to /n/ characters of {/}str2{/} to the end of {/}str1{/}. Characters after a null byte are not added. The strings should not overlap.DATA�strncmp
Syntax:	int strncmp (char *str1, char *str2, <size_t> n);
Header:	<string.h=>string>

Returns:	Greater than, less than or equal to zero, depending if the string pointed to by {/}str1{/} is greater than, less than or equal to the string pointed to by {/}str2{/}.

This function compares up to /n/ characters and returns a value as appropriate. Characters after a null byte are not compared.DATA=strncpy
Syntax:	char *strncpy (char *str1, char *str2, <size_t> n);
Header:	<string.h=>string>

Returns:	str1

This function copies up to /n/ characters from {/}str2{/} to {/}str1{/}. If a null character is reached, the remaining characters are filled with nulls. {/}str1{/} and {/}str2{/} should not overlap.DATA<strncpycr
Syntax:	char *strncpycr (char *s1, char *s2, <size_t> n);
Header:	<DeskLib:Str.h=>Str_DL>

Returns:	s1

This function copies up to n characters from {/}s2{/} to {/}s1{/}. If a terminator character is reached, the remaining characters are filled with nulls. {/}s1{/} and {/}s2{/} should not overlap.DATA�strnicmp
Syntax:	int strnicmp (char *str1, char *str2, <size_t> n);
Header:	<TimsLib:Lib.h=>Lib>
	<DeskLib:Str.h=>Str_DL>

Returns:	Greater than, less than or equal to zero, depending if the string pointed to by str1 is greater than, less than or equal to the string pointed to by str2.

This functions compares up to /n/ characters and returns a value accordingly. It is not case senstive, unlike <strncmp>.DATAlstrnicmpcr
Syntax:	int strnicmpcr (char *str1, char *str2, <size_t> n);
Header:	<DeskLib:Str.h=>Str_DL>

Returns:	Greater than, less than or equal to zero, depending if the string pointed to by str1 is greater than, less than or equal to the string pointed to by str2.

This function is equivalent to <strnicmp>, but works with any control code terminator.DATA�strpbrk
Syntax:	char *strpbrk (char *str1, char *str2);
Header:	<string.h=>string>

Returns:	Pointer to the found character, or null pointer if none found.

This function finds the first character in {/}str1{/} which is also present in {/}str2{/}.DATA,strrchr
Syntax:	char *strrchr (char *str, int c);
Header:	<string.h=>string>

Returns:	Pointer the found character, or a null pointer if not found.

This function searches for the last occurence of /c/ (converted to a {/}char{/}) in the string pointed to by /str/ (including null terminator).DATA\StrSave
Syntax:	char *StrSave (char *src, int length);
Header:	<TimsLib:Lib.h=>Lib>

Returns:	Pointer to the new copy of the string.

This function copies a string /str/, allocating space for the destination. If /length/ > 0 then /length/ bytes will be allocated, else if /length/ = 0 just enough space to hold the string will be allocated.DATA�StrSaveDbug
Syntax:	char *StrSaveDbug (char *src, int length, char *file, int line);
Header:	<TimsLib:Lib.h=>Lib>

Returns:	Pointer to the new copy of the string.

This function is identical to <StrSave>, but adds source file and line information. It is intended to be used with the macro /strsavedbug/, which is called by StrSave if <EnableDbug> is <#include=>include>d. Basically, this is never called - always call StrSave.DATAstrspn
Syntax:	<size_t> strspn (char *str1, char *str2);
Header:	<string.h=>string>

Returns:	The number of characters.

This function finds the number of characters at the start of {/}str1{/} which are also present in {/}str2{/}. See also <strcspn>.DATAJstrstr
Syntax:	char *strstr (char *str1, char *str2);
Header:	<string.h=>string>

Returns:	Pointer to the found string, or a null pointer if not found.

This function searches for the string pointed to by {/}str2{/} in the string pointed to by {/}str1{/}. If {/}str2{/} is an empty string, the function returns {/}str1{/}.DATA�strtod
Syntax:	double strtod (char *str, char **end);
Header:	<stdlib.h=>stdlib>

Returns:	The converted value.

This function converts the string pointed to by /str/ to a /double/. It does this by splitting the string into three bits - white space at the start, then the number, then the rest of the string which is unrecognised. The middle bit is converted to a /double/ and returned, and a pointer to the last bit is returned in the {/}char�*{/} pointed to by /end/.

If the string could not be converted, zero is returned. If it could but was too big to be returned, +/- <HUGE_VAL> is returned and <ERANGE> is stored in <errno>. If it is too small to return, zero is returned and ERANGE is stored in errno.DATAdstrtok
Syntax:	char *strtok (char *str1, char *str2);
Header:	<string.h=>string>

Returns:	Pointer to the token, or a null pointer if none found.

This is a useful function! The first time you call it, you pass it a string in {/}str1{/} and a separator in {/}str2{/}. Subsequent calls do not need to pass {/}str1{/}, it is remembered.

The function searches the string in {/}str1{/} for a character which is contained in {/}str2{/}. It then stores a null byte here and returns a pointer to the start of {/}str1{/} so the returned string is everything up to this point. For subsequent calls, the searching starts after the null byte placed last time. Example:

#Tab
 strtok("ADFS::Bob.$.Maelstrom",":")	= "ADFS"
 strtok(<NULL>,".")	= ":Bob"
 strtok(NULL," ")	= "$.Maelstrom"

This makes it very easy to extract filing systems, drives and pathnames, doesn't it?!DATA(strtol
Syntax:	long int strtol (char *str, char **end, int base);
Header:	<stdlib.h=>stdlib>

Returns:	The converted value.

This function converts the string pointed to by /str/ to a /long int/. It does this by splitting the string into three bits - white space at the start, then the number in the given base (2- 36), then the rest of the string which is unrecognised. The middle bit is converted to a /long int/ and returned, and a pointer to the last bit is returned in the {/}char�*{/} pointed to by /end/.

If the string could not be converted, zero is returned. If it could but was too big to be returned, <LONG_MAX> or <LONG_MIN> is returned, and <ERANGE> is stored in <errno>.

For base 16, the string may have "0x" or "0X" preceding the number. The letters a-z (A-Z) are given values 10-35.DATA0strtoul
Syntax:	long int strtoul (char *str, char **end, int base);
Header:	<stdlib.h=>stdlib>

Returns:	The converted value.

This function converts the string pointed to by /str/ to an /unsigned long int/. It does this by splitting the string into three bits - white space at the start, then the number in the given base (2-36), then the rest of the string which is unrecognised. The middle bit is converted to an /unsigned long int/ and returned, and a pointer to the last bit is returned in the {/}char�*{/} pointed to by /end/.

If the string could not be converted, zero is returned. If it could but was too big to be returned, <ULONG_MAX> is returned, and <ERANGE> is stored in <errno>.

For base 16, the string may have �0x� or �0X� preceding the number. The letters a-z (A-Z) are given values 10-35.DATA}struct
This keyword defines a complex variable type called a structure. The definition has the general form:

     struct \<name>
     \{
         \<variable1>
         \<variable2>
         ...
         \<variableN>
     } \<vars>;

\<name> is a name for structure. It can be used to declare further structures of the same type without actually defining the \{} bit again.

A structure contains one or more normal <variables=>c_var_> described in the normal way.

\<vars> are the structures created in the way a list of variables follows the type in a normal variable declaration.

Variables within the structure are accessed using the form: {/}structure.variable{/}. Structures may be nested to give {/}structure1.structure2.variable{/} etc. If you are given a pointer to a structure this form becomes clumsy ie {/}(*pointer).variable{/}. You can use {/}pointer->variable{/} instead.DATA�struct tm
The type {/}struct tm{/} is defined in <time.h=>time_h> as a structure capable of holding any broken-down time. It is defined as follows:

\{
    int tm_sec;
    int tm_min;
    int tm_hour;
    int tm_mday;
    int tm_mon;
    int tm_year;
    int tm_wday;	/* Day of the week */
    int tm_yday;	/* Day of the year */
    int tm_isdst;	/* DST indicator */
}

The Daylight Saving Indicator is used to represent locale specific time changes eg British Summer Time.DATAstrxfrm
Syntax:	<size_t> strxfrm (char *str1, char *str2, size_t n);
Header:	<string.h=>string>

Returns:	Length of the transformed string, not including the null terminator.

This functions converts the string pointed to by {/}str2{/} to the same form as <strcoll> does when comparing strings. Up to /n/ characters are transformed and placed in the string pointed to by {/}str1{/}. The upshot of all this is that if two strings are transformed using this and then compared, the result is the same as using <strcoll> on them directly.DIR$PP<
F�����"�cat_�
F�����"�cmp_�
F���Ơ�"�copy_T
F����u�%#DecodeHexx
F������%CDL�
F���	y�"�find_�
F����g�%MakeASCIIZ�
F����a�%�MakeCR�
F����n�%MakeHex�	
F������"^misc_DATA�Appending Functions
#Parent string
These functions add one string to the end of another.

#indent 6
#Table 1 15
<strcat>
<strncat>
#EndTableDATA�Comparison Functions
#Parent string
These functions compare the two strings by ASCII values and indicate the equality or inequality of the two strings.

#Table 2
<memcmp>
<strcmp>
<strcoll>
<strncmp>
<strxfrm>

#EndTableDATA�Copying Functions
#Parent string
These functions copy characters from one array to another.

#Table 2 16
<memcpy>
<memmove>
<strcpy>
<strncpy>
#EndTableDATA#Str_DecodeHex
Syntax:	int Str_DecodeHex (char digit);
Header:	<DeskLib:Str.h=>Str_DL>

Returns:	Value of the hexadecimal character.

This function takes a character /digit/ which is a hexadecimal digit (0-F). It returns the value of this (0-15). -1 is returned if /digit/ is invalid.DATACDeskLib:Str.h
Version: 1.12 (17 May 1993)
#line
This header declares useful string functions. It is a replacement for <DeskLib:StringCR.h=>StringCR>, which is now obsolete.

#indent 4
#Table columns 3
<strlencr>
<strcmpcr>
<stricmp>
<stricmpcr>
<strnicmp>
<strnicmpcr>
<strcatcr>
<strcpycr>
<strncpycr>
<LeafName>
<strdup>
<Str_MakeCR>
<Str_MakeASCIIZ>
<Str_MakeHex>
<Str_DecodeHex>
#EndTable
#indent

The "cr" functions are identical to their ANSI equivalents, but accept any terminator \< 32, not just null terminators. The "i" functions are case insensitive functions.DATA�Searching Functions
#Parent string
The following functions search for either individual characters or strings within other strings.

#indent 4
#Table 3 16
<memchr>
<strchr>
<strcspn>
<strpbrk>
<strrchr>
<strspn>
<strstr>
<strtok>

#EndTableDATAStr_MakeASCIIZ
Syntax:	void Str_MakeASCIIZ (char *s, int max_len);
Header:	<DeskLib:Str.h=>Str_DL>

This function converts the carriage return-terminated string pointed to by /s/ into a zero-terminated string. <Str_MakeCR>() converts the other way.DATA�Str_MakeCR
Syntax:	void Str_MakeCR (char *s, int max_len);
Header:	<DeskLib:Str.h=>Str_DL>

This function converts the zero-terminated string pointed to by /s/ into a carriage return-terminated string. <Str_MakeASCIIZ>() converts the other way.DATAStr_MakeHex
Syntax:	char Str_MakeHex (int n);
Header:	<DeskLib:Str.h=>Str_DL>

Returns:	Character representing 'n' in hex.

This function takes a number /n/ in the range 0-15 and returns the appropriate hexadecimal digit (0-F). If /n/ is out of range, '?' is returned.DATA^Miscellaneous Functions
#Parent string
#Table 1
<memset>
<strerror>
<strlen>
#EndTableDATAzDeskLib:SWI.h
Version: 1.02 (30 May 1994)
#line
This header declares just one function: SWI. It also declares lots of <macros=>SWI_macros_>.
#line
Syntax:	<os_error> *SWI (int numregsin, int numregsout, int n, ... );
Header:	DeskLib:SWI.h

Returns:	Pointer to error, or <NULL> if none.

This function calls a <SWI=>SWI:!Root>, whose number is given in /n/. The variable argument list (...) contains the register contents. First, /numregsin/ values to be placed into the registers before calling the SWI. Then, /numregsout/ pointers to variables used for holding the registers on exit from the SWI. A register can be ignored by using <NULL>.

Examples:
{wrap off}
{fCode}SWI(0,0,0x406C0); /* Calls <Hourglass_On=>SWI:Hourglass_On> */{f}

{fCode}SWI(2,4,0x32,x,y,NULL,NULL,&colour,&tint);
/* Calls <OS_ReadPoint=>SWI:OS_ReadPoint> to read point (x,y),
   returns colour and tint */{f}DATAJswis.h
#Parent ro_easyc_
The \<swis.h\> header defines 469 macros for calling SWI routines. The idea is that you use one of these as an argument for either the <_kernel_swi> or <os_swi> function. Each macro is the name of an SWI call and represents the SWI number.

#Indent 9
#Table columns 3
<OS=>SWI:OS_>
<IIC=>SWI:IIC_>
<Font=>SWI:Font_>
<Wimp=>SWI:Wimp_>
<Sound=>SWI:Sound_>
<ADFS=>SWI:ADFS_>
<Podule=>SWI:Podule_>
<Debugger=>SWI:Debugger_>
<FPEmulator =>SWI:FPEmulator_>
<FileCore=>SWI:FileCore_>
<Shell=>SWI:Shell_>
<Hourglass=>SWI:Hourglass_>
<Draw=>SWI:Draw_>
<ColourTrans=>SWI:ColourTrans_>
<Super=>SWI:Super_>
<FilerAction=>FilerAction_>
<MessageTrans =>SWI:MessageTrans_>
<PDumper=>SWI:PDumper_>
<ResourceFS=>SWI:ResourceFS_>
<DragASprite=>SWI:DragASprite_>
<Filter=>SWI:Filter_>
<TaskManager=>SWI:TaskManager_>
<Squash=>SWI:Squash_>
<DeviceFS=>SWI:DeviceFS_>
<Buffer=>SWI:Buffer_>
<BASICTrans=>SWI:BasicTrans_>
<Parallel=>SWI:Parallel_>
<Territory=>SWI:Territory_>
<ScreenBlanker=>SWI:ScreenBlanker_>
<TaskWindow=>SWI:TaskWindow_>
<Free=>SWI:Free_>
<DOSFS=>SWI:DOSFS_>
#EndTableDIR$((
F���)BX&�TLDATA�TimsLib:SWIs.h
This header is an alternative for Desktop C's <swis.h=>swis>, with the Wimp, Font and Hourglass SWIs removed for compatibility with DeskLib/TimsLib.DATAswitch
This command allows you to select one action from several on the basis of a value. It is equivalent to BASIC's <CASE=>Basic:CASE>. The form is:

#fCode
  switch (\<expression>)
  \{
  case \<constant1>: \<statements1>;
  case \<constant2>: \<statements2>;
  ...
  default: \<statements>
  }
#f

For each constant, if it is the same as the value of the expression evaluated at the start, all statements from this point on are evaluated. So if \<expression> is equal to \<constant1> both \<statements1> and \<statements2> are executed (this makes the <break> command useful).

The statements should, of course, be separated by semicolons, but several can appear without using braces \{}.

The {/}default:{/} part is optional, and is executed if none of the constants match.DIR$,,
F���o��%;"macros_DATA;"SWI Number Macros
The following macros are all defined in <DeskLib:SWI.h=>SWI> to be the number of the SWI they are named after:

#Table 118 36
SWI_OS_WriteC                      
SWI_OS_WriteS                      
SWI_OS_Write0                      
SWI_OS_NewLine                     
SWI_OS_ReadC                       
SWI_OS_CLI                         
SWI_OS_Byte                        
SWI_OS_Word                        
SWI_OS_File                        
SWI_OS_Args                        
SWI_OS_BGet                        
SWI_OS_BPut                        
SWI_OS_GBPB                        
SWI_OS_Find                        
SWI_OS_ReadLine                    
SWI_OS_Control                     
SWI_OS_GetEnv                      
SWI_OS_Exit                        
SWI_OS_SetEnv                      
SWI_OS_IntOn                       
SWI_OS_IntOff                      
SWI_OS_CallBack                    
SWI_OS_EnterOS                     
SWI_OS_BreakPt                     
SWI_OS_BreakCtrl                   
SWI_OS_UnusedSWI                   
SWI_OS_UpdateMEMC                  
SWI_OS_SetCallBack                 
SWI_OS_Mouse                       
SWI_OS_Heap                        
SWI_OS_Module                      
SWI_OS_Claim                       
SWI_OS_Release                     
SWI_OS_ReadUnsigned                
SWI_OS_GenerateEvent               
SWI_OS_ReadVarVal                  
SWI_OS_SetVarVal                   
SWI_OS_GSInit                      
SWI_OS_GSRead                      
SWI_OS_GSTrans                     
SWI_OS_BinaryToDecimal             
SWI_OS_FSControl                   
SWI_OS_ChangeDynamicArea           
SWI_OS_GenerateError               
SWI_OS_ReadEscapeState             
SWI_OS_EvaluateExpression          
SWI_OS_SpriteOp                    
SWI_OS_ReadPalette                 
SWI_OS_ServiceCall                 
SWI_OS_ReadVduVariables            
SWI_OS_ReadPoint                   
SWI_OS_UpCall                      
SWI_OS_CallAVector                 
SWI_OS_ReadModeVariable            
SWI_OS_RemoveCursors               
SWI_OS_RestoreCursors              
SWI_OS_SWINumberToString           
SWI_OS_SWINumberFromString         
SWI_OS_ValidateAddress             
SWI_OS_CallAfter                   
SWI_OS_CallEvery                   
SWI_OS_RemoveTickerEvent           
SWI_OS_InstallKeyHandler           
SWI_OS_CheckModeValid              
SWI_OS_ChangeEnvironment           
SWI_OS_ClaimScreenMemory           
SWI_OS_ReadMonotonicTime           
SWI_OS_SubstituteArgs              
SWI_OS_PrettyPrint                 
SWI_OS_Plot                        
SWI_OS_WriteN                      
SWI_OS_AddToVector                 
SWI_OS_WriteEnv                    
SWI_OS_ReadArgs                    
SWI_OS_ReadRAMFsLimits             
SWI_OS_ClaimDeviceVector           
SWI_OS_ReleaseDeviceVector         
SWI_OS_DelinkApplication           
SWI_OS_RelinkApplication           
SWI_OS_HeapSort                    
SWI_OS_ExitAndDie                  
SWI_OS_ReadMemMapInfo              
SWI_OS_ReadMemMapEntries           
SWI_OS_SetMemMapEntries            
SWI_OS_AddCallBack                 
SWI_OS_ReadDefaultHandler          
SWI_OS_SetECFOrigin                
SWI_OS_SerialOp                    
SWI_OS_ReadSysInfo                 
SWI_OS_Confirm                     
SWI_OS_ChangedBox                  
SWI_OS_CRC                         
SWI_OS_ReadDynamicArea             
SWI_OS_PrintChar                   
SWI_OS_ConvertStandardDateAndTime  
SWI_OS_ConvertDateAndTime          
SWI_OS_ConvertHex1                 
SWI_OS_ConvertHex2                 
SWI_OS_ConvertHex4                 
SWI_OS_ConvertHex6                 
SWI_OS_ConvertHex8                 
SWI_OS_ConvertCardinal1            
SWI_OS_ConvertCardinal2            
SWI_OS_ConvertCardinal3            
SWI_OS_ConvertCardinal4            
SWI_OS_ConvertInteger1             
SWI_OS_ConvertInteger2             
SWI_OS_ConvertInteger3             
SWI_OS_ConvertInteger4             
SWI_OS_ConvertBinary1              
SWI_OS_ConvertBinary2              
SWI_OS_ConvertBinary3              
SWI_OS_ConvertBinary4              
SWI_OS_ConvertSpacedCardinal1      
SWI_OS_ConvertSpacedCardinal2      
SWI_OS_ConvertSpacedCardinal3      
SWI_OS_ConvertSpacedCardinal4      
SWI_OS_ConvertSpacedInteger1       
SWI_OS_ConvertSpacedInteger2       
SWI_OS_ConvertSpacedInteger3       
SWI_OS_ConvertSpacedInteger4       
SWI_OS_ConvertFixedNetStation      
SWI_OS_ConvertNetStation           
SWI_OS_ConvertFixedFileSize        
SWI_OS_ConvertFileSize             
SWI_IIC_Control                    
SWI_Econet_CreateReceive           
SWI_Econet_ExamineReceive          
SWI_Econet_ReadReceive             
SWI_Econet_AbandonReceive          
SWI_Econet_WaitForReception        
SWI_Econet_EnumerateReceive        
SWI_Econet_StartTransmit           
SWI_Econet_PollTransmit            
SWI_Econet_AbandonTransmit         
SWI_Econet_DoTransmit              
SWI_Econet_ReadLocalStationAndNet  
SWI_Econet_ConvertStatusTOString   
SWI_Econet_ConvertStatusToError    
SWI_Econet_ReadProtection          
SWI_Econet_SetProtection           
SWI_Econet_ReadStationNumber       
SWI_Econet_PrintBanner             
SWI_Econet_ReleasePort             
SWI_Econet_AllocatePort            
SWI_Econet_DeAllocatePort          
SWI_Econet_ClaimPort               
SWI_Econet_StartImmediate          
SWI_Econet_DoImmediate             
SWI_NetFS_ReadFSNumber             
SWI_NetFS_SetFSNumber              
SWI_NetFS_ReadFSName               
SWI_NetFS_SetFSName                
SWI_NetFS_ReadCurrentContext       
SWI_NetFS_SetCurrentContext        
SWI_NetFS_ReadFSTimeouts           
SWI_NetFS_SetFSTimeouts            
SWI_NetFS_DoFSOp                   
SWI_NetFS_EnumerateFSList          
SWI_NetFS_EnumerateFS              
SWI_NetFS_ConvertDate              
SWI_NetFS_DoFSOpToGivenFS          
SWI_Sound_Configure                
SWI_Sound_Enable                   
SWI_Sound_Stereo                   
SWI_Sound_Speaker                  
SWI_Sound_Volume                   
SWI_Sound_SoundLog                 
SWI_Sound_LogScale                 
SWI_Sound_InstallVoice             
SWI_Sound_RemoveVoice              
SWI_Sound_AttachVoice              
SWI_Sound_ControlPacked            
SWI_Sound_Tuning                   
SWI_Sound_Pitch                    
SWI_Sound_Control                  
SWI_Sound_AttachNamedVoice         
SWI_Sound_ReadControlBlock         
SWI_Sound_WriteControlBlock        
SWI_Sound_QInit                    
SWI_Sound_QSchedule                
SWI_Sound_QRemove                  
SWI_Sound_QFree                    
SWI_Sound_QSDispatch               
SWI_Sound_QTempo                   
SWI_Sound_QBeat                    
SWI_Sound_QInterface               
SWI_NetPrint_ReadPSNumber          
SWI_NetPrint_SetPSNumber           
SWI_NetPrint_ReadPSName            
SWI_NetPrint_SetPSName             
SWI_NetPrint_ReadPSTimeouts        
SWI_NetPrint_SetPSTimeouts         
SWI_ADFS_DiscOp                    
SWI_ADFS_HDC                       
SWI_ADFS_Drives                    
SWI_ADFS_FreeSpace                 
SWI_ADFS_Retries                   
SWI_ADFS_DescribeDisc              
SWI_Podule_ReadID                  
SWI_Podule_ReadHeader              
SWI_Podule_EnumerateChunks         
SWI_Podule_ReadChunk               
SWI_Podule_ReadBytes               
SWI_Podule_WriteBytes              
SWI_Podule_CallLoader              
SWI_Podule_RawRead                 
SWI_Podule_RawWrite                
SWI_Podule_HardwareAddress         
SWI_WaveSynth_Load                 
SWI_Debugger_Disassemble           
SWI_FPEmulator_Version             
SWI_FileCore_DiscOp                
SWI_FileCore_Create                
SWI_FileCore_Drives                
SWI_FileCore_FreeSpace             
SWI_FileCore_FloppyStructure       
SWI_FileCore_DescribeDisc          
SWI_Shell_Create                   
SWI_Shell_Destroy                  
SWI_Draw_ProcessPath               
SWI_Draw_ProcessPathFP             
SWI_Draw_Fill
SWI_Draw_FillFP                    
SWI_Draw_Stroke                    
SWI_Draw_StrokeFP                  
SWI_Draw_StrokePath                
SWI_Draw_StrokePathFP              
SWI_Draw_FlattenPath               
SWI_Draw_FlattenPathFP             
SWI_Draw_TransformPath             
SWI_Draw_TransformPathFP           
SWI_RamFS_DiscOp                   
SWI_RamFS_Drives                   
SWI_RamFS_FreeSpace                
SWI_RamFS_DescribeDisc             
#EndTable

In addition, {*}XOS_Bit{*} is defined (OR this with the SWI number to set the X bit), and {*}SWI_OS_WriteI{*} is also defined.DATA�system
Syntax:	int system (char *str);
Header:	<stdlib.h=>stdlib>

Returns:	0 for success, -2 for failure.

This function passes the string given to the host environment to be executed. After execution the command returns success or failure; any other value is command specific.

If /str/ is a null pointer then the function returns non-zero if this function can be used for executing commands (you should check this before doing so).

On RISC OS this function passes the string given to the CLI to be executed as if it had been typed in as a �star command�. For instance, {fCode}system("Modules"){f} has the same effect as <*Modules>.DIR$�>
F���<��"�tan�?
F���UԽ"�tanh4@
F����/,task_�@
F���S�5&�Template�B
F���J�/(template_L`
F���x�5&�TextFileLa
F����/�TextFile_�f
F���~�/Htform_�j
F�����/Ltf_q
F���g5�"�time�q
F����/�Time_�
F����"tmpfile��
F���]L�"�tmpnam`�
F���N�/(TMP_4�
F����Y�"�tolower �
F����`�"�toupper�
F���"��$�trace��
F������$�tracefl�
F�����/�trace_��
F���܆�$�TRUEx�
F���}7�$�txt�
F������$JtxteditL�
F���L�/�txtedit_�
F���M��$�txtopt��
F���X�/Ttxtopt_�
F�����$�txtscrapй
F�����/Ttxtscrap_��
F���]�$�txtwin��
F�����/�txtwin_�
F���o�/�TXT_�
F���0��$�typdat��
F���o��"�typedefDATA�tan
Syntax:	double tan (double x);
Header:	<math.h=>math>

Returns:	The tangent of x in radians.

This function calculates the principal value of the tangent of x.DATA�tanh
Syntax:	double tanh (double x);
Header:	<math.h=>math>

Returns:	The hyperbolic tangent of x in radians.

This function calculates the hyperbolic tangent of x.DIR$,,`@
F���w7&~handleDATA~task_handle
This type is defined in <DeskLib:Wimp.h=>Wimp> as a type holding a task handle. It is defined as an /int/.DATA�DeskLib:Template.h
Version: 1.05 (Dec 1994)
#line
This header declares functions for loading, cacheing and retriveing window templates.

Functions:

#indent 5
#Table columns 2
<Template_Initialise>
<Template_Find>
<Template_Clone>
<Template_Free>
<Template_Delete>
<Template_ClearAll>
<Template_LoadFile>
<Template_UseOutlineFonts>
<Template_UseSpriteArea>
<Template_LinkSpriteArea>
#EndTable
#indent

Macros:

#indent 4
#Table columns 2
<template_TITLEMIN>
<template_TITLEDEFAULT>
#EndTableDIR$((�E
F���d��$�!Root�F
F�����H&block�G
F�����"�Clear�H
F�����4&\Clone0K
F�����$�copy�K
F�����4&MDeleteDM
F���5g�$�Find�N
F����n�$�find_�O
F�����4&oFreeQ
F����t�$�h�R
F���jZ�$�init�S
F����g4&�Initialise|T
F����$�loadedHU
F����5&pLoadFile�V
F����_�$readfile�W
F���ə�$HsyshandleY
F������$�use_fancyfonts�Y
F����C5&jUseOutlineFontsh[
F����4&TITLEDEFAULTp\
F�����4&TITLEMINt]
F���y5&�ClearAll<^
F���n5&CUseSpriteArea�_
F�����5&�LinkSpriteAreaDATA�template
This type is defined in <template.h=>template_h>. It is an element of a linked list.

  \{
    template	*next;
    char	*workspace;
    int		workspacesize;
    char	*font;
    char	name[12];
    <wimp_wind>	window;
  }DATAtemplate_block
This type is defined in <DeskLib:Wimp.h=>Wimp> as a type holding data for use by <Wimp_LoadTemplate>.

  \{
    <window_block>	*buffer;
    char		*workfree;
    char		*workend;
    <font_array>	*font;
    char		*name;
    unsigned int	index;
  }DATA�Template_Clear
Syntax:  void Template_ClearAll (void);
Header:  <DeskLib:Template.h=>Template>

This function deletes all the templates from
memory. It is equivalent to Template_Delete
used on every template loaded.DATA\Template_Clone
Syntax:	<window_block> *Template_Clone (char *name, int maxtitlesize);
Header:	<DeskLib:Template.h=>Template>

Returns:	Pointer to window, or <NULL> if not found.

This function makes a copy of the named template and returns a pointer to the copy. /maxtitlesize/ is the number of bytes that should ever be allocated for the title, since once the window is created it cannot be changed. The value 0 (or <template_TITLEDEFAULT>) will allocate 260 bytes, and -1 (<template_TITLEMIN>) will allocate whatever was set in the template file. This is the recommended value for most windows.DATA�template_copy
Syntax:	<template=>template_> *template_copy (template *from);
Header:	<template.h=>template_h>

Returns:	Pointer to copy.

This function creates a copy of a template /from/.DATAMTemplate_Delete
Syntax:	void Template_Delete (char *name);
Header:	<DeskLib:Template.h=>Template>

This function deletes the named template from those available and frees the memory used by it. If any windows are open using this template, you are in major trouble, matey boy! <Template_Clone>'d templates will be OK, though!.DATA�Template_Find
Syntax:	<window_block> *Template_Find (char *name);
Header:	<DeskLib:Template.h=>Template>

Returns:	Pointer to the window definition.

See also the Desktop C function, <template_find=>template_find_>.

This function tries to find the named template, and return a pointer to it. This is the original, so don't mess it up please! The template must have been loaded with <Template_LoadFile>.DATA�template_find
Syntax:	<template=>template_> *template_find (char *name);
Header:	<template.h=>template_h>

Returns:	Pointer to found template.

This function tries to find the named template.DATAoTemplate_Free
Syntax:	void Template_Free (<window_block> **windowdef);
Header:	<DeskLib:Template.h=>Template>

This function frees the memory used by a window definition created by <Template_Clone>. You must pass in a pointer to a {*}window_block *{*}. The memory will be freed (including indirected space), and the {*}window_block *{*} will be set to <NULL>.DATA�template.h
This header declares functions used for loading/manipulating templates. The templates are assumed to be held in a file "Templates" in the application's directory.

Functions:

#Indent 5
#Table 4 21
<template_init>
<template_readfile>
<template_find=>template_find_>
<template_loaded>
<template_copy>
<template_use_fancyfonts>
<template_syshandle>
#EndTable
#Indent 0

Types:

{align centre}<template=>template_>DATA�template_init
Syntax:	void template_init (void);
Header:	<template.h=>template_h>

This function must be called before any operations which use templates (including dialogue boxes and everything).DATA�Template_Initialise
Syntax:	void Template_Initialise (void);
Header:	<DeskLib:Template.h=>Template>

This function initialises the Template manager ready for use. It must be called before using any other Template functions.DATA�template_loaded
Syntax:	<BOOL> template_loaded (void);
Header:	<template.h=>template_h>

Returns:	<TRUE> if any templates are loaded.

This function sees if there is anything in the template list.DATApTemplate_LoadFile
Syntax:	void Template_LoadFile (char *leaf);
Header:	<DeskLib:Template.h=>Template>

Loads all templates in the given file. The file is found using the <resource_pathname>, and /leaf/ which contains the leafname. Loading more than one file adds the templates.

If you want to use outline fonts, you must call <Template_UseOutlineFonts> first.DATAtemplate_readfile
Syntax:	<BOOL> template_readfile (char *name);
Header:	<template.h=>template_h>

Returns:	<FALSE> if no sprites are used.

This function reads the template file whose leaf name is given in /name/. It calls <resspr_area> so you must have called <resspr_init>.DATAHtemplate_syshandle
Syntax:	<wimp_wind> *template_syshandle (char *name);
Header:	<template.h=>template_h>

Returns:	Pointer to underlying window.

This function gets a pointer to the underlying window used to create a template. Any changes made to this structure will affect future windows generated using this template.DATA�template_use_fancyfonts
Syntax:	void template_use_fancyfonts (void);
Header:	<template.h=>template_h>

This function must be called once before <template_init>, if you wish to use templates containing outline fonts.DATAjTemplate_UseOutlineFonts
Syntax:	void Template_UseOutlineFonts (void);
Header:	<DeskLib:Template.h=>Template>

This function must be called before <Template_LoadFile> if you want to use outline fonts in windows. You shouldn't use outline fonts for general text icons because users with more recent versions of RISC OS will probably want to use their own.DATAtemplate_TITLEDEFAULT
This macro is defined in <DeskLib:Template.h=>Template>. It is a value to be passed to functions which copy template definitions which tells them to reserve the default amount of space for the indirected title (currently 260 bytes).DATAtemplate_TITLEMIN
This macro is defined in <DeskLib:Template.h=>Template>. It is a value to be passed to functions which copy template definitions which tells them to reserve the same space as specified in the template file for the indirected title.DATA�Template_ClearAll
Syntax:	void Template_ClearAll (void);
Header:	<DeskLib:Template.h=>Template>

This function removes all template definitions from memory and releases all fonts used by them.DATACTemplate_UseSpriteArea
Syntax:	void Template_UseSpriteArea (<sprite_area> *area);
Header:	<DeskLib:Template.h=>Template>

This function sets the sprite area which will be used by all future <Template_Find> or <Template_Clone>d templates. It should be set to <NULL> to use the Wimp sprite pool, which is the default.DATA�Template_LinkSpriteArea
Syntax:	void Template_LinkSpriteArea (char *name, <sprite_area> area);
Header:	<DeskLib:Template.h=>Template>

This sets the window /name/ to use the sprite area /area/.DATA�DeskLib:TextFile.h
Version: 1.00 (07 Apr 1992)
#line
This header declares several functions for handling textfiles.

Functions:

#table columns 2
<TextFile_GetToken>
<TextFile_Lowercase>
<TextFile_ReadToDelimeter>
<TextFile_SkipBlanks>
#endtableDIR$���a
F����5&�GetTokenpc
F�����5&�Lowercase4d
F����P6&�SkipBlanks,e
F���eF6&xReadToDelimeterDATA�TextFile_GetToken
Syntax:	void TextFile_GetToken (<FILE> *f, char delim, char *token, <BOOL> lower);
Header:	<DeskLib:TextFile.h=>TextFile>

This function reads in a token from a file /f/. A token is defined as a sequence of up to 32 characters, terminated in a newline or /delim/. Leading blank space is skipped.

If /lower/ is <TRUE> then the token is converted to lower case.DATA�TextFile_Lowercase
Syntax:	char TextFile_Lowercase (char x);
Header:	<DeskLib:TextFile.h=>TextFile>

Returns:	/x/ converted to lower case.

This function is actually defined as a macro.DATA�TextFile_SkipBlanks
Syntax:	void TextFile_SkipBlanks (<FILE> *f);
Header:	<DeskLib:TextFile.h=>TextFile>

This function reads characters from the given file until end of file, or until a non-blank character (ie not space or tab)  is found.DATAxTextFile_ReadToDelimeter
Syntax:	void TextFile_ReadToDelimeter (<FILE> *f, char delim, char *line, int maxlen);
Header:	<DeskLib:TextFile.h=>TextFile>

This function reads in characters from the file /f/ until the end of file or a character /delim/ is reached, or /maxlen/ characters have been read (including the null terminator). The characters are read into /line/.DIR$HH�f
F���2�"�!Root�h
F���j�6&�_DATA�strftime() Format String
The format string is composed of a sequence of characters. All characters except '%' are copied directly to the output. '%' marks the beginning of conversion specification. If a literal percent is required, then �%%� should be used.

A conversion specification results in part of the time being printed according to the specification. The structure of a conversion specification is a '%' followed by a <conversion character=>tf_conv_>.DATA�Time_ConvertDateAndTime() Format String
The format string is composed of a sequence of characters. All characters except '%' are copied directly to the output. '%' marks the beginning of conversion specification. If a literal percent is required, then "%%" should be used.

A conversion specification results in part of the time being printed according to the specification. The structure of a conversion specification is a '%' followed by a <conversion string=>tf_conv__>.DIR$LL�j
F����#�"�conv_�n
F�����6&kconv__DATA�Format String Conversion Character
One of the following:

a,A,w	The weekday is output as an abbreviated name (a), full name (A), or decimal (w) with 0=Sunday, 6=Saturday.
b,B,m	The month is output as an abbreviated name (b), full name (B), or decimal (w) with 1=January, 12=December.
c	The date and time are output in local format.
d	The day of the month is output (01-31).
H,I	The hour is output in 24 (H) or 12 (I) hour format.
j	The day of the year is output (001-366).
M	The minute is output as a decimal (00-59).
p	The 12 hour status (ie AM or PM) is output.
S	The second is output as a decimal (00-61).
U,W	The week of the year is output as a decimal (00-53), counting Sunday (U) or Monday (W) as the first day of the week.
x	The date is output in local format.
X	The time is output in local format.
y,Y	The year is output as a decimal, without century (y) or with century (Y).
Z	The timezone name is output (or nothing if none).DATAkFormat String Conversion String
One of the following:

CS		Centiseconds as a decimal (00-99)
SE		Seconds as a decimal (00-59)
MI		Minutes as a decimal (00-59)
12,24		Hours in 12 or 24 hour format
AM,PM		Outputs "am" or "pm" as appropriate
WE,W3,WN	Weekday as full name, 3 letter name or number
DY		Day of the month (01-31)
ST		"st", "nd", "rd" or "th" as appropriate
MO,M3,MN	Month as full name, 3 letter name or number
CE		Century number
YR		Year without century (00-99)
WK		Week number
DN		Day of the year
0		Null byte

Conversion strings producing numbers may be prefixed with 'Z' to suppress leading zeroes.DATA�time
Syntax:	<time_t> time (time_t *timer);
Header:	<time.h=>time_h>

Returns:	The current calendar time.

This function returns the current calendar time.DIR$���s
F���J�6&�ConvertDateAndTimeLu
F���:�6&CTIMEhv
F����7&EUROTIMElw
F���O�6&FANCYDATE�x
F���
_�"�hz
F����7&LONGTIME${
F���lw6&�Monotonic�|
F���MX&�ReadMonotonic�}
F���`7&SHORTTIME�~
F�����6&STANDARD�
F���R�"t�
F���
EX&YTLD�
F�����6&�ConvertStandardDateAndTimeDATA�Time_ConvertDateAndTime
Syntax:	<os_error> *Time_ConvertDateAndTime (char *block, char *buffer, int len, char *format);
Header:	<DeskLib:Time.h=>DL_Time>

Returns:	Pointer to error, or <NULL> if none.

This function writes the five-byte time (centiseconds since 1900) in /block/ to the character array pointed to by /buffer/ under control of the <format string=>tform__>.

No more than /len/ characters will be written to the string.DATATime_CTIME
This macro is defined in <DeskLib:Time.h=>DL_Time> for use with the <Time_ConvertDateAndTime> function. It produces times of the form:

{fCode;align centre}Fri Jul 15 16:52:00 1994{f;align}

It is defined as:

{fCode;align centre}"%W3 %M3 %DY %z24:%MI:%SE %CE%YR"DATATime_EUROTIME
This macro is defined in <DeskLib:Time.h=>DL_Time> for use with the <Time_ConvertDateAndTime> function. It produces times of the form:

{fCode;align centre}16:52:00{f;align}

It is defined as:

{fCode;align centre}"z24:%MI:%SE"{f;align}DATATime_FANCYDATE
This macro is defined in <DeskLib:Time.h=>DL_Time> for use with the <Time_ConvertDateAndTime> function. It produces times of the form:

{fCode;align centre}Friday, 16th of July, 1994{f;align}

It is defined as:

{fCode;align centre}"%WE, %zDY%ST of %MO, %CE%YR"DATA�time.h
The \<time.h> header declares a number of functions relating to reading the system date and time. It also defines one macro and three types.

Functions:

#Indent 4
#Table columns 5
<asctime>
<clock>
<ctime>
<difftime>
<gmtime>
<localtime>
<mktime>
<strftime>
<time>
#EndTable


#indent 0
Macro:

    <CLOCKS_PER_SEC>

Types:

#Indent 4
#Table 1 15
<clock_t>
<time_t>
<struct�tm>
#EndTableDATATime_LONGTIME
This macro is defined in <DeskLib:Time.h=>DL_Time> for use with the <Time_ConvertDateAndTime> function. It produces times of the form:

{fCode;align centre}4:52:00pm{f;align}

It is defined as:

{fCode;align centre}"%z12:%MI:%SE%pm"{f;align}DATA�Time_Monotonic
Syntax:	int Time_Monotonic (void);
Header:	<DeskLib:Time.h=>DL_Time>

Returns:	Time since power-on, in centiseconds.

This function returns an integer representing the time since the computer was switched on, in centiseconds. This is equivalent to <TIME=>Basic:TIME> in Basic, or the SWI <OS_ReadMonotonicTime=>SWI:OS_ReadMonotonicTime>. The time wraps around about every 16 months, so this should not be a problem!DATA�Time_ReadMonotonic
Syntax:	Time_ReadMonotonic (unsigned *time);
Header:	<TimsLib:Time.h=>Time_TL>

This function-like macro calls the SWI <OS_ReadMonotonicTime=>SWI:OS_ReadMonotonicTime> and returns the time in {/}*time{/}.DATATime_SHORTTIME
This macro is defined in <DeskLib:Time.h=>DL_Time> for use with the <Time_ConvertDateAndTime> function. It produces times of the form:

{fCode;align centre}4:52pm{f;align}

It is defined as:

{fCode;align centre}"%z12:%MI%pm"{f;align}DATATime_STANDARD
This macro is defined in <DeskLib:Time.h=>DL_Time> for use with the <Time_ConvertDateAndTime> function. It produces times of the form:

{fCode;align centre}16:52:00 15-Jul-1994{f;align}

It is defined as:

{fCode;align centre}"%24:%mi:%se %dy-%m3-%ce%yr"DATAtime_t
The type {/}time_t{/} is defined in <time.h=>time_h> as an object capable of holding any given calendar time value. The calendar time value is in fact the number of Unix seconds since 1/1/1970. In Easy C and Desktop C it is defined as an /unsigned int/.DATAYTimsLib:Time.h
This header defines one function-like macro, <Time_ReadMonotonic>.DATA�Time_ConvertStandardDateAndTime
Syntax:	<os_error> *Time_ConvertStandardDateAndTime (char *block, char *buffer, int len);
Header:	<DeskLib:Time.h=>DL_Time>

Returns:	Pointer to error, or <NULL> if none.

This function writes the five-byte time (centiseconds since 1900) in /block/ to the character array pointed to by /buffer/ using the <format string=>Tform__> stored in Sys$DateFormat.

No more than /len/ characters will be written to the string.DATAtmpfile
Syntax:	<FILE> *tmpfile (void);
Header:	<stdio.h=>stdio>

Returns:	Pointer to the file stream.

This function creates a temporary file which will be automatically deleted on closure or when the program finishes normally (but not necessarily upon abnormal termination). It is opened with <�wb+� mode=>file_mode_>. If the file cannot be created then <NULL> is returned.DATA�tmpnam
Syntax:	char *tmpnam (char *name);
Header:	<stdio.h=>stdio>

Returns:	Pointer to filename.

The function generates a original (ie not used for an exisiting file) filename. It will generate up to <TMP_MAX> unique names. If /name/ points to an array then the name is copied into this array (which should have length of at least <L_tmpnam>). If /name/ is a null pointer then tmpnam creates its own array, but subsequent calls may overwrite the name.DIR$((��
F����_�"�MAXDATA�TMP_MAX
#Parent stdio
The macro TMP_MAX is defined in <stdio.h=>stdio> as the minimum number of unique filenames which can be generated by the function <tmpnam>.DATA�tolower
#Parent ctype
Syntax:	int tolower (int c);
Header:	<ctype.h=>ctype>

Returns:	c, converted to lower case.

If c is upper case, this function returns the lower case equivalent, else the character is returned unchanged.DATA�toupper
#Parent ctype
Syntax:	int toupper (int c);
Header:	<ctype.h=>ctype>

Returns:	c, converted to upper case.

If c is lower case, this function returns the upper case equivalent, else the character is returned unchanged.DATA�trace.h
This header declares functions for tracing/debugging programs.

Functions:

#Indent 9
#Table lines 1
<tracef>
<trace_is_on>
<trace_on >
<trace_off>
#EndTable
#Indent 0

You must #define TRACE 1 in order to use these functions. All calls to *tracef* should be surrounded with:

{fCode}  \#if TRACE
    ...
    ...
  \#endif{f}

to ensure that tracing is not compiled in to the final version (wasting time and memory).DATA�tracef
Syntax:	void tracef (char *format, ...);
Header:	<trace.h=>trace>

This function outputs tracing info according to the <printf>-style <format string=>pform_>.DIR$���
F�����$vis_ond�
F����$]offČ
F���e�$Zon �
F����UX&�TLDATAvtrace_is_on
Syntax:	int trace_is_on (void);
Header:	<trace.h=>trace>

Returns:	<TRUE> if tracing is turned on.DATA]trace_off
Syntax:	void trace_off (void);
Header:	<trace.h=>trace>

Turns tracing off.DATAZtrace_on
Syntax:	void trace_on (void);
Header:	<trace.h=>trace>

Turns tracing on.DATA�TimsLib:Trace.h
This header declares just one function, Trace. In addition it defines macros for each of the Stream SWIs.

Syntax:	void Trace (char *report, ...);

This function takes a printf-style <format string=>pform_> and prints it using the VDUStream module. The VDUStream module is at present only available if you have the ArtWorks Software Developer's Kit. Very useful I'm sure...DATA�TRUE
The macro TRUE is defined in <DeskLib:Core.h=>Core>, <TimsLib:Core.h=>Core_TL> and <os.h=>os> (Desktop C) as a value representing the logical state of True. It is actually defined as 1.DATA�txt
The type 'txt' is defined in <txt.h=>txt_h> as an abstract handle on a text object. It is actually a pointer to a structure.DATAJtxtedit.h
This header file is a partner for <txt.h=>txt_h>, providing text editing facilities. It provides you with most of the features of RISC OS 2 !Edit.

Functions:

#indent 2
#Table 9 20
<txtedit_init>
<txtedit_install>
<txtedit_new>
<txtedit_dispose>
<txtedit_mayquit>
<txtedit_prequit>
<txtedit_menu>
<txtedit_menuevent>
<txtedit_doimport>
<txtedit_doinsertfile>
<txtedit_register_update_handler>
<txtedit_register_save_handler>
<txtedit_register_close_handler>
<txtedit_register_shutdown_handler>
<txtedit_register_undofail_handler>
<txtedit_register_open_handler>
<txtedit_getstates>
#EndTable
#indent

Types:

#indent 4
#Table 4 25
<txtedit_seltype>
<txtedit_state>
<txtedit_update_handler>
<txtedit_close_handler>
<txtedit_save_handler>
<txtedit_shutdown_handler>
<txtedit_undofail_handler>
<txtedit_open_handler>
#EndTableDIR$��(�
F������$Hclose_handlerp�
F������$�dispose$�
F���K��$doimportD�
F�����$Udoinsertfile��
F����F�$!getstates��
F���Ǭ�$�initt�
F�����$�installh�
F������$2mayquit��
F���
��$�menu��
F�����$�menueventx�
F���û�$�new,�
F���G��$Aopen_handlerp�
F���C��$prequit��
F����"�$Cregister_close_handlerЦ
F����>�$Fregister_open_handler�
F����$Hregister_save_handler`�
F������$�save_handler�
F���FN�$�seltype��
F�����$�shutdown_handler��
F����i�$�state��
F������$Eundofail_handler�
F����y�$�update_handlerp�
F���A�$fregister_update_handlerز
F����+�$xregister_shutdown_handlerP�
F����2�$�register_undofail_handlerDATAHtxtedit_close_handler
This type is defined in <txtedit.h=>txtedit>. It is a function of the form:

{fCode;align centre}void myfunc (char *filename, <txtedit_state> *s, void *handle);{f;align}

/handle/ is the value passed when registering the function. /filename/ is the window title filename, and /s/ is the text state.DATA�txtedit_dispose
Syntax:	void txtedit_dispose (<txtedit_state> *s);
Header:	<txtedit.h=>txtedit>

This function destroys the text whose state is given, no questions asked.DATAtxtedit_doimport
Syntax:	<BOOL> txtedit_doimport (<txtedit_state> *s, int filetype, int estsize);
Header:	<txtedit.h=>txtedit>

Returns:	<TRUE> if successful.

This function imports data into the specified txtedit object, from a file whose type and estimated size are as given.DATAUtxtedit_doinsertfile
Syntax:	void txtedit_doinsertfile (<txtedit_state> *s, char *filename, <BOOL> newtitle);
Header:	<txtedit.h=>txtedit>

This function inserts the named file into the text object whose state is pointed to by /s/. If /newtitle/ is <TRUE> then the text object will now be known by the file name of the inserted file.DATA!txtedit_getstates
Syntax:	<txtedit_state> *txtedit_getstates (void);
Header:	<txtedit.h=>txtedit>

Returns:	Pointer to start of list.

This function gets a pointer to the start of the list of editable texts. Each entry can be found as {/}s->next{/} where /s/ is the previous
entry.DATA�txtedit_init
Syntax:	void txtedit_init (void);
Header:	<txtedit.h=>txtedit>

This function initialises the txtedit module. It must be called before other txtedit functions.DATA�txtedit_install
Syntax:	<txtedit_state> *txtedit_install (<txt> t);
Header:	<txtedit.h=>txtedit>

Returns:	Pointer to the state.

This installs an event handler for /txt t/, making it editable. /t/ must have been created with <txt_new>.DATA2txtedit_mayquit
Syntax:	<BOOL> txtedit_mayquit (void);
Header:	<txtedit.h=>txtedit>

Returns:	<TRUE> if we may safely quit.


This function checks to see if we can safely quit editing. If a text is being edited, a dialogue box is displayed using <dboxquery>, so the template "query" must be loaded.DATA�txtedit_menu
Syntax:	<menu> txtedit_menu (<txtedit_state> *s);
Header:	<txtedit.h=>txtedit>

Returns:	Pointer to menu structure.

This function creates a menu for the text whose state is given. The menu is the same as that for RISC OS 2 !Edit.DATA�txtedit_menuevent
Syntax:	void txtedit_menuevent (<txtedit_state> *s, char *hit);
Header:	<txtedit.h=>txtedit>

This function processes a menu hit for a given text. It should be called from your menu event handler.DATA�txtedit_new
Syntax:	<txtedit_state> *txtedit_new (char *name);
Header:	<txtedit.h=>txtedit>

Returns:	Pointer to the state.

This function creates a new text object, loads the file whose name is given into it, and makes it editable. If the file cannot be loaded, it return 0 and no text is created. If /name/ is a null pointer then a empty text is created. If the file is already being edited, the existing state is returned.DATAAtxtedit_open_handler
This type is defined in <txtedit.h=>txtedit>. It is a function of the form:

{fCode;align centre}void myfunc (char *filename, <txtedit_state> *s, void *handle);{f;align}

/handle/ is the value passed when registering the function. /filename/ is the filename of the text, and /s/ is its state.DATAtxtedit_prequit
Syntax:	void txtedit_prequit (void);
Header:	<txtedit.h=>txtedit>

This function is intended to deal with a <Message_PreQuit=>SWI:Wimp_um8>. It calls <txtedit_mayquit>, and if we may then it disposes of all texts and tells the Task Manager we're clear to go.DATACtxtedit_register_close_handler
Syntax:	<txtedit_close_handler> txtedit_register_close_handler (txtedit_close_handler h, void *handle);
Header:	<txtedit.h=>txtedit>

Returns:	The old handler.

This function registers a handler to be called whenever a text window is closed. If {/}h==0{/} then the handler is removed.DATAFtxtedit_register_open_handler
Syntax:	<txtedit_open_handler> txtedit_register_open_handler (txtedit_open_handler h, void *handle);
Header:	<txtedit.h=>txtedit>

Returns:	The old handler.

This function registers a handler to be called whenever a new editable text is created. If {/}h==0{/} then the handler is removed.DATAHtxtedit_register_save_handler
Syntax:	<txtedit_save_handler> txtedit_register_save_handler (txtedit_save_handler h, void *handle);
Header:	<txtedit.h=>txtedit>

Returns:	The old handler.

This function registers a handler to be called whenever a text window is saved to a file. If {/}h==0{/} then the handler is removed.DATA�txtedit_save_handler
This type is defined in <txtedit.h=>txtedit>. It is a function of the form:

{fCode;align centre}<BOOL> myfunc (char *filename, <txtedit_state> *s, void *handle);{f;align}

/handle/ is the value passed when registering the function. /filename/ is the window title filename, and /s/ is the text state. This function should return <FALSE> to abort the save operation.DATA�txtedit_seltype
This type is defined in <txtedit.h=>txtedit>. It is defined as the following enumerated type:

  \{
    txtedit_CHARSEL	= 1,
    txtedit_WORDSEL	= 2,
    txtedit_LINESEL	= 4
  }DATA�txtedit_shutdown_handler
This type is defined in <txtedit.h=>txtedit>. It is a function of the form:
{wrap off}
{fCode;align centre}void myfunc (void *handle);{f;align}
{wrap}
/handle/ is the value passed when registering the function.DATA�txtedit_state
This type is defined in <txtedit.h=>txtedit> as a type holding information about an editable text. It is defined as the following structure:

  \{
    <txt>		t;
    <txt_marker>	selpivot;
    <txtedit_seltype>	seltype;
    int			selectrecent;
    int			selectctl;
    char		filename[256];
    <typdat>		ty;
    int			deletepending;
    <txtedit_state>	*next;
    <BOOL>		overwrite;
    BOOL		wordtab;
    BOOL		wordwrap;
  }

The fields are pretty self-explanatory, I think.DATAEtxtedit_undofail_handler
This type is defined in <txtedit.h=>txtedit>. It is a function of the form:

{fCode;align centre}void myfunc (char *filename, <txtedit_state> *s, void *handle);{f;align}

/handle/ is the value passed when registering the function. /filename/ is the filename of the text, and /s/ is its state.DATA�txtedit_update_handler
This type is defined in <txtedit.h=>txtedit>. It is a function of the form:

{fCode;align centre}<BOOL> myfunc (char *filename, <txtedit_state> *s,void *handle);{f;align}

/handle/ is the value passed when registering the function. /filename/ is the window title filename, and /s/ is the text state. The function should return <FALSE> to undo the last modification.DATAftxtedit_register_update_handler
Syntax:	<txtedit_update_handler> txtedit_register_update_handler (txtedit_update_handler h, void *handle);
Header:	<txtedit.h=>txtedit>

Returns:	The old handler.

This function registers a handler to be called whenever a text window is modified ie whenever the title changes. If {/}h=0{/} then the handler is removed.DATAxtxtedit_register_shutdown_handler
Syntax:	<txtedit_shutdown_handler> txtedit_register_shutdown_handler (txtedit_shutdown_handler h, void *handle);
Header:	<txtedit.h=>txtedit>

Returns:	The old handler.

This function registers a handler to be called whenever <txtedit_prequit> is called and a shutdown is allowed to proceed. If {/}h==0{/} then the handler is removed.DATA�txtedit_register_undofail_handler
Syntax:	<txtedit_undofail_handler> txtedit_register_undofail_handler (txtedit_undofail_handler h, void *handle);
Header:	<txtedit.h=>txtedit>

Returns:	The old handler.

This function registers a handler to be called whenever the modification made to an edited file cannot be undone (in conjunction with an update handler). If {/}h==0{/} then the handler is removed.DATA�txtopt.h
This header declares two functions dealing with text editing options.

Functions:
{align centre}
<txtopt_set_name>
<txtopt_get_name>DIR$TTԶ
F������$<get_name�
F���O��$set_nameDATA<txtopt_get_name
Syntax:	char *txtopt_get_name (void);
Header:	<txtopt.h=>txtopt>

Returns:	Pointer to the name.

This function gets the first part of the name used as a system variable for setting text editing options (the last part being "$Options"). It defaults to "Edit" ie the variable is "Edit$Options".DATAtxtopt_set_name
Syntax:	void txtopt_set_name (char *name);
Header:	<txtopt.h=>txtopt>

This function sets the first part of the name used as a system variable for setting text editing options (the last part being "$Options"). It defaults to "Edit$Options".DATA�txtscrap.h
This header declares functions to coordinate a unique txt selection among mant txt objects.

Functions:
{align centre}
<txtscrap_setselect>
<txtscrap_selectowner>DIR$TT$�
F�����$�selectowner�
F�����$�setselectDATA�txtscrap_selectowner
Syntax:	<txt> txtscrap_selectowner (void);
Header:	<txtscrap.h=>txtscrap>

Returns:	Handle of the txt holding selection.

This function returns the current holder of the selection, or 0 if none.DATA�txtscrap_setselect
Syntax:	void txtscrap_setselect (<txt> t, <txt_index> from, txt_index to);
Header:	<txtscrap.h=>txtscrap>

This function calls {fCode}<txt_setselect>(t,from,to){f} and remembers /t/. If another txt object currently holds the selection then this is first cleared. If /from/ >= /to/ then the selection will be unset and /t/ will not be remembered. A txt must be not destroyed while still holding the selection.DATA�txtwin.h
This header declares functions for multiple windows containing the same text object.

Functions:

#table columns 2
<txtwin_new>
<txtwin_number>
<txtwin_dispose>
<txtwin_setcurrentwindow>
#endtableDIR$��$�
F���~*�$�dispose�
F���x�$new�
F����$�$�number��
F����/�$YsetcurrentwindowDATA�txtwin_dispose
Syntax:	void txtwin_dispose (<txt> t);
Header:	<txtwin.h=>txtwin>

This function removes a window on the text /t/. It has no effect if only one window is left on /t/.DATAtxtwin_new
Syntax:	void txtwin_new (<txt> t);
Header:	<txtwin.h=>txtwin>

This function creates an extra window on a given text object. The created window will be in the same style as for <txt_new>, with the same title information. The window will be made visible.DATA�txtwin_number
Syntax:	int txtwin_number (<txt> t);
Header:	<txtwin.h=>txtwin>

Returns:	Number of windows.

This function informs you of the number of window currently on a given text /t/.DATAYtxtwin_setcurrentwindow
Syntax:	void txtwin_setcurrentwindow (<txt> t);
Header:	<txtwin.h=>txtwin>

This function ensures that the last window to which the last event was delivered is the current window on the given text. This should be called when making menus, since the same menu structure is attached to all windows on the same text.DIR$����
F�����U&�AND_SPRX�
F����+�$�arrayseg��
F���#�$�bufsize��
F���w��$�charat��
F������$�charatdotp�
F����A�$charoption��
F����,�$�charoptions�
F�����$@charsatdotX�
F�����$�delete��
F���y�$�dispose��
F���p��$�disposemarkerx�
F���nj�$�dotp�
F����u�$�event_procD�
F���-Y�$Ieventcode��
F�����$qeventhandler�
F�����$�get��
F������$-h(�
F�����$~hide��
F���QI�$�index,�
F���g��$�indexofmarker�
F���� �"�init��
F���yx�$�insertchar0�
F����{�$�insertstring��
F����H�$xlastrefH�
F����P�$�marker��
F����f�$�mouseeventflag|�
F���(u�$�movedotl�
F������$�movedottomarker�
F������$�movehorizontal��
F���!�"movemarker��
F������$)movevertical�
F����$vnew��
F������$�newmarkerd�
F���"�U&�ONLY�
F���-��$�queue��
F�����$@readeventhandler$�
F������$�replaceatend�
F������$replacechars4�
F���P��$�selectend�
F�����$�selectset��
F���%��$�selectstart��
F���[)�$.setbufsize��
F���b9�$�setcharoptions��
F���Mf�$�setdisplayok��
F����!�"setdot��
F���]\�$�setlastref��
F���:��$setselect��
F�����$�settitle��
F�����$�showH�
F����p�$sizeH�
F���&3�$�syshandle�
F�����$�unget�
F�����$*visiblecolcount�
F������$visiblelinecountDATA�TXT_AND_SPR
This macro is defined in <TimsLib:Icon.h=>Icon_TL>. It is the value the returned by <ICON_TYPE> when the icon in question is a 'text and sprite' icon. It is defined as 3.DATA�txt_arrayseg
Syntax:	void txt_arrayseg (<txt> t, <txt_index> at, char **a, int *n);
Header:	<txt.h=>txt_h>

This function gives a direct pointer into the memory used to hold the characters in a text. /at/ is the index into the text, {/}*a{/} will point at the character whose index in the text is /at/, and {/}*n{/} will contain the number of contiguous bytes after /at/. You may alter the text...DATA�txt_bufsize
Syntax:	int txt_bufsize (<txt> t);
Header:	<txt.h=>txt_h>

Returns:	Size of the buffer.

This function informs you how many characters can be stored in the buffer, before more memory needs to be requested from the OS.DATA�txt_charat
Syntax:	char txt_charat (<txt> t, <txt_index> i);
Header:	<txt.h=>txt_h>

Returns:	The character.

This function reads the character at the given index in the array. It returns 0 if the index is at/beyond the end.DATA�txt_charatdot
Syntax:	char txt_charatdot (<txt> t);
Header:	<txt.h=>txt_h>

Returns:	The character at "dot".

This function reads the character at the "dot".DATAtxt_charoption
This type is defined in <txt.h=>txt_h>. It is the following enumerated type:
{wrap off}
\{
  txt_DISPLAY	= 1,	/* display changes as made */
  txt_CARET	= 2,	/* display current textpos */
  txt_UPDATED	= 4	/* set if changed */
}

It defines the values of flag bits.DATA�txt_charoptions
Syntax:	<txt_charoption> txt_charoptions (<txt> t);
Header:	<txt.h=>txt_h>

Returns: The currently set options.DATA@txt_charsatdot
Syntax:	void txt_charsatdot (<txt> t, char *buffer, int *n);
Header:	<txt.h=>txt_h>

Returns:	The character.

This function copies at most {/}*n{/} characters from the "dot" in the array, into a supplied buffer. If {/}*n{/} characters cannot be copied, {/}*n{/} is updated to report how many were.DATA�txt_delete
Syntax:	void txt_delete (<txt> t, int n);
Header:	<txt.h=>txt_h>

This function deletes /n/ characters from the "dot" onwards.DATA�txt_dispose
Syntax:	void txt_dispose (<txt> *t);
Header:	<txt.h=>txt_h>

This function destroys a text and the window associated with it.DATA�txt_disposemarker
Syntax:	void txt_disposemarker (<txt> t, <txt_marker> *mark);
Header:	<txt.h=>txt_h>

This function disposes of the given marker. This MUST be done when the marker is no longer in use, otherwise it will still be updated.DATA�txt_dot
Syntax:	<txt_index> txt_dot (<txt> t);
Header:	<txt.h=>txt_h>

Returns:	Index into the character array.

This function returns the position of the "dot" ie the current editing position of the text. 0 is before the first character.DATA�txt_event_proc
This type is defined in <txt.h=>txt_h>. It is the function type for text event handlers. Functions should be of the form:
{wrap off}
{fCode;align centre}void myfunc (<txt> t, void *hnd);DATAItxt_eventcode
This type is defined in <txt.h=>txt_h> as an /int/.DATAqtxt_eventhandler
Syntax:	void txt_eventhandler (<txt> t, <txt_event_proc> func, void *hnd);
Header:	<txt.h=>txt_h>

This function registers an eventhandler function for a given text, which will be called whenever there is a value ready which can be picked up by <txt_get>. /hnd/ is passed straight to the handler. If {/}func=0{/} then no function is registered.DATA�txt_get
Syntax:	<txt_eventcode> txt_get (<txt> t);
Header:	<txt.h=>txt_h>

Returns:	The event code.

This function gives the next user event code to the caller. The returned code can be ASCII, or various other values for function keys.DATA-txt.h
This header declares functions for handling texts, ie windows like !Edit's, or other similar slow text displays (but not nice fast ones like !StrongED!).

Functions:

#Table 15
<txt_new>
<txt_show>
<txt_hide>
<txt_settitle>
<txt_dispose>
<txt_bufsize>
<txt_setbufsize>
<txt_charoptions>
<txt_setcharoptions>
<txt_lastref>
<txt_setlastref>
<txt_setdisplayok>
<txt_dot>
<txt_size>
<txt_setdot>
<txt_movedot>
<txt_insertchar>
<txt_insertstring>
<txt_delete>
<txt_replacechars>
<txt_charatdot>
<txt_charat>
<txt_charsatdot>
<txt_replaceatend>
<txt_movevertical>
<txt_movehorizontal>
<txt_visiblelinecount>
<txt_visiblecolcount>
<txt_newmarker>
<txt_movemarker>
<txt_movedottomarker>
<txt_indexofmarker>
<txt_disposemarker>
<txt_selectset>
<txt_selectstart>
<txt_selectend>
<txt_setselect>
<txt_get>
<txt_queue>
<txt_unget>
<txt_eventhandler>
<txt_readeventhandler>
<txt_arrayseg>
<txt_syshandle>
<txt_init>
#EndTable

Types:

#indent 5
#Table 3 21
<txt>
<txt_charoption>
<txt_index>
<txt_marker>
<txt_eventcode>
<txt_mouseeventflag>
<txt_event_proc>
#EndTableDATA~txt_hide
Syntax:	void txt_hide (<txt> t);
Header:	<txt.h=>txt_h>

This function hides a text which has been displayed.DATA�txt_index
This type is defined in <txt.h=>txt_h> as an index into the character array. It is actually defined as an /int/.DATA�txt_indexofmarker
Syntax:	<txt_index> txt_indexofmarker (<txt> t, <txt_marker> *mark);
Header:	<txt.h=>txt_h>

Returns:	Index of marker.

This function gives the current index into the array of a given marker.DATA�txt_init
Syntax:  void txt_init (void);
Header:  <txt.h=>txt_h>

This function initialises the txt module of the
library.DATA�txt_insertchar
Syntax:	void txt_insertchar (<txt> t, char c);
Header:	<txt.h=>txt_h>

This function inserts a character into the text just after the "dot".DATA�txt_insertstring
Syntax:	void txt_insertstring (<txt> t, char *s);
Header:	<txt.h=>txt_h>

This function inserts the given character string into a text.DATAxtxt_lastref
Syntax:	int txt_lastref (<txt> t);
Header:	<txt.h=>txt_h>

Returns:	Current value of {*}last_ref{*}.DATA�txt_marker
This type is defined in <txt.h=>txt_h>. It contains a marker position. Markers are indices into the array. Once set, a marker will point to the same character in the array regardless of insertions or deletions. If the character is deleted, the next character is pointed to. It is defined as the following structure:

  \{
    int a;
    int b;
  }

Self-explanatory I think. Not.DATA�txt_mouseeventflag
This is an enumerated type defined in <txt.h=>txt_h> as follows:

  \{
  � txt_MSELECT	=  0x01000000,
    txt_MEXTEND	=  0x02000000,
    txt_MSELOLD	=  0x04000000,
    txt_MEXTOLD	=  0x08000000,
    txt_MEXACT	=  0x10000000,
    txt_EXTRACODE	=  0x40000000,
    txt_MOUSECODE	= ~0x7fffffff
  }

A mouse event produces an event code with bit 31 set and bits 24-28 as the mouseeventflags value.DATA�txt_movedot
Syntax:	void txt_movedot (<txt> t, <txt_index> by);
Header:	<txt.h=>txt_h>

This function moves the "dot" by a given distance in the array. It the resultant position is outside the array, it is set to the beginning/end.DATA�txt_movedottomarker
Syntax:	void txt_movedottomarker (<txt> t, <txt_marker> *mark);
Header:	<txt.h=>txt_h>

This function moves the "dot" to a given marker.DATA�txt_movehorizontal
Syntax:	void txt_movehorizontal (<txt> t, int by);
Header:	<txt.h=>txt_h>

This function moves the "dot" by a specified number of columns, keeping the caret in the same vertical position.DATAtxt_movemarker
Syntax:  void txt_movemarker (<txt> t,
         <txt_marker> *mark, <txt_index> to);
Header:  <txt.h=>txt_h>

This function changes an exisiting marker to
point to 'to'. The marker must have been
initialised to point at this text object.DATA)txt_movevertical
Syntax:	void txt_movevertical (<txt> t, int by, int movetext)
Header:	<txt.h=>txt_h>

This function moves the "dot" by a specified number of text lines, keeping the caret in the same horizontal position. If /movetext/ is non-zero then the text moves rather than the caret.DATAvtxt_new
Syntax:		<txt> txt_new (char *title);
Header:		<txt.h=>txt_h>

Returns:	Pointer to the newly created text.

This function creates a new text object, containing no characters, with a given title (to appear in its window). This function does not result in the text being displayed on the screen. 0 is returned if there is not enough space to create the object.DATA�txt_newmarker
Syntax:	void txt_newmarker (<txt> t, <txt_marker> *mark);
Header:	<txt.h=>txt_h>

This function initialises a new marker, pointed to by /mark/. It is set to be at the current "dot" position.DATA�TXT_ONLY
This macro is defined in <TimsLib:Icon.h=>Icon_TL>. It is the value the returned by <ICON_TYPE> when the icon in question is a 'text only' icon. It is defined as 1.DATA�txt_queue
Syntax:	int txt_queue (<txt> t);
Header:	<txt.h=>txt_h>

Returns:	Number of buffered event codes.

This function reads how many event codes are currently buffered for a given text.DATA@txt_readeventhandler
Syntax:	void txt_readeventhandler (<txt> t, <txt_event_proc> *func, void **hnd);
Header:	<txt.h=>txt_h>

This function reads the currently registered eventhandler function associated with a given text, and returns both its pointer and its handle (in {/}*func{/} and {/}*hnd{/} respectively).DATA�txt_replaceatend
Syntax:	void txt_replaceatend (<txt> t, int ntodel, char *s, int ntoins);
Header:	<txt.h=>txt_h>

This function deletes /ntodel/ characters from
the end of the array and then inserts /ntoins/
characters from /s/.DATAtxt_replacechars
Syntax:	void txt_replacechars (<txt> t, int ntodel, char *a, int ntoins);
Header:	<txt.h=>txt_h>

This function deletes /ntodel/ characters from the "dot" onwards, and inserts /ntoins/ characters at the same point. The inserted characters are pointed to by /a/.DATA�txt_selectend
Syntax:	<txt_index> txt_selectend (<txt> t);
Header:	<txt.h=>txt_h>

Returns:	Index of a selection end.

This function gives the index into the array of the end of the current selection.DATA�txt_selectset
Syntax:	<BOOL> txt_selectset (<txt> t);
Header:	<txt.h=>txt_h>

Returns:	<TRUE> if there is a selection.

This function tells you whether there is a selection made in a text.DATA�txt_selectstart
Syntax:	<txt_index> txt_selectstart (<txt> t);
Header:	<txt.h=>txt_h>

Returns:	Index of a selection start.

This function gives the index into the array of the start of the current selection.DATA.txt_setbufsize
Syntax:	<BOOL> txt_setbufsize (<txt> t, int size);
Header:	<txt.h=>txt_h>

Returns:	<TRUE> if successful.

This function allocates more space for the text buffer. It increases the buffer size, such that at least /size/ characters can be stored, before requiring more from the OS.DATA�txt_setcharoptions
Syntax:	void txt_setcharoptions (<txt> t, <txt_charoption> m, txt_charoption f);
Header:	<txt.h=>txt_h>

This function sets the current options as follows:
{wrap off}
{fCode;align centre}Current = (Previous & ~m) | (m & f)DATA�txt_setdisplayok
Syntax:	void txt_setdisplayok (<txt> t);
Header:	<txt.h=>txt_h>

This function sets the display flag in charoptions for a given text. You may have unset the display flag during a long update to the text.DATAtxt_setdot
Syntax:  void txt_setdot (<txt> t, <txt_index> i);
Header:  <txt.h=>txt_h>

This function sets the "dot" at a given index
in the array of characters. If 'i' is outside
the bounds of the array it is set to the
beginning/end as appropriate.DATA�txt_setlastref
Syntax:	void txt_setlastref (<txt> t, int x);
Header:	<txt.h=>txt_h>

This function sets the value of {*}last_ref{*} to /x/. A subsequent {*}Message_DataSaved{*} can mark the data as unmodified.DATAtxt_setselect
Syntax:	void txt_setselect (<txt> t, <txt_index> start, txt_index end);
Header:	<txt.h=>txt_h>

Returns:	Index of a selection end.

This function sets a selection in a given text, from /start/ to /end/. If {/}start>=end{/} then the selection will be unset.DATA�txt_settitle
Syntax:	void txt_settitle (<txt> t, char *title);
Header:	<txt.h=>txt_h>

This function changes the title of the window used to display a text object. Long titles may be truncated when displayed.DATA�txt_show
Syntax:	void txt_show (<txt> t);
Header:	<txt.h=>txt_h>

This function displays a given text object in a free standing window of its own. /t/ should have been created using <txt_new>.DATAtxt_size
Syntax:	<txt_index> txt_size (<txt> t);
Header:	<txt.h=>txt_h>

Returns:	Index into the character array.

This function returns the maximum position of the "dot" ie the current editing position of the text. 0 is before the first character.DATA�txt_syshandle
Syntax:	int txt_syshandle (<txt> t);
Header:	<txt.h=>txt_h>

Returns:	Handle for the text.

This function obtains a system-dependent handle on the object underlying a text.DATA�txt_unget
Syntax:	void txt_unget (<txt> t, <txt_eventcode> code);
Header:	<txt.h=>txt_h>

This function puts an event code back on the front of the event queue for a given text.DATA*txt_visiblecolcount
Syntax:	int txt_visiblecolcount (<txt> t);
Header:	<txt.h=>txt_h>

Returns:	Number of visible columns.

This function gives the number of columns currently visible. If a fixed pitch font is in use, then this actually returns the number of columns, else it makes a guess!DATAtxt_visiblelinecount
Syntax:	int txt_visiblelinecount (<txt> t);
Header:	<txt.h=>txt_h>

Returns:	Number of visible lines.

This function gives the number of lines visible or partially visible on the display. It takes into account the window size and font etc.DATA�typdat.h
This defines just one type: *typdat*. It is a load/execute address pair as follows:

  \{
    int ex;
    int ld;
  }

Wow.DATA�typedef
In addition to the built in types, you can define your own with /typedef/. Simply prefix a normal variable declaration with /typedef/ and a new type is defined with the name normally used as the variable name.

eg

{fCode;align centre}typedef int block[6];{f;align}

/block/ is now a new defined as an array of 6 integers. It can be used anytime eg:

{fCode;align centre}block a,b,c;{f;align}

Declares three blocks /a/, /b/ and /c/.DIR$,,|F�����/(UCHAR_�F�����/(UINT_�F�����/(ULONG_�F������"�undef@F������"ungetcTF������"�union	F������$=UNUSEDD
F���F�/(UNUSED_�F���k�/(USHRT_DIR$((�F���b�"�MAXDATA�UCHAR_MAX
This macro is defined in <limits.h> and represents the maximum value which can be stored in an unsigned char (the minimum value which can be stored in an unsigned char is always 0). In Easy C it is defined as 0xffU (255).DIR$((�F����
�"�MAXDATA�UINT_MAX
This macro is defined in <limits.h> and represents the maximum value which can be stored in an unsigned int (the minimum value is always 0). In Easy C it is defined as 0xffffffffU (4294967295).DIR$((�F�����"�MAXDATA�ULONG_MAX
This macro is defined in <limits.h> and represents the maximum value which can be stored in an unsigned long int (the minimum value is always 0). In Easy C it is defined as 0xffffffffU (4294967295).DATA�#undef
This directive undefines a macro. Any future references to this macro will throw up errors (except of course <#if=>if_>, <#ifdef=>ifdef> and <#ifndef=>ifndef>.DATAungetc
Syntax:	int ungetc (int c, <FILE> *stream);
Header:	<stdio.h=>stdio>

Returns:	/c/, or <EOF> if there is an error.

This function pushes the character in /c/ back onto the input stream specified. Any subsequent read operations on that stream will return the characters pushed back (in reverse order). If you call a file positioning function (<fseek>, <fsetpos> or <rewind>) the pushed back characters are discarded. You mustn't call /ungetc/ too many times in succession or it will fail.

NB /c/ must not equal EOF.DATA�union
A union is similar to a <structure=>struct>. It is defined in the same way, but all variables are mapped into the same memory space. This means you can access a value in different ways eg.

  union
  \{
    int   word : 16;
    char  byte[2];
  } my_union;

This declares {/}my_union.word{/} as a 16-bit integer. The two �8-bit� parts can be accessed as {/}my_union.byte[0]{/} and {/}my_union.byte[1]{/} respectively.DATA=UNUSED
The macro *UNUSED* is defined in <TimsLib:Core.h=>Core_TL> and <DeskLib:Core.h=>Core>. It is used to avoid compiler warnings when you don't actually use one of the parameters passed to a function, eg:
{wrap off}
{fCode}<BOOL> mouseclick (<event_pollblock> *e, void *ref)
\{
     UNUSED(ref);
     ...
}DIR$((l
F���g��$MARGDATAMUNUSED_ARG
The macro {*}UNUSED_ARG{*} is defined in <TimsLib:Core.h=>Core_TL> and <DeskLib:Core.h=>Core>. It is used to avoid compiler warnings when you don't actually use one of the parameters passed to a function, eg:
{wrap off}
{fCode}<BOOL> mouseclick (<event_pollblock> *e, void *ref)
\{
     UNUSED_ARG(ref);
     ...
}DIR$((�F����"�MAXDATA�USHRT_MAX
This macro is defined in <limits.h> and represents the maximum value which can be stored in an unsigned short int (the minimum value is always 0). In Easy C it is defined as 0xffffffffU (4294967295).DIR$��@F���U{T&]VALID�F���7&�Validation4F�����/0Validation_�F�����/�va_`F����WT&tVERIFY�F���d�/,VERIFY_LF����"Kvfprintf�F����<�$�visdelay`F�����/�visdelay_� F�����"8vprintf"F����$�"FvsprintfDATA]VALID
Syntax:	BOOL VALID (void *pointer);
Header:	<TimsLib:Check.h=>Check>

Returns:	<TRUE> if the pointer is valid.

/pointer/ is checked and if it is not valid (ie memory can not be read/written at this location) then <FALSE> is returned. If {*}_DEBUG{*} is defined then the <Trace=>Trace_TL> module is used to produce helpful information.DATA�DeskLib:Validation.h
Version: 1.00 (22 Mar 1992)
#line
This header file declares just one function:

{align centre}<Validation_ScanString>DIR$00dF���<&7&�ScanStringDATA�Validation_ScanString
Syntax:	int Validation_ScanString (char *string, char tag);
Header:	<DeskLib:Validation.h=>Validation>

Returns:	Offset within string, 0 if not found.

This function scans the string for the character in /tag/, and returns the offset of the next character. The tag character must be either the first character in the string, or immediately follow a semicolon.DIR$��pF���藿"�arg�F������"�end�F���t��"�start�F���+6�"�listDATA�va_arg
Syntax:	type va_arg (<va_list> ap, type);
Header:	<stdarg.h=>stdarg>

Returns:	The argument fetched.

This function (which is actually defined as a function-like macro), fetches the next argument from the variable argument list. /ap/ is the same as it was for the <va_start> call. /type/ indicates the expected type of the next argument, and is the type of the value returned.DATA�va_end
Syntax:	void va_end (<va_list> ap);
Header:	<stdarg.h=>stdarg>

This function (which is actually defined as a function-like macro), finishes argument line processing. /ap/ should be the same as was passed to <va_start>.DATA�va_start
Syntax:	void va_start (<va_list> ap, arg);
Header:	<stdarg.h=>stdarg>

This function (which is actually defined as a function-like macro), sets up argument line processing. /ap/ is used as workspace for the function and subsequent calls. /arg/ is the argument before the variable argument list.

Example:

{fCode}int printf (char *format, ...)
\{
va_list ap;
    va_start(ap,format);
    ...
}{f}DATA�va_list
This type is de�ned in <stdarg.h=>stdarg> and is used to allow the compiler to keep track of where it is in variable argument lists. In Easy C it is de�ned:
{align centre;fCode}typedef char *va_list[1];DATAtVERIFY
Syntax:	VERIFY (<BOOL> expr);
Header:	<TimsLib:Check.h=>Check>

If the macro {*}_DEBUG{*} is not defined, /expr/ is evaluated but no further action is taken. Otherwise, /expr/ is evaluated and if it is <FALSE> then an error box is displayed detailing the assertion failure.

This is useful if /expr/ contains a function call which must be made, for example.DIR$,,F����fT&KVALIDDATAKVERIFY_VALID
Syntax:	VERIFY_VALID (void *pointer);
Header:	<TimsLib:Check.h=>Check>

/pointer/ is checked and if it is not valid (ie memory can not be read/written at this location) then an assertion failure occurs. If the macro {*}_DEBUG{*} is not defined then wording more appropriate to a public release version is used.DATAKvfprintf
Syntax:	int vfprintf (<FILE> *stream, char *format, <va_list> args);
Header:	<stdio.h=>stdio>

Returns:	The number of characters output, or a negative value if there was an error.

This function is identical to <fprintf>, but the arguments are replaced by /args/, which should have been initialised by <va_start>. DATA�visdelay.h
The \<visdelay.h> header declares functions for handling the <Hourglass=>SWI:Hourglass_>.

#Table 2
<visdelay_begin>
<visdelay_end>
<visdelay_init>
<visdelay_percent>  
#EndTableDIR$���F����B�$�begin�F����F�$�end�F����J�$init�F����Q�$percentDATA�visdelay_begin
Syntax:	void visdelay_begin (void);
Header:	<visdelay.h=>visdelay>

This function changes the mouse pointer to show the use that some delay will occur. At the moment it performs the same as the SWI <Hourglass_On=>SWI:Hourglass_On>.DATA�visdelay_end
Syntax:	void visdelay_end (void);
Header:	<visdelay.h=>visdelay>

This function removes the indication of the delay. At the moment it is the same as the SWI <Hourglass_Off=>SWI:Hourglass_Off>.DATAvisdelay_init
Syntax:	void visdelay_init (void);
Header:	<visdelay.h=>visdelay>

This function initialises the visdelay system. At the moment it does absolutely nothing, as the Hourglass needs no initialisation. However, it allows for future expansion.DATAvisdelay_percent
Syntax:	void visdelay_percent (int p);
Header:	<visdelay.h=>visdelay>

This function indicates to the user that the delay is /p/ percent completed. At the moment it performs the same as the SWI <Hourglass_Percentage=>SWI:Hourglass_Percentage>.DATA8vprintf
Syntax:	int vprintf (char *format, <va_list> args);
Header:	<stdio.h=>stdio>

Returns:	The number of characters output, or a negative value if there was an error.

This function is identical to <printf>, but the arguments are replaced by /args/, which should have been initialised by <va_start>. DATAFvsprintf
Syntax:	int vsprintf (char *out, char *format, <va_list> args);
Header:	<stdio.h=>stdio>

Returns:	The number of characters output, or a negative value if there was an error.

This function is identical to <sprintf>, but the arguments are replaced by /args/, which should have been initialised by <va_start>. DIR$PP�%F���8�f%tWAssert'F���g�/(wchar_L(F�����"Ewcstombs�*F������"4wctomb�,F����a�$
werr�-F���*�"kwhileD0F���^�G&�Wimp2F����gX&�WimpExt�3F�����/�WimpExt_�8F�����H&�WimpSWIs�=F�����$�wimptP?F�����/Pwimpt_�OF���F��/HWimp_x9F������$iwin�;F���WEL&.Window>F�����/�Window_�pF���B�/pwin_�F�����/�w_DATAtDeskLib:WAssert.h
Version: 1.01 (19 Jul 1994)
#line
This header is the Wimp version of <assert.h=>assert>.

It declares one function, assert, which is identical in use to the ANSI version.

This has actually been fixed now and the function only works if the macro _DEBUG is defined when you include this header, rather than the opposite way round as it was before.DIR$((<'F���F��"
tDATA
wchar_t
The type {/}wchar_t{/} is defined in <stddef.h=>stddef>, and <stdlib.h=>stdlib> as an object capable of holding distinct codes for all member of the largest extended character supported by the compiler. In Easy C and Desktop C it is defined as an /int/.DATAEwcstombs
Syntax:	<size_t> wcstombs (char *s, <wchar_t> *pwcs, size_t n);
Header:	<stdlib.h=>stdlib>

Returns:	See below.

Converts a sequence of codes that correspond to multibyte characters from the array pointed to by /pwcs/ into a sequence of multibyte characters into the array pointed to by /s/, stopping if a multibyte character would exceed the limit of /n/ total bytes or if a null character is stored. Each code is converted as if by a call to the <wctomb> function.

If an invalid code is found, this returns -1, otherwise it returns the number of bytes modified.DATA4wctomb
Syntax:	int wctomb (char *s, <wchar_t> wchar);
Header:	<stdlib.h=>stdlib>

Returns:	See below.

If /s/ is not a null pointer, then this function determines the number of bytes needed to represent the multibyte character corresponding to the code whose value is /wchar/ and stores the multibyte character in /s/, if /s/ is not <NULL>. If /s/ is not a valid multibyte character it returns -1, otherwise it returns the length.

If /s/ is a null pointer, this function returns zero if multibyte character encodings do not have state-dependent encodings.DATA
werr.h
This header declares just one function:

Syntax:	void werr (int fatal, char *format, ...);

This function reports an error to the user, under control of the <format string=>pform_>, /format/. If /fatal/ is non-zero then the program exits after the error.DATAkwhile
This command defines a /while/ loop. It is also used as part of a <do> loop. A /while/ loop has the general form:

{fCode;align centre}while (\<condition>) \<statement>;{f;align}

\<condition>	is evaluated each time, and if it evaluates to a non-zero value, ie is true, the \<statement> is executed. This repeated until the condition is false.

\<statement>	is the command executed within the loop. It can be a compound statement ie several statements enclosed in braces \{}, in which case there is no final semicolon.

eg for an infinite loop:

{fCode;align centre}while (1) <puts>("Infinite!");{f;align}DATA�DeskLib:Wimp.h
Version: 1.12 (26 Jun 1993)
#line
This header defines LOTS of types for handling the Wimp.

#Table 6 23
<Wimp colours/palettes=>w_colpal_>
<Wimp icon data=>w_icondat_>
<Window data=>w_windat_>
<Mouse/pointer info=>w_mouseinf_>
<Wimp drag data =>w_dragdat_>
<Wimp errors=>w_wimperr_>
<Menus=>w_menus_>
<Caret/keypress data=>w_caret_>
<Wimp message data=>w_messdat_>
<Wimp events=>w_events_>
<Miscellaneous=>w_misc_>
#EndTableDATA�TimsLib:WimpExt.h
#parent ro_tlib_
This header defines four function-like macros for accessing some WimpExtension SWIs.

Function-like macros:

#indent 4
#table columns 2
<WimpExt_Initialise>
<WimpExt_Closedown>
<WimpExt_Redraw>
<WimpExt_PlotBorder>
#endtable
#indent

WimpExtension is a PD module produced by DoggySoft which provides many useful functions for Wimp programming. However, WimpExtension 2 is now available...DIR$��L4F���rX&Closedown`5F����mX& Initialise�6F����zX&9PlotBorder�7F����uX&"RedrawDATAWimpExt_Closedown
Syntax:	<os_error> *WimpExt_Closedown (void);
Header:	<TimsLib:WimpExt.h=>WimpExt>

Returns:	Pointer to error, or <NULL> if none.

This function calls the SWI WimpExt_Closedown. For more information see the documentation provided with WimpExtension.DATA WimpExt_Initialise
Syntax:	<os_error> *WimpExt_Initialise (unsigned flags);
Header:	<TimsLib:WimpExt.h=>WimpExt>

Returns:	Pointer to error, or <NULL> if none.

This function calls the SWI WimpExt_Initialise. For more information see the documentation provided with WimpExtension.DATA9WimpExt_PlotBorder
Syntax:	<os_error> *WimpExt_PlotBorder (<window_handle> win, <icon_block> *icon);
Header:	<TimsLib:WimpExt.h=>WimpExt>

Returns:	Pointer to error, or <NULL> if none.

This function calls the SWI WimpExt_PlotBorder. For more information see the documentation provided with WimpExtension.DATA"WimpExt_Redraw
Syntax:	<os_error> *WimpExt_Redraw (<window_redrawblock> *redraw);
Header:	<TimsLib:WimpExt.h=>WimpExt>

Returns:	Pointer to error, or <NULL> if none.

This function calls the SWI WimpExt_Redraw. For more information see the documentation provided with WimpExtension.DATA�DeskLib:WimpSWIs.h
Version: 1.07 (22 Oct 1994)
#line
This header declares functions for low-level handling of the Wimp. For most features, an easier-to-use high-level function is available. These calls are equivalent to the <SWIs=>SWI:Wimp_> of the same name.

#Table 17 22
<Wimp_Initialise>
<Wimp_CreateWindow>
<Wimp_CreateIcon>
<Wimp_DeleteWindow>
<Wimp_DeleteIcon>
<Wimp_OpenWindow>
<Wimp_CloseWindow>
<Wimp_Poll>
<Wimp_Poll3>
<Wimp_RedrawWindow>
<Wimp_UpdateWindow>
<Wimp_GetRectangle>
<Wimp_GetWindowState>
<Wimp_GetWindowInfo>
<Wimp_SetIconState>
<Wimp_GetIconState>
<Wimp_GetPointerInfo>
<Wimp_DragBox>
<Wimp_ForceRedraw>
<Wimp_SetCaretPosition>
<Wimp_GetCaretPosition>
<Wimp_CreateMenu>
<Wimp_DecodeMenu>
<Wimp_WhichIcon>
<Wimp_SetExtent>
<Wimp_SetPointerShape>
<Wimp_OpenTemplate>
<Wimp_CloseTemplate>
<Wimp_LoadTemplate>
<Wimp_ProcessKey>
<Wimp_CloseDown>
<Wimp_StartTask>
<Wimp_ReportError>
<Wimp_GetWindowOutline>
<Wimp_PollIdle>
<Wimp_PollIdle3>
<Wimp_PlotIcon>
<Wimp_SetMode>
<Wimp_SetPalette>
<Wimp_ReadPalette>
<Wimp_SetColour>
<Wimp_SendMessage>
<Wimp_CreateSubMenu>
<Wimp_SpriteOp>
<Wimp_BaseOfSprites>
<Wimp_BlockCopy>
<Wimp_SlotSize>
<Wimp_ReadPixTrans>
<Wimp_CommandWindow>
<Wimp_TransferBlock>
<Wimp_SetFontColours>
#EndTableDATA�wimpt.h
This header declares functions for low-level Wimp handling.

Functions:

#Table 9 21
<wimpt_bpp>
<wimpt_checkmode>
<wimpt_complain>
<wimpt_dx>
<wimpt_dy>
<wimpt_fake_event>
<wimpt_forceredraw>
<wimpt_init>
<wimpt_last_event>
<wimpt_last_event_was_a_key>
<wimpt_mode>
<wimpt_noerr>
<wimpt_poll>
<wimpt_programname>
<wimpt_reporterror>
<wimpt_task>
<wimpt_wimpversion>
#EndTableDIR$PP�AF���r��$�bppTBF������$�checkmode CF���P��$�complain DF���m��$�dx�DF���t�$�dy�EF�����$�fake_event@FF����
�$�forceredraw�FF�����$Pinit HF�����$�last_event�HF���|�$�last_event_was_a_key�IF����!�$�mode�JF���'�$�noerrTKF����1�$=poll�LF����6�$�programnameTMF���J;�$reporterrorXNF���/?�$�task�NF����B�$�wimpversionDATA�wimpt_bpp
Syntax:	int wimpt_bpp (void);
Header:	<wimpt.h=>wimpt>

Returns:	Bits per screen pixel.

The value is only valid if <wimpt_checkmode> is called at redraw events.DATA�wimpt_checkmode
Syntax:		<BOOL> wimpt_checkmode (void);
Header:<wimpt.h=>wimpt>

Returns:	<TRUE> if screen mode has changed.

This function registers with the wimpt module the current screen mode.DATA�wimpt_complain
Syntax:	<os_error> *wimpt_complain (os_error *e);
Header:	<wimpt.h=>wimpt>

Returns:	Pointer to error, or <NULL> if none.

This function reports the error if {/}e!=0{/}, and returns it. Use this function if the error is not fatal.DATA�wimpt_dx
Syntax:	int wimpt_dx (void);
Header:	<wimpt.h=>wimpt>

Returns:	OS units per screen pixel (X).

The value is only valid if <wimpt_checkmode> is called at redraw events.DATA�wimpt_dy
Syntax:	int wimpt_dy (void);
Header:	<wimpt.h=>wimpt>

Returns:	OS units per screen pixel (Y).

The value is only valid if <wimpt_checkmode> is called at redraw events.DATA�wimpt_fake_event
Syntax:	void wimpt_fake_event (<wimp_eventstr> *blk);
Header:	<wimpt.h=>wimpt>

This function posts an event to be collected by <wimpt_poll>.DATA�wimpt_forceredraw
Syntax:	void wimpt_forceredraw (void);
Header:	<wimpt.h=>wimpt>

This function forces a redraw of the whole screen.DATAPwimpt_init
Syntax:	int wimpt_init (char *programname);
Header:	<wimpt.h=>wimpt>

Returns:	Wimp version number * 100.

This function sets up your program as a Wimp task. It remembers screen mode and sets up signal handlers so that task exits cleanly. Calls <wimp_taskinit> and stores task_id returned. Also installs exit-handler.DATA�wimpt_last_event
Syntax:	<wimp_eventstr> *wimpt_last_event (void);
Header:	<wimpt.h=>wimpt>

Returns:	Pointer to event.

This function returns the last event returned by <wimpt_poll>.DATA�wimpt_last_event_was_a_key
Syntax:	int wimpt_last_event_was_a_key (void);
Header:	<wimpt.h=>wimpt>

Returns:	Non-zero if last event was keystroke.

This function informs you if the last event returned by <wimpt_poll> was a key stroke.DATA�wimpt_mode
Syntax:	int wimpt_mode (void);
Header:	<wimpt.h=>wimpt>

Returns:	The current screen mode.

This function reads the current screen mode. It is only valid if <wimpt_checkmode> is called at redraw events.DATA�wimpt_noerr
Syntax:	void wimpt_noerr (<os_error> *e);
Header:	<wimpt.h=>wimpt>

This function reports the error whose pointer is given, if {/}e!=0{/}.DATA=wimpt_poll
Syntax:	<os_error> *wimpt_poll (<wimp_emask> mask, <wimp_eventstr> *result);
Header:	<wimpt.h=>wimpt>

Returns:	Pointer to error, or <NULL> if none.

This function polls for an event from the Wimp. You should use this rather than <wimp_poll=>wimp_poll_> if you _really_ need to use low-level calls.DATA�wimpt_programname
Syntax:	char *wimpt_programname (void);
Header:	<wimpt.h=>wimpt>

Returns:	Pointer to program name.

This function returns the program name passed to <wimpt_init>.DATAwimpt_reporterror
Syntax:	void wimpt_reporterror (<os_error> *err, <wimp_errflags> flags);
Header:	<wimpt.h=>wimpt>

This function reports an OS error in a dialoue box. It is similar to <wimp_reporterror>, but includes the program name automatically.DATA�wimpt_task
Syntax:	wimp_t wimpt_task (void);
Header:	<wimpt.h=>wimpt>

Returns:	task handle.

This function informs the caller of its task handle.DATA�wimpt_wimpversion
Syntax:	void wimpt_wimpversion (int version);
Header:	<wimpt.h=>wimpt>

This function should be called before calling <wimpt_init>. It tells wimpt what version of the Wimp you want (200, 300, 310 or 311).DIR$HH$hF���іJ&�BaseOfSprites�iF���<R�$�baseofsprites_�jF������$Obbits�kF�����J&�BlockCopy�mF���_�$�blockcopy_�nF���0�$�box�oF����<�$�caretstr�pF����1�$�close_templatetqF���<��$�close_wind0rF�����I&kCloseDown�sF���W8�$�closedown_\tF���Z�I&�CloseTemplatePuF���_I&CloseWindowlvF�����7&=colour�wF����)�")command_tag�xF����)�"�commandwind�yF���~K&FCommandWindow�{F���5��$�commandwindow_�|F����a7&�coord4}F������$Acorrupt_fp_state_on_pollx~F���*�"CorruptFPStateOnPoll�F���BI�$�create_icon��F������$�create_menul�F��� �$%create_submenu��F���ӱ�$create_wind��F����H&BCreateIcon�F���3�I&SCreateMenu@�F����vJ&}CreateSubMenu��F���.�H&RCreateWindow�F�����$Kdecode_menu`�F���)�I&�DecodeMenu�F���*M�$�delete_icon�F�����$�delete_wind��F����I&�DeleteIcon��F�����H&:DeleteWindowԐF����l�$�drag_box��F����fI&�DragBoxH�F������$�dragstr �F���"�$ dragtype@�F����4�$�emask�F����*�"�errflags�F����.�$�etype��F������$�eventdatax�F������$�eventstr(�F������$�font_array��F�����$force_redraw��F����rI&�ForceRedraw��F���a��$�get_caret_post�F���jg�$get_icon_info��F���s/�$�get_point_info��F������$get_rectangle��F������$get_wind_info��F�����$get_wind_state��F�����I&;GetCaretPositionܦF���}VI&6GetIconState�F���]I&mGetPointerInfo��F����;I&)GetRectangle��F����FI&�GetWindowInfo��F���*�I&�GetWindowOutlineH�F����	�$getwindowoutline_\�F���CI&�GetWindowStateX�F���yu�$+h��F�����$�i�F�����$�ibtypeIJF���	�$�icon��F�����$icondata�F������$�iconflags�F���{&�$�icreate��F�����H&Initialise��F����$�initialise_��F���5�$�load_template��F���s�I&!LoadTemplate��F���P7&�MAXNAMEh�F���F��$menuflagsp�F�����$menuhdrt�F������$�menuitem\�F���m��$cmenuptr��F������$�menustr��F����A�$�mousestr��F���=I�$msgaction��F���be�$�msgdataload��F����n�$�msgdataopenL�F����X�$�msgdatasaveH�F���@]�$msgdatasaveokH�F����,�"�msgdevice$�F����H�$�msghdr�F������$�msghelpreply��F����y�$�msghelprequestp�F���|��$�msgprint0�F���po�$�msgramfetch��F���>��$�msgramtransmit��F���-�"�msgsavedeskT�F���z��$+msgstr��F����)H&�NUMBEROFEVENTS�F���K.�$�open_template��F������$�open_wind��F�����$�openstrp�F����I&�OpenTemplate�F����I&OpenWindow�F���_��$palettestr�F������$�paletteword��F����#J&PlotIcon�F������$�ploticon_�F���X7&�point��F����V&�pointer��F����I&�Polld�F����I&�Poll3H�F����"�$9poll_��F���?J&-PollIdle��F����J&RPollIdle3�F���q(�$?pollidle_H�F�����$cProcessKey��F������$�pshapestr��F���5J&4ReadPalette��F���]��$�readpalette_��F���+�J&KReadPixTrans��F������$!readpixtrans_�F���Uf7&�rect��F������$;redraw_wind�F���6�$�redrawstr�F���,*I&�RedrawWindowT�F�����I&3ReportError��F����Y�$reporterror_��F����.�"-ReportErrorR��F������$Lsave_fp_state_on_poll�F����.�"SaveFPStateOnPoll�F����hJ&�SendMessage�F����a�$sendmessage_�F����i�$+sendwmessage�F���Q��$�set_caret_pos�F���\�$�set_extent�F���PV�$Lset_icon_state�F���P5�$�set_point_shape�F�����I&�SetCaretPosition�	F����\J&SetColour�F���Ħ�$�setcolour_hF���=�I&SetExtent�
F������$�SetFontColours F���/NI&`SetIconState�F����(J&cSetMode�F����C�$�setmode_�F���x/J&vSetPaletteF������$�setpalette_�F�����I&CSetPointerShape$F���̓�$XSlotSize|F����U�$�spriteareaPF�����J&8SpriteOp�F���+H�$�spriteop_dF����L�$�spriteop_full@F�����I&�StartTaskF����@�$�starttask_�F����0�"�td F���$=�$�taskcloseD!F���C�$�taskinit�"F���j��$template�#F����K&9TransferBlock0&F���w��$`transferblock_�'F���� �$types_�*F������$[update_wind,F���7I&UpdateWindow$.F������$�w�.F������$Gwcolours0F���31�"wflags 2F������$�which_block�2F���nr�$which_icon�3F����~.
WhichIcon�5F���W�$�wind�7F�����$�winfo�8F����+�$�wstateDATA�Wimp_BaseOfSprites
Syntax:	<os_error> *Wimp_BaseOfSprites (void **rom_base, void **ram_base);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See <wimp_baseofsprites=>wimp_baseofsprites_>

This function returns the addresses of the ROM and RAM parts of the Wimp sprite pool. The RAM address moves around as its contents change.

Acorn recommend that you should not use this function.DATA�wimp_baseofsprites
Syntax:	void *wimp_baseofsprites (void);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to Wimp sprite area.

This function returns the sprite pointer of the Wimp sprite area.DATAOwimp_bbits
This type is defined in <wimp.h=>wimp_h>. It is an enumerated type containing the values of the Wimp button state bits:

  \{
    wimp_BRIGHT	= 0x001,
    wimp_BMID	= 0x002,
    wimp_BLEFT	= 0x004,
    wimp_BDRAGRIGHT	= 0x010,
    wimp_BDRAGLEFT	= 0x040,
    wimp_BCLICKRIGHT	= 0x100,
    wimp_BCLICKLEFT	= 0x400
  }DATA�Wimp_BlockCopy
Syntax:	<os_error> *Wimp_BlockCopy (<window_handle> win, <wimp_box> *source, int x, int y);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See <wimp_blockcopy=>wimp_blockcopy_>.

This function copies a block of work area space (defined by /win/ and {/}source{/}) to another position {/}(x,y){/}. Note that the space copied does not actually have to be visible - the Wimp will ask you to redraw bits that it cannot copy directly.DATA�wimp_blockcopy
Syntax:	<os_error> *wimp_blockcopy (<wimp_w> win, <wimp_box> *src, int x, int y);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function copies a block of work area from /src/ to {/}(x,y){/}.DATA�wimp_box
This type is defined in <wimp.h=>wimp_h> (Desktop C) and <DeskLib:Wimp.h=>Wimp> as a type holding a box in terms of two corners. It is defined in Desktop C as:

  \{
    int  x0,y0,x1,y1;
  }

and in DeskLib as a <wimp_rect>.DATA�wimp_caretstr
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold a caret position:

  \{
    <wimp_w>	w;
    <wimp_i>	i;
    int		x,y;
    int		height;
    int		index;
  }DATA�wimp_close_template
Syntax:	<os_error> *wimp_close_template (void);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function closes the currently open template file.DATA�wimp_close_wind
Syntax:	<os_error> *wimp_close_wind (<wimp_w> win);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions closes the given window.DATAkWimp_CloseDown
Syntax:	<os_error> *Wimp_CloseDown (<task_handle> task);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

See the Desktop C function, <wimp_closedown=>wimp_closedown_>.

This function must be called immediately before the program finishes. /task/ contains the task handle returned by <Wimp_Initialise>.DATA�wimp_closedown
Syntax:	<os_error> *wimp_closedown (void);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function deregisters your program with the Wimp.DATA�Wimp_CloseTemplate
Syntax:	<os_error> *Wimp_CloseTemplate (void);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function closes the template file previously opened with <Wimp_OpenTemplate>.DATAWimp_CloseWindow
Syntax:	<os_error> *Wimp_CloseWindow (<window_handle> window);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function removes the specified window from the list of active windows (ones that are to be displayed).DATA=wimp_colour
This type is defined in DeskLib:Wimp.h as the following union:

    \{
        int value;
        struct
        \{
            unsigned int wimpcolour	: 4;
            unsigned int gcolaction	: 3;
            unsigned int foreback	: 1;
            unsigned int padding	: 24;
        } data;
    }DATA)wimp_command_tag
This type is defined in <wimp.h=>wimp_h>. It is an
enumerated type containing the values for
<wimp_commandwindow=>wimp_commandwindow_>:

  {
    wimp_command_TITLE = 0,
    wimp_command_ACTIVE = 1,
    wimp_command_CLOSE_PROMPT = 2,
    wimp_command_CLOSE_NOPROMPT = 3
  }DATA�wimp_commandwind
This type is defined in <wimp.h=>wimp_h>. It is a
structure for command windows:

  {
    <wimp_command_tag> tag;
    char             *title;
  }DATAFWimp_CommandWindow
Syntax:	<os_error> *Wimp_CommandWindow (int x);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See <wimp_commandwindow=>wimp_commandwindow_>.

This function opens a text window in which VDU�4-type output can be displayed. The exact action depends on /x/:
{tab}
x>1	x is a pointer to the window title. The command window is opened the next time a character is printed on the screen.
x==1	window becomes active but is not drawn.
x==0	window is closed with a prompt.
x==-1	window is closed without a prompt.DATA�wimp_commandwindow
Syntax:	<os_error> *wimp_commandwindow (<wimp_commandwind> commandwindow);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions opens a text window for VDU4 output.DATA�wimp_coord
This type is defined in <DeskLib:Wimp.h=>Wimp> as a type holding a coordinate. It is defined as a <wimp_point>.DATAAwimp_corrupt_fp_state_on_poll
Syntax:	<os_error> *wimp_corrupt_fp_state_on_poll (void);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions disables saving of FP state on calls to <wimp_poll=>wimp_poll_> and <wimp_pollidle=>wimp_pollidle_>; use only if you never use FP at all.DATAWimp_CorruptFPStateOnPoll
Syntax:  <os_error> *Wimp_CorruptFPStateOnPoll(void);
Header:  <DeskLib:WimpSWIs.h=>WimpSWIs>

Returns: Pointer to error, or <NULL> if none.

This function tells DeskLib not to save the
floating point status when calling <Wimp_Poll>.DATA�wimp_create_icon
Syntax:	<os_error> *wimp_create_icon (<wimp_icreate> *blk, <wimp_i> *icon);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions creates an icon from /blk/ and returns the handle in {/}*icon{/}.DATA�wimp_create_menu
Syntax:	<os_error> *wimp_create_menu (<wimp_menustr> *m, int x, int y);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function displays the menu /m/ at position {/}(x,y){/}.DATA%wimp_create_submenu
Syntax:	<os_error> *wimp_create_submenu (<wimp_menustr> *sub, int x, iny y);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function creates the menu /sub/ as a submenu. Called in response to a <Message_MenuWarning=>SWI:wimp_um400c0>.DATAwimp_create_wind
Syntax:	<os_error> *wimp_create_wind (<wimp_wind> *blk, <wimp_w> *win);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions creates a window whose definition is in /blk/. The window handle is returned in {/}*win{/}.DATABWimp_CreateIcon
Syntax:	<os_error> *Wimp_CreateIcon (<icon_createblock> *block, <icon_handle> *icon);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function tells the Wimp what the characteristics of an icon are (in {/}block{/}). The icon handle is returned in /icon/.DATASWimp_CreateMenu
Syntax:	<os_error> *Wimp_CreateMenu (<menu_block> *menu, int xpos, int ypos);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function is used to create a menu structure. The top-level menu is initially displayed by the Wimp with its top-left corner at {/}(xpos,ypos){/}.DATA}Wimp_CreateSubMenu
Syntax:	<os_error> *Wimp_CreateSubMenu (<menu_block> *menu, int xpos, int ypos);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function is called when a MenuWarning message is received. The three arguments used can be obtained from the information returned by this message, or you can alter them if required.DATARWimp_CreateWindow
Syntax:	<os_error> *Wimp_CreateWindow (<window_block> *blk, <window_handle> *w);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function tells the Wimp what the characteristics of a window are. The window definition is held in /blk/ and the handle is returned in /w/.DATAKwimp_decode_menu
Syntax:	<os_error> *wimp_decode_menu (<wimp_menustr> *m, void *sel, void *buf);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function takes a list of menu selections in /sel/, and a menu definition in /m/, and creates a textual version of the selections, separated by dots.DATA�Wimp_DecodeMenu
Syntax:	<os_error> *Wimp_DecodeMenu (<menu_block> *menu, int *selections, char *result);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function converts a list of menu selections (pointed to by /selections/) for a given menu, to a text string of the form:
{wrap off}
{align centre}Selection1.Selection2.Selection3{align}
{wrap}
eg "Options.Confirm" for a Filer menu.DATA�wimp_delete_icon
Syntax:	<os_error> *wimp_delete_icon (<wimp_w> win, <wimp_i> icon);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions deletes the given icon.DATA�wimp_delete_wind
Syntax:	<os_error> *wimp_delete_wind (<wimp_w> w);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions deletes the given window.DATA�Wimp_DeleteIcon
Syntax:	<os_error> *Wimp_DeleteIcon (<window_handle> win, <icon_handle> icon);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function removes the definition of the specified icon. If it is not the last icon in that window it is just marked as deleted, but if it is the last one then the space occupied by it is freed.

This call does not affect the screen, unless deleting an icon from the icon bar. You must call <Wimp_ForceRedraw>.DATA:Wimp_DeleteWindow
Syntax:	<os_error> *Wimp_DeleteWindow (<window_handle> window);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function closes the specified window (if it is still open), and then removes the definition of the window. The memory used is freed.DATA�wimp_drag_box
Syntax:	<os_error> *wimp_drag_box (<wimp_dragstr> *result);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function starts the Wimp dragging a box.DATA�Wimp_DragBox
Syntax:	<os_error> *Wimp_DragBox (<drag_block> *draginfo);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function initiates a dragging operation. /draginfo.window/ contains the window handle (types 1-4), /draginfo.type/ contains the drag type, /draginfo.screenrect/ contains the box to be dragged, and /draginfo.parent/ contains the bounding box (types 5-11).DATA�wimp_dragstr
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold user drag box data:

  \{
    <wimp_w>		window;
    <wimp_dragtype>	type;
    <wimp_box>		box;
    <wimp_box>		parent;
  }DATA wimp_dragtype
This type is defined in <wimp.h=>wimp_h>. It is an enumerated type containing the values of the Wimp drag types:

  \{
    wimp_MOVE_WIND,
    wimp_SIZE_WIND,
    wimp_DRAG_HBAR,
    wimp_DRAG_VBAR,
    wimp_USER_FIXED,
    wimp_USER_RUBBER,
    wimp_USER_HIDDEN
  }DATA�wimp_emask
This type is defined in <wimp.h=>wimp_h>. It is an enumerated type containing the values of the bits in the Wimp event mask:

  \{
    wimp_EMNULL,
    wimp_EMREDRAW,
    wimp_EMOPEN,
    wimp_EMCLOSE,
    wimp_EMPTRLEAVE,
    wimp_EMPTRENTER,
    wimp_EMBUT,
    wimp_EMUSERDRAG,
    wimp_EMKEY,
    wimp_EMMENU,
    wimp_EMSCROLL,
    wimp_EMLOSECARET,
    wimp_EMGAINCARET,
    wimp_EMSEND		= 17,
    wimp_EMSENDWANTACK	= 18,
    wimp_EMACK
  }DATA�wimp_errflags
This type is defined in <wimp.h=>wimp_h>. It is an
enumerated type containing the values of the
Wimp error flags:

  {
    wimp_EOK       = 1,
    wimp_ECANCEL   = 2,
    wimp_EHICANCEL = 4
  }DATA�wimp_etype
This type is defined in <wimp.h=>wimp_h>. It is an enumerated type containing the values of the Wimp event types:

  \{
    wimp_ENULL,
    wimp_EREDRAW,
    wimp_EOPEN,
    wimp_ECLOSE,
    wimp_EPTRLEAVE,
    wimp_EPTRENTER,
    wimp_EBUT,
    wimp_EUSERDRAG,
    wimp_EKEY,
    wimp_EMENU,
    wimp_ESCROLL,
    wimp_ELOSECARET,
    wimp_EGAINCARET,
    wimp_ESEND		= 17,
    wimp_ESENDWANTACK	= 18,
    wimp_EACK
  }DATA�wimp_eventdata
This type is defined in <wimp.h=>wimp_h>. It is a
union used to hold data returned by the Wimp.

  \{
    <wimp_openstr>	o;
    <wimp_box>		dragbox;
    int			menu[10];
    <wimp_caretstr>	c;
    <wimp_msgstr>	msg;

    struct
    \{
      <wimp_mousestr>	m;
      <wimp_bbits>	b;
    } but;

    struct
    \{
      <wimp_caretstr>	c;
      int		chcode;
    } key;

    struct
    \{
      <wimp_openstr>	o;
      int		x,y;
    } scroll;
  }DATA�wimp_eventstr
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold an event type and data.

  \{
    <wimp_etype>	e;
    <wimp_eventdata>	data;
  }DATA�wimp_font_array
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold a font array:

  \{
    char   f[256];
  }DATAwimp_force_redraw
Syntax:	<os_error> *wimp_force_redraw (<wimp_redrawstr> *redraw);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function marks an area of a window as invalid. If {/}redraw->w=-1{/} then use screen coordinates.DATA�Wimp_ForceRedraw
Syntax:	<os_error> *Wimp_ForceRedraw (<window_redrawblock> *block);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function forces an area of screen to be redraw later using Redraw_Window_Request events. {/}block->window{/} contains the window handle, and {/}block->rect{/} contains the area of work area to redraw. If {/}block->window{/} contains -1, then {/}block->rect{/} contains a screen area to redraw.DATA�wimp_get_caret_pos
Syntax:	<os_error> *wimp_get_caret_pos (<wimp_caretstr> *blk);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function gets the caret position into /blk/.DATAwimp_get_icon_info
Syntax:	<os_error> *wimp_get_icon_info (<wimp_w> win, <wimp_i> icon, <wimp_icon> *result);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function gets the current state of the specified icon and returns it in {/}*result{/}.DATA�wimp_get_point_info
Syntax:	<os_error> *wimp_get_point_info (<wimp_mousestr> *result);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function gets the current state of the mouse pointer in {/}*result{/}.DATAwimp_get_rectangle
Syntax:	<os_error> *wimp_get_rectangle (<wimp_redrawstr> *blk, <BOOL> *more);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions returns <TRUE> in {/}*more{/} if there is more to be drawn <wimp_get_rectangle>.DATAwimp_get_wind_info
Syntax:	<os_error> *wimp_get_wind_info (<wimp_winfo> *result);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions gets the complete definition of {/}result->w{/} and returns it in {/}*result{/}.DATAwimp_get_wind_state
Syntax:	<os_error> *wimp_get_wind_state (<wimp_w> win, wimp_wstate *result);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions gets the state of the window /win/ and returns it in {/}*result{/}.DATA;Wimp_GetCaretPosition
Syntax:	<os_error> *Wimp_GetCaretPosition (<caret_block> *caret);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function returns details of the caret's state in the block pointed to by /caret/.

{/}caret->height{/} is -1 for not displayed.DATA6Wimp_GetIconState
Syntax:	<os_error> *Wimp_GetIconState (<window_handle> win, <icon_handle> icon, <icon_block> *iconinfo);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function returns the specified icon's definition in the block pointed to by /iconinfo/.DATAmWimp_GetPointerInfo
Syntax:	<os_error> *Wimp_GetPointerInfo (<mouse_block> *ptrinfo);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function returns information about the position of the pointer and the instantaneous state of the mouse buttons. The information is returned in the structure pointed by /ptrinfo/.DATA)Wimp_GetRectangle
Syntax:	<os_error> *Wimp_GetRectangle (<window_redrawblock> *blk, <BOOL> *more);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function is used repeatedly following a call to either <Wimp_RedrawWindow> or <Wimp_UpdateWindow>.DATA�Wimp_GetWindowInfo
Syntax:	<os_error> *Wimp_GetWindowInfo (<window_info> *info);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function returns the given window's complete state including all icons.DATA�Wimp_GetWindowOutline
Syntax:	<os_error> *Wimp_GetWindowOutline (<window_outline> *outline);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See <wimp_getwindowoutline=>wimp_getwindowoutline_>

This function returns the given window's bounding box ie the box which completely covers the specified window, including its border. The window must be open...DATAwimp_getwindowoutline
Syntax:	<os_error> *wimp_getwindowoutline (<wimp_redrawstr> *r);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function gets the outline of the window passed in {/}r->w{/}. The outline is returned in {/}r->box{/}.DATA�Wimp_GetWindowState
Syntax:	<os_error> *Wimp_GetWindowState (<window_handle> window, <window_state> *state);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function returns the given window's state.DATA+wimp.h
The \<wimp.h> header declares functions and <types=>wimp_types_> for handling the Wimp.

Functions:

#table columns 2
<Miscellaneous=>w_init_>
<Window Handling=>w_open_>
<Template Handling=>w_temp_>
<Icon Handling=>w_icon_>
<Colour Handling=>w_col_>
<Font Handling=>w_font_>
#endtableDATA�wimp_i
This type is defined in <wimp.h=>wimp_h> as a type capable of containing a Wimp icon handle. It is actually defined as an /int/.DATA�wimp_ibtype
This type is defined in <wimp.h=>wimp_h>. It is an enumerated type containing the values of the Wimp icon button types:

  \{
    wimp_BIGNORE,
    wimp_BNOTIFY,
    wimp_BCLICKAUTO,
    wimp_BCLICKDEBOUNCE,
    wimp_BSELREL,
    wimp_BSELDOUBLE,
    wimp_BDEBOUNCEDRAG,
    wimp_BRELEASEDRAG,
    wimp_BDOUBLEDRAG,
    wimp_BSELNOTIFY,
    wimp_BCLICKDRAGDOUBLE,
    wimp_BCLICKSEL,
    wimp_BWRITABLE = 15
  }DATA�wimp_icon
This type is defined in <wimp.h=>wimp_h>. It is a structure containing an icon definition:

  \{
    <wimp_box>	box;
    <wimp_iconflags>	flags;
    <wimp_icondata>	data;
  }DATAwimp_icondata
This type is defined in <wimp.h=>wimp_h>. It is a union containing Wimp icon data for all icon types:

  \{
  	char	 	text[12];
  	char	 	sprite_name[12];
    
  	struct
  	\{
  	 	char	*name;
  	 	void	*spritearea;
  	 	<BOOL>	nameisname;
  	} indirectsprite;

  	struct
  	\{
  	 	char	*buffer;
  	 	char	*validstring;
  	 	int	bufflen;
  	} indirecttext;
  }DATA�wimp_iconflags
This type is defined in <wimp.h=>wimp_h>. It is an enumerated type containing the values of the Wimp icon flags:

  \{
    wimp_ITEXT,
    wimp_ISPRITE,
    wimp_IBORDER,
    wimp_IHCENTRE,
    wimp_IVCENTRE,
    wimp_IFILLED,
    wimp_IFONT,
    wimp_IREDRAW,
    wimp_INDIRECT,
    wimp_IRJUST,
    wimp_IESG_NOC,
    wimp_IHALVESPRITE,
    wimp_IBTYPE,
    wimp_ISELECTED,
    wimp_INOSELECT,
    wimp_IDELETED,
    wimp_IFORECOL,
    wimp_IBACKCOL
  }DATA�wimp_icreate
This type is defined in <wimp.h=>wimp_h>. It is a structure containing data for the function <wimp_create_icon=>wimp_create_icon_>.

  \{
    <wimp_w>	w;
    <wimp_icon>	i;
  }DATAWimp_Initialise
Syntax:	<os_error> *Wimp_Initialise (unsigned int *version, char *name, <task_handle> *task, int *mess);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

See the Desktop C function <wimp_initialise=>wimp_initialise_>. 

This function registers a task with the Wimp, and must be called ONCE when the task starts up.

/version/ points to the minimum Wimp version this task is for (in the form version * 100). /name/ points to a short description of the task (20 characters). /mess/ points to an array of message numbers the task wants to receive (only if version>=300). If /version/ is not 300 then 0 means all messages are important.

On exit, the actual Wimp version is returned in /version/ and the task handle in /task/.DATA�wimp_initialise
Syntax:	<os_error> *wimp_initialise (int *v);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions closes and deletes all windows, returning the Wimp version in {/}*v{/}.DATA�wimp_load_template
Syntax:	<os_error> *wimp_load_template (<wimp_template> *template);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function loads a template from the currently open template file.DATA!Wimp_LoadTemplate
Syntax:	<os_error> *Wimp_LoadTemplate (<template_block> *template);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function loads a template. You must previously have called <Wimp_OpenTemplate> to open a template file.DATA�wimp_MAXNAME
This macro is defined in <DeskLib:Wimp.h=>Wimp>. It is a value representing the length of wimp names (icon text, sprite names etc). It is defined as 12.DATAwimp_menuflags
This type is defined in <wimp.h=>wimp_h>. It is an enumerated type containing the values of the menu flag bits:

  \{
    wimp_MTICK		= 1,
    wimp_MSEPARATE	= 2,
    wimp_MWRITEABLE	= 4,
    wimp_MSUBLINKMSG	= 8,
    wimp_MLAST		= 0x80
  }DATAwimp_menuhdr
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold a Wimp menu header.

  \{
    char	title[12];
    char	tit_fcol;
    char	tit_bcol;
    char	work_fcol;
    char	work_bcol;
    int		width, height;
    int		gap;
  }DATA�wimp_menuitem
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold a menu item:

  \{
    <wimp_menuflags>	flags;
    <wimp_menuptr>	submenu;
    <wimp_iconflags>	iconflags;
    <wimp_icondata>	data;
  }DATAcwimp_menuptr
This type is defined in <wimp.h=>wimp_h>. It is a pointer to a <wimp_menustr>.DATA�wimp_menustr
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold a menu:

  \{
    <wimp_menuhdr>  hdr;
  }

This is followed in memory immediately by the menu items, as <wimp_menuitem>s.DATA�wimp_mousestr
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold mouse data:

  \{
    int			x,y;	
    <wimp_bbits>	bbits;	
    <wimp_w>		w;	/* window handle */
    <wimp_i>		i;	/* icon handle */
  }DATAwimp_msgaction
This type is defined in <wimp.h=>wimp_h>. It is an enumerated type containing the values of the Wimp message types:

  \{
    wimp_MCLOSEDOWN,
    wimp_MDATASAVE,
    wimp_MDATASAVEOK,
    wimp_MDATALOAD,
    wimp_MDATALOADOK,
    wimp_MDATAOPEN,
    wimp_MRAMFETCH,
    wimp_MRAMTRANSMIT,
    wimp_MPREQUIT,
    wimp_PALETTECHANGE,
    wimp_SAVEDESK,
    wimp_FilerOpenDir,
    wimp_FilerCloseDir,
    wimp_Notify,
    wimp_MMENUWARN,
    wimp_MMODECHANGE,
    wimp_MINITTASK,
    wimp_MCLOSETASK,
    wimp_MSLOTCHANGE,
    wimp_MSETSLOT,
    wimp_MTASKNAMERQ,
    wimp_MTASKNAMEIS,
    wimp_MTASKSTARTED,
    wimp_MHELPREQUEST,
    wimp_MHELPREPLY,
    wimp_MPrintFile,
    wimp_MWillPrint,
    wimp_MPrintTypeOdd,
    wimp_MPrintTypeKnown,
    wimp_MPrinterChange
  }DATA�wimp_msgdataload
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold data for a <Message_DataLoad=>SWI:wimp_um3>:

  \{
    <wimp_w>	w;
    <wimp_i>	i;
    int		x,y;
    int		size;
    int		type;
    char	name[212];
  }DATA�wimp_msgdataopen
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold data for a <Message_DataOpen=>SWI:wimp_um5>. It is defined as a <wimp_msgdataload>.DATA�wimp_msgdatasave
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold data for a <Message_DataSave=>SWI:wimp_um1>:

  \{
    <wimp_w>	w;
    <wimp_i>	 i;
    int		x,y;
    int		estsize;
    int		type;
    char	leaf[12];
  }DATAwimp_msgdatasaveok
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold data for a <Message_DataSaveAck=>SWI:wimp_um2>:

  \{
    <wimp_w>	w;
    <wimp_i>	i;
    int		x,y;
    int		estsize;
    int		type;
    char	name[212];
  }DATA�wimp_msgdevice
This type is defined in <wimp.h=>wimp_h>. It is a
structure used to hold data for a
Message_DeviceClaim or Message_DeviceInUse:

  {
    int  major;
    int  minor;
    char information[228];
  }DATA�wimp_msghdr
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold a message header:

  \{
    int			size;
    <wimp_t>		task;
    int			my_ref;
    int			your_ref;
    <wimp_msgaction>	action;
  }DATA�wimp_msghelpreply
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold data for a <Message_HelpReply=>SWI:wimp_um503>:

  \{
    char  text[200];
  }DATA�wimp_msghelprequest
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold data for a <Message_HelpRequest=>swi:wimp_um502>:

  {
    <wimp_mousestr>  m;
  }DATA�wimp_msgprint
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold data for all print messages.

  \{
    int		filler[5];
    int		type;
    char	name[256-44];
  }DATA�wimp_msgramfetch
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold data for a <Message_RAMFetch=>SWI:Wimp_um6>:

  \{
    char	*addr;
    int		nbytes;
  }DATA�wimp_msgramtransmit
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold data for a <Message_RAMTransmit=>SWI:wimp_um7>:

  \{
    char	*addr;
    int		nbyteswritten;
  }DATA�wimp_msgsavedesk
This type is defined in <wimp.h=>wimp_h>. It is a
structure used to hold data for a
Message_SaveDesktop:

  {
    int filehandle;
  }DATA+wimp_msgstr
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold a complete Wimp message.

  \{
    <wimp_msghdr> hdr;
    union
    \{
      char			chars[236];
      int			words[59];
      <wimp_msgdatasave>	datasave;
      <wimp_msgdatasaveok>	datasaveok;
      <wimp_msgdataload>	dataload;
      <wimp_msgdataopen>	dataopen;
      <wimp_msgramfetch>	ramfetch;
      <wimp_msgramtransmit>	ramtransmit;
      <wimp_msghelprequest>	helprequest;
      <wimp_msghelpreply>	helpreply;
      <wimp_msgprint>		print;
    } data;
  }DATA�wimp_NUMBEROFEVENTS
This is a macro defined in <DeskLib:Wimp.h=>Wimp>. It has the value 20, as events are numbered 0-19.DATA�wimp_open_template
Syntax:	<os_error> *wimp_open_template (char *name);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function opens the named template file for subsequent use by <wimp_load_template>.DATA�wimp_open_wind
Syntax:	<os_error> *wimp_open_wind (<wimp_openstr> *blk);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions opens the given window.DATA�wimp_openstr
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold a window position:

  \{
    <wimp_w>	w;
    <wimp_box>	box;
    int	x,y;
    <wimp_w>behind;
  }DATA�Wimp_OpenTemplate
Syntax:	<os_error> *Wimp_OpenTemplate (char *name);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function opens the specified template file and reads in some header information. Only one template file may be open at a time. You can now call <Wimp_LoadTemplate> to load each template and then <Wimp_CloseTemplate> to close the file.DATAWimp_OpenWindow
Syntax:	<os_error> *Wimp_OpenWindow (<window_openblock> *block);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function updates the list of active windows (ones that are to be displayed).DATAwimp_palettestr
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold a complete Wimp palette:
{wrap off}
  \{
    <wimp_paletteword>  c[16];
    <wimp_paletteword>  screenborder;
    <wimp_paletteword>  mouse1, mouse2, mouse3;
  }DATA�wimp_paletteword
This type is defined in <wimp.h=>wimp_h>. It is a union used to hold a palette word:

  \{
    struct
    \{
      char	gcol;
      char	red;
      char	green;
      char	blue;
    } bytes;
    int word;
  }DATAWimp_PlotIcon
Syntax:	<os_error> *Wimp_PlotIcon (<icon_block> *fakeicon);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See <wimp_ploticon=>wimp_ploticon_>.

This function can be used to plot an icon in a window during a window redraw or update loop. The icon doesn't exist as part of the window definition - instead its definition is given directly.

In RISC OS 3 this can be called outside a redraw loop - in which case all coordinates are screen coords, not work area coords.DATA�wimp_ploticon
Syntax:	<os_error> *wimp_ploticon (<wimp_icon> *icon);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function plots the icon whose definition is given. It is not necessarily a real icon...DATA�wimp_point
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure for holding  an {/}(x,y){/} pair. It is defined as:

  \{
    int x, y;
  }DATA�wimp_pointer
This type is defined in <TimsLib:Interface.h=>Interface> as the following structure:

  \{
    int		window_handle;
    int		x0,y0,x1,y1;
    char	ptr_validation[24];
  }

See the documentation provided with Interface for more details.DATA�Wimp_Poll
Syntax:	<os_error> *Wimp_Poll (<event_pollmask> mask, <event_pollblock> *event);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

See also the Desktop C function, <wimp_poll=>wimp_poll_>.

This function polls the Wimp to see whether certain events have occurred. You must call it in the main loop of any program you write to run under the Wimp. The results of the poll are returned in /event/.DATA�Wimp_Poll3
Syntax:	<os_error> *Wimp_Poll3 (<event_pollmask> mask, <event_pollblock> *event, void *word);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function polls the Wimp to see whether certain events have occurred. You must call it in the main loop of any program you write to run under the Wimp. The results of the poll are returned in /event/. /word/ contains the poll word (ignored if mask.data.r3ispollwordptr is zero).DATA9wimp_poll
Syntax:	<os_error> *wimp_poll (<wimp_emask> mask, <wimp_eventstr> *result);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions polls the next event from the Wimp. /mask/ masks out the events you do not want to receive. The event is returned in {/}*result{/}.DATA-Wimp_PollIdle
Syntax:	<os_error> *Wimp_PollIdle (<event_pollmask> mask, <event_pollblock> *block, int earliest);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

See the Desktop C function, <wimp_pollidle=>wimp_pollidle_>

This function polls the Wimp to see whether certain events have occurred. You must call it in the main loop of any program you write to run under the Wimp. The results of the poll are returned in /event/. /earliest/ contains the earliest monotonic time that a null event will be returned.DATARWimp_PollIdle3
Syntax:	<os_error> *Wimp_PollIdle3 (<event_pollmask> mask, <event_pollblock> *block, int earliest, void *word);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function polls the Wimp to see whether certain events have occurred. You must call it in the main loop of any program you write to run under the Wimp. The results of the poll are returned in /event/. /earliest/ contains the earliest monotonic time that a null event will be returned. /word/ contains the poll word (ignored if {/}mask.data.r3ispollwordptr{/} is zero).DATA?wimp_pollidle
Syntax:	<os_error> *wimp_pollidle (<wimp_emask> *mask, <wimp_eventstr> *result, int earliest);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function is like <wimp_poll=>wimp_poll_>, but does not return before the monotonic time /earliest/ unless something happens.DATAcWimp_ProcessKey/wimp_processkey
Syntax:	<os_error> *Wimp_ProcessKey (int ch);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>
	<wimp.h=>wimp_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

This is called {*}wimp_processkey{*} in Desktop C.

This function causes the Wimp to offer the given character to other applications. It should be used for two purposes:
{tab}
�	Pass on keypresses you don't understand.
�	Insert keypresses into the keypress buffer.

You should not insert more than a couple of characters at a time in this way. These characters take precedence over characters actually typed.DATA�wimp_pshapestr
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold pointer shape data:

  \{
    int		shape_num;
    char	*shape_data;
    int		width, height;
    int		activex, activey;
  }DATA4Wimp_ReadPalette
Syntax:	<os_error> *Wimp_ReadPalette (<palette_block> *palette);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See <wimp_readpalette=>wimp_readpalette_>

This function reads the whole palette into the block pointed to by /palette/.DATA�wimp_readpalette
Syntax:	<os_error> *wimp_readpalette (wimp_palettestr *pal);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function reads the current Wimp palette into /pal/.DATAKWimp_ReadPixTrans
Syntax:	<os_error> *Wimp_ReadPixTrans (int index, void *area, void *sprite, <scale_block> *scale, char *trans);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See <wimp_readpixtrans=>wimp_readpixtrans_>

This function find out how the Wimp would plot the given sprite. For high quality sprite plotting, you should use <ColourTrans=>ColourTran> instead.
{tab}
0	\<= /index/ \<= 255	: sprite in system area
256	\<= /index/ \<= 511	: sprite in user area, /sprite/ points to name.
512	\<= /index/ \<= 767	: sprite in user area, /sprite/ points to sprite
{tab}
/area/	contains the sprite area pointer, 1 for Wimp area, or 0 for system area.

/sprite/	contains pointer to sprite.

On exit, /scale/ and /trans/ will contain information on how the Wimp will plot the sprite.DATA!wimp_readpixtrans
Syntax:	<os_error> *wimp_readpixtrans (<sprite_area> *area, <sprite_id> *id, <sprite_factors> *factors, <sprite_pixtrans> *pixtrans);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function tells you how the Wimp will plot a sprite.DATA�wimp_rect
This type is defined in <DeskLib:Wimp.h=>Wimp> as a type holding a rectangle in terms of two corners. It is defined as:

  \{
    <wimp_point> min;
    <wimp_point> max;
  }DATA;wimp_redraw_wind
Syntax:	<os_error> *wimp_redraw_wind (<wimp_redrawstr> *blk, <BOOL> *more);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions redraws the window outline and icons. It returns <TRUE> in {/}*more{/} if there is more to be drawn with <wimp_get_rectangle>.DATA�wimp_redrawstr
This type is defined in <wimp.h=>wimp_h>. It is a structure containing data for <wimp_redraw_wind> etc.

  \{
    <wimp_w>	w;
    <wimp_box>	box;
    int		scx, scy;
    <wimp_box>	g;
  }DATA�Wimp_RedrawWindow
Syntax:	<os_error> *Wimp_RedrawWindow (<window_redrawblock> *blk, <BOOL> *more);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function is used to start a redraw of the parts of a window that are not up to date. It must be called as the first Wimp operation after the Wimp_Poll which returned a Redraw_Window_Request. Wimp_RedrawWindow draws the window outline, issues VDU 5, and then exits via <Wimp_GetRectangle>, which returns the coordinates of the first invalid rectangle of the work area. It also returns a flag /more/ saying whether there is anything to redraw.DATA3Wimp_ReportError
Syntax:	<os_error> *Wimp_ReportError (os_error *err, int flags, char *name);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See <wimp_reporterror=>wimp_reporterror_>

This function provides a built-in means for reporting errors that may occur (but <DeskLib:Msgs.h=>Msgs> has better ways). The error is given in /err/. The flags are passed as an /int/ (but this can be cast from an <error_flags>). /name/ is the task name to be placed in the title bar and must be less than 20 characters.DATAwimp_reporterror
Syntax:	<os_error> *wimp_reporterror (os_error *err, <wimp_errflags> flags, char *name);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function reports the error in /err/. /name/ appears in the title bar.DATA-Wimp_ReportErrorR
Syntax:  int Wimp_ReportErrorR
         (<os_error> *err, int flags, char *name);
Header:  <DeskLib:WimpSWIs.h=>WimpSWIs>

Returns: Icon selected, 0 for none.

This function is identical to <Wimp_ReportError>
but in addition reports whether OK (1) or
Cancel (2) was selected.DATALwimp_save_fp_state_on_poll
Syntax:	<os_error> *wimp_save_fp_state_on_poll (void);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions activates saving of FP state on calls to <wimp_poll=>wimp_poll_> and <wimp_pollidle=>wimp_pollidle_>; this is needed if you use ANY floating point at all.DATAWimp_SaveFPStateOnPoll
Syntax:  <os_error> *Wimp_SaveFPStateOnPoll(void);
Header:  <DeskLib:WimpSWIs.h=>WimpSWIs>

Returns: Pointer to error, or <NULL> if none.

This function tells DeskLib to save the
floating point status when calling <Wimp_Poll>.DATA�Wimp_SendMessage
Syntax:	<os_error> *Wimp_SendMessage (<event_type> type, <message_block> *msg, <message_destinee> dest, <icon_handle> ic);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See <wimp_sendmessage=>wimp_sendmessage_>.

This function sends a message to a task or broadcasts to all tasks. /type/ contains the message code, /msg/ contains the message data. /dest/ contains the task handle/window handle to send the message to, or 0 to broadcast it. If /dest/ is the icon bar then /ic/ contains the icon number.

Often this is used to send user messages, but it can be used for any WIMP event.DATAwimp_sendmessage
Syntax:	<os_error> *wimp_sendmessage (<wimp_etype> code, <wimp_msgstr> *msg, <wimp_t> dest);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function send the message /msg/ to the given destination with the event code specified.DATA+wimp_sendwmessage
Syntax:	<os_error> *wimp_sendwmessage (<wimp_etype> code, <wimp_msgstr> *msg, <wimp_w> win, <wimp_i> icon);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function send the message /msg/ to the given window/icon with the event code specified.DATA�wimp_set_caret_pos
Syntax:	<os_error> *wimp_set_caret_pos (<wimp_caretstr> *blk);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function sets the caret position.DATA�wimp_set_extent
Syntax:	<os_error> *wimp_set_extent (<wimp_redrawstr> *redraw);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function alters the extent of a window's work area.DATALwimp_set_icon_state
Syntax:	<os_error> *wimp_set_icon_state (<wimp_w> win, <wimp_i> icon, <wimp_iconflags> v, <wimp_iconflags> m);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions sets the icon state of the given icon as:{wrap off}
{fCode;align centre}new_state = (old_state & ~m) ^ v;DATA�wimp_set_point_shape
Syntax:	<os_error> *wimp_set_point_shape (<wimp_pshapestr> *pointer);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function sets the pointer shape.DATA�Wimp_SetCaretPosition
Syntax:	<os_error> *Wimp_SetCaretPosition (<caret_block> *caret);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function removes the caret from its old position and redraws it in a new position, as defined by /caret/.

If {/}caret->height{/} is -1 then the offset and height are calculated from the window, icon and index.

If {/}caret->index{/} is -1 then the index and height are calculated from the window, icon and offset.DATAWimp_SetColour
Syntax:	<os_error> *Wimp_SetColour (int col);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See the funtion <wimp_setcolour=>wimp_setcolour_>

This function sets the current graphics colour and plot action to one of the 16 standard Wimp colours.

/col/ has the following format:

_Bits_	_Meaning_
0-3	Wimp <colour number=>w_colpal_>
4-6	GCOL <action=>VDU:18a>
7	0=foreground, 1=background.

Cast /col/ as a <wimp_colour> for ease of use.DATA�wimp_setcolour
Syntax:	<os_error> *wimp_setcolour (int col);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function sets the current Wimp colour.DATAWimp_SetExtent
Syntax:	<os_error> *Wimp_SetExtent (<window_handle> window, <wimp_box> *ext);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function sets the work area extent of the specified window to be the box given in /ext/.DATA�Wimp_SetFontColours
Syntax:	<os_error> *Wimp_SetFontColours (int foreground, int background);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>
	<wimp.h=>wimp_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

Called {*}wimp_setfontcolours{*} in Desktop C.

This function sets the anti-aliased font colours from the two Wimp colours given. The colours will not be preserved over calls to <Wimp_Poll>.DATA`Wimp_SetIconState
Syntax:	<os_error> *Wimp_SetIconState (<window_handle> win, <icon_handle> icon, int value, int mask);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function sets the given icon state (ie its flags) as follows:
{wrap off;align centre}
new-state = (old-state AND NOT mask) EOR valueDATAcWimp_SetMode
Syntax:	<os_error> *Wimp_SetMode (int <mode=>VDU.22a>);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See <wimp_setmode=>wimp_setmode_>

This function changes the display mode used by the Wimp. It should not be used under normal circumstances as your program should run in any mode.DATA�wimp_setmode
Syntax:	<os_error> *wimp_setmode (int mode);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function sets the screen mode.DATAvWimp_SetPalette
Syntax:	<os_error> *Wimp_SetPalette (<palette_block> *palette);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See the function <wimp_setpalette=>wimp_setpalette_>.

This function sets the whole palette from the block pointed to by /palette/. In non-16 colour modes, you must also redraw the screen.DATA�wimp_setpalette
Syntax:	<os_error> *wimp_setpalette (<wimp_palettestr> *pal);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function sets the current Wimp palette to /pal/.DATACWimp_SetPointerShape
Syntax:	<os_error> *Wimp_SetPointerShape (<pointer_shapeblock> *shape);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function sets the shape and active point of the pointer. You should use <Wimp_SpriteOp> with R0=36 in preference to this function.DATAXWimp_SlotSize
Syntax:	<os_error> *Wimp_SlotSize (int *current, int *next, int *free);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>
	<wimp.h=>wimp_h> (Desktop C)

Returns:	Pointer to error, or <NULL> if none.

Called {*}wimp_slotsize{*} in Desktop C.

This function can be used to read or set the size of the current slot (ie your program's slot size) and the next slot (the default slot size). To alter one of the values, place the new value in one of the variables whose pointer is given (you cannot alter the free space). To just read it, use -1 instead. On exit, the new values will be returned.DATA�wimp_spritearea
This macro is defined in <pointer.h=>pointer>, for use with the function <pointer_set_shape>, to select the Wimp sprite area. It is defined as:
{fCode;align centre}((<sprite_area> *) -1)DATA8Wimp_SpriteOp
Syntax:	<os_error> *Wimp_SpriteOp (<_kernel_swi_regs> *registers);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See also <wimp_spriteop=>wimp_spriteop_>

This function allows operations on Wimp sprites without having to specify the sprite area pointer. {/}registers.r[0]{/} contains the reason code, {/}r[2]{/} contains a pointer to the sprite name, and {/}r[3]{/} onwards contain the parameters. Only read operations are allowed.

This call is based on the SWI <OS_SpriteOp=>SWI:OS_SpriteOp>.DATA�wimp_spriteop
Syntax:	<os_error> *wimp_spriteop (int reason, char *name);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function calls the SWI <Wimp_SpriteOp=>SWI:Wimp_SpriteOp>.DATA�wimp_spriteop_full
Syntax:	<os_error> *wimp_spriteop_full (os_regset *r);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function calls the SWI <Wimp_SpriteOp=>SWI:Wimp_SpriteOp>.DATA�Wimp_StartTask
Syntax:	<os_error> *Wimp_StartTask (char *command);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: see <wimp_starttask=>wimp_starttask_>.

This function is used to start a task from within a program. The text in /command/ can be any * Command which will cause a Wimp program to be executed. Control will return to your program when the new task exits, or calls <Wimp_Poll>.DATA�wimp_starttask
Syntax:	<os_error> *wimp_starttask (char *command);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function executes the given star command as a Wimp task.DATA�wimp_t
This type is defined in <wimp.h=>wimp_h> as a type
capable of containing a Wimp task handle. It is
actually defined as an 'int'.DATA�wimp_taskclose
Syntax:	<os_error> *wimp_taskclose (wimp_t t);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function deregisters your program with the Wimp. /t/ is your task handle.DATA�wimp_taskinit
Syntax:	<os_error> *wimp_taskinit (char *name, int *version, wimp_t *t);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions registers your application with the Wimp. /name/ is the name of your program, {/}*version{/} is the Wimp version number (* 100) you expect. On exit, {/}*version{/} contains the actual Wimp version and {/}*t{/} contains your task handle.DATAwimp_template
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold template data:

  \{
    int			reserved;
    <wimp_wind>		*buf;
    char		*work_free;
    char		*work_end;
    <wimp_font_array>	*font;
    char		*name;
    int			index;
  }DATA9Wimp_TransferBlock
Syntax:	<os_error> *Wimp_TransferBlock (<task_handle >source, void *sourcebuf, task_handle dest, void *destbuf, unsigned int length);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

Desktop C: See the function <wimp_transferblock=>wimp_transferblock_>

This function copies a block of memory from the source task's address space ({/}sourcebuf{/}) to the desination task ({/}destbuf{/}). The task handles are given in /source/ and /dest/ respectively. The length of data to transfer is given in /length/.DATA`wimp_transferblock
Syntax:	<os_error> *wimp_transferblock (<wimp_t> sourcetask, char *sourcebuf, <wimp_t> desttask, char *destbuf, int buflen);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function transfers a block of memory from the source to the destination task and buffers. The length is given in /buflen/.DATAwimp.h
Type definitions:

#table columns 3
wimp_flags         
<wimp_iconflags>
<wimp_bbits>
<wimp_icondata>
<wimp_wind>
<wimp_icon>
<wimp_openstr>
<wimp_etype>
<wimp_redrawstr>
<wimp_caretstr>
<wimp_msghdr>
<wimp_msgdatasaveok>
<wimp_msgdataopen>
<wimp_msgramtransmit>
<wimp_msghelpreply>
<wimp_msgstr>
<wimp_eventstr>
<wimp_menuflags>
<wimp_menuitem>
<wimp_dragstr>
<wimp_pshapestr>
<wimp_template>
<wimp_palettestr>
<wimp_wcolours>
<wimp_ibtype>
<wimp_dragtype>
<wimp_box>
<wimp_winfo>
<wimp_icreate>
<wimp_wstate>
<wimp_emask>
<wimp_mousestr>
<wimp_msgaction>
<wimp_msgdatasave>
<wimp_msgdataload>
<wimp_msgramfetch>
<wimp_msghelprequest>
<wimp_msgprint>
<wimp_eventdata>
<wimp_menuhdr>
<wimp_menuptr>
<wimp_menustr>
<wimp_which_block>
<wimp_font_array>
<wimp_paletteword>
#endtableDATA[wimp_update_wind
Syntax:	<os_error> *wimp_redraw_wind (<wimp_redrawstr> *blk, <BOOL> *more);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This functions redraws the window outline and icons. It returns <TRUE> in {/}*more{/} if there is more to be drawn with <wimp_get_rectangle>. This can be called at any time.DATAWimp_UpdateWindow
Syntax:	<os_error> *Wimp_UpdateWindow (<window_redrawblock> *blk, <BOOL> *more);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function is used to start a redraw of the parts of a window that are not up to date. On entry, /blk/ contains the area of window to be updated. The function exits via <Wimp_GetRectangle>, which returns the coodinates of the first visible rectangle of the work area. It also returns a flag /more/ saying whether there is anything to redraw.DATA�wimp_w
This type is defined in <wimp.h=>wimp_h> as a type capable of containing a Wimp window handle. It is actually defined as an /int/.DATAGwimp_wcolours
This type is defined in <wimp.h=>wimp_h>. It is an enumerated type containing the numbers of the Wimp window colours:

  \{
    wimp_WCTITLEFORE,
    wimp_WCTITLEBACK,
    wimp_WCWKAREAFORE,
    wimp_WCWKAREABACK,
    wimp_WCSCROLLOUTER,
    wimp_WCSCROLLINNER,
    wimp_WCTITLEHI,
    wimp_WCRESERVED
  }DATAwimp_wflags
This type is defined in <wimp.h=>wimp_h>. It is an
enumerated type containing the values of the
Wimp window flags:

  {
    wimp_WMOVEABLE,
    wimp_REDRAW_OK,
    wimp_WPANE,
    wimp_WTRESPASS,
    wimp_WSCROLL_R1,
    wimp_SCROLL_R2,
    wimp_REAL_COLOURS,
    wimp_BACK_WINDOW,
    wimp_HOT_KEYS,
    wimp_WOPEN,
    wimp_WTOP,
    wimp_WFULL,
    wimp_WCLICK_TOGGLE,
    wimp_WFOCUS,
    wimp_WBACK,
    wimp_WQUIT,
    wimp_WTITLE,
    wimp_WTOGGLE,
    wimp_WVSCR,
    wimp_WSIZE,
    wimp_WHSCR,
    wimp_WNEW
  }DATA�wimp_which_block
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold data for <wimp_which_icon>:

  \{
    <wimp_w>	window;
    int		bit_mask;
    int		bit_set;
  }DATAwimp_which_icon
Syntax:	<os_error> *wimp_which_icon (<wimp_which_block> *blk, <wimp_i> *res);
Header:	<wimp.h=>wimp_h>

Returns:	Pointer to error, or <NULL> if none.

This function searches for icons which match a given state and creates a list in /res/.DATA
Wimp_WhichIcon
Syntax:	<os_error> *Wimp_WhichIcon (<window_handle> win, <icon_handle> *icons, int mask, int settings);
Header:	<DeskLib:WimpSWIs.h=>WimpSWIs>

Returns:	Pointer to error, or <NULL> if none.

This function searches for icons that match a given flag word. All icons in the given window will be checked, and the list placed in the array pointed to by /icons/. /mask/ determines which bits are to be checked, /settings/ says what should be looked for.

Checks if: {fCode}iconflags & mask == settings & maskDATA�wimp_wind
This type is defined in <wimp.h=>wimp_h>. It is a structure containing a window definition:

  \{
    <wimp_box>		box;
    int			scx, scy;
    <wimp_w>		behind;
    <wimp_wflags>	flags;
    char		colours[8];
    <wimp_box>		ex;
    <wimp_iconflags>	titleflags;
    <wimp_iconflags>	workflags;
    void		*spritearea;
    int			minsize;
    <wimp_icondata>	title;
    int			nicons;
  }

This should be followed in memory by the icon definitions. /colours/ can be indexed with <wimp_wcolours>.DATA�wimp_winfo
This type is defined in <wimp.h=>wimp_h>. It is a structure holding window information as returned by the function <wimp_get_wind_info>.

    \{
        <wimp_w>	w;
        <wimp_wind>	info;
    }DATA�wimp_wstate
This type is defined in <wimp.h=>wimp_h>. It is a structure used to hold a window state:

  \{
    <wimp_openstr>	o;
    <wimp_wflags>	flags;
  }DATAiwin.h
This header declares functions for central management of RISC OS windows.

Functions:

#Table 9 21
<win_init>
<win_setmenuh>
<win_getmenuh>
<win_processevent>
<win_activeinc>
<win_activedec>
<win_activeno>
<win_give_away_caret>
<win_settitle>
<win_read_event_handler>
<win_claim_idle_events>
<win_idle_event_claimer>
<win_claim_unknown_events>
<win_unknown_event_claimer>
<win_register_event_handler>
<win_add_unknown_event_processor>
<win_remove_unknown_event_processor>
#EndTable

#Table 4 21
Macros:

<win_ICONBAR>
<win_ICONBARLOAD>
Types:

<win_event_handler>
<win_unknown_event_processor>
#EndTableDATA.DeskLib:Window.h
Version: 1.10 (Dec 1994)
#line
This header declares high-level functions for handling windows. (Oh, and one type too!)

Functions:

#Indent 2
#Table columns 2
<Window_Create>
<Window_Show>
<Window_CreateAndShow>
<Window_Hide>
<Window_Delete>
<Window_GetInfo>
<Window_GetInfo3>
<Window_ParentName>
<Window_AutoHelp>
<Window_HelpHandler>
<Window_ModeChange>
<Window_SetTitle>
<Window_BringToFront>
<Window_ConstrainMouse>
<Window_SetExtent>
<Window_ForceRedraw>
<Window_GetCoords>
#EndTable
#Indent 0

Type:

#indent 2
<window_openpos>DIR$���BF���r�K&�AutoHelp�EF���X�A&hblockHF����wA&'colourindices4IF���jK&�Create�JF����uK&�CreateAndShow�KF�����K&NDeleteMF�����X&DeleteIncMenus NF���`A&�flags�SF���:�X&�ForceCompleteRedraw�TF���z�K&oGetInfo<VF����n7&�handle�VF����L&fHelpHandler(YF����K&
Hide4ZF���;�7&�ICONBAR�ZF���c�A&�info�[F���!sA&�minsizex\F���5L&yModeChange�]F����X&�Move�^F�����A&'openblock�_F����ZK&�openpos�aF�����A&�outlinehbF����K&YParentName�cF���j�A&"redrawblock�dF�����X&�Resize�eF����X&�Scroll�fF���؞X&�SetFocus`gF����&L&*SetTitle�hF����oK&Show�iF���
�A&�statexjF���Q�X&TL�kF���~�K&uGetInfo3mF����aL&�BringToFront�mF���Y�L&ConstrainMouse�nF���N�L&�ForceRedraw�oF���3�L&�GetCoordsDATA�Window_AutoHelp
Syntax:	<BOOL> Window_AutoHelp (<window_handle> win, <icon_handle> icon);
Header:	<DeskLib:Window.h=>Window>

Returns:	<TRUE> if successful.

This function adds an event handler (see <Event>) for the given window and icon. Every HelpRequest message will then by answer by getting a message from your message file (see <Msgs>). The message tag is given as:

{fCode}    templatename.iconnumber{f}
eg{fCode}   mainwind.-1{f}             (no icon).

You can use an icon number of "*" in the messages file to respond to all help requests without specific help.

All this function does is:

{fCode;align centre}<Event_Claim>(event_USERMESSAGERECORDED, win, icon, <Window_HelpHandler>, <NULL>);DATAhwindow_block
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is a structure holding a complete window definition (except for the icons) as used by <Wimp_CreateWindow>:

   \{
     <wimp_box>		screenrect;
     <wimp_point>	scroll;
     <window_handle>	behind;
     <window_flags>	flags;
     char		colours[8];
     <wimp_box>		workarearect;
     <icon_flags>	titleflags;
     icon_flags		workflags;
     void		*spritearea;
     <window_minsize>	minsize;
     <icon_data>	title;
     unsigned int	numicons;
   }

Immediately after this in memory are placed the icon definitions as a series of <icon_block>s.DATA'window_colourindices
This enumerated type is defined in <DeskLib:Wimp.h=>Wimp> as follows:

  \{
     windowcol_TITLEFORE = 0,
     windowcol_TITLEBACK,
     windowcol_WORKFORE,
     windowcol_WORKBACK,
     windowcol_SCROLLBACK,
     windowcol_SCROLLFORE,
     windowcol_TITLEHILITE
  }DATA�Window_Create
Syntax:	<window_handle> Window_Create (char *name, int maxtitlesize);
Header:	<DeskLib:Window.h=>Window>

Returns:	Window handle of new window.

This function finds the named window template (loaded with <Template_LoadFile>) and creates a copy of the window which it then passes to the wimp using <Wimp_CreateWindow>. For details of /maxtitlesize/, see <Template_Clone>.DATA�Window_CreateAndShow
Syntax:	<window_handle> Window_CreateAndShow (char *name, int maxtitlesize, <window_openpos> pos);
Header:	<DeskLib:Window.h=>Window>

Returns:	New window handle.

This function combines <Window_Create> and <Window_Show>.DATANWindow_Delete
Syntax:	void Window_Delete (<window_handle> win);
Header:	<DeskLib:Window.h=>Window>

This function deletes any window. If the window was created with <Window_Create>, then the memory used by the window is freed. This function also removes any Event handler attached to the window (see <DeskLib:Event.h=>Event>).DATAWindow_DeleteIncMenus
Syntax:	void Window_DeleteIncMenus (<window_handle> win);
Header:	<TimsLib:Window.h=>Window_TL>

This function detaches all menus from the given window and then deletes the window. It does this by calling <Menu_DetachMenu> and then <Window_Delete>.DATA�window_flags
This type is defined in <DeskLib:Wimp.h=>Wimp>. It provides easy access to window flags, both as individual bits and to their overall value. It is defined as the following union:

  \{
    struct
    \{
      unsigned int hastitle	: 1;
      unsigned int moveable	: 1;
      unsigned int hasvscroll	: 1;
      unsigned int hashscroll	: 1;
      unsigned int autoredraw	: 1;
      unsigned int pane	: 1;
      unsigned int nobounds	: 1;
      unsigned int nobackclose	: 1; 
      unsigned int scrollrq	: 1;
      unsigned int scrollrqdebounced : 1;
      unsigned int realcolours	: 1;
      unsigned int backwindow	: 1;
      unsigned int hotkeys	: 1;
      unsigned int keeponscreen	: 1;
      unsigned int ignoreright	: 1;
      unsigned int ignorebottom	: 1;
      unsigned int open	: 1;
      unsigned int top	: 1;
      unsigned int fullsize	: 1;
      unsigned int istoggling	: 1;
      unsigned int focus	: 1;
      unsigned int forceonce	: 1;
      unsigned int dummy22	: 1;
      unsigned int dummy23	: 1;
      unsigned int backicon	: 1;
      unsigned int closeicon	: 1;
      unsigned int titlebar	: 1;
      unsigned int toggleicon	: 1;
      unsigned int vscroll	: 1;
      unsigned int adjusticon	: 1;
      unsigned int hscroll	: 1;
      unsigned int newflags	: 1;
    } data;
    int value;
  }

Note that {/}data.newflags{/} should always be <TRUE>, and {/}data.hastitle{/}, /hasvscroll/, /hashscroll/, and /nobackclose/ should not be used in that case.DATA�Window_ForceCompleteRedraw
Syntax:	void Window_ForceCompleteRedraw (<window_handle> window);
Header:	<TimsLib:Window.h=>Window_TL>

This function forces a redraw of the entire work area of the given window.DATAoWindow_GetInfo
Syntax:	void Window_GetInfo (<window_handle> win, <window_info> *res);
Header:	<DeskLib:Window.h=>Window>

This function is simply a front end to <Wimp_GetWindowInfo>. However, no icon definitions are returned. The window information is placed in the block pointed to be /res/.

On RISC OS 3 you should use the better <Window_GetInfo3> instead.DATA�window_handle
This type is defined in <DeskLib:Wimp.h=>Wimp> as a type holding a window handle. It is defined as an /int/.DATAfWindow_HelpHandler
Syntax:	<BOOL> Window_HelpHandler (<event_pollblock> *event, void *ref);
Header:	<DeskLib:Window.h=>Window>

Returns:	<TRUE> if a help reply sent.

This function is an event handler which can be used with either <Event_Claim> or <EventMsg_Claim>. It responds to HelpRequest messages by getting a message from your message file (see <Msgs>). The message tag is given as:

{fCode}    templatename.iconnumber{f}
eg.
{fCode}    infowind.4
    mainwind.-1{f}             (no icon).

You can use an icon number of "*" in the messages file to respond to all help requests without specific help.DATA
Window_Hide
Syntax:	void Window_Hide (<window_handle> win);
Header:	<DeskLib:Window.h=>Window>

This function removes the specified window from the display, but does not delete its definition. It is equivalent (and is in fact a macro for) <Wimp_CloseWindow>.DATA�window_ICONBAR
This macro is defined in <Wimp.h=>Wimp> as a macro containing the window handle of the icon bar. It is defined as -2.DATA�window_info
This type is defined by <DeskLib:Wimp.h=>Wimp>. It is a structure holding window information as returned by the function <Wimp_GetWindowInfo>.

   \{
     <window_handle>	window;
     <window_block>	block;
   }DATA�window_minsize
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is a structure holding the minimum width/height of the window as 16-bit integers:

    \{
       int x : 16;
       int y : 16;
    }DATAyWindow_ModeChange
Syntax:	void Window_ModeChange (void);
Header:	<DeskLib:Window.h=>Window>

This function will go through all of your templates (which must ALL have been created using <Window_Create>) and re-find the outline fonts. This needs to be done on a mode change. Fonts in window titles are not fixed with this function.

See the function <Handler_ModeChange>.DATA�Window_Move
Syntax:	void Window_Move (<window_handle> win);
Header:	<TimsLib:Window.h=>Window_TL>

This function causes the window be be dragged, as if the user had dragged on the title bar.DATA'window_openblock
This type is defined in <DeskLib:Wimp.h=>Wimp> as a type capable of holding the data used by <Wimp_OpenWindow>. It is defined as the following structure:

  \{
    <window_handle>	window;
    <wimp_box>		screenrect;
    <wimp_point>	scroll;
    window_handle	behind;
  }DATA�window_openpos
This type is defined in <DeskLib:Window.h=>Window.>. It is an enumerated type used by DeskLib functions to decide where to open a window:
{wrap off}
\{
  open_WHEREVER,	/* As specified in template */
  open_CENTERED,
  open_CENTEREDUNDERPOINTER,
  open_OVERCARET,	/* over the caret, failing that then centred */
  open_UNDERPOINTER,
  open_NEARLAST		/* Slightly offset from the last window opened */
}DATA�window_outline
This type is defined in <DeskLib:Wimp.h=>Wimp> as a structure suitable for use with the function <Wimp_GetWindowOutline>.

    \{
      <window_handle>	window;
      <wimp_box>	screenrect;
    }DATAYWindow_ParentName
Syntax:	void Window_ParentName (<window_handle> win, char *name);
Header:	<DeskLib:Window.h=>Window>

This function finds the template name from which this window was created and places it in the buffer pointed to by /name/. This only works if the window was created with <Window_Create>. The name is 8 characters only.DATA"window_redrawblock
This type is defined in <DeskLib:Wimp.h=>Wimp>. It is a structure containing information suitable for <Wimp_RedrawWindow> and <Wimp_GetRectangle>.

   \{
     <window_handle>	window;
     <wimp_box>		rect;
     <wimp_point>	scroll;
     <wimp_box>		cliprect;
   }DATA�Window_Resize
Syntax:	void Window_Resize (<window_handle> win);
Header:	<TimsLib:Window.h=>Window_TL>

This function causes the window be be resized, as if the user had dragged on the resize icon.DATA�Window_Scroll
Syntax:	void Window_Scroll (<window_handle> win, <scroll_type> scroll);
Header:	<TimsLib:Window.h=>Window_TL>

This function causes the window be be dragged according to the scroll type.DATA�Window_SetFocus
Syntax:	void Window_SetFocus (<window_handle> window);
Header:	<TimsLib:Window.h=>Window_TL>

This function causes the given window to gain the input focus, but does not actually place the caret.DATA*Window_SetTitle
Syntax:	void Window_SetTitle (<window_handle> win, char *title);
Header:	<DeskLib:Window.h=>Window>

This function changes the title in the given window to be that pointed to by /title/. If the title is not indirected, the text cannot be changed (but no error is generated).DATAWindow_Show
Syntax:	void Window_Show (<window_handle> win, <window_openpos> pos);
Header:	<DeskLib:Window.h=>Window>

This function shows the window whose handle is given on the screen. It can be used with any window, not just those created with <Window_Create>.DATA�window_state
This type is defined by <DeskLib:Wimp.h=>Wimp>. It is a structure holding a window state as returned by <Wimp_GetWindowState>.

  \{
    <window_openblock>	openblock;
    <window_flags>	flags;
  }DATATimsLib:Window.h
This header provides a few handy window-based functions.

Functions:

#Table 3 19
<Window_Move>
<Window_Resize>
<Window_Scroll>
<Window_DeleteIncMenus>
<Window_ForceCompleteRedraw>
<Window_SetFocus>
#EndTable

Types:

{align centre}<scroll_type>DATAuWindow_GetInfo3
Syntax:	void Window_GetInfo3 (<window_handle> win, <window_info> *res);
Header:	<DeskLib:Window.h=>Window>

This function is simply a front end to <Wimp_GetWindowInfo>. However, no icon definitions are returned. The window information is placed in the block pointed to be /res/.

This is the fast version, on RISC OS 2 you must use <Window_GetInfo>.DATA�Window_BringToFront
Syntax:	void Window_BringToFront (<window_handle> win);
Header:	<DeskLib:Window.h=>Window>

Brings the window /win/ to the front of the window stack.DATAWindow_ConstrainMouse
Syntax:	<os_error> *Window_ConstrainMouse (<window_handle> win);
Header:	<DeskLib:Window.h=>Window>

Returns:	Pointer to error, or <NULL> if none.

Restricts the pointer to the bounds of window /win/. Actually just a macro for <Pointer_RestrictToWindow>.DATA�Window_ForceRedraw
Syntax:	void Window_ForceRedraw (<window_handle> win, int x0, int y0, int x1, int y1);
Header:	<DeskLib:Window.h=>Window>

Forces a redraw of the rectangle of the window /win/ delimited by {/}(x0,y0){/} and {/}(x1,y1){/}.DATA�Window_GetCoords
Syntax:	void Window_GetCoords (<window_handle> win, <convert_block> *blk);
Header:	<DeskLib:Window.h=>Window>

Fills /blk/ with the correct information for window /win/.DIR$pp�sF������$�activedec�tF������$gactiveincDvF������$�activenowF������$�claim_idle_events�wF���v��$�claim_unknown_events�xF���"�$	event_handler�yF����w�$�getmenuhtzF���b��$�give_away_caret�{F����3�"BICONBAR8|F����3�"GICONBARLOAD�|F�����$�idle_event_claimerL}F����n�$�init�}F���k}�$�processevent�~F���r��$Nread_event_handler �F�����$�register_event_handler�F���t�$�setmenuh�F������$*settitle�F���7��$�unknown_event_claimer�F����)�$Bunknown_event_processor8�F���
�$�add_unknown_event_processor�F���5�$�remove_unknown_event_processorDATA�win_activedec
Syntax:	void win_activedec (void);
Header:	<win.h=>win>

This function decrements by one the win module's idea of the number of active windows. <event_process>() calls <exit>() when this reaches zero.DATAgwin_activeinc
Syntax:	void win_activeinc (void);
Header:	<win.h=>win>

This function increments by one the win module's idea of the number of active windows. <event_process=>event_process_>() calls <exit>() when this reaches zero, so if you want to remain running with no active windows, you must increment it yourself. <baricon>() calls this for you.DATA�win_activeno
Syntax:	int win_activeno (void);
Header:	<win.h=>win>

Returns:	Number of active windows.

This function returns the number of active windows owned by your program.DATA�win_claim_idle_events
Syntax:	void win_claim_idle_events (<wimp_w> w);
Header:	<win.h=>win>

This function causes "idle" events to be delivered to the given window. To cancel this, call it with /w/ = -1.DATA�win_claim_unknown_events
Syntax:	void win_claim_unknown_events (<wimp_w> w);
Header:	<win.h=>win>

Causes any unknown or non-window-specific events to be passed to given window. Call with /w/ = -1 to cancel this.DATA	win_event_handler
This type is defined in <win.h=>win>. It is a function with the following prototype:
{wrap off}
{fCode;align centre}void myfunc (<wimp_eventstr> *e, void *handle);{f;align}
{wrap}
It is a function used to process events for a given window.DATA�win_getmenuh
Syntax:	void *win_getmenuh (<wimp_w> win);
Header:	<win.h=>win>

Returns:	Pointer to the attached menu.

This functions gets the menu attached to the given window.DATA�win_give_away_caret
Syntax:	void win_give_away_caret (void);
Header:	<win.h=>win>

This function gives the caret away to the open window at the top of the window stack (if that window is owned by your program). If the top window is interested it will take the caret else nothing happens. Polling must be done using <wimpt> or a higher level eg <event_process=>event_process_>.DATABwin_ICONBAR
This macro is defined in <win.h=>win> as (-3).DATAGwin_ICONBARLOAD
This macro is defined in <win.h=>win> as (-99).DATA�win_idle_event_claimer
Syntax:	<wimp_w> win_idle_event_claimer (void);
Header:	<win.h=>win>

Returns:	Handle of window claiming idle events.

-1 is returned if no window is claiming idle events.DATA�win_init
Syntax:	<BOOL> win_init (void);
Header:	<win.h=>win>

Returns:	<TRUE> if successful.

This function initialises the win system.DATA�win_processevent
Syntax:	<BOOL> win_processevent (<wimp_eventstr> *e);
Header:	<win.h=>win>

Returns:	<TRUE> if event processed.

This function delivers an event to its relevant window. It is called by <event_process=>event_process_>.DATANwin_read_event_handler
Syntax:	<BOOL> win_read_event_handler (<wimp_w> win, <win_event_handler> *func, void **handle);
Header:	<win.h=>win>

Returns:	<TRUE> if the given window is registered.

This function reads the event handler for a given window and returns it and its handle in {/}*func{/} and {/}*handle{/} respectively.DATA�win_register_event_handler
Syntax:	void win_register_event_handler (<wimp_w> win, <win_event_handler> func, void *handle);
Header:	<win.h=>win>

This function installs an event handler function for a given window. /handle/ is passed straight to the handler function. To remove a handler, call with /func/ = <NULL>. To catch key events for icon bar icons, register a handler for the window <win_ICONBAR>. To catch load event for an icon on the icon bar use <win_ICONBARLOAD>.DATA�win_setmenuh
Syntax:	void win_setmenuh (<wimp_w> win, void *handle);
Header:	<win.h=>win>

This functions attaches the given menu structure (pointed to by /handle/) to the given window. This is used by <event_attachmenu>.DATA*win_settitle
Syntax:	void win_settitle (<wimp_w> win, char *newtitle);
Header:	<win.h=>win>

This function changes the _INDIRECTED TEXT_ title icon of the given window. Any windows created from the same template will have their titles changed, unless they were copied using <template_copy>.DATA�win_unknown_event_claimer
Syntax:	<wimp_w> win_unknown_event_claimer (void);
Header:	<win.h=>win>

Returns:	Handle of window claiming events.

Tells you which window is claiming unknown events (or -1 for none).DATABwin_unknown_event_processor
This type is defined in <win.h=>win>. It is a function used for processing unknown events (Shock! Horror!) with a similar prototype to:
{wrap off}
{fCode;align centre}<BOOL> myfunc (<wimp_eventstr> *e, void *handle);{f;align;wrap}

It should return <TRUE> if it has processed the event.DATA�win_add_unknown_event_processor
Syntax:	void win_add_unknown_event_processor (<win_unknown_event_processor> func, void *handle);
Header:	<win.h=>win>

This function adds a handler for unknown events onto the front of the queue of such handlers. Known events are: ENULL, EREDRAW, ECLOSE, EOPEN, EPTRLEAVE, EPTRENTER, EKEY, ESCROLL, EBUT and ESEND/ESENDWANTACK for the following msg types: MCLOSEDOWN, MDATASAVE, MDATALOAD, MHELPREQUEST.DATA�win_remove_unknown_event_processor
Syntax:	void win_remove_unknown_event_processor (<win_unknown_event_processor> func, void *handle);
Header:	<win.h=>win>

This function removes a handler for unknown events from the queue of such handlers.DIR$��܋F����2E&zcaret_X�F�����$�col_�F���~�D&8colpal_$�F���6!E&Edragdat_l�F����CE&�events_�F�����$dfont_l�F����A�$�icon_l�F����E&Ricondat_��F����88&�id_bord_��F���+�7&Zid_but_�F���s8&�id_flag_�F���@+8&�id_val_�F�����$�init_��F�����E&�menus_0�F���Z<E&Amessdat_t�F����ME&�misc_X�F�����A&�mouseinf_�F���̤�$�open_��F����*�$Ytemp_ܢF���A(�"<wimperr_�F���7E&�windat_�F���	�A&�mouseinf_macDATAzWimp caret/keypress data
Types:

#table columns 2
<key_press>
<caret_block>
<key_block>
<pollword_block>
#endtableDATA�Colour Handling
#align centre
<wimp_readpalette=>wimp_readpalette_>
<wimp_setpalette=>wimp_setpalette_>
<wimp_setcolour=>wimp_setcolour_>DATA8Wimp colours/palettes
Types:

#indent 6
#Table columns 3
<wimp_colour>
<palette_entry>
<palette_block>
#EndTable
#indent

Macros:

The following macros are defined to represent the Wimp colours 0-15. WHITE and GREY0 are equivalent, as are BLACK AND GREY7.

#indent 6
#Table columns 2
colour_WHITE
colour_GREY0
colour_GREY1
colour_GREY2
colour_GREY3
colour_GREY4
colour_GREY5
colour_GREY6
colour_GREY7
colour_BLACK
colour_DARK_BLUE
colour_YELLOW
colour_GREEN
colour_RED
colour_CREAM
colour_ARMY_GREEN
colour_ORANGE
colour_LIGHT_BLUE
colour_TRANSPARENT
#EndTableDATAEWimp drag data
Types:
{align centre}
<drag_type>
<drag_block>DATA�Wimp events
Types:

#Table 3 17
<event_type>
<event_pollmask>
<scroll_rq>
<event_data>
<event_pollblock>
#EndTable

Macros:

<wimp_NUMBEROFEVENTS>DATAdFont Handling
#{align centre
<wimp_setfontcolours>
<wimp_set_caret_pos>
<wimp_get_caret_pos>DATA�Icon Handling
#table columns 2
<wimp_create_icon>
<wimp_delete_icon>
<wimp_set_icon_state>
<wimp_get_icon_info>
<wimp_drag_box>
<wimp_which_icon>
<wimp_processkey>
<wimp_ploticon=>wimp_ploticon_>
<wimp_readpixtrans=>wimp_readpixtrans_>
#endtableDATARWimp icon data
Types:

#Table 2 15
<icon_flags>
<icon_indtext>
<icon_indsprite>
<icon_data>
<icon_block>
<icon_createblock>
#EndTable

Macros:

#Table 4 25
<Button types=>w_id_but_>
<Icon flag bits=>w_id_flag_>
<Validation characters=>w_id_val_>
<Border types=>w_id_bord_>
<iconbar_RIGHT>
<iconbar_LEFT>
<window_ICONBAR>
#EndTableDATA�Wimp icon border types
These macros are defined in <DeskLib:Wimp.h=>Wimp>. They are the border types used by the Interface module (not RISC OS 3!).

#indent 6
iconborder_PLINTH	0
iconborder_SURROUND	1
iconborder_OKBUTTON	2
iconborder_INDENT	3DATAZWimp icon button types
These macros are defined in <DeskLib:Wimp.h=>Wimp>.

#tab ,align right,
       iconbtype_NEVER			0	
       iconbtype_ALWAYS			1	
       iconbtype_AUTOREPEAT		2	
       iconbtype_CLICK			3	
       iconbtype_RELEASE		4	
       iconbtype_DOUBLECLICK		5	
       iconbtype_CLICKDRAG		6	
       iconbtype_RELEASEDRAG		7	
       iconbtype_DOUBLEDRAG		8	
       iconbtype_MENU			9	
       iconbtype_DOUBLECLICKDRAG	10	
       iconbtype_RADIO			11	
       iconbtype_RESERVED1		12	
       iconbtype_RESERVED2		13	
       iconbtype_WRITECLICKDRAG		14	
       iconbtype_WRITABLE		15	DATA�Wimp icon flag bits
These macros are defined in <DeskLib:Wimp.h=>Wimp>.

icon_TEXT	0x00000001	/* contains text	*/
icon_SPRITE	0x00000002	/* is a sprite	*/
icon_BORDER	0x00000004	/* has a border	*/
icon_HCENTRE	0x00000008	/* horizontally centred	*/
icon_VCENTRE	0x00000010	/* vertically centred	*/
icon_FILLED	0x00000020	/* filled background	*/
icon_FONT	0x00000040	/* anti-aliased font	*/
icon_NEEDSHELP	0x00000080	/* redraw needs help	*/
icon_INDIRECTED	0x00000100	/* data is 'indirected'	*/
icon_RJUSTIFY	0x00000200	/* right justified	*/
icon_ALLOWADJUST	0x00000400	/* multiple select with adjust	*/
icon_HALVESPRITE	0x00000800	/* plot sprites half-size	*/
icon_BUTTONTYPE	0x00001000	/* 4-bit field: button type	*/
icon_SELECTED	0x00200000	/* selected by user (inverted)	*/
icon_SHADED	0x00400000	/* cannot be selected (shaded)	*/
icon_DELETED	0x00800000	/* has been deleted	*/
icon_FORECOLOUR	0x01000000	/* 4-bit field: foreground colour	*/
icon_BACKCOLOUR	0x10000000	/* 4-bit field: background colour	*/
DATA�Wimp icon validation characters
These macros are defined in <DeskLib:Wimp.h=>Wimp>.

#indent 3
iconvalid_ALLOW		'A'
iconvalid_BORDERTYPE	'R'
iconvalid_DISPLAY	'D'
iconvalid_FONTCOLOURS	'F'
iconvalid_LINESPACE	'L'
iconvalid_SPRITENAME	'S'DATA�Task Management Functions
#Table 11 24
<wimp_initialise=>wimp_initialise_>
<wimp_taskinit>
<wimp_poll=>wimp_poll_>
<wimp_pollidle=>wimp_pollidle_>
<wimp_get_point_info>
<wimp_set_point_shape>
<wimp_closedown=>wimp_closedown_>
<wimp_taskclose>
<wimp_starttask=>wimp_starttask_>
<wimp_setmode=>wimp_setmode_>
<wimp_spriteop=>wimp_spriteop_>
<wimp_spriteop_full>
<wimp_baseofsprites=>wimp_baseofsprites_>
<wimp_reporterror=>wimp_reporterror_>
<wimp_sendmessage=>wimp_sendmessage_>
<wimp_sendwmessage>
<wimp_slotsize>
<wimp_transferblock=>wimp_transferblock_>
<wimp_commandwindow=>wimp_commandwindow_>
<wimp_save_fp_state_on_poll>
<wimp_corrupt_fp_state_on_poll>
#EndTableDATA�Wimp menus
Types:

#table columns 2
<menu_ptr>
<menu_flags>
<menu_submenu=>menu_submenu_>
<menu_item>
<menu_block>
#endtableDATAAWimp message data
Types:

#Table 7 21
<message_action>
<message_block>
<message_destinee>
<message_header>
<message_datasave>
<message_datasaveack>
<message_dataload>
<message_dataopen>
<message_ramfetch>
<message_ramtransmit>
<message_helprequest>
<message_helpreply>
<message_print>
<message_menuwarn>
#EndTableDATA�Miscellaneous
Types:

#Table 5 16
<wimp_point>
<wimp_coord>
<wimp_rect>
<wimp_box>
<window_handle>
<icon_handle>
<task_handle>
<font_array>
<template_block>
<scale_block>
#EndTable

Macros:

{align centre}<wimp_MAXNAME>DATA�Mouse/pointer info
Types:

#table columns 2
<button_state>
<mouse_block>
<pointer_shapeblock>
#endtable

<Macros=>w_mouseinf_mac>

DATA�Window Handling Functions
#Table 8 22
<wimp_create_wind>
<wimp_delete_wind>
<wimp_open_wind>
<wimp_close_wind>
<wimp_redraw_wind>
<wimp_update_wind>
<wimp_get_rectangle>
<wimp_get_wind_state>
<wimp_get_wind_info>
<wimp_force_redraw>
<wimp_create_menu>
<wimp_decode_menu>
<wimp_set_extent>
<wimp_getwindowoutline=>wimp_getwindowoutline_>
<wimp_blockcopy=>wimp_blockcopy_>
<wimp_create_submenu>
#EndTableDATAYTemplate Handling
<wimp_open_template>
<wimp_close_template>
<wimp_load_template>DATA<Wimp errors
Just one type is defined: <error_flags>.DATA�Window data
Types:

#Table 5 23
<window_flags>
<window_minsize>
<window_colourindices>
<window_block>
<window_openblock>
<window_state>
<window_info>
<window_redrawblock>
<window_outline>
#EndTableDATA�Mouse/Pointer macros
button_ADJUST	0x00000001
button_MENU	0x00000002
button_SELECT	0x00000004
button_DRAGADJUST	0x00000010
button_DRAGSELECT	0x00000040
button_CLICKADJUST	0x00000100
button_CLICKSELECT	0x00000400DIR$��`�F���V��$~xferrecv�F�����/�xferrecv_��F������$�xfersendt�F����	�/$XferSend_DATA~xferrecv.h
The \<xferrecv.h> header declares functions for general purpose import of data by an icon drag.

Functions:

#indent 2
#Table columns 2
<xferrecv_checkinsert>
<xferrecv_insertfileok>
<xferrecv_checkprint>
<xferrecv_printfileok>
<xferrecv_checkimport>
<xferrecv_doimport>
<xferrecv_file_is_safe>
#EndTable
#indent

Types:
{align centre}
<xferrecv_buffer_processor>DIR$��x�F���<��$�buffer_processor0�F���J��$Vcheckimport��F���W�$�checkinsert�F���Y}�$AcheckprintT�F���6��$�doimport��F����X&�Epilog��F������$
file_is_safeȱF���;k�$�insertfileok��F������$�printfileok��F���Q�X&1PrologܴF�����X&�TLDATA�xferrecv_buffer_processor
This type is defined in <xferrecv.h=>xferrecv>. It is a function used to empty a buffer during data transfer. The function has the form:
{wrap off}
{fCode;align centre}<BOOL> myfunc (char **buffer, int *size);{f;align;wrap}

It should empty the buffer; or it should extend it and return new values for its pointer and size. The function should return <FALSE> if it is unable to do either of these things.DATAVxferrecv_checkimport
Syntax:	int xferrecv_checkimport (int *size);
Header:	<xferrecv.h=>xferrecv>

Returns:	The file type.

This function checks to see if the last Wimp event was a <DataSave=>SWI:wimp_um1> message onto your application. If so it returns the filetype and stores the estimated size in {/}*size{/}. If not it returns -1.DATA�xferrecv_checkinsert
Syntax:	int xferrecv_checkinsert (char **name);
Header:	<xferrecv.h=>xferrecv>

Returns:	File type, or -1.

This function checks to see if the last Wimp event was a request to import a file (ie a <DataOpen=>SWI:wimp_um5> or <DataLoad=>SWI:wimp_um3> message). If so it returns the filetype and stores the file name pointer in {/}*name{/}. If not, it returns -1.DATAAxferrecv_checkprint
Syntax:	int xferrecv_checkprint (char **name);
Header:	<xferrecv.h=>xferrecv>

Returns:	File type.

This function sets up an acknowledge to a PrintTypeOdd message and gets the file name and file type. You can then either print the file directly to "printer:" or output it to "\<Printer$Temp>".DATA�xferrecv_doimport
Syntax:	int xferrecv_doimport (char *buf, int size, <xferrecv_buffer_processor> *p;
Header:	<xferrecv.h=>xferrecv>

Returns:	Number of bytes transferred, or -1.

This function replies to a <DataSave=>SWI:wimp_um1> message and loads data into a user-defined buffer of the given size. When this buffer is full, /p/ is called to empty it. This function supports RAM and scrap file transfer protocols.DATA�XferRecv_Epilog
Syntax:	void XferRecv_Epilog (void);
Header:	<TimsLib:XferRecv.h=>XferRecv_TL>

This function should be after you have loaded a file. It sends a DataLoadAck message.DATA
xferrecv_file_is_safe
Syntax:	<BOOL> xferrecv_file_is_safe (void);
Header:	<xferrecv.h=>xferrecv>

Returns:	<TRUE> if it is.

This function checks if the file was received from a safe source ie the supplied filename will not change in the foreseeable future.DATA�xferrecv_insertfileok
Syntax:	void xferrecv_insertfileok (void);
Header:	<xferrecv.h=>xferrecv>

This function deletes "\<Wimp$Scrap>" (if used) and sends a <DataLoadAck=>SWI:wimp_um4> message. Call this after loading the file.DATA�xferrecv_printfileok
Syntax:	void xferrecv_printfileok (int type);
Header:	<xferrecv.h=>xferrecv>

This function replies to a PrintTypeOdd message with a PrintTypeKnown message. If printed indirectly, you should pass the file type back.DATA1XferRecv_Prolog
Syntax:	void XferRecv_Prolog (int *filetype, char *filename);
Header:	<TimsLib:XferRecv.h=>XferRecv_TL>

This function should be called when you get a DataLoad or DataOpen message. It sets up an acknowledgement message. You should now load the file and then call <XferRecv_Epilog>.DATA�TimsLib:XferRecv.h
This header declares two functions for handling received files ie files dragged to your application.

Functions:

#Table 1 20
<XferRecv_Prolog>
<XferRecv_Epilog>
#EndTableDATA�xfersend
Syntax:	<BOOL> xfersend (int filetype, char *name, int size, <xfersend_saveproc> save, <xfersend_sendproc> send, <xfersend_printproc> print, <wimp_eventstr> *e, void *handle);
Header:	<xfersend.h=>xfersend_h>

Returns:	<TRUE> if successful.

See also the TimsLib function, <XferSend=>XferSend_>.

This function should be called to initiate data transfer following a drag. Pass in the filetype and suggested name, and the three handler functions. /e/ is the event which started the export, /handle/ is a user-defined handle which is passed directly to the handlers, and /size/ is the estimated size of the file.

If /send/ is 0 then no RAM transfer is used. If /print/ is 0 then 'save' is used instead.DIR$$$��F�����X&!Root��F����6�"%clear_unknownsȽF���	7�"�close_on_xferT�F���7�":file_is_safe��F���7�"�h��F���!7�"�pipeP�F���,7�"�printFailed��F���47�"�printPrinted��F���<7�"�printproc��F���G7�"`read_last_ref��F�����X&�saveproc��F���[7�"(sendbuf��F���d7�"�sendprocl�F���l7�"�set_fileissafe`�F����X&�TLDATAXferSend
Syntax:	<BOOL> XferSend (int filetype, char *name, int size, <xfersend_saveproc> save, <event_pollblock> *e, void *handle);
Header:	<TimsLib:XferSend.h=>XferSend_TL>

Returns:	<TRUE> if successful.

This function should be called to initiate data transfer following a drag. Pass in the filetype and suggested name, and handler function. /e/ is the event which started the export, /handle/ is a user-defined handle which is passed directly to the handlers, and /size/ is the estimated size of the file.DATA%xfersend_clear_unknowns
Syntax:  void xfersend_clearunknowns (void);
Header:  <xfersend.h=>xfersend_h>

This function clears up any stray event
processors left lying around by xfersend. It
should be called whenever a transfer is
finished (either normally or as the result of
an error).DATA�xfersend_close_on_xfer
Syntax:  void xfersend_close_on_xfer
         (<BOOL> close, <wimp_w> win);
Header:  <xfersend.h=>xfersend_h>

This function allows you to set a window to
automatically close after data transfer. If
'close' is <TRUE> then the window 'win' will be
closed after data transfer. You would normally
use this to close, for example, the Save window
after a file is saved.DATA:xfersend_file_is_safe
Syntax:  <BOOL> xfersend_file_is_safe (void);
Header:  <xfersend.h=>xfersend_h>

Returns: <TRUE> if safe.

This function checks whether the file's name
can be reliably assumed not to change. Returns
<TRUE> if the file recipient will not modify it,
so you can change your window title.DATA�xfersend.h
This header declares function for general
purpose export of data by an icon drag.

Functions:

#Table 4 24
<xfersend             >
<xfersend_pipe        >
<xfersend_sendbuf     >
<xfersend_file_is_safe>
<xfersend_set_fileissafe>
<xfersend_close_on_xfer >
<xfersend_clear_unknowns>
<xfersend_read_last_ref >
#EndTable

Types:

#Table 2 24
<xfersend_saveproc>
<xfersend_sendproc>
<xfersend_printproc>
#EndTable

Macros:

#Table 1 24
<xfersend_printPrinter>
<xfersend_printFailed>
#EndTableDATA�xfersend_pipe
Syntax:  <BOOL> xfersend_pipe (int filetype,
         char *name, int size,
         <xfersend_saveproc> save,
         <xfersend_sendproc> send,
         <xfersend_printproc> print,
         void *handle, <wimp_t> task);
Header:  <xfersend.h=>xfersend_h>

Returns: <TRUE> if successful.

This function has the same effect as <xfersend>,
but does not need to be passed a wimp event,
simply a task handle 'task' to pass data to.DATA�xfersend_printFailed
This macro is defined by <xfersend.h=>xfersend_h> as a value
signifying that an error occurred while trying
to print. It is defined as -2.DATA�xfersend_printPrinted
This macro is defined by <xfersend.h=>xfersend_h> as a value
signifying that a file was printed directly. It
is defined as -1.DATA�xfersend_printproc
This type is defined in <xfersend.h=>xfersend_h>. It is a
function used to print a file. The function has
the form:

  int myfunc (char *filename, void *handle);

'handle' is the handle passed to <xfersend>
earlier. The function should either print the
file directly, or save it into the given
filename from where the printer driver will
print it. It should return either the file type
saved (if it was saved), <xfersend_printPrinted>,
or <xfersend_printFailed>.DATA`xfersend_read_last_ref
Syntax:  int xfersend_read_last_ref (void);
Header:  <xfersend.h=>xfersend_h>

Returns: my_ref value of last message sent.

The my_ref value is needed for unsafe files. If
they are made safe, you are send a DataSaved
message with the reference (of course, this is
irrelevant if you app modifies the data after
saving...).DATA�xfersend_saveproc
This type is defined in <xfersend.h=>xfersend_h> and <TimsLib:XferSend.h=>XferSend_TL>. It is a function used to save data to be transferred into a given file. The function has the form:

{fCode;align centre}<BOOL> myfunc (char *filename, void *handle);{f;align}

/filename/ is the name of the file to be saved, /handle/ is the handle passed to <xfersend> earlier. The function should return <TRUE> if it is successful.DATA(xfersend_sendbuf
Syntax:  <BOOL> xfersend_sendbuf
         (char *buffer, int size);
Header:  <xfersend.h=>xfersend_h>

Returns: <TRUE> if successful.

This function sends the buffer whose pointer
and size are given to a receiver. This function
should be called by an <xfersend_sendproc>.DATA�xfersend_sendproc
This type is defined in <xfersend.h=>xfersend_h>. It is a
function used to send a buffer of data. The
function has the form:

  <BOOL> myfunc (void *handle, int *maxbuf);

'handle' is the handle passed to <xfersend>
earlier. The function should call
<xfersend_sendbuf> to send one buffer-full of
data no bigger than '*maxbuf'. It should return
<TRUE> if the data was successfully transmitted.DATA�xfersend_set_fileissafe
Syntax:  void xfersend_set_fileissafe (<BOOL> sf);
Header:  <xfersend.h=>xfersend_h>

This function sets whether a file's name will
remain unchanged during data transfer. If 'sf'
is <TRUE> then the file is safe.DATA�TimsLib:XferSend.h
This header declares a function for general purpose export of data by an icon drag.

Function:	<XferSend=>XferSend_>

Type:	<xfersend_saveproc>DIR$����F���Je�"�110X�F���Oe�"�120��F���[e�"�125h�F���fe�"�130�F����̳%�200DATA�Changes from version 1.00 -> 1.10
� Help for <TimsLib=>ro_tlib_> now added.

� Version numbers added to <DeskLib=>ro_dlib_> help.

� Help added for <DeskLib:Pane.h=>Pane>.DATA�Changes from version 1.10 -> 1.20
� Help for DeskLib updated to version 2.10

    <Changes from version 1.00 -\> 1.10=>110>DATA�Changes from version 1.20 -> 1.25
Various changes at the request of Stallion:

� Help added for <float.h=>float>
� Help added for <locale.h=>locale>
� Help added for <signal.h=>signal>
� Author information removed
� Comments on Desktop C removed

Other changes:

� Comment about obsolescence of TimsLib added
� Various additions to help

      <Changes from version 1.10 -\> 1.20=>120>DATA�Changes from version 1.25 -> 1.30
No longer being sold by Stallion Software.

� Maelstrom Software info added.

   <Changes from version 1.20 -\> 1.25=>125>DATA�Changes from version 1.30 -> 2.00
#wrap off
� Now upgraded to StrongHelp 2 format
� Help for DeskLib updated to version 2.16
� Lots of corrections and additions

#align centre
<Changes from version 1.25 -\> 1.30=>130>DATAC#Commands
Background Wimp 1
Spritefile Sprites22
fStd
#End
DATA]save_ramsaver
This type is defined in <DeskLib:Save.h=>Save>. It defines a function type used for saving data. The function is of the form:

{fCode;align centre}int myfunc (<task_handle> source, void *ref, task_handle destin, void *buf, unsigned int size, int count);{f;align}

The function should use <Wimp_TransferBlock> to transfer data to /buf/ in the task /destin/. /size/ gives the size of /buf/ ie the amount to transfer and /count/ is the amount transferred so far. /source/ is your task handle. The function should return the number of bytes transferred, or negative if an error occurred.FREEV�s_InitSaveWindowHandler
Syntax:	<save_saveblock> *Save_InitSaveWindowHandler (<window_handle> w, <BOOL> is_menu, BOOL is_win, BOOL release, <icon_handle> drag, icon_handle ok, icon_handle cancel, icon_handle name, <save_filesaver> filesave, <save_ramsaver> ramsave, <save_resulthandler> res_handle, <size_t> estsize, void *ref);
Header:	<DeskLib:Save.h=>Save>

Returns:	Pointer to save block.

This function handles everything to do with saving. Once your save
window is created all you need to do is call this with:
{tab}
�	The window handle of the save window
�	If the save window is oDATA�sprite_info
This type is defined in <sprite.h=>sprite_h> (Desktop C) and <DeskLib:Sprite.h=>Sprite_DL>. It is defined as the following structure in Desktop C:

    \{
        int width;
        int height;
        int mask;
        int mode;
    }

and the following structure in DeskLib:

    \{
        unsigned int width;
        unsigned int height;
        unsigned int maskstatus;
        unsigned int mode;
    }aDATA*fwrite
Syntax:	<size_t> fwrite (void *ptr, size_t size, size_t nobj, <FILE> *stream);
Header:	<stdio.h=>stdio>

Returns:	The number of objects written.

This function writes /nobj/ objects of size specified by /size/ from the array pointed to by /ptr/, into the file pointed to by /stream/.e.
00000000  48 45 4c 50 28 00 00 00  c9 00 00 00 e0 94 05 00  |HELP(...........|
00000010  2c 00 00 00 00 fd ff ff  00 00 00 00 d0 02 00 00  |,...............|
00000020  00 01 00 00 00 00 00 00  24 00 00 00 44 49 52 24  |........$...DIR$|
00000030  d8 02 00 00 d8 02 00 00  04 03 00 00 46 fd ff ff  |............F...|
00000040  ac 58 5a 26 d1 01 00 00  13 00 00 00 00 00 00 00  |.XZ&............|
00000050  21 52 6f 6f 74 00 00 00  d8 04 00 00 46 fd ff ff  |!Root.......F...|
00000060  5a 55 84 2f 3c 09 00 00  13 01 00 00 00 00 00 00  |ZU./<...........|
00000070  5f 00 00 00 58 53 00 00  45 f9 ff ff 38 1c 82 e5  |_...XS..E...8...|
00000080  c4 43 00 00 13 00 00 00  00 00 00 00 53 70 72 69  |.C..........Spri|
00000090  74 65 73 32 32 00 00 00  1c 97 00 00 46 fd ff ff  |tes22.......F...|
000000a0  12 5a 84 2f 34 03 00 00  13 01 00 00 00 00 00 00  |.Z./4...........|
000000b0  5b 61 5d 00 b8 cd 00 00  46 fd ff ff 6e 5d 84 2f  |[a].....F...n]./|
000000c0  2c 01 00 00 13 01 00 00  00 00 00 00 5b 62 5d 00  |,...........[b].|
000000d0  e4 3d 01 00 46 fd ff ff  fb 62 84 2f b0 04 00 00  |.=..F....b./....|
000000e0  13 01 00 00 00 00 00 00  5b 63 5d 00 00 06 02 00  |........[c].....|
000000f0  46 fd ff ff f4 6e 84 2f  c0 04 00 00 13 01 00 00  |F....n./........|
00000100  00 00 00 00 5b 64 5d 00  38 27 03 00 46 fd ff ff  |....[d].8'..F...|
00000110  30 7f 84 2f 48 03 00 00  13 01 00 00 00 00 00 00  |0../H...........|
00000120  5b 65 5d 00 c8 8b 03 00  46 fd ff ff 46 85 84 2f  |[e].....F...F../|
00000130  e0 06 00 00 13 01 00 00  00 00 00 00 5b 66 5d 00  |............[f].|
00000140  b0 94 04 00 46 fd ff ff  b7 93 84 2f 78 02 00 00  |....F....../x...|
00000150  13 01 00 00 00 00 00 00  5b 67 2d 68 5d 00 00 00  |........[g-h]...|
00000160  88 e6 04 00 46 fd ff ff  a9 98 84 2f 14 04 00 00  |....F....../....|
00000170  13 01 00 00 00 00 00 00  5b 69 2d 6b 5d 00 00 00  |........[i-k]...|
00000180  84 91 05 00 46 fd ff ff  81 a2 84 2f 30 03 00 00  |....F....../0...|
00000190  13 01 00 00 00 00 00 00  5b 6c 5d 00 bc eb 05 00  |........[l].....|
000001a0  46 fd ff ff e1 a8 84 2f  e4 04 00 00 13 01 00 00  |F....../........|
000001b0  00 00 00 00 5b 6d 5d 00  c0 cb 06 00 46 fd ff ff  |....[m].....F...|
000001c0  1a b5 84 2f 6c 01 00 00  13 01 00 00 00 00 00 00  |.../l...........|
000001d0  5b 6e 2d 6f 5d 00 00 00  e4 36 07 00 46 fd ff ff  |[n-o]....6..F...|
000001e0  1b ba 84 2f 14 04 00 00  13 01 00 00 00 00 00 00  |.../............|
000001f0  5b 70 5d 00 50 16 08 00  46 fd ff ff bf c6 84 2f  |[p].P...F....../|
00000200  8c 02 00 00 13 01 00 00  00 00 00 00 5b 71 2d 72  |............[q-r|
00000210  5d 00 00 00 b4 51 08 00  46 fd ff ff f9 c9 84 2f  |]....Q..F....../|
00000220  64 0d 00 00 13 01 00 00  00 00 00 00 5b 73 5d 00  |d...........[s].|
00000230  c0 3a 0a 00 46 fd ff ff  d1 e2 84 2f 1c 04 00 00  |.:..F....../....|
00000240  13 01 00 00 00 00 00 00  5b 74 5d 00 50 00 0b 00  |........[t].P...|
00000250  46 fd ff ff 7e ef 84 2f  2c 01 00 00 13 01 00 00  |F...~../,.......|
00000260  00 00 00 00 5b 75 5d 00  c0 0c 0b 00 46 fd ff ff  |....[u].....F...|
00000270  98 f0 84 2f 80 01 00 00  13 01 00 00 00 00 00 00  |.../............|
00000280  5b 76 5d 00 50 23 0b 00  46 fd ff ff 40 f2 84 2f  |[v].P#..F...@../|
00000290  50 02 00 00 13 01 00 00  00 00 00 00 5b 77 5d 00  |P...........[w].|
000002a0  c4 a4 0c 00 46 fd ff ff  9b 08 85 2f 9c 00 00 00  |....F....../....|
000002b0  13 01 00 00 00 00 00 00  5b 78 2d 7a 5d 00 00 00  |........[x-z]...|
000002c0  0c cf 0c 00 46 fd ff ff  ff 0a 85 2f 98 00 00 00  |....F....../....|
000002d0  13 01 00 00 00 00 00 00  5b 31 2d 39 5d 00 00 00  |........[1-9]...|
000002e0  f0 d3 0c 00 46 ff ff ff  7d 3d 5a 26 43 00 00 00  |....F...}=Z&C...|
000002f0  13 00 00 00 00 00 00 00  21 43 6f 6e 66 69 67 75  |........!Configu|
00000300  72 65 00 00 44 41 54 41  d1 01 00 00 43 0a 23 53  |re..DATA....C.#S|
00000310  70 72 69 74 65 20 31 36  2c 31 36 20 21 63 3f 0a  |prite 16,16 !c?.|
00000320  23 69 6e 64 65 6e 74 20  38 0a 23 74 61 62 20 2c  |#indent 8.#tab ,|
00000330  61 6c 69 67 6e 20 63 65  6e 74 72 65 0a 2d 09 2a  |align centre.-.*|
00000340  48 65 6c 70 20 4f 6e 20  43 2a 09 2d 0a 2d 09 62  |Help On C*.-.-.b|
00000350  79 20 3c 47 61 72 65 74  68 20 42 6f 64 65 6e 3d  |y <Gareth Boden=|
00000360  3e 47 42 6f 64 65 6e 3e  09 2d 0a 2d 09 3c 56 65  |>GBoden>.-.-.<Ve|
00000370  72 73 69 6f 6e 20 32 2e  30 30 3d 3e 32 30 30 3e  |rsion 2.00=>200>|
00000380  09 2d 0a 23 69 6e 64 65  6e 74 20 32 0a 0a 3d 20  |.-.#indent 2..= |
00000390  3c 4d 61 65 6c 73 74 72  6f 6d 20 53 6f 66 74 77  |<Maelstrom Softw|
000003a0  61 72 65 3d 3e 4d 61 65  6c 73 74 72 6f 6d 3e 20  |are=>Maelstrom> |
000003b0  3d 0a 23 69 6e 64 65 6e  74 20 30 3b 6c 69 6e 65  |=.#indent 0;line|
000003c0  3b 69 6e 64 65 6e 74 0a  3c 54 68 65 20 43 20 4c  |;indent.<The C L|
000003d0  61 6e 67 75 61 67 65 3d  3e 63 5f 3e 0a 0a 3c 41  |anguage=>c_>..<A|
000003e0  4e 53 49 20 46 75 6e 63  74 69 6f 6e 73 3d 3e 61  |NSI Functions=>a|
000003f0  6e 73 69 5f 3e 0a 3c 52  49 53 43 20 4f 53 20 46  |nsi_>.<RISC OS F|
00000400  75 6e 63 74 69 6f 6e 73  3d 3e 72 69 73 63 6f 73  |unctions=>riscos|
00000410  5f 3e 0a 0a 3c 50 72 65  70 72 6f 63 65 73 73 6f  |_>..<Preprocesso|
00000420  72 20 44 69 72 65 63 74  69 76 65 73 3d 3e 70 70  |r Directives=>pp|
00000430  64 69 72 5f 3e 0a 3c 43  6f 6d 70 69 6c 65 72 20  |dir_>.<Compiler |
00000440  44 69 72 65 63 74 69 76  65 73 3d 3e 63 6f 6d 70  |Directives=>comp|
00000450  64 69 72 5f 3e 20 0a 3c  4c 69 6e 6b 65 72 20 44  |dir_> .<Linker D|
00000460  69 72 65 63 74 69 76 65  73 3d 3e 6c 69 6e 6b 64  |irectives=>linkd|
00000470  69 72 5f 3e 0a 3c 4d 61  6b 65 20 46 69 6c 65 73  |ir_>.<Make Files|
00000480  3d 3e 6d 61 6b 65 5f 3e  0a 3c 4c 69 62 72 61 72  |=>make_>.<Librar|
00000490  69 65 73 3d 3e 6c 69 62  5f 3e 0a 23 69 6e 64 65  |ies=>lib_>.#inde|
000004a0  6e 74 20 30 3b 6c 69 6e  65 20 20 20 20 0a 7b 61  |nt 0;line    .{a|
000004b0  6c 69 67 6e 20 63 65 6e  74 72 65 7d a9 20 41 63  |lign centre}. Ac|
000004c0  6f 72 6e 20 55 73 65 72  2f 47 20 42 6f 64 65 6e  |orn User/G Boden|
000004d0  20 31 39 39 35 00 00 00  44 49 52 24 3c 09 00 00  | 1995...DIR$<...|
000004e0  3c 09 00 00 14 0e 00 00  46 ff ff ff ab 02 bf 22  |<.......F......"|
000004f0  a5 00 00 00 13 00 00 00  00 00 00 00 5f 64 65 66  |............_def|
00000500  61 75 6c 74 5f 73 69 67  6e 61 6c 5f 68 61 6e 64  |ault_signal_hand|
00000510  6c 65 72 00 bc 0e 00 00  46 ff ff ff 0f 09 bf 22  |ler.....F......"|
00000520  9f 00 00 00 13 00 00 00  00 00 00 00 5f 65 72 72  |............_err|
00000530  6f 72 5f 73 69 67 6e 61  6c 5f 6d 61 72 6b 65 72  |or_signal_marker|
00000540  00 00 00 00 5c 0f 00 00  46 ff ff ff 4b 0d bf 22  |....\...F...K.."|
00000550  a3 00 00 00 13 00 00 00  00 00 00 00 5f 69 67 6e  |............_ign|
00000560  6f 72 65 5f 73 69 67 6e  61 6c 5f 68 61 6e 64 6c  |ore_signal_handl|
00000570  65 72 00 00 00 10 00 00  46 ff ff ff 11 66 b0 24  |er......F....f.$|
00000580  0b 01 00 00 13 00 00 00  00 00 00 00 65 78 74 65  |............exte|
00000590  6e 64 65 64 5f 66 70 5f  6e 75 6d 62 65 72 00 00  |nded_fp_number..|
000005a0  0c 11 00 00 46 ff ff ff  7e 6b c4 22 d6 00 00 00  |....F...~k."....|
000005b0  13 00 00 00 00 00 00 00  49 4f 46 42 46 00 00 00  |........IOFBF...|
000005c0  e4 11 00 00 46 ff ff ff  d2 6f c4 22 d5 00 00 00  |....F....o."....|
000005d0  13 00 00 00 00 00 00 00  49 4f 4c 42 46 00 00 00  |........IOLBF...|
000005e0  bc 12 00 00 46 ff ff ff  9b 74 c4 22 d2 00 00 00  |....F....t."....|
000005f0  13 00 00 00 00 00 00 00  49 4f 4e 42 46 00 00 00  |........IONBF...|
00000600  90 13 00 00 46 ff ff ff  0a d9 af 24 27 02 00 00  |....F......$'...|
00000610  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 61  |........kernel_a|
00000620  6c 6c 6f 63 00 00 00 00  b8 15 00 00 46 ff ff ff  |lloc........F...|
00000630  17 4a ae 24 08 01 00 00  13 00 00 00 00 00 00 00  |.J.$............|
00000640  6b 65 72 6e 65 6c 5f 63  6f 6d 6d 61 6e 64 5f 73  |kernel_command_s|
00000650  74 72 00 00 c0 16 00 00  46 ff ff ff 1a 31 ae 24  |tr......F....1.$|
00000660  af 00 00 00 13 00 00 00  00 00 00 00 6b 65 72 6e  |............kern|
00000670  65 6c 5f 63 75 72 72 65  6e 74 5f 73 74 61 63 6b  |el_current_stack|
00000680  5f 63 68 75 6e 6b 00 00  70 17 00 00 46 ff ff ff  |_chunk..p...F...|
00000690  ee 49 b0 24 b0 00 00 00  13 00 00 00 00 00 00 00  |.I.$............|
000006a0  6b 65 72 6e 65 6c 5f 45  52 52 4f 52 00 00 00 00  |kernel_ERROR....|
000006b0  20 18 00 00 46 ff ff ff  71 ae ae 24 15 01 00 00  | ...F...q..$....|
000006c0  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 65  |........kernel_e|
000006d0  73 63 61 70 65 5f 73 65  65 6e 00 00 38 19 00 00  |scape_seen..8...|
000006e0  46 ff ff ff c8 55 ae 24  ca 00 00 00 13 00 00 00  |F....U.$........|
000006f0  00 00 00 00 6b 65 72 6e  65 6c 5f 65 78 69 74 00  |....kernel_exit.|
00000700  04 1a 00 00 46 ff ff ff  77 65 ae 24 f4 00 00 00  |....F...we.$....|
00000710  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 65  |........kernel_e|
00000720  78 69 74 74 72 61 70 68  61 6e 64 6c 65 72 00 00  |xittraphandler..|
00000730  f8 1a 00 00 46 ff ff ff  6e ba b0 24 d6 01 00 00  |....F...n..$....|
00000740  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 45  |........kernel_E|
00000750  78 74 65 6e 64 50 72 6f  63 00 00 00 d0 1c 00 00  |xtendProc.......|
00000760  46 ff ff ff dc 7f ae 24  0b 01 00 00 13 00 00 00  |F......$........|
00000770  00 00 00 00 6b 65 72 6e  65 6c 5f 66 70 61 76 61  |....kernel_fpava|
00000780  69 6c 61 62 6c 65 00 00  dc 1d 00 00 46 ff ff ff  |ilable......F...|
00000790  ee 8e ae 24 db 01 00 00  13 00 00 00 00 00 00 00  |...$............|
000007a0  6b 65 72 6e 65 6c 5f 67  65 74 65 6e 76 00 00 00  |kernel_getenv...|
000007b0  b8 1f 00 00 46 ff ff ff  b2 77 ae 24 d8 00 00 00  |....F....w.$....|
000007c0  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 68  |........kernel_h|
000007d0  6f 73 74 6f 73 00 00 00  90 20 00 00 46 ff ff ff  |ostos.... ..F...|
000007e0  05 b9 ae 24 94 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000007f0  6b 65 72 6e 65 6c 5f 69  72 71 73 5f 64 69 73 61  |kernel_irqs_disa|
00000800  62 6c 65 64 00 00 00 00  24 21 00 00 46 ff ff ff  |bled....$!..F...|
00000810  a5 b5 ae 24 d2 00 00 00  13 00 00 00 00 00 00 00  |...$............|
00000820  6b 65 72 6e 65 6c 5f 69  72 71 73 5f 6f 66 66 00  |kernel_irqs_off.|
00000830  f8 21 00 00 46 ff ff ff  0c b2 ae 24 a0 00 00 00  |.!..F......$....|
00000840  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 69  |........kernel_i|
00000850  72 71 73 5f 6f 6e 00 00  98 22 00 00 46 ff ff ff  |rqs_on..."..F...|
00000860  ec 45 ae 24 c9 00 00 00  13 00 00 00 00 00 00 00  |.E.$............|
00000870  6b 65 72 6e 65 6c 5f 6c  61 6e 67 75 61 67 65 00  |kernel_language.|
00000880  64 23 00 00 46 ff ff ff  eb 84 ae 24 5d 01 00 00  |d#..F......$]...|
00000890  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 6c  |........kernel_l|
000008a0  61 73 74 5f 6f 73 65 72  72 6f 00 00 c4 24 00 00  |ast_oserro...$..|
000008b0  46 ff ff ff 88 4d b0 24  a7 00 00 00 13 00 00 00  |F....M.$........|
000008c0  00 00 00 00 6b 65 72 6e  65 6c 5f 4e 4f 4e 58 00  |....kernel_NONX.|
000008d0  6c 25 00 00 46 ff ff ff  d1 79 af 24 5a 01 00 00  |l%..F....y.$Z...|
000008e0  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 6f  |........kernel_o|
000008f0  73 61 72 67 73 00 00 00  c8 26 00 00 46 ff ff ff  |sargs....&..F...|
00000900  93 15 af 24 58 01 00 00  13 00 00 00 00 00 00 00  |...$X...........|
00000910  6b 65 72 6e 65 6c 5f 6f  73 62 67 65 74 00 00 00  |kernel_osbget...|
00000920  20 28 00 00 46 ff ff ff  c1 21 af 24 58 01 00 00  | (..F....!.$X...|
00000930  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 6f  |........kernel_o|
00000940  73 62 70 75 74 00 00 00  78 29 00 00 46 ff ff ff  |sbput...x)..F...|
00000950  da f1 ae 24 0d 02 00 00  13 00 00 00 00 00 00 00  |...$............|
00000960  6b 65 72 6e 65 6c 5f 6f  73 62 79 74 65 00 00 00  |kernel_osbyte...|
00000970  88 2b 00 00 46 ff ff ff  82 8d af 24 c1 01 00 00  |.+..F......$....|
00000980  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 6f  |........kernel_o|
00000990  73 63 6c 69 00 00 00 00  4c 2d 00 00 46 ff ff ff  |scli....L-..F...|
000009a0  24 55 b0 24 0b 01 00 00  13 00 00 00 00 00 00 00  |$U.$............|
000009b0  6b 65 72 6e 65 6c 5f 6f  73 65 72 72 6f 72 00 00  |kernel_oserror..|
000009c0  58 2e 00 00 46 ff ff ff  79 69 af 24 bf 01 00 00  |X...F...yi.$....|
000009d0  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 6f  |........kernel_o|
000009e0  73 66 69 6c 65 00 00 00  18 30 00 00 46 ff ff ff  |sfile....0..F...|
000009f0  c0 8c b0 24 6c 01 00 00  13 00 00 00 00 00 00 00  |...$l...........|
00000a00  6b 65 72 6e 65 6c 5f 6f  73 66 69 6c 65 5f 62 6c  |kernel_osfile_bl|
00000a10  6f 63 00 00 84 31 00 00  46 ff ff ff 10 5a af 24  |oc...1..F....Z.$|
00000a20  a2 01 00 00 13 00 00 00  00 00 00 00 6b 65 72 6e  |............kern|
00000a30  65 6c 5f 6f 73 66 69 6e  64 00 00 00 28 33 00 00  |el_osfind...(3..|
00000a40  46 ff ff ff 42 31 af 24  c9 01 00 00 13 00 00 00  |F...B1.$........|
00000a50  00 00 00 00 6b 65 72 6e  65 6c 5f 6f 73 67 62 70  |....kernel_osgbp|
00000a60  62 00 00 00 f4 34 00 00  46 ff ff ff 3d 80 b0 24  |b....4..F...=..$|
00000a70  81 01 00 00 13 00 00 00  00 00 00 00 6b 65 72 6e  |............kern|
00000a80  65 6c 5f 6f 73 67 62 70  62 5f 62 6c 6f 63 00 00  |el_osgbpb_bloc..|
00000a90  78 36 00 00 46 ff ff ff  a3 03 af 24 fc 00 00 00  |x6..F......$....|
00000aa0  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 6f  |........kernel_o|
00000ab0  73 72 64 63 68 00 00 00  74 37 00 00 46 ff ff ff  |srdch...t7..F...|
00000ac0  64 45 af 24 b5 01 00 00  13 00 00 00 00 00 00 00  |dE.$............|
00000ad0  6b 65 72 6e 65 6c 5f 6f  73 77 6f 72 64 00 00 00  |kernel_osword...|
00000ae0  2c 39 00 00 46 ff ff ff  a5 0d af 24 2b 01 00 00  |,9..F......$+...|
00000af0  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 6f  |........kernel_o|
00000b00  73 77 72 63 68 00 00 00  58 3a 00 00 46 ff ff ff  |swrch...X:..F...|
00000b10  09 41 ae 24 c2 00 00 00  13 00 00 00 00 00 00 00  |.A.$............|
00000b20  6b 65 72 6e 65 6c 5f 70  72 6f 63 6e 61 6d 65 00  |kernel_procname.|
00000b30  1c 3b 00 00 46 ff ff ff  71 5e ae 24 c6 00 00 00  |.;..F...q^.$....|
00000b40  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 72  |........kernel_r|
00000b50  61 69 73 65 5f 65 72 72  6f 72 00 00 e4 3b 00 00  |aise_error...;..|
00000b60  46 ff ff ff ea 11 b0 24  1d 01 00 00 13 00 00 00  |F......$........|
00000b70  00 00 00 00 6b 65 72 6e  65 6c 5f 73 64 69 76 00  |....kernel_sdiv.|
00000b80  04 3d 00 00 46 ff ff ff  e8 1b b0 24 b0 00 00 00  |.=..F......$....|
00000b90  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 73  |........kernel_s|
00000ba0  64 69 76 31 30 00 00 00  b4 3d 00 00 46 ff ff ff  |div10....=..F...|
00000bb0  10 a7 ae 24 8c 01 00 00  13 00 00 00 00 00 00 00  |...$............|
00000bc0  6b 65 72 6e 65 6c 5f 73  65 74 65 6e 76 00 00 00  |kernel_setenv...|
00000bd0  40 3f 00 00 46 ff ff ff  e3 4d ae 24 ab 00 00 00  |@?..F....M.$....|
00000be0  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 73  |........kernel_s|
00000bf0  65 74 72 65 74 75 72 6e  63 6f 64 65 00 00 00 00  |etreturncode....|
00000c00  ec 3f 00 00 46 ff ff ff  ca 25 b0 24 44 01 00 00  |.?..F....%.$D...|
00000c10  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 73  |........kernel_s|
00000c20  72 65 6d 00 30 41 00 00  46 ff ff ff fa 5b b0 24  |rem.0A..F....[.$|
00000c30  15 01 00 00 13 00 00 00  00 00 00 00 6b 65 72 6e  |............kern|
00000c40  65 6c 5f 73 74 61 63 6b  5f 63 68 75 6e 6b 00 00  |el_stack_chunk..|
00000c50  48 42 00 00 46 ff ff ff  d2 cc ae 24 df 01 00 00  |HB..F......$....|
00000c60  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 73  |........kernel_s|
00000c70  77 69 00 00 28 44 00 00  46 ff ff ff 65 dc ae 24  |wi..(D..F...e..$|
00000c80  ec 01 00 00 13 00 00 00  00 00 00 00 6b 65 72 6e  |............kern|
00000c90  65 6c 5f 73 77 69 5f 63  00 00 00 00 14 46 00 00  |el_swi_c.....F..|
00000ca0  46 ff ff ff 5c 70 b0 24  f6 00 00 00 13 00 00 00  |F...\p.$........|
00000cb0  00 00 00 00 6b 65 72 6e  65 6c 5f 73 77 69 5f 72  |....kernel_swi_r|
00000cc0  65 67 73 00 0c 47 00 00  46 ff ff ff 8f a8 af 24  |egs..G..F......$|
00000cd0  95 02 00 00 13 00 00 00  00 00 00 00 6b 65 72 6e  |............kern|
00000ce0  65 6c 5f 73 79 73 74 65  6d 00 00 00 a4 49 00 00  |el_system....I..|
00000cf0  46 ff ff ff e8 2f b0 24  2e 01 00 00 13 00 00 00  |F..../.$........|
00000d00  00 00 00 00 6b 65 72 6e  65 6c 5f 75 64 69 76 00  |....kernel_udiv.|
00000d10  d4 4a 00 00 46 ff ff ff  7e 35 b0 24 bc 00 00 00  |.J..F...~5.$....|
00000d20  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 75  |........kernel_u|
00000d30  64 69 76 31 30 00 00 00  90 4b 00 00 46 ff ff ff  |div10....K..F...|
00000d40  85 36 ae 24 2d 01 00 00  13 00 00 00 00 00 00 00  |.6.$-...........|
00000d50  6b 65 72 6e 65 6c 5f 75  6e 77 69 6e 64 00 00 00  |kernel_unwind...|
00000d60  c0 4c 00 00 46 ff ff ff  72 6a b0 24 c3 00 00 00  |.L..F...rj.$....|
00000d70  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 75  |........kernel_u|
00000d80  6e 77 69 6e 64 62 6c 6f  63 6b 00 00 84 4d 00 00  |nwindblock...M..|
00000d90  46 ff ff ff 34 3f b0 24  55 01 00 00 13 00 00 00  |F...4?.$U.......|
00000da0  00 00 00 00 6b 65 72 6e  65 6c 5f 75 72 65 6d 00  |....kernel_urem.|
00000db0  dc 4e 00 00 46 ff ff ff  b3 f8 af 24 88 02 00 00  |.N..F......$....|
00000dc0  13 00 00 00 00 00 00 00  6b 65 72 6e 65 6c 5f 72  |........kernel_r|
00000dd0  65 67 69 73 74 65 72 5f  73 6c 6f 74 65 78 74 65  |egister_slotexte|
00000de0  6e 64 00 00 64 51 00 00  46 ff ff ff 49 e5 af 24  |nd..dQ..F...I..$|
00000df0  f4 01 00 00 13 00 00 00  00 00 00 00 6b 65 72 6e  |............kern|
00000e00  65 6c 5f 72 65 67 69 73  74 65 72 5f 61 6c 6c 6f  |el_register_allo|
00000e10  63 73 00 00 44 41 54 41  a5 00 00 00 5f 5f 64 65  |cs..DATA....__de|
00000e20  66 61 75 6c 74 5f 73 69  67 6e 61 6c 5f 68 61 6e  |fault_signal_han|
00000e30  64 6c 65 72 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |dler.Syntax:.voi|
00000e40  64 a0 5f 5f 64 65 66 61  75 6c 74 5f 73 69 67 6e  |d.__default_sign|
00000e50  61 6c 5f 68 61 6e 64 6c  65 72 20 28 69 6e 74 20  |al_handler (int |
00000e60  6e 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 69 67  |n);.Header:.<sig|
00000e70  6e 61 6c 2e 68 3d 3e 73  69 67 6e 61 6c 3e 0a 0a  |nal.h=>signal>..|
00000e80  54 68 69 73 20 69 73 20  6d 6f 72 65 20 6e 6f 72  |This is more nor|
00000e90  6d 61 6c 6c 79 20 72 65  66 65 72 72 65 64 20 74  |mally referred t|
00000ea0  6f 20 62 79 20 74 68 65  20 6d 61 63 72 6f 20 3c  |o by the macro <|
00000eb0  53 49 47 5f 44 46 4c 3e  2e 00 00 00 44 41 54 41  |SIG_DFL>....DATA|
00000ec0  9f 00 00 00 5f 5f 65 72  72 6f 72 5f 73 69 67 6e  |....__error_sign|
00000ed0  61 6c 5f 6d 61 72 6b 65  72 0a 53 79 6e 74 61 78  |al_marker.Syntax|
00000ee0  3a 09 76 6f 69 64 a0 5f  5f 65 72 72 6f 72 5f 73  |:.void.__error_s|
00000ef0  69 67 6e 61 6c 5f 6d 61  72 6b 65 72 20 28 69 6e  |ignal_marker (in|
00000f00  74 20 6e 29 3b 0a 48 65  61 64 65 72 3a 09 3c 73  |t n);.Header:.<s|
00000f10  69 67 6e 61 6c 2e 68 3d  3e 73 69 67 6e 61 6c 3e  |ignal.h=>signal>|
00000f20  0a 0a 54 68 69 73 20 69  73 20 6d 6f 72 65 20 6e  |..This is more n|
00000f30  6f 72 6d 61 6c 6c 79 20  72 65 66 65 72 72 65 64  |ormally referred|
00000f40  20 74 6f 20 62 79 20 74  68 65 20 6d 61 63 72 6f  | to by the macro|
00000f50  20 3c 53 49 47 5f 45 52  52 3e 2e 00 44 41 54 41  | <SIG_ERR>..DATA|
00000f60  a3 00 00 00 5f 5f 69 67  6e 6f 72 65 5f 73 69 67  |....__ignore_sig|
00000f70  6e 61 6c 5f 68 61 6e 64  6c 65 72 0a 53 79 6e 74  |nal_handler.Synt|
00000f80  61 78 3a 09 76 6f 69 64  a0 5f 5f 69 67 6e 6f 72  |ax:.void.__ignor|
00000f90  65 5f 73 69 67 6e 61 6c  5f 68 61 6e 64 6c 65 72  |e_signal_handler|
00000fa0  20 28 69 6e 74 20 6e 29  3b 0a 48 65 61 64 65 72  | (int n);.Header|
00000fb0  3a 09 3c 73 69 67 6e 61  6c 2e 68 3d 3e 73 69 67  |:.<signal.h=>sig|
00000fc0  6e 61 6c 3e 0a 0a 54 68  69 73 20 69 73 20 6d 6f  |nal>..This is mo|
00000fd0  72 65 20 6e 6f 72 6d 61  6c 6c 79 20 72 65 66 65  |re normally refe|
00000fe0  72 72 65 64 20 74 6f 20  62 79 20 74 68 65 20 6d  |rred to by the m|
00000ff0  61 63 72 6f 20 3c 53 49  47 5f 49 47 4e 3e 2e 00  |acro <SIG_IGN>..|
00001000  44 41 54 41 0b 01 00 00  5f 65 78 74 65 6e 64 65  |DATA...._extende|
00001010  64 5f 66 70 5f 6e 75 6d  62 65 72 0a 54 68 69 73  |d_fp_number.This|
00001020  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
00001030  20 69 6e 20 3c 6b 65 72  6e 65 6c 2e 68 3d 3e 6b  | in <kernel.h=>k|
00001040  65 72 6e 65 6c 3e 2e 20  49 74 20 63 6f 6e 74 61  |ernel>. It conta|
00001050  69 6e 73 20 61 20 31 32  20 62 79 74 65 20 66 6c  |ins a 12 byte fl|
00001060  6f 61 74 69 6e 67 20 70  6f 69 6e 74 20 6e 75 6d  |oating point num|
00001070  62 65 72 20 61 73 20 74  68 65 20 66 6f 6c 6c 6f  |ber as the follo|
00001080  77 69 6e 67 20 75 6e 69  6f 6e 3a 0a 0a 20 20 5c  |wing union:..  \|
00001090  7b 0a 20 20 20 20 73 74  72 75 63 74 0a 20 20 20  |{.    struct.   |
000010a0  20 5c 7b 0a 20 20 20 20  20 20 69 6e 74 20 73 20  | \{.      int s |
000010b0  3a 20 31 3b 0a 20 20 20  20 20 20 69 6e 74 20 75  |: 1;.      int u|
000010c0  20 3a 20 31 36 3b 0a 20  20 20 20 20 20 69 6e 74  | : 16;.      int|
000010d0  20 78 20 3a 20 31 35 3b  0a 20 20 20 20 20 20 75  | x : 15;.      u|
000010e0  6e 73 69 67 6e 65 64 20  6d 68 69 2c 6d 6c 6f 3b  |nsigned mhi,mlo;|
000010f0  0a 20 20 20 20 7d 20 69  3b 0a 20 20 20 20 69 6e  |.    } i;.    in|
00001100  74 20 77 5b 33 5d 3b 0a  20 20 7d 00 44 41 54 41  |t w[3];.  }.DATA|
00001110  d6 00 00 00 5f 49 4f 46  42 46 0a 23 50 61 72 65  |...._IOFBF.#Pare|
00001120  6e 74 20 73 74 64 69 6f  0a 54 68 65 20 6d 61 63  |nt stdio.The mac|
00001130  72 6f 20 5f 49 4f 46 42  46 20 69 73 20 64 65 66  |ro _IOFBF is def|
00001140  69 6e 65 64 20 69 6e 20  3c 73 74 64 69 6f 2e 68  |ined in <stdio.h|
00001150  3d 3e 73 74 64 69 6f 3e  20 61 73 20 61 20 76 61  |=>stdio> as a va|
00001160  6c 75 65 20 75 73 65 64  20 61 73 20 61 6e 20 61  |lue used as an a|
00001170  72 67 75 6d 65 6e 74 20  66 6f 72 20 74 68 65 20  |rgument for the |
00001180  66 75 6e 63 74 69 6f 6e  20 3c 73 65 74 76 62 75  |function <setvbu|
00001190  66 3e 2e 20 49 74 20 63  61 75 73 65 73 20 69 6e  |f>. It causes in|
000011a0  70 75 74 2f 6f 75 74 70  75 74 20 74 6f 20 62 65  |put/output to be|
000011b0  20 66 75 6c 6c 79 20 62  75 66 66 65 72 65 64 2e  | fully buffered.|
000011c0  20 49 6e 20 45 61 73 79  a0 43 20 69 74 20 69 73  | In Easy.C it is|
000011d0  20 64 65 66 69 6e 65 64  20 61 73 20 30 78 31 30  | defined as 0x10|
000011e0  30 2e 00 00 44 41 54 41  d5 00 00 00 5f 49 4f 4c  |0...DATA...._IOL|
000011f0  42 46 0a 23 50 61 72 65  6e 74 20 73 74 64 69 6f  |BF.#Parent stdio|
00001200  0a 54 68 65 20 6d 61 63  72 6f 20 5f 49 4f 4c 42  |.The macro _IOLB|
00001210  46 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |F is defined in |
00001220  3c 73 74 64 69 6f 2e 68  3d 3e 73 74 64 69 6f 3e  |<stdio.h=>stdio>|
00001230  20 61 73 20 61 20 76 61  6c 75 65 20 75 73 65 64  | as a value used|
00001240  20 61 73 20 61 6e 20 61  72 67 75 6d 65 6e 74 20  | as an argument |
00001250  66 6f 72 20 74 68 65 20  66 75 6e 63 74 69 6f 6e  |for the function|
00001260  20 3c 73 65 74 76 62 75  66 3e 2e 20 49 74 20 63  | <setvbuf>. It c|
00001270  61 75 73 65 73 20 69 6e  70 75 74 2f 6f 75 74 70  |auses input/outp|
00001280  75 74 20 74 6f 20 62 65  20 6c 69 6e 65 20 62 75  |ut to be line bu|
00001290  66 66 65 72 65 64 2e 20  49 6e 20 45 61 73 79 a0  |ffered. In Easy.|
000012a0  43 20 69 74 20 69 73 20  64 65 66 69 6e 65 64 20  |C it is defined |
000012b0  61 73 20 30 78 32 30 30  2e 00 00 00 44 41 54 41  |as 0x200....DATA|
000012c0  d2 00 00 00 5f 49 4f 4e  42 46 0a 23 50 61 72 65  |...._IONBF.#Pare|
000012d0  6e 74 20 73 74 64 69 6f  0a 54 68 65 20 6d 61 63  |nt stdio.The mac|
000012e0  72 6f 20 5f 49 4f 4e 42  46 20 69 73 20 64 65 66  |ro _IONBF is def|
000012f0  69 6e 65 64 20 69 6e 20  3c 73 74 64 69 6f 2e 68  |ined in <stdio.h|
00001300  3d 3e 73 74 64 69 6f 3e  20 61 73 20 61 20 76 61  |=>stdio> as a va|
00001310  6c 75 65 20 75 73 65 64  20 61 73 20 61 6e 20 61  |lue used as an a|
00001320  72 67 75 6d 65 6e 74 20  66 6f 72 20 74 68 65 20  |rgument for the |
00001330  66 75 6e 63 74 69 6f 6e  20 3c 73 65 74 76 62 75  |function <setvbu|
00001340  66 3e 2e 20 49 74 20 63  61 75 73 65 73 20 69 6e  |f>. It causes in|
00001350  70 75 74 2f 6f 75 74 70  75 74 20 74 6f 20 62 65  |put/output to be|
00001360  20 75 6e 62 75 66 66 65  72 65 64 2e 20 49 6e 20  | unbuffered. In |
00001370  45 61 73 79 a0 43 20 69  74 20 69 73 20 64 65 66  |Easy.C it is def|
00001380  69 6e 65 64 20 61 73 20  30 78 34 30 30 2e 00 00  |ined as 0x400...|
00001390  44 41 54 41 27 02 00 00  5f 6b 65 72 6e 65 6c 5f  |DATA'..._kernel_|
000013a0  61 6c 6c 6f 63 0a 53 79  6e 74 61 78 3a 09 75 6e  |alloc.Syntax:.un|
000013b0  73 69 67 6e 65 64 20 5f  6b 65 72 6e 65 6c 5f 61  |signed _kernel_a|
000013c0  6c 6c 6f 63 20 28 75 6e  73 69 67 6e 65 64 20 6d  |lloc (unsigned m|
000013d0  69 6e 77 6f 72 64 73 2c  20 76 6f 69 64 20 2a 2a  |inwords, void **|
000013e0  62 6c 6f 63 6b 29 3b 0a  48 65 61 64 65 72 3a 09  |block);.Header:.|
000013f0  3c 6b 65 72 6e 65 6c 2e  68 3d 3e 6b 65 72 6e 65  |<kernel.h=>kerne|
00001400  6c 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 54 68 65  |l>..Returns:.The|
00001410  20 73 69 7a 65 20 6f 66  20 62 6c 6f 63 6b 20 61  | size of block a|
00001420  6c 6c 6f 63 61 74 65 64  2e 0a 0a 54 68 69 73 20  |llocated...This |
00001430  66 75 6e 63 74 69 6f 6e  20 74 72 69 65 73 20 74  |function tries t|
00001440  6f 20 61 6c 6c 6f 63 61  74 65 20 61 20 62 6c 6f  |o allocate a blo|
00001450  63 6b 20 6f 66 20 6d 65  6d 6f 72 79 20 6f 66 20  |ck of memory of |
00001460  27 73 65 6e 73 69 62 6c  65 20 73 69 7a 65 27 20  |'sensible size' |
00001470  61 73 20 6e 65 61 72 20  74 6f 20 2f 6d 69 6e 77  |as near to /minw|
00001480  6f 72 64 73 2f 20 61 73  20 70 6f 73 73 69 62 6c  |ords/ as possibl|
00001490  65 2e 20 54 68 65 20 62  6c 6f 63 6b 20 77 69 6c  |e. The block wil|
000014a0  6c 20 6e 6f 74 20 62 65  20 73 6d 61 6c 6c 65 72  |l not be smaller|
000014b0  20 74 68 61 6e 20 32 4b  20 77 6f 72 64 73 20 28  | than 2K words (|
000014c0  41 63 6f 72 6e 27 73 20  64 65 66 69 6e 69 74 69  |Acorn's definiti|
000014d0  6f 6e 20 6f 66 20 73 65  6e 73 69 62 6c 65 20 73  |on of sensible s|
000014e0  69 7a 65 29 2e 20 49 66  20 74 68 69 73 20 6d 75  |ize). If this mu|
000014f0  63 68 20 6d 65 6d 6f 72  79 20 63 61 6e 6e 6f 74  |ch memory cannot|
00001500  20 62 65 20 61 6c 6c 6f  63 61 74 65 64 2c 20 69  | be allocated, i|
00001510  74 20 77 69 6c 6c 20 61  6c 6c 6f 63 61 74 65 20  |t will allocate |
00001520  61 73 20 6d 75 63 68 20  61 73 20 70 6f 73 73 69  |as much as possi|
00001530  62 6c 65 2e 20 54 68 65  20 70 6f 69 6e 74 65 72  |ble. The pointer|
00001540  20 74 6f 20 74 68 65 20  62 6c 6f 63 6b 20 69 73  | to the block is|
00001550  20 72 65 74 75 72 6e 65  64 20 69 6e 20 74 68 65  | returned in the|
00001560  20 70 6f 69 6e 74 65 72  20 70 6f 69 6e 74 65 64  | pointer pointed|
00001570  20 74 6f 20 62 79 20 2f  62 6c 6f 63 6b 2f 2e 20  | to by /block/. |
00001580  54 68 69 73 20 77 69 6c  6c 20 62 65 20 3c 4e 55  |This will be <NU|
00001590  4c 4c 3e 20 69 66 20 61  20 74 68 65 20 73 69 7a  |LL> if a the siz|
000015a0  65 20 6f 66 20 74 68 65  20 62 6c 6f 63 6b 20 69  |e of the block i|
000015b0  73 20 7a 65 72 6f 2e 00  44 41 54 41 08 01 00 00  |s zero..DATA....|
000015c0  5f 6b 65 72 6e 65 6c 5f  63 6f 6d 6d 61 6e 64 5f  |_kernel_command_|
000015d0  73 74 72 69 6e 67 0a 53  79 6e 74 61 78 3a 09 63  |string.Syntax:.c|
000015e0  68 61 72 20 2a 5f 6b 65  72 6e 65 6c 5f 63 6f 6d  |har *_kernel_com|
000015f0  6d 61 6e 64 5f 73 74 72  69 6e 67 20 28 76 6f 69  |mand_string (voi|
00001600  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 6b 65 72  |d);.Header:.<ker|
00001610  6e 65 6c 2e 68 3d 3e 6b  65 72 6e 65 6c 3e 0a 0a  |nel.h=>kernel>..|
00001620  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00001630  20 74 6f 20 74 68 65 20  73 74 72 69 6e 67 2e 0a  | to the string..|
00001640  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
00001650  65 74 75 72 6e 73 20 61  20 70 6f 69 6e 74 65 72  |eturns a pointer|
00001660  20 74 6f 20 74 68 65 20  73 74 72 69 6e 67 20 77  | to the string w|
00001670  68 69 63 68 20 77 61 73  20 75 73 65 64 20 74 6f  |hich was used to|
00001680  20 73 74 61 72 74 20 74  68 65 20 70 72 6f 67 72  | start the progr|
00001690  61 6d 2e 20 49 74 20 6d  61 79 20 62 65 20 61 20  |am. It may be a |
000016a0  63 6f 70 79 20 6f 66 20  74 68 65 20 73 74 72 69  |copy of the stri|
000016b0  6e 67 20 74 68 61 74 20  69 73 20 75 73 65 64 2e  |ng that is used.|
000016c0  44 41 54 41 af 00 00 00  5f 6b 65 72 6e 65 6c 5f  |DATA...._kernel_|
000016d0  63 75 72 72 65 6e 74 5f  73 74 61 63 6b 5f 63 68  |current_stack_ch|
000016e0  75 6e 6b 0a 53 79 6e 74  61 78 3a 09 3c 5f 6b 65  |unk.Syntax:.<_ke|
000016f0  72 6e 65 6c 5f 73 74 61  63 6b 5f 63 68 75 6e 6b  |rnel_stack_chunk|
00001700  3e 20 2a 5f 6b 65 72 6e  65 6c 5f 63 75 72 72 65  |> *_kernel_curre|
00001710  6e 74 5f 73 74 61 63 6b  5f 63 68 75 6e 6b 20 28  |nt_stack_chunk (|
00001720  76 6f 69 64 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |void);.Header:.<|
00001730  6b 65 72 6e 65 6c 2e 68  3d 3e 6b 65 72 6e 65 6c  |kernel.h=>kernel|
00001740  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
00001750  74 65 72 20 74 6f 20 74  68 65 20 63 75 72 72 65  |ter to the curre|
00001760  6e 74 20 73 74 61 63 6b  20 63 68 75 6e 6b 2e 00  |nt stack chunk..|
00001770  44 41 54 41 b0 00 00 00  5f 6b 65 72 6e 65 6c 5f  |DATA...._kernel_|
00001780  45 52 52 4f 52 0a 54 68  65 20 6d 61 63 72 6f 20  |ERROR.The macro |
00001790  7b 2a 7d 5f 6b 65 72 6e  65 6c 5f 45 52 52 4f 52  |{*}_kernel_ERROR|
000017a0  7b 2a 7d 20 69 73 20 64  65 66 69 6e 65 64 20 69  |{*} is defined i|
000017b0  6e 20 3c 6b 65 72 6e 65  6c 2e 68 3d 3e 6b 65 72  |n <kernel.h=>ker|
000017c0  6e 65 6c 3e 20 61 73 20  61 20 76 61 6c 75 65 20  |nel> as a value |
000017d0  74 6f 20 62 65 20 72 65  74 75 72 6e 65 64 20 62  |to be returned b|
000017e0  79 20 63 65 72 74 61 69  6e 20 66 75 6e 63 74 69  |y certain functi|
000017f0  6f 6e 73 20 74 6f 20 69  6e 64 69 63 61 74 65 20  |ons to indicate |
00001800  61 6e 20 65 72 72 6f 72  2e 20 49 74 20 69 73 20  |an error. It is |
00001810  64 65 66 69 6e 65 64 20  61 73 20 28 2d 32 29 2e  |defined as (-2).|
00001820  44 41 54 41 15 01 00 00  5f 6b 65 72 6e 65 6c 5f  |DATA...._kernel_|
00001830  65 73 63 61 70 65 5f 73  65 65 6e 0a 53 79 6e 74  |escape_seen.Synt|
00001840  61 78 3a 09 69 6e 74 20  5f 6b 65 72 6e 65 6c 5f  |ax:.int _kernel_|
00001850  65 73 63 61 70 65 5f 73  65 65 6e 20 28 76 6f 69  |escape_seen (voi|
00001860  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 6b 65 72  |d);.Header:.<ker|
00001870  6e 65 6c 2e 68 3d 3e 6b  65 72 6e 65 6c 3e 0a 0a  |nel.h=>kernel>..|
00001880  52 65 74 75 72 6e 73 3a  09 31 20 69 66 20 74 68  |Returns:.1 if th|
00001890  65 72 65 20 68 61 73 20  62 65 65 6e 20 61 6e 20  |ere has been an |
000018a0  65 73 63 61 70 65 2e 0a  0a 54 68 69 73 20 66 75  |escape...This fu|
000018b0  6e 63 74 69 6f 6e 20 63  68 65 63 6b 73 20 74 6f  |nction checks to|
000018c0  20 73 65 65 20 69 66 20  74 68 65 72 65 20 68 61  | see if there ha|
000018d0  73 20 62 65 65 6e 20 61  6e 20 65 73 63 61 70 65  |s been an escape|
000018e0  20 28 73 69 6e 63 65 20  74 68 65 20 70 72 65 76  | (since the prev|
000018f0  69 6f 75 73 20 63 61 6c  6c 20 74 6f 20 74 68 69  |ious call to thi|
00001900  73 20 66 75 6e 63 74 69  6f 6e 29 2e 20 54 68 69  |s function). Thi|
00001910  73 20 66 75 6e 63 74 69  6f 6e 20 77 69 6c 6c 20  |s function will |
00001920  6e 65 76 65 72 20 6d 69  73 73 20 61 6e 20 65 73  |never miss an es|
00001930  63 61 70 65 2e 00 00 00  44 41 54 41 ca 00 00 00  |cape....DATA....|
00001940  5f 6b 65 72 6e 65 6c 5f  65 78 69 74 0a 53 79 6e  |_kernel_exit.Syn|
00001950  74 61 78 3a 09 76 6f 69  64 20 5f 6b 65 72 6e 65  |tax:.void _kerne|
00001960  6c 5f 65 78 69 74 20 28  76 6f 69 64 29 3b 0a 48  |l_exit (void);.H|
00001970  65 61 64 65 72 3a 09 3c  6b 65 72 6e 65 6c 2e 68  |eader:.<kernel.h|
00001980  3d 3e 6b 65 72 6e 65 6c  3e 0a 0a 54 68 69 73 20  |=>kernel>..This |
00001990  66 75 6e 63 74 69 6f 6e  20 63 61 6c 6c 73 20 74  |function calls t|
000019a0  68 65 20 53 57 49 20 3c  4f 53 5f 45 78 69 74 3d  |he SWI <OS_Exit=|
000019b0  3e 53 57 49 3a 4f 53 5f  45 78 69 74 3e 20 77 69  |>SWI:OS_Exit> wi|
000019c0  74 68 20 74 68 65 20 72  65 74 75 72 6e 20 63 6f  |th the return co|
000019d0  64 65 20 73 70 65 63 69  66 69 65 64 20 62 79 20  |de specified by |
000019e0  61 20 63 61 6c 6c 20 74  6f 20 3c 5f 6b 65 72 6e  |a call to <_kern|
000019f0  65 6c 5f 73 65 74 72 65  74 75 72 6e 63 6f 64 65  |el_setreturncode|
00001a00  3e 2e 00 00 44 41 54 41  f4 00 00 00 5f 6b 65 72  |>...DATA...._ker|
00001a10  6e 65 6c 5f 65 78 69 74  74 72 61 70 68 61 6e 64  |nel_exittraphand|
00001a20  6c 65 72 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |ler.Syntax:.void|
00001a30  20 5f 6b 65 72 6e 65 6c  5f 65 78 69 74 74 72 61  | _kernel_exittra|
00001a40  70 68 61 6e 64 6c 65 72  20 28 76 6f 69 64 29 3b  |phandler (void);|
00001a50  0a 48 65 61 64 65 72 3a  09 3c 6b 65 72 6e 65 6c  |.Header:.<kernel|
00001a60  2e 68 3d 3e 6b 65 72 6e  65 6c 3e 0a 0a 54 68 69  |.h=>kernel>..Thi|
00001a70  73 20 66 75 6e 63 74 69  6f 6e 20 72 65 73 65 74  |s function reset|
00001a80  73 20 74 68 65 20 2a 49  6e 54 72 61 70 48 61 6e  |s the *InTrapHan|
00001a90  64 6c 65 72 2a 20 66 6c  61 67 20 77 68 69 63 68  |dler* flag which|
00001aa0  20 70 72 65 76 65 6e 74  73 20 72 65 63 75 72 73  | prevents recurs|
00001ab0  69 76 65 20 74 72 61 70  73 2e 20 49 74 20 69 73  |ive traps. It is|
00001ac0  20 75 73 65 64 20 69 6e  73 69 64 65 20 74 72 61  | used inside tra|
00001ad0  70 20 68 61 6e 64 6c 65  72 73 20 77 68 69 63 68  |p handlers which|
00001ae0  20 64 6f 20 6e 6f 74 20  72 65 74 75 72 6e 20 64  | do not return d|
00001af0  69 72 65 63 74 6c 79 2e  44 41 54 41 d6 01 00 00  |irectly.DATA....|
00001b00  5f 6b 65 72 6e 65 6c 5f  45 78 74 65 6e 64 50 72  |_kernel_ExtendPr|
00001b10  6f 63 0a 54 68 65 20 74  79 70 65 20 7b 2a 7d 5f  |oc.The type {*}_|
00001b20  6b 65 72 6e 65 6c 5f 45  78 74 65 6e 64 50 72 6f  |kernel_ExtendPro|
00001b30  63 7b 2a 7d 20 69 73 20  64 65 66 69 6e 65 64 20  |c{*} is defined |
00001b40  69 6e 20 3c 6b 65 72 6e  65 6c 2e 68 3d 3e 6b 65  |in <kernel.h=>ke|
00001b50  72 6e 65 6c 3e 20 61 73  20 61 20 70 72 6f 63 65  |rnel> as a proce|
00001b60  64 75 72 65 20 77 68 69  63 68 20 63 61 6e 20 62  |dure which can b|
00001b70  65 20 75 73 65 64 20 74  6f 20 65 78 74 65 6e 64  |e used to extend|
00001b80  20 74 68 65 20 68 65 61  70 20 75 73 65 64 20 62  | the heap used b|
00001b90  79 20 74 68 65 20 6b 65  72 6e 65 6c 2e 20 49 74  |y the kernel. It|
00001ba0  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 3a 0a  | is defined as:.|
00001bb0  7b 77 72 61 70 20 6f 66  66 7d 0a 7b 66 43 6f 64  |{wrap off}.{fCod|
00001bc0  65 3b 61 6c 69 67 6e 20  63 65 6e 74 72 65 7d 69  |e;align centre}i|
00001bd0  6e 74 20 5f 6b 65 72 6e  65 6c 5f 45 78 74 65 6e  |nt _kernel_Exten|
00001be0  64 50 72 6f 63 20 28 69  6e 74 2c 20 76 6f 69 64  |dProc (int, void|
00001bf0  20 2a 2a 29 3b 7b 66 3b  61 6c 69 67 6e 3b 77 72  | **);{f;align;wr|
00001c00  61 70 7d 0a 0a 54 68 65  20 70 72 6f 63 65 64 75  |ap}..The procedu|
00001c10  72 65 20 73 68 6f 75 6c  64 20 61 6c 6c 6f 63 61  |re should alloca|
00001c20  74 65 20 74 68 65 20 61  6d 6f 75 6e 74 20 6f 66  |te the amount of|
00001c30  20 73 70 61 63 65 20 72  65 71 75 65 73 74 65 64  | space requested|
00001c40  20 69 6e 20 74 68 65 20  69 6e 74 65 67 65 72 20  | in the integer |
00001c50  61 72 67 75 6d 65 6e 74  2c 20 61 6e 64 20 72 65  |argument, and re|
00001c60  74 75 72 6e 20 61 20 70  6f 69 6e 74 65 72 20 74  |turn a pointer t|
00001c70  6f 20 69 74 20 69 6e 20  74 68 65 20 7b 2f 7d 76  |o it in the {/}v|
00001c80  6f 69 64 20 2a 7b 2f 7d  20 77 68 6f 73 65 20 70  |oid *{/} whose p|
00001c90  6f 69 6e 74 65 72 20 69  73 20 67 69 76 65 6e 2e  |ointer is given.|
00001ca0  20 49 74 20 73 68 6f 75  6c 64 20 72 65 74 75 72  | It should retur|
00001cb0  6e 20 74 68 65 20 73 69  7a 65 20 6f 66 20 73 70  |n the size of sp|
00001cc0  61 63 65 20 61 6c 6c 6f  63 61 74 65 64 2e 00 00  |ace allocated...|
00001cd0  44 41 54 41 0b 01 00 00  5f 6b 65 72 6e 65 6c 5f  |DATA...._kernel_|
00001ce0  66 70 61 76 61 69 6c 61  62 6c 65 0a 53 79 6e 74  |fpavailable.Synt|
00001cf0  61 78 3a 09 69 6e 74 20  5f 6b 65 72 6e 65 6c 5f  |ax:.int _kernel_|
00001d00  66 70 61 76 61 69 6c 61  62 6c 65 20 28 76 6f 69  |fpavailable (voi|
00001d10  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 6b 65 72  |d);.Header:.<ker|
00001d20  6e 65 6c 2e 68 3d 3e 6b  65 72 6e 65 6c 3e 0a 0a  |nel.h=>kernel>..|
00001d30  52 65 74 75 72 6e 73 3a  09 30 20 69 66 20 66 6c  |Returns:.0 if fl|
00001d40  6f 61 74 69 6e 67 20 70  6f 69 6e 74 20 69 73 20  |oating point is |
00001d50  6e 6f 74 20 61 76 61 69  6c 61 62 6c 65 2e 0a 0a  |not available...|
00001d60  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 74 65  |This function te|
00001d70  73 74 73 20 66 6f 72 20  74 68 65 20 70 72 65 73  |sts for the pres|
00001d80  65 6e 63 65 20 6f 66 20  65 69 74 68 65 72 20 74  |ence of either t|
00001d90  68 65 20 66 6c 6f 61 74  69 6e 67 20 70 6f 69 6e  |he floating poin|
00001da0  74 20 63 6f 2d 70 72 6f  63 65 73 73 6f 72 20 6f  |t co-processor o|
00001db0  72 20 74 68 65 20 66 6c  6f 61 74 69 6e 67 20 70  |r the floating p|
00001dc0  6f 69 6e 74 20 65 6d 75  6c 61 74 6f 72 20 6d 6f  |oint emulator mo|
00001dd0  64 75 6c 65 20 28 46 50  45 29 2e 00 44 41 54 41  |dule (FPE)..DATA|
00001de0  db 01 00 00 5f 6b 65 72  6e 65 6c 5f 67 65 74 65  |...._kernel_gete|
00001df0  6e 76 0a 53 79 6e 74 61  78 3a 09 3c 5f 6b 65 72  |nv.Syntax:.<_ker|
00001e00  6e 65 6c 5f 6f 73 65 72  72 6f 72 3e 20 2a 5f 6b  |nel_oserror> *_k|
00001e10  65 72 6e 65 6c 5f 67 65  74 65 6e 76 20 28 63 68  |ernel_getenv (ch|
00001e20  61 72 20 2a 6e 61 6d 65  2c 20 63 68 61 72 20 2a  |ar *name, char *|
00001e30  62 75 66 2c 20 75 6e 73  69 67 6e 65 64 20 6c 65  |buf, unsigned le|
00001e40  6e 29 3b 0a 48 65 61 64  65 72 3a 09 3c 6b 65 72  |n);.Header:.<ker|
00001e50  6e 65 6c 2e 68 3d 3e 6b  65 72 6e 65 6c 3e 0a 0a  |nel.h=>kernel>..|
00001e60  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00001e70  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00001e80  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00001e90  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 67 65 74  |his function get|
00001ea0  73 20 74 68 65 20 76 61  6c 75 65 20 6f 66 20 74  |s the value of t|
00001eb0  68 65 20 73 79 73 74 65  6d 20 76 61 72 69 61 62  |he system variab|
00001ec0  6c 65 20 77 68 6f 73 65  20 6e 61 6d 65 20 69 73  |le whose name is|
00001ed0  20 73 70 65 63 69 66 69  65 64 20 61 6e 64 20 70  | specified and p|
00001ee0  6c 61 63 65 73 20 69 74  20 69 6e 20 74 68 65 20  |laces it in the |
00001ef0  63 68 61 72 61 63 74 65  72 20 61 72 72 61 79 20  |character array |
00001f00  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 2f 62  |pointed to by /b|
00001f10  75 66 2f 2e 20 54 68 65  20 6c 65 6e 67 74 68 20  |uf/. The length |
00001f20  6f 66 20 74 68 65 20 61  72 72 61 79 20 69 73 20  |of the array is |
00001f30  67 69 76 65 6e 20 62 79  20 2f 6c 65 6e 2f 2e 0a  |given by /len/..|
00001f40  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 69  |.This function i|
00001f50  73 20 65 71 75 69 76 61  6c 65 6e 74 20 74 6f 20  |s equivalent to |
00001f60  74 68 65 20 53 57 49 20  3c 4f 53 5f 52 65 61 64  |the SWI <OS_Read|
00001f70  56 61 72 56 61 6c 3d 3e  53 57 49 3a 4f 53 5f 52  |VarVal=>SWI:OS_R|
00001f80  65 61 64 56 61 72 56 61  6c 3e 20 28 61 6e 64 20  |eadVarVal> (and |
00001f90  76 65 72 79 20 73 69 6d  69 6c 61 72 20 74 6f 20  |very similar to |
00001fa0  74 68 65 20 66 75 6e 63  74 69 6f 6e 20 3c 67 65  |the function <ge|
00001fb0  74 65 6e 76 3e 29 2e 00  44 41 54 41 d8 00 00 00  |tenv>)..DATA....|
00001fc0  5f 6b 65 72 6e 65 6c 5f  68 6f 73 74 6f 73 0a 53  |_kernel_hostos.S|
00001fd0  79 6e 74 61 78 3a 09 69  6e 74 20 5f 6b 65 72 6e  |yntax:.int _kern|
00001fe0  65 6c 5f 68 6f 73 74 6f  73 20 28 76 6f 69 64 29  |el_hostos (void)|
00001ff0  3b 0a 48 65 61 64 65 72  3a 09 3c 6b 65 72 6e 65  |;.Header:.<kerne|
00002000  6c 2e 68 3d 3e 6b 65 72  6e 65 6c 3e 0a 0a 52 65  |l.h=>kernel>..Re|
00002010  74 75 72 6e 73 3a 09 4e  75 6d 62 65 72 20 69 6e  |turns:.Number in|
00002020  64 69 63 61 74 69 6e 67  20 4f 70 65 72 61 74 69  |dicating Operati|
00002030  6e 67 20 53 79 73 74 65  6d 2e 0a 0a 54 68 69 73  |ng System...This|
00002040  20 66 75 6e 63 74 69 6f  6e 20 69 73 20 65 71 75  | function is equ|
00002050  69 76 61 6c 65 6e 74 20  74 6f 20 3c 4f 53 5f 42  |ivalent to <OS_B|
00002060  79 74 65 3d 3e 53 57 49  3a 4f 53 5f 42 79 74 65  |yte=>SWI:OS_Byte|
00002070  3e 20 30 2c 31 2e 20 49  74 20 72 65 74 75 72 6e  |> 0,1. It return|
00002080  73 20 36 20 66 6f 72 20  52 49 53 43 20 4f 53 2e  |s 6 for RISC OS.|
00002090  44 41 54 41 94 00 00 00  5f 6b 65 72 6e 65 6c 5f  |DATA...._kernel_|
000020a0  69 72 71 73 5f 64 69 73  61 62 6c 65 64 0a 53 79  |irqs_disabled.Sy|
000020b0  6e 74 61 78 3a 09 69 6e  74 20 5f 6b 65 72 6e 65  |ntax:.int _kerne|
000020c0  6c 5f 69 72 71 73 5f 64  69 73 61 62 6c 65 64 20  |l_irqs_disabled |
000020d0  28 76 6f 69 64 29 3b 0a  48 65 61 64 65 72 3a 09  |(void);.Header:.|
000020e0  3c 6b 65 72 6e 65 6c 2e  68 3d 3e 6b 65 72 6e 65  |<kernel.h=>kerne|
000020f0  6c 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 4e 6f 6e  |l>..Returns:.Non|
00002100  2d 7a 65 72 6f 20 69 66  20 49 52 51 20 69 6e 74  |-zero if IRQ int|
00002110  65 72 72 75 70 74 73 20  61 72 65 20 65 6e 61 62  |errupts are enab|
00002120  6c 65 64 2e 44 41 54 41  d2 00 00 00 5f 6b 65 72  |led.DATA...._ker|
00002130  6e 65 6c 5f 69 72 71 73  5f 6f 66 66 0a 53 79 6e  |nel_irqs_off.Syn|
00002140  74 61 78 3a 09 76 6f 69  64 20 5f 6b 65 72 6e 65  |tax:.void _kerne|
00002150  6c 5f 69 72 71 73 5f 6f  66 66 20 28 76 6f 69 64  |l_irqs_off (void|
00002160  29 3b 0a 48 65 61 64 65  72 3a 09 3c 6b 65 72 6e  |);.Header:.<kern|
00002170  65 6c 2e 68 3d 3e 6b 65  72 6e 65 6c 3e 0a 0a 44  |el.h=>kernel>..D|
00002180  69 73 61 62 6c 65 20 69  6e 74 65 72 72 75 70 74  |isable interrupt|
00002190  73 2e 20 54 68 69 73 20  63 61 6e 20 6f 6e 6c 79  |s. This can only|
000021a0  20 62 65 20 75 73 65 64  20 66 72 6f 6d 20 63 6f  | be used from co|
000021b0  64 65 20 72 75 6e 6e 69  6e 67 20 69 6e 20 53 56  |de running in SV|
000021c0  43 20 6d 6f 64 65 2e 20  59 6f 75 20 73 68 6f 75  |C mode. You shou|
000021d0  6c 64 20 6e 6f 74 20 64  69 73 61 62 6c 65 20 69  |ld not disable i|
000021e0  6e 74 65 72 72 75 70 74  73 20 69 66 20 70 6f 73  |nterrupts if pos|
000021f0  73 69 62 6c 65 2e 00 00  44 41 54 41 a0 00 00 00  |sible...DATA....|
00002200  5f 6b 65 72 6e 65 6c 5f  69 72 71 73 5f 6f 6e 0a  |_kernel_irqs_on.|
00002210  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 5f 6b 65  |Syntax:.void _ke|
00002220  72 6e 65 6c 5f 69 72 71  73 5f 6f 6e 20 28 76 6f  |rnel_irqs_on (vo|
00002230  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 6b 65  |id);.Header:.<ke|
00002240  72 6e 65 6c 2e 68 3d 3e  6b 65 72 6e 65 6c 3e 0a  |rnel.h=>kernel>.|
00002250  0a 45 6e 61 62 6c 65 20  69 6e 74 65 72 72 75 70  |.Enable interrup|
00002260  74 73 2e 20 54 68 69 73  20 63 61 6e 20 6f 6e 6c  |ts. This can onl|
00002270  79 20 62 65 20 75 73 65  64 20 66 72 6f 6d 20 63  |y be used from c|
00002280  6f 64 65 20 72 75 6e 6e  69 6e 67 20 69 6e 20 53  |ode running in S|
00002290  56 43 20 6d 6f 64 65 2e  44 41 54 41 c9 00 00 00  |VC mode.DATA....|
000022a0  5f 6b 65 72 6e 65 6c 5f  6c 61 6e 67 75 61 67 65  |_kernel_language|
000022b0  0a 53 79 6e 74 61 78 3a  09 63 68 61 72 20 2a 5f  |.Syntax:.char *_|
000022c0  6b 65 72 6e 65 6c 5f 6c  61 6e 67 75 61 67 65 20  |kernel_language |
000022d0  28 69 6e 74 20 70 63 29  3b 0a 48 65 61 64 65 72  |(int pc);.Header|
000022e0  3a 09 3c 6b 65 72 6e 65  6c 2e 68 3d 3e 6b 65 72  |:.<kernel.h=>ker|
000022f0  6e 65 6c 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |nel>..Returns:.P|
00002300  6f 69 6e 74 65 72 20 74  6f 20 6e 61 6d 65 2e 0a  |ointer to name..|
00002310  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 67  |.This function g|
00002320  65 74 73 20 74 68 65 20  6e 61 6d 65 20 6f 66 20  |ets the name of |
00002330  74 68 65 20 6c 61 6e 67  75 61 67 65 20 69 6e 20  |the language in |
00002340  77 68 6f 73 65 20 63 6f  64 65 20 74 68 65 20 61  |whose code the a|
00002350  64 64 72 65 73 73 20 2f  70 63 2f 20 6c 69 65 73  |ddress /pc/ lies|
00002360  2e 00 00 00 44 41 54 41  5d 01 00 00 5f 6b 65 72  |....DATA]..._ker|
00002370  6e 65 6c 5f 6c 61 73 74  5f 6f 73 65 72 72 6f 72  |nel_last_oserror|
00002380  0a 53 79 6e 74 61 78 3a  09 3c 5f 6b 65 72 6e 65  |.Syntax:.<_kerne|
00002390  6c 5f 6f 73 65 72 72 6f  72 3e 20 2a 5f 6b 65 72  |l_oserror> *_ker|
000023a0  6e 65 6c 5f 6c 61 73 74  5f 6f 73 65 72 72 6f 72  |nel_last_oserror|
000023b0  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
000023c0  09 3c 6b 65 72 6e 65 6c  2e 68 3d 3e 6b 65 72 6e  |.<kernel.h=>kern|
000023d0  65 6c 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |el>..Returns:.Po|
000023e0  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
000023f0  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
00002400  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
00002410  6e 20 72 65 74 75 72 6e  73 20 61 20 70 6f 69 6e  |n returns a poin|
00002420  74 65 72 20 74 6f 20 74  68 65 20 65 72 72 6f 72  |ter to the error|
00002430  20 62 6c 6f 63 6b 20 64  65 73 63 72 69 62 69 6e  | block describin|
00002440  67 20 74 68 65 20 6c 61  73 74 20 4f 53 20 65 72  |g the last OS er|
00002450  72 6f 72 20 74 68 61 74  20 6f 63 63 75 72 65 64  |ror that occured|
00002460  20 28 73 69 6e 63 65 20  74 68 65 20 6c 61 73 74  | (since the last|
00002470  20 63 61 6c 6c 20 74 6f  20 74 68 69 73 20 66 75  | call to this fu|
00002480  6e 63 74 69 6f 6e 29 2e  0a 0a 54 68 65 20 62 6c  |nction)...The bl|
00002490  6f 63 6b 20 72 65 74 75  72 6e 65 64 20 6d 61 79  |ock returned may|
000024a0  20 62 65 20 6f 76 65 72  77 72 69 74 74 65 6e 20  | be overwritten |
000024b0  62 79 20 61 6e 6f 74 68  65 72 20 65 72 72 6f 72  |by another error|
000024c0  2e 00 00 00 44 41 54 41  a7 00 00 00 5f 6b 65 72  |....DATA...._ker|
000024d0  6e 65 6c 5f 4e 4f 4e 58  0a 54 68 65 20 6d 61 63  |nel_NONX.The mac|
000024e0  72 6f 20 7b 2a 7d 5f 6b  65 72 6e 65 6c 5f 4e 4f  |ro {*}_kernel_NO|
000024f0  4e 58 7b 2a 7d 20 69 73  20 64 65 66 69 6e 65 64  |NX{*} is defined|
00002500  20 69 6e 20 3c 6b 65 72  6e 65 6c 2e 68 3d 3e 6b  | in <kernel.h=>k|
00002510  65 72 6e 65 6c 3e 20 61  73 20 61 20 76 61 6c 75  |ernel> as a valu|
00002520  65 20 75 73 65 64 20 74  6f 20 69 6e 64 69 63 61  |e used to indica|
00002530  74 65 20 74 6f 20 53 57  49 20 63 61 6c 6c 69 6e  |te to SWI callin|
00002540  67 20 66 75 6e 63 74 69  6f 6e 73 20 74 68 61 74  |g functions that|
00002550  20 65 72 72 6f 72 73 20  61 72 65 20 74 6f 20 62  | errors are to b|
00002560  65 20 72 65 70 6f 72 74  65 64 2e 00 44 41 54 41  |e reported..DATA|
00002570  5a 01 00 00 5f 6b 65 72  6e 65 6c 5f 6f 73 61 72  |Z..._kernel_osar|
00002580  67 73 0a 53 79 6e 74 61  78 3a 09 69 6e 74 20 5f  |gs.Syntax:.int _|
00002590  6b 65 72 6e 65 6c 5f 6f  73 61 72 67 73 20 28 69  |kernel_osargs (i|
000025a0  6e 74 20 72 30 2c 20 75  6e 73 69 67 6e 65 64 20  |nt r0, unsigned |
000025b0  72 31 2c 20 69 6e 74 20  72 32 29 3b 0a 48 65 61  |r1, int r2);.Hea|
000025c0  64 65 72 3a 09 3c 6b 65  72 6e 65 6c 2e 68 3d 3e  |der:.<kernel.h=>|
000025d0  6b 65 72 6e 65 6c 3e 0a  0a 52 65 74 75 72 6e 73  |kernel>..Returns|
000025e0  3a 09 28 72 30 3d 72 31  3d 30 29 3a 20 43 75 72  |:.(r0=r1=0): Cur|
000025f0  72 65 6e 74 20 46 53 20  6e 75 6d 62 65 72 2c 20  |rent FS number, |
00002600  65 6c 73 65 3a 0a 09 56  61 6c 75 65 20 72 65 74  |else:..Value ret|
00002610  75 72 6e 65 64 20 69 6e  20 52 32 20 62 79 20 4f  |urned in R2 by O|
00002620  53 5f 41 72 67 73 2c 20  6f 72 0a 09 2d 31 20 69  |S_Args, or..-1 i|
00002630  66 20 66 61 69 6c 65 64  20 28 69 65 20 63 61 72  |f failed (ie car|
00002640  72 79 20 66 6c 61 67 20  73 65 74 29 0a 09 2d 32  |ry flag set)..-2|
00002650  20 69 66 20 61 6e 20 4f  53 20 65 72 72 6f 72 20  | if an OS error |
00002660  6f 63 63 75 72 72 65 64  2e 0a 0a 54 68 69 73 20  |occurred...This |
00002670  66 75 6e 63 74 69 6f 6e  20 63 61 6c 6c 73 20 74  |function calls t|
00002680  68 65 20 3c 4f 53 5f 41  72 67 73 3d 3e 53 57 49  |he <OS_Args=>SWI|
00002690  3a 4f 53 5f 41 72 67 73  3e 20 53 57 49 20 77 69  |:OS_Args> SWI wi|
000026a0  74 68 20 72 65 67 69 73  74 65 72 73 20 52 30 2d  |th registers R0-|
000026b0  52 32 20 73 65 74 20 74  6f 20 74 68 6f 73 65 20  |R2 set to those |
000026c0  67 69 76 65 6e 2e 00 00  44 41 54 41 58 01 00 00  |given...DATAX...|
000026d0  5f 6b 65 72 6e 65 6c 5f  6f 73 62 67 65 74 0a 53  |_kernel_osbget.S|
000026e0  79 6e 74 61 78 3a 09 69  6e 74 20 5f 6b 65 72 6e  |yntax:.int _kern|
000026f0  65 6c 5f 6f 73 62 67 65  74 20 28 75 6e 73 69 67  |el_osbget (unsig|
00002700  6e 65 64 20 68 61 6e 64  6c 65 29 3b 0a 48 65 61  |ned handle);.Hea|
00002710  64 65 72 3a 09 3c 6b 65  72 6e 65 6c 2e 68 3d 3e  |der:.<kernel.h=>|
00002720  6b 65 72 6e 65 6c 3e 0a  0a 52 65 74 75 72 6e 73  |kernel>..Returns|
00002730  3a 09 54 68 65 20 62 79  74 65 20 72 65 61 64 2c  |:.The byte read,|
00002740  20 2d 31 20 66 6f 72 20  45 4f 46 2c 20 2d 32 20  | -1 for EOF, -2 |
00002750  66 6f 72 20 65 72 72 6f  72 2e 0a 0a 54 68 69 73  |for error...This|
00002760  20 66 75 6e 63 74 69 6f  6e 20 63 61 6c 6c 73 20  | function calls |
00002770  74 68 65 20 3c 4f 53 5f  42 47 65 74 3d 3e 53 57  |the <OS_BGet=>SW|
00002780  49 3a 4f 53 5f 42 47 65  74 3e 20 53 57 49 20 77  |I:OS_BGet> SWI w|
00002790  68 69 63 68 20 72 65 61  64 73 20 61 20 62 79 74  |hich reads a byt|
000027a0  65 20 66 72 6f 6d 20 74  68 65 20 6f 70 65 6e 20  |e from the open |
000027b0  66 69 6c 65 20 77 68 6f  73 65 20 68 61 6e 64 6c  |file whose handl|
000027c0  65 20 69 73 20 67 69 76  65 6e 2e 0a 0a 4e 6f 74  |e is given...Not|
000027d0  65 20 74 68 61 74 20 74  68 69 73 20 69 73 20 61  |e that this is a|
000027e0  20 52 49 53 43 20 4f 53  20 66 69 6c 65 20 68 61  | RISC OS file ha|
000027f0  6e 64 6c 65 2c 20 6e 6f  74 20 6f 6e 65 20 67 65  |ndle, not one ge|
00002800  6e 65 72 61 74 65 64 20  62 79 20 74 68 65 20 3c  |nerated by the <|
00002810  66 6f 70 65 6e 3e 20 66  75 6e 63 74 69 6f 6e 2e  |fopen> function.|
00002820  44 41 54 41 58 01 00 00  5f 6b 65 72 6e 65 6c 5f  |DATAX..._kernel_|
00002830  6f 73 62 70 75 74 0a 53  79 6e 74 61 78 3a 09 69  |osbput.Syntax:.i|
00002840  6e 74 20 5f 6b 65 72 6e  65 6c 5f 6f 73 62 70 75  |nt _kernel_osbpu|
00002850  74 20 28 69 6e 74 20 63  2c 20 75 6e 73 69 67 6e  |t (int c, unsign|
00002860  65 64 20 68 61 6e 64 6c  65 29 3b 0a 48 65 61 64  |ed handle);.Head|
00002870  65 72 3a 09 3c 6b 65 72  6e 65 6c 2e 68 3d 3e 6b  |er:.<kernel.h=>k|
00002880  65 72 6e 65 6c 3e 0a 0a  52 65 74 75 72 6e 73 3a  |ernel>..Returns:|
00002890  09 2d 32 20 69 66 20 61  6e 20 4f 53 20 65 72 72  |.-2 if an OS err|
000028a0  6f 72 20 6f 63 63 75 72  65 64 2c 20 65 6c 73 65  |or occured, else|
000028b0  20 30 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  | 0...This functi|
000028c0  6f 6e 20 63 61 6c 6c 73  20 74 68 65 20 3c 4f 53  |on calls the <OS|
000028d0  5f 42 50 75 74 3d 3e 53  57 49 3a 4f 53 5f 42 50  |_BPut=>SWI:OS_BP|
000028e0  75 74 3e 20 53 57 49 20  77 68 69 63 68 20 77 72  |ut> SWI which wr|
000028f0  69 74 65 73 20 61 20 62  79 74 65 20 74 6f 20 74  |ites a byte to t|
00002900  68 65 20 6f 70 65 6e 20  66 69 6c 65 20 77 68 6f  |he open file who|
00002910  73 65 20 68 61 6e 64 6c  65 20 69 73 20 67 69 76  |se handle is giv|
00002920  65 6e 2e 0a 0a 4e 6f 74  65 20 74 68 61 74 20 74  |en...Note that t|
00002930  68 69 73 20 69 73 20 61  20 52 49 53 43 20 4f 53  |his is a RISC OS|
00002940  20 66 69 6c 65 20 68 61  6e 64 6c 65 2c 20 6e 6f  | file handle, no|
00002950  74 20 6f 6e 65 20 67 65  6e 65 72 61 74 65 64 20  |t one generated |
00002960  62 79 20 74 68 65 20 3c  66 6f 70 65 6e 3e 20 66  |by the <fopen> f|
00002970  75 6e 63 74 69 6f 6e 2e  44 41 54 41 0d 02 00 00  |unction.DATA....|
00002980  5f 6b 65 72 6e 65 6c 5f  6f 73 62 79 74 65 0a 53  |_kernel_osbyte.S|
00002990  79 6e 74 61 78 3a 09 69  6e 74 20 5f 6b 65 72 6e  |yntax:.int _kern|
000029a0  65 6c 5f 6f 73 62 79 74  65 20 28 69 6e 74 20 72  |el_osbyte (int r|
000029b0  30 2c 20 69 6e 74 20 72  31 2c 20 69 6e 74 20 72  |0, int r1, int r|
000029c0  32 29 3b 0a 48 65 61 64  65 72 3a 09 3c 6b 65 72  |2);.Header:.<ker|
000029d0  6e 65 6c 2e 68 3d 3e 6b  65 72 6e 65 6c 3e 0a 0a  |nel.h=>kernel>..|
000029e0  52 65 74 75 72 6e 73 3a  09 56 61 6c 75 65 73 20  |Returns:.Values |
000029f0  72 65 74 75 72 6e 65 64  2c 20 6f 72 20 65 72 72  |returned, or err|
00002a00  6f 72 20 61 73 20 66 6f  6c 6c 6f 77 73 3a 0a 09  |or as follows:..|
00002a10  28 2d 31 29 09 43 61 72  72 79 20 66 6c 61 67 20  |(-1).Carry flag |
00002a20  69 73 20 73 65 74 20 28  63 61 6c 6c 20 66 61 69  |is set (call fai|
00002a30  6c 65 64 29 0a 09 28 2d  32 29 09 4f 53 20 65 72  |led)..(-2).OS er|
00002a40  72 6f 72 20 6f 63 63 75  72 73 2e 0a 0a 54 68 69  |ror occurs...Thi|
00002a50  73 20 66 75 6e 63 74 69  6f 6e 20 63 61 6c 6c 73  |s function calls|
00002a60  20 74 68 65 20 3c 4f 53  5f 42 79 74 65 3d 3e 53  | the <OS_Byte=>S|
00002a70  57 49 3a 4f 53 5f 42 79  74 65 3e 20 53 57 49 20  |WI:OS_Byte> SWI |
00002a80  77 69 74 68 20 74 68 65  20 72 65 67 69 73 74 65  |with the registe|
00002a90  72 20 52 30 20 73 65 74  20 74 6f 20 74 68 65 20  |r R0 set to the |
00002aa0  76 61 6c 75 65 20 70 61  73 73 65 64 20 69 6e 20  |value passed in |
00002ab0  7b 2f 7d 72 30 7b 2f 7d  2c 20 61 6e 64 20 72 65  |{/}r0{/}, and re|
00002ac0  67 69 73 74 65 72 73 20  52 31 20 61 6e 64 20 52  |gisters R1 and R|
00002ad0  32 20 73 65 74 20 74 6f  20 74 68 65 20 76 61 6c  |2 set to the val|
00002ae0  75 65 73 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |ues pointed to b|
00002af0  79 20 7b 2f 7d 72 31 7b  2f 7d 20 61 6e 64 20 7b  |y {/}r1{/} and {|
00002b00  2f 7d 72 32 7b 2f 7d 2e  0a 0a 54 68 65 20 2f 69  |/}r2{/}...The /i|
00002b10  6e 74 2f 20 72 65 74 75  72 6e 65 64 20 63 6f 6e  |nt/ returned con|
00002b20  74 61 69 6e 73 20 52 31  20 69 6e 20 69 74 73 20  |tains R1 in its |
00002b30  62 6f 74 74 6f 6d 20 62  79 74 65 2c 20 52 32 20  |bottom byte, R2 |
00002b40  69 6e 20 74 68 65 20 73  65 63 6f 6e 64 20 62 79  |in the second by|
00002b50  74 65 2c 20 61 6e 64 20  31 20 69 6e 20 74 68 65  |te, and 1 in the|
00002b60  20 74 68 69 72 64 20 62  79 74 65 20 69 66 20 74  | third byte if t|
00002b70  68 65 20 63 61 72 72 79  20 66 6c 61 67 20 69 73  |he carry flag is|
00002b80  20 73 65 74 2e 00 00 00  44 41 54 41 c1 01 00 00  | set....DATA....|
00002b90  5f 6b 65 72 6e 65 6c 5f  6f 73 63 6c 69 0a 53 79  |_kernel_oscli.Sy|
00002ba0  6e 74 61 78 3a 09 69 6e  74 20 5f 6b 65 72 6e 65  |ntax:.int _kerne|
00002bb0  6c 5f 6f 73 63 6c 69 20  28 63 68 61 72 20 2a 63  |l_oscli (char *c|
00002bc0  6f 6d 6d 61 6e 64 29 3b  0a 48 65 61 64 65 72 3a  |ommand);.Header:|
00002bd0  09 3c 6b 65 72 6e 65 6c  2e 68 3d 3e 6b 65 72 6e  |.<kernel.h=>kern|
00002be0  65 6c 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 30 20  |el>..Returns:.0 |
00002bf0  69 66 20 73 75 63 63 65  73 73 66 75 6c 2c 20 2d  |if successful, -|
00002c00  32 20 69 66 20 61 6e 20  4f 53 20 65 72 72 6f 72  |2 if an OS error|
00002c10  20 6f 63 63 75 72 72 65  64 2e 0a 0a 54 68 69 73  | occurred...This|
00002c20  20 66 75 6e 63 74 69 6f  6e 20 70 61 73 73 65 73  | function passes|
00002c30  20 74 68 65 20 73 74 72  69 6e 67 20 67 69 76 65  | the string give|
00002c40  6e 20 74 6f 20 74 68 65  20 6f 70 65 72 61 74 69  |n to the operati|
00002c50  6e 67 20 73 79 73 74 65  6d 20 43 4c 49 20 74 6f  |ng system CLI to|
00002c60  20 62 65 20 65 78 65 63  75 74 65 64 20 61 73 20  | be executed as |
00002c70  69 66 20 69 74 20 68 61  64 20 62 65 65 6e 20 74  |if it had been t|
00002c80  79 70 65 64 20 69 6e 20  61 73 20 61 20 22 73 74  |yped in as a "st|
00002c90  61 72 20 63 6f 6d 6d 61  6e 64 22 2e 20 46 6f 72  |ar command". For|
00002ca0  20 69 6e 73 74 61 6e 63  65 2c 20 7b 66 43 6f 64  | instance, {fCod|
00002cb0  65 7d 5f 6b 65 72 6e 65  6c 5f 6f 73 63 6c 69 28  |e}_kernel_oscli(|
00002cc0  22 4d 6f 64 75 6c 65 73  22 29 7b 66 7d 20 68 61  |"Modules"){f} ha|
00002cd0  73 20 74 68 65 20 73 61  6d 65 20 65 66 66 65 63  |s the same effec|
00002ce0  74 20 61 73 20 3c 2a 4d  6f 64 75 6c 65 73 3e 2e  |t as <*Modules>.|
00002cf0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00002d00  73 68 6f 75 6c 64 20 6e  6f 74 20 62 65 20 75 73  |should not be us|
00002d10  65 64 20 74 6f 20 72 75  6e 20 6f 74 68 65 72 20  |ed to run other |
00002d20  70 72 6f 67 72 61 6d 73  20 2d 20 75 73 65 20 3c  |programs - use <|
00002d30  5f 6b 65 72 6e 65 6c 5f  73 79 73 74 65 6d 3e 20  |_kernel_system> |
00002d40  66 6f 72 20 74 68 61 74  2e 00 00 00 44 41 54 41  |for that....DATA|
00002d50  0b 01 00 00 5f 6b 65 72  6e 65 6c 5f 6f 73 65 72  |...._kernel_oser|
00002d60  72 6f 72 0a 54 68 65 20  74 79 70 65 20 7b 2a 7d  |ror.The type {*}|
00002d70  5f 6b 65 72 6e 65 6c 5f  6f 73 65 72 72 6f 72 7b  |_kernel_oserror{|
00002d80  2a 7d 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |*} is defined in|
00002d90  20 3c 6b 65 72 6e 65 6c  2e 68 3d 3e 6b 65 72 6e  | <kernel.h=>kern|
00002da0  65 6c 3e 20 61 73 20 61  6e 20 6f 62 6a 65 63 74  |el> as an object|
00002db0  20 68 6f 6c 64 69 6e 67  20 61 20 73 74 61 6e 64  | holding a stand|
00002dc0  61 72 64 20 52 49 53 43  20 4f 53 20 65 72 72 6f  |ard RISC OS erro|
00002dd0  72 20 62 6c 6f 63 6b 2e  20 49 74 20 69 73 20 64  |r block. It is d|
00002de0  65 66 69 6e 65 64 20 61  73 20 74 68 65 20 66 6f  |efined as the fo|
00002df0  6c 6c 6f 77 69 6e 67 20  73 74 72 75 63 74 75 72  |llowing structur|
00002e00  65 3a 0a 0a 5c 7b 0a 20  20 20 20 69 6e 74 20 65  |e:..\{.    int e|
00002e10  72 72 6e 75 6d 3b 09 2f  2a 20 45 72 72 6f 72 20  |rrnum;./* Error |
00002e20  6e 75 6d 62 65 72 20 20  2a 2f 0a 20 20 20 20 63  |number  */.    c|
00002e30  68 61 72 20 65 72 72 6d  65 73 73 5b 32 35 32 5d  |har errmess[252]|
00002e40  3b 09 2f 2a 20 45 72 72  6f 72 20 6d 65 73 73 61  |;./* Error messa|
00002e50  67 65 20 2a 2f 0a 7d 00  44 41 54 41 bf 01 00 00  |ge */.}.DATA....|
00002e60  5f 6b 65 72 6e 65 6c 5f  6f 73 66 69 6c 65 0a 53  |_kernel_osfile.S|
00002e70  79 6e 74 61 78 3a 09 69  6e 74 20 5f 6b 65 72 6e  |yntax:.int _kern|
00002e80  65 6c 5f 6f 73 66 69 6c  65 20 28 69 6e 74 20 6f  |el_osfile (int o|
00002e90  70 2c 20 63 68 61 72 20  2a 6e 61 6d 65 2c 20 3c  |p, char *name, <|
00002ea0  5f 6b 65 72 6e 65 6c 5f  6f 73 66 69 6c 65 5f 62  |_kernel_osfile_b|
00002eb0  6c 6f 63 6b 3d 3e 5f 6b  65 72 6e 65 6c 5f 6f 73  |lock=>_kernel_os|
00002ec0  66 69 6c 65 5f 62 6c 6f  63 3e 20 2a 62 6c 6b 29  |file_bloc> *blk)|
00002ed0  3b 0a 48 65 61 64 65 72  3a 09 3c 6b 65 72 6e 65  |;.Header:.<kerne|
00002ee0  6c 2e 68 3d 3e 6b 65 72  6e 65 6c 3e 0a 0a 52 65  |l.h=>kernel>..Re|
00002ef0  74 75 72 6e 73 3a 09 43  6f 6e 74 65 6e 74 73 20  |turns:.Contents |
00002f00  6f 66 20 72 65 67 69 73  74 65 72 20 52 30 2c 20  |of register R0, |
00002f10  6f 72 20 65 72 72 6f 72  3a 0a 09 2d 31 20 69 66  |or error:..-1 if|
00002f20  20 66 61 69 6c 65 64 20  28 69 65 20 63 61 72 72  | failed (ie carr|
00002f30  79 20 66 6c 61 67 20 73  65 74 29 0a 09 2d 32 20  |y flag set)..-2 |
00002f40  69 66 20 61 6e 20 4f 53  20 65 72 72 6f 72 20 6f  |if an OS error o|
00002f50  63 63 75 72 72 65 64 2e  0a 0a 54 68 69 73 20 66  |ccurred...This f|
00002f60  75 6e 63 74 69 6f 6e 20  63 61 6c 6c 73 20 74 68  |unction calls th|
00002f70  65 20 3c 4f 53 5f 46 69  6c 65 3d 3e 53 57 49 3a  |e <OS_File=>SWI:|
00002f80  4f 53 5f 46 69 6c 65 3e  20 53 57 49 20 77 68 69  |OS_File> SWI whi|
00002f90  63 68 20 70 65 72 66 6f  72 6d 73 20 76 61 72 69  |ch performs vari|
00002fa0  6f 75 73 20 66 75 6e 63  74 69 6f 6e 73 20 6f 6e  |ous functions on|
00002fb0  20 77 68 6f 6c 65 20 66  69 6c 65 73 2e 20 52 30  | whole files. R0|
00002fc0  20 69 73 20 73 65 74 20  66 72 6f 6d 20 2f 6f 70  | is set from /op|
00002fd0  2f 2c 20 61 6e 64 20 52  31 20 69 73 20 73 65 74  |/, and R1 is set|
00002fe0  20 74 6f 20 74 68 65 20  6e 61 6d 65 20 67 69 76  | to the name giv|
00002ff0  65 6e 2e 20 52 65 67 69  73 74 65 72 73 20 52 32  |en. Registers R2|
00003000  2d 52 35 20 61 72 65 20  73 65 74 20 66 72 6f 6d  |-R5 are set from|
00003010  20 2f 62 6c 6b 2f 2e 00  44 41 54 41 6c 01 00 00  | /blk/..DATAl...|
00003020  5f 6b 65 72 6e 65 6c 5f  6f 73 66 69 6c 65 5f 62  |_kernel_osfile_b|
00003030  6c 6f 63 6b 0a 54 68 65  20 74 79 70 65 20 7b 2a  |lock.The type {*|
00003040  7d 5f 6b 65 72 6e 65 6c  5f 6f 73 66 69 6c 65 5f  |}_kernel_osfile_|
00003050  62 6c 6f 63 6b 7b 2a 7d  20 69 73 20 64 65 66 69  |block{*} is defi|
00003060  6e 65 64 20 69 6e 20 3c  6b 65 72 6e 65 6c 2e 68  |ned in <kernel.h|
00003070  3d 3e 6b 65 72 6e 65 6c  3e 20 61 73 20 61 20 74  |=>kernel> as a t|
00003080  79 70 65 20 63 61 70 61  62 6c 65 20 6f 66 20 68  |ype capable of h|
00003090  6f 6c 64 69 6e 67 20 69  6e 66 6f 72 6d 61 74 69  |olding informati|
000030a0  6f 6e 20 74 6f 20 62 65  20 70 61 73 73 65 64 20  |on to be passed |
000030b0  74 6f 20 74 68 65 20 3c  5f 6b 65 72 6e 65 6c 5f  |to the <_kernel_|
000030c0  6f 73 66 69 6c 65 3e 20  66 75 6e 63 74 69 6f 6e  |osfile> function|
000030d0  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
000030e0  61 73 3a 0a 0a 5c 7b 0a  20 20 20 20 69 6e 74 20  |as:..\{.    int |
000030f0  6c 6f 61 64 3b 09 2f 2a  20 6c 6f 61 64 20 61 64  |load;./* load ad|
00003100  64 72 65 73 73 20 2a 2f  0a 20 20 20 20 69 6e 74  |dress */.    int|
00003110  20 65 78 65 63 3b 09 2f  2a 20 65 78 65 63 75 74  | exec;./* execut|
00003120  69 6f 6e 20 61 64 64 72  65 73 73 20 2a 2f 0a 20  |ion address */. |
00003130  20 20 20 69 6e 74 20 73  74 61 72 74 3b 09 2f 2a  |   int start;./*|
00003140  20 73 74 61 72 74 20 61  64 64 72 65 73 73 2f 6c  | start address/l|
00003150  65 6e 67 74 68 20 2a 2f  0a 20 20 20 20 69 6e 74  |ength */.    int|
00003160  20 65 6e 64 3b 09 2f 2a  20 65 6e 64 20 61 64 64  | end;./* end add|
00003170  72 65 73 73 2f 61 74 74  72 69 62 75 74 65 73 20  |ress/attributes |
00003180  2a 2f 0a 7d 44 41 54 41  a2 01 00 00 5f 6b 65 72  |*/.}DATA...._ker|
00003190  6e 65 6c 5f 6f 73 66 69  6e 64 0a 53 79 6e 74 61  |nel_osfind.Synta|
000031a0  78 3a 09 69 6e 74 20 5f  6b 65 72 6e 65 6c 5f 6f  |x:.int _kernel_o|
000031b0  73 66 69 6e 64 20 28 69  6e 74 20 6f 70 2c 20 63  |sfind (int op, c|
000031c0  68 61 72 20 2a 6e 61 6d  65 29 3b 0a 48 65 61 64  |har *name);.Head|
000031d0  65 72 3a 09 3c 6b 65 72  6e 65 6c 2e 68 3d 3e 6b  |er:.<kernel.h=>k|
000031e0  65 72 6e 65 6c 3e 0a 0a  52 65 74 75 72 6e 73 3a  |ernel>..Returns:|
000031f0  09 4f 70 65 6e 69 6e 67  20 66 69 6c 65 3a 09 30  |.Opening file:.0|
00003200  20 69 66 20 66 61 69 6c  65 64 2c 20 65 6c 73 65  | if failed, else|
00003210  20 66 69 6c 65 20 68 61  6e 64 6c 65 2e 0a 09 43  | file handle...C|
00003220  6c 6f 73 69 6e 67 20 66  69 6c 65 3a 09 30 20 69  |losing file:.0 i|
00003230  66 20 73 75 63 63 65 73  73 66 75 6c 2c 0a 09 20  |f successful,.. |
00003240  09 2d 31 20 69 66 20 66  61 69 6c 65 64 2c 0a 09  |.-1 if failed,..|
00003250  20 09 2d 32 20 69 66 20  4f 53 20 65 72 72 6f 72  | .-2 if OS error|
00003260  20 6f 63 63 75 72 65 64  2e 0a 0a 54 68 69 73 20  | occured...This |
00003270  66 75 6e 63 74 69 6f 6e  20 63 61 6c 6c 73 20 74  |function calls t|
00003280  68 65 20 3c 4f 53 5f 46  69 6e 64 3d 3e 53 57 49  |he <OS_Find=>SWI|
00003290  3a 4f 53 5f 46 69 6e 64  3e 20 53 57 49 20 77 68  |:OS_Find> SWI wh|
000032a0  69 63 68 20 68 61 6e 64  6c 69 6e 67 20 6f 70 65  |ich handling ope|
000032b0  6e 69 6e 67 20 61 6e 64  20 63 6c 6f 73 69 6e 67  |ning and closing|
000032c0  20 6f 66 20 72 61 6e 64  6f 6d 20 61 63 63 65 73  | of random acces|
000032d0  73 20 66 69 6c 65 73 2e  20 54 68 65 20 72 65 67  |s files. The reg|
000032e0  69 73 74 65 72 20 52 30  20 69 73 20 73 65 74 20  |ister R0 is set |
000032f0  74 6f 20 74 68 65 20 76  61 6c 75 65 20 69 6e 20  |to the value in |
00003300  2f 6f 70 2f 2c 20 52 31  20 73 68 6f 75 6c 64 20  |/op/, R1 should |
00003310  70 6f 69 6e 74 20 74 6f  20 74 68 65 20 66 69 6c  |point to the fil|
00003320  65 6e 61 6d 65 2e 00 00  44 41 54 41 c9 01 00 00  |ename...DATA....|
00003330  5f 6b 65 72 6e 65 6c 5f  6f 73 67 62 70 62 0a 53  |_kernel_osgbpb.S|
00003340  79 6e 74 61 78 3a 09 69  6e 74 20 5f 6b 65 72 6e  |yntax:.int _kern|
00003350  65 6c 5f 6f 73 67 62 70  62 20 28 69 6e 74 20 6f  |el_osgbpb (int o|
00003360  70 2c 20 75 6e 73 69 67  6e 65 64 20 68 61 6e 64  |p, unsigned hand|
00003370  6c 65 2c 20 3c 5f 6b 65  72 6e 65 6c 5f 6f 73 67  |le, <_kernel_osg|
00003380  62 70 62 5f 62 6c 6f 63  6b 3d 3e 5f 6b 65 72 6e  |bpb_block=>_kern|
00003390  65 6c 5f 6f 73 67 62 70  62 5f 62 6c 6f 63 3e 20  |el_osgbpb_bloc> |
000033a0  2a 62 6c 6b 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |*blk);.Header:.<|
000033b0  6b 65 72 6e 65 6c 2e 68  3d 3e 6b 65 72 6e 65 6c  |kernel.h=>kernel|
000033c0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 30 09 69 66  |>..Returns:.0.if|
000033d0  20 73 75 63 63 65 73 73  66 75 6c 2e 0a 09 2d 31  | successful...-1|
000033e0  09 69 66 20 66 61 69 6c  65 64 20 28 69 65 20 63  |.if failed (ie c|
000033f0  61 72 72 79 20 66 6c 61  67 20 73 65 74 29 2e 0a  |arry flag set)..|
00003400  09 2d 32 09 69 66 20 61  6e 20 4f 53 20 65 72 72  |.-2.if an OS err|
00003410  6f 72 20 6f 63 63 75 72  65 64 2e 0a 0a 54 68 69  |or occured...Thi|
00003420  73 20 66 75 6e 63 74 69  6f 6e 20 63 61 6c 6c 73  |s function calls|
00003430  20 74 68 65 20 3c 4f 53  5f 47 42 50 42 3d 3e 53  | the <OS_GBPB=>S|
00003440  57 49 3a 4f 53 5f 47 42  50 42 3e 20 53 57 49 20  |WI:OS_GBPB> SWI |
00003450  77 68 69 63 68 20 70 65  72 66 6f 72 6d 73 20 61  |which performs a|
00003460  20 6d 79 72 69 61 64 20  6f 66 20 64 69 66 66 65  | myriad of diffe|
00003470  72 65 6e 74 20 6f 70 65  72 61 74 69 6f 6e 73 2e  |rent operations.|
00003480  20 54 68 65 20 70 61 72  61 6d 65 74 65 72 73 20  | The parameters |
00003490  66 6f 72 20 74 68 65 20  63 61 6c 6c 20 61 72 65  |for the call are|
000034a0  20 73 65 74 20 66 72 6f  6d 20 61 6e 64 20 72 65  | set from and re|
000034b0  74 75 72 6e 65 64 20 69  6e 20 2f 62 6c 6b 2f 2e  |turned in /blk/.|
000034c0  20 54 68 65 20 61 63 74  69 6f 6e 20 28 69 6e 20  | The action (in |
000034d0  52 30 29 20 64 65 70 65  6e 64 73 20 6f 6e 20 74  |R0) depends on t|
000034e0  68 65 20 76 61 6c 75 65  20 6f 66 20 2f 6f 70 2f  |he value of /op/|
000034f0  2e 00 00 00 44 41 54 41  81 01 00 00 5f 6b 65 72  |....DATA...._ker|
00003500  6e 65 6c 5f 6f 73 67 62  70 62 5f 62 6c 6f 63 6b  |nel_osgbpb_block|
00003510  0a 54 68 65 20 74 79 70  65 20 7b 2a 7d 5f 6b 65  |.The type {*}_ke|
00003520  72 6e 65 6c 5f 6f 73 67  62 70 62 5f 62 6c 6f 63  |rnel_osgbpb_bloc|
00003530  6b 7b 2a 7d 20 69 73 20  64 65 66 69 6e 65 64 20  |k{*} is defined |
00003540  69 6e 20 3c 6b 65 72 6e  65 6c 2e 68 3d 3e 6b 65  |in <kernel.h=>ke|
00003550  72 6e 65 6c 3e 20 61 73  20 61 6e 20 6f 62 6a 65  |rnel> as an obje|
00003560  63 74 20 63 61 70 61 62  6c 65 20 6f 66 20 68 6f  |ct capable of ho|
00003570  6c 64 69 6e 67 20 69 6e  66 6f 72 6d 61 74 69 6f  |lding informatio|
00003580  6e 20 74 6f 20 62 65 20  70 61 73 73 65 64 20 74  |n to be passed t|
00003590  6f 20 74 68 65 20 3c 5f  6b 65 72 6e 65 6c 5f 6f  |o the <_kernel_o|
000035a0  73 67 62 70 62 3e 20 66  75 6e 63 74 69 6f 6e 2e  |sgbpb> function.|
000035b0  20 49 74 20 69 73 20 64  65 66 69 6e 65 64 20 61  | It is defined a|
000035c0  73 20 74 68 65 20 66 6f  6c 6c 6f 77 69 6e 67 20  |s the following |
000035d0  73 74 72 75 63 74 75 72  65 3a 0a 0a 5c 7b 0a 20  |structure:..\{. |
000035e0  20 20 20 76 6f 69 64 20  2a 64 61 74 61 70 74 72  |   void *dataptr|
000035f0  3b 09 2f 2a 20 6d 65 6d  6f 72 79 20 61 64 64 72  |;./* memory addr|
00003600  65 73 73 20 6f 66 20 64  61 74 61 2a 2f 0a 20 20  |ess of data*/.  |
00003610  20 20 69 6e 74 20 6e 62  79 74 65 73 3b 0a 20 20  |  int nbytes;.  |
00003620  20 20 69 6e 74 20 66 69  6c 65 70 74 72 3b 0a 20  |  int fileptr;. |
00003630  20 20 20 69 6e 74 20 62  75 66 5f 6c 65 6e 3b 0a  |   int buf_len;.|
00003640  20 20 20 20 63 68 61 72  20 2a 77 69 6c 64 5f 66  |    char *wild_f|
00003650  6c 64 3b 09 2f 2a 20 70  6f 69 6e 74 73 20 74 6f  |ld;./* points to|
00003660  20 77 69 6c 64 63 61 72  64 65 64 20 6e 61 6d 65  | wildcarded name|
00003670  20 2a 2f 0a 7d 00 00 00  44 41 54 41 fc 00 00 00  | */.}...DATA....|
00003680  5f 6b 65 72 6e 65 6c 5f  6f 73 72 64 63 68 0a 53  |_kernel_osrdch.S|
00003690  79 6e 74 61 78 3a 09 69  6e 74 20 5f 6b 65 72 6e  |yntax:.int _kern|
000036a0  65 6c 5f 6f 73 72 64 63  68 20 28 76 6f 69 64 29  |el_osrdch (void)|
000036b0  3b 0a 48 65 61 64 65 72  3a 09 3c 6b 65 72 6e 65  |;.Header:.<kerne|
000036c0  6c 2e 68 3d 3e 6b 65 72  6e 65 6c 3e 0a 0a 52 65  |l.h=>kernel>..Re|
000036d0  74 75 72 6e 73 3a 09 54  68 65 20 63 68 61 72 61  |turns:.The chara|
000036e0  63 74 65 72 20 72 65 61  64 2e 0a 0a 54 68 69 73  |cter read...This|
000036f0  20 66 75 6e 63 74 69 6f  6e 20 63 61 6c 6c 73 20  | function calls |
00003700  74 68 65 20 7b 2a 7d 4f  53 5f 52 65 61 64 43 7b  |the {*}OS_ReadC{|
00003710  2a 7d 20 53 57 49 2c 20  77 68 69 63 68 20 72 65  |*} SWI, which re|
00003720  61 64 73 20 61 20 63 68  61 72 61 63 74 65 72 20  |ads a character |
00003730  66 6f 72 20 74 68 65 20  6b 65 79 62 6f 61 72 64  |for the keyboard|
00003740  20 62 75 66 66 65 72 2c  20 77 61 69 74 69 6e 67  | buffer, waiting|
00003750  20 66 6f 72 20 6f 6e 65  20 74 6f 20 62 65 20 70  | for one to be p|
00003760  72 65 73 73 65 64 20 69  66 20 6e 65 63 65 73 73  |ressed if necess|
00003770  61 72 79 2e 44 41 54 41  b5 01 00 00 5f 6b 65 72  |ary.DATA...._ker|
00003780  6e 65 6c 5f 6f 73 77 6f  72 64 0a 53 79 6e 74 61  |nel_osword.Synta|
00003790  78 3a 09 69 6e 74 20 5f  6b 65 72 6e 65 6c 5f 6f  |x:.int _kernel_o|
000037a0  73 77 6f 72 64 20 28 69  6e 74 20 72 30 2c 20 69  |sword (int r0, i|
000037b0  6e 74 20 2a 72 31 29 3b  0a 48 65 61 64 65 72 3a  |nt *r1);.Header:|
000037c0  09 3c 6b 65 72 6e 65 6c  2e 68 3d 3e 6b 65 72 6e  |.<kernel.h=>kern|
000037d0  65 6c 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 30 09  |el>..Returns:.0.|
000037e0  69 66 20 73 75 63 63 65  73 73 66 75 6c 2e 0a 09  |if successful...|
000037f0  2d 31 09 69 66 20 66 61  69 6c 65 64 20 28 69 65  |-1.if failed (ie|
00003800  20 63 61 72 72 79 20 66  6c 61 67 20 73 65 74 29  | carry flag set)|
00003810  2e 0a 09 2d 32 09 69 66  20 61 6e 20 4f 53 20 65  |...-2.if an OS e|
00003820  72 72 6f 72 20 6f 63 63  75 72 65 64 2e 0a 0a 54  |rror occured...T|
00003830  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 61 6c  |his function cal|
00003840  6c 73 20 74 68 65 20 3c  4f 53 5f 57 6f 72 64 3d  |ls the <OS_Word=|
00003850  3e 53 57 49 3a 4f 53 5f  57 6f 72 64 3e 20 53 57  |>SWI:OS_Word> SW|
00003860  49 20 77 69 74 68 20 74  68 65 20 72 65 67 69 73  |I with the regis|
00003870  74 65 72 20 52 30 20 73  65 74 20 74 6f 20 74 68  |ter R0 set to th|
00003880  65 20 76 61 6c 75 65 20  70 61 73 73 65 64 20 69  |e value passed i|
00003890  6e 20 7b 2f 7d 72 30 7b  2f 7d 2c 20 61 6e 64 20  |n {/}r0{/}, and |
000038a0  74 68 65 20 72 65 67 69  73 74 65 72 20 52 31 20  |the register R1 |
000038b0  73 65 74 20 74 6f 20 74  68 65 20 70 6f 69 6e 74  |set to the point|
000038c0  65 72 20 7b 2f 7d 72 31  7b 2f 7d 2c 20 77 68 69  |er {/}r1{/}, whi|
000038d0  63 68 20 70 6f 69 6e 74  73 20 74 6f 20 61 20 70  |ch points to a p|
000038e0  61 72 61 6d 65 74 65 72  20 62 6c 6f 63 6b 2e 20  |arameter block. |
000038f0  56 61 6c 75 65 73 20 61  72 65 20 72 65 61 64 20  |Values are read |
00003900  66 72 6f 6d 20 61 6e 64  20 72 65 74 75 72 6e 65  |from and returne|
00003910  64 20 69 6e 20 74 68 65  20 70 61 72 61 6d 65 74  |d in the paramet|
00003920  65 72 20 62 6c 6f 63 6b  2e 00 00 00 44 41 54 41  |er block....DATA|
00003930  2b 01 00 00 5f 6b 65 72  6e 65 6c 5f 6f 73 77 72  |+..._kernel_oswr|
00003940  63 68 0a 53 79 6e 74 61  78 3a 09 69 6e 74 20 5f  |ch.Syntax:.int _|
00003950  6b 65 72 6e 65 6c 5f 6f  73 77 72 63 68 20 28 69  |kernel_oswrch (i|
00003960  6e 74 20 63 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |nt c);.Header:.<|
00003970  6b 65 72 6e 65 6c 2e 68  3d 3e 6b 65 72 6e 65 6c  |kernel.h=>kernel|
00003980  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 2d 32 20 69  |>..Returns:.-2 i|
00003990  66 20 61 6e 20 4f 53 20  65 72 72 6f 72 20 6f 63  |f an OS error oc|
000039a0  63 75 72 73 2c 20 65 6c  73 65 20 30 2e 0a 0a 54  |curs, else 0...T|
000039b0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 61 6c  |his function cal|
000039c0  6c 73 20 74 68 65 20 3c  4f 53 5f 57 72 69 74 65  |ls the <OS_Write|
000039d0  43 3d 3e 53 57 49 3a 4f  53 5f 57 72 69 74 65 43  |C=>SWI:OS_WriteC|
000039e0  3e 20 53 57 49 20 77 69  74 68 20 74 68 65 20 72  |> SWI with the r|
000039f0  65 67 69 73 74 65 72 20  52 30 20 73 65 74 20 74  |egister R0 set t|
00003a00  6f 20 2f 63 2f 2e 20 54  68 69 73 20 68 61 73 20  |o /c/. This has |
00003a10  74 68 65 20 72 65 73 75  6c 74 20 6f 66 20 77 72  |the result of wr|
00003a20  69 74 69 6e 67 20 74 68  65 20 63 68 61 72 61 74  |iting the charat|
00003a30  65 72 20 69 6e 20 2f 63  2f 20 74 6f 20 74 68 65  |er in /c/ to the|
00003a40  20 63 75 72 72 65 6e 74  20 6f 75 74 70 75 74 20  | current output |
00003a50  73 74 72 65 61 6d 2e 00  44 41 54 41 c2 00 00 00  |stream..DATA....|
00003a60  5f 6b 65 72 6e 65 6c 5f  70 72 6f 63 6e 61 6d 65  |_kernel_procname|
00003a70  0a 53 79 6e 74 61 78 3a  09 63 68 61 72 20 2a 5f  |.Syntax:.char *_|
00003a80  6b 65 72 6e 65 6c 5f 70  72 6f 63 6e 61 6d 65 20  |kernel_procname |
00003a90  28 69 6e 74 20 70 63 29  3b 0a 48 65 61 64 65 72  |(int pc);.Header|
00003aa0  3a 09 3c 6b 65 72 6e 65  6c 2e 68 3d 3e 6b 65 72  |:.<kernel.h=>ker|
00003ab0  6e 65 6c 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |nel>..Returns:.P|
00003ac0  6f 69 6e 74 65 72 20 74  6f 20 6e 61 6d 65 2e 0a  |ointer to name..|
00003ad0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 67  |.This function g|
00003ae0  65 74 73 20 74 68 65 20  6e 61 6d 65 20 6f 66 20  |ets the name of |
00003af0  74 68 65 20 70 72 6f 63  65 64 75 72 65 20 63 6f  |the procedure co|
00003b00  6e 74 61 69 6e 69 6e 67  20 74 68 65 20 61 64 64  |ntaining the add|
00003b10  72 65 73 73 20 2f 70 63  2f 2e 00 00 44 41 54 41  |ress /pc/...DATA|
00003b20  c6 00 00 00 5f 6b 65 72  6e 65 6c 5f 72 61 69 73  |...._kernel_rais|
00003b30  65 5f 65 72 72 6f 72 0a  53 79 6e 74 61 78 3a 09  |e_error.Syntax:.|
00003b40  76 6f 69 64 20 5f 6b 65  72 6e 65 6c 5f 72 61 69  |void _kernel_rai|
00003b50  73 65 5f 65 72 72 6f 72  20 28 3c 5f 6b 65 72 6e  |se_error (<_kern|
00003b60  65 6c 5f 6f 73 65 72 72  6f 72 3e 20 2a 65 72 72  |el_oserror> *err|
00003b70  29 3b 0a 48 65 61 64 65  72 3a 09 3c 6b 65 72 6e  |);.Header:.<kern|
00003b80  65 6c 2e 68 3d 3e 6b 65  72 6e 65 6c 3e 0a 0a 54  |el.h=>kernel>..T|
00003b90  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 67 65 6e  |his function gen|
00003ba0  65 72 61 74 65 73 20 61  6e 20 65 78 74 65 72 6e  |erates an extern|
00003bb0  61 6c 20 65 72 72 6f 72  20 77 69 74 68 20 74 68  |al error with th|
00003bc0  65 20 65 72 72 6f 72 20  62 6c 6f 63 6b 20 70 6f  |e error block po|
00003bd0  69 6e 74 65 72 20 74 6f  20 62 79 20 2f 65 72 72  |inter to by /err|
00003be0  2f 2e 00 00 44 41 54 41  1d 01 00 00 5f 6b 65 72  |/...DATA...._ker|
00003bf0  6e 65 6c 5f 73 64 69 76  0a 53 79 6e 74 61 78 3a  |nel_sdiv.Syntax:|
00003c00  09 69 6e 74 20 5f 6b 65  72 6e 65 6c 5f 73 64 69  |.int _kernel_sdi|
00003c10  76 20 28 69 6e 74 20 78  2c 20 69 6e 74 20 79 29  |v (int x, int y)|
00003c20  3b 0a 48 65 61 64 65 72  3a 09 3c 6b 65 72 6e 65  |;.Header:.<kerne|
00003c30  6c 2e 68 3d 3e 6b 65 72  6e 65 6c 3e 0a 0a 52 65  |l.h=>kernel>..Re|
00003c40  74 75 72 6e 73 3a 09 54  68 65 20 71 75 6f 74 69  |turns:.The quoti|
00003c50  65 6e 74 20 6f 66 20 79  2f 78 2e 0a 0a 54 68 69  |ent of y/x...Thi|
00003c60  73 20 66 75 6e 63 74 69  6f 6e 20 63 61 6c 63 75  |s function calcu|
00003c70  6c 61 74 65 73 20 74 68  65 20 73 69 67 6e 65 64  |lates the signed|
00003c80  20 71 75 6f 74 69 65 6e  74 20 6f 66 20 79 2f 78  | quotient of y/x|
00003c90  2e 20 49 74 20 69 73 20  69 6e 74 65 6e 64 65 64  |. It is intended|
00003ca0  20 66 6f 72 20 75 73 65  20 62 79 20 6e 6f 6e 2d  | for use by non-|
00003cb0  43 20 70 72 6f 67 72 61  6d 73 20 75 73 69 6e 67  |C programs using|
00003cc0  20 74 68 65 20 53 68 61  72 65 64 20 43 20 4c 69  | the Shared C Li|
00003cd0  62 72 61 72 79 2e 20 49  6e 20 43 20 79 6f 75 20  |brary. In C you |
00003ce0  63 61 6e 20 73 69 6d 70  6c 79 20 75 73 65 20 74  |can simply use t|
00003cf0  68 65 20 64 69 76 69 73  69 6f 6e 20 73 69 67 6e  |he division sign|
00003d00  21 00 00 00 44 41 54 41  b0 00 00 00 5f 6b 65 72  |!...DATA...._ker|
00003d10  6e 65 6c 5f 73 64 69 76  31 30 0a 53 79 6e 74 61  |nel_sdiv10.Synta|
00003d20  78 3a 09 69 6e 74 20 5f  6b 65 72 6e 65 6c 5f 73  |x:.int _kernel_s|
00003d30  64 69 76 31 30 20 28 69  6e 74 20 78 29 3b 0a 48  |div10 (int x);.H|
00003d40  65 61 64 65 72 3a 09 3c  6b 65 72 6e 65 6c 2e 68  |eader:.<kernel.h|
00003d50  3d 3e 6b 65 72 6e 65 6c  3e 0a 0a 52 65 74 75 72  |=>kernel>..Retur|
00003d60  6e 73 3a 09 78 20 64 69  76 69 64 65 64 20 62 79  |ns:.x divided by|
00003d70  20 31 30 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  | 10...This funct|
00003d80  69 6f 6e 20 64 69 76 69  64 65 73 20 2f 78 2f 20  |ion divides /x/ |
00003d90  62 79 20 31 30 20 61 6e  64 20 72 65 74 75 72 6e  |by 10 and return|
00003da0  73 20 74 68 65 20 73 69  67 6e 65 64 20 72 65 73  |s the signed res|
00003db0  75 6c 74 2e 44 41 54 41  8c 01 00 00 5f 6b 65 72  |ult.DATA...._ker|
00003dc0  6e 65 6c 5f 73 65 74 65  6e 76 0a 53 79 6e 74 61  |nel_setenv.Synta|
00003dd0  78 3a 09 3c 5f 6b 65 72  6e 65 6c 5f 6f 73 65 72  |x:.<_kernel_oser|
00003de0  72 6f 72 3e 20 2a 5f 6b  65 72 6e 65 6c 5f 73 65  |ror> *_kernel_se|
00003df0  74 65 6e 76 20 28 63 68  61 72 20 2a 6e 61 6d 65  |tenv (char *name|
00003e00  2c 20 63 68 61 72 20 2a  76 61 6c 29 3b 0a 48 65  |, char *val);.He|
00003e10  61 64 65 72 3a 09 3c 6b  65 72 6e 65 6c 2e 68 3d  |ader:.<kernel.h=|
00003e20  3e 6b 65 72 6e 65 6c 3e  0a 0a 52 65 74 75 72 6e  |>kernel>..Return|
00003e30  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
00003e40  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
00003e50  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
00003e60  6e 63 74 69 6f 6e 20 73  65 74 73 20 74 68 65 20  |nction sets the |
00003e70  76 61 6c 75 65 20 6f 66  20 74 68 65 20 73 79 73  |value of the sys|
00003e80  74 65 6d 20 76 61 72 69  61 62 6c 65 20 77 68 6f  |tem variable who|
00003e90  73 65 20 6e 61 6d 65 20  69 73 20 73 70 65 63 69  |se name is speci|
00003ea0  66 69 65 64 20 74 6f 20  74 68 65 20 73 74 72 69  |fied to the stri|
00003eb0  6e 67 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |ng pointed to by|
00003ec0  20 2f 76 61 6c 2f 2e 20  49 66 20 2f 76 61 6c 2f  | /val/. If /val/|
00003ed0  20 69 73 20 4e 55 4c 4c  20 74 68 65 6e 20 74 68  | is NULL then th|
00003ee0  65 20 76 61 72 69 61 62  6c 65 20 69 73 20 64 65  |e variable is de|
00003ef0  6c 65 74 65 64 2e 0a 0a  54 68 69 73 20 66 75 6e  |leted...This fun|
00003f00  63 74 69 6f 6e 20 69 73  20 65 71 75 69 76 61 6c  |ction is equival|
00003f10  65 6e 74 20 74 6f 20 74  68 65 20 53 57 49 20 3c  |ent to the SWI <|
00003f20  4f 53 5f 53 65 74 56 61  72 56 61 6c 3d 3e 53 57  |OS_SetVarVal=>SW|
00003f30  49 3a 4f 53 5f 53 65 74  56 61 72 56 61 6c 3e 2e  |I:OS_SetVarVal>.|
00003f40  44 41 54 41 ab 00 00 00  5f 6b 65 72 6e 65 6c 5f  |DATA...._kernel_|
00003f50  73 65 74 72 65 74 75 72  6e 63 6f 64 65 0a 53 79  |setreturncode.Sy|
00003f60  6e 74 61 78 3a 09 76 6f  69 64 20 5f 6b 65 72 6e  |ntax:.void _kern|
00003f70  65 6c 5f 73 65 74 72 65  74 75 72 6e 63 6f 64 65  |el_setreturncode|
00003f80  20 28 75 6e 73 69 67 6e  65 64 20 6e 29 3b 0a 48  | (unsigned n);.H|
00003f90  65 61 64 65 72 3a 09 3c  6b 65 72 6e 65 6c 2e 68  |eader:.<kernel.h|
00003fa0  3d 3e 6b 65 72 6e 65 6c  3e 0a 0a 54 68 69 73 20  |=>kernel>..This |
00003fb0  66 75 6e 63 74 69 6f 6e  20 73 65 74 73 20 74 68  |function sets th|
00003fc0  65 20 72 65 74 75 72 6e  20 63 6f 64 65 20 74 6f  |e return code to|
00003fd0  20 62 65 20 75 73 65 64  20 62 79 20 3c 5f 6b 65  | be used by <_ke|
00003fe0  72 6e 65 6c 5f 65 78 69  74 3e 2e 00 44 41 54 41  |rnel_exit>..DATA|
00003ff0  44 01 00 00 5f 6b 65 72  6e 65 6c 5f 73 72 65 6d  |D..._kernel_srem|
00004000  0a 53 79 6e 74 61 78 3a  09 69 6e 74 20 5f 6b 65  |.Syntax:.int _ke|
00004010  72 6e 65 6c 5f 73 72 65  6d 20 28 69 6e 74 20 78  |rnel_srem (int x|
00004020  2c 20 69 6e 74 20 79 29  3b 0a 48 65 61 64 65 72  |, int y);.Header|
00004030  3a 09 3c 6b 65 72 6e 65  6c 2e 68 3d 3e 6b 65 72  |:.<kernel.h=>ker|
00004040  6e 65 6c 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 54  |nel>..Returns:.T|
00004050  68 65 20 72 65 6d 61 69  6e 64 65 72 20 6f 66 20  |he remainder of |
00004060  79 2f 78 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |y/x...This funct|
00004070  69 6f 6e 20 63 61 6c 63  75 6c 61 74 65 73 20 74  |ion calculates t|
00004080  68 65 20 73 69 67 6e 65  64 20 72 65 6d 61 69 6e  |he signed remain|
00004090  64 65 72 20 6f 66 20 79  2f 78 2e 20 46 6f 72 6d  |der of y/x. Form|
000040a0  61 6c 6c 79 20 74 68 69  73 20 69 73 20 64 65 66  |ally this is def|
000040b0  69 6e 65 64 20 61 73 20  72 3d 79 2d 28 69 2a 78  |ined as r=y-(i*x|
000040c0  29 2c 20 77 68 65 72 65  20 2f 72 2f 20 69 73 20  |), where /r/ is |
000040d0  74 68 65 20 72 65 6d 61  69 6e 64 65 72 20 61 6e  |the remainder an|
000040e0  64 20 2f 69 2f 20 69 73  20 61 6e 20 69 6e 74 65  |d /i/ is an inte|
000040f0  67 65 72 20 73 75 63 68  20 74 68 61 74 20 2f 72  |ger such that /r|
00004100  2f 20 68 61 73 20 74 68  65 20 73 61 6d 65 20 73  |/ has the same s|
00004110  69 67 6e 20 61 73 20 2f  79 2f 20 61 6e 64 20 69  |ign as /y/ and i|
00004120  73 20 6c 65 73 73 20 74  68 61 6e 20 2f 78 2f 2e  |s less than /x/.|
00004130  44 41 54 41 15 01 00 00  5f 6b 65 72 6e 65 6c 5f  |DATA...._kernel_|
00004140  73 74 61 63 6b 5f 63 68  75 6e 6b 0a 54 68 69 73  |stack_chunk.This|
00004150  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
00004160  20 69 6e 20 3c 6b 65 72  6e 65 6c 2e 68 3d 3e 6b  | in <kernel.h=>k|
00004170  65 72 6e 65 6c 3e 2e 20  49 74 20 63 6f 6e 74 61  |ernel>. It conta|
00004180  69 6e 73 20 61 20 73 74  61 63 6b 20 63 68 75 6e  |ins a stack chun|
00004190  6b 20 69 6e 20 74 68 65  20 66 6f 6c 6c 6f 77 69  |k in the followi|
000041a0  6e 67 20 73 74 72 75 63  74 75 72 65 3a 0a 0a 20  |ng structure:.. |
000041b0  20 5c 7b 0a 20 20 20 20  75 6e 73 69 67 6e 65 64  | \{.    unsigned|
000041c0  20 6c 6f 6e 67 20 73 63  5f 6d 61 72 6b 3b 20 20  | long sc_mark;  |
000041d0  2f 2a 20 30 78 66 36 30  36 39 30 66 66 20 2a 2f  |/* 0xf60690ff */|
000041e0  0a 20 20 20 20 73 74 72  75 63 74 20 73 74 61 63  |.    struct stac|
000041f0  6b 5f 63 68 75 6e 6b 20  2a 73 63 5f 6e 65 78 74  |k_chunk *sc_next|
00004200  2c 73 63 5f 70 72 65 76  3b 0a 20 20 20 20 75 6e  |,sc_prev;.    un|
00004210  73 69 67 6e 65 64 20 6c  6f 6e 67 20 73 63 5f 73  |signed long sc_s|
00004220  69 7a 65 3b 0a 20 20 20  20 69 6e 74 20 28 2a 73  |ize;.    int (*s|
00004230  63 5f 64 65 61 6c 6c 6f  63 61 74 65 29 20 28 29  |c_deallocate) ()|
00004240  3b 0a 20 20 7d 00 00 00  44 41 54 41 df 01 00 00  |;.  }...DATA....|
00004250  5f 6b 65 72 6e 65 6c 5f  73 77 69 0a 53 79 6e 74  |_kernel_swi.Synt|
00004260  61 78 3a 09 3c 5f 6b 65  72 6e 65 6c 5f 6f 73 65  |ax:.<_kernel_ose|
00004270  72 72 6f 72 3e 20 2a 5f  6b 65 72 6e 65 6c 5f 73  |rror> *_kernel_s|
00004280  77 69 20 28 69 6e 74 20  6e 2c 20 3c 5f 6b 65 72  |wi (int n, <_ker|
00004290  6e 65 6c 5f 73 77 69 5f  72 65 67 73 3e 20 2a 69  |nel_swi_regs> *i|
000042a0  6e 2c 20 5f 6b 65 72 6e  65 6c 5f 73 77 69 5f 72  |n, _kernel_swi_r|
000042b0  65 67 73 20 2a 6f 75 74  29 3b 0a 48 65 61 64 65  |egs *out);.Heade|
000042c0  72 3a 09 3c 6b 65 72 6e  65 6c 2e 68 3d 3e 6b 65  |r:.<kernel.h=>ke|
000042d0  72 6e 65 6c 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |rnel>..Returns:.|
000042e0  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000042f0  2c 20 6f 72 20 4e 55 4c  4c 20 69 66 20 6e 6f 6e  |, or NULL if non|
00004300  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
00004310  6e 20 63 61 6c 6c 73 20  61 20 53 57 49 2c 20 77  |n calls a SWI, w|
00004320  68 6f 73 65 20 6e 75 6d  62 65 72 20 69 73 20 67  |hose number is g|
00004330  69 76 65 6e 20 69 6e 20  2f 6e 2f 2e 20 54 68 65  |iven in /n/. The|
00004340  20 72 65 67 69 73 74 65  72 73 20 52 30 2d 52 39  | registers R0-R9|
00004350  20 61 72 65 20 73 65 74  20 74 6f 20 74 68 65 20  | are set to the |
00004360  76 61 6c 75 65 73 20 69  6e 20 2f 69 6e 2f 2c 20  |values in /in/, |
00004370  61 6e 64 20 72 65 74 75  72 6e 65 64 20 69 6e 20  |and returned in |
00004380  2f 6f 75 74 2f 2e 0a 0a  54 68 69 73 20 6e 6f 72  |/out/...This nor|
00004390  6d 61 6c 6c 79 20 63 61  6c 6c 65 73 20 74 68 65  |mally calles the|
000043a0  20 58 20 66 6f 72 6d 20  6f 66 20 74 68 65 20 53  | X form of the S|
000043b0  57 49 73 20 69 65 20 65  72 72 6f 72 73 20 61 72  |WIs ie errors ar|
000043c0  65 20 72 65 74 75 72 6e  65 64 20 62 75 74 20 6e  |e returned but n|
000043d0  6f 74 20 72 65 70 6f 72  74 65 64 2e 20 54 6f 20  |ot reported. To |
000043e0  63 61 6c 6c 20 74 68 65  20 6e 6f 72 6d 61 6c 20  |call the normal |
000043f0  66 6f 72 6d 2c 20 79 6f  75 20 73 68 6f 75 6c 64  |form, you should|
00004400  20 4f 52 20 74 68 65 20  53 57 49 20 6e 75 6d 62  | OR the SWI numb|
00004410  65 72 20 77 69 74 68 20  3c 5f 6b 65 72 6e 65 6c  |er with <_kernel|
00004420  5f 4e 4f 4e 58 3e 2e 00  44 41 54 41 ec 01 00 00  |_NONX>..DATA....|
00004430  5f 6b 65 72 6e 65 6c 5f  73 77 69 5f 63 0a 53 79  |_kernel_swi_c.Sy|
00004440  6e 74 61 78 3a 09 3c 5f  6b 65 72 6e 65 6c 5f 6f  |ntax:.<_kernel_o|
00004450  73 65 72 72 6f 72 3e 20  2a 5f 6b 65 72 6e 65 6c  |serror> *_kernel|
00004460  5f 73 77 69 5f 63 20 28  69 6e 74 20 6e 2c 20 3c  |_swi_c (int n, <|
00004470  5f 6b 65 72 6e 65 6c 5f  73 77 69 5f 72 65 67 73  |_kernel_swi_regs|
00004480  3e 20 2a 69 6e 2c 20 5f  6b 65 72 6e 65 6c 5f 73  |> *in, _kernel_s|
00004490  77 69 5f 72 65 67 73 20  2a 6f 75 74 2c 20 69 6e  |wi_regs *out, in|
000044a0  74 20 2a 63 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |t *c);.Header:.<|
000044b0  6b 65 72 6e 65 6c 2e 68  3d 3e 6b 65 72 6e 65 6c  |kernel.h=>kernel|
000044c0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000044d0  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000044e0  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000044f0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00004500  63 61 6c 6c 73 20 61 20  53 57 49 2c 20 77 68 6f  |calls a SWI, who|
00004510  73 65 20 6e 75 6d 62 65  72 20 69 73 20 67 69 76  |se number is giv|
00004520  65 6e 20 69 6e 20 2f 6e  2f 2e 20 54 68 65 20 72  |en in /n/. The r|
00004530  65 67 69 73 74 65 72 73  20 52 30 2d 52 39 20 61  |egisters R0-R9 a|
00004540  72 65 20 73 65 74 20 74  6f 20 74 68 65 20 76 61  |re set to the va|
00004550  6c 75 65 73 20 69 6e 20  2f 69 6e 2f 2c 20 61 6e  |lues in /in/, an|
00004560  64 20 72 65 74 75 72 6e  65 64 20 69 6e 20 2f 6f  |d returned in /o|
00004570  75 74 2f 2e 20 49 6e 20  61 64 64 69 74 69 6f 6e  |ut/. In addition|
00004580  20 74 68 65 20 63 61 72  72 79 20 66 6c 61 67 20  | the carry flag |
00004590  69 73 20 72 65 74 75 72  6e 65 64 20 69 6e 20 74  |is returned in t|
000045a0  68 65 20 76 61 72 69 61  62 6c 65 20 70 6f 69 6e  |he variable poin|
000045b0  74 65 64 20 74 6f 20 62  79 20 2f 63 2f 2e 0a 0a  |ted to by /c/...|
000045c0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 69 73  |This function is|
000045d0  20 69 64 65 6e 74 69 63  61 6c 20 74 6f 20 3c 5f  | identical to <_|
000045e0  6b 65 72 6e 65 6c 5f 73  77 69 3e 2c 20 65 78 63  |kernel_swi>, exc|
000045f0  65 70 74 20 74 68 61 74  20 74 68 65 20 63 61 72  |ept that the car|
00004600  72 79 20 66 6c 61 67 20  69 73 20 72 65 74 75 72  |ry flag is retur|
00004610  6e 65 64 2e 44 41 54 41  f6 00 00 00 5f 6b 65 72  |ned.DATA...._ker|
00004620  6e 65 6c 5f 73 77 69 5f  72 65 67 73 0a 54 68 65  |nel_swi_regs.The|
00004630  20 74 79 70 65 20 7b 2a  7d 5f 6b 65 72 6e 65 6c  | type {*}_kernel|
00004640  5f 73 77 69 5f 72 65 67  73 7b 2a 7d 20 69 73 20  |_swi_regs{*} is |
00004650  64 65 66 69 6e 65 64 20  69 6e 20 3c 6b 65 72 6e  |defined in <kern|
00004660  65 6c 2e 68 3d 3e 6b 65  72 6e 65 6c 3e 20 61 73  |el.h=>kernel> as|
00004670  20 61 6e 20 6f 62 6a 65  63 74 20 63 61 70 61 62  | an object capab|
00004680  6c 65 20 6f 66 20 68 6f  6c 64 69 6e 67 20 74 68  |le of holding th|
00004690  65 20 72 65 67 69 73 74  65 72 73 20 52 30 2d 52  |e registers R0-R|
000046a0  39 20 73 6f 20 74 68 61  74 20 74 68 65 79 20 63  |9 so that they c|
000046b0  61 6e 20 62 65 20 70 61  73 73 65 64 20 74 6f 20  |an be passed to |
000046c0  74 68 65 20 6f 70 65 72  61 74 69 6e 67 20 73 79  |the operating sy|
000046d0  73 74 65 6d 2e 20 49 74  20 69 73 20 64 65 66 69  |stem. It is defi|
000046e0  6e 65 64 20 61 73 20 74  68 65 20 73 74 72 75 63  |ned as the struc|
000046f0  74 75 72 65 3a 0a 0a 5c  7b 0a 20 20 20 20 69 6e  |ture:..\{.    in|
00004700  74 20 72 5b 31 30 5d 3b  0a 7d 00 00 44 41 54 41  |t r[10];.}..DATA|
00004710  95 02 00 00 5f 6b 65 72  6e 65 6c 5f 73 79 73 74  |...._kernel_syst|
00004720  65 6d 0a 53 79 6e 74 61  78 3a 09 69 6e 74 20 5f  |em.Syntax:.int _|
00004730  6b 65 72 6e 65 6c 5f 73  79 73 74 65 6d 20 28 63  |kernel_system (c|
00004740  68 61 72 20 2a 63 6f 6d  6d 61 6e 64 2c 20 69 6e  |har *command, in|
00004750  74 20 63 68 61 69 6e 29  3b 0a 48 65 61 64 65 72  |t chain);.Header|
00004760  3a 09 3c 6b 65 72 6e 65  6c 2e 68 3d 3e 6b 65 72  |:.<kernel.h=>ker|
00004770  6e 65 6c 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 30  |nel>..Returns:.0|
00004780  20 69 66 20 73 75 63 63  65 73 73 66 75 6c 2c 20  | if successful, |
00004790  2d 32 20 69 66 20 4f 53  20 65 72 72 6f 72 20 6f  |-2 if OS error o|
000047a0  63 63 75 72 73 2e 0a 0a  54 68 69 73 20 66 75 6e  |ccurs...This fun|
000047b0  63 74 69 6f 6e 20 70 61  73 73 65 73 20 74 68 65  |ction passes the|
000047c0  20 73 74 72 69 6e 67 20  67 69 76 65 6e 20 74 6f  | string given to|
000047d0  20 74 68 65 20 6f 70 65  72 61 74 69 6e 67 20 73  | the operating s|
000047e0  79 73 74 65 6d 20 43 4c  49 20 74 6f 20 62 65 20  |ystem CLI to be |
000047f0  65 78 65 63 75 74 65 64  20 61 73 20 69 66 20 69  |executed as if i|
00004800  74 20 68 61 64 20 62 65  65 6e 20 74 79 70 65 64  |t had been typed|
00004810  20 69 6e 20 61 73 20 61  20 22 73 74 61 72 20 63  | in as a "star c|
00004820  6f 6d 6d 61 6e 64 22 2e  20 54 68 65 20 64 69 66  |ommand". The dif|
00004830  66 65 72 65 6e 63 65 20  62 65 74 77 65 65 6e 20  |ference between |
00004840  74 68 69 73 20 61 6e 64  20 6f 74 68 65 72 20 73  |this and other s|
00004850  69 6d 69 6c 61 72 20 66  75 6e 63 74 69 6f 6e 20  |imilar function |
00004860  69 73 20 74 68 61 74 20  74 68 69 73 20 66 75 6e  |is that this fun|
00004870  63 74 69 6f 6e 20 61 6c  6c 6f 77 73 20 6f 74 68  |ction allows oth|
00004880  65 72 20 70 72 6f 67 72  61 6d 73 20 74 6f 20 62  |er programs to b|
00004890  65 20 72 75 6e 2c 20 65  69 74 68 65 72 20 61 73  |e run, either as|
000048a0  20 61 20 73 75 62 2d 70  72 6f 67 72 61 6d 20 74  | a sub-program t|
000048b0  6f 2c 20 6f 72 20 69 6e  73 74 65 61 64 20 6f 66  |o, or instead of|
000048c0  20 74 68 65 20 63 75 72  72 65 6e 74 20 70 72 6f  | the current pro|
000048d0  67 72 61 6d 2e 0a 0a 49  66 20 2f 63 68 61 69 6e  |gram...If /chain|
000048e0  2f 20 69 73 20 30 2c 20  74 68 65 6e 20 74 68 65  |/ is 0, then the|
000048f0  20 63 6f 6d 6d 61 6e 64  20 69 73 20 65 78 65 63  | command is exec|
00004900  75 74 65 64 20 73 6f 20  74 68 61 74 20 77 68 65  |uted so that whe|
00004910  6e 20 69 74 20 66 69 6e  69 73 68 65 73 2c 20 63  |n it finishes, c|
00004920  6f 6e 74 72 6f 6c 20 69  73 20 70 61 73 73 65 64  |ontrol is passed|
00004930  20 62 61 63 6b 20 74 6f  20 74 68 69 73 20 70 72  | back to this pr|
00004940  6f 67 72 61 6d 2e 20 49  66 20 2f 63 68 61 69 6e  |ogram. If /chain|
00004950  2f 20 69 73 20 31 2c 20  74 68 65 6e 20 74 68 65  |/ is 1, then the|
00004960  20 63 6f 6d 6d 61 6e 64  20 69 73 20 65 78 65 63  | command is exec|
00004970  75 74 65 64 20 73 6f 20  74 68 61 74 20 69 74 20  |uted so that it |
00004980  63 6f 6d 70 6c 65 74 65  6c 79 20 72 65 70 6c 61  |completely repla|
00004990  63 65 73 20 74 68 69 73  20 70 72 6f 67 72 61 6d  |ces this program|
000049a0  2e 00 00 00 44 41 54 41  2e 01 00 00 5f 6b 65 72  |....DATA...._ker|
000049b0  6e 65 6c 5f 75 64 69 76  0a 53 79 6e 74 61 78 3a  |nel_udiv.Syntax:|
000049c0  09 75 6e 73 69 67 6e 65  64 20 5f 6b 65 72 6e 65  |.unsigned _kerne|
000049d0  6c 5f 75 64 69 76 20 28  75 6e 73 69 67 6e 65 64  |l_udiv (unsigned|
000049e0  20 78 2c 20 75 6e 73 69  67 6e 65 64 20 79 29 3b  | x, unsigned y);|
000049f0  0a 48 65 61 64 65 72 3a  09 3c 6b 65 72 6e 65 6c  |.Header:.<kernel|
00004a00  2e 68 3d 3e 6b 65 72 6e  65 6c 3e 0a 0a 52 65 74  |.h=>kernel>..Ret|
00004a10  75 72 6e 73 3a 09 54 68  65 20 71 75 6f 74 69 65  |urns:.The quotie|
00004a20  6e 74 20 6f 66 20 79 2f  78 2e 0a 0a 54 68 69 73  |nt of y/x...This|
00004a30  20 66 75 6e 63 74 69 6f  6e 20 63 61 6c 63 75 6c  | function calcul|
00004a40  61 74 65 73 20 74 68 65  20 75 6e 73 69 67 6e 65  |ates the unsigne|
00004a50  64 20 71 75 6f 74 69 65  6e 74 20 6f 66 20 79 2f  |d quotient of y/|
00004a60  78 2e 20 49 74 20 69 73  20 69 6e 74 65 6e 64 65  |x. It is intende|
00004a70  64 20 66 6f 72 20 75 73  65 20 62 79 20 6e 6f 6e  |d for use by non|
00004a80  2d 43 20 70 72 6f 67 72  61 6d 73 20 75 73 69 6e  |-C programs usin|
00004a90  67 20 74 68 65 20 53 68  61 72 65 64 20 43 20 4c  |g the Shared C L|
00004aa0  69 62 72 61 72 79 2e 20  49 6e 20 43 20 79 6f 75  |ibrary. In C you|
00004ab0  20 63 61 6e 20 73 69 6d  70 6c 79 20 75 73 65 20  | can simply use |
00004ac0  74 68 65 20 64 69 76 69  73 69 6f 6e 20 73 69 67  |the division sig|
00004ad0  6e 21 00 00 44 41 54 41  bc 00 00 00 5f 6b 65 72  |n!..DATA...._ker|
00004ae0  6e 65 6c 5f 75 64 69 76  31 30 0a 53 79 6e 74 61  |nel_udiv10.Synta|
00004af0  78 3a 09 75 6e 73 69 67  6e 65 64 20 5f 6b 65 72  |x:.unsigned _ker|
00004b00  6e 65 6c 5f 75 64 69 76  31 30 20 28 75 6e 73 69  |nel_udiv10 (unsi|
00004b10  67 6e 65 64 20 78 29 3b  0a 48 65 61 64 65 72 3a  |gned x);.Header:|
00004b20  09 3c 6b 65 72 6e 65 6c  2e 68 3d 3e 6b 65 72 6e  |.<kernel.h=>kern|
00004b30  65 6c 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 78 20  |el>..Returns:.x |
00004b40  64 69 76 69 64 65 64 20  62 79 20 31 30 2e 0a 0a  |divided by 10...|
00004b50  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 64 69  |This function di|
00004b60  76 69 64 65 73 20 2f 78  2f 20 62 79 20 31 30 20  |vides /x/ by 10 |
00004b70  61 6e 64 20 72 65 74 75  72 6e 73 20 74 68 65 20  |and returns the |
00004b80  75 6e 73 69 67 6e 65 64  20 72 65 73 75 6c 74 2e  |unsigned result.|
00004b90  44 41 54 41 2d 01 00 00  5f 6b 65 72 6e 65 6c 5f  |DATA-..._kernel_|
00004ba0  75 6e 77 69 6e 64 0a 53  79 6e 74 61 78 3a 09 69  |unwind.Syntax:.i|
00004bb0  6e 74 20 5f 6b 65 72 6e  65 6c 5f 75 6e 77 69 6e  |nt _kernel_unwin|
00004bc0  64 20 28 3c 5f 6b 65 72  6e 65 6c 5f 75 6e 77 69  |d (<_kernel_unwi|
00004bd0  6e 64 62 6c 6f 63 6b 3e  20 2a 62 6c 6b 2c 20 63  |ndblock> *blk, c|
00004be0  68 61 72 20 2a 2a 6c 61  6e 29 3b 0a 48 65 61 64  |har **lan);.Head|
00004bf0  65 72 3a 09 3c 6b 65 72  6e 65 6c 2e 68 3d 3e 6b  |er:.<kernel.h=>k|
00004c00  65 72 6e 65 6c 3e 0a 0a  52 65 74 75 72 6e 73 3a  |ernel>..Returns:|
00004c10  09 49 6e 64 69 63 61 74  69 6f 6e 20 6f 66 20 73  |.Indication of s|
00004c20  75 63 63 65 73 73 2f 66  61 69 6c 75 72 65 2e 0a  |uccess/failure..|
00004c30  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 75  |.This function u|
00004c40  6e 77 69 6e 64 73 20 74  68 65 20 63 61 6c 6c 20  |nwinds the call |
00004c50  73 74 61 63 6b 20 6f 6e  65 20 6c 65 76 65 6c 2e  |stack one level.|
00004c60  20 49 74 20 72 65 74 75  72 6e 73 20 6e 65 67 61  | It returns nega|
00004c70  74 69 76 65 20 69 66 20  69 74 20 73 75 63 63 65  |tive if it succe|
00004c80  65 64 73 2c 20 30 20 69  66 20 74 68 65 20 73 74  |eds, 0 if the st|
00004c90  61 63 6b 20 65 6e 64 20  69 73 20 72 65 61 63 68  |ack end is reach|
00004ca0  65 64 2c 20 6f 72 20 70  6f 73 69 74 69 76 65 20  |ed, or positive |
00004cb0  66 6f 72 20 61 6e 20 65  72 72 6f 72 2e 00 00 00  |for an error....|
00004cc0  44 41 54 41 c3 00 00 00  5f 6b 65 72 6e 65 6c 5f  |DATA...._kernel_|
00004cd0  75 6e 77 69 6e 64 62 6c  6f 63 6b 0a 54 68 69 73  |unwindblock.This|
00004ce0  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
00004cf0  20 69 6e 20 3c 6b 65 72  6e 65 6c 2e 68 3d 3e 6b  | in <kernel.h=>k|
00004d00  65 72 6e 65 6c 3e 20 61  73 20 74 68 65 20 66 6f  |ernel> as the fo|
00004d10  6c 6c 6f 77 69 6e 67 20  73 74 72 75 63 74 75 72  |llowing structur|
00004d20  65 3a 0a 0a 20 20 5c 7b  0a 20 20 20 20 69 6e 74  |e:..  \{.    int|
00004d30  20 72 34 2c 72 35 2c 72  36 2c 72 37 2c 72 38 2c  | r4,r5,r6,r7,r8,|
00004d40  72 39 3b 0a 20 20 20 20  69 6e 74 20 66 70 2c 73  |r9;.    int fp,s|
00004d50  70 2c 70 63 2c 73 6c 3b  0a 20 20 20 20 3c 5f 65  |p,pc,sl;.    <_e|
00004d60  78 74 65 6e 64 65 64 5f  66 70 5f 6e 75 6d 62 65  |xtended_fp_numbe|
00004d70  72 3e 20 66 34 2c 66 35  2c 66 36 2c 66 37 3b 0a  |r> f4,f5,f6,f7;.|
00004d80  20 20 7d 00 44 41 54 41  55 01 00 00 5f 6b 65 72  |  }.DATAU..._ker|
00004d90  6e 65 6c 5f 75 72 65 6d  0a 53 79 6e 74 61 78 3a  |nel_urem.Syntax:|
00004da0  09 75 6e 73 69 67 6e 65  64 20 5f 6b 65 72 6e 65  |.unsigned _kerne|
00004db0  6c 5f 75 72 65 6d 20 28  75 6e 73 69 67 6e 65 64  |l_urem (unsigned|
00004dc0  20 78 2c 20 75 6e 73 69  67 6e 65 64 20 79 29 3b  | x, unsigned y);|
00004dd0  0a 48 65 61 64 65 72 3a  09 3c 6b 65 72 6e 65 6c  |.Header:.<kernel|
00004de0  2e 68 3d 3e 6b 65 72 6e  65 6c 3e 0a 0a 52 65 74  |.h=>kernel>..Ret|
00004df0  75 72 6e 73 3a 09 54 68  65 20 72 65 6d 61 69 6e  |urns:.The remain|
00004e00  64 65 72 20 6f 66 20 79  2f 78 2e 0a 0a 54 68 69  |der of y/x...Thi|
00004e10  73 20 66 75 6e 63 74 69  6f 6e 20 63 61 6c 63 75  |s function calcu|
00004e20  6c 61 74 65 73 20 74 68  65 20 75 6e 73 69 67 6e  |lates the unsign|
00004e30  65 64 20 72 65 6d 61 69  6e 64 65 72 20 6f 66 20  |ed remainder of |
00004e40  79 2f 78 2e 20 46 6f 72  6d 61 6c 6c 79 20 74 68  |y/x. Formally th|
00004e50  69 73 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |is is defined as|
00004e60  20 72 3d 79 2d 28 69 2a  78 29 2c 20 77 68 65 72  | r=y-(i*x), wher|
00004e70  65 20 2f 72 2f 20 69 73  20 74 68 65 20 72 65 6d  |e /r/ is the rem|
00004e80  61 69 6e 64 65 72 20 61  6e 64 20 2f 69 2f 20 69  |ainder and /i/ i|
00004e90  73 20 61 6e 20 69 6e 74  65 67 65 72 20 73 75 63  |s an integer suc|
00004ea0  68 20 74 68 61 74 20 2f  72 2f 20 68 61 73 20 74  |h that /r/ has t|
00004eb0  68 65 20 73 61 6d 65 20  73 69 67 6e 20 61 73 20  |he same sign as |
00004ec0  2f 79 2f 20 61 6e 64 20  69 73 20 6c 65 73 73 20  |/y/ and is less |
00004ed0  74 68 61 6e 20 2f 78 2f  2e 00 00 00 44 41 54 41  |than /x/....DATA|
00004ee0  88 02 00 00 5f 6b 65 72  6e 65 6c 5f 72 65 67 69  |...._kernel_regi|
00004ef0  73 74 65 72 5f 73 6c 6f  74 65 78 74 65 6e 64 0a  |ster_slotextend.|
00004f00  53 79 6e 74 61 78 3a 09  3c 5f 6b 65 72 6e 65 6c  |Syntax:.<_kernel|
00004f10  5f 45 78 74 65 6e 64 50  72 6f 63 3e 20 2a 5f 6b  |_ExtendProc> *_k|
00004f20  65 72 6e 65 6c 5f 72 65  67 69 73 74 65 72 5f 73  |ernel_register_s|
00004f30  6c 6f 74 65 78 74 65 6e  64 20 28 5f 6b 65 72 6e  |lotextend (_kern|
00004f40  65 6c 5f 45 78 74 65 6e  64 50 72 6f 63 20 2a 70  |el_ExtendProc *p|
00004f50  72 6f 63 29 3b 0a 48 65  61 64 65 72 3a 09 3c 6b  |roc);.Header:.<k|
00004f60  65 72 6e 65 6c 2e 68 3d  3e 6b 65 72 6e 65 6c 3e  |ernel.h=>kernel>|
00004f70  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00004f80  72 65 67 69 73 74 65 72  73 20 61 20 66 75 6e 63  |registers a func|
00004f90  74 69 6f 6e 20 66 6f 72  20 75 73 65 20 62 79 20  |tion for use by |
00004fa0  74 68 65 20 6b 65 72 6e  65 6c 20 74 6f 20 65 78  |the kernel to ex|
00004fb0  74 65 6e 64 20 69 74 73  20 68 65 61 70 2e 20 49  |tend its heap. I|
00004fc0  74 20 69 73 20 6e 6f 72  6d 61 6c 6c 79 20 61 62  |t is normally ab|
00004fd0  6c 65 20 74 6f 20 64 6f  20 74 68 69 73 20 61 75  |le to do this au|
00004fe0  74 6f 6d 61 74 69 63 61  6c 6c 79 2c 20 62 75 74  |tomatically, but|
00004ff0  20 69 66 20 73 6f 6d 65  6f 6e 65 20 65 6c 73 65  | if someone else|
00005000  20 68 61 73 20 61 63 71  75 69 72 65 64 20 74 68  | has acquired th|
00005010  65 20 73 70 61 63 65 20  69 74 20 77 6f 75 6c 64  |e space it would|
00005020  20 75 73 65 20 69 74 20  6e 65 65 64 73 20 74 6f  | use it needs to|
00005030  20 62 65 20 61 62 6c 65  20 74 6f 20 61 73 6b 20  | be able to ask |
00005040  74 68 61 74 20 73 6f 6d  65 6f 6e 65 20 65 6c 73  |that someone els|
00005050  65 20 74 6f 20 67 69 76  65 20 69 74 20 73 6f 6d  |e to give it som|
00005060  65 20 73 70 61 63 65 2e  20 54 68 61 74 20 69 73  |e space. That is|
00005070  20 77 68 61 74 20 74 68  65 20 66 75 6e 63 74 69  | what the functi|
00005080  6f 6e 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |on pointed to by|
00005090  20 2f 70 72 6f 63 2f 20  69 73 20 75 73 65 64 20  | /proc/ is used |
000050a0  66 6f 72 2e 20 49 74 20  69 73 20 63 61 6c 6c 65  |for. It is calle|
000050b0  64 20 77 69 74 68 20 74  68 65 20 61 6d 6f 75 6e  |d with the amoun|
000050c0  74 20 6f 66 20 73 70 61  63 65 20 72 65 71 75 69  |t of space requi|
000050d0  72 65 64 20 69 6e 20 62  79 74 65 73 20 61 6e 64  |red in bytes and|
000050e0  20 69 73 20 65 78 70 65  63 74 65 64 20 74 6f 20  | is expected to |
000050f0  72 65 74 75 72 6e 20 65  69 74 68 65 72 20 30 20  |return either 0 |
00005100  66 6f 72 20 66 61 69 6c  75 72 65 20 6f 72 20 74  |for failure or t|
00005110  68 65 20 61 6d 6f 75 6e  74 20 6f 66 20 73 70 61  |he amount of spa|
00005120  63 65 20 61 6c 6c 6f 63  61 74 65 64 20 28 77 68  |ce allocated (wh|
00005130  69 63 68 20 6d 61 79 20  62 65 20 6d 6f 72 65 20  |ich may be more |
00005140  74 68 61 6e 20 72 65 71  75 65 73 74 65 64 2c 20  |than requested, |
00005150  62 75 74 20 7b 5f 7d 6e  6f 74 7b 5f 7d 20 6c 65  |but {_}not{_} le|
00005160  73 73 29 2e 44 41 54 41  f4 01 00 00 5f 6b 65 72  |ss).DATA...._ker|
00005170  6e 65 6c 5f 72 65 67 69  73 74 65 72 5f 61 6c 6c  |nel_register_all|
00005180  6f 63 73 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |ocs.Syntax:.void|
00005190  20 5f 6b 65 72 6e 65 6c  5f 72 65 67 69 73 74 65  | _kernel_registe|
000051a0  72 5f 61 6c 6c 6f 63 73  20 28 3c 61 6c 6c 6f 63  |r_allocs (<alloc|
000051b0  70 72 6f 63 3e 20 2a 6d  61 6c 6c 6f 63 2c 20 3c  |proc> *malloc, <|
000051c0  66 72 65 65 70 72 6f 63  3e 20 2a 66 72 65 65 29  |freeproc> *free)|
000051d0  3b 0a 48 65 61 64 65 72  3a 09 3c 6b 65 72 6e 65  |;.Header:.<kerne|
000051e0  6c 2e 68 3d 3e 6b 65 72  6e 65 6c 3e 0a 0a 54 68  |l.h=>kernel>..Th|
000051f0  69 73 20 66 75 6e 63 69  6f 6e 20 72 65 67 69 73  |is funcion regis|
00005200  74 65 72 73 20 74 77 6f  20 70 72 6f 63 65 64 75  |ters two procedu|
00005210  72 65 73 20 77 68 69 63  68 20 61 72 65 20 75 73  |res which are us|
00005220  65 64 20 62 79 20 74 68  65 20 6b 65 72 6e 65 6c  |ed by the kernel|
00005230  20 74 6f 20 63 6c 61 69  6d 20 61 6e 64 20 72 65  | to claim and re|
00005240  6c 65 61 73 65 20 6d 65  6d 6f 72 79 2e 20 54 68  |lease memory. Th|
00005250  65 20 70 72 6f 63 65 64  75 72 65 20 67 69 76 65  |e procedure give|
00005260  6e 20 62 79 20 2f 6d 61  6c 6c 6f 63 2f 20 69 73  |n by /malloc/ is|
00005270  20 75 73 65 64 20 66 6f  72 20 63 6c 61 69 6d 69  | used for claimi|
00005280  6e 67 20 6d 65 6d 6f 72  79 20 61 6e 64 20 2f 66  |ng memory and /f|
00005290  72 65 65 2f 20 69 73 20  75 73 65 64 20 66 6f 72  |ree/ is used for|
000052a0  20 72 65 6c 65 61 73 69  6e 67 20 70 72 65 76 69  | releasing previ|
000052b0  6f 75 73 6c 79 20 63 6c  61 69 6d 65 64 20 6d 65  |ously claimed me|
000052c0  6d 6f 72 79 2e 0a 0a 54  68 65 20 70 72 6f 63 65  |mory...The proce|
000052d0  64 75 72 65 20 75 73 65  64 20 66 6f 72 20 63 6c  |dure used for cl|
000052e0  61 69 6d 69 6e 67 20 6d  65 6d 6f 72 79 20 6d 75  |aiming memory mu|
000052f0  73 74 20 6e 6f 74 20 75  73 65 20 6d 6f 72 65 20  |st not use more |
00005300  74 68 61 6e 20 34 31 20  77 6f 72 64 73 20 6f 66  |than 41 words of|
00005310  20 73 74 61 63 6b 20 28  6f 6e 65 20 6c 65 73 73  | stack (one less|
00005320  20 74 68 61 6e 20 74 68  65 20 4d 65 61 6e 69 6e  | than the Meanin|
00005330  67 20 6f 66 20 4c 69 66  65 2c 20 74 68 65 20 55  |g of Life, the U|
00005340  6e 69 76 65 72 73 65 20  61 6e 64 20 45 76 65 72  |niverse and Ever|
00005350  79 74 68 69 6e 67 29 2e  44 41 54 41 c4 43 00 00  |ything).DATA.C..|
00005360  06 00 00 00 10 00 00 00  c0 43 00 00 0c 07 00 00  |.........C......|
00005370  21 63 3f 00 00 00 00 00  00 00 00 00 05 00 00 00  |!c?.............|
00005380  21 00 00 00 00 00 00 00  0f 00 00 00 ac 00 00 00  |!...............|
00005390  dc 03 00 00 1b 00 00 00  10 ff ff ff 10 ff ff ff  |................|
000053a0  10 dd dd dd 10 dd dd dd  10 bb bb bb 10 bb bb bb  |................|
000053b0  10 99 99 99 10 99 99 99  10 77 77 77 10 77 77 77  |.........www.www|
000053c0  10 55 55 55 10 55 55 55  10 33 33 33 10 33 33 33  |.UUU.UUU.333.333|
000053d0  10 00 00 00 10 00 00 00  10 00 44 99 10 00 44 99  |..........D...D.|
000053e0  10 ee ee 00 10 ee ee 00  10 00 cc 00 10 00 cc 00  |................|
000053f0  10 dd 00 00 10 dd 00 00  10 ee ee bb 10 ee ee bb  |................|
00005400  10 55 88 00 10 55 88 00  10 ff bb 00 10 ff bb 00  |.U...U..........|
00005410  10 00 bb ff 10 00 bb ff  11 11 11 11 11 42 65 57  |.............BeW|
00005420  24 11 11 11 11 11 11 11  11 11 11 11 11 11 00 00  |$...............|
00005430  11 11 11 11 42 77 77 77  67 12 11 11 11 11 11 11  |....Bwwwg.......|
00005440  11 11 11 11 11 11 00 00  11 11 11 31 76 77 77 77  |...........1vwww|
00005450  77 17 11 11 11 11 11 11  11 11 11 11 11 11 00 00  |w...............|
00005460  11 11 11 74 77 77 77 77  77 47 11 11 11 11 11 11  |...twwwwwG......|
00005470  12 12 11 11 11 11 00 00  11 11 11 77 77 77 77 77  |...........wwwww|
00005480  77 67 11 11 11 11 32 44  55 55 45 24 12 11 00 00  |wg....2DUUE$....|
00005490  11 11 62 77 77 77 77 77  77 67 12 11 11 43 35 34  |..bwwwwwwg...C54|
000054a0  54 55 55 55 25 11 00 00  11 11 75 77 77 77 77 77  |TUUU%.....uwwwww|
000054b0  77 77 12 11 42 55 55 12  31 55 55 55 55 13 00 00  |ww..BUU.1UUUU...|
000054c0  11 21 77 77 77 77 77 77  77 77 13 21 55 55 55 45  |.!wwwwwwww.!UUUE|
000054d0  11 55 55 55 55 35 00 00  11 61 77 77 77 67 65 77  |.UUUU5...awwwgew|
000054e0  77 77 12 51 55 55 55 55  12 53 55 55 55 45 00 00  |ww.QUUUU.SUUUE..|
000054f0  11 72 77 77 77 26 61 77  77 77 11 54 55 55 55 55  |.rwww&awww.TUUUU|
00005500  12 53 55 55 55 45 00 00  11 76 77 77 77 13 63 77  |.SUUUE...vwww.cw|
00005510  77 57 11 54 55 55 55 55  11 54 55 55 55 45 00 00  |wW.TUUUU.TUUUE..|
00005520  21 76 77 77 67 11 75 77  77 26 11 54 55 55 55 45  |!vwwg.uww&.TUUUE|
00005530  11 55 55 55 55 35 00 00  31 77 77 77 27 11 41 44  |.UUUU5..1www'.AD|
00005540  34 11 11 53 55 55 55 15  31 55 55 55 55 14 00 00  |4..SUUU.1UUUU...|
00005550  61 77 77 77 17 11 11 11  11 11 11 42 55 55 45 11  |awww.......BUUE.|
00005560  51 55 55 55 55 11 00 00  71 77 77 77 15 11 11 11  |QUUUU...qwww....|
00005570  11 11 11 11 33 34 12 11  53 55 55 55 24 11 00 00  |....34..SUUU$...|
00005580  72 77 77 77 13 11 11 11  11 11 11 11 11 11 11 21  |rwww...........!|
00005590  55 55 55 35 11 11 00 00  74 77 77 77 12 11 11 11  |UUU5....twww....|
000055a0  11 11 11 11 11 11 11 41  55 55 34 11 11 11 00 00  |.......AUU4.....|
000055b0  75 77 77 67 11 11 11 11  11 11 11 11 11 11 11 53  |uwwg...........S|
000055c0  45 13 11 11 11 11 00 00  74 77 77 67 11 11 11 11  |E.......twwg....|
000055d0  11 11 11 11 11 11 21 54  13 11 11 11 11 11 00 00  |......!T........|
000055e0  76 77 77 67 11 11 21 12  11 11 11 11 11 11 31 25  |vwwg..!.......1%|
000055f0  11 11 11 11 11 11 00 00  77 77 77 47 11 41 76 67  |........wwwG.Avg|
00005600  14 11 11 11 11 11 41 14  11 11 11 11 11 11 00 00  |......A.........|
00005610  77 77 77 37 11 74 77 77  27 11 11 11 11 11 52 12  |www7.tww'.....R.|
00005620  11 11 11 11 11 11 00 00  77 77 77 37 21 76 77 77  |........www7!vww|
00005630  27 11 11 11 11 11 32 11  11 11 11 11 11 11 00 00  |'.....2.........|
00005640  77 77 77 37 41 77 77 77  26 11 11 11 21 43 54 44  |www7Awww&...!CTD|
00005650  12 11 11 11 11 11 00 00  77 77 77 67 72 77 77 77  |........wwwgrwww|
00005660  16 11 11 11 53 55 55 55  25 11 11 11 11 11 00 00  |....SUUU%.......|
00005670  77 77 77 77 77 77 77 77  13 11 11 31 55 55 55 55  |wwwwwwww...1UUUU|
00005680  55 11 11 11 11 11 00 00  75 77 77 77 77 77 77 77  |U.......uwwwwwww|
00005690  12 11 11 52 55 55 55 55  55 11 11 11 11 11 00 00  |...RUUUUU.......|
000056a0  75 77 77 77 77 77 77 47  11 11 11 53 55 55 55 55  |uwwwwwwG...SUUUU|
000056b0  55 11 11 11 11 11 00 00  73 77 77 77 77 77 77 17  |U.......swwwwww.|
000056c0  11 11 11 53 55 55 55 55  35 11 11 11 11 11 00 00  |...SUUUU5.......|
000056d0  62 77 77 77 77 77 77 13  11 11 11 53 55 55 55 55  |bwwwwww....SUUUU|
000056e0  14 11 11 11 11 11 00 00  61 77 77 77 77 77 57 11  |........awwwwwW.|
000056f0  11 11 11 31 55 55 55 35  11 11 11 11 11 11 00 00  |...1UUU5........|
00005700  21 76 77 77 77 77 13 11  11 11 11 11 43 54 33 11  |!vwwww......CT3.|
00005710  11 11 11 11 11 11 00 00  11 64 77 77 77 25 11 11  |.........dwww%..|
00005720  11 11 11 11 11 11 11 11  11 11 11 11 11 11 00 00  |................|
00005730  11 21 75 77 25 11 11 11  11 11 11 11 11 11 11 11  |.!uw%...........|
00005740  11 11 11 11 11 11 00 00  00 00 00 00 00 ff ff ff  |................|
00005750  ff 00 00 00 00 00 00 00  00 00 00 00 00 00 ff ff  |................|
00005760  00 00 00 00 ff ff ff ff  ff 0f 00 00 00 00 00 00  |................|
00005770  00 00 00 00 00 00 ff ff  00 00 00 f0 ff ff ff ff  |................|
00005780  ff 0f 00 00 00 00 00 00  00 00 00 00 00 00 ff ff  |................|
00005790  00 00 00 ff ff ff ff ff  ff ff 00 00 00 00 00 00  |................|
000057a0  0f 0f 00 00 00 00 ff ff  00 00 00 ff ff ff ff ff  |................|
000057b0  ff ff 00 00 00 00 ff ff  ff ff ff ff 0f 00 ff ff  |................|
000057c0  00 00 ff ff ff ff ff ff  ff ff 0f 00 00 ff ff ff  |................|
000057d0  ff ff ff ff ff 00 ff ff  00 00 ff ff ff ff ff ff  |................|
000057e0  ff ff 0f 00 ff ff ff 0f  f0 ff ff ff ff 0f ff ff  |................|
000057f0  00 f0 ff ff ff ff ff ff  ff ff 0f f0 ff ff ff ff  |................|
00005800  00 ff ff ff ff ff ff ff  00 f0 ff ff ff ff ff ff  |................|
00005810  ff ff 0f f0 ff ff ff ff  0f ff ff ff ff ff ff ff  |................|
00005820  00 ff ff ff ff ff f0 ff  ff ff 00 ff ff ff ff ff  |................|
00005830  0f ff ff ff ff ff ff ff  00 ff ff ff ff 0f ff ff  |................|
00005840  ff ff 00 ff ff ff ff ff  00 ff ff ff ff ff ff ff  |................|
00005850  f0 ff ff ff ff 00 ff ff  ff ff 00 ff ff ff ff ff  |................|
00005860  00 ff ff ff ff ff ff ff  f0 ff ff ff ff 00 f0 ff  |................|
00005870  ff 00 00 ff ff ff ff 0f  f0 ff ff ff ff 0f ff ff  |................|
00005880  f0 ff ff ff 0f 00 00 00  00 00 00 ff ff ff ff 00  |................|
00005890  f0 ff ff ff ff 00 ff ff  f0 ff ff ff 0f 00 00 00  |................|
000058a0  00 00 00 00 ff ff 0f 00  ff ff ff ff ff 00 ff ff  |................|
000058b0  ff ff ff ff 0f 00 00 00  00 00 00 00 00 00 00 f0  |................|
000058c0  ff ff ff ff 00 00 ff ff  ff ff ff ff 0f 00 00 00  |................|
000058d0  00 00 00 00 00 00 00 f0  ff ff ff 00 00 00 ff ff  |................|
000058e0  ff ff ff ff 00 00 00 00  00 00 00 00 00 00 00 ff  |................|
000058f0  ff 0f 00 00 00 00 ff ff  ff ff ff ff 00 00 00 00  |................|
00005900  00 00 00 00 00 00 f0 ff  0f 00 00 00 00 00 ff ff  |................|
00005910  ff ff ff ff 00 00 f0 0f  00 00 00 00 00 00 f0 ff  |................|
00005920  00 00 00 00 00 00 ff ff  ff ff ff ff 00 f0 ff ff  |................|
00005930  0f 00 00 00 00 00 f0 0f  00 00 00 00 00 00 ff ff  |................|
00005940  ff ff ff ff 00 ff ff ff  ff 00 00 00 00 00 ff 0f  |................|
00005950  00 00 00 00 00 00 ff ff  ff ff ff ff f0 ff ff ff  |................|
00005960  ff 00 00 00 00 00 ff 00  00 00 00 00 00 00 ff ff  |................|
00005970  ff ff ff ff f0 ff ff ff  ff 00 00 00 f0 ff ff ff  |................|
00005980  0f 00 00 00 00 00 ff ff  ff ff ff ff ff ff ff ff  |................|
00005990  0f 00 00 00 ff ff ff ff  ff 00 00 00 00 00 ff ff  |................|
000059a0  ff ff ff ff ff ff ff ff  0f 00 00 f0 ff ff ff ff  |................|
000059b0  ff 00 00 00 00 00 ff ff  ff ff ff ff ff ff ff ff  |................|
000059c0  0f 00 00 ff ff ff ff ff  ff 00 00 00 00 00 ff ff  |................|
000059d0  ff ff ff ff ff ff ff ff  00 00 00 ff ff ff ff ff  |................|
000059e0  ff 00 00 00 00 00 ff ff  ff ff ff ff ff ff ff 0f  |................|
000059f0  00 00 00 ff ff ff ff ff  ff 00 00 00 00 00 ff ff  |................|
00005a00  ff ff ff ff ff ff ff 0f  00 00 00 ff ff ff ff ff  |................|
00005a10  0f 00 00 00 00 00 ff ff  f0 ff ff ff ff ff ff 00  |................|
00005a20  00 00 00 f0 ff ff ff ff  00 00 00 00 00 00 ff ff  |................|
00005a30  f0 ff ff ff ff ff 0f 00  00 00 00 00 ff ff ff 00  |................|
00005a40  00 00 00 00 00 00 ff ff  00 ff ff ff ff ff 00 00  |................|
00005a50  00 00 00 00 00 00 00 00  00 00 00 00 00 00 ff ff  |................|
00005a60  00 f0 ff ff ff 00 00 00  00 00 00 00 00 00 00 00  |................|
00005a70  00 00 00 00 00 00 ff ff  54 03 00 00 21 64 65 73  |........T...!des|
00005a80  6b 6c 69 62 00 00 00 00  04 00 00 00 21 00 00 00  |klib........!...|
00005a90  00 00 00 00 07 00 00 00  ac 00 00 00 ac 00 00 00  |................|
00005aa0  1f 00 00 00 00 ff ff ff  00 ff ff ff 00 dd dd dd  |................|
00005ab0  00 dd dd dd 00 bb bb bb  00 bb bb bb 00 99 99 99  |................|
00005ac0  00 99 99 99 00 77 77 77  00 77 77 77 00 55 55 55  |.....www.www.UUU|
00005ad0  00 55 55 55 00 33 33 33  00 33 33 33 00 00 00 00  |.UUU.333.333....|
00005ae0  00 00 00 00 00 00 44 99  00 00 44 99 00 ee ee 00  |......D...D.....|
00005af0  00 ee ee 00 00 00 cc 00  00 00 cc 00 00 dd 00 00  |................|
00005b00  00 dd 00 00 00 ee ee bb  00 ee ee bb 00 55 88 00  |.............U..|
00005b10  00 55 88 00 00 ff bb 00  00 ff bb 00 00 00 bb ff  |.U..............|
00005b20  00 00 bb ff 00 00 00 00  00 30 00 00 03 00 00 00  |.........0......|
00005b30  00 00 00 ee ee 00 00 00  00 00 00 00 00 00 00 00  |................|
00005b40  03 00 00 00 00 00 e0 ee  be 00 00 00 03 00 03 33  |...............3|
00005b50  00 33 00 33 03 00 30 33  30 03 ee ee eb 00 00 00  |.3.3..030.......|
00005b60  30 30 30 00 03 30 30 00  03 00 30 00 03 e0 ee be  |000..00...0.....|
00005b70  be 00 00 00 30 30 30 00  03 30 30 00 03 00 30 00  |....000..00...0.|
00005b80  03 ee ee eb eb 00 00 00  00 03 30 00 03 30 30 00  |..........0..00.|
00005b90  03 00 30 00 e3 ee be be  be 00 00 00 00 03 00 33  |..0............3|
00005ba0  00 30 00 33 03 00 30 00  ee ee eb eb eb 00 00 00  |.0.3..0.........|
00005bb0  00 00 00 00 00 00 00 00  00 00 00 e0 ee be be be  |................|
00005bc0  be 00 00 00 00 03 00 00  00 00 00 00 00 00 00 ee  |................|
00005bd0  ee eb eb eb bb 00 00 00  30 00 00 00 00 00 00 00  |........0.......|
00005be0  00 00 e0 ee be be be be  bb 00 00 00 30 00 00 00  |............0...|
00005bf0  00 00 00 00 00 00 ee ee  eb eb eb bb bb 00 00 00  |................|
00005c00  30 00 00 00 00 00 00 00  00 e0 ee be be be be bb  |0...............|
00005c10  bb 00 00 00 03 00 00 00  00 00 00 00 00 ee ee eb  |................|
00005c20  eb eb bb bb 1b 00 00 00  30 00 00 00 00 00 00 00  |........0.......|
00005c30  e0 ee be be be be bb bb  11 00 00 00 30 00 00 00  |............0...|
00005c40  00 00 00 00 ee ee eb eb  eb bb bb 1b 01 00 00 00  |................|
00005c50  30 00 00 00 00 00 00 e0  ee be be be be bb bb 11  |0...............|
00005c60  00 00 00 00 00 03 00 00  00 00 00 ee ee eb eb eb  |................|
00005c70  bb bb 1b 01 00 00 00 00  00 00 00 00 00 00 e0 ee  |................|
00005c80  be be be be bb bb 11 00  30 00 00 00 00 00 00 00  |........0.......|
00005c90  00 00 ee ee eb eb eb bb  bb 1b 01 00 03 00 00 00  |................|
00005ca0  00 00 30 00 00 e0 ee be  be be be bb bb 15 00 00  |..0.............|
00005cb0  03 00 00 00 00 00 00 03  03 e3 ee eb eb eb bb bb  |................|
00005cc0  1b 51 00 00 03 00 00 00  00 00 00 03 03 9e 99 be  |.Q..............|
00005cd0  be be bb bb 55 33 00 00  03 00 00 00 00 00 00 30  |....U3.........0|
00005ce0  30 9e 9c eb eb bb bb 1b  05 00 00 00 03 00 00 00  |0...............|
00005cf0  00 00 00 30 e0 c9 99 be  be bb bb 15 30 03 00 00  |...0........0...|
00005d00  30 00 00 00 00 00 00 00  e0 99 ee ee be bb 1b 01  |0...............|
00005d10  00 00 00 00 00 00 00 00  00 00 00 00 9e e9 ee ee  |................|
00005d20  be bb 11 00 00 00 00 00  00 00 00 00 00 00 30 33  |..............03|
00005d30  99 ee 2e 2e be 1b 01 00  00 30 00 00 00 00 00 00  |.........0......|
00005d40  00 00 30 40 e9 e2 e2 23  e3 11 00 00 00 30 00 00  |..0@...#.....0..|
00005d50  00 00 00 00 00 00 30 40  44 3e 3e 2e 51 05 30 33  |......0@D>>.Q.03|
00005d60  00 33 03 00 00 00 00 00  00 00 30 42 77 e3 52 11  |.3........0Bw.R.|
00005d70  05 30 30 00 03 30 00 00  00 00 00 00 00 00 30 70  |.00..0........0p|
00005d80  27 51 51 00 33 33 30 00  03 30 00 00 00 00 00 00  |'QQ.330..0......|
00005d90  00 00 30 00 11 00 03 00  03 00 30 00 03 30 00 00  |..0.......0..0..|
00005da0  00 00 00 00 00 00 30 33  03 00 03 00 30 03 30 00  |......03....0.0.|
00005db0  03 00 03 33 33 00 00 00  00 00 00 00 00 00 00 00  |...33...........|
00005dc0  00 00 00 00 00 00 00 00  00 00 00 00 fc 05 00 00  |................|
00005dd0  21 65 61 73 79 63 00 00  00 00 00 00 04 00 00 00  |!easyc..........|
00005de0  21 00 00 00 00 00 00 00  07 00 00 00 ac 00 00 00  |!...............|
00005df0  54 03 00 00 1b 00 00 00  00 ff ff ff 00 ff ff ff  |T...............|
00005e00  00 dd dd dd 00 dd dd dd  00 bb bb bb 00 bb bb bb  |................|
00005e10  00 99 99 99 00 99 99 99  00 77 77 77 00 77 77 77  |.........www.www|
00005e20  00 55 55 55 00 55 55 55  00 33 33 33 00 33 33 33  |.UUU.UUU.333.333|
00005e30  00 00 00 00 00 00 00 00  00 00 44 99 00 00 44 99  |..........D...D.|
00005e40  00 ee ee 00 00 ee ee 00  00 00 cc 00 00 00 cc 00  |................|
00005e50  00 dd 00 00 00 dd 00 00  00 ee ee bb 00 ee ee bb  |................|
00005e60  00 55 88 00 00 55 88 00  00 ff bb 00 00 ff bb 00  |.U...U..........|
00005e70  00 00 bb ff 00 00 bb ff  00 00 00 00 00 00 20 54  |.............. T|
00005e80  56 44 13 00 00 00 00 00  00 00 00 00 00 00 00 00  |VD..............|
00005e90  00 53 77 67 66 77 77 57  02 00 00 00 00 00 00 00  |.SwgfwwW........|
00005ea0  00 00 00 00 62 67 f8 ff  ff ff 8f 78 67 01 00 00  |....bg.....xg...|
00005eb0  00 00 00 00 00 00 00 50  67 ff ff ff ff ff ff ff  |.......Pg.......|
00005ec0  78 37 00 00 00 00 00 00  00 00 10 76 f8 ff ff ff  |x7.........v....|
00005ed0  ff ff ff ff ff 78 03 00  00 00 00 00 00 00 60 f7  |.....x........`.|
00005ee0  ff ff ff ff ff ff ff ff  ff 8f 37 00 00 00 00 00  |..........7.....|
00005ef0  00 00 76 ff ff ff ff ff  ff ff ff ff ff ff 78 02  |..v...........x.|
00005f00  00 00 00 00 00 30 f7 ff  ff ff ff ff ff ff ff ff  |.....0..........|
00005f10  ff ff 6f 17 00 00 00 00  00 71 f8 ff ff ff ff 88  |..o......q......|
00005f20  88 88 ff ff ff ff ff 57  00 00 00 00 00 76 ff ff  |.......W.....v..|
00005f30  ff ff 8f 77 77 77 87 ff  ff ff ff 78 01 00 00 00  |...www.....x....|
00005f40  10 87 ff ff ff ff 78 23  00 00 73 f8 ff ff ff 7f  |......x#..s.....|
00005f50  04 00 00 00 30 f7 ff ff  ff ff 37 00 00 00 30 87  |....0.....7...0.|
00005f60  ff ff ff 8f 06 00 00 00  50 f6 ff ff ff 8f 07 00  |........P.......|
00005f70  00 00 00 87 ff ff ff ff  07 00 00 00 70 f8 ff ff  |............p...|
00005f80  ff 6f 05 00 00 00 00 76  77 77 77 77 07 00 00 00  |.o.....vwwww....|
00005f90  71 f8 ff ff ff 7f 04 00  00 00 00 44 44 44 44 44  |q..........DDDDD|
00005fa0  04 00 00 00 72 ff ff ff  ff 7f 03 00 00 00 00 00  |....r...........|
00005fb0  00 00 00 00 00 00 00 00  72 ff ff ff ff 7f 02 00  |........r.......|
00005fc0  00 00 00 00 00 00 00 00  00 00 00 00 72 ff ff ff  |............r...|
00005fd0  ff 7f 02 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00005fe0  72 ff ff ff ff 7f 03 00  00 00 00 00 00 00 00 00  |r...............|
00005ff0  00 00 00 00 71 f8 ff ff  ff 7f 04 00 00 00 00 44  |....q..........D|
00006000  44 44 44 44 04 00 00 00  71 f8 ff ff ff 7f 05 00  |DDDD....q.......|
00006010  00 00 00 76 77 77 77 77  17 00 00 00 60 f7 ff ff  |...vwwww....`...|
00006020  ff 8f 07 00 00 00 00 87  ff ff ff ff 07 00 00 00  |................|
00006030  30 f7 ff ff ff ff 37 00  00 00 30 f7 ff ff ff 8f  |0.....7...0.....|
00006040  06 00 00 00 00 87 ff ff  ff ff 78 03 00 00 63 f8  |..........x...c.|
00006050  ff ff ff 7f 04 00 00 00  10 76 ff ff ff ff 8f 77  |.........v.....w|
00006060  77 77 86 ff ff ff ff 78  01 00 00 00 00 71 f8 ff  |ww.....x.....q..|
00006070  ff ff ff 88 88 88 ff ff  ff ff ff 67 00 00 00 00  |...........g....|
00006080  00 31 f7 ff ff ff ff ff  ff ff ff ff ff ff 7f 17  |.1..............|
00006090  00 00 00 00 00 31 77 ff  ff ff ff ff ff ff ff ff  |.....1w.........|
000060a0  ff ff 78 02 00 00 00 00  00 00 77 f7 ff ff ff ff  |..x.......w.....|
000060b0  ff ff ff ff ff 8f 37 01  00 00 00 00 00 00 10 77  |......7........w|
000060c0  f8 ff ff ff ff ff ff ff  ff 78 03 00 00 00 00 00  |.........x......|
000060d0  00 00 00 75 76 ff ff ff  ff ff ff ff 78 37 00 00  |...uv.......x7..|
000060e0  00 00 00 00 00 00 00 20  72 77 f8 ff ff ff 8f 78  |....... rw.....x|
000060f0  77 01 00 00 00 00 00 00  00 00 00 00 40 73 77 77  |w...........@sww|
00006100  77 77 77 77 03 00 00 00  00 00 00 00 00 00 00 00  |wwww............|
00006110  00 10 23 74 77 44 13 03  00 00 00 00 00 00 00 00  |..#twD..........|
00006120  00 00 00 00 00 00 f0 ff  ff ff ff 00 00 00 00 00  |................|
00006130  00 00 00 00 00 00 00 00  00 ff ff ff ff ff ff ff  |................|
00006140  0f 00 00 00 00 00 00 00  00 00 00 00 ff ff ff ff  |................|
00006150  ff ff ff ff ff 0f 00 00  00 00 00 00 00 00 00 f0  |................|
00006160  ff ff ff ff ff ff ff ff  ff ff 00 00 00 00 00 00  |................|
00006170  00 00 f0 ff ff ff ff ff  ff ff ff ff ff ff 0f 00  |................|
00006180  00 00 00 00 00 00 f0 ff  ff ff ff ff ff ff ff ff  |................|
00006190  ff ff ff 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
000061a0  ff ff ff ff ff ff ff 0f  00 00 00 00 00 f0 ff ff  |................|
000061b0  ff ff ff ff ff ff ff ff  ff ff ff ff 00 00 00 00  |................|
000061c0  00 ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000061d0  00 00 00 00 00 ff ff ff  ff ff ff ff ff ff ff ff  |................|
000061e0  ff ff ff ff 0f 00 00 00  f0 ff ff ff ff ff ff 0f  |................|
000061f0  00 00 ff ff ff ff ff ff  0f 00 00 00 f0 ff ff ff  |................|
00006200  ff ff ff 00 00 00 f0 ff  ff ff ff ff 0f 00 00 00  |................|
00006210  f0 ff ff ff ff ff 0f 00  00 00 00 ff ff ff ff ff  |................|
00006220  0f 00 00 00 f0 ff ff ff  ff ff 0f 00 00 00 00 ff  |................|
00006230  ff ff ff ff 0f 00 00 00  ff ff ff ff ff ff 0f 00  |................|
00006240  00 00 00 ff ff ff ff ff  0f 00 00 00 ff ff ff ff  |................|
00006250  ff ff 0f 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00006260  ff ff ff ff ff ff 0f 00  00 00 00 00 00 00 00 00  |................|
00006270  00 00 00 00 ff ff ff ff  ff ff 0f 00 00 00 00 00  |................|
00006280  00 00 00 00 00 00 00 00  ff ff ff ff ff ff 0f 00  |................|
00006290  00 00 00 00 00 00 00 00  00 00 00 00 ff ff ff ff  |................|
000062a0  ff ff 0f 00 00 00 00 ff  ff ff ff ff 0f 00 00 00  |................|
000062b0  f0 ff ff ff ff ff 0f 00  00 00 00 ff ff ff ff ff  |................|
000062c0  0f 00 00 00 f0 ff ff ff  ff ff 0f 00 00 00 00 ff  |................|
000062d0  ff ff ff ff 0f 00 00 00  f0 ff ff ff ff ff ff 00  |................|
000062e0  00 00 f0 ff ff ff ff ff  0f 00 00 00 f0 ff ff ff  |................|
000062f0  ff ff ff 0f 00 00 ff ff  ff ff ff ff 0f 00 00 00  |................|
00006300  00 ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00006310  0f 00 00 00 00 ff ff ff  ff ff ff ff ff ff ff ff  |................|
00006320  ff ff ff ff 00 00 00 00  00 f0 ff ff ff ff ff ff  |................|
00006330  ff ff ff ff ff ff ff ff  00 00 00 00 00 00 ff ff  |................|
00006340  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
00006350  00 00 f0 ff ff ff ff ff  ff ff ff ff ff ff ff 00  |................|
00006360  00 00 00 00 00 00 f0 ff  ff ff ff ff ff ff ff ff  |................|
00006370  ff ff 0f 00 00 00 00 00  00 00 00 f0 ff ff ff ff  |................|
00006380  ff ff ff ff ff ff 00 00  00 00 00 00 00 00 00 00  |................|
00006390  ff ff ff ff ff ff ff ff  ff 0f 00 00 00 00 00 00  |................|
000063a0  00 00 00 00 00 ff ff ff  ff ff ff ff 0f 00 00 00  |................|
000063b0  00 00 00 00 00 00 00 00  00 00 f0 ff ff ff ff 00  |................|
000063c0  00 00 00 00 00 00 00 00  d4 02 00 00 21 61 6e 73  |............!ans|
000063d0  69 63 00 00 00 00 00 00  04 00 00 00 10 00 00 00  |ic..............|
000063e0  00 00 00 00 07 00 00 00  2c 00 00 00 80 01 00 00  |........,.......|
000063f0  0c 00 00 00 00 20 00 95  be be 7b 00 40 33 07 00  |..... ....{.@3..|
00006400  34 73 00 02 00 00 00 00  70 20 50 e9 eb eb bb 07  |4s......p P.....|
00006410  34 33 07 00 34 33 07 02  07 00 00 00 00 20 50 e9  |43..43....... P.|
00006420  be be be 27 34 33 43 44  33 33 07 02 00 00 00 00  |...'43CD33......|
00006430  70 20 50 e9 eb eb bb 07  00 34 33 33 33 07 00 02  |p P......4333...|
00006440  07 00 00 00 00 20 50 e9  be be be 37 02 00 24 32  |..... P....7..$2|
00006450  07 40 02 02 00 00 00 00  70 20 00 95 ee eb 7b 00  |.@......p ....{.|
00006460  00 00 24 32 07 00 00 02  07 00 00 00 00 20 00 95  |..$2......... ..|
00006470  be be 7b 01 22 02 24 32  07 31 01 02 00 00 00 00  |..{.".$2.1......|
00006480  70 20 00 50 e9 bb 07 00  00 00 24 32 07 00 00 02  |p .P......$2....|
00006490  06 00 00 00 00 20 30 30  31 25 10 20 21 00 24 32  |..... 001%. !.$2|
000064a0  17 31 00 02 00 00 00 00  70 20 00 00 30 05 00 00  |.1......p ..0...|
000064b0  00 00 24 32 07 00 00 02  07 00 00 00 00 20 20 13  |..$2.........  .|
000064c0  31 25 10 32 01 01 24 32  17 32 00 02 00 00 00 00  |1%.2..$2.2......|
000064d0  70 20 10 22 32 05 00 00  00 00 24 32 07 00 00 02  |p ."2.....$2....|
000064e0  07 00 00 00 00 20 03 00  30 05 22 00 01 10 24 32  |..... ..0."...$2|
000064f0  07 10 01 02 00 00 00 00  10 03 00 07 30 05 00 20  |............0.. |
00006500  00 34 33 33 33 07 00 02  31 00 00 00 03 00 00 07  |.4333...1.......|
00006510  34 43 00 00 34 33 43 44  33 33 17 32 00 00 00 00  |4C..43CD33.2....|
00006520  00 00 07 ee 43 34 00 00  34 33 07 00 34 33 05 00  |....C4..43..43..|
00006530  00 00 00 00 00 e0 ee ee  42 24 00 00 40 33 07 00  |........B$..@3..|
00006540  34 53 00 00 00 00 00 00  ff ff ff ff ff ff ff ff  |4S..............|
00006550  ff ff ff ff ff ff ff ff  ff 00 00 00 ff ff ff ff  |................|
00006560  ff ff ff ff ff ff ff ff  ff ff ff ff ff 00 00 00  |................|
00006570  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00006580  ff 00 00 00 ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00006590  ff ff ff ff ff 00 00 00  ff ff ff ff ff ff ff ff  |................|
000065a0  ff ff ff ff ff ff ff ff  ff 00 00 00 ff ff ff ff  |................|
000065b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff 00 00 00  |................|
000065c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000065d0  ff 00 00 00 ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000065e0  ff ff ff ff ff 00 00 00  ff ff ff ff ff ff ff ff  |................|
000065f0  ff ff ff ff ff ff ff ff  ff 00 00 00 ff ff ff ff  |................|
00006600  ff ff ff ff ff ff ff ff  ff ff ff ff ff 00 00 00  |................|
00006610  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00006620  ff 00 00 00 ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00006630  ff ff ff ff ff 00 00 00  ff ff 0f 00 f0 0f ff ff  |................|
00006640  ff ff ff ff ff ff ff ff  ff 00 00 00 ff 0f 00 00  |................|
00006650  f0 0f 00 f0 ff ff ff ff  ff ff ff ff ff 00 00 00  |................|
00006660  0f 00 00 00 ff ff 00 00  ff ff ff ff ff ff ff ff  |................|
00006670  00 00 00 00 00 00 00 00  ff ff 00 00 ff ff 0f 00  |................|
00006680  ff ff 0f 00 00 00 00 00  00 00 00 00 f0 0f 00 00  |................|
00006690  f0 ff 0f 00 ff ff 00 00  00 00 00 00 d4 02 00 00  |................|
000066a0  21 74 69 6d 73 6c 69 62  00 00 00 00 04 00 00 00  |!timslib........|
000066b0  21 00 00 00 00 00 00 00  07 00 00 00 2c 00 00 00  |!...........,...|
000066c0  2c 00 00 00 1f 00 00 00  00 00 00 00 00 30 00 00  |,............0..|
000066d0  03 00 00 00 00 00 00 ff  ff 00 00 00 00 00 00 00  |................|
000066e0  00 00 00 00 03 00 00 00  00 00 f0 ff 8f 00 00 00  |................|
000066f0  03 00 03 33 00 33 00 33  03 00 30 33 30 03 ff ff  |...3.3.3..030...|
00006700  f8 00 00 00 30 30 30 00  03 30 30 00 03 00 30 00  |....000..00...0.|
00006710  03 f0 ff 8f 8f 00 00 00  30 30 30 00 03 30 30 00  |........000..00.|
00006720  03 00 30 00 03 ff ff f8  f8 00 00 00 00 03 30 00  |..0...........0.|
00006730  03 30 30 00 03 00 30 00  f3 ff 8f 8f 8f 00 00 00  |.00...0.........|
00006740  00 03 00 33 00 30 00 33  03 00 30 00 ff ff f8 f8  |...3.0.3..0.....|
00006750  f8 00 00 00 00 00 00 00  00 00 00 00 00 00 00 f0  |................|
00006760  ff 8f 8f 8f 8f 00 00 00  00 03 00 00 00 00 00 00  |................|
00006770  00 00 00 ff ff f8 f8 f8  88 00 00 00 30 00 00 00  |............0...|
00006780  00 00 00 00 00 00 f0 ff  8f 8f 8f 8f 88 00 00 00  |................|
00006790  30 00 00 00 00 00 00 00  00 00 ff ff f8 f8 f8 88  |0...............|
000067a0  88 00 00 00 30 00 00 00  00 00 00 00 00 f0 ff 8f  |....0...........|
000067b0  8f 8f 8f 88 88 00 00 00  03 00 00 00 00 00 00 00  |................|
000067c0  00 ff ff f8 f8 f8 88 88  18 00 00 00 30 00 00 00  |............0...|
000067d0  00 00 00 00 f0 ff 8f 8f  8f 8f 88 88 11 00 00 00  |................|
000067e0  30 00 00 00 00 00 00 00  ff ff f8 f8 f8 88 88 18  |0...............|
000067f0  01 00 00 00 30 00 00 00  00 00 00 f0 ff 8f 8f 8f  |....0...........|
00006800  8f 88 88 11 00 00 00 00  00 03 00 00 00 00 00 ff  |................|
00006810  ff f8 f8 f8 88 88 18 01  00 00 00 00 00 00 00 00  |................|
00006820  00 00 f0 ff 8f 8f 8f 8f  88 88 11 00 30 00 00 00  |............0...|
00006830  00 00 00 00 00 00 ff ff  f8 f8 f8 88 88 18 01 00  |................|
00006840  03 00 00 00 00 00 30 00  00 f0 ff 8f 8f 8f 8f 88  |......0.........|
00006850  88 15 00 00 03 00 00 00  00 00 00 03 03 f3 ff f8  |................|
00006860  f8 f8 88 88 18 51 00 00  03 00 00 00 00 00 00 03  |.....Q..........|
00006870  03 9e 99 8f 8f 8f 88 88  55 33 00 00 03 00 00 00  |........U3......|
00006880  00 00 00 30 30 9e 9c f8  f8 88 88 18 05 00 00 00  |...00...........|
00006890  03 00 00 00 00 00 00 30  e0 c9 99 8e 8f 88 88 15  |.......0........|
000068a0  30 03 00 00 30 00 00 00  00 00 00 00 e0 99 ee ee  |0...0...........|
000068b0  8e 88 18 01 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000068c0  9e e9 ee ee 8e 88 11 00  00 00 00 00 00 00 00 00  |................|
000068d0  00 00 30 33 99 ee 2e 2e  8e 18 01 00 00 30 00 00  |..03.........0..|
000068e0  00 00 00 00 00 00 30 40  e9 e2 e2 23 e3 11 00 00  |......0@...#....|
000068f0  00 30 00 00 00 00 00 00  00 00 30 40 44 3e 3e 2e  |.0........0@D>>.|
00006900  51 05 30 33 00 33 03 00  00 00 00 00 00 00 30 42  |Q.03.3........0B|
00006910  77 e3 52 11 05 30 30 00  03 30 00 00 00 00 00 00  |w.R..00..0......|
00006920  00 00 30 70 27 51 51 00  33 33 30 00 03 30 00 00  |..0p'QQ.330..0..|
00006930  00 00 00 00 00 00 30 00  11 00 03 00 03 00 30 00  |......0.......0.|
00006940  03 30 00 00 00 00 00 00  00 00 30 33 03 00 03 00  |.0........03....|
00006950  30 03 30 00 03 00 03 33  33 00 00 00 00 00 00 00  |0.0....33.......|
00006960  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00006970  ac 2d 00 00 6d 61 65 6c  73 74 72 6f 6d 00 00 00  |.-..maelstrom...|
00006980  17 00 00 00 3b 00 00 00  00 00 00 00 0f 00 00 00  |....;...........|
00006990  ac 00 00 00 2c 17 00 00  14 00 00 00 00 ff ff ff  |....,...........|
000069a0  00 ff ff ff 00 dd dd dd  00 dd dd dd 00 bb bb bb  |................|
000069b0  00 bb bb bb 00 99 99 99  00 99 99 99 00 77 77 77  |.............www|
000069c0  00 77 77 77 00 55 55 55  00 55 55 55 00 33 33 33  |.www.UUU.UUU.333|
000069d0  00 33 33 33 00 00 00 00  00 00 00 00 00 00 44 99  |.333..........D.|
000069e0  00 00 44 99 00 ee ee 00  00 ee ee 00 00 00 cc 00  |..D.............|
000069f0  00 00 cc 00 00 dd 00 00  00 dd 00 00 00 ee ee bb  |................|
00006a00  00 ee ee bb 00 55 88 00  00 55 88 00 00 ff bb 00  |.....U...U......|
00006a10  00 ff bb 00 00 00 bb ff  00 00 bb ff 11 42 55 55  |.............BUU|
00006a20  55 55 55 55 55 55 55 55  55 55 55 55 55 55 55 55  |UUUUUUUUUUUUUUUU|
00006a30  55 55 55 55 55 55 55 55  55 34 11 11 11 11 11 11  |UUUUUUUUU4......|
00006a40  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00006a70  11 11 11 11 11 11 11 11  11 11 00 00 41 77 77 77  |............Awww|
00006a80  77 77 77 77 77 77 77 77  77 77 77 77 77 77 77 77  |wwwwwwwwwwwwwwww|
00006a90  77 77 77 77 77 77 77 77  77 77 25 11 11 11 11 11  |wwwwwwwwww%.....|
00006aa0  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00006ad0  11 11 11 11 11 11 11 11  11 11 00 00 73 77 77 77  |............swww|
00006ae0  77 77 77 77 77 77 77 77  77 77 77 77 77 77 77 77  |wwwwwwwwwwwwwwww|
00006af0  77 77 77 77 77 77 77 77  77 77 57 11 11 11 11 11  |wwwwwwwwwwW.....|
00006b00  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00006b30  11 11 11 11 11 11 11 11  11 11 00 00 76 77 77 77  |............vwww|
00006b40  77 77 77 77 77 77 77 77  77 77 77 77 77 77 77 77  |wwwwwwwwwwwwwwww|
00006b50  77 77 77 77 77 77 77 77  77 77 77 11 11 11 11 11  |wwwwwwwwwww.....|
00006b60  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00006b90  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 77  |............wwww|
00006ba0  67 67 67 67 77 77 77 77  77 77 77 77 77 77 77 77  |ggggwwwwwwwwwwww|
00006bb0  67 65 65 55 56 65 76 77  77 77 77 12 11 11 11 11  |geeUVevwwww.....|
00006bc0  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00006bf0  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 46  |............wwwF|
00006c00  b4 b3 44 4b 44 54 76 77  77 77 77 77 77 77 77 67  |..DKDTvwwwwwwwwg|
00006c10  55 55 56 56 56 56 55 77  77 77 77 13 11 11 11 11  |UUVVVVUwwww.....|
00006c20  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00006c50  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 b4  |............www.|
00006c60  4b 4b 4b 4b bb bb 65 77  77 77 77 77 77 77 77 56  |KKKK..ewwwwwwwwV|
00006c70  55 24 b8 b8 b8 66 58 77  77 77 77 12 11 11 c1 11  |U$...fXwwww.....|
00006c80  11 11 11 11 11 11 11 1c  11 1c 10 c0 11 11 11 11  |................|
00006c90  11 11 11 1c 1c c1 11 11  11 11 11 11 11 11 11 11  |................|
00006ca0  11 11 11 1c 01 1c 11 11  11 11 11 1c 10 1c 11 11  |................|
00006cb0  11 01 01 11 11 11 11 c0  c0 11 00 00 77 77 77 b5  |............www.|
00006cc0  b3 4b bb b4 44 4b 4b 77  77 77 77 77 77 77 77 54  |.K..DKKwwwwwwwwT|
00006cd0  13 b3 55 56 56 b6 65 77  77 77 27 33 33 33 44 c2  |..UVV.ewww'333D.|
00006ce0  11 11 33 33 33 33 33 24  01 53 55 55 10 11 11 11  |..33333$.SUU....|
00006cf0  11 10 43 44 33 44 11 c1  32 33 22 23 32 33 11 11  |..CD3D..23"#23..|
00006d00  21 22 32 44 54 34 11 11  11 01 32 54 54 34 c1 11  |!"2DT4....2TT4..|
00006d10  11 51 55 c3 11 11 21 66  46 11 00 00 77 77 77 46  |.QU...!fF...wwwF|
00006d20  b4 42 4b 4b bb b4 b4 75  77 77 77 77 77 77 67 15  |.BKK...uwwwwwwg.|
00006d30  b4 55 b8 66 6b 56 75 77  77 77 47 74 77 77 77 12  |.U.fkVuwwwGtwww.|
00006d40  11 01 76 77 57 12 42 47  11 70 77 27 11 11 11 11  |..vwW.BG.pw'....|
00006d50  01 75 77 15 10 73 13 11  77 66 77 77 57 76 c6 40  |.uw..s..wfwwWv.@|
00006d60  77 77 37 31 77 77 17 11  01 63 77 14 10 76 67 11  |ww71ww...cw..vg.|
00006d70  11 61 77 37 11 11 60 77  27 11 00 00 77 77 77 67  |.aw7..`w'...wwwg|
00006d80  2b b2 b4 4b 4b 4b 4b 64  77 77 77 77 77 77 47 42  |+..KKKKdwwwwwwGB|
00006d90  65 5b 8b b5 58 56 77 77  77 77 57 64 11 77 77 11  |e[..XVwwwwWd.ww.|
00006da0  11 11 72 77 06 11 11 42  11 51 77 17 11 11 11 11  |..rw...B.Qw.....|
00006db0  21 77 77 11 11 21 04 31  27 00 75 77 c3 31 17 11  |!ww..!.1'.uw.1..|
00006dc0  77 77 02 11 73 77 47 11  21 77 57 1c 11 72 77 16  |ww..swG.!wW..rw.|
00006dd0  11 4c 77 67 11 11 73 77  17 11 00 00 77 77 77 77  |.Lwg..sw....wwww|
00006de0  34 b2 4b 4b bb b4 b5 4b  77 77 77 77 77 77 b5 53  |4.KK...Kwwwwww.S|
00006df0  5b 56 b8 56 b8 55 77 77  77 77 27 36 11 72 77 14  |[V.V.Uwwww'6.rw.|
00006e00  11 11 72 77 14 c1 01 01  11 50 77 07 11 11 11 11  |..rw.....Pw.....|
00006e10  31 77 77 11 11 01 10 41  c2 11 73 77 12 11 23 01  |1ww....A..sw..#.|
00006e20  76 77 10 11 61 77 57 1c  60 77 27 11 11 60 77 37  |vw..awW.`w'..`w7|
00006e30  10 41 77 77 14 01 76 77  17 11 00 00 77 77 77 77  |.Aww..vw....wwww|
00006e40  46 b2 b4 b4 b4 4b 4b 4b  76 77 77 77 77 77 54 5b  |F....KKKvwwwwwT[|
00006e50  b6 b5 55 b6 58 56 77 77  77 77 26 05 11 70 77 16  |..U.XVwwww&..pw.|
00006e60  11 11 72 77 c3 41 15 11  11 41 77 07 11 11 11 11  |..rw.A...Aw.....|
00006e70  21 77 77 16 11 11 11 11  11 11 72 77 12 11 10 01  |!ww.......rw....|
00006e80  76 67 10 11 60 77 27 11  71 77 07 11 11 41 77 57  |vg..`w'.qw...AwW|
00006e90  11 50 76 77 17 30 77 77  27 11 00 00 77 77 77 77  |.Pvw.0ww'...wwww|
00006ea0  46 41 4b bb b4 b4 b4 b5  74 77 77 77 77 87 5b b8  |FAK.....twwww.[.|
00006eb0  56 66 b8 56 b8 56 77 77  77 77 44 03 33 62 77 27  |Vf.V.VwwwwD.3bw'|
00006ec0  11 11 72 77 13 77 77 11  11 41 77 07 11 11 11 11  |..rw.ww..Aw.....|
00006ed0  01 74 77 77 03 11 11 11  11 11 73 77 12 11 11 11  |.tww......sw....|
00006ee0  76 57 11 11 61 77 04 11  72 77 06 11 11 31 77 67  |vW..aw..rw...1wg|
00006ef0  10 60 40 77 67 73 22 77  37 11 00 00 77 77 77 77  |.`@wgs"w7...wwww|
00006f00  47 43 bb b4 b4 4b bb b4  54 77 77 77 77 47 b5 55  |GC...K..TwwwwG.U|
00006f10  5b 5b 56 b6 65 55 77 77  77 77 71 53 77 77 77 47  |[[V.eUwwwwqSwwwG|
00006f20  10 11 72 77 67 55 77 12  11 41 77 07 11 11 11 11  |..rwgUw..Aw.....|
00006f30  11 5c 77 77 57 10 11 11  11 11 72 77 12 11 11 01  |.\wwW.....rw....|
00006f40  76 67 10 00 73 37 11 11  73 77 16 11 11 21 77 67  |vg..s7..sw...!wg|
00006f50  11 61 10 77 77 57 20 77  57 11 00 00 77 77 77 77  |.a.wwW wW...wwww|
00006f60  b6 b3 b4 b4 b4 b4 b4 b4  b5 76 77 77 77 b5 85 6b  |.........vwww..k|
00006f70  56 66 b5 56 b8 56 77 77  77 67 72 77 77 77 77 77  |Vf.V.Vwwwgrwwwww|
00006f80  1c 11 71 77 27 10 75 10  11 41 77 07 11 11 11 11  |..qw'.u..Aw.....|
00006f90  11 01 72 77 77 16 11 11  11 11 72 77 11 11 11 c1  |..rww.....rw....|
00006fa0  76 67 30 56 77 12 11 11  73 77 05 11 11 31 77 67  |vg0Vw...sw...1wg|
00006fb0  10 6c 01 73 77 27 01 77  67 10 00 00 77 77 77 77  |.l.sw'.wg...wwww|
00006fc0  37 4b 4b bb b4 4b 4b bb  b4 74 77 77 77 54 5b b5  |7KK..KK..twwwT[.|
00006fd0  b5 b5 56 b6 58 56 77 77  77 47 75 02 61 47 75 77  |..V.XVwwwGu.aGuw|
00006fe0  11 11 71 77 15 11 13 11  11 40 77 07 11 11 11 11  |..qw.....@w.....|
00006ff0  11 11 01 75 77 67 11 11  11 11 72 77 12 11 11 01  |...uwg....rw....|
00007000  75 67 20 77 67 10 11 11  72 77 16 11 11 21 77 67  |ug wg...rw...!wg|
00007010  11 61 10 60 77 06 c1 76  77 10 00 00 77 77 77 77  |.a.`w..vw...wwww|
00007020  46 4b bb b4 b4 b4 4b 4b  5b 65 77 77 87 5b b8 65  |FK....KK[eww.[.e|
00007030  65 56 b8 56 b8 46 77 77  77 17 26 11 3c 04 71 77  |eV.V.Fwww.&.<.qw|
00007040  14 11 71 77 13 11 10 11  11 41 77 07 11 11 11 11  |..qw.....Aw.....|
00007050  11 11 11 30 77 77 06 11  11 11 73 77 12 11 11 11  |...0ww....sw....|
00007060  75 67 10 76 77 11 11 11  71 77 06 11 11 40 77 47  |ug.vw...qw...@wG|
00007070  11 62 11 31 77 12 11 75  77 11 00 00 77 77 77 77  |.b.1w..uw...wwww|
00007080  b6 b4 b4 b4 4b 4b 4b 4b  4b 4b 77 77 47 b5 55 5b  |....KKKKKKwwG.U[|
00007090  5b 5b 8b b5 56 46 77 77  77 36 35 13 01 1c 61 77  |[[..VFwww65...aw|
000070a0  06 11 72 77 13 11 11 11  11 41 77 07 11 10 10 11  |..rw.....Aw.....|
000070b0  11 01 c2 01 72 77 27 11  11 11 72 77 12 11 11 01  |....rw'...rw....|
000070c0  75 77 10 72 77 14 11 11  7c 77 07 11 11 51 77 27  |uw.rw...|w...Qw'|
000070d0  11 53 10 01 55 10 11 74  77 12 00 00 77 77 77 77  |.S..U..tw...wwww|
000070e0  b4 4b bb b4 b4 b4 b4 b4  5b 5b 76 77 56 5b b5 56  |.K......[[vwV[.V|
000070f0  66 56 b8 56 66 4b 77 77  77 53 62 13 11 11 41 77  |fV.VfKwwwSb...Aw|
00007100  17 11 71 77 12 11 11 11  1c 40 77 c7 11 74 47 10  |..qw.....@w..tG.|
00007110  01 74 26 11 50 77 47 10  11 11 72 77 12 11 11 11  |.t&.PwG...rw....|
00007120  74 77 10 4c 77 27 11 11  40 77 17 11 11 60 77 07  |tw.Lw'..@w...`w.|
00007130  01 55 11 11 01 11 11 74  77 13 00 00 77 77 77 77  |.U.....tw...wwww|
00007140  b5 b3 b4 4b bb b4 4b 4b  4b 4b 64 67 b5 65 5b b6  |...K..KKKKdg.e[.|
00007150  b5 b5 65 b5 56 56 76 77  77 71 71 13 11 11 31 77  |..e.VVvwwqq...1w|
00007160  17 11 71 77 13 11 11 21  11 41 77 17 11 50 77 14  |..qw...!.Aw..Pw.|
00007170  21 77 13 11 31 77 47 11  11 11 72 77 12 11 11 11  |!w..1wG...rw....|
00007180  74 77 10 01 75 67 1c 11  11 77 27 11 11 7c 77 13  |tw..ug...w'..|w.|
00007190  11 45 11 11 11 11 11 73  77 14 00 00 77 77 77 77  |.E.....sw...wwww|
000071a0  b4 b4 3b 44 4b bb b4 b5  b4 b5 4b 45 5b b5 55 55  |..;DK.....KE[.UU|
000071b0  56 56 b8 56 b8 66 75 77  67 62 72 13 11 11 21 77  |VV.V.fuwgbr...!w|
000071c0  37 11 72 77 03 11 01 72  10 40 77 27 11 21 77 17  |7.rw...r.@w'.!w.|
000071d0  31 77 11 11 41 77 27 11  11 11 72 77 12 11 11 11  |1w..Aw'...rw....|
000071e0  74 77 11 11 40 77 05 11  11 72 57 10 11 72 67 10  |tw..@w...rW..rg.|
000071f0  01 46 11 11 11 11 11 73  77 14 00 00 77 77 77 77  |.F.....sw...wwww|
00007200  b4 4b 5b b5 b4 b4 b4 4b  5b 4b 5b 5b b5 55 5b b5  |.K[....K[K[[.U[.|
00007210  b5 b6 65 b5 58 b6 75 77  57 64 73 13 11 11 21 77  |..e.X.uwWds...!w|
00007220  47 11 73 77 c5 01 31 57  10 41 77 47 11 31 77 27  |G.sw..1W.AwG.1w'|
00007230  11 77 05 01 61 77 16 11  11 01 73 77 13 11 11 c1  |.w..aw....sw....|
00007240  74 77 12 11 c1 72 37 11  11 40 77 12 11 76 16 11  |tw...r7..@w..v..|
00007250  01 46 11 11 11 11 01 73  77 05 00 00 77 77 77 77  |.F.....sw...wwww|
00007260  b3 b4 64 36 bb b4 b4 b4  b4 b5 b5 b5 b5 b5 74 56  |..d6..........tV|
00007270  56 56 b8 56 b8 85 74 77  47 74 71 13 11 11 50 77  |VV.V..twGtq...Pw|
00007280  57 10 76 77 57 44 76 27  11 70 77 77 13 63 77 06  |W.vwWDv'.pww.cw.|
00007290  11 52 67 43 76 57 11 11  11 11 76 77 06 11 11 11  |.RgCvW....vw....|
000072a0  74 77 06 11 11 01 64 12  11 01 62 37 63 47 10 11  |tw....d...b7cG..|
000072b0  11 66 10 11 11 11 11 76  77 14 00 00 77 77 77 77  |.f.....vw...wwww|
000072c0  b3 b4 63 67 b4 4b 4b 4b  4b 5b b5 55 5b 56 75 47  |..cg.KKKK[.U[VuG|
000072d0  5b 6b 8b b5 66 b6 74 77  67 31 61 13 11 11 20 33  |[k..f.twg1a... 3|
000072e0  12 01 23 22 22 32 32 02  11 31 33 33 33 33 23 11  |..#""22..13333#.|
000072f0  11 01 11 33 23 10 11 11  11 01 33 33 13 11 11 11  |...3#.....33....|
00007300  31 33 c3 11 11 11 01 10  11 11 01 21 13 01 11 11  |13.........!....|
00007310  c1 42 11 11 11 11 11 33  23 11 00 00 77 77 77 67  |.B.....3#...wwwg|
00007320  4b bb 74 77 b3 b4 4b bb  b5 b4 b5 b5 55 4b 77 47  |K.tw..K.....UKwG|
00007330  56 56 b8 66 65 85 74 77  77 66 76 13 11 11 11 11  |VV.fe.twwfv.....|
00007340  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
00007350  11 11 11 11 1c 11 11 11  11 11 11 11 11 11 11 11  |................|
00007360  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
00007370  11 01 11 11 11 11 11 11  11 11 00 00 77 77 77 57  |............wwwW|
00007380  4b 4b 64 77 46 4b 4b 4b  5b 5b 4b 5b 5b 55 77 47  |KKdwFKKK[[K[[UwG|
00007390  6b 5b 55 b6 b6 66 65 77  77 77 77 13 11 11 11 11  |k[U..fewwww.....|
000073a0  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
000073d0  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 47  |............wwwG|
000073e0  4b bb 74 77 47 4b 4b 5b  4b 4b 5b b5 55 6b 77 57  |K.twGKK[KK[.UkwW|
000073f0  56 b8 b6 56 56 b8 56 77  77 77 77 13 11 11 11 11  |V..VV.Vwwww.....|
00007400  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007430  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 47  |............wwwG|
00007440  4b 4b 6b 77 67 b4 4b 4b  5b 5b 5b 5b b6 75 77 57  |KKkwg.KK[[[[.uwW|
00007450  5b 8b 55 b6 65 8b 55 77  77 77 77 13 11 11 41 76  |[.U.e.Uwwww...Av|
00007460  47 11 11 11 11 11 11 11  11 11 11 52 57 11 55 11  |G..........RW.U.|
00007470  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007490  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 47  |............wwwG|
000074a0  b4 b4 74 77 77 b4 b4 b5  b4 55 5b b5 45 77 77 67  |..tww....U[.Ewwg|
000074b0  55 b8 b8 65 56 56 56 77  77 77 77 12 11 11 76 67  |U..eVVVwwww...vg|
000074c0  76 16 11 11 11 11 11 11  11 11 21 77 36 11 67 11  |v.........!w6.g.|
000074d0  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
000074f0  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 47  |............wwwG|
00007500  bb b4 74 77 77 47 4b 5b  5b 5b 5b 5b 5b 77 77 77  |..twwGK[[[[[[www|
00007510  b4 55 56 b6 66 8b 4b 77  77 77 77 13 11 61 47 11  |.UV.f.Kwwww..aG.|
00007520  61 37 11 11 11 11 11 11  11 11 61 27 11 21 57 11  |a7........a'.!W.|
00007530  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007550  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 36  |............www6|
00007560  4b bb 74 77 77 57 b4 b4  b5 b4 b5 55 74 77 77 77  |K.twwW.....Utwww|
00007570  55 b8 b8 56 56 56 48 77  77 77 77 13 11 72 15 11  |U..VVVHwwww..r..|
00007580  21 47 11 11 11 11 11 11  11 11 72 14 11 21 47 11  |!G........r..!G.|
00007590  11 11 11 11 11 11 11 11  11 11 11 11 32 12 11 11  |............2...|
000075a0  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
000075b0  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 b6  |............www.|
000075c0  b4 b4 74 77 77 77 b4 4b  4b 5b b5 b5 75 77 77 77  |..twww.KK[..uwww|
000075d0  b4 65 65 b5 66 8b 56 76  77 77 77 13 11 73 13 11  |.ee.f.Vvwww..s..|
000075e0  21 23 11 21 65 77 56 11  11 73 77 67 57 66 67 56  |!#.!ewV..swgWfgV|
000075f0  74 12 11 11 11 11 11 11  66 11 11 74 77 77 32 37  |t.......f..tww27|
00007600  21 25 63 15 11 31 76 66  14 11 11 11 11 11 11 11  |!%c..1vf........|
00007610  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 45  |............wwwE|
00007620  bb b4 75 77 77 67 46 b4  b5 b5 b5 45 77 77 77 77  |..uwwgF....Ewwww|
00007630  55 b8 b6 56 66 85 6b 75  77 77 77 13 11 73 15 11  |U..Vf.kuwww..s..|
00007640  11 11 11 73 67 55 77 16  11 43 76 55 64 76 67 56  |...sgUw..CvUdvgV|
00007650  73 13 11 11 34 11 11 41  37 11 72 67 44 75 47 27  |s...4..A7.rgDuG'|
00007660  41 57 77 14 21 76 57 76  67 11 11 11 11 11 11 11  |AWw.!vWvg.......|
00007670  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 b5  |............www.|
00007680  b4 b4 74 77 77 77 47 5b  4b b5 55 5b 77 77 77 77  |..twwwG[K.U[wwww|
00007690  b5 55 56 b6 56 8b 65 75  77 77 77 13 11 61 67 23  |.UV.V.euwww..ag#|
000076a0  11 11 31 67 12 11 51 47  11 11 65 11 11 61 16 11  |..1g..QG..e..a..|
000076b0  72 15 11 31 57 11 11 71  15 21 77 13 11 31 77 17  |r..1W..q.!w..1w.|
000076c0  51 77 13 11 72 37 11 11  75 14 11 11 11 11 11 11  |Qw..r7..u.......|
000076d0  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 45  |............wwwE|
000076e0  bb b4 75 77 77 77 87 5b  5b 5b b5 74 77 77 77 77  |..uwww.[[[.twwww|
000076f0  58 b8 b8 56 66 66 66 75  77 77 77 12 11 21 75 77  |X..Vfffuwww..!uw|
00007700  15 11 71 17 11 11 11 76  11 11 57 11 11 71 16 11  |..q....v..W..q..|
00007710  61 16 11 61 57 11 11 75  12 71 26 11 11 11 74 16  |a..aW..u.q&...t.|
00007720  61 37 11 11 67 12 11 11  61 17 11 11 11 11 11 11  |a7..g...a.......|
00007730  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 b4  |............www.|
00007740  b4 b4 75 77 77 77 77 54  5b 5b 5b 75 77 77 77 77  |..uwwwwT[[[uwwww|
00007750  56 8b 65 b5 56 8b 8b 74  77 77 77 13 11 11 21 65  |V.e.V..twww...!e|
00007760  67 11 74 13 11 11 11 74  12 11 47 11 11 72 14 11  |g.t....t..G..r..|
00007770  61 17 11 73 77 11 21 57  11 74 13 11 11 11 73 15  |a..sw.!W.t....s.|
00007780  72 17 11 41 27 11 11 11  31 27 11 11 11 11 11 11  |r..A'...1'......|
00007790  11 11 11 11 11 11 11 11  11 11 00 00 77 77 67 b4  |............wwg.|
000077a0  b4 b4 78 77 77 77 77 46  5b b5 45 77 77 77 77 77  |..xwwwwF[.Ewwwww|
000077b0  47 b8 b8 66 66 66 65 74  77 77 77 13 11 11 11 11  |G..fffetwww.....|
000077c0  76 14 76 11 11 11 11 74  13 21 37 11 11 74 13 11  |v.v....t.!7..t..|
000077d0  41 27 11 66 75 11 61 17  11 66 11 11 11 11 72 14  |A'.fu.a..f....r.|
000077e0  72 15 11 61 77 77 67 77  76 27 11 11 11 11 11 11  |r..awwgwv'......|
000077f0  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 b4  |............www.|
00007800  4b 4b 76 77 77 77 77 67  b4 55 65 77 77 77 77 77  |KKvwwwwg.Uewwwww|
00007810  47 55 56 b6 65 65 b6 75  77 77 77 13 11 11 11 11  |GUV.ee.uwww.....|
00007820  73 14 66 11 11 11 11 75  12 41 27 11 11 75 12 11  |s.f....u.A'..u..|
00007830  31 37 31 37 74 13 73 14  11 57 11 11 11 11 74 13  |1717t.s..W....t.|
00007840  73 14 11 71 56 54 55 55  55 15 11 11 11 11 11 11  |s..qVTUUU.......|
00007850  11 11 11 11 11 11 11 11  11 11 00 00 77 77 67 b3  |............wwg.|
00007860  b4 b4 76 77 77 77 77 77  46 54 76 77 77 77 77 77  |..vwwwwwFTvwwwww|
00007870  56 b6 b8 56 b8 b8 56 58  77 77 77 13 51 13 11 11  |V..V..VXwww.Q...|
00007880  73 14 67 11 11 11 11 67  11 41 17 11 11 75 11 11  |s.g....g.A...u..|
00007890  21 47 71 16 73 13 67 11  11 66 11 11 11 11 76 12  |!Gq.s.g..f....v.|
000078a0  75 12 11 71 15 11 11 11  11 11 11 11 11 11 11 11  |u..q............|
000078b0  11 11 11 11 11 11 11 11  11 11 00 00 77 77 67 4b  |............wwgK|
000078c0  bb 44 76 77 77 77 77 77  67 67 77 77 77 77 77 77  |.Dvwwwwwggwwwwww|
000078d0  47 8b 65 65 8b 85 66 56  77 77 77 13 72 15 11 11  |G.ee..fVwww.r...|
000078e0  75 13 76 12 11 11 51 27  11 61 16 11 11 67 11 11  |u.v...Q'.a...g..|
000078f0  11 57 73 13 72 55 37 11  11 76 12 11 11 51 77 1c  |.Ws.rU7..v...Qw.|
00007900  75 11 11 61 17 11 11 11  76 12 11 11 11 11 11 11  |u..a....v.......|
00007910  11 11 11 11 11 11 11 11  11 11 00 00 77 77 57 4b  |............wwWK|
00007920  4b bb 76 77 77 77 77 77  77 77 77 77 77 77 77 77  |K.vwwwwwwwwwwwww|
00007930  57 58 8b 6b 65 b8 66 56  77 77 77 13 71 27 11 41  |WX.ke.fVwww.q'.A|
00007940  67 11 73 16 11 11 74 14  11 71 14 11 21 57 11 11  |g.s...t..q..!W..|
00007950  11 75 66 11 71 76 16 11  11 74 16 11 11 74 57 11  |.uf.qv...t...tW.|
00007960  76 11 11 41 67 11 11 51  37 11 11 11 11 11 11 11  |v..Ag..Q7.......|
00007970  11 11 11 11 11 11 11 11  11 11 00 00 77 77 57 b5  |............wwW.|
00007980  b4 34 77 77 77 77 77 77  77 77 77 77 77 77 77 77  |.4wwwwwwwwwwwwww|
00007990  57 8b 65 65 b6 58 66 56  77 77 77 13 41 77 45 76  |W.ee.XfVwww.AwEv|
000079a0  26 11 41 77 45 75 47 11  11 72 14 11 31 37 11 11  |&.AwEuG..r..17..|
000079b0  11 75 37 11 61 77 12 11  11 61 77 45 75 47 57 11  |.u7.aw...awEuGW.|
000079c0  57 11 11 11 76 56 54 77  14 11 11 11 11 11 11 11  |W...vVTw........|
000079d0  11 11 11 11 11 11 11 11  11 11 00 00 77 77 47 4b  |............wwGK|
000079e0  5b 4b 77 77 77 77 77 77  77 77 77 77 77 77 77 77  |[Kwwwwwwwwwwwwww|
000079f0  57 b8 b8 b8 56 66 b8 46  77 77 77 13 11 63 77 46  |W...Vf.Fwww..cwF|
00007a00  11 11 11 63 77 56 12 11  11 72 12 11 41 36 11 11  |...cwV...r..A6..|
00007a10  11 73 16 11 51 57 11 11  11 11 64 77 46 32 37 21  |.s..QW....dwF27!|
00007a20  47 11 11 11 52 77 77 26  11 11 11 11 11 11 11 11  |G...Rww&........|
00007a30  11 11 11 11 11 11 11 11  11 11 00 00 77 77 47 5b  |............wwG[|
00007a40  4b 3b 77 77 77 77 77 77  77 77 77 77 77 77 77 77  |K;wwwwwwwwwwwwww|
00007a50  57 55 66 85 66 8b 65 56  77 77 77 12 11 11 11 11  |WUf.f.eVwww.....|
00007a60  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
00007a70  11 11 11 11 11 11 11 11  11 11 11 21 11 11 11 11  |...........!....|
00007a80  11 11 11 11 11 31 22 11  11 11 11 11 11 11 11 11  |.....1".........|
00007a90  11 11 11 11 11 11 11 11  11 11 00 00 77 77 47 4b  |............wwGK|
00007aa0  5b 3b 77 77 77 77 77 77  77 77 77 77 77 77 77 77  |[;wwwwwwwwwwwwww|
00007ab0  57 56 b4 b8 56 b8 66 46  77 77 77 13 11 11 11 11  |WV..V.fFwww.....|
00007ac0  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007af0  11 11 11 11 11 11 11 11  11 11 00 00 77 77 47 5b  |............wwG[|
00007b00  5b 3b 77 77 77 77 77 77  77 77 77 77 77 77 77 77  |[;wwwwwwwwwwwwww|
00007b10  57 5b 52 66 66 86 66 56  77 77 77 13 11 11 11 11  |W[Rff.fVwww.....|
00007b20  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007b50  11 11 11 11 11 11 11 11  11 11 00 00 77 77 47 55  |............wwGU|
00007b60  4b 4b 77 77 77 77 77 77  77 77 77 77 77 77 77 77  |KKwwwwwwwwwwwwww|
00007b70  87 65 51 66 65 b5 b8 46  77 77 77 13 11 11 11 11  |.eQfe..Fwww.....|
00007b80  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007bb0  11 11 11 11 11 11 11 11  11 11 00 00 77 77 47 43  |............wwGC|
00007bc0  5b 45 76 77 77 77 77 77  77 77 77 77 77 77 77 77  |[Evwwwwwwwwwwwww|
00007bd0  57 66 61 8b 8b 86 85 46  77 77 77 13 11 11 11 11  |Wfa....Fwww.....|
00007be0  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007c10  11 11 11 11 11 11 11 11  11 11 00 00 77 77 b6 42  |............ww.B|
00007c20  5b 4b 77 77 77 77 77 77  77 77 77 77 77 77 77 77  |[Kwwwwwwwwwwwwww|
00007c30  57 4b 62 56 b8 b8 66 46  77 77 77 12 11 11 11 11  |WKbV..fFwww.....|
00007c40  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007c70  11 11 11 11 11 11 11 11  11 11 00 00 77 77 47 b1  |............wwG.|
00007c80  55 4b 76 77 77 77 77 77  77 77 77 77 77 77 77 77  |UKvwwwwwwwwwwwww|
00007c90  56 25 64 66 86 86 66 46  77 77 77 13 11 11 11 11  |V%df..fFwww.....|
00007ca0  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007cd0  11 11 11 11 11 11 11 11  11 11 00 00 77 77 47 51  |............wwGQ|
00007ce0  b5 b5 65 77 77 77 77 77  77 77 77 77 77 77 77 67  |..ewwwwwwwwwwwwg|
00007cf0  55 34 56 8b 5b b8 66 46  77 77 77 13 11 11 11 11  |U4V.[.fFwww.....|
00007d00  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007d30  11 11 11 11 11 11 11 11  11 11 00 00 77 77 47 42  |............wwGB|
00007d40  5b 55 4b 77 77 77 77 77  77 77 77 77 77 77 77 56  |[UKwwwwwwwwwwwwV|
00007d50  b6 55 8b 58 68 86 65 56  77 77 77 13 11 11 11 11  |.U.Xh.eVwww.....|
00007d60  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007d90  11 11 11 11 11 11 11 11  11 11 00 00 77 77 47 5b  |............wwG[|
00007da0  b5 b5 55 76 77 77 77 77  77 77 77 77 77 77 77 56  |..UvwwwwwwwwwwwV|
00007db0  56 66 65 b8 b8 b8 66 65  77 77 77 13 11 11 11 11  |Vfe...fewww.....|
00007dc0  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007df0  11 11 11 11 11 11 11 11  11 11 00 00 77 77 67 b4  |............wwg.|
00007e00  55 5b b6 78 77 77 77 77  77 77 77 77 77 77 77 56  |U[.xwwwwwwwwwwwV|
00007e10  8b 66 b6 88 86 86 55 76  77 77 77 12 11 11 11 11  |.f....Uvwww.....|
00007e20  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007e50  11 11 11 11 11 11 11 11  11 11 00 00 77 77 77 56  |............wwwV|
00007e60  55 54 55 77 77 77 77 77  77 77 77 77 77 77 77 77  |UTUwwwwwwwwwwwww|
00007e70  55 56 56 56 56 55 66 77  77 77 77 13 11 11 11 11  |UVVVVUfwwww.....|
00007e80  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007eb0  11 11 11 11 11 11 11 11  11 11 00 00 76 77 77 77  |............vwww|
00007ec0  77 77 77 77 77 77 77 77  77 77 77 77 77 77 77 77  |wwwwwwwwwwwwwwww|
00007ed0  77 76 77 76 76 77 77 77  77 77 77 11 11 11 11 11  |wvwvvwwwwww.....|
00007ee0  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007f10  11 11 11 11 11 11 11 11  11 11 00 00 74 77 77 77  |............twww|
00007f20  77 77 77 77 77 77 77 77  77 77 77 77 77 77 77 77  |wwwwwwwwwwwwwwww|
00007f30  77 77 77 77 77 77 77 77  77 77 67 11 11 11 11 11  |wwwwwwwwwwg.....|
00007f40  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007f70  11 11 11 11 11 11 11 11  11 11 00 00 61 77 77 77  |............awww|
00007f80  77 77 77 77 77 77 77 77  77 77 77 77 77 77 77 77  |wwwwwwwwwwwwwwww|
00007f90  77 77 77 77 77 77 77 77  77 77 26 11 11 11 11 11  |wwwwwwwwww&.....|
00007fa0  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00007fd0  11 11 11 11 11 11 11 11  11 11 00 00 11 64 76 76  |.............dvv|
00007fe0  76 76 76 76 76 76 76 76  76 76 76 76 76 76 76 76  |vvvvvvvvvvvvvvvv|
00007ff0  76 76 76 76 76 76 76 76  76 56 11 11 11 11 11 11  |vvvvvvvvvV......|
00008000  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00008030  11 11 11 11 11 11 11 11  11 11 00 00 11 11 11 11  |................|
00008040  11 11 11 11 11 11 11 11  11 11 11 11 11 11 11 11  |................|
*
00008090  11 11 11 11 11 11 11 11  11 11 00 00 00 ff ff ff  |................|
000080a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000080b0  ff ff ff ff ff ff ff ff  ff ff 00 00 00 00 00 00  |................|
000080c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000080f0  00 00 00 00 00 00 00 00  00 00 ff ff f0 ff ff ff  |................|
00008100  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008110  ff ff ff ff ff ff ff ff  ff ff ff 00 00 00 00 00  |................|
00008120  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00008150  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008160  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008170  ff ff ff ff ff ff ff ff  ff ff ff 00 00 00 00 00  |................|
00008180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000081b0  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
000081c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000081d0  ff ff ff ff ff ff ff ff  ff ff ff 00 00 00 00 00  |................|
000081e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00008210  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008220  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008230  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
00008240  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00008270  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008280  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008290  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
000082a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000082d0  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
000082e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000082f0  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 f0 00  |................|
00008300  00 00 00 00 00 00 00 0f  00 0f 0f ff 00 00 00 00  |................|
00008310  00 00 00 0f 0f f0 00 00  00 00 00 00 00 00 00 00  |................|
00008320  00 00 00 0f f0 0f 00 00  00 00 00 0f 0f 0f 00 00  |................|
00008330  00 f0 f0 00 00 00 00 ff  ff 00 ff ff ff ff ff ff  |................|
00008340  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008350  0f ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008360  00 00 ff ff ff ff ff ff  f0 ff ff ff 0f 00 00 00  |................|
00008370  00 0f ff ff ff ff 00 f0  ff ff ff ff ff ff 00 00  |................|
00008380  f0 ff ff ff ff ff 00 00  00 f0 ff ff ff ff f0 00  |................|
00008390  00 f0 ff ff 00 00 f0 ff  ff 00 ff ff ff ff ff ff  |................|
000083a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff 0f  |................|
*
000083c0  00 f0 ff ff ff 0f ff ff  00 ff ff ff 00 00 00 00  |................|
000083d0  f0 ff ff 0f 0f ff 0f 00  ff ff ff ff ff ff ff ff  |................|
000083e0  ff ff ff f0 ff ff 0f 00  f0 ff ff 0f 0f ff ff 00  |................|
000083f0  00 f0 ff ff 00 00 ff ff  ff 00 ff ff ff ff ff ff  |................|
00008400  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008410  ff ff ff ff ff ff ff ff  ff ff ff ff 00 ff ff 00  |................|
00008420  00 00 ff ff ff 00 00 ff  00 f0 ff 0f 00 00 00 00  |................|
00008430  f0 ff ff 00 00 f0 ff f0  ff ff ff ff ff f0 0f 00  |................|
00008440  ff ff ff 00 ff ff ff 00  f0 ff ff 0f 00 ff ff 0f  |................|
00008450  00 ff ff ff 00 00 ff ff  0f 00 ff ff ff ff ff ff  |................|
00008460  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008470  ff ff ff ff ff ff ff ff  ff ff ff ff 00 ff ff 0f  |................|
00008480  00 00 ff ff 0f f0 f0 f0  00 ff ff ff 00 00 00 00  |................|
00008490  f0 ff ff 00 00 f0 0f f0  ff 00 ff ff 0f 00 ff f0  |................|
000084a0  ff ff 0f 00 f0 ff ff 0f  ff ff ff 00 00 ff ff ff  |................|
000084b0  0f f0 ff ff 0f f0 ff ff  0f 00 ff ff ff ff ff ff  |................|
000084c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000084d0  ff ff ff ff ff ff ff ff  ff ff ff ff 00 ff ff 0f  |................|
000084e0  00 00 ff ff ff f0 0f 00  00 f0 ff ff 00 00 00 00  |................|
000084f0  f0 ff ff 0f 00 00 00 00  00 00 ff ff 0f 00 0f f0  |................|
00008500  ff ff 0f 00 ff ff ff 00  f0 ff ff 00 00 f0 ff ff  |................|
00008510  00 ff ff ff 0f ff ff ff  ff 00 ff ff ff ff ff ff  |................|
00008520  ff f0 ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008530  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008540  00 00 ff ff 0f ff ff 00  00 f0 ff ff 00 00 00 00  |................|
00008550  f0 ff ff ff ff 00 00 00  00 00 ff ff 0f 00 00 00  |................|
00008560  ff ff 00 00 f0 ff ff 00  ff ff ff 00 00 f0 ff ff  |................|
00008570  0f ff ff ff ff ff ff ff  ff 00 ff ff ff ff ff ff  |................|
00008580  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008590  ff ff ff ff ff ff ff ff  ff ff f0 ff ff ff ff ff  |................|
000085a0  0f 00 ff ff ff ff ff 0f  00 f0 ff ff 00 00 00 00  |................|
000085b0  00 ff ff ff ff 0f 00 00  00 00 ff ff 0f 00 00 f0  |................|
000085c0  ff ff 0f ff ff ff 00 00  ff ff 0f 00 00 f0 ff ff  |................|
000085d0  00 f0 0f ff ff ff ff ff  ff 00 ff ff ff ff ff ff  |................|
000085e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00008600  0f 00 f0 ff ff 0f ff 0f  00 f0 ff ff 00 00 00 00  |................|
00008610  00 f0 ff ff ff 0f 00 00  00 00 ff ff 00 00 00 f0  |................|
00008620  ff ff ff ff ff 0f 00 00  ff ff ff 00 00 f0 ff ff  |................|
00008630  0f ff f0 ff ff ff f0 ff  ff 0f ff ff ff ff ff ff  |................|
00008640  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008650  ff ff ff ff ff ff ff ff  ff ff ff ff f0 ff ff ff  |................|
00008660  00 00 f0 ff 0f 00 0f 00  00 ff ff ff 00 00 00 00  |................|
00008670  00 00 f0 ff ff ff 00 00  00 00 ff ff 0f 00 00 f0  |................|
00008680  ff ff ff ff ff 0f 00 00  ff ff 0f 00 00 f0 ff ff  |................|
00008690  00 f0 0f ff ff ff f0 ff  ff 0f ff ff ff ff ff ff  |................|
000086a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000086b0  ff ff ff ff ff ff ff ff  ff 0f ff 00 ff ff f0 ff  |................|
000086c0  0f 00 f0 ff 0f 00 0f 00  00 f0 ff ff 00 00 00 00  |................|
000086d0  00 00 00 ff ff ff ff 00  00 00 ff ff 0f 00 00 00  |................|
000086e0  ff ff 0f ff ff 00 00 00  f0 ff ff 00 00 ff ff ff  |................|
000086f0  00 ff 00 f0 ff 0f 00 ff  ff 00 ff ff ff ff ff ff  |................|
00008700  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008710  ff ff ff ff ff ff ff ff  ff ff ff 0f f0 0f f0 ff  |................|
00008720  ff 00 ff ff 0f 00 00 00  00 f0 ff ff 00 0f 0f 00  |................|
00008730  00 f0 ff f0 ff ff ff 00  00 00 ff ff 0f 00 00 f0  |................|
00008740  ff ff 0f ff ff 0f 00 00  ff ff ff 00 00 f0 ff ff  |................|
00008750  00 ff 0f f0 ff 0f 00 ff  ff 0f ff ff ff ff ff ff  |................|
00008760  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008770  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 f0 ff  |................|
00008780  0f 00 f0 ff 0f 00 00 00  0f ff ff ff 00 ff ff 0f  |................|
00008790  f0 ff ff 00 ff ff ff 0f  00 00 ff ff 0f 00 00 00  |................|
000087a0  ff ff 0f ff ff ff 00 00  ff ff 0f 00 00 ff ff ff  |................|
000087b0  f0 ff 00 00 f0 00 00 ff  ff 0f ff ff ff ff ff ff  |................|
000087c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000087d0  ff ff ff ff ff ff ff ff  ff f0 f0 0f 00 00 f0 ff  |................|
000087e0  0f 00 f0 ff 0f 00 00 f0  00 f0 ff 0f 00 ff ff 0f  |................|
000087f0  f0 ff 0f 00 f0 ff ff 00  00 00 ff ff 0f 00 00 00  |................|
00008800  ff ff 0f f0 ff ff 0f 00  00 ff ff 00 00 ff ff 0f  |................|
00008810  00 ff 00 00 00 00 00 ff  ff 0f ff ff ff ff ff ff  |................|
00008820  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008830  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 f0 ff  |................|
00008840  ff 00 ff ff ff 00 f0 ff  0f ff ff ff 00 f0 ff 0f  |................|
00008850  f0 ff 00 00 f0 ff ff 00  00 00 ff ff 0f 00 00 00  |................|
00008860  ff ff 00 00 ff ff ff 00  00 ff ff 0f 00 ff ff 0f  |................|
00008870  f0 ff 00 00 00 00 00 ff  ff 0f ff ff ff ff ff ff  |................|
00008880  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008890  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 f0 ff  |................|
000088a0  ff 00 ff ff ff f0 f0 ff  0f f0 ff ff 00 f0 ff ff  |................|
000088b0  00 ff ff f0 f0 ff 0f 00  00 f0 ff ff 0f 00 00 f0  |................|
000088c0  ff ff 0f 00 f0 ff ff 00  00 ff ff 0f 00 ff 0f 00  |................|
000088d0  f0 ff 00 00 00 00 f0 ff  ff ff ff ff ff ff ff ff  |................|
000088e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000088f0  ff ff ff ff ff ff ff ff  ff ff f0 0f 00 00 ff ff  |................|
00008900  ff 0f ff ff ff ff ff ff  00 ff ff ff 0f ff ff ff  |................|
00008910  00 ff ff ff ff ff 00 00  00 00 ff ff ff 00 00 00  |................|
00008920  ff ff ff 00 00 f0 ff 0f  00 f0 ff ff ff ff 0f 00  |................|
00008930  00 ff 0f 00 00 00 00 ff  ff 0f ff ff ff ff ff ff  |................|
00008940  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008950  ff ff ff ff ff ff ff ff  ff f0 f0 0f 00 00 ff ff  |................|
00008960  0f f0 ff ff ff ff ff ff  00 f0 ff ff ff ff ff 00  |................|
00008970  00 f0 00 ff ff 0f 00 00  00 f0 ff ff 0f 00 00 00  |................|
00008980  f0 ff ff 00 00 00 f0 0f  00 00 f0 f0 0f f0 00 00  |................|
00008990  f0 ff 00 00 00 00 00 ff  ff 00 ff ff ff ff ff ff  |................|
000089a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000089b0  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
000089c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000089d0  00 00 00 00 0f 00 00 00  00 00 00 00 00 00 00 00  |................|
000089e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000089f0  00 f0 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008a00  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008a10  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
00008a20  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00008a50  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008a60  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008a70  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
00008a80  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00008ab0  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008ac0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008ad0  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 f0 ff  |................|
00008ae0  ff 00 00 00 00 00 00 00  00 00 00 ff ff 00 ff 00  |................|
00008af0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00008b10  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008b20  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008b30  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 ff ff  |................|
00008b40  ff 0f 00 00 00 00 00 00  00 00 f0 ff ff 00 ff 00  |................|
00008b50  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00008b70  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008b80  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008b90  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 f0 ff 00  |................|
00008ba0  f0 ff 00 00 00 00 00 00  00 00 f0 ff 00 f0 ff 00  |................|
00008bb0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00008bd0  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008be0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008bf0  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 ff 0f 00  |................|
00008c00  f0 ff 00 00 00 00 00 00  00 00 ff 0f 00 f0 ff 00  |................|
00008c10  00 00 00 00 00 00 00 00  00 00 00 00 ff 0f 00 00  |................|
00008c20  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00008c30  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008c40  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008c50  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 ff 0f 00  |................|
00008c60  f0 ff 00 f0 ff ff ff 00  00 ff ff ff ff ff ff ff  |................|
00008c70  ff 0f 00 00 00 00 00 00  ff 00 00 ff ff ff ff ff  |................|
00008c80  f0 ff ff 0f 00 f0 ff ff  0f 00 00 00 00 00 00 00  |................|
00008c90  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008ca0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008cb0  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 ff 0f 00  |................|
00008cc0  00 00 00 ff ff ff ff 0f  00 ff ff ff ff ff ff ff  |................|
00008cd0  ff 0f 00 00 ff 00 00 f0  ff 00 ff ff ff ff ff ff  |................|
00008ce0  f0 ff ff 0f f0 ff ff ff  ff 00 00 00 00 00 00 00  |................|
00008cf0  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008d00  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008d10  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 f0 ff ff  |................|
00008d20  00 00 f0 ff 0f 00 f0 ff  00 00 ff 00 00 f0 0f 00  |................|
00008d30  ff 0f 00 f0 ff 00 00 f0  0f f0 ff 0f 00 f0 ff 0f  |................|
00008d40  f0 ff 0f 00 ff ff 00 00  ff 0f 00 00 00 00 00 00  |................|
00008d50  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008d60  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008d70  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 f0 ff ff  |................|
00008d80  0f 00 f0 0f 00 00 00 ff  00 00 ff 00 00 f0 0f 00  |................|
00008d90  f0 0f 00 f0 ff 00 00 ff  0f f0 ff 00 00 00 ff 0f  |................|
00008da0  f0 ff 00 00 ff 0f 00 00  f0 0f 00 00 00 00 00 00  |................|
00008db0  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008dc0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008dd0  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 f0 ff  |................|
00008de0  ff 00 ff 0f 00 00 00 ff  0f 00 ff 00 00 ff 0f 00  |................|
00008df0  f0 0f 00 ff ff 00 f0 ff  00 ff 0f 00 00 00 ff 0f  |................|
00008e00  ff 0f 00 f0 ff 00 00 00  f0 ff 00 00 00 00 00 00  |................|
00008e10  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008e20  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008e30  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
00008e40  ff 0f ff 00 00 00 00 ff  0f f0 ff 00 00 ff 0f 00  |................|
00008e50  f0 ff 00 ff ff 00 f0 0f  00 ff 00 00 00 00 ff 0f  |................|
00008e60  ff 0f 00 f0 ff ff ff ff  ff ff 00 00 00 00 00 00  |................|
00008e70  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008e80  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008e90  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
00008ea0  ff 0f ff 00 00 00 00 ff  0f f0 ff 00 00 ff 0f 00  |................|
00008eb0  f0 ff f0 ff ff 0f ff 0f  00 ff 00 00 00 00 ff 0f  |................|
00008ec0  ff 0f 00 f0 ff ff ff ff  ff 0f 00 00 00 00 00 00  |................|
00008ed0  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008ee0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008ef0  ff ff ff ff ff ff ff ff  ff ff ff 0f f0 0f 00 00  |................|
00008f00  ff 0f ff 00 00 00 00 ff  00 f0 0f 00 00 ff 00 00  |................|
00008f10  f0 ff f0 0f ff 0f ff 00  00 ff 00 00 00 00 ff 0f  |................|
00008f20  ff 0f 00 f0 0f 00 00 00  00 00 00 00 00 00 00 00  |................|
00008f30  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008f40  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008f50  ff ff ff ff ff ff ff ff  ff ff ff 0f ff 0f 00 00  |................|
00008f60  ff 0f ff 0f 00 00 f0 ff  00 f0 0f 00 00 ff 00 00  |................|
00008f70  00 ff ff 0f ff ff ff 00  00 ff 0f 00 00 f0 ff 0f  |................|
00008f80  ff 00 00 f0 0f 00 00 00  ff 0f 00 00 00 00 00 00  |................|
00008f90  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00008fa0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00008fb0  ff ff ff ff ff ff ff ff  ff ff ff 0f f0 ff 00 f0  |................|
00008fc0  ff 00 ff 0f 00 00 ff 0f  00 f0 0f 00 f0 ff 00 00  |................|
00008fd0  00 ff ff 00 f0 ff 0f 00  00 ff 0f 00 00 ff ff 00  |................|
00008fe0  ff 00 00 f0 ff 00 00 f0  ff 00 00 00 00 00 00 00  |................|
00008ff0  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00009000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00009010  ff ff ff ff ff ff ff ff  ff ff ff 0f f0 ff ff ff  |................|
00009020  ff 00 f0 ff ff ff ff 00  00 ff 0f 00 f0 ff 00 00  |................|
00009030  00 ff ff 00 f0 ff 0f 00  00 f0 ff ff ff ff ff 00  |................|
00009040  ff 00 00 00 ff ff ff ff  0f 00 00 00 00 00 00 00  |................|
00009050  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00009060  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00009070  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 ff ff ff  |................|
00009080  00 00 00 ff ff ff 0f 00  00 ff 0f 00 f0 ff 00 00  |................|
00009090  00 ff 0f 00 f0 ff 00 00  00 00 ff ff ff ff ff f0  |................|
000090a0  ff 00 00 00 ff ff ff ff  00 00 00 00 00 00 00 00  |................|
000090b0  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
000090c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000090d0  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
000090e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000090f0  00 00 00 00 00 00 00 00  00 00 00 f0 00 00 00 00  |................|
00009100  00 00 00 00 00 f0 ff 00  00 00 00 00 00 00 00 00  |................|
00009110  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00009120  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00009130  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
00009140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00009170  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00009180  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00009190  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
000091a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000091d0  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
000091e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000091f0  ff ff f0 ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
00009200  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00009230  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00009240  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00009250  ff ff f0 ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
00009260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00009290  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
000092a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000092b0  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
000092c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000092f0  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff f0  |................|
00009300  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00009310  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
00009320  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00009350  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff f0  |................|
00009360  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00009370  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
00009380  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000093b0  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
000093c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000093d0  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
000093e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00009410  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00009420  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00009430  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
00009440  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00009470  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00009480  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00009490  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
000094a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000094d0  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
000094e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000094f0  ff ff ff ff ff ff ff ff  ff ff ff 0f 00 00 00 00  |................|
00009500  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00009530  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
00009540  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00009550  ff ff ff ff ff ff ff ff  ff ff ff 00 00 00 00 00  |................|
00009560  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00009590  00 00 00 00 00 00 00 00  00 00 ff ff ff ff ff ff  |................|
000095a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000095b0  ff ff ff ff ff ff ff ff  ff ff ff 00 00 00 00 00  |................|
000095c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000095f0  00 00 00 00 00 00 00 00  00 00 ff ff f0 ff ff ff  |................|
00009600  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00009610  ff ff ff ff ff ff ff ff  ff ff ff 00 00 00 00 00  |................|
00009620  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00009650  00 00 00 00 00 00 00 00  00 00 ff ff 00 ff ff ff  |................|
00009660  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00009670  ff ff ff ff ff ff ff ff  ff ff 00 00 00 00 00 00  |................|
00009680  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000096b0  00 00 00 00 00 00 00 00  00 00 ff ff 00 00 00 00  |................|
000096c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00009710  00 00 00 00 00 00 00 00  00 00 ff ff 44 49 52 24  |............DIR$|
00009720  34 03 00 00 34 03 00 00  50 9a 00 00 46 ff ff ff  |4...4...P...F...|
00009730  80 75 dd 22 1d 01 00 00  13 00 00 00 00 00 00 00  |.u."............|
00009740  61 62 6f 72 74 00 00 00  70 9b 00 00 46 ff ff ff  |abort...p...F...|
00009750  05 2e de 22 e5 00 00 00  13 00 00 00 00 00 00 00  |..."............|
00009760  61 62 73 00 58 9c 00 00  46 ff ff ff 1f 93 bd 22  |abs.X...F......"|
00009770  cc 00 00 00 13 00 00 00  00 00 00 00 61 63 6f 73  |............acos|
00009780  00 00 00 00 24 9d 00 00  46 ff ff ff a6 6b e6 22  |....$...F....k."|
00009790  a7 00 00 00 13 00 00 00  00 00 00 00 41 44 52 00  |............ADR.|
000097a0  cc 9d 00 00 46 ff ff ff  c1 16 ee 22 dd 00 00 00  |....F......"....|
000097b0  13 00 00 00 00 00 00 00  61 6b 62 64 00 00 00 00  |........akbd....|
000097c0  ac 9e 00 00 46 ff ff ff  3b ee ee 22 51 01 00 00  |....F...;.."Q...|
000097d0  13 00 00 00 00 00 00 00  61 6c 61 72 6d 00 00 00  |........alarm...|
000097e0  00 a0 00 00 46 ff ff ff  f8 28 e6 22 a7 00 00 00  |....F....(."....|
000097f0  13 00 00 00 00 00 00 00  41 4c 49 47 4e 00 00 00  |........ALIGN...|
00009800  a8 a0 00 00 46 ff ff ff  68 98 b0 24 2b 01 00 00  |....F...h..$+...|
00009810  13 00 00 00 00 00 00 00  61 6c 6c 6f 63 70 72 6f  |........allocpro|
00009820  63 00 00 00 d4 a1 00 00  46 ff ff ff 8e 68 b5 22  |c.......F....h."|
00009830  9a 00 00 00 13 00 00 00  00 00 00 00 41 50 65 70  |............APep|
00009840  70 65 72 65 6c 6c 00 00  70 a2 00 00 46 ff ff ff  |perell..p...F...|
00009850  93 68 b5 22 ee 00 00 00  13 00 00 00 00 00 00 00  |.h."............|
00009860  41 50 65 72 65 69 72 61  00 00 00 00 60 a3 00 00  |APereira....`...|
00009870  46 ff ff ff 51 b5 e1 22  85 01 00 00 13 00 00 00  |F...Q.."........|
00009880  00 00 00 00 61 73 63 74  69 6d 65 00 e8 a4 00 00  |....asctime.....|
00009890  46 ff ff ff 93 a3 bd 22  c8 00 00 00 13 00 00 00  |F......"........|
000098a0  00 00 00 00 61 73 69 6e  00 00 00 00 b0 a5 00 00  |....asin........|
000098b0  46 ff ff ff 44 99 53 26  5a 02 00 00 13 00 00 00  |F...D.S&Z.......|
000098c0  00 00 00 00 41 73 6b 55  73 65 72 00 0c a8 00 00  |....AskUser.....|
000098d0  46 ff ff ff e5 68 b5 22  44 02 00 00 13 00 00 00  |F....h."D.......|
000098e0  00 00 00 00 61 73 73 65  72 74 00 00 50 aa 00 00  |....assert..P...|
000098f0  46 ff ff ff 23 9f bd 22  d5 00 00 00 13 00 00 00  |F...#.."........|
00009900  00 00 00 00 61 74 61 6e  00 00 00 00 28 ab 00 00  |....atan....(...|
00009910  46 ff ff ff a7 ab bd 22  81 01 00 00 13 00 00 00  |F......"........|
00009920  00 00 00 00 61 74 61 6e  32 00 00 00 ac ac 00 00  |....atan2.......|
00009930  46 ff ff ff 47 7f dd 22  26 01 00 00 13 00 00 00  |F...G.."&.......|
00009940  00 00 00 00 61 74 65 78  69 74 00 00 d4 ad 00 00  |....atexit......|
00009950  46 ff ff ff 4e d0 c4 22  50 01 00 00 13 00 00 00  |F...N.."P.......|
00009960  00 00 00 00 61 74 6f 66  00 00 00 00 24 af 00 00  |....atof....$...|
00009970  46 ff ff ff 3d db c4 22  51 01 00 00 13 00 00 00  |F...=.."Q.......|
00009980  00 00 00 00 61 74 6f 69  00 00 00 00 78 b0 00 00  |....atoi....x...|
00009990  46 ff ff ff fd e8 c4 22  54 01 00 00 13 00 00 00  |F......"T.......|
000099a0  00 00 00 00 61 74 6f 6c  00 00 00 00 cc b1 00 00  |....atol........|
000099b0  46 fd ff ff 83 5b 84 2f  8c 00 00 00 13 01 00 00  |F....[./........|
000099c0  00 00 00 00 61 6b 62 64  5f 00 00 00 70 b9 00 00  |....akbd_...p...|
000099d0  46 fd ff ff ea 5b 84 2f  5c 01 00 00 13 01 00 00  |F....[./\.......|
000099e0  00 00 00 00 61 6c 61 72  6d 5f 00 00 64 c5 00 00  |....alarm_..d...|
000099f0  46 fd ff ff c1 5c 84 2f  2c 00 00 00 13 01 00 00  |F....\./,.......|
00009a00  00 00 00 00 61 6e 73 69  5f 00 00 00 74 c7 00 00  |....ansi_...t...|
00009a10  46 fd ff ff e9 5c 84 2f  6c 00 00 00 13 01 00 00  |F....\./l.......|
00009a20  00 00 00 00 41 73 6b 55  73 65 72 5f 00 00 00 00  |....AskUser_....|
00009a30  44 cb 00 00 46 fd ff ff  31 5d 84 2f 4c 00 00 00  |D...F...1]./L...|
00009a40  13 01 00 00 00 00 00 00  41 53 53 45 52 54 5f 00  |........ASSERT_.|
00009a50  44 41 54 41 1d 01 00 00  61 62 6f 72 74 0a 53 79  |DATA....abort.Sy|
00009a60  6e 74 61 78 3a 09 76 6f  69 64 20 61 62 6f 72 74  |ntax:.void abort|
00009a70  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
00009a80  09 3c 73 74 64 6c 69 62  2e 68 3d 3e 73 74 64 6c  |.<stdlib.h=>stdl|
00009a90  69 62 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ib>..This functi|
00009aa0  6f 6e 20 74 65 72 6d 69  6e 61 74 65 73 20 74 68  |on terminates th|
00009ab0  65 20 70 72 6f 67 72 61  6d 20 61 62 6e 6f 72 6d  |e program abnorm|
00009ac0  61 6c 6c 79 2e 20 4f 70  65 6e 20 66 69 6c 65 73  |ally. Open files|
00009ad0  20 6d 61 79 20 6e 6f 74  20 62 65 20 63 6c 6f 73  | may not be clos|
00009ae0  65 64 20 61 6e 64 20 74  65 6d 70 6f 72 61 72 79  |ed and temporary|
00009af0  20 66 69 6c 65 73 20 6d  61 79 20 6e 6f 74 20 62  | files may not b|
00009b00  65 20 72 65 6d 6f 76 65  64 2e 20 54 68 69 73 20  |e removed. This |
00009b10  66 75 6e 63 74 69 6f 6e  20 73 68 6f 75 6c 64 20  |function should |
00009b20  6e 6f 74 20 72 65 61 6c  6c 79 20 62 65 20 75 73  |not really be us|
00009b30  65 64 20 69 66 20 79 6f  75 20 63 61 6e 20 68 65  |ed if you can he|
00009b40  6c 70 20 69 74 2e 20 54  68 65 20 66 75 6e 63 74  |lp it. The funct|
00009b50  69 6f 6e 20 63 61 6c 6c  73 20 3c 72 61 69 73 65  |ion calls <raise|
00009b60  3e 28 3c 53 49 47 41 42  52 54 3e 29 2e 00 00 00  |>(<SIGABRT>)....|
00009b70  44 41 54 41 e5 00 00 00  61 62 73 0a 53 79 6e 74  |DATA....abs.Synt|
00009b80  61 78 3a 09 69 6e 74 20  61 62 73 20 28 69 6e 74  |ax:.int abs (int|
00009b90  20 78 29 3b 0a 48 65 61  64 65 72 3a 09 3c 73 74  | x);.Header:.<st|
00009ba0  64 6c 69 62 2e 68 3d 3e  73 74 64 6c 69 62 3e 0a  |dlib.h=>stdlib>.|
00009bb0  0a 52 65 74 75 72 6e 73  3a 09 54 68 65 20 61 62  |.Returns:.The ab|
00009bc0  73 6f 6c 75 74 65 20 76  61 6c 75 65 20 6f 66 20  |solute value of |
00009bd0  2f 78 2f 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |/x/...This funct|
00009be0  69 6f 6e 20 72 65 74 75  72 6e 73 20 74 68 65 20  |ion returns the |
00009bf0  61 62 73 6f 6c 75 74 65  20 76 61 6c 75 65 20 6f  |absolute value o|
00009c00  66 20 2f 78 2f 20 69 65  20 74 68 65 20 6d 61 67  |f /x/ ie the mag|
00009c10  6e 69 74 75 64 65 20 6f  66 20 2f 78 2f 2e 20 54  |nitude of /x/. T|
00009c20  68 69 73 20 69 73 20 61  6c 77 61 79 73 20 70 6f  |his is always po|
00009c30  73 69 74 69 76 65 20 73  6f 20 69 66 20 78 20 3d  |sitive so if x =|
00009c40  20 2d 35 2c 20 74 68 65  6e 20 61 62 73 28 78 29  | -5, then abs(x)|
00009c50  20 3d 20 35 2e 00 00 00  44 41 54 41 cc 00 00 00  | = 5....DATA....|
00009c60  61 63 6f 73 0a 53 79 6e  74 61 78 3a 09 64 6f 75  |acos.Syntax:.dou|
00009c70  62 6c 65 20 61 63 6f 73  20 28 64 6f 75 62 6c 65  |ble acos (double|
00009c80  20 78 29 3b 0a 48 65 61  64 65 72 3a 09 3c 6d 61  | x);.Header:.<ma|
00009c90  74 68 2e 68 3d 3e 6d 61  74 68 3e 0a 0a 52 65 74  |th.h=>math>..Ret|
00009ca0  75 72 6e 73 3a 09 54 68  65 20 61 72 63 20 63 6f  |urns:.The arc co|
00009cb0  73 69 6e 65 20 6f 66 20  78 2c 20 69 6e 20 72 61  |sine of x, in ra|
00009cc0  64 69 61 6e 73 2e 0a 0a  54 68 69 73 20 66 75 6e  |dians...This fun|
00009cd0  63 74 69 6f 6e 20 63 61  6c 63 75 6c 61 74 65 73  |ction calculates|
00009ce0  20 74 68 65 20 70 72 69  6e 63 69 70 61 6c 20 76  | the principal v|
00009cf0  61 6c 75 65 20 6f 66 20  74 68 65 20 61 72 63 20  |alue of the arc |
00009d00  63 6f 73 69 6e 65 20 6f  66 20 78 2e 20 44 6f 6d  |cosine of x. Dom|
00009d10  61 69 6e 3a 20 2d 31 20  5c 3c 3d 20 78 20 5c 3c  |ain: -1 \<= x \<|
00009d20  3d 20 31 2e 44 41 54 41  a7 00 00 00 41 44 52 20  |= 1.DATA....ADR |
00009d30  3c 72 65 67 69 73 74 65  72 3e 2c 3c 6c 61 62 65  |<register>,<labe|
00009d40  6c 3e 0a 54 68 69 73 20  73 65 74 73 20 74 68 65  |l>.This sets the|
00009d50  20 67 69 76 65 6e 20 72  65 67 69 73 74 65 72 20  | given register |
00009d60  74 6f 20 63 6f 6e 74 61  69 6e 20 74 68 65 20 61  |to contain the a|
00009d70  64 64 72 65 73 73 20 6f  66 20 74 68 65 20 67 69  |ddress of the gi|
00009d80  76 65 6e 20 6c 61 62 65  6c 20 65 67 3a 0a 0a 23  |ven label eg:..#|
00009d90  66 43 6f 64 65 0a 20 20  20 20 20 20 20 41 44 52  |fCode.       ADR|
00009da0  20 20 20 52 30 2c 6c 61  62 65 6c 0a 20 20 20 20  |   R0,label.    |
00009db0  20 20 20 2e 2e 2e 0a 2e  6c 61 62 65 6c 20 44 43  |   .....label DC|
00009dc0  44 20 20 20 31 30 2c 35  2c 37 36 00 44 41 54 41  |D   10,5,76.DATA|
00009dd0  dd 00 00 00 61 6b 62 64  2e 68 0a 54 68 65 20 5c  |....akbd.h.The \|
00009de0  3c 61 6b 62 64 2e 68 3e  20 68 65 61 64 65 72 20  |<akbd.h> header |
00009df0  64 65 63 6c 61 72 65 73  20 74 68 72 65 65 20 66  |declares three f|
00009e00  75 6e 63 74 69 6f 6e 73  20 63 6f 6e 63 65 72 6e  |unctions concern|
00009e10  65 64 20 77 69 74 68 20  61 63 63 65 73 73 69 6e  |ed with accessin|
00009e20  67 20 74 68 65 20 6b 65  79 62 6f 61 72 64 2e 20  |g the keyboard. |
00009e30  49 74 20 61 6c 73 6f 20  64 65 66 69 6e 65 73 20  |It also defines |
00009e40  61 20 6e 75 6d 62 65 72  20 6f 66 20 3c 6d 61 63  |a number of <mac|
00009e50  72 6f 73 3d 3e 61 6b 62  64 5f 6d 61 63 72 6f 73  |ros=>akbd_macros|
00009e60  5f 3e 2e 0a 0a 23 54 61  62 6c 65 20 32 20 31 35  |_>...#Table 2 15|
00009e70  0a 20 3c 61 6b 62 64 5f  70 6f 6c 6c 63 74 6c 3e  |. <akbd_pollctl>|
00009e80  0a 20 3c 61 6b 62 64 5f  70 6f 6c 6c 6b 65 79 3e  |. <akbd_pollkey>|
00009e90  0a 20 3c 61 6b 62 64 5f  70 6f 6c 6c 73 68 3e 0a  |. <akbd_pollsh>.|
00009ea0  23 45 6e 64 54 61 62 6c  65 00 00 00 44 41 54 41  |#EndTable...DATA|
00009eb0  51 01 00 00 61 6c 61 72  6d 2e 68 0a 54 68 69 73  |Q...alarm.h.This|
00009ec0  20 68 65 61 64 65 72 20  66 69 6c 65 20 70 72 6f  | header file pro|
00009ed0  76 69 64 65 73 20 61 6c  61 72 6d 20 66 61 63 69  |vides alarm faci|
00009ee0  6c 69 74 69 65 73 20 66  6f 72 20 57 69 6d 70 20  |lities for Wimp |
00009ef0  70 72 6f 67 72 61 6d 73  2c 20 75 73 69 6e 67 20  |programs, using |
00009f00  6e 6f 6e 2d 62 75 73 79  20 77 61 69 74 69 6e 67  |non-busy waiting|
00009f10  2e 0a 0a 46 75 6e 63 74  69 6f 6e 73 3a 0a 0a 23  |...Functions:..#|
00009f20  49 6e 64 65 6e 74 20 38  0a 23 54 61 62 6c 65 20  |Indent 8.#Table |
00009f30  35 20 32 33 0a 3c 61 6c  61 72 6d 5f 69 6e 69 74  |5 23.<alarm_init|
00009f40  3e 0a 3c 61 6c 61 72 6d  5f 74 69 6d 65 6e 6f 77  |>.<alarm_timenow|
00009f50  3e 0a 3c 61 6c 61 72 6d  5f 74 69 6d 65 64 69 66  |>.<alarm_timedif|
00009f60  66 65 72 65 6e 63 65 3e  0a 3c 61 6c 61 72 6d 5f  |ference>.<alarm_|
00009f70  73 65 74 3e 0a 3c 61 6c  61 72 6d 5f 72 65 6d 6f  |set>.<alarm_remo|
00009f80  76 65 3e 0a 3c 61 6c 61  72 6d 5f 72 65 6d 6f 76  |ve>.<alarm_remov|
00009f90  65 61 6c 6c 3e 0a 3c 61  6c 61 72 6d 5f 61 6e 79  |eall>.<alarm_any|
00009fa0  70 65 6e 64 69 6e 67 3e  0a 3c 61 6c 61 72 6d 5f  |pending>.<alarm_|
00009fb0  6e 65 78 74 3e 0a 3c 61  6c 61 72 6d 5f 63 61 6c  |next>.<alarm_cal|
00009fc0  6c 6e 65 78 74 3e 0a 23  45 6e 64 54 61 62 6c 65  |lnext>.#EndTable|
00009fd0  0a 0a 23 49 6e 64 65 6e  74 20 30 0a 54 79 70 65  |..#Indent 0.Type|
00009fe0  73 3a 0a 0a 23 69 6e 64  65 6e 74 20 38 0a 3c 61  |s:..#indent 8.<a|
00009ff0  6c 61 72 6d 5f 68 61 6e  64 6c 65 72 3e 00 00 00  |larm_handler>...|
0000a000  44 41 54 41 a7 00 00 00  41 4c 49 47 4e 0a 54 68  |DATA....ALIGN.Th|
0000a010  69 73 20 61 6c 69 67 6e  73 20 74 68 65 20 61 73  |is aligns the as|
0000a020  73 65 6d 62 6c 79 20 70  6f 69 6e 74 65 72 20 74  |sembly pointer t|
0000a030  6f 20 61 20 77 6f 72 64  20 62 6f 75 6e 64 61 72  |o a word boundar|
0000a040  79 2e 20 55 73 65 20 69  74 20 61 66 74 65 72 20  |y. Use it after |
0000a050  64 61 74 61 20 62 6c 6f  63 6b 73 20 6f 66 20 69  |data blocks of i|
0000a060  72 72 65 67 75 6c 61 72  20 6c 65 6e 67 74 68 2e  |rregular length.|
0000a070  20 41 6c 6c 20 69 6e 73  74 72 75 63 74 69 6f 6e  | All instruction|
0000a080  73 20 6d 75 73 74 20 62  65 20 61 73 73 65 6d 62  |s must be assemb|
0000a090  6c 65 64 20 6f 6e 20 61  20 77 6f 72 64 20 62 6f  |led on a word bo|
0000a0a0  75 6e 64 61 72 79 2e 00  44 41 54 41 2b 01 00 00  |undary..DATA+...|
0000a0b0  61 6c 6c 6f 63 70 72 6f  63 0a 54 68 65 20 74 79  |allocproc.The ty|
0000a0c0  70 65 20 2a 61 6c 6c 6f  63 70 72 6f 63 2a 20 69  |pe *allocproc* i|
0000a0d0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 6b 65  |s defined in <ke|
0000a0e0  72 6e 65 6c 2e 68 3e 20  61 73 20 61 20 70 72 6f  |rnel.h> as a pro|
0000a0f0  63 65 64 75 72 65 20 77  68 69 63 68 20 63 61 6e  |cedure which can|
0000a100  20 62 65 20 75 73 65 64  20 74 6f 20 61 6c 6c 6f  | be used to allo|
0000a110  63 61 74 65 20 6d 65 6d  6f 72 79 2e 20 49 74 20  |cate memory. It |
0000a120  69 73 20 64 65 66 69 6e  65 64 20 61 73 3a 0a 0a  |is defined as:..|
0000a130  7b 66 43 6f 64 65 3b 61  6c 69 67 6e 20 63 65 6e  |{fCode;align cen|
0000a140  74 72 65 7d 76 6f 69 64  20 2a 61 6c 6c 6f 63 70  |tre}void *allocp|
0000a150  72 6f 63 20 28 75 6e 73  69 67 6e 65 64 29 3b 7b  |roc (unsigned);{|
0000a160  66 3b 61 6c 69 67 6e 7d  0a 0a 54 68 65 20 70 61  |f;align}..The pa|
0000a170  72 61 6d 65 74 65 72 20  70 61 73 73 65 64 20 69  |rameter passed i|
0000a180  73 20 74 68 65 20 73 69  7a 65 20 6f 66 20 73 70  |s the size of sp|
0000a190  61 63 65 20 74 6f 20 61  6c 6c 6f 63 61 74 65 2e  |ace to allocate.|
0000a1a0  20 49 74 20 73 68 6f 75  6c 64 20 72 65 74 75 72  | It should retur|
0000a1b0  6e 20 61 20 70 6f 69 6e  74 65 72 20 74 6f 20 74  |n a pointer to t|
0000a1c0  68 65 20 73 70 61 63 65  20 61 6c 6c 6f 63 61 74  |he space allocat|
0000a1d0  65 64 2e 00 44 41 54 41  9a 00 00 00 41 6e 64 72  |ed..DATA....Andr|
0000a1e0  65 77 20 50 65 70 70 65  72 65 6c 6c 0a 49 6e 74  |ew Pepperell.Int|
0000a1f0  65 72 6e 65 74 20 65 6d  61 69 6c 3a 20 61 70 31  |ernet email: ap1|
0000a200  30 30 31 34 40 63 61 6d  2e 61 63 2e 75 6b 0a 0a  |0014@cam.ac.uk..|
0000a210  53 6e 61 69 6c 2d 6d 61  69 6c 3a 0a 20 20 20 20  |Snail-mail:.    |
0000a220  32 30 20 4f 72 63 68 61  72 64 20 50 61 72 6b 0a  |20 Orchard Park.|
0000a230  20 20 20 20 47 72 69 6d  6f 6c 64 62 79 0a 20 20  |    Grimoldby.  |
0000a240  20 20 4c 4f 55 54 48 0a  20 20 20 20 4c 69 6e 63  |  LOUTH.    Linc|
0000a250  6f 6c 6e 73 68 69 72 65  0a 20 20 20 20 4c 4e 31  |olnshire.    LN1|
0000a260  31 20 38 54 4e 0a 20 20  20 20 55 2e 4b 2e 00 00  |1 8TN.    U.K...|
0000a270  44 41 54 41 ee 00 00 00  41 69 6e 73 6c 65 79 20  |DATA....Ainsley |
0000a280  50 65 72 65 69 72 61 0a  46 69 64 6f 4e 65 74 20  |Pereira.FidoNet |
0000a290  65 6d 61 69 6c 3a 20 32  3a 32 35 30 2f 32 31 39  |email: 2:250/219|
0000a2a0  2e 35 0a 49 6e 74 65 72  6e 65 74 20 65 6d 61 69  |.5.Internet emai|
0000a2b0  6c 3a 20 41 2e 50 65 72  65 69 72 61 40 63 73 2e  |l: A.Pereira@cs.|
0000a2c0  75 63 6c 2e 61 63 2e 75  6b 20 28 75 6e 69 29 0a  |ucl.ac.uk (uni).|
0000a2d0  20 20 20 20 20 20 20 20  20 20 20 20 6f 72 20 61  |            or a|
0000a2e0  6d 70 79 40 64 69 67 69  62 61 6e 6b 2e 64 65 6d  |mpy@digibank.dem|
0000a2f0  6f 6e 2e 63 6f 2e 75 6b  20 28 68 6f 6d 65 29 0a  |on.co.uk (home).|
0000a300  0a 53 6e 61 69 6c 2d 6d  61 69 6c 3a 0a 20 20 20  |.Snail-mail:.   |
0000a310  20 27 41 6c 20 53 69 72  61 74 27 0a 20 20 20 20  | 'Al Sirat'.    |
0000a320  43 68 61 70 65 6c 20 52  6f 61 64 0a 20 20 20 20  |Chapel Road.    |
0000a330  53 77 61 6e 6d 6f 72 65  0a 20 20 20 20 53 4f 55  |Swanmore.    SOU|
0000a340  54 48 41 4d 50 54 4f 4e  0a 20 20 20 20 53 4f 33  |THAMPTON.    SO3|
0000a350  32 20 32 51 41 0a 20 20  20 20 55 2e 4b 2e 00 00  |2 2QA.    U.K...|
0000a360  44 41 54 41 85 01 00 00  61 73 63 74 69 6d 65 0a  |DATA....asctime.|
0000a370  53 79 6e 74 61 78 3a 09  63 68 61 72 20 2a 61 73  |Syntax:.char *as|
0000a380  63 74 69 6d 65 20 28 3c  73 74 72 75 63 74 a0 74  |ctime (<struct.t|
0000a390  6d 3e 20 2a 74 70 74 72  29 3b 0a 48 65 61 64 65  |m> *tptr);.Heade|
0000a3a0  72 3a 09 3c 74 69 6d 65  2e 68 3d 3e 74 69 6d 65  |r:.<time.h=>time|
0000a3b0  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |_h>..Returns:.Po|
0000a3c0  69 6e 74 65 72 20 74 6f  20 74 68 65 20 74 69 6d  |inter to the tim|
0000a3d0  65 20 73 74 72 69 6e 67  2e 0a 0a 54 68 69 73 20  |e string...This |
0000a3e0  66 75 6e 63 74 69 6f 6e  20 63 6f 6e 76 65 72 74  |function convert|
0000a3f0  73 20 74 68 65 20 62 72  6f 6b 65 6e 2d 64 6f 77  |s the broken-dow|
0000a400  6e 20 74 69 6d 65 2c 0a  77 68 6f 73 65 20 73 74  |n time,.whose st|
0000a410  72 75 63 74 75 72 65 20  69 73 20 70 6f 69 6e 74  |ructure is point|
0000a420  65 64 20 74 6f 20 62 79  20 2f 74 70 74 72 2f 2c  |ed to by /tptr/,|
0000a430  20 69 6e 74 6f 20 61 0a  73 74 72 69 6e 67 20 69  | into a.string i|
0000a440  6e 20 74 68 65 20 66 6f  72 6d 3a 0a 20 20 20 20  |n the form:.    |
0000a450  20 94 64 64 64 20 6d 6d  6d 20 6e 6e 20 68 68 3a  | .ddd mmm nn hh:|
0000a460  6d 6d 3a 73 73 20 79 79  79 79 5c 5c 6e 5c 5c 30  |mm:ss yyyy\\n\\0|
0000a470  95 0a 0a 57 68 65 72 65  20 2f 64 64 64 2f 2c 20  |...Where /ddd/, |
0000a480  2f 6d 6d 6d 2f 2c 20 2f  6e 6e 2f 20 65 74 63 20  |/mmm/, /nn/ etc |
0000a490  61 72 65 20 74 68 65 20  64 61 79 2c 20 6d 6f 6e  |are the day, mon|
0000a4a0  74 68 2c 20 64 61 79 0a  6e 75 6d 62 65 72 20 65  |th, day.number e|
0000a4b0  74 63 2c 20 5c 5c 6e 20  69 73 20 61 20 6e 65 77  |tc, \\n is a new|
0000a4c0  6c 69 6e 65 2c 20 61 6e  64 20 5c 5c 30 20 69 73  |line, and \\0 is|
0000a4d0  20 74 68 65 20 6e 75 6c  6c 0a 74 65 72 6d 69 6e  | the null.termin|
0000a4e0  61 74 6f 72 2e 00 00 00  44 41 54 41 c8 00 00 00  |ator....DATA....|
0000a4f0  61 73 69 6e 0a 53 79 6e  74 61 78 3a 09 64 6f 75  |asin.Syntax:.dou|
0000a500  62 6c 65 20 61 73 69 6e  20 28 64 6f 75 62 6c 65  |ble asin (double|
0000a510  20 78 29 3b 0a 48 65 61  64 65 72 3a 09 3c 6d 61  | x);.Header:.<ma|
0000a520  74 68 2e 68 3d 3e 6d 61  74 68 3e 0a 0a 52 65 74  |th.h=>math>..Ret|
0000a530  75 72 6e 73 3a 09 54 68  65 20 61 72 63 20 73 69  |urns:.The arc si|
0000a540  6e 65 20 6f 66 20 78 2c  20 69 6e 20 72 61 64 69  |ne of x, in radi|
0000a550  61 6e 73 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |ans...This funct|
0000a560  69 6f 6e 20 63 61 6c 63  75 6c 61 74 65 73 20 74  |ion calculates t|
0000a570  68 65 20 70 72 69 6e 63  69 70 61 6c 20 76 61 6c  |he principal val|
0000a580  75 65 20 6f 66 20 74 68  65 20 61 72 63 20 73 69  |ue of the arc si|
0000a590  6e 65 20 6f 66 20 78 2e  20 44 6f 6d 61 69 6e 3a  |ne of x. Domain:|
0000a5a0  20 2d 31 20 5c 3c 3d 20  78 20 5c 3c 3d 20 31 2e  | -1 \<= x \<= 1.|
0000a5b0  44 41 54 41 5a 02 00 00  41 73 6b 55 73 65 72 0a  |DATAZ...AskUser.|
0000a5c0  53 79 6e 74 61 78 3a 09  3c 61 73 6b 75 73 65 72  |Syntax:.<askuser|
0000a5d0  5f 52 45 50 4c 59 3e 20  41 73 6b 55 73 65 72 20  |_REPLY> AskUser |
0000a5e0  28 63 68 61 72 20 2a 71  75 65 73 74 69 6f 6e 29  |(char *question)|
0000a5f0  3b 0a 48 65 61 64 65 72  3a 09 3c 54 69 6d 73 4c  |;.Header:.<TimsL|
0000a600  69 62 3a 41 73 6b 55 73  65 72 2e 68 3d 3e 41 73  |ib:AskUser.h=>As|
0000a610  6b 55 73 65 72 5f 68 3e  0a 0a 52 65 74 75 72 6e  |kUser_h>..Return|
0000a620  73 3a 09 54 68 65 20 75  73 65 72 27 73 20 72 65  |s:.The user's re|
0000a630  73 70 6f 6e 73 65 2e 0a  0a 54 68 69 73 20 66 75  |sponse...This fu|
0000a640  6e 63 74 69 6f 6e 20 6f  70 65 6e 73 20 61 20 64  |nction opens a d|
0000a650  69 61 6c 6f 67 75 65 20  62 6f 78 20 63 6f 6e 74  |ialogue box cont|
0000a660  61 69 6e 69 6e 67 20 74  68 65 20 71 75 65 73 74  |aining the quest|
0000a670  69 6f 6e 20 61 6e 64 20  74 77 6f 20 62 75 74 74  |ion and two butt|
0000a680  6f 6e 73 20 28 27 59 65  73 27 20 61 6e 64 20 27  |ons ('Yes' and '|
0000a690  4e 6f 27 29 2e 20 49 74  20 77 61 69 74 73 20 66  |No'). It waits f|
0000a6a0  6f 72 20 74 68 65 20 75  73 65 72 27 73 20 72 65  |or the user's re|
0000a6b0  70 6c 79 20 61 6e 64 20  72 65 74 75 72 6e 73 20  |ply and returns |
0000a6c0  69 74 2e 20 54 68 65 20  74 65 6d 70 6c 61 74 65  |it. The template|
0000a6d0  20 22 71 75 65 72 79 22  20 6d 75 73 74 20 62 65  | "query" must be|
0000a6e0  20 6c 6f 61 64 65 64 20  77 69 74 68 20 3c 54 65  | loaded with <Te|
0000a6f0  6d 70 6c 61 74 65 5f 4c  6f 61 64 46 69 6c 65 3e  |mplate_LoadFile>|
0000a700  20 61 6e 64 20 73 68 6f  75 6c 64 20 68 61 76 65  | and should have|
0000a710  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 69  | the following i|
0000a720  63 6f 6e 73 3a 0a 7b 74  61 62 7d 0a 30 20 2d 09  |cons:.{tab}.0 -.|
0000a730  27 59 65 73 27 20 69 63  6f 6e 2e 20 42 75 74 74  |'Yes' icon. Butt|
0000a740  6f 6e 20 74 79 70 65 20  27 43 6c 69 63 6b 27 2e  |on type 'Click'.|
0000a750  0a 31 20 2d 09 49 6e 64  69 72 65 63 74 65 64 20  |.1 -.Indirected |
0000a760  74 65 78 74 2e 20 53 75  69 74 61 62 6c 65 20 66  |text. Suitable f|
0000a770  6f 72 20 71 75 65 73 74  69 6f 6e 20 28 75 73 75  |or question (usu|
0000a780  61 6c 6c 79 20 77 69 6c  6c 20 68 61 76 65 20 76  |ally will have v|
0000a790  61 6c 69 64 61 74 69 6f  6e 20 22 4c 34 30 22 20  |alidation "L40" |
0000a7a0  73 6f 20 74 68 61 74 20  6d 75 6c 74 69 70 6c 65  |so that multiple|
0000a7b0  20 6c 69 6e 65 73 20 6f  66 20 74 65 78 74 20 63  | lines of text c|
0000a7c0  61 6e 20 62 65 20 64 69  73 70 6c 61 79 65 64 29  |an be displayed)|
0000a7d0  2e 20 42 75 74 74 6f 6e  20 74 79 70 65 20 27 4e  |. Button type 'N|
0000a7e0  65 76 65 72 27 2e 0a 32  20 2d 09 27 4e 6f 27 20  |ever'..2 -.'No' |
0000a7f0  69 63 6f 6e 2e 20 42 75  74 74 6f 6e 20 74 79 70  |icon. Button typ|
0000a800  65 20 27 43 6c 69 63 6b  27 2e 00 00 44 41 54 41  |e 'Click'...DATA|
0000a810  44 02 00 00 61 73 73 65  72 74 2e 68 0a 54 68 65  |D...assert.h.The|
0000a820  20 5c 3c 61 73 73 65 72  74 2e 68 5c 3e 20 68 65  | \<assert.h\> he|
0000a830  61 64 65 72 20 64 65 63  6c 61 72 65 73 20 6a 75  |ader declares ju|
0000a840  73 74 20 6f 6e 65 0a 66  75 6e 63 74 69 6f 6e 2c  |st one.function,|
0000a850  20 61 73 20 66 6f 6c 6c  6f 77 73 3a 0a 0a 53 79  | as follows:..Sy|
0000a860  6e 74 61 78 3a 20 20 76  6f 69 64 20 61 73 73 65  |ntax:  void asse|
0000a870  72 74 20 28 69 6e 74 20  65 78 70 29 3b 0a 48 65  |rt (int exp);.He|
0000a880  61 64 65 72 3a 20 20 61  73 73 65 72 74 2e 68 0a  |ader:  assert.h.|
0000a890  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
0000a8a0  68 65 63 6b 73 20 74 68  65 20 76 61 6c 75 65 20  |hecks the value |
0000a8b0  6f 66 20 65 78 70 2e 20  49 66 20 69 74 20 69 73  |of exp. If it is|
0000a8c0  0a 7a 65 72 6f 20 28 69  65 20 66 61 6c 73 65 29  |.zero (ie false)|
0000a8d0  20 74 68 65 6e 20 74 68  65 20 70 72 6f 67 72 61  | then the progra|
0000a8e0  6d 20 61 62 6f 72 74 73  0a 69 6e 73 74 61 6e 74  |m aborts.instant|
0000a8f0  6c 79 20 77 69 74 68 20  61 20 6d 65 73 73 61 67  |ly with a messag|
0000a900  65 20 67 69 76 69 6e 67  20 22 65 78 70 22 20 61  |e giving "exp" a|
0000a910  6e 64 20 74 68 65 0a 63  75 72 72 65 6e 74 20 66  |nd the.current f|
0000a920  69 6c 65 20 61 6e 64 20  6c 69 6e 65 20 77 69 74  |ile and line wit|
0000a930  68 69 6e 20 74 68 61 74  20 66 69 6c 65 2e 20 49  |hin that file. I|
0000a940  74 0a 77 6f 75 6c 64 20  6e 6f 72 6d 61 6c 6c 79  |t.would normally|
0000a950  20 62 65 20 75 73 65 64  20 77 69 74 68 20 61 20  | be used with a |
0000a960  63 6f 6e 64 69 74 69 6f  6e 20 61 73 20 65 78 70  |condition as exp|
0000a970  2c 0a 66 6f 72 20 65 78  61 6d 70 6c 65 3a 0a 20  |,.for example:. |
0000a980  20 20 20 61 73 73 65 72  74 28 61 3d 3d 62 29 3b  |   assert(a==b);|
0000a990  0a 77 6f 75 6c 64 20 61  62 6f 72 74 20 69 66 20  |.would abort if |
0000a9a0  61 20 64 69 64 20 6e 6f  74 20 65 71 75 61 6c 20  |a did not equal |
0000a9b0  62 2e 0a 0a 54 68 65 20  61 73 73 65 72 74 20 66  |b...The assert f|
0000a9c0  75 6e 63 74 69 6f 6e 20  63 61 6e 20 62 65 20 64  |unction can be d|
0000a9d0  69 73 61 62 6c 65 64 20  62 79 0a 69 6e 63 6c 75  |isabled by.inclu|
0000a9e0  64 69 6e 67 20 74 68 65  20 66 6f 6c 6c 6f 77 69  |ding the followi|
0000a9f0  6e 67 20 6c 69 6e 65 20  69 6e 20 74 68 65 20 70  |ng line in the p|
0000aa00  72 6f 67 72 61 6d 0a 42  45 46 4f 52 45 20 79 6f  |rogram.BEFORE yo|
0000aa10  75 20 3c 23 69 6e 63 6c  75 64 65 3d 3e 69 6e 63  |u <#include=>inc|
0000aa20  6c 75 64 65 3e 20 5c 3c  61 73 73 65 72 74 2e 68  |lude> \<assert.h|
0000aa30  5c 3e 2e 0a 20 20 20 20  3c 23 64 65 66 69 6e 65  |\>..    <#define|
0000aa40  3d 3e 64 65 66 69 6e 65  3e 20 4e 44 45 42 55 47  |=>define> NDEBUG|
0000aa50  44 41 54 41 d5 00 00 00  61 74 61 6e 0a 53 79 6e  |DATA....atan.Syn|
0000aa60  74 61 78 3a 09 64 6f 75  62 6c 65 20 61 74 61 6e  |tax:.double atan|
0000aa70  20 28 64 6f 75 62 6c 65  20 78 29 3b 0a 48 65 61  | (double x);.Hea|
0000aa80  64 65 72 3a 09 3c 6d 61  74 68 2e 68 3d 3e 6d 61  |der:.<math.h=>ma|
0000aa90  74 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 54 68  |th>..Returns:.Th|
0000aaa0  65 20 61 72 63 20 74 61  6e 67 65 6e 74 20 6f 66  |e arc tangent of|
0000aab0  20 78 2c 20 69 6e 20 72  61 64 69 61 6e 73 2e 0a  | x, in radians..|
0000aac0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
0000aad0  61 6c 63 75 6c 61 74 65  73 20 74 68 65 20 70 72  |alculates the pr|
0000aae0  69 6e 63 69 70 61 6c 20  76 61 6c 75 65 20 6f 66  |incipal value of|
0000aaf0  20 74 68 65 20 61 72 63  20 74 61 6e 67 65 6e 74  | the arc tangent|
0000ab00  20 6f 66 20 78 2e 20 53  65 65 20 61 6c 73 6f 20  | of x. See also |
0000ab10  74 68 65 20 66 75 6e 63  74 69 6f 6e 20 3c 61 74  |the function <at|
0000ab20  61 6e 32 3e 2e 00 00 00  44 41 54 41 81 01 00 00  |an2>....DATA....|
0000ab30  61 74 61 6e 32 0a 53 79  6e 74 61 78 3a 09 64 6f  |atan2.Syntax:.do|
0000ab40  75 62 6c 65 20 61 74 61  6e 32 20 28 64 6f 75 62  |uble atan2 (doub|
0000ab50  6c 65 20 78 2c 20 64 6f  75 62 6c 65 20 79 29 3b  |le x, double y);|
0000ab60  0a 48 65 61 64 65 72 3a  09 3c 6d 61 74 68 2e 68  |.Header:.<math.h|
0000ab70  3d 3e 6d 61 74 68 3e 0a  0a 52 65 74 75 72 6e 73  |=>math>..Returns|
0000ab80  3a 09 54 68 65 20 61 72  63 20 74 61 6e 67 65 6e  |:.The arc tangen|
0000ab90  74 20 6f 66 20 28 78 2f  79 29 2c 20 69 6e 20 72  |t of (x/y), in r|
0000aba0  61 64 69 61 6e 73 2e 0a  0a 54 68 69 73 20 66 75  |adians...This fu|
0000abb0  6e 63 74 69 6f 6e 20 63  61 6c 63 75 6c 61 74 65  |nction calculate|
0000abc0  73 20 74 68 65 20 70 72  69 6e 63 69 70 61 6c 20  |s the principal |
0000abd0  76 61 6c 75 65 20 6f 66  20 74 68 65 20 61 72 63  |value of the arc|
0000abe0  20 74 61 6e 67 65 6e 74  20 6f 66 20 28 78 2f 79  | tangent of (x/y|
0000abf0  29 2e 20 54 68 65 20 72  65 73 75 6c 74 20 69 73  |). The result is|
0000ac00  20 69 6e 20 74 68 65 20  72 61 6e 67 65 20 2d 70  | in the range -p|
0000ac10  69 20 74 6f 20 2b 70 69  2c 20 72 61 74 68 65 72  |i to +pi, rather|
0000ac20  20 74 68 61 6e 20 2d 28  70 69 2f 32 29 20 74 6f  | than -(pi/2) to|
0000ac30  20 2b 28 70 69 2f 32 29  20 61 73 20 77 69 74 68  | +(pi/2) as with|
0000ac40  20 3c 61 74 61 6e 3e 2c  20 73 69 6e 63 65 20 74  | <atan>, since t|
0000ac50  68 65 20 73 69 67 6e 73  20 6f 66 20 74 68 65 20  |he signs of the |
0000ac60  61 72 67 75 6d 65 6e 74  73 20 63 61 6e 20 62 65  |arguments can be|
0000ac70  20 75 73 65 64 20 74 6f  20 64 65 74 65 72 6d 69  | used to determi|
0000ac80  6e 65 20 74 68 65 20 71  75 61 64 72 61 6e 74 20  |ne the quadrant |
0000ac90  69 6e 20 77 68 69 63 68  20 74 68 65 20 72 65 73  |in which the res|
0000aca0  75 6c 74 20 6c 69 65 73  2e 00 00 00 44 41 54 41  |ult lies....DATA|
0000acb0  26 01 00 00 61 74 65 78  69 74 0a 53 79 6e 74 61  |&...atexit.Synta|
0000acc0  78 3a 09 69 6e 74 20 61  74 65 78 69 74 20 28 76  |x:.int atexit (v|
0000acd0  6f 69 64 20 28 2a 66 75  6e 63 29 28 76 6f 69 64  |oid (*func)(void|
0000ace0  29 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 74 64  |));.Header:.<std|
0000acf0  6c 69 62 2e 68 3d 3e 73  74 64 6c 69 62 3e 0a 0a  |lib.h=>stdlib>..|
0000ad00  52 65 74 75 72 6e 73 3a  09 5a 65 72 6f 20 69 66  |Returns:.Zero if|
0000ad10  20 74 68 65 20 66 75 6e  63 74 69 6f 6e 20 73 75  | the function su|
0000ad20  63 63 65 65 64 73 2e 0a  0a 54 68 69 73 20 66 75  |cceeds...This fu|
0000ad30  6e 63 74 69 6f 6e 20 72  65 67 69 73 74 65 72 73  |nction registers|
0000ad40  20 74 68 65 20 73 70 65  63 69 66 69 65 64 20 66  | the specified f|
0000ad50  75 6e 63 74 69 6f 6e 20  74 6f 20 62 65 20 63 61  |unction to be ca|
0000ad60  6c 6c 65 64 20 77 69 74  68 6f 75 74 20 61 72 67  |lled without arg|
0000ad70  75 6d 65 6e 74 73 20 77  68 65 6e 20 74 68 65 20  |uments when the |
0000ad80  70 72 6f 67 72 61 6d 20  74 65 72 6d 69 6e 61 74  |program terminat|
0000ad90  65 73 20 6e 6f 72 6d 61  6c 6c 79 2e 20 4d 6f 72  |es normally. Mor|
0000ada0  65 20 74 68 61 6e 20 6f  6e 65 20 66 75 6e 63 74  |e than one funct|
0000adb0  69 6f 6e 20 63 61 6e 20  62 65 20 72 65 67 69 73  |ion can be regis|
0000adc0  74 65 72 65 64 20 69 6e  20 74 68 69 73 20 77 61  |tered in this wa|
0000add0  79 2e 00 00 44 41 54 41  50 01 00 00 61 74 6f 66  |y...DATAP...atof|
0000ade0  0a 53 79 6e 74 61 78 3a  09 64 6f 75 62 6c 65 20  |.Syntax:.double |
0000adf0  61 74 6f 66 20 28 63 68  61 72 20 2a 73 74 72 29  |atof (char *str)|
0000ae00  3b 0a 48 65 61 64 65 72  3a 09 3c 73 74 64 6c 69  |;.Header:.<stdli|
0000ae10  62 2e 68 3d 3e 73 74 64  6c 69 62 3e 0a 0a 52 65  |b.h=>stdlib>..Re|
0000ae20  74 75 72 6e 73 3a 09 54  68 65 20 63 6f 6e 76 65  |turns:.The conve|
0000ae30  72 74 65 64 20 76 61 6c  75 65 2e 0a 0a 54 68 69  |rted value...Thi|
0000ae40  73 20 66 75 6e 63 74 69  6f 6e 20 63 6f 6e 76 65  |s function conve|
0000ae50  72 74 73 20 74 68 65 20  73 74 61 72 74 20 6f 66  |rts the start of|
0000ae60  20 74 68 65 20 73 74 72  69 6e 67 20 70 6f 69 6e  | the string poin|
0000ae70  74 65 64 20 74 6f 20 62  79 20 2f 73 74 72 2f 20  |ted to by /str/ |
0000ae80  74 6f 20 61 20 2f 64 6f  75 62 6c 65 2f 2e 20 49  |to a /double/. I|
0000ae90  66 20 74 68 65 20 73 74  72 69 6e 67 20 63 61 6e  |f the string can|
0000aea0  6e 6f 74 20 62 65 20 63  6f 6e 76 65 72 74 65 64  |not be converted|
0000aeb0  2c 20 74 68 65 20 62 65  68 61 76 69 6f 75 72 20  |, the behaviour |
0000aec0  69 73 20 75 6e 64 65 66  69 6e 65 64 2e 0a 0a 54  |is undefined...T|
0000aed0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 69 73 20  |his function is |
0000aee0  72 6f 75 67 68 6c 79 20  65 71 75 69 76 61 6c 65  |roughly equivale|
0000aef0  6e 74 20 74 6f 3a 0a 7b  61 6c 69 67 6e 20 63 65  |nt to:.{align ce|
0000af00  6e 74 72 65 7d 3c 73 74  72 74 6f 64 3e 20 28 73  |ntre}<strtod> (s|
0000af10  74 72 2c 20 28 63 68 61  72 20 2a 2a 29 20 4e 55  |tr, (char **) NU|
0000af20  4c 4c 29 3b 44 41 54 41  51 01 00 00 61 74 6f 69  |LL);DATAQ...atoi|
0000af30  0a 53 79 6e 74 61 78 3a  09 69 6e 74 20 61 74 6f  |.Syntax:.int ato|
0000af40  69 20 28 63 68 61 72 20  2a 73 74 72 29 3b 0a 48  |i (char *str);.H|
0000af50  65 61 64 65 72 3a 09 3c  73 74 64 6c 69 62 2e 68  |eader:.<stdlib.h|
0000af60  3d 3e 73 74 64 6c 69 62  3e 0a 0a 52 65 74 75 72  |=>stdlib>..Retur|
0000af70  6e 73 3a 09 54 68 65 20  63 6f 6e 76 65 72 74 65  |ns:.The converte|
0000af80  64 20 76 61 6c 75 65 2e  0a 0a 54 68 69 73 20 66  |d value...This f|
0000af90  75 6e 63 74 69 6f 6e 20  63 6f 6e 76 65 72 74 73  |unction converts|
0000afa0  20 74 68 65 20 73 74 61  72 74 20 6f 66 20 74 68  | the start of th|
0000afb0  65 20 73 74 72 69 6e 67  20 70 6f 69 6e 74 65 64  |e string pointed|
0000afc0  20 74 6f 20 62 79 20 2f  73 74 72 2f 20 74 6f 20  | to by /str/ to |
0000afd0  61 6e 20 2f 69 6e 74 2f  2e 20 49 66 20 74 68 65  |an /int/. If the|
0000afe0  20 73 74 72 69 6e 67 20  63 61 6e 6e 6f 74 20 62  | string cannot b|
0000aff0  65 20 63 6f 6e 76 65 72  74 65 64 2c 20 74 68 65  |e converted, the|
0000b000  20 62 65 68 61 76 69 6f  75 72 20 69 73 20 75 6e  | behaviour is un|
0000b010  64 65 66 69 6e 65 64 2e  0a 0a 54 68 69 73 20 66  |defined...This f|
0000b020  75 6e 63 74 69 6f 6e 20  69 73 20 72 6f 75 67 68  |unction is rough|
0000b030  6c 79 20 65 71 75 69 76  61 6c 65 6e 74 20 74 6f  |ly equivalent to|
0000b040  3a 0a 7b 61 6c 69 67 6e  20 63 65 6e 74 72 65 7d  |:.{align centre}|
0000b050  28 69 6e 74 29 20 3c 73  74 72 74 6f 6c 3e 20 28  |(int) <strtol> (|
0000b060  73 74 72 2c 20 28 63 68  61 72 20 2a 2a 29 20 4e  |str, (char **) N|
0000b070  55 4c 4c 29 3b 00 00 00  44 41 54 41 54 01 00 00  |ULL);...DATAT...|
0000b080  61 74 6f 6c 0a 53 79 6e  74 61 78 3a 09 6c 6f 6e  |atol.Syntax:.lon|
0000b090  67 20 69 6e 74 20 61 74  6f 6c 20 28 63 68 61 72  |g int atol (char|
0000b0a0  20 2a 73 74 72 29 3b 0a  48 65 61 64 65 72 3a 09  | *str);.Header:.|
0000b0b0  3c 73 74 64 6c 69 62 2e  68 3d 3e 73 74 64 6c 69  |<stdlib.h=>stdli|
0000b0c0  62 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 54 68 65  |b>..Returns:.The|
0000b0d0  20 63 6f 6e 76 65 72 74  65 64 20 76 61 6c 75 65  | converted value|
0000b0e0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
0000b0f0  20 63 6f 6e 76 65 72 74  73 20 74 68 65 20 73 74  | converts the st|
0000b100  61 72 74 20 6f 66 20 74  68 65 20 73 74 72 69 6e  |art of the strin|
0000b110  67 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 79 20  |g pointed to by |
0000b120  2f 73 74 72 2f 20 74 6f  20 61 20 2f 6c 6f 6e 67  |/str/ to a /long|
0000b130  20 69 6e 74 2f 2e 20 49  66 20 74 68 65 20 73 74  | int/. If the st|
0000b140  72 69 6e 67 20 63 61 6e  6e 6f 74 20 62 65 20 63  |ring cannot be c|
0000b150  6f 6e 76 65 72 74 65 64  2c 20 74 68 65 20 62 65  |onverted, the be|
0000b160  68 61 76 69 6f 75 72 20  69 73 20 75 6e 64 65 66  |haviour is undef|
0000b170  69 6e 65 64 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |ined...This func|
0000b180  74 69 6f 6e 20 69 73 20  72 6f 75 67 68 6c 79 20  |tion is roughly |
0000b190  65 71 75 69 76 61 6c 65  6e 74 20 74 6f 3a 0a 7b  |equivalent to:.{|
0000b1a0  61 6c 69 67 6e 20 63 65  6e 74 72 65 7d 3c 73 74  |align centre}<st|
0000b1b0  72 74 6f 6c 3e 20 28 73  74 72 2c 20 28 63 68 61  |rtol> (str, (cha|
0000b1c0  72 20 2a 2a 29 20 4e 55  4c 4c 29 3b 44 49 52 24  |r **) NULL);DIR$|
0000b1d0  8c 00 00 00 8c 00 00 00  58 b2 00 00 46 fd ff ff  |........X...F...|
0000b1e0  d3 58 ee 22 63 04 00 00  13 00 00 00 00 00 00 00  |.X."c...........|
0000b1f0  6d 61 63 72 6f 73 5f 00  bc b6 00 00 46 ff ff ff  |macros_.....F...|
0000b200  76 6c ee 22 e0 00 00 00  13 00 00 00 00 00 00 00  |vl."............|
0000b210  70 6f 6c 6c 63 74 6c 00  9c b7 00 00 46 ff ff ff  |pollctl.....F...|
0000b220  18 a3 ee 22 e1 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0000b230  70 6f 6c 6c 6b 65 79 00  80 b8 00 00 46 ff ff ff  |pollkey.....F...|
0000b240  fa aa ee 22 ed 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0000b250  70 6f 6c 6c 73 68 00 00  44 41 54 41 63 04 00 00  |pollsh..DATAc...|
0000b260  61 6b 62 64 2e 68 20 4d  61 63 72 6f 73 0a 54 68  |akbd.h Macros.Th|
0000b270  65 73 65 20 6d 61 63 72  6f 73 20 61 72 65 20 61  |ese macros are a|
0000b280  6c 6c 20 64 65 66 69 6e  65 64 20 73 6f 20 74 68  |ll defined so th|
0000b290  61 74 20 79 6f 75 20 63  61 6e 20 75 73 65 20 74  |at you can use t|
0000b2a0  68 65 6d 20 74 6f 20 72  65 66 65 72 20 74 6f 20  |hem to refer to |
0000b2b0  74 68 65 20 6b 65 79 20  6e 75 6d 62 65 72 73 20  |the key numbers |
0000b2c0  72 65 74 75 72 6e 65 64  20 62 79 20 74 68 65 20  |returned by the |
0000b2d0  57 69 6d 70 2e 20 54 68  65 79 20 61 72 65 20 61  |Wimp. They are a|
0000b2e0  73 20 66 6f 6c 6c 6f 77  73 3a 0a 0a 61 6b 62 64  |s follows:..akbd|
0000b2f0  5f 46 6e 09 42 61 73 65  20 76 61 6c 75 65 73 20  |_Fn.Base values |
0000b300  66 6f 72 20 66 75 6e 63  74 69 6f 6e 20 6b 65 79  |for function key|
0000b310  73 20 46 31 2d 46 39 20  69 65 20 46 31 20 72 65  |s F1-F9 ie F1 re|
0000b320  74 75 72 6e 73 20 28 61  6b 62 64 5f 46 6e 2b 31  |turns (akbd_Fn+1|
0000b330  29 0a 61 6b 62 64 5f 53  68 09 56 61 6c 75 65 20  |).akbd_Sh.Value |
0000b340  74 6f 20 61 64 64 20 69  66 20 53 68 69 66 74 20  |to add if Shift |
0000b350  69 73 20 70 72 65 73 73  65 64 2e 20 69 65 20 53  |is pressed. ie S|
0000b360  68 69 66 74 2d 46 31 20  72 65 74 75 72 6e 73 20  |hift-F1 returns |
0000b370  28 61 6b 62 64 5f 46 6e  2b 61 6b 62 64 5f 53 68  |(akbd_Fn+akbd_Sh|
0000b380  2b 31 29 2e 0a 61 6b 62  64 5f 43 74 6c 09 56 61  |+1)..akbd_Ctl.Va|
0000b390  6c 75 65 20 74 6f 20 61  64 64 20 69 66 20 43 74  |lue to add if Ct|
0000b3a0  72 6c 20 69 73 20 70 72  65 73 73 65 64 20 69 65  |rl is pressed ie|
0000b3b0  20 43 74 72 6c 2d 53 68  69 66 74 2d 46 31 20 72  | Ctrl-Shift-F1 r|
0000b3c0  65 74 75 72 6e 73 20 28  61 6b 62 64 5f 46 6e 2b  |eturns (akbd_Fn+|
0000b3d0  61 6b 62 64 5f 53 68 2b  61 6b 62 64 5f 43 74 72  |akbd_Sh+akbd_Ctr|
0000b3e0  6c 2b 31 29 2e 0a 61 6b  62 64 5f 54 61 62 4b 09  |l+1)..akbd_TabK.|
0000b3f0  56 61 6c 75 65 20 72 65  74 75 72 6e 65 64 20 62  |Value returned b|
0000b400  79 20 54 61 62 20 6b 65  79 2e 0a 61 6b 62 64 5f  |y Tab key..akbd_|
0000b410  43 6f 70 79 4b 09 56 61  6c 75 65 20 72 65 74 75  |CopyK.Value retu|
0000b420  72 6e 65 64 20 62 79 20  43 6f 70 79 20 6b 65 79  |rned by Copy key|
0000b430  2e 0a 61 6b 62 64 5f 4c  65 66 74 4b 09 56 61 6c  |..akbd_LeftK.Val|
0000b440  75 65 20 72 65 74 75 72  6e 65 64 20 62 79 20 6c  |ue returned by l|
0000b450  65 66 74 20 61 72 72 6f  77 2e 0a 61 6b 62 64 5f  |eft arrow..akbd_|
0000b460  52 69 67 68 74 4b 09 56  61 6c 75 65 20 72 65 74  |RightK.Value ret|
0000b470  75 72 6e 65 64 20 62 79  20 72 69 67 68 74 20 61  |urned by right a|
0000b480  72 72 6f 77 2e 0a 61 6b  62 64 5f 44 6f 77 6e 4b  |rrow..akbd_DownK|
0000b490  09 56 61 6c 75 65 20 72  65 74 75 72 6e 65 64 20  |.Value returned |
0000b4a0  62 79 20 64 6f 77 6e 20  61 72 72 6f 77 2e 0a 61  |by down arrow..a|
0000b4b0  6b 62 64 5f 55 70 4b 09  56 61 6c 75 65 20 72 65  |kbd_UpK.Value re|
0000b4c0  74 75 72 6e 65 64 20 62  79 20 75 70 20 61 72 72  |turned by up arr|
0000b4d0  6f 77 2e 0a 61 6b 62 64  5f 46 6e 31 30 09 56 61  |ow..akbd_Fn10.Va|
0000b4e0  6c 75 65 20 72 65 74 75  72 6e 65 64 20 62 79 20  |lue returned by |
0000b4f0  46 31 30 2e 0a 61 6b 62  64 5f 46 6e 31 31 09 56  |F10..akbd_Fn11.V|
0000b500  61 6c 75 65 20 72 65 74  75 72 6e 65 64 20 62 79  |alue returned by|
0000b510  20 46 31 31 2e 0a 61 6b  62 64 5f 46 6e 31 32 09  | F11..akbd_Fn12.|
0000b520  56 61 6c 75 65 20 72 65  74 75 72 6e 65 64 20 62  |Value returned b|
0000b530  79 20 46 31 32 2e 0a 61  6b 62 64 5f 49 6e 73 65  |y F12..akbd_Inse|
0000b540  72 74 4b 09 56 61 6c 75  65 20 72 65 74 75 72 6e  |rtK.Value return|
0000b550  65 64 20 62 79 20 49 6e  73 65 72 74 2e 0a 61 6b  |ed by Insert..ak|
0000b560  62 64 5f 50 72 69 6e 74  4b 09 56 61 6c 75 65 20  |bd_PrintK.Value |
0000b570  72 65 74 75 72 6e 65 64  20 62 79 20 50 72 69 6e  |returned by Prin|
0000b580  74 2e 0a 61 6b 62 64 5f  50 61 67 65 55 70 4b 09  |t..akbd_PageUpK.|
0000b590  56 61 6c 75 65 20 72 65  74 75 72 6e 65 64 20 62  |Value returned b|
0000b5a0  79 20 50 61 67 65 55 70  2e 0a 61 6b 62 64 5f 50  |y PageUp..akbd_P|
0000b5b0  61 67 65 44 6f 77 6e 4b  09 56 61 6c 75 65 20 72  |ageDownK.Value r|
0000b5c0  65 74 75 72 6e 65 64 20  62 79 20 50 61 67 65 44  |eturned by PageD|
0000b5d0  6f 77 6e 2e 0a 0a 54 68  65 20 6d 6f 64 69 66 69  |own...The modifi|
0000b5e0  65 72 73 20 7b 2f 7d 61  6b 62 64 5f 53 68 7b 2f  |ers {/}akbd_Sh{/|
0000b5f0  7d 20 61 6e 64 20 7b 2f  7d 61 6b 62 64 5f 43 74  |} and {/}akbd_Ct|
0000b600  6c 7b 2f 7d 20 63 61 6e  20 62 65 20 75 73 65 64  |l{/} can be used|
0000b610  20 69 64 65 6e 74 69 63  61 6c 6c 79 20 77 69 74  | identically wit|
0000b620  68 20 61 6c 6c 20 65 78  63 65 70 74 20 50 61 67  |h all except Pag|
0000b630  65 55 70 20 61 6e 64 20  50 61 67 65 44 6f 77 6e  |eUp and PageDown|
0000b640  2e 20 54 68 65 73 65 20  72 65 74 75 72 6e 20 74  |. These return t|
0000b650  68 65 20 73 61 6d 65 20  76 61 6c 75 65 73 20 61  |he same values a|
0000b660  73 20 74 68 65 20 75 70  20 61 6e 64 20 64 6f 77  |s the up and dow|
0000b670  6e 20 61 72 72 6f 77 73  2c 20 65 78 63 65 70 74  |n arrows, except|
0000b680  20 74 68 65 20 53 68 69  66 74 20 61 63 74 69 6f  | the Shift actio|
0000b690  6e 20 69 73 20 72 65 76  65 72 73 65 64 20 69 65  |n is reversed ie|
0000b6a0  20 53 68 69 66 74 2d 50  61 67 65 44 6f 77 6e 3d  | Shift-PageDown=|
0000b6b0  44 6f 77 6e 20 61 72 72  6f 77 2e 00 44 41 54 41  |Down arrow..DATA|
0000b6c0  e0 00 00 00 61 6b 62 64  5f 70 6f 6c 6c 63 74 6c  |....akbd_pollctl|
0000b6d0  0a 53 79 6e 74 61 78 3a  09 69 6e 74 20 61 6b 62  |.Syntax:.int akb|
0000b6e0  64 5f 70 6f 6c 6c 63 74  6c 20 28 76 6f 69 64 29  |d_pollctl (void)|
0000b6f0  3b 0a 48 65 61 64 65 72  3a 09 3c 61 6b 62 64 2e  |;.Header:.<akbd.|
0000b700  68 3d 3e 61 6b 62 64 3e  0a 0a 52 65 74 75 72 6e  |h=>akbd>..Return|
0000b710  73 3a 09 31 20 69 66 20  43 6f 6e 74 72 6f 6c 20  |s:.1 if Control |
0000b720  69 73 20 68 65 6c 64 20  64 6f 77 6e 2c 20 65 6c  |is held down, el|
0000b730  73 65 20 30 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |se 0...This func|
0000b740  74 69 6f 6e 20 74 65 73  74 73 20 74 6f 20 73 65  |tion tests to se|
0000b750  65 20 69 66 20 74 68 65  20 43 6f 6e 74 72 6f 6c  |e if the Control|
0000b760  20 6b 65 79 20 69 73 20  62 65 69 6e 67 20 68 65  | key is being he|
0000b770  6c 64 20 64 6f 77 6e 2e  20 49 74 20 75 73 65 73  |ld down. It uses|
0000b780  20 3c 4f 53 5f 42 79 74  65 3d 3e 53 57 49 3a 4f  | <OS_Byte=>SWI:O|
0000b790  53 5f 42 79 74 65 3e 20  31 32 39 2e 44 41 54 41  |S_Byte> 129.DATA|
0000b7a0  e1 00 00 00 61 6b 62 64  5f 70 6f 6c 6c 6b 65 79  |....akbd_pollkey|
0000b7b0  0a 53 79 6e 74 61 78 3a  09 69 6e 74 20 61 6b 62  |.Syntax:.int akb|
0000b7c0  64 5f 70 6f 6c 6c 6b 65  79 20 28 69 6e 74 20 2a  |d_pollkey (int *|
0000b7d0  63 29 3b 0a 48 65 61 64  65 72 3a 09 3c 61 6b 62  |c);.Header:.<akb|
0000b7e0  64 2e 68 3d 3e 61 6b 62  64 3e 0a 0a 52 65 74 75  |d.h=>akbd>..Retu|
0000b7f0  72 6e 73 3a 09 31 20 69  66 20 75 73 65 72 20 68  |rns:.1 if user h|
0000b800  61 73 20 74 79 70 65 64  20 61 68 65 61 64 2e 0a  |as typed ahead..|
0000b810  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
0000b820  65 61 64 73 20 74 68 65  20 6b 65 79 62 6f 61 72  |eads the keyboar|
0000b830  64 20 61 6e 64 20 72 65  74 75 72 6e 73 20 74 68  |d and returns th|
0000b840  65 20 41 53 43 49 49 20  76 61 6c 75 65 20 6f 66  |e ASCII value of|
0000b850  20 74 68 65 20 6b 65 79  20 72 65 61 64 20 69 6e  | the key read in|
0000b860  20 74 68 65 20 2f 69 6e  74 2f 20 70 6f 69 6e 74  | the /int/ point|
0000b870  65 64 20 74 6f 20 62 79  20 2f 63 2f 2e 00 00 00  |ed to by /c/....|
0000b880  44 41 54 41 ed 00 00 00  61 6b 62 64 5f 70 6f 6c  |DATA....akbd_pol|
0000b890  6c 73 68 0a 53 79 6e 74  61 78 3a 09 69 6e 74 20  |lsh.Syntax:.int |
0000b8a0  61 6b 62 64 5f 70 6f 6c  6c 73 68 20 28 76 6f 69  |akbd_pollsh (voi|
0000b8b0  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 61 6b 62  |d);.Header:.<akb|
0000b8c0  64 2e 68 3d 3e 61 6b 62  64 3e 0a 0a 52 65 74 75  |d.h=>akbd>..Retu|
0000b8d0  72 6e 73 3a 09 31 20 69  66 20 53 68 69 66 74 20  |rns:.1 if Shift |
0000b8e0  69 73 20 68 65 6c 64 20  64 6f 77 6e 2c 20 65 6c  |is held down, el|
0000b8f0  73 65 20 30 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |se 0...This func|
0000b900  74 69 6f 6e 20 74 65 73  74 73 20 74 6f 20 73 65  |tion tests to se|
0000b910  65 20 69 66 20 74 68 65  20 53 68 69 66 74 20 6b  |e if the Shift k|
0000b920  65 79 20 69 73 20 62 65  69 6e 67 20 68 65 6c 64  |ey is being held|
0000b930  20 64 6f 77 6e 2e 20 49  74 20 75 73 65 73 20 74  | down. It uses t|
0000b940  68 65 20 53 57 49 20 3c  4f 53 5f 42 79 74 65 3d  |he SWI <OS_Byte=|
0000b950  3e 53 57 49 3a 4f 53 5f  42 79 74 65 3e 20 31 32  |>SWI:OS_Byte> 12|
0000b960  39 20 74 6f 20 64 6f 20  74 68 69 73 2e 00 00 00  |9 to do this....|
0000b970  44 49 52 24 5c 01 00 00  5c 01 00 00 cc ba 00 00  |DIR$\...\.......|
0000b980  46 ff ff ff 65 2d ef 22  d5 00 00 00 13 00 00 00  |F...e-."........|
0000b990  00 00 00 00 61 6e 79 70  65 6e 64 69 6e 67 00 00  |....anypending..|
0000b9a0  a4 bb 00 00 46 ff ff ff  65 40 ef 22 04 01 00 00  |....F...e@."....|
0000b9b0  13 00 00 00 00 00 00 00  63 61 6c 6c 6e 65 78 74  |........callnext|
0000b9c0  00 00 00 00 a8 bc 00 00  46 ff ff ff cc 51 ef 22  |........F....Q."|
0000b9d0  51 01 00 00 13 00 00 00  00 00 00 00 68 61 6e 64  |Q...........hand|
0000b9e0  6c 65 72 00 fc bd 00 00  46 ff ff ff f2 f3 ee 22  |ler.....F......"|
0000b9f0  bf 00 00 00 13 00 00 00  00 00 00 00 69 6e 69 74  |............init|
0000ba00  00 00 00 00 bc be 00 00  46 ff ff ff 70 39 ef 22  |........F...p9."|
0000ba10  e9 00 00 00 13 00 00 00  00 00 00 00 6e 65 78 74  |............next|
0000ba20  00 00 00 00 a8 bf 00 00  46 ff ff ff 08 26 ef 22  |........F....&."|
0000ba30  e6 00 00 00 13 00 00 00  00 00 00 00 72 65 6d 6f  |............remo|
0000ba40  76 65 00 00 90 c0 00 00  46 ff ff ff b8 29 ef 22  |ve......F....)."|
0000ba50  9c 00 00 00 13 00 00 00  00 00 00 00 72 65 6d 6f  |............remo|
0000ba60  76 65 61 6c 6c 00 00 00  2c c1 00 00 46 ff ff ff  |veall...,...F...|
0000ba70  8f 18 ef 22 4c 02 00 00  13 00 00 00 00 00 00 00  |..."L...........|
0000ba80  73 65 74 00 78 c3 00 00  46 ff ff ff 3b 02 ef 22  |set.x...F...;.."|
0000ba90  f6 00 00 00 13 00 00 00  00 00 00 00 74 69 6d 65  |............time|
0000baa0  64 69 66 66 65 72 65 6e  63 65 00 00 70 c4 00 00  |difference..p...|
0000bab0  46 ff ff ff 73 fa ee 22  f1 00 00 00 13 00 00 00  |F...s.."........|
0000bac0  00 00 00 00 74 69 6d 65  6e 6f 77 00 44 41 54 41  |....timenow.DATA|
0000bad0  d5 00 00 00 61 6c 61 72  6d 5f 61 6e 79 70 65 6e  |....alarm_anypen|
0000bae0  64 69 6e 67 0a 53 79 6e  74 61 78 3a 09 3c 42 4f  |ding.Syntax:.<BO|
0000baf0  4f 4c 3e 20 61 6c 61 72  6d 5f 61 6e 79 70 65 6e  |OL> alarm_anypen|
0000bb00  64 69 6e 67 20 28 76 6f  69 64 20 2a 68 61 6e 64  |ding (void *hand|
0000bb10  6c 65 29 3b 0a 48 65 61  64 65 72 3a 09 3c 61 6c  |le);.Header:.<al|
0000bb20  61 72 6d 2e 68 3d 3e 61  6c 61 72 6d 3e 0a 0a 52  |arm.h=>alarm>..R|
0000bb30  65 74 75 72 6e 73 3a 09  3c 54 52 55 45 3e 20 69  |eturns:.<TRUE> i|
0000bb40  66 20 74 68 65 20 61 72  65 20 70 65 6e 64 69 6e  |f the are pendin|
0000bb50  67 20 61 6c 61 72 6d 73  2e 0a 0a 54 68 69 73 20  |g alarms...This |
0000bb60  66 75 6e 63 74 69 6f 6e  20 72 65 74 75 72 6e 73  |function returns|
0000bb70  20 77 68 65 74 68 65 72  20 61 6e 20 61 6c 61 72  | whether an alar|
0000bb80  6d 20 69 73 20 70 65 6e  64 69 6e 67 20 77 69 74  |m is pending wit|
0000bb90  68 20 61 20 67 69 76 65  6e 20 68 61 6e 64 6c 65  |h a given handle|
0000bba0  2e 00 00 00 44 41 54 41  04 01 00 00 61 6c 61 72  |....DATA....alar|
0000bbb0  6d 5f 63 61 6c 6c 6e 65  78 74 0a 53 79 6e 74 61  |m_callnext.Synta|
0000bbc0  78 3a 09 76 6f 69 64 20  61 6c 61 72 6d 5f 63 61  |x:.void alarm_ca|
0000bbd0  6c 6c 6e 65 78 74 20 28  76 6f 69 64 29 3b 0a 48  |llnext (void);.H|
0000bbe0  65 61 64 65 72 3a 09 3c  61 6c 61 72 6d 2e 68 3d  |eader:.<alarm.h=|
0000bbf0  3e 61 6c 61 72 6d 3e 0a  0a 54 68 69 73 20 66 75  |>alarm>..This fu|
0000bc00  6e 63 74 69 6f 6e 20 63  61 6c 6c 73 20 74 68 65  |nction calls the|
0000bc10  20 6e 65 78 74 20 61 6c  61 72 6d 20 68 61 6e 64  | next alarm hand|
0000bc20  6c 65 72 20 66 75 6e 63  74 69 6f 6e 2e 20 54 68  |ler function. Th|
0000bc30  69 73 20 69 73 20 64 6f  6e 65 20 66 6f 72 20 79  |is is done for y|
0000bc40  6f 75 20 69 66 20 79 6f  75 20 75 73 65 20 3c 65  |ou if you use <e|
0000bc50  76 65 6e 74 5f 70 72 6f  63 65 73 73 3d 3e 65 76  |vent_process=>ev|
0000bc60  65 6e 74 5f 70 72 6f 63  65 73 73 5f 3e 20 74 6f  |ent_process_> to|
0000bc70  20 64 6f 20 79 6f 75 72  20 70 6f 6c 6c 69 6e 67  | do your polling|
0000bc80  20 28 6f 72 20 65 76 65  6e 20 69 66 20 79 6f 75  | (or even if you|
0000bc90  20 75 73 65 20 3c 77 69  6d 70 74 3e 20 66 75 6e  | use <wimpt> fun|
0000bca0  63 74 69 6f 6e 73 29 2e  44 41 54 41 51 01 00 00  |ctions).DATAQ...|
0000bcb0  61 6c 61 72 6d 5f 68 61  6e 64 6c 65 72 0a 54 68  |alarm_handler.Th|
0000bcc0  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
0000bcd0  65 64 20 69 6e 20 3c 61  6c 61 72 6d 2e 68 3d 3e  |ed in <alarm.h=>|
0000bce0  61 6c 61 72 6d 3e 2e 20  49 74 20 69 73 20 61 20  |alarm>. It is a |
0000bcf0  66 75 6e 63 74 69 6f 6e  20 77 68 69 63 68 20 69  |function which i|
0000bd00  73 20 63 61 6c 6c 65 64  20 77 68 65 6e 20 61 6e  |s called when an|
0000bd10  20 61 6c 61 72 6d 20 6f  63 63 75 72 73 2e 20 59  | alarm occurs. Y|
0000bd20  6f 75 72 20 66 75 6e 63  74 69 6f 6e 20 73 68 6f  |our function sho|
0000bd30  75 6c 64 20 68 61 76 65  20 74 68 65 20 64 65 66  |uld have the def|
0000bd40  69 6e 69 74 69 6f 6e 3a  0a 0a 7b 66 43 6f 64 65  |inition:..{fCode|
0000bd50  3b 61 6c 69 67 6e 20 63  65 6e 74 72 65 7d 76 6f  |;align centre}vo|
0000bd60  69 64 20 6d 79 66 75 6e  63 20 28 69 6e 74 20 63  |id myfunc (int c|
0000bd70  61 6c 6c 65 64 5f 61 74  2c 20 76 6f 69 64 20 2a  |alled_at, void *|
0000bd80  68 61 6e 64 6c 65 29 3b  7b 66 3b 61 6c 69 67 6e  |handle);{f;align|
0000bd90  7d 0a 0a 7b 2f 7d 63 61  6c 6c 65 64 5f 61 74 7b  |}..{/}called_at{|
0000bda0  2f 7d 20 69 73 20 74 68  65 20 74 69 6d 65 20 61  |/} is the time a|
0000bdb0  74 20 77 68 69 63 68 20  79 6f 75 20 61 72 65 20  |t which you are |
0000bdc0  63 61 6c 6c 65 64 2c 20  61 6e 64 20 2f 68 61 6e  |called, and /han|
0000bdd0  64 6c 65 2f 20 69 73 20  74 68 65 20 68 61 6e 64  |dle/ is the hand|
0000bde0  6c 65 20 70 61 73 73 65  64 20 74 6f 20 3c 61 6c  |le passed to <al|
0000bdf0  61 72 6d 5f 73 65 74 3e  2e 00 00 00 44 41 54 41  |arm_set>....DATA|
0000be00  bf 00 00 00 61 6c 61 72  6d 5f 69 6e 69 74 0a 53  |....alarm_init.S|
0000be10  79 6e 74 61 78 3a 09 76  6f 69 64 20 61 6c 61 72  |yntax:.void alar|
0000be20  6d 5f 69 6e 69 74 20 28  76 6f 69 64 29 3b 0a 48  |m_init (void);.H|
0000be30  65 61 64 65 72 3a 09 3c  61 6c 61 72 6d 2e 68 3d  |eader:.<alarm.h=|
0000be40  3e 61 6c 61 72 6d 3e 0a  0a 54 68 69 73 20 66 75  |>alarm>..This fu|
0000be50  6e 63 74 69 6f 6e 20 69  6e 69 74 69 61 6c 69 73  |nction initialis|
0000be60  65 73 20 74 68 65 20 61  6c 61 72 6d 20 73 79 73  |es the alarm sys|
0000be70  74 65 6d 2e 20 49 66 20  74 68 69 73 20 63 61 6c  |tem. If this cal|
0000be80  6c 20 69 73 20 6d 61 64  65 20 6d 6f 72 65 20 74  |l is made more t|
0000be90  68 61 6e 20 6f 6e 63 65  2c 20 61 6e 79 20 70 65  |han once, any pe|
0000bea0  6e 64 69 6e 67 20 61 6c  61 72 6d 73 20 61 72 65  |nding alarms are|
0000beb0  20 63 61 6e 63 65 6c 6c  65 64 2e 00 44 41 54 41  | cancelled..DATA|
0000bec0  e9 00 00 00 61 6c 61 72  6d 5f 6e 65 78 74 0a 53  |....alarm_next.S|
0000bed0  79 6e 74 61 78 3a 09 3c  42 4f 4f 4c 3e 20 61 6c  |yntax:.<BOOL> al|
0000bee0  61 72 6d 5f 6e 65 78 74  20 28 69 6e 74 20 2a 72  |arm_next (int *r|
0000bef0  65 73 75 6c 74 29 3b 0a  48 65 61 64 65 72 3a 09  |esult);.Header:.|
0000bf00  3c 61 6c 61 72 6d 2e 68  3d 3e 61 6c 61 72 6d 3e  |<alarm.h=>alarm>|
0000bf10  0a 0a 52 65 74 75 72 6e  73 3a 09 3c 54 52 55 45  |..Returns:.<TRUE|
0000bf20  3e 20 69 66 20 61 6c 61  72 6d 20 69 73 20 70 65  |> if alarm is pe|
0000bf30  6e 64 69 6e 67 2e 0a 0a  54 68 69 73 20 66 75 6e  |nding...This fun|
0000bf40  63 74 69 6f 6e 20 69 6e  66 6f 72 6d 73 20 79 6f  |ction informs yo|
0000bf50  75 20 77 68 65 74 68 65  72 20 61 6e 20 61 6c 61  |u whether an ala|
0000bf60  72 6d 20 69 73 20 70 65  6e 64 69 6e 67 20 61 6e  |rm is pending an|
0000bf70  64 2c 20 69 66 20 73 6f  2c 20 66 6f 72 20 77 68  |d, if so, for wh|
0000bf80  65 6e 20 69 74 20 69 73  20 28 72 65 74 75 72 6e  |en it is (return|
0000bf90  65 64 20 69 6e 20 7b 2f  7d 2a 72 65 73 75 6c 74  |ed in {/}*result|
0000bfa0  7b 2f 7d 29 2e 00 00 00  44 41 54 41 e6 00 00 00  |{/})....DATA....|
0000bfb0  61 6c 61 72 6d 5f 72 65  6d 6f 76 65 0a 53 79 6e  |alarm_remove.Syn|
0000bfc0  74 61 78 3a 09 76 6f 69  64 20 61 6c 61 72 6d 5f  |tax:.void alarm_|
0000bfd0  72 65 6d 6f 76 65 20 28  69 6e 74 20 61 74 2c 20  |remove (int at, |
0000bfe0  76 6f 69 64 20 2a 68 61  6e 64 6c 65 29 3b 0a 48  |void *handle);.H|
0000bff0  65 61 64 65 72 3a 09 3c  61 6c 61 72 6d 2e 68 3d  |eader:.<alarm.h=|
0000c000  3e 61 6c 61 72 6d 3e 0a  0a 54 68 69 73 20 66 75  |>alarm>..This fu|
0000c010  6e 63 74 69 6f 6e 20 72  65 6d 6f 76 65 73 20 61  |nction removes a|
0000c020  6e 20 61 6c 61 72 6d 20  77 68 69 63 68 20 77 61  |n alarm which wa|
0000c030  73 20 73 65 74 20 66 6f  72 20 74 69 6d 65 20 2f  |s set for time /|
0000c040  61 74 2f 20 77 69 74 68  20 74 68 65 20 67 69 76  |at/ with the giv|
0000c050  65 6e 20 68 61 6e 64 6c  65 2e 20 49 66 20 6e 6f  |en handle. If no|
0000c060  20 73 75 63 68 20 61 6c  61 72 6d 20 65 78 69 73  | such alarm exis|
0000c070  74 73 20 74 68 69 73 20  66 75 6e 63 74 69 6f 6e  |ts this function|
0000c080  20 64 6f 65 73 20 6e 6f  74 68 69 6e 67 2e 00 00  | does nothing...|
0000c090  44 41 54 41 9c 00 00 00  61 6c 61 72 6d 5f 72 65  |DATA....alarm_re|
0000c0a0  6d 6f 76 65 61 6c 6c 0a  53 79 6e 74 61 78 3a 09  |moveall.Syntax:.|
0000c0b0  76 6f 69 64 20 61 6c 61  72 6d 5f 72 65 6d 6f 76  |void alarm_remov|
0000c0c0  65 61 6c 6c 20 28 76 6f  69 64 20 2a 68 61 6e 64  |eall (void *hand|
0000c0d0  6c 65 29 3b 0a 48 65 61  64 65 72 3a 09 3c 61 6c  |le);.Header:.<al|
0000c0e0  61 72 6d 2e 68 3d 3e 61  6c 61 72 6d 3e 0a 0a 54  |arm.h=>alarm>..T|
0000c0f0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 6d  |his function rem|
0000c100  6f 76 65 73 20 61 6c 6c  20 61 6c 61 72 6d 73 20  |oves all alarms |
0000c110  77 68 69 63 68 20 68 61  76 65 20 74 68 65 20 67  |which have the g|
0000c120  69 76 65 6e 20 68 61 6e  64 6c 65 2e 44 41 54 41  |iven handle.DATA|
0000c130  4c 02 00 00 61 6c 61 72  6d 5f 73 65 74 0a 53 79  |L...alarm_set.Sy|
0000c140  6e 74 61 78 3a 09 76 6f  69 64 20 61 6c 61 72 6d  |ntax:.void alarm|
0000c150  5f 73 65 74 20 28 69 6e  74 20 61 74 2c 20 3c 61  |_set (int at, <a|
0000c160  6c 61 72 6d 5f 68 61 6e  64 6c 65 72 3e 20 70 72  |larm_handler> pr|
0000c170  6f 63 2c 20 76 6f 69 64  20 2a 68 61 6e 64 6c 65  |oc, void *handle|
0000c180  29 3b 0a 48 65 61 64 65  72 3a 09 3c 61 6c 61 72  |);.Header:.<alar|
0000c190  6d 2e 68 3d 3e 61 6c 61  72 6d 3e 0a 0a 54 68 69  |m.h=>alarm>..Thi|
0000c1a0  73 20 66 75 6e 63 74 69  6f 6e 20 73 65 74 73 20  |s function sets |
0000c1b0  61 6e 20 61 6c 61 72 6d  20 61 74 20 74 68 65 20  |an alarm at the |
0000c1c0  67 69 76 65 6e 20 74 69  6d 65 2e 20 2f 61 74 2f  |given time. /at/|
0000c1d0  20 69 73 20 74 68 65 20  6d 6f 6e 6f 74 6f 6e 69  | is the monotoni|
0000c1e0  63 20 74 69 6d 65 20 61  74 20 77 68 69 63 68 20  |c time at which |
0000c1f0  74 68 65 20 61 6c 61 72  6d 20 73 68 6f 75 6c 64  |the alarm should|
0000c200  20 6f 63 63 75 72 2e 20  2f 70 72 6f 63 2f 20 69  | occur. /proc/ i|
0000c210  73 20 79 6f 75 72 20 66  75 6e 63 74 69 6f 6e 20  |s your function |
0000c220  74 6f 20 62 65 20 63 61  6c 6c 65 64 20 61 74 20  |to be called at |
0000c230  61 6c 61 72 6d 20 74 69  6d 65 20 61 6e 64 20 2f  |alarm time and /|
0000c240  68 61 6e 64 6c 65 2f 20  69 73 20 70 61 73 73 65  |handle/ is passe|
0000c250  64 20 64 69 72 65 63 74  20 74 6f 20 74 68 61 74  |d direct to that|
0000c260  20 66 75 6e 63 74 69 6f  6e 2e 20 54 68 65 20 73  | function. The s|
0000c270  75 70 70 6c 69 65 64 20  66 75 6e 63 74 69 6f 6e  |upplied function|
0000c280  20 69 73 20 70 61 73 73  65 64 20 74 68 65 20 74  | is passed the t|
0000c290  69 6d 65 20 61 74 20 77  68 69 63 68 20 69 74 20  |ime at which it |
0000c2a0  77 61 73 20 63 61 6c 6c  65 64 2e 20 49 66 20 79  |was called. If y|
0000c2b0  6f 75 20 68 61 76 65 20  65 6e 61 62 6c 65 64 20  |ou have enabled |
0000c2c0  69 64 6c 65 20 65 76 65  6e 74 73 2c 20 74 68 65  |idle events, the|
0000c2d0  6e 20 74 68 65 73 65 20  61 72 65 20 73 74 69 6c  |n these are stil|
0000c2e0  6c 20 72 65 74 75 72 6e  65 64 20 74 6f 20 79 6f  |l returned to yo|
0000c2f0  75 3b 20 69 66 20 6e 6f  74 2c 20 52 49 53 43 5f  |u; if not, RISC_|
0000c300  4f 53 4c 69 62 20 75 73  65 73 20 69 64 6c 65 20  |OSLib uses idle |
0000c310  65 76 65 6e 74 73 20 69  6e 74 65 72 6e 61 6c 6c  |events internall|
0000c320  79 20 74 6f 20 69 6d 70  6c 65 6d 65 6e 74 20 61  |y to implement a|
0000c330  6c 61 72 6d 20 63 61 6c  6c 73 20 28 75 73 69 6e  |larm calls (usin|
0000c340  67 20 6e 6f 6e 2d 62 75  73 79 20 77 61 69 74 69  |g non-busy waiti|
0000c350  6e 67 20 76 69 61 20 3c  77 69 6d 70 5f 70 6f 6c  |ng via <wimp_pol|
0000c360  6c 69 64 6c 65 3d 3e 77  69 6d 70 5f 70 6f 6c 6c  |lidle=>wimp_poll|
0000c370  69 64 6c 65 5f 3e 29 2e  44 41 54 41 f6 00 00 00  |idle_>).DATA....|
0000c380  61 6c 61 72 6d 5f 74 69  6d 65 64 69 66 66 65 72  |alarm_timediffer|
0000c390  65 6e 63 65 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |ence.Syntax:.int|
0000c3a0  20 61 6c 61 72 6d 5f 74  69 6d 65 64 69 66 66 65  | alarm_timediffe|
0000c3b0  72 65 6e 63 65 20 28 69  6e 74 20 74 31 2c 20 69  |rence (int t1, i|
0000c3c0  6e 74 20 74 32 29 3b 0a  48 65 61 64 65 72 3a 09  |nt t2);.Header:.|
0000c3d0  3c 61 6c 61 72 6d 2e 68  3d 3e 61 6c 61 72 6d 3e  |<alarm.h=>alarm>|
0000c3e0  0a 0a 52 65 74 75 72 6e  73 3a 09 44 69 66 66 65  |..Returns:.Diffe|
0000c3f0  72 65 6e 63 65 20 62 65  74 77 65 65 6e 20 74 31  |rence between t1|
0000c400  20 61 6e 64 20 74 32 2e  0a 0a 54 68 69 73 20 66  | and t2...This f|
0000c410  75 6e 63 74 69 6f 6e 20  72 65 74 75 72 6e 73 20  |unction returns |
0000c420  74 68 65 20 64 69 66 66  65 72 65 6e 63 65 20 62  |the difference b|
0000c430  65 74 77 65 65 6e 20 74  77 6f 20 6d 6f 6e 6f 74  |etween two monot|
0000c440  6f 6e 69 63 20 74 69 6d  65 73 2e 20 49 74 20 64  |onic times. It d|
0000c450  65 61 6c 73 20 77 69 74  68 20 77 72 61 70 20 72  |eals with wrap r|
0000c460  6f 75 6e 64 20 6f 66 20  74 69 6d 65 72 2e 00 00  |ound of timer...|
0000c470  44 41 54 41 f1 00 00 00  61 6c 61 72 6d 5f 74 69  |DATA....alarm_ti|
0000c480  6d 65 6e 6f 77 0a 53 79  6e 74 61 78 3a 09 69 6e  |menow.Syntax:.in|
0000c490  74 20 61 6c 61 72 6d 5f  74 69 6d 65 6e 6f 77 20  |t alarm_timenow |
0000c4a0  28 76 6f 69 64 29 3b 0a  48 65 61 64 65 72 3a 09  |(void);.Header:.|
0000c4b0  3c 61 6c 61 72 6d 2e 68  3d 3e 61 6c 61 72 6d 3e  |<alarm.h=>alarm>|
0000c4c0  0a 0a 52 65 74 75 72 6e  73 3a 09 54 68 65 20 63  |..Returns:.The c|
0000c4d0  75 72 72 65 6e 74 20 6d  6f 6e 6f 74 6f 6e 69 63  |urrent monotonic|
0000c4e0  20 74 69 6d 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | time...This fun|
0000c4f0  63 74 69 6f 6e 20 72 65  61 64 73 20 74 68 65 20  |ction reads the |
0000c500  63 75 72 72 65 6e 74 20  6d 6f 6e 6f 74 6f 6e 69  |current monotoni|
0000c510  63 20 74 69 6d 65 2e 20  49 74 20 69 73 20 65 71  |c time. It is eq|
0000c520  75 69 76 61 6c 65 6e 74  20 74 6f 20 53 57 49 20  |uivalent to SWI |
0000c530  3c 4f 53 5f 52 65 61 64  4d 6f 6e 6f 74 6f 6e 69  |<OS_ReadMonotoni|
0000c540  63 54 69 6d 65 3d 3e 53  57 49 3a 4f 53 5f 52 65  |cTime=>SWI:OS_Re|
0000c550  61 64 4d 6f 6e 6f 74 6f  6e 69 63 54 69 6d 65 3e  |adMonotonicTime>|
0000c560  2e 00 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |....DIR$,...,...|
0000c570  90 c5 00 00 46 fd ff ff  3c 4b b8 22 e2 01 00 00  |....F...<K."....|
0000c580  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0000c590  44 41 54 41 e2 01 00 00  41 4e 53 49 20 46 75 6e  |DATA....ANSI Fun|
0000c5a0  63 74 69 6f 6e 73 0a 23  50 61 72 65 6e 74 20 24  |ctions.#Parent $|
0000c5b0  0a 41 4e 53 49 20 66 75  6e 63 74 69 6f 6e 73 20  |.ANSI functions |
0000c5c0  61 72 65 20 67 72 6f 75  70 65 64 20 69 6e 74 6f  |are grouped into|
0000c5d0  20 31 35 20 68 65 61 64  65 72 0a 66 69 6c 65 73  | 15 header.files|
0000c5e0  2e 20 55 6e 64 65 72 20  52 49 53 43 20 4f 53 20  |. Under RISC OS |
0000c5f0  74 68 65 79 20 61 72 65  20 70 72 6f 76 69 64 65  |they are provide|
0000c600  64 20 62 79 0a 74 68 65  20 3c 53 68 61 72 65 64  |d by.the <Shared|
0000c610  20 43 20 4c 69 62 72 61  72 79 3d 3e 53 57 49 3a  | C Library=>SWI:|
0000c620  53 68 61 72 65 64 43 4c  69 62 72 61 72 79 5f 2e  |SharedCLibrary_.|
0000c630  21 52 6f 6f 74 3e 20 6d  6f 64 75 6c 65 2e 0a 0a  |!Root> module...|
0000c640  23 49 6e 64 65 6e 74 20  38 0a 23 54 61 62 6c 65  |#Indent 8.#Table|
0000c650  20 38 20 31 35 0a 3c 61  73 73 65 72 74 2e 68 3d  | 8 15.<assert.h=|
0000c660  3e 61 73 73 65 72 74 3e  0a 3c 63 74 79 70 65 2e  |>assert>.<ctype.|
0000c670  68 3d 3e 63 74 79 70 65  3e 0a 3c 65 72 72 6e 6f  |h=>ctype>.<errno|
0000c680  2e 68 3d 3e 65 72 72 6e  6f 5f 68 3e 0a 3c 66 6c  |.h=>errno_h>.<fl|
0000c690  6f 61 74 2e 68 3d 3e 66  6c 6f 61 74 3e 0a 3c 6c  |oat.h=>float>.<l|
0000c6a0  69 6d 69 74 73 2e 68 3d  3e 6c 69 6d 69 74 73 3e  |imits.h=>limits>|
0000c6b0  0a 3c 6c 6f 63 61 6c 65  2e 68 3d 3e 6c 6f 63 61  |.<locale.h=>loca|
0000c6c0  6c 65 3e 0a 3c 6d 61 74  68 2e 68 3d 3e 6d 61 74  |le>.<math.h=>mat|
0000c6d0  68 3e 0a 3c 73 65 74 6a  6d 70 2e 68 3d 3e 73 65  |h>.<setjmp.h=>se|
0000c6e0  74 6a 6d 70 5f 68 3e 0a  3c 73 69 67 6e 61 6c 2e  |tjmp_h>.<signal.|
0000c6f0  68 3d 3e 73 69 67 6e 61  6c 3e 0a 3c 73 74 64 61  |h=>signal>.<stda|
0000c700  72 67 2e 68 3d 3e 73 74  64 61 72 67 3e 0a 3c 73  |rg.h=>stdarg>.<s|
0000c710  74 64 64 65 66 2e 68 3d  3e 73 74 64 64 65 66 3e  |tddef.h=>stddef>|
0000c720  0a 3c 73 74 64 69 6f 2e  68 3d 3e 73 74 64 69 6f  |.<stdio.h=>stdio|
0000c730  3e 0a 3c 73 74 64 6c 69  62 2e 68 3d 3e 73 74 64  |>.<stdlib.h=>std|
0000c740  6c 69 62 3e 0a 3c 73 74  72 69 6e 67 2e 68 3d 3e  |lib>.<string.h=>|
0000c750  73 74 72 69 6e 67 3e 0a  3c 74 69 6d 65 2e 68 3d  |string>.<time.h=|
0000c760  3e 74 69 6d 65 5f 68 3e  0a 23 45 6e 64 54 61 62  |>time_h>.#EndTab|
0000c770  6c 65 00 00 44 49 52 24  6c 00 00 00 6c 00 00 00  |le..DIR$l...l...|
0000c780  e0 c7 00 00 46 ff ff ff  06 a4 53 26 f9 00 00 00  |....F.....S&....|
0000c790  13 00 00 00 00 00 00 00  43 6c 6f 73 65 44 6f 77  |........CloseDow|
0000c7a0  6e 00 00 00 dc c8 00 00  46 fd ff ff c1 8c 53 26  |n.......F.....S&|
0000c7b0  f5 00 00 00 13 00 00 00  00 00 00 00 68 00 00 00  |............h...|
0000c7c0  d4 c9 00 00 46 ff ff ff  27 ac 53 26 6f 01 00 00  |....F...'.S&o...|
0000c7d0  13 00 00 00 00 00 00 00  52 65 70 6c 79 00 00 00  |........Reply...|
0000c7e0  44 41 54 41 f9 00 00 00  41 73 6b 55 73 65 72 5f  |DATA....AskUser_|
0000c7f0  43 6c 6f 73 65 44 6f 77  6e 0a 53 79 6e 74 61 78  |CloseDown.Syntax|
0000c800  3a 09 76 6f 69 64 20 41  73 6b 55 73 65 72 5f 43  |:.void AskUser_C|
0000c810  6c 6f 73 65 44 6f 77 6e  20 28 76 6f 69 64 29 3b  |loseDown (void);|
0000c820  0a 48 65 61 64 65 72 3a  09 3c 54 69 6d 73 4c 69  |.Header:.<TimsLi|
0000c830  62 3a 41 73 6b 55 73 65  72 2e 68 3d 3e 41 73 6b  |b:AskUser.h=>Ask|
0000c840  55 73 65 72 5f 68 3e 0a  0a 54 68 69 73 20 66 75  |User_h>..This fu|
0000c850  6e 63 74 69 6f 6e 20 64  65 61 6c 6c 6f 63 61 74  |nction deallocat|
0000c860  65 73 20 73 74 6f 72 61  67 65 20 63 6c 61 69 6d  |es storage claim|
0000c870  65 64 20 62 79 20 3c 41  73 6b 55 73 65 72 3e 28  |ed by <AskUser>(|
0000c880  29 2e 20 49 74 20 69 73  20 6f 6e 6c 79 20 6f 66  |). It is only of|
0000c890  20 75 73 65 20 69 6e 20  64 65 62 75 67 20 62 75  | use in debug bu|
0000c8a0  69 6c 64 73 20 73 6f 20  6f 6e 6c 79 20 65 78 69  |ilds so only exi|
0000c8b0  73 74 73 20 69 66 20 74  68 65 20 6d 61 63 72 6f  |sts if the macro|
0000c8c0  20 7b 2a 7d 5f 44 45 42  55 47 7b 2a 7d 20 69 73  | {*}_DEBUG{*} is|
0000c8d0  20 64 65 66 69 6e 65 64  2e 00 00 00 44 41 54 41  | defined....DATA|
0000c8e0  f5 00 00 00 54 69 6d 73  4c 69 62 3a 41 73 6b 55  |....TimsLib:AskU|
0000c8f0  73 65 72 2e 68 0a 54 68  69 73 20 68 65 61 64 65  |ser.h.This heade|
0000c900  72 20 70 72 6f 76 69 64  65 73 20 74 68 65 20 66  |r provides the f|
0000c910  61 63 69 6c 69 74 79 20  66 6f 72 20 67 65 74 74  |acility for gett|
0000c920  69 6e 67 20 61 20 59 65  73 2f 4e 6f 20 72 65 73  |ing a Yes/No res|
0000c930  70 6f 6e 73 65 20 74 6f  20 61 20 71 75 65 73 74  |ponse to a quest|
0000c940  69 6f 6e 20 66 72 6f 6d  20 74 68 65 20 75 73 65  |ion from the use|
0000c950  72 2e 0a 0a 46 75 6e 63  74 69 6f 6e 73 3a 0a 0a  |r...Functions:..|
0000c960  23 69 6e 64 65 6e 74 20  35 0a 23 74 61 62 6c 65  |#indent 5.#table|
0000c970  20 63 6f 6c 75 6d 6e 73  20 32 0a 3c 41 73 6b 55  | columns 2.<AskU|
0000c980  73 65 72 3e 0a 3c 41 73  6b 55 73 65 72 5f 43 6c  |ser>.<AskUser_Cl|
0000c990  6f 73 65 44 6f 77 6e 3e  0a 23 65 6e 64 74 61 62  |oseDown>.#endtab|
0000c9a0  6c 65 0a 23 69 6e 64 65  6e 74 0a 0a 54 79 70 65  |le.#indent..Type|
0000c9b0  73 3a 0a 0a 7b 61 6c 69  67 6e 20 63 65 6e 74 72  |s:..{align centr|
0000c9c0  65 7d 3c 61 73 6b 75 73  65 72 5f 52 45 50 4c 59  |e}<askuser_REPLY|
0000c9d0  3e 00 00 00 44 41 54 41  6f 01 00 00 41 73 6b 55  |>...DATAo...AskU|
0000c9e0  73 65 72 5f 52 45 50 4c  59 0a 54 68 69 73 20 74  |ser_REPLY.This t|
0000c9f0  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
0000ca00  6e 20 3c 54 69 6d 73 4c  69 62 3a 41 73 6b 55 73  |n <TimsLib:AskUs|
0000ca10  65 72 2e 68 3d 3e 41 73  6b 55 73 65 72 5f 68 3e  |er.h=>AskUser_h>|
0000ca20  20 61 73 20 61 6e 20 65  6e 75 6d 65 72 61 74 65  | as an enumerate|
0000ca30  64 20 74 79 70 65 20 63  61 70 61 62 6c 65 20 6f  |d type capable o|
0000ca40  66 20 68 6f 6c 64 69 6e  67 20 61 20 75 73 65 72  |f holding a user|
0000ca50  27 73 20 72 65 73 70 6f  6e 73 65 20 74 6f 20 61  |'s response to a|
0000ca60  20 71 75 65 73 74 69 6f  6e 2e 20 49 74 20 69 73  | question. It is|
0000ca70  20 64 65 66 69 6e 65 64  20 61 73 3a 0a 0a 20 20  | defined as:..  |
0000ca80  5c 7b 0a 20 20 20 20 61  73 6b 75 73 65 72 5f 4e  |\{.    askuser_N|
0000ca90  4f 52 45 50 4c 59 2c 09  2f 2a 20 4e 65 76 65 72  |OREPLY,./* Never|
0000caa0  20 72 65 74 75 72 6e 65  64 20 2a 2f 0a 20 20 20  | returned */.   |
0000cab0  20 61 73 6b 75 73 65 72  5f 43 41 4e 43 45 4c 2c  | askuser_CANCEL,|
0000cac0  09 2f 2a 20 43 61 6e 63  65 6c 6c 65 64 20 2a 2f  |./* Cancelled */|
0000cad0  0a 20 20 20 20 61 73 6b  75 73 65 72 5f 59 45 53  |.    askuser_YES|
0000cae0  2c 09 2f 2a 20 52 65 70  6c 69 65 64 20 59 45 53  |,./* Replied YES|
0000caf0  20 2a 2f 0a 20 20 20 20  61 73 6b 75 73 65 72 5f  | */.    askuser_|
0000cb00  4e 4f 2c 09 09 2f 2a 20  52 65 70 6c 69 65 64 20  |NO,../* Replied |
0000cb10  4e 4f 20 2a 2f 0a 20 20  20 20 61 73 6b 75 73 65  |NO */.    askuse|
0000cb20  72 5f 45 52 52 4f 52 09  2f 2a 20 4e 6f 74 20 65  |r_ERROR./* Not e|
0000cb30  6e 6f 75 67 68 20 6d 65  6d 6f 72 79 20 2a 2f 0a  |nough memory */.|
0000cb40  20 20 7d 00 44 49 52 24  4c 00 00 00 4c 00 00 00  |  }.DIR$L...L...|
0000cb50  90 cb 00 00 46 fd ff ff  29 4b 54 26 00 01 00 00  |....F...)KT&....|
0000cb60  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0000cb70  90 cc 00 00 46 ff ff ff  76 5f 54 26 28 01 00 00  |....F...v_T&(...|
0000cb80  13 00 00 00 00 00 00 00  56 41 4c 49 44 00 00 00  |........VALID...|
0000cb90  44 41 54 41 00 01 00 00  41 53 53 45 52 54 0a 53  |DATA....ASSERT.S|
0000cba0  79 6e 74 61 78 3a 09 41  53 53 45 52 54 20 28 3c  |yntax:.ASSERT (<|
0000cbb0  42 4f 4f 4c 3e 20 65 78  70 72 29 3b 0a 48 65 61  |BOOL> expr);.Hea|
0000cbc0  64 65 72 3a 09 3c 54 69  6d 73 4c 69 62 3a 43 68  |der:.<TimsLib:Ch|
0000cbd0  65 63 6b 2e 68 3d 3e 43  68 65 63 6b 3e 0a 0a 49  |eck.h=>Check>..I|
0000cbe0  66 20 74 68 65 20 6d 61  63 72 6f 20 7b 2a 7d 5f  |f the macro {*}_|
0000cbf0  44 45 42 55 47 7b 2a 7d  20 69 73 20 6e 6f 74 20  |DEBUG{*} is not |
0000cc00  64 65 66 69 6e 65 64 2c  20 74 68 69 73 20 68 61  |defined, this ha|
0000cc10  73 20 6e 6f 20 65 66 66  65 63 74 2e 20 4f 74 68  |s no effect. Oth|
0000cc20  65 72 77 69 73 65 2c 20  2f 65 78 70 72 2f 20 69  |erwise, /expr/ i|
0000cc30  73 20 65 76 61 6c 75 61  74 65 64 20 61 6e 64 20  |s evaluated and |
0000cc40  69 66 20 69 74 20 69 73  20 3c 46 41 4c 53 45 3e  |if it is <FALSE>|
0000cc50  20 74 68 65 6e 20 61 6e  20 65 72 72 6f 72 20 62  | then an error b|
0000cc60  6f 78 20 69 73 20 64 69  73 70 6c 61 79 65 64 20  |ox is displayed |
0000cc70  64 65 74 61 69 6c 69 6e  67 20 74 68 65 20 61 73  |detailing the as|
0000cc80  73 65 72 74 69 6f 6e 20  66 61 69 6c 75 72 65 2e  |sertion failure.|
0000cc90  44 41 54 41 28 01 00 00  41 53 53 45 52 54 5f 56  |DATA(...ASSERT_V|
0000cca0  41 4c 49 44 0a 53 79 6e  74 61 78 3a 09 41 53 53  |ALID.Syntax:.ASS|
0000ccb0  45 52 54 5f 56 41 4c 49  44 20 28 76 6f 69 64 20  |ERT_VALID (void |
0000ccc0  2a 70 6f 69 6e 74 65 72  29 3b 0a 48 65 61 64 65  |*pointer);.Heade|
0000ccd0  72 3a 09 3c 54 69 6d 73  4c 69 62 3a 43 68 65 63  |r:.<TimsLib:Chec|
0000cce0  6b 2e 68 3d 3e 43 68 65  63 6b 3e 0a 0a 49 66 20  |k.h=>Check>..If |
0000ccf0  74 68 65 20 6d 61 63 72  6f 20 7b 2a 7d 5f 44 45  |the macro {*}_DE|
0000cd00  42 55 47 7b 2a 7d 20 69  73 20 6e 6f 74 20 64 65  |BUG{*} is not de|
0000cd10  66 69 6e 65 64 2c 20 6e  6f 20 61 63 74 69 6f 6e  |fined, no action|
0000cd20  20 69 73 20 74 61 6b 65  6e 2e 20 4f 74 68 65 72  | is taken. Other|
0000cd30  77 69 73 65 2c 20 2f 70  6f 69 6e 74 65 72 2f 20  |wise, /pointer/ |
0000cd40  69 73 20 63 68 65 63 6b  65 64 20 61 6e 64 20 69  |is checked and i|
0000cd50  66 20 69 74 20 69 73 20  6e 6f 74 20 76 61 6c 69  |f it is not vali|
0000cd60  64 20 28 69 65 20 6d 65  6d 6f 72 79 20 63 61 6e  |d (ie memory can|
0000cd70  20 6e 6f 74 20 62 65 20  72 65 61 64 2f 77 72 69  | not be read/wri|
0000cd80  74 74 65 6e 20 61 74 20  74 68 69 73 20 6c 6f 63  |tten at this loc|
0000cd90  61 74 69 6f 6e 29 20 74  68 65 6e 20 61 6e 20 61  |ation) then an a|
0000cda0  73 73 65 72 74 69 6f 6e  20 66 61 69 6c 75 72 65  |ssertion failure|
0000cdb0  20 6f 63 63 75 72 73 2e  44 49 52 24 2c 01 00 00  | occurs.DIR$,...|
0000cdc0  2c 01 00 00 e4 ce 00 00  46 ff ff ff 66 8b ef 22  |,.......F...f.."|
0000cdd0  72 01 00 00 13 00 00 00  00 00 00 00 62 61 72 69  |r...........bari|
0000cde0  63 6f 6e 00 58 d0 00 00  46 fd ff ff 9d 5d 84 2f  |con.X...F....]./|
0000cdf0  e4 00 00 00 13 01 00 00  00 00 00 00 62 61 72 69  |............bari|
0000ce00  63 6f 6e 5f 00 00 00 00  ec d9 00 00 46 ff ff ff  |con_........F...|
0000ce10  33 fa ef 22 c9 01 00 00  13 00 00 00 00 00 00 00  |3.."............|
0000ce20  62 62 63 00 b8 db 00 00  46 fd ff ff 56 5e 84 2f  |bbc.....F...V^./|
0000ce30  0c 07 00 00 13 01 00 00  00 00 00 00 62 62 63 5f  |............bbc_|
0000ce40  00 00 00 00 a0 34 01 00  46 ff ff ff 94 7e b3 24  |.....4..F....~.$|
0000ce50  84 01 00 00 13 00 00 00  00 00 00 00 42 4f 4f 4c  |............BOOL|
0000ce60  00 00 00 00 24 36 01 00  46 ff ff ff 90 d0 e4 22  |....$6..F......"|
0000ce70  7e 01 00 00 13 00 00 00  00 00 00 00 62 72 65 61  |~...........brea|
0000ce80  6b 00 00 00 a4 37 01 00  46 ff ff ff 2f 09 de 22  |k....7..F.../.."|
0000ce90  c9 02 00 00 13 00 00 00  00 00 00 00 62 73 65 61  |............bsea|
0000cea0  72 63 68 00 70 3a 01 00  46 ff ff ff 18 7a c4 22  |rch.p:..F....z."|
0000ceb0  a6 00 00 00 13 00 00 00  00 00 00 00 42 55 46 53  |............BUFS|
0000cec0  49 5a 00 00 18 3b 01 00  46 fd ff ff c0 62 84 2f  |IZ...;..F....b./|
0000ced0  2c 00 00 00 13 01 00 00  00 00 00 00 62 75 74 74  |,...........butt|
0000cee0  6f 6e 5f 00 44 41 54 41  72 01 00 00 62 61 72 69  |on_.DATAr...bari|
0000cef0  63 6f 6e 0a 53 79 6e 74  61 78 3a 09 3c 77 69 6d  |con.Syntax:.<wim|
0000cf00  70 5f 69 3e 20 62 61 72  69 63 6f 6e 20 28 63 68  |p_i> baricon (ch|
0000cf10  61 72 20 2a 73 70 72 2c  20 69 6e 74 20 2a 61 72  |ar *spr, int *ar|
0000cf20  65 61 2c 20 3c 62 61 72  69 63 6f 6e 5f 63 6c 69  |ea, <baricon_cli|
0000cf30  63 6b 70 72 6f 63 3e 20  70 29 3b 0a 48 65 61 64  |ckproc> p);.Head|
0000cf40  65 72 3a 09 3c 62 61 72  69 63 6f 6e 2e 68 3d 3e  |er:.<baricon.h=>|
0000cf50  62 61 72 69 63 6f 6e 5f  68 3e 0a 0a 52 65 74 75  |baricon_h>..Retu|
0000cf60  72 6e 73 3a 09 49 63 6f  6e 20 68 61 6e 64 6c 65  |rns:.Icon handle|
0000cf70  20 6f 66 20 63 72 65 61  74 65 64 20 69 63 6f 6e  | of created icon|
0000cf80  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
0000cf90  20 70 6c 61 63 65 73 20  61 20 6e 6f 72 6d 61 6c  | places a normal|
0000cfa0  20 73 70 72 69 74 65 2d  6f 6e 6c 79 20 69 63 6f  | sprite-only ico|
0000cfb0  6e 20 6f 6e 20 74 68 65  20 69 63 6f 6e 20 62 61  |n on the icon ba|
0000cfc0  72 2e 20 2f 73 70 72 2f  20 69 73 20 61 20 70 6f  |r. /spr/ is a po|
0000cfd0  69 6e 74 65 72 20 74 6f  20 74 68 65 20 73 70 72  |inter to the spr|
0000cfe0  69 74 65 20 6e 61 6d 65  2c 20 2f 61 72 65 61 2f  |ite name, /area/|
0000cff0  20 69 73 20 74 68 65 20  73 70 72 69 74 65 20 61  | is the sprite a|
0000d000  72 65 61 20 70 6f 69 6e  74 65 72 20 61 6e 64 20  |rea pointer and |
0000d010  2f 70 2f 20 69 73 20 74  68 65 20 66 75 6e 63 74  |/p/ is the funct|
0000d020  69 6f 6e 20 74 6f 20 62  65 20 63 61 6c 6c 65 64  |ion to be called|
0000d030  20 77 68 65 6e 20 2a 53  65 6c 65 63 74 2a 20 69  | when *Select* i|
0000d040  73 20 63 6c 69 63 6b 65  64 20 6f 6e 20 74 68 65  |s clicked on the|
0000d050  20 69 63 6f 6e 2e 00 00  44 49 52 24 e4 00 00 00  | icon...DIR$....|
0000d060  e4 00 00 00 3c d1 00 00  46 ff ff ff c5 e2 ef 22  |....<...F......"|
0000d070  23 01 00 00 13 00 00 00  00 00 00 00 63 6c 69 63  |#...........clic|
0000d080  6b 70 72 6f 63 00 00 00  60 d2 00 00 46 fd ff ff  |kproc...`...F...|
0000d090  63 77 ef 22 19 01 00 00  13 00 00 00 00 00 00 00  |cw."............|
0000d0a0  68 00 00 00 7c d3 00 00  46 ff ff ff ac 9b ef 22  |h...|...F......"|
0000d0b0  88 01 00 00 13 00 00 00  00 00 00 00 6c 65 66 74  |............left|
0000d0c0  00 00 00 00 04 d5 00 00  46 ff ff ff 7a d9 ef 22  |........F...z.."|
0000d0d0  0f 01 00 00 13 00 00 00  00 00 00 00 6e 65 77 73  |............news|
0000d0e0  70 72 69 74 65 00 00 00  14 d6 00 00 46 ff ff ff  |prite.......F...|
0000d0f0  56 af ef 22 e6 01 00 00  13 00 00 00 00 00 00 00  |V.."............|
0000d100  74 65 78 74 61 6e 64 73  70 72 69 74 65 00 00 00  |textandsprite...|
0000d110  fc d7 00 00 46 ff ff ff  a9 cd ef 22 ef 01 00 00  |....F......"....|
0000d120  13 00 00 00 00 00 00 00  74 65 78 74 61 6e 64 73  |........textands|
0000d130  70 72 69 74 65 5f 6c 65  66 74 00 00 44 41 54 41  |prite_left..DATA|
0000d140  23 01 00 00 62 61 72 69  63 6f 6e 5f 63 6c 69 63  |#...baricon_clic|
0000d150  6b 70 72 6f 63 0a 54 68  69 73 20 74 79 70 65 20  |kproc.This type |
0000d160  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 62  |is defined in <b|
0000d170  61 72 69 63 6f 6e 2e 68  3d 3e 62 61 72 69 63 6f  |aricon.h=>barico|
0000d180  6e 5f 68 3e 2e 20 49 74  20 69 73 20 61 20 66 75  |n_h>. It is a fu|
0000d190  6e 63 74 69 6f 6e 20 63  61 6c 6c 65 64 20 77 68  |nction called wh|
0000d1a0  65 6e 20 74 68 65 20 75  73 65 72 20 63 6c 69 63  |en the user clic|
0000d1b0  6b 73 20 6f 6e 20 61 6e  20 69 63 6f 6e 20 62 61  |ks on an icon ba|
0000d1c0  72 20 69 63 6f 6e 2e 20  54 68 65 20 66 75 6e 63  |r icon. The func|
0000d1d0  74 69 6f 6e 20 69 73 20  6f 66 20 74 68 65 20 66  |tion is of the f|
0000d1e0  6f 72 6d 3a 0a 0a 7b 66  43 6f 64 65 3b 61 6c 69  |orm:..{fCode;ali|
0000d1f0  67 6e 20 63 65 6e 74 72  65 7d 76 6f 69 64 20 6d  |gn centre}void m|
0000d200  79 66 75 6e 63 20 28 3c  77 69 6d 70 5f 69 3e 20  |yfunc (<wimp_i> |
0000d210  69 63 6f 6e 29 3b 7b 66  3b 61 6c 69 67 6e 7d 0a  |icon);{f;align}.|
0000d220  0a 69 65 20 74 68 65 20  66 75 6e 63 74 69 6f 6e  |.ie the function|
0000d230  20 69 73 20 70 61 73 73  65 64 20 74 68 65 20 69  | is passed the i|
0000d240  63 6f 6e 20 6e 75 6d 62  65 72 20 6f 66 20 74 68  |con number of th|
0000d250  65 20 69 63 6f 6e 20 63  6c 69 63 6b 65 64 2e 00  |e icon clicked..|
0000d260  44 41 54 41 19 01 00 00  62 61 72 69 63 6f 6e 2e  |DATA....baricon.|
0000d270  68 0a 54 68 69 73 20 68  65 61 64 65 72 20 66 69  |h.This header fi|
0000d280  6c 65 20 64 65 63 6c 61  72 65 73 20 66 75 6e 63  |le declares func|
0000d290  74 69 6f 6e 73 20 66 6f  72 20 70 6c 61 63 69 6e  |tions for placin|
0000d2a0  67 20 61 6e 20 69 63 6f  6e 20 6f 6e 20 74 68 65  |g an icon on the|
0000d2b0  20 69 63 6f 6e 20 62 61  72 2e 0a 0a 46 75 6e 63  | icon bar...Func|
0000d2c0  74 69 6f 6e 73 3a 0a 0a  23 69 6e 64 65 6e 74 20  |tions:..#indent |
0000d2d0  31 0a 23 74 61 62 6c 65  20 63 6f 6c 75 6d 6e 73  |1.#table columns|
0000d2e0  20 32 0a 3c 62 61 72 69  63 6f 6e 3e 0a 3c 62 61  | 2.<baricon>.<ba|
0000d2f0  72 69 63 6f 6e 5f 6c 65  66 74 3e 0a 3c 62 61 72  |ricon_left>.<bar|
0000d300  69 63 6f 6e 5f 74 65 78  74 61 6e 64 73 70 72 69  |icon_textandspri|
0000d310  74 65 3e 0a 3c 62 61 72  69 63 6f 6e 5f 74 65 78  |te>.<baricon_tex|
0000d320  74 61 6e 64 73 70 72 69  74 65 5f 6c 65 66 74 3e  |tandsprite_left>|
0000d330  0a 3c 62 61 72 69 63 6f  6e 5f 6e 65 77 73 70 72  |.<baricon_newspr|
0000d340  69 74 65 3e 0a 0a 23 65  6e 64 74 61 62 6c 65 0a  |ite>..#endtable.|
0000d350  0a 54 79 70 65 3a 0a 0a  23 61 6c 69 67 6e 20 63  |.Type:..#align c|
0000d360  65 6e 74 72 65 0a 3c 62  61 72 69 63 6f 6e 5f 63  |entre.<baricon_c|
0000d370  6c 69 63 6b 70 72 6f 63  3e 00 00 00 44 41 54 41  |lickproc>...DATA|
0000d380  88 01 00 00 62 61 72 69  63 6f 6e 5f 6c 65 66 74  |....baricon_left|
0000d390  0a 53 79 6e 74 61 78 3a  09 3c 77 69 6d 70 5f 69  |.Syntax:.<wimp_i|
0000d3a0  3e 20 62 61 72 69 63 6f  6e 5f 6c 65 66 74 20 28  |> baricon_left (|
0000d3b0  63 68 61 72 20 2a 73 70  72 2c 20 69 6e 74 20 2a  |char *spr, int *|
0000d3c0  61 72 65 61 2c 20 3c 62  61 72 69 63 6f 6e 5f 63  |area, <baricon_c|
0000d3d0  6c 69 63 6b 70 72 6f 63  3e 20 70 29 3b 0a 48 65  |lickproc> p);.He|
0000d3e0  61 64 65 72 3a 09 3c 62  61 72 69 63 6f 6e 2e 68  |ader:.<baricon.h|
0000d3f0  3d 3e 62 61 72 69 63 6f  6e 5f 68 3e 0a 0a 52 65  |=>baricon_h>..Re|
0000d400  74 75 72 6e 73 3a 09 49  63 6f 6e 20 68 61 6e 64  |turns:.Icon hand|
0000d410  6c 65 20 6f 66 20 63 72  65 61 74 65 64 20 69 63  |le of created ic|
0000d420  6f 6e 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |on...This functi|
0000d430  6f 6e 20 70 6c 61 63 65  73 20 61 20 6e 6f 72 6d  |on places a norm|
0000d440  61 6c 20 73 70 72 69 74  65 2d 6f 6e 6c 79 20 69  |al sprite-only i|
0000d450  63 6f 6e 20 6f 6e 20 74  68 65 20 6c 65 66 74 20  |con on the left |
0000d460  6f 66 20 74 68 65 20 69  63 6f 6e 20 62 61 72 2e  |of the icon bar.|
0000d470  20 2f 73 70 72 2f 20 69  73 20 61 20 70 6f 69 6e  | /spr/ is a poin|
0000d480  74 65 72 20 74 6f 20 74  68 65 20 73 70 72 69 74  |ter to the sprit|
0000d490  65 20 6e 61 6d 65 2c 20  2f 61 72 65 61 2f 20 69  |e name, /area/ i|
0000d4a0  73 20 74 68 65 20 73 70  72 69 74 65 20 61 72 65  |s the sprite are|
0000d4b0  61 20 70 6f 69 6e 74 65  72 20 61 6e 64 20 2f 70  |a pointer and /p|
0000d4c0  2f 20 69 73 20 74 68 65  20 66 75 6e 63 74 69 6f  |/ is the functio|
0000d4d0  6e 20 74 6f 20 62 65 20  63 61 6c 6c 65 64 20 77  |n to be called w|
0000d4e0  68 65 6e 20 2a 53 65 6c  65 63 74 2a 20 69 73 20  |hen *Select* is |
0000d4f0  63 6c 69 63 6b 65 64 20  6f 6e 20 74 68 65 20 69  |clicked on the i|
0000d500  63 6f 6e 2e 44 41 54 41  0f 01 00 00 62 61 72 69  |con.DATA....bari|
0000d510  63 6f 6e 5f 6e 65 77 73  70 72 69 74 65 0a 53 79  |con_newsprite.Sy|
0000d520  6e 74 61 78 3a 09 3c 77  69 6d 70 5f 69 3e 20 62  |ntax:.<wimp_i> b|
0000d530  61 72 69 63 6f 6e 5f 6e  65 77 73 70 72 69 74 65  |aricon_newsprite|
0000d540  20 28 63 68 61 72 20 2a  6e 65 77 29 3b 0a 48 65  | (char *new);.He|
0000d550  61 64 65 72 3a 09 3c 62  61 72 69 63 6f 6e 2e 68  |ader:.<baricon.h|
0000d560  3d 3e 62 61 72 69 63 6f  6e 5f 68 3e 0a 0a 52 65  |=>baricon_h>..Re|
0000d570  74 75 72 6e 73 3a 09 49  63 6f 6e 20 68 61 6e 64  |turns:.Icon hand|
0000d580  6c 65 20 6f 66 20 69 63  6f 6e 2e 0a 0a 54 68 69  |le of icon...Thi|
0000d590  73 20 66 75 6e 63 74 69  6f 6e 20 63 68 61 6e 67  |s function chang|
0000d5a0  65 73 20 74 68 65 20 73  70 72 69 74 65 20 75 73  |es the sprite us|
0000d5b0  65 64 20 6f 6e 20 74 68  65 20 69 63 6f 6e 20 62  |ed on the icon b|
0000d5c0  61 72 20 74 6f 20 62 65  20 74 68 61 74 20 77 68  |ar to be that wh|
0000d5d0  6f 73 65 20 6e 61 6d 65  20 69 73 20 67 69 76 65  |ose name is give|
0000d5e0  6e 2e 20 54 68 65 20 73  70 72 69 74 65 20 6d 75  |n. The sprite mu|
0000d5f0  73 74 20 62 65 20 69 6e  20 74 68 65 20 73 61 6d  |st be in the sam|
0000d600  65 20 61 72 65 61 20 61  73 20 62 65 66 6f 72 65  |e area as before|
0000d610  2e 2e 2e 00 44 41 54 41  e6 01 00 00 62 61 72 69  |....DATA....bari|
0000d620  63 6f 6e 5f 74 65 78 74  61 6e 64 73 70 72 69 74  |con_textandsprit|
0000d630  65 0a 53 79 6e 74 61 78  3a 09 3c 77 69 6d 70 5f  |e.Syntax:.<wimp_|
0000d640  69 3e 20 62 61 72 69 63  6f 6e 5f 74 65 78 74 61  |i> baricon_texta|
0000d650  6e 64 73 70 72 69 74 65  20 28 63 68 61 72 20 2a  |ndsprite (char *|
0000d660  73 70 72 2c 20 63 68 61  72 20 2a 74 65 78 74 2c  |spr, char *text,|
0000d670  20 69 6e 74 20 62 75 66  66 6c 65 6e 2c 20 69 6e  | int bufflen, in|
0000d680  74 20 61 72 65 61 2c 20  3c 62 61 72 69 63 6f 6e  |t area, <baricon|
0000d690  5f 63 6c 69 63 6b 70 72  6f 63 3e 20 70 29 3b 0a  |_clickproc> p);.|
0000d6a0  48 65 61 64 65 72 3a 09  3c 62 61 72 69 63 6f 6e  |Header:.<baricon|
0000d6b0  2e 68 3d 3e 62 61 72 69  63 6f 6e 5f 68 3e 0a 0a  |.h=>baricon_h>..|
0000d6c0  52 65 74 75 72 6e 73 3a  09 49 63 6f 6e 20 68 61  |Returns:.Icon ha|
0000d6d0  6e 64 6c 65 20 6f 66 20  63 72 65 61 74 65 64 20  |ndle of created |
0000d6e0  69 63 6f 6e 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |icon...This func|
0000d6f0  74 69 6f 6e 20 70 6c 61  63 65 73 20 61 20 6e 6f  |tion places a no|
0000d700  72 6d 61 6c 20 73 70 72  69 74 65 20 2b 20 74 65  |rmal sprite + te|
0000d710  78 74 20 69 63 6f 6e 20  6f 6e 20 74 68 65 20 72  |xt icon on the r|
0000d720  69 67 68 74 20 6f 66 20  74 68 65 20 69 63 6f 6e  |ight of the icon|
0000d730  20 62 61 72 2e 20 2f 73  70 72 2f 20 69 73 20 61  | bar. /spr/ is a|
0000d740  20 70 6f 69 6e 74 65 72  20 74 6f 20 74 68 65 20  | pointer to the |
0000d750  73 70 72 69 74 65 20 6e  61 6d 65 2c 20 2f 74 65  |sprite name, /te|
0000d760  78 74 2f 20 69 73 20 74  68 65 20 74 65 78 74 2c  |xt/ is the text,|
0000d770  20 2f 61 72 65 61 2f 20  69 73 20 74 68 65 20 73  | /area/ is the s|
0000d780  70 72 69 74 65 20 61 72  65 61 2c 20 2f 62 75 66  |prite area, /buf|
0000d790  66 6c 65 6e 2f 20 69 73  20 74 68 65 20 74 65 78  |flen/ is the tex|
0000d7a0  74 20 62 75 66 66 65 72  20 6c 65 6e 67 74 68 20  |t buffer length |
0000d7b0  61 6e 64 20 2f 70 2f 20  69 73 20 74 68 65 20 66  |and /p/ is the f|
0000d7c0  75 6e 63 74 69 6f 6e 20  74 6f 20 62 65 20 63 61  |unction to be ca|
0000d7d0  6c 6c 65 64 20 77 68 65  6e 20 2a 53 65 6c 65 63  |lled when *Selec|
0000d7e0  74 2a 20 69 73 20 63 6c  69 63 6b 65 64 20 6f 6e  |t* is clicked on|
0000d7f0  20 74 68 65 20 69 63 6f  6e 2e 00 00 44 41 54 41  | the icon...DATA|
0000d800  ef 01 00 00 62 61 72 69  63 6f 6e 5f 74 65 78 74  |....baricon_text|
0000d810  61 6e 64 73 70 72 69 74  65 5f 6c 65 66 74 0a 53  |andsprite_left.S|
0000d820  79 6e 74 61 78 3a 09 3c  77 69 6d 70 5f 69 3e 20  |yntax:.<wimp_i> |
0000d830  62 61 72 69 63 6f 6e 5f  74 65 78 74 61 6e 64 73  |baricon_textands|
0000d840  70 72 69 74 65 5f 6c 65  66 74 20 28 63 68 61 72  |prite_left (char|
0000d850  20 2a 73 70 72 2c 20 63  68 61 72 20 2a 74 65 78  | *spr, char *tex|
0000d860  74 2c 20 69 6e 74 20 62  75 66 66 6c 65 6e 2c 20  |t, int bufflen, |
0000d870  69 6e 74 20 61 72 65 61  2c 20 3c 62 61 72 69 63  |int area, <baric|
0000d880  6f 6e 5f 63 6c 69 63 6b  70 72 6f 63 3e 20 70 29  |on_clickproc> p)|
0000d890  3b 0a 48 65 61 64 65 72  3a 09 3c 62 61 72 69 63  |;.Header:.<baric|
0000d8a0  6f 6e 2e 68 3d 3e 62 61  72 69 63 6f 6e 5f 68 3e  |on.h=>baricon_h>|
0000d8b0  0a 0a 52 65 74 75 72 6e  73 3a 09 49 63 6f 6e 20  |..Returns:.Icon |
0000d8c0  68 61 6e 64 6c 65 20 6f  66 20 63 72 65 61 74 65  |handle of create|
0000d8d0  64 20 69 63 6f 6e 2e 0a  0a 54 68 69 73 20 66 75  |d icon...This fu|
0000d8e0  6e 63 74 69 6f 6e 20 70  6c 61 63 65 73 20 61 20  |nction places a |
0000d8f0  6e 6f 72 6d 61 6c 20 73  70 72 69 74 65 20 2b 20  |normal sprite + |
0000d900  74 65 78 74 20 69 63 6f  6e 20 6f 6e 20 74 68 65  |text icon on the|
0000d910  20 6c 65 66 74 20 6f 66  20 74 68 65 20 69 63 6f  | left of the ico|
0000d920  6e 20 62 61 72 2e 20 2f  73 70 72 2f 20 69 73 20  |n bar. /spr/ is |
0000d930  61 20 70 6f 69 6e 74 65  72 20 74 6f 20 74 68 65  |a pointer to the|
0000d940  20 73 70 72 69 74 65 20  6e 61 6d 65 2c 20 2f 74  | sprite name, /t|
0000d950  65 78 74 2f 20 69 73 20  74 68 65 20 74 65 78 74  |ext/ is the text|
0000d960  2c 20 2f 61 72 65 61 2f  20 69 73 20 74 68 65 20  |, /area/ is the |
0000d970  73 70 72 69 74 65 20 61  72 65 61 2c 20 2f 62 75  |sprite area, /bu|
0000d980  66 66 6c 65 6e 2f 20 69  73 20 74 68 65 20 74 65  |fflen/ is the te|
0000d990  78 74 20 62 75 66 66 65  72 20 6c 65 6e 67 74 68  |xt buffer length|
0000d9a0  20 61 6e 64 20 2f 70 2f  20 69 73 20 74 68 65 20  | and /p/ is the |
0000d9b0  66 75 6e 63 74 69 6f 6e  20 74 6f 20 62 65 20 63  |function to be c|
0000d9c0  61 6c 6c 65 64 20 77 68  65 6e 20 2a 53 65 6c 65  |alled when *Sele|
0000d9d0  63 74 2a 20 69 73 20 63  6c 69 63 6b 65 64 20 6f  |ct* is clicked o|
0000d9e0  6e 20 74 68 65 20 69 63  6f 6e 2e 00 44 41 54 41  |n the icon..DATA|
0000d9f0  c9 01 00 00 62 62 63 2e  68 0a 54 68 65 20 5c 3c  |....bbc.h.The \<|
0000da00  62 62 63 2e 68 3e 20 68  65 61 64 65 72 20 64 65  |bbc.h> header de|
0000da10  63 6c 61 72 65 73 20 6d  61 6e 79 20 42 42 43 20  |clares many BBC |
0000da20  42 41 53 49 43 2d 74 79  70 65 20 66 75 6e 63 74  |BASIC-type funct|
0000da30  69 6f 6e 73 20 61 6e 64  20 6d 61 63 72 6f 73 20  |ions and macros |
0000da40  66 6f 72 20 67 72 61 70  68 69 63 73 20 61 6e 64  |for graphics and|
0000da50  20 6d 6f 75 73 65 2f 6b  65 79 62 6f 61 72 64 20  | mouse/keyboard |
0000da60  63 6f 6e 74 72 6f 6c 2e  0a 0a 46 75 6e 63 74 69  |control...Functi|
0000da70  6f 6e 73 3a 0a 0a 23 49  6e 64 65 6e 74 20 35 0a  |ons:..#Indent 5.|
0000da80  23 54 61 62 6c 65 20 32  20 31 39 0a 3c 54 65 78  |#Table 2 19.<Tex|
0000da90  74 20 6f 75 74 70 75 74  3d 3e 62 62 63 5f 74 65  |t output=>bbc_te|
0000daa0  78 74 5f 3e 0a 3c 47 72  61 70 68 69 63 73 20 6f  |xt_>.<Graphics o|
0000dab0  75 74 70 75 74 3d 3e 62  62 63 5f 67 72 61 70 68  |utput=>bbc_graph|
0000dac0  5f 3e 0a 3c 56 44 55 2f  4d 6f 64 65 20 76 61 72  |_>.<VDU/Mode var|
0000dad0  69 61 62 6c 65 73 3d 3e  62 62 63 5f 76 6d 76 61  |iables=>bbc_vmva|
0000dae0  72 5f 3e 0a 3c 53 6f 75  6e 64 2f 4d 69 73 63 65  |r_>.<Sound/Misce|
0000daf0  6c 6c 61 6e 65 6f 75 73  3d 3e 62 62 63 5f 6d 69  |llaneous=>bbc_mi|
0000db00  73 63 5f 3e 0a 23 45 6e  64 54 61 62 6c 65 0a 0a  |sc_>.#EndTable..|
0000db10  23 49 6e 64 65 6e 74 20  30 0a 4d 61 63 72 6f 73  |#Indent 0.Macros|
0000db20  3a 0a 0a 23 49 6e 64 65  6e 74 20 35 0a 23 54 61  |:..#Indent 5.#Ta|
0000db30  62 6c 65 20 32 20 31 39  0a 3c 56 44 55 20 63 6f  |ble 2 19.<VDU co|
0000db40  6d 6d 61 6e 64 73 3d 3e  62 62 63 5f 76 64 75 63  |mmands=>bbc_vduc|
0000db50  6f 6d 5f 3e 0a 3c 50 6c  6f 74 20 63 6f 64 65 73  |om_>.<Plot codes|
0000db60  3d 3e 62 62 63 5f 70 6c  6f 74 63 6f 6d 5f 3e 0a  |=>bbc_plotcom_>.|
0000db70  3c 56 44 55 20 76 61 72  69 61 62 6c 65 73 3d 3e  |<VDU variables=>|
0000db80  62 62 63 5f 76 64 75 76  61 72 5f 3e 0a 3c 4d 6f  |bbc_vduvar_>.<Mo|
0000db90  64 65 20 76 61 72 69 61  62 6c 65 73 3d 3e 62 62  |de variables=>bb|
0000dba0  63 5f 6d 6f 64 65 76 61  72 5f 3e 0a 23 45 6e 64  |c_modevar_>.#End|
0000dbb0  54 61 62 6c 65 00 00 00  44 49 52 24 0c 07 00 00  |Table...DIR$....|
0000dbc0  0c 07 00 00 c4 e2 00 00  46 ff ff ff d8 ad f1 22  |........F......"|
0000dbd0  a5 02 00 00 13 00 00 00  00 00 00 00 61 64 76 61  |............adva|
0000dbe0  6c 00 00 00 6c e5 00 00  46 ff ff ff ed 49 f0 22  |l...l...F....I."|
0000dbf0  0f 01 00 00 13 00 00 00  00 00 00 00 63 69 72 63  |............circ|
0000dc00  6c 65 00 00 7c e6 00 00  46 ff ff ff bc 4f f0 22  |le..|...F....O."|
0000dc10  23 01 00 00 13 00 00 00  00 00 00 00 63 69 72 63  |#...........circ|
0000dc20  6c 65 66 69 6c 6c 00 00  a0 e7 00 00 46 ff ff ff  |lefill......F...|
0000dc30  29 57 f0 22 e3 00 00 00  13 00 00 00 00 00 00 00  |)W."............|
0000dc40  63 6c 67 00 84 e8 00 00  46 ff ff ff 4e 05 f0 22  |clg.....F...N.."|
0000dc50  dd 00 00 00 13 00 00 00  00 00 00 00 63 6c 73 00  |............cls.|
0000dc60  64 e9 00 00 46 ff ff ff  eb 0c f0 22 36 01 00 00  |d...F......"6...|
0000dc70  13 00 00 00 00 00 00 00  63 6f 6c 6f 75 72 00 00  |........colour..|
0000dc80  9c ea 00 00 46 ff ff ff  a1 ba f1 22 4f 01 00 00  |....F......"O...|
0000dc90  13 00 00 00 00 00 00 00  63 75 72 73 6f 72 00 00  |........cursor..|
0000dca0  ec eb 00 00 46 ff ff ff  96 5d f0 22 16 01 00 00  |....F....]."....|
0000dcb0  13 00 00 00 00 00 00 00  64 72 61 77 00 00 00 00  |........draw....|
0000dcc0  04 ed 00 00 46 ff ff ff  75 63 f0 22 28 01 00 00  |....F...uc."(...|
0000dcd0  13 00 00 00 00 00 00 00  64 72 61 77 62 79 00 00  |........drawby..|
0000dce0  2c ee 00 00 46 ff ff ff  5c 6b f0 22 e4 00 00 00  |,...F...\k."....|
0000dcf0  13 00 00 00 00 00 00 00  66 69 6c 6c 00 00 00 00  |........fill....|
0000dd00  10 ef 00 00 46 ff ff ff  ae 71 f0 22 17 01 00 00  |....F....q."....|
0000dd10  13 00 00 00 00 00 00 00  67 63 6f 6c 00 00 00 00  |........gcol....|
0000dd20  28 f0 00 00 46 ff ff ff  ed c4 f1 22 79 01 00 00  |(...F......"y...|
0000dd30  13 00 00 00 00 00 00 00  67 65 74 00 a4 f1 00 00  |........get.....|
0000dd40  46 ff ff ff de ca f1 22  be 00 00 00 13 00 00 00  |F......"........|
0000dd50  00 00 00 00 67 65 74 62  65 61 74 00 64 f2 00 00  |....getbeat.d...|
0000dd60  46 ff ff ff 81 d3 f1 22  c7 00 00 00 13 00 00 00  |F......"........|
0000dd70  00 00 00 00 67 65 74 62  65 61 74 73 00 00 00 00  |....getbeats....|
0000dd80  2c f3 00 00 46 ff ff ff  09 d8 f1 22 3b 01 00 00  |,...F......";...|
0000dd90  13 00 00 00 00 00 00 00  67 65 74 74 65 6d 70 6f  |........gettempo|
0000dda0  00 00 00 00 68 f4 00 00  46 ff ff ff 4a 6a b5 22  |....h...F...Jj."|
0000ddb0  fb 00 00 00 13 00 00 00  00 00 00 00 67 72 61 70  |............grap|
0000ddc0  68 00 00 00 64 f5 00 00  46 fd ff ff 0d 42 f0 22  |h...d...F....B."|
0000ddd0  1f 01 00 00 13 00 00 00  00 00 00 00 67 72 61 70  |............grap|
0000dde0  68 5f 00 00 84 f6 00 00  46 ff ff ff a2 7d f0 22  |h_......F....}."|
0000ddf0  8b 01 00 00 13 00 00 00  00 00 00 00 67 77 69 6e  |............gwin|
0000de00  64 6f 77 00 10 f8 00 00  46 ff ff ff 33 fb f1 22  |dow.....F...3.."|
0000de10  6d 03 00 00 13 00 00 00  00 00 00 00 69 6e 6b 65  |m...........inke|
0000de20  79 00 00 00 80 fb 00 00  46 fd ff ff 0b 96 f1 22  |y.......F......"|
0000de30  f1 00 00 00 13 00 00 00  00 00 00 00 6d 69 73 63  |............misc|
0000de40  5f 00 00 00 74 fc 00 00  46 ff ff ff bd 88 f0 22  |_...t...F......"|
0000de50  15 01 00 00 13 00 00 00  00 00 00 00 6d 6f 64 65  |............mode|
0000de60  00 00 00 00 8c fd 00 00  46 ff ff ff cc 8d f1 22  |........F......"|
0000de70  66 01 00 00 13 00 00 00  00 00 00 00 6d 6f 64 65  |f...........mode|
0000de80  76 61 72 00 f4 fe 00 00  46 fd ff ff cd 6e f1 22  |var.....F....n."|
0000de90  b9 00 00 00 13 00 00 00  00 00 00 00 6d 6f 64 65  |............mode|
0000dea0  76 61 72 5f 00 00 00 00  b0 ff 00 00 46 ff ff ff  |var_........F...|
0000deb0  17 99 f0 22 f5 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0000dec0  6d 6f 76 65 00 00 00 00  a8 00 01 00 46 ff ff ff  |move........F...|
0000ded0  66 9e f0 22 0b 01 00 00  13 00 00 00 00 00 00 00  |f.."............|
0000dee0  6d 6f 76 65 62 79 00 00  b4 01 01 00 46 ff ff ff  |moveby......F...|
0000def0  c5 a5 f0 22 78 01 00 00  13 00 00 00 00 00 00 00  |..."x...........|
0000df00  6f 72 69 67 69 6e 00 00  2c 03 01 00 46 ff ff ff  |origin..,...F...|
0000df10  4f c0 f0 22 eb 02 00 00  13 00 00 00 00 00 00 00  |O.."............|
0000df20  70 61 6c 65 74 74 65 00  18 06 01 00 46 ff ff ff  |palette.....F...|
0000df30  2d e2 f0 22 16 01 00 00  13 00 00 00 00 00 00 00  |-.."............|
0000df40  70 6c 6f 74 00 00 00 00  30 07 01 00 46 fd ff ff  |plot....0...F...|
0000df50  77 ad f3 22 53 01 00 00  13 00 00 00 00 00 00 00  |w.."S...........|
0000df60  70 6c 6f 74 62 6d 6f 64  5f 00 00 00 84 08 01 00  |plotbmod_.......|
0000df70  46 fd ff ff f2 a9 f3 22  5e 06 00 00 13 00 00 00  |F......"^.......|
0000df80  00 00 00 00 70 6c 6f 74  63 6f 6d 5f 00 00 00 00  |....plotcom_....|
0000df90  e4 0e 01 00 46 fd ff ff  52 b0 f3 22 cd 01 00 00  |....F...R.."....|
0000dfa0  13 00 00 00 00 00 00 00  70 6c 6f 74 6d 6f 64 5f  |........plotmod_|
0000dfb0  00 00 00 00 b4 10 01 00  46 ff ff ff 80 f2 f0 22  |........F......"|
0000dfc0  e7 01 00 00 13 00 00 00  00 00 00 00 70 6f 69 6e  |............poin|
0000dfd0  74 00 00 00 9c 12 01 00  46 ff ff ff b1 15 f0 22  |t.......F......"|
0000dfe0  09 01 00 00 13 00 00 00  00 00 00 00 70 6f 73 00  |............pos.|
0000dff0  a8 13 01 00 46 ff ff ff  2f 00 f1 22 5b 01 00 00  |....F.../.."[...|
0000e000  13 00 00 00 00 00 00 00  72 65 63 74 61 6e 67 6c  |........rectangl|
0000e010  65 00 00 00 04 15 01 00  46 ff ff ff ce 09 f1 22  |e.......F......"|
0000e020  69 01 00 00 13 00 00 00  00 00 00 00 72 65 63 74  |i...........rect|
0000e030  61 6e 67 6c 65 66 69 6c  6c 00 00 00 70 16 01 00  |anglefill...p...|
0000e040  46 ff ff ff d2 0a f2 22  2e 01 00 00 13 00 00 00  |F......"........|
0000e050  00 00 00 00 73 65 74 62  65 61 74 73 00 00 00 00  |....setbeats....|
0000e060  a0 17 01 00 46 ff ff ff  b1 10 f2 22 87 01 00 00  |....F......"....|
0000e070  13 00 00 00 00 00 00 00  73 65 74 74 65 6d 70 6f  |........settempo|
0000e080  00 00 00 00 28 19 01 00  46 ff ff ff ae 1f f2 22  |....(...F......"|
0000e090  1d 04 00 00 13 00 00 00  00 00 00 00 73 6f 75 6e  |............soun|
0000e0a0  64 00 00 00 48 1d 01 00  46 ff ff ff 09 1c f3 22  |d...H...F......"|
0000e0b0  3d 01 00 00 13 00 00 00  00 00 00 00 73 6f 75 6e  |=...........soun|
0000e0c0  64 6f 66 66 00 00 00 00  88 1e 01 00 46 ff ff ff  |doff........F...|
0000e0d0  75 21 f3 22 f7 00 00 00  13 00 00 00 00 00 00 00  |u!."............|
0000e0e0  73 6f 75 6e 64 6f 6e 00  80 1f 01 00 46 ff ff ff  |soundon.....F...|
0000e0f0  9a 28 f3 22 bb 01 00 00  13 00 00 00 00 00 00 00  |.(."............|
0000e100  73 74 65 72 65 6f 00 00  3c 21 01 00 46 ff ff ff  |stereo..<!..F...|
0000e110  a2 1b f0 22 17 01 00 00  13 00 00 00 00 00 00 00  |..."............|
0000e120  73 74 72 69 6e 67 70 72  69 6e 74 00 54 22 01 00  |stringprint.T"..|
0000e130  46 ff ff ff a4 21 f0 22  3e 01 00 00 13 00 00 00  |F....!.">.......|
0000e140  00 00 00 00 74 61 62 00  94 23 01 00 46 fd ff ff  |....tab..#..F...|
0000e150  54 ff ef 22 9b 00 00 00  13 00 00 00 00 00 00 00  |T.."............|
0000e160  74 65 78 74 5f 00 00 00  30 24 01 00 46 ff ff ff  |text_...0$..F...|
0000e170  4d 19 f1 22 6b 02 00 00  13 00 00 00 00 00 00 00  |M.."k...........|
0000e180  74 69 6e 74 00 00 00 00  9c 26 01 00 46 ff ff ff  |tint.....&..F...|
0000e190  e6 26 f0 22 ff 00 00 00  13 00 00 00 00 00 00 00  |.&."............|
0000e1a0  76 64 75 00 9c 27 01 00  46 fd ff ff e4 a4 f3 22  |vdu..'..F......"|
0000e1b0  d3 04 00 00 13 00 00 00  00 00 00 00 76 64 75 63  |............vduc|
0000e1c0  6f 6d 5f 00 70 2c 01 00  46 ff ff ff 15 2c f0 22  |om_.p,..F....,."|
0000e1d0  58 01 00 00 13 00 00 00  00 00 00 00 76 64 75 71  |X...........vduq|
0000e1e0  00 00 00 00 c8 2d 01 00  46 ff ff ff f4 2d f1 22  |.....-..F....-."|
0000e1f0  e6 00 00 00 13 00 00 00  00 00 00 00 76 64 75 76  |............vduv|
0000e200  61 72 00 00 b0 2e 01 00  46 fd ff ff a7 50 f1 22  |ar......F....P."|
0000e210  ba 00 00 00 13 00 00 00  00 00 00 00 76 64 75 76  |............vduv|
0000e220  61 72 5f 00 6c 2f 01 00  46 ff ff ff 76 84 f1 22  |ar_.l/..F...v.."|
0000e230  d0 01 00 00 13 00 00 00  00 00 00 00 76 64 75 76  |............vduv|
0000e240  61 72 73 00 3c 31 01 00  46 ff ff ff c3 31 f0 22  |ars.<1..F....1."|
0000e250  5f 01 00 00 13 00 00 00  00 00 00 00 76 64 75 77  |_...........vduw|
0000e260  00 00 00 00 9c 32 01 00  46 fd ff ff 20 29 f1 22  |.....2..F... )."|
0000e270  58 00 00 00 13 00 00 00  00 00 00 00 76 6d 76 61  |X...........vmva|
0000e280  72 5f 00 00 f4 32 01 00  46 ff ff ff 3f 30 f3 22  |r_...2..F...?0."|
0000e290  df 00 00 00 13 00 00 00  00 00 00 00 76 6f 69 63  |............voic|
0000e2a0  65 73 00 00 d4 33 01 00  46 ff ff ff 3e 37 f0 22  |es...3..F...>7."|
0000e2b0  c9 00 00 00 13 00 00 00  00 00 00 00 76 70 6f 73  |............vpos|
0000e2c0  00 00 00 00 44 41 54 41  a5 02 00 00 62 62 63 5f  |....DATA....bbc_|
0000e2d0  61 64 76 61 6c 0a 53 79  6e 74 61 78 3a 09 69 6e  |adval.Syntax:.in|
0000e2e0  74 20 62 62 63 5f 61 64  76 61 6c 20 28 69 6e 74  |t bbc_adval (int|
0000e2f0  20 62 75 66 29 3b 0a 48  65 61 64 65 72 3a 09 3c  | buf);.Header:.<|
0000e300  62 62 63 2e 68 3d 3e 62  62 63 3e 0a 0a 52 65 74  |bbc.h=>bbc>..Ret|
0000e310  75 72 6e 73 3a 09 41 20  76 61 6c 75 65 2c 20 64  |urns:.A value, d|
0000e320  65 70 65 6e 64 69 6e 67  20 6f 6e 20 74 68 65 20  |epending on the |
0000e330  76 61 6c 75 65 20 6f 66  20 62 75 66 2e 0a 0a 54  |value of buf...T|
0000e340  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 61  |his function rea|
0000e350  64 73 20 74 68 65 20 63  6f 6e 74 65 6e 74 73 20  |ds the contents |
0000e360  61 6e 64 20 73 74 61 74  75 73 20 6f 66 20 76 61  |and status of va|
0000e370  72 69 6f 75 73 20 62 75  66 66 65 72 73 2c 20 64  |rious buffers, d|
0000e380  65 70 65 6e 64 69 6e 67  20 6f 6e 20 74 68 65 20  |epending on the |
0000e390  76 61 6c 75 65 20 6f 66  20 2f 62 75 66 2f 3a 0a  |value of /buf/:.|
0000e3a0  0a 23 74 61 62 0a 20 20  20 20 37 09 58 20 63 6f  |.#tab.    7.X co|
0000e3b0  6f 72 64 69 6e 61 74 65  20 6f 66 20 6d 6f 75 73  |ordinate of mous|
0000e3c0  65 20 28 64 6f 20 6e 6f  74 20 75 73 65 29 0a 20  |e (do not use). |
0000e3d0  20 20 20 38 09 59 20 63  6f 6f 72 64 69 6e 61 74  |   8.Y coordinat|
0000e3e0  65 20 6f 66 20 6d 6f 75  73 65 20 28 64 6f 20 6e  |e of mouse (do n|
0000e3f0  6f 74 20 75 73 65 29 0a  20 20 20 20 32 34 36 09  |ot use).    246.|
0000e400  42 79 74 65 73 20 66 72  65 65 20 69 6e 20 6d 6f  |Bytes free in mo|
0000e410  75 73 65 20 62 75 66 66  65 72 0a 20 20 20 20 32  |use buffer.    2|
0000e420  35 32 09 42 79 74 65 73  20 66 72 65 65 20 69 6e  |52.Bytes free in|
0000e430  20 70 72 69 6e 74 65 72  20 62 75 66 66 65 72 0a  | printer buffer.|
0000e440  20 20 20 20 32 35 33 09  42 79 74 65 73 20 66 72  |    253.Bytes fr|
0000e450  65 65 20 69 6e 20 52 53  34 32 33 20 6f 75 74 70  |ee in RS423 outp|
0000e460  75 74 20 62 75 66 66 65  72 0a 20 20 20 20 32 35  |ut buffer.    25|
0000e470  34 09 42 79 74 65 73 20  69 6e 20 52 53 34 32 33  |4.Bytes in RS423|
0000e480  20 69 6e 70 75 74 20 62  75 66 66 65 72 0a 20 20  | input buffer.  |
0000e490  20 20 32 35 35 09 42 79  74 65 73 20 69 6e 20 6b  |  255.Bytes in k|
0000e4a0  65 79 62 6f 61 72 64 20  62 75 66 66 65 72 0a 0a  |eyboard buffer..|
0000e4b0  49 74 20 69 73 20 72 65  63 6f 6d 6d 65 6e 64 65  |It is recommende|
0000e4c0  64 20 62 79 20 41 63 6f  72 6e 20 74 68 61 74 20  |d by Acorn that |
0000e4d0  79 6f 75 20 64 6f 20 6e  6f 74 20 75 73 65 20 62  |you do not use b|
0000e4e0  62 63 5f 61 64 76 61 6c  28 29 20 37 20 61 6e 64  |bc_adval() 7 and|
0000e4f0  20 38 20 74 6f 20 72 65  61 64 20 74 68 65 20 6d  | 8 to read the m|
0000e500  6f 75 73 65 20 70 6f 73  69 74 69 6f 6e 2c 20 62  |ouse position, b|
0000e510  75 74 20 63 61 6c 6c 20  74 68 65 20 4f 53 5f 4d  |ut call the OS_M|
0000e520  6f 75 73 65 20 53 57 49  20 69 6e 73 74 65 61 64  |ouse SWI instead|
0000e530  2e 0a 0a 54 68 69 73 20  63 61 6c 6c 20 69 73 20  |...This call is |
0000e540  65 71 75 69 76 61 6c 65  6e 74 20 74 6f 20 3c 4f  |equivalent to <O|
0000e550  53 5f 42 79 74 65 3d 3e  53 57 49 3a 4f 53 5f 42  |S_Byte=>SWI:OS_B|
0000e560  79 74 65 3e 20 31 32 38  2e 00 00 00 44 41 54 41  |yte> 128....DATA|
0000e570  0f 01 00 00 62 62 63 5f  63 69 72 63 6c 65 0a 53  |....bbc_circle.S|
0000e580  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
0000e590  3e 20 2a 62 62 63 5f 63  69 72 63 6c 65 20 28 69  |> *bbc_circle (i|
0000e5a0  6e 74 20 78 2c 20 69 6e  74 20 79 2c 20 69 6e 74  |nt x, int y, int|
0000e5b0  20 72 29 3b 0a 48 65 61  64 65 72 3a 09 3c 62 62  | r);.Header:.<bb|
0000e5c0  63 2e 68 3d 3e 62 62 63  3e 0a 0a 52 65 74 75 72  |c.h=>bbc>..Retur|
0000e5d0  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
0000e5e0  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
0000e5f0  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
0000e600  75 6e 63 74 69 6f 6e 20  64 72 61 77 73 20 61 20  |unction draws a |
0000e610  63 69 72 63 6c 65 20 77  69 74 68 20 63 65 6e 74  |circle with cent|
0000e620  72 65 20 61 74 20 73 63  72 65 65 6e 20 63 6f 6f  |re at screen coo|
0000e630  72 64 69 6e 61 74 65 73  20 28 78 2c 79 29 20 61  |rdinates (x,y) a|
0000e640  6e 64 20 72 61 64 69 75  73 20 72 2e 20 45 71 75  |nd radius r. Equ|
0000e650  69 76 61 6c 65 6e 74 20  74 6f 20 3c 43 49 52 43  |ivalent to <CIRC|
0000e660  4c 45 3d 3e 42 61 73 69  63 3a 43 49 52 43 4c 45  |LE=>Basic:CIRCLE|
0000e670  3e 20 69 6e 20 42 61 73  69 63 2e 00 44 41 54 41  |> in Basic..DATA|
0000e680  23 01 00 00 62 62 63 5f  63 69 72 63 6c 65 66 69  |#...bbc_circlefi|
0000e690  6c 6c 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |ll.Syntax:.<os_e|
0000e6a0  72 72 6f 72 3e 20 2a 62  62 63 5f 63 69 72 63 6c  |rror> *bbc_circl|
0000e6b0  65 66 69 6c 6c 20 28 69  6e 74 20 78 2c 20 69 6e  |efill (int x, in|
0000e6c0  74 20 79 2c 20 69 6e 74  20 72 29 3b 0a 48 65 61  |t y, int r);.Hea|
0000e6d0  64 65 72 3a 09 3c 62 62  63 2e 68 3d 3e 62 62 63  |der:.<bbc.h=>bbc|
0000e6e0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
0000e6f0  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
0000e700  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
0000e710  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0000e720  64 72 61 77 73 20 61 20  66 69 6c 6c 65 64 20 63  |draws a filled c|
0000e730  69 72 63 6c 65 20 77 69  74 68 20 63 65 6e 74 72  |ircle with centr|
0000e740  65 20 61 74 20 73 63 72  65 65 6e 20 63 6f 6f 72  |e at screen coor|
0000e750  64 69 6e 61 74 65 73 20  28 78 2c 79 29 20 61 6e  |dinates (x,y) an|
0000e760  64 20 72 61 64 69 75 73  20 72 2e 20 45 71 75 69  |d radius r. Equi|
0000e770  76 61 6c 65 6e 74 20 74  6f 20 3c 43 49 52 43 4c  |valent to <CIRCL|
0000e780  45 20 46 49 4c 4c 3d 3e  42 61 73 69 63 3a 43 49  |E FILL=>Basic:CI|
0000e790  52 43 4c 45 3e 20 69 6e  20 42 61 73 69 63 2e 00  |RCLE> in Basic..|
0000e7a0  44 41 54 41 e3 00 00 00  62 62 63 5f 63 6c 67 0a  |DATA....bbc_clg.|
0000e7b0  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
0000e7c0  72 3e 20 2a 62 62 63 5f  63 6c 67 20 28 76 6f 69  |r> *bbc_clg (voi|
0000e7d0  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 62 62 63  |d);.Header:.<bbc|
0000e7e0  2e 68 3d 3e 62 62 63 3e  0a 0a 52 65 74 75 72 6e  |.h=>bbc>..Return|
0000e7f0  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
0000e800  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
0000e810  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
0000e820  6e 63 74 69 6f 6e 20 63  6c 65 61 72 73 20 74 68  |nction clears th|
0000e830  65 20 67 72 61 70 68 69  63 73 20 77 69 6e 64 6f  |e graphics windo|
0000e840  77 20 74 6f 20 74 68 65  20 63 75 72 72 65 6e 74  |w to the current|
0000e850  20 62 61 63 6b 67 72 6f  75 6e 64 20 67 72 61 70  | background grap|
0000e860  68 69 63 73 20 63 6f 6c  6f 75 72 20 28 73 65 74  |hics colour (set|
0000e870  20 75 73 69 6e 67 20 3c  62 62 63 5f 67 63 6f 6c  | using <bbc_gcol|
0000e880  3e 29 2e 00 44 41 54 41  dd 00 00 00 62 62 63 5f  |>)..DATA....bbc_|
0000e890  63 6c 73 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |cls.Syntax:.<os_|
0000e8a0  65 72 72 6f 72 3e 20 2a  62 62 63 5f 63 6c 73 20  |error> *bbc_cls |
0000e8b0  28 76 6f 69 64 29 3b 0a  48 65 61 64 65 72 3a 09  |(void);.Header:.|
0000e8c0  3c 62 62 63 2e 68 3d 3e  62 62 63 3e 0a 0a 52 65  |<bbc.h=>bbc>..Re|
0000e8d0  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
0000e8e0  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
0000e8f0  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
0000e900  73 20 66 75 6e 63 74 69  6f 6e 20 63 6c 65 61 72  |s function clear|
0000e910  73 20 74 68 65 20 74 65  78 74 20 77 69 6e 64 6f  |s the text windo|
0000e920  77 20 74 6f 20 74 68 65  20 63 75 72 72 65 6e 74  |w to the current|
0000e930  20 62 61 63 6b 67 72 6f  75 6e 64 20 74 65 78 74  | background text|
0000e940  20 63 6f 6c 6f 75 72 20  28 73 65 74 20 75 73 69  | colour (set usi|
0000e950  6e 67 20 3c 62 62 63 5f  63 6f 6c 6f 75 72 3e 29  |ng <bbc_colour>)|
0000e960  2e 00 00 00 44 41 54 41  36 01 00 00 62 62 63 5f  |....DATA6...bbc_|
0000e970  63 6f 6c 6f 75 72 0a 53  79 6e 74 61 78 3a 09 3c  |colour.Syntax:.<|
0000e980  6f 73 5f 65 72 72 6f 72  3e 20 2a 62 62 63 5f 63  |os_error> *bbc_c|
0000e990  6f 6c 6f 75 72 20 28 69  6e 74 20 63 29 3b 0a 48  |olour (int c);.H|
0000e9a0  65 61 64 65 72 3a 09 3c  62 62 63 2e 68 3d 3e 62  |eader:.<bbc.h=>b|
0000e9b0  62 63 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |bc>..Returns:.Po|
0000e9c0  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
0000e9d0  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
0000e9e0  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
0000e9f0  6e 20 73 65 74 73 20 74  68 65 20 63 75 72 72 65  |n sets the curre|
0000ea00  6e 74 20 74 65 78 74 20  63 6f 6c 6f 75 72 20 74  |nt text colour t|
0000ea10  6f 20 74 68 65 20 76 61  6c 75 65 20 69 6e 20 2f  |o the value in /|
0000ea20  63 2f 2e 20 46 6f 72 20  63 5c 3c 31 32 38 20 74  |c/. For c\<128 t|
0000ea30  68 69 73 20 61 6c 74 65  72 73 20 74 68 65 20 74  |his alters the t|
0000ea40  65 78 74 20 66 6f 72 65  67 72 6f 75 6e 64 20 63  |ext foreground c|
0000ea50  6f 6c 6f 75 72 20 74 6f  20 63 2c 20 61 6e 64 20  |olour to c, and |
0000ea60  66 6f 72 20 63 3e 31 32  37 20 74 68 69 73 20 61  |for c>127 this a|
0000ea70  6c 74 65 72 73 20 74 68  65 20 74 65 78 74 20 62  |lters the text b|
0000ea80  61 63 6b 67 72 6f 75 6e  64 20 63 6f 6c 6f 75 72  |ackground colour|
0000ea90  20 74 6f 20 63 2d 31 32  38 2e 00 00 44 41 54 41  | to c-128...DATA|
0000eaa0  4f 01 00 00 62 62 63 5f  63 75 72 73 6f 72 0a 53  |O...bbc_cursor.S|
0000eab0  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
0000eac0  3e 20 2a 62 62 63 5f 63  75 72 73 6f 72 20 28 69  |> *bbc_cursor (i|
0000ead0  6e 74 20 6e 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |nt n);.Header:.<|
0000eae0  62 62 63 2e 68 3d 3e 62  62 63 3e 0a 0a 52 65 74  |bbc.h=>bbc>..Ret|
0000eaf0  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
0000eb00  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
0000eb10  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
0000eb20  20 66 75 6e 63 74 69 6f  6e 20 63 68 61 6e 67 65  | function change|
0000eb30  73 20 74 68 65 20 61 70  70 65 61 72 61 6e 63 65  |s the appearance|
0000eb40  20 6f 66 20 74 68 65 20  74 65 78 74 20 63 75 72  | of the text cur|
0000eb50  73 6f 72 20 64 65 70 65  6e 64 69 6e 67 20 6f 6e  |sor depending on|
0000eb60  20 2f 6e 2f 2e 20 50 6f  73 73 69 62 6c 65 20 76  | /n/. Possible v|
0000eb70  61 6c 75 65 73 20 61 72  65 3a 0a 0a 23 74 61 62  |alues are:..#tab|
0000eb80  0a 20 20 30 09 48 69 64  65 20 63 75 72 73 6f 72  |.  0.Hide cursor|
0000eb90  0a 20 20 31 09 53 68 6f  77 20 63 75 72 73 6f 72  |.  1.Show cursor|
0000eba0  0a 20 20 32 09 53 74 65  61 64 79 20 63 75 72 73  |.  2.Steady curs|
0000ebb0  6f 72 0a 20 20 33 09 46  6c 61 73 68 69 6e 67 20  |or.  3.Flashing |
0000ebc0  63 75 72 73 6f 72 0a 0a  45 71 75 69 76 61 6c 65  |cursor..Equivale|
0000ebd0  6e 74 20 74 6f 20 3c 56  44 55 20 32 33 2c 31 3d  |nt to <VDU 23,1=|
0000ebe0  3e 56 44 55 3a 32 33 2c  31 3e 2e 00 44 41 54 41  |>VDU:23,1>..DATA|
0000ebf0  16 01 00 00 62 62 63 5f  64 72 61 77 0a 53 79 6e  |....bbc_draw.Syn|
0000ec00  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
0000ec10  2a 62 62 63 5f 64 72 61  77 20 28 69 6e 74 20 78  |*bbc_draw (int x|
0000ec20  2c 20 69 6e 74 20 79 29  3b 0a 48 65 61 64 65 72  |, int y);.Header|
0000ec30  3a 09 3c 62 62 63 2e 68  3d 3e 62 62 63 3e 0a 0a  |:.<bbc.h=>bbc>..|
0000ec40  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
0000ec50  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
0000ec60  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
0000ec70  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 64 72 61  |his function dra|
0000ec80  77 73 20 61 20 6c 69 6e  65 20 69 6e 20 74 68 65  |ws a line in the|
0000ec90  20 63 75 72 72 65 6e 74  20 67 72 61 70 68 69 63  | current graphic|
0000eca0  73 20 66 6f 72 65 67 72  6f 75 6e 64 20 63 6f 6c  |s foreground col|
0000ecb0  6f 75 72 20 66 72 6f 6d  20 74 68 65 20 63 75 72  |our from the cur|
0000ecc0  72 65 6e 74 20 70 6f 73  69 74 69 6f 6e 20 74 6f  |rent position to|
0000ecd0  20 28 78 2c 79 29 2e 20  45 71 75 69 76 61 6c 65  | (x,y). Equivale|
0000ece0  6e 74 20 74 6f 20 3c 44  52 41 57 3d 3e 42 61 73  |nt to <DRAW=>Bas|
0000ecf0  69 63 3a 44 52 41 57 3e  20 69 6e 20 42 61 73 69  |ic:DRAW> in Basi|
0000ed00  63 2e 00 00 44 41 54 41  28 01 00 00 62 62 63 5f  |c...DATA(...bbc_|
0000ed10  64 72 61 77 62 79 0a 53  79 6e 74 61 78 3a 09 3c  |drawby.Syntax:.<|
0000ed20  6f 73 5f 65 72 72 6f 72  3e 20 2a 62 62 63 5f 64  |os_error> *bbc_d|
0000ed30  72 61 77 62 79 20 28 69  6e 74 20 78 2c 20 69 6e  |rawby (int x, in|
0000ed40  74 20 79 29 3b 0a 48 65  61 64 65 72 3a 09 3c 62  |t y);.Header:.<b|
0000ed50  62 63 2e 68 3d 3e 62 62  63 3e 0a 0a 52 65 74 75  |bc.h=>bbc>..Retu|
0000ed60  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
0000ed70  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
0000ed80  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
0000ed90  66 75 6e 63 74 69 6f 6e  20 64 72 61 77 73 20 61  |function draws a|
0000eda0  20 6c 69 6e 65 20 69 6e  20 74 68 65 20 63 75 72  | line in the cur|
0000edb0  72 65 6e 74 20 67 72 61  70 68 69 63 73 20 66 6f  |rent graphics fo|
0000edc0  72 65 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 20  |reground colour |
0000edd0  66 72 6f 6d 20 74 68 65  20 63 75 72 72 65 6e 74  |from the current|
0000ede0  20 70 6f 73 69 74 69 6f  6e 20 72 65 6c 61 74 69  | position relati|
0000edf0  76 65 6c 79 20 62 79 20  28 78 2c 79 29 2e 20 45  |vely by (x,y). E|
0000ee00  71 75 69 76 61 6c 65 6e  74 20 74 6f 20 3c 44 52  |quivalent to <DR|
0000ee10  41 57 20 42 59 3d 3e 42  61 73 69 63 3a 44 52 41  |AW BY=>Basic:DRA|
0000ee20  57 3e 20 69 6e 20 42 61  73 69 63 2e 44 41 54 41  |W> in Basic.DATA|
0000ee30  e4 00 00 00 62 62 63 5f  66 69 6c 6c 0a 53 79 6e  |....bbc_fill.Syn|
0000ee40  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
0000ee50  2a 62 62 63 5f 66 69 6c  65 20 28 69 6e 74 20 78  |*bbc_file (int x|
0000ee60  2c 20 69 6e 74 20 79 29  3b 0a 48 65 61 64 65 72  |, int y);.Header|
0000ee70  3a 09 3c 62 62 63 2e 68  3d 3e 62 62 63 3e 0a 0a  |:.<bbc.h=>bbc>..|
0000ee80  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
0000ee90  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
0000eea0  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
0000eeb0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 66 6c 6f  |his function flo|
0000eec0  6f 64 20 66 69 6c 6c 73  20 61 6e 20 61 72 65 61  |od fills an area|
0000eed0  20 77 69 74 68 20 74 68  65 20 63 75 72 72 65 6e  | with the curren|
0000eee0  74 20 67 72 61 70 68 69  63 73 20 66 6f 72 65 67  |t graphics foreg|
0000eef0  72 6f 75 6e 64 20 63 6f  6c 6f 75 72 2c 20 73 74  |round colour, st|
0000ef00  61 72 74 69 6e 67 20 61  74 20 28 78 2c 79 29 2e  |arting at (x,y).|
0000ef10  44 41 54 41 17 01 00 00  62 62 63 5f 67 63 6f 6c  |DATA....bbc_gcol|
0000ef20  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
0000ef30  6f 72 3e 20 2a 62 62 63  5f 67 63 6f 6c 20 28 69  |or> *bbc_gcol (i|
0000ef40  6e 74 20 61 2c 20 69 6e  74 20 63 29 3b 0a 48 65  |nt a, int c);.He|
0000ef50  61 64 65 72 3a 09 3c 62  62 63 2e 68 3d 3e 62 62  |ader:.<bbc.h=>bb|
0000ef60  63 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |c>..Returns:.Poi|
0000ef70  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
0000ef80  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
0000ef90  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
0000efa0  20 63 68 61 6e 67 65 73  20 74 68 65 20 63 75 72  | changes the cur|
0000efb0  72 65 6e 74 20 67 72 61  70 68 69 63 73 20 66 6f  |rent graphics fo|
0000efc0  72 65 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 20  |reground colour |
0000efd0  28 69 6e 20 63 29 20 61  6e 64 20 3c 61 63 74 69  |(in c) and <acti|
0000efe0  6f 6e 3d 3e 56 44 55 3a  31 38 61 3e 20 28 61 29  |on=>VDU:18a> (a)|
0000eff0  2e 20 49 66 20 63 5c 3e  31 32 38 20 74 68 65 6e  |. If c\>128 then|
0000f000  20 74 68 65 20 62 61 63  6b 67 72 6f 75 6e 64 20  | the background |
0000f010  63 6f 6c 6f 75 72 20 69  73 20 73 65 74 20 74 6f  |colour is set to|
0000f020  20 63 2d 31 32 38 2e 00  44 41 54 41 79 01 00 00  | c-128..DATAy...|
0000f030  62 62 63 5f 67 65 74 0a  53 79 6e 74 61 78 3a 09  |bbc_get.Syntax:.|
0000f040  69 6e 74 20 62 62 63 5f  67 65 74 20 28 76 6f 69  |int bbc_get (voi|
0000f050  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 62 62 63  |d);.Header:.<bbc|
0000f060  2e 68 3d 3e 62 62 63 3e  0a 0a 52 65 74 75 72 6e  |.h=>bbc>..Return|
0000f070  73 3a 09 54 68 65 20 63  68 61 72 61 63 74 65 72  |s:.The character|
0000f080  20 72 65 61 64 2e 0a 0a  54 68 69 73 20 66 75 6e  | read...This fun|
0000f090  63 74 69 6f 6e 20 72 65  61 64 73 20 61 20 63 68  |ction reads a ch|
0000f0a0  61 72 61 63 74 65 72 20  66 72 6f 6d 20 74 68 65  |aracter from the|
0000f0b0  20 63 75 72 72 65 6e 74  20 69 6e 70 75 74 20 73  | current input s|
0000f0c0  74 72 65 61 6d 2e 20 49  74 20 77 61 69 74 73 20  |tream. It waits |
0000f0d0  75 6e 74 69 6c 20 6f 6e  65 20 69 73 20 61 76 61  |until one is ava|
0000f0e0  69 6c 61 62 6c 65 2c 20  73 6f 20 6d 61 79 20 68  |ilable, so may h|
0000f0f0  61 6c 74 20 74 68 65 20  70 72 6f 67 72 61 6d 20  |alt the program |
0000f100  74 65 6d 70 6f 72 61 72  69 6c 79 2e 20 49 66 20  |temporarily. If |
0000f110  61 6e 20 65 73 63 61 70  65 20 63 6f 6e 64 69 74  |an escape condit|
0000f120  69 6f 6e 20 6f 63 63 75  72 73 2c 20 74 68 65 20  |ion occurs, the |
0000f130  66 75 6e 63 74 69 6f 6e  20 72 65 74 75 72 6e 73  |function returns|
0000f140  20 61 20 76 61 6c 75 65  20 67 72 65 61 74 65 72  | a value greater|
0000f150  20 74 68 61 6e 20 32 35  35 2e 0a 0a 54 68 69 73  | than 255...This|
0000f160  20 66 75 6e 63 74 69 6f  6e 20 69 73 20 69 64 65  | function is ide|
0000f170  6e 74 69 63 61 6c 20 74  6f 20 4f 53 5f 52 65 61  |ntical to OS_Rea|
0000f180  64 43 2c 20 6f 72 20 3c  47 45 54 3d 3e 42 61 73  |dC, or <GET=>Bas|
0000f190  69 63 3a 47 45 54 3e 20  69 6e 20 42 61 73 69 63  |ic:GET> in Basic|
0000f1a0  2e 00 00 00 44 41 54 41  be 00 00 00 62 62 63 5f  |....DATA....bbc_|
0000f1b0  67 65 74 62 65 61 74 0a  53 79 6e 74 61 78 3a 09  |getbeat.Syntax:.|
0000f1c0  69 6e 74 20 62 62 63 5f  67 65 74 62 65 61 74 20  |int bbc_getbeat |
0000f1d0  28 76 6f 69 64 29 3b 0a  48 65 61 64 65 72 3a 09  |(void);.Header:.|
0000f1e0  3c 62 62 63 2e 68 3d 3e  62 62 63 3e 0a 0a 52 65  |<bbc.h=>bbc>..Re|
0000f1f0  74 75 72 6e 73 3a 09 54  68 65 20 62 65 61 74 20  |turns:.The beat |
0000f200  6e 75 6d 62 65 72 2e 0a  0a 54 68 69 73 20 66 75  |number...This fu|
0000f210  6e 63 74 69 6f 6e 20 72  65 74 75 72 6e 73 20 74  |nction returns t|
0000f220  68 65 20 63 75 72 72 65  6e 74 20 62 65 61 74 20  |he current beat |
0000f230  6e 75 6d 62 65 72 2e 20  49 74 20 69 73 20 65 71  |number. It is eq|
0000f240  75 69 76 61 6c 65 6e 74  20 74 6f 20 74 68 65 20  |uivalent to the |
0000f250  53 57 49 20 53 6f 75 6e  64 5f 51 42 65 61 74 20  |SWI Sound_QBeat |
0000f260  30 2e 00 00 44 41 54 41  c7 00 00 00 62 62 63 5f  |0...DATA....bbc_|
0000f270  67 65 74 62 65 61 74 73  0a 53 79 6e 74 61 78 3a  |getbeats.Syntax:|
0000f280  09 69 6e 74 20 62 62 63  5f 67 65 74 62 65 61 74  |.int bbc_getbeat|
0000f290  73 20 28 76 6f 69 64 29  3b 0a 48 65 61 64 65 72  |s (void);.Header|
0000f2a0  3a 09 3c 62 62 63 2e 68  3d 3e 62 62 63 3e 0a 0a  |:.<bbc.h=>bbc>..|
0000f2b0  52 65 74 75 72 6e 73 3a  09 54 68 65 20 63 75 72  |Returns:.The cur|
0000f2c0  72 65 6e 74 20 62 61 72  20 6c 65 6e 67 74 68 2e  |rent bar length.|
0000f2d0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0000f2e0  72 65 61 64 73 20 74 68  65 20 63 75 72 72 65 6e  |reads the curren|
0000f2f0  74 20 62 61 72 20 6c 65  6e 67 74 68 2e 20 49 74  |t bar length. It|
0000f300  20 69 73 20 65 71 75 69  76 61 6c 65 6e 74 20 74  | is equivalent t|
0000f310  6f 20 74 68 65 20 53 57  49 20 53 6f 75 6e 64 5f  |o the SWI Sound_|
0000f320  51 42 65 61 74 20 28 2d  31 29 2e 00 44 41 54 41  |QBeat (-1)..DATA|
0000f330  3b 01 00 00 62 62 63 5f  67 65 74 74 65 6d 70 6f  |;...bbc_gettempo|
0000f340  0a 53 79 6e 74 61 78 3a  09 69 6e 74 20 62 62 63  |.Syntax:.int bbc|
0000f350  5f 67 65 74 74 65 6d 70  6f 20 28 76 6f 69 64 29  |_gettempo (void)|
0000f360  3b 0a 48 65 61 64 65 72  3a 09 3c 62 62 63 2e 68  |;.Header:.<bbc.h|
0000f370  3d 3e 62 62 63 3e 0a 0a  52 65 74 75 72 6e 73 3a  |=>bbc>..Returns:|
0000f380  09 54 68 65 20 63 75 72  72 65 6e 74 20 74 65 6d  |.The current tem|
0000f390  70 6f 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |po...This functi|
0000f3a0  6f 6e 20 72 65 61 64 73  20 74 68 65 20 74 65 6d  |on reads the tem|
0000f3b0  70 6f 20 66 6f 72 20 74  68 65 20 53 6f 75 6e 64  |po for the Sound|
0000f3c0  20 53 63 68 65 64 75 6c  65 72 20 69 65 20 74 68  | Scheduler ie th|
0000f3d0  65 20 72 61 74 65 20 61  74 20 77 68 69 63 68 20  |e rate at which |
0000f3e0  74 68 65 20 62 65 61 74  20 63 6f 75 6e 74 65 72  |the beat counter|
0000f3f0  20 63 6f 75 6e 74 73 2e  20 54 68 65 20 64 65 66  | counts. The def|
0000f400  61 75 6c 74 20 69 73 20  30 78 31 30 30 30 20 77  |ault is 0x1000 w|
0000f410  68 69 63 68 20 63 6f 72  72 65 73 70 6f 6e 64 73  |hich corresponds|
0000f420  20 74 6f 20 6f 6e 65 20  62 65 61 74 20 70 65 72  | to one beat per|
0000f430  20 63 65 6e 74 69 73 65  63 6f 6e 64 2e 20 30 78  | centisecond. 0x|
0000f440  32 30 30 30 20 69 73 20  74 77 6f 20 62 65 61 74  |2000 is two beat|
0000f450  73 20 70 65 72 20 63 65  6e 74 69 73 65 63 6f 6e  |s per centisecon|
0000f460  64 2c 20 65 74 63 2e 00  44 41 54 41 fb 00 00 00  |d, etc..DATA....|
0000f470  47 72 61 70 68 69 63 73  20 4f 75 74 70 75 74 20  |Graphics Output |
0000f480  46 75 6e 63 74 69 6f 6e  73 0a 23 54 61 62 6c 65  |Functions.#Table|
0000f490  20 36 20 31 36 0a 62 62  63 5f 63 69 72 63 6c 65  | 6 16.bbc_circle|
0000f4a0  0a 62 62 63 5f 63 69 72  63 6c 65 66 69 6c 6c 0a  |.bbc_circlefill.|
0000f4b0  62 62 63 5f 63 6c 67 0a  62 62 63 5f 64 72 61 77  |bbc_clg.bbc_draw|
0000f4c0  0a 62 62 63 5f 64 72 61  77 62 79 0a 62 62 63 5f  |.bbc_drawby.bbc_|
0000f4d0  66 69 6c 6c 0a 62 62 63  5f 67 63 6f 6c 0a 62 62  |fill.bbc_gcol.bb|
0000f4e0  63 5f 67 77 69 6e 64 6f  77 0a 62 62 63 5f 6d 6f  |c_gwindow.bbc_mo|
0000f4f0  64 65 0a 62 62 63 5f 6d  6f 76 65 0a 62 62 63 5f  |de.bbc_move.bbc_|
0000f500  6d 6f 76 65 62 79 0a 62  62 63 5f 6f 72 69 67 69  |moveby.bbc_origi|
0000f510  6e 0a 62 62 63 5f 70 61  6c 65 74 74 65 0a 62 62  |n.bbc_palette.bb|
0000f520  63 5f 70 6c 6f 74 0a 62  62 63 5f 70 6f 69 6e 74  |c_plot.bbc_point|
0000f530  0a 62 62 63 5f 72 65 63  74 61 6e 67 6c 65 0a 62  |.bbc_rectangle.b|
0000f540  62 63 5f 72 65 63 74 61  6e 67 6c 65 66 69 6c 6c  |bc_rectanglefill|
0000f550  0a 62 62 63 5f 74 69 6e  74 0a 23 45 6e 64 54 61  |.bbc_tint.#EndTa|
0000f560  62 6c 65 00 44 41 54 41  1f 01 00 00 47 72 61 70  |ble.DATA....Grap|
0000f570  68 69 63 73 20 4f 75 74  70 75 74 20 46 75 6e 63  |hics Output Func|
0000f580  74 69 6f 6e 73 0a 23 54  61 62 6c 65 20 36 20 31  |tions.#Table 6 1|
0000f590  36 0a 3c 62 62 63 5f 63  69 72 63 6c 65 3e 0a 3c  |6.<bbc_circle>.<|
0000f5a0  62 62 63 5f 63 69 72 63  6c 65 66 69 6c 6c 3e 0a  |bbc_circlefill>.|
0000f5b0  3c 62 62 63 5f 63 6c 67  3e 0a 3c 62 62 63 5f 64  |<bbc_clg>.<bbc_d|
0000f5c0  72 61 77 3e 0a 3c 62 62  63 5f 64 72 61 77 62 79  |raw>.<bbc_drawby|
0000f5d0  3e 0a 3c 62 62 63 5f 66  69 6c 6c 3e 0a 3c 62 62  |>.<bbc_fill>.<bb|
0000f5e0  63 5f 67 63 6f 6c 3e 0a  3c 62 62 63 5f 67 77 69  |c_gcol>.<bbc_gwi|
0000f5f0  6e 64 6f 77 3e 0a 3c 62  62 63 5f 6d 6f 64 65 3e  |ndow>.<bbc_mode>|
0000f600  0a 3c 62 62 63 5f 6d 6f  76 65 3e 0a 3c 62 62 63  |.<bbc_move>.<bbc|
0000f610  5f 6d 6f 76 65 62 79 3e  0a 3c 62 62 63 5f 6f 72  |_moveby>.<bbc_or|
0000f620  69 67 69 6e 3e 0a 3c 62  62 63 5f 70 61 6c 65 74  |igin>.<bbc_palet|
0000f630  74 65 3e 0a 3c 62 62 63  5f 70 6c 6f 74 3e 0a 3c  |te>.<bbc_plot>.<|
0000f640  62 62 63 5f 70 6f 69 6e  74 3e 0a 3c 62 62 63 5f  |bbc_point>.<bbc_|
0000f650  72 65 63 74 61 6e 67 6c  65 3e 0a 3c 62 62 63 5f  |rectangle>.<bbc_|
0000f660  72 65 63 74 61 6e 67 6c  65 66 69 6c 6c 3e 0a 3c  |rectanglefill>.<|
0000f670  62 62 63 5f 74 69 6e 74  3e 0a 23 45 6e 64 54 61  |bbc_tint>.#EndTa|
0000f680  62 6c 65 00 44 41 54 41  8b 01 00 00 62 62 63 5f  |ble.DATA....bbc_|
0000f690  67 77 69 6e 64 6f 77 0a  53 79 6e 74 61 78 3a 09  |gwindow.Syntax:.|
0000f6a0  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 62 62 63 5f  |<os_error> *bbc_|
0000f6b0  67 77 69 6e 64 6f 77 20  28 69 6e 74 20 78 6d 69  |gwindow (int xmi|
0000f6c0  6e 2c 20 69 6e 74 20 79  6d 69 6e 2c 20 69 6e 74  |n, int ymin, int|
0000f6d0  20 78 6d 61 78 2c 20 69  6e 74 20 79 6d 61 78 29  | xmax, int ymax)|
0000f6e0  3b 0a 48 65 61 64 65 72  3a 09 3c 62 62 63 2e 68  |;.Header:.<bbc.h|
0000f6f0  3d 3e 62 62 63 3e 0a 0a  52 65 74 75 72 6e 73 3a  |=>bbc>..Returns:|
0000f700  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
0000f710  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
0000f720  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
0000f730  74 69 6f 6e 20 64 65 66  69 6e 65 73 20 74 68 65  |tion defines the|
0000f740  20 63 75 72 72 65 6e 74  20 67 72 61 70 68 69 63  | current graphic|
0000f750  73 20 77 69 6e 64 6f 77  20 74 6f 20 62 65 20 74  |s window to be t|
0000f760  68 65 20 72 65 63 74 61  6e 67 6c 65 20 77 68 6f  |he rectangle who|
0000f770  73 65 20 63 6f 6f 72 64  69 6e 61 74 65 73 20 61  |se coordinates a|
0000f780  72 65 20 67 69 76 65 6e  20 28 6d 69 6e 69 6d 75  |re given (minimu|
0000f790  6d 2f 6d 61 78 69 6d 75  6d 20 78 2f 79 29 2e 20  |m/maximum x/y). |
0000f7a0  54 68 65 20 63 6f 6f 72  64 69 6e 61 74 65 73 20  |The coordinates |
0000f7b0  61 72 65 20 72 65 6c 61  74 69 76 65 20 74 6f 20  |are relative to |
0000f7c0  74 68 65 20 62 6f 74 74  6f 6d 20 6c 65 66 74 20  |the bottom left |
0000f7d0  6f 66 20 74 68 65 20 73  63 72 65 65 6e 2e 0a 0a  |of the screen...|
0000f7e0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 69 73  |This function is|
0000f7f0  20 65 71 75 69 76 61 6c  65 6e 74 20 74 6f 20 3c  | equivalent to <|
0000f800  56 44 55 20 32 34 3d 3e  56 44 55 3a 32 34 3e 00  |VDU 24=>VDU:24>.|
0000f810  44 41 54 41 6d 03 00 00  62 62 63 5f 69 6e 6b 65  |DATAm...bbc_inke|
0000f820  79 0a 53 79 6e 74 61 78  3a 09 69 6e 74 20 62 62  |y.Syntax:.int bb|
0000f830  63 5f 69 6e 6b 65 79 20  28 69 6e 74 20 6e 29 3b  |c_inkey (int n);|
0000f840  0a 48 65 61 64 65 72 3a  09 3c 62 62 63 2e 68 3d  |.Header:.<bbc.h=|
0000f850  3e 62 62 63 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |>bbc>..Returns:.|
0000f860  6e 3e 3d 30 09 54 68 65  20 63 68 61 72 61 63 74  |n>=0.The charact|
0000f870  65 72 20 72 65 61 64 2e  0a 09 6e 5c 3c 30 09 2d  |er read...n\<0.-|
0000f880  31 20 69 66 20 74 68 65  20 6b 65 79 20 69 73 20  |1 if the key is |
0000f890  62 65 69 6e 67 20 70 72  65 73 73 65 64 2c 20 6f  |being pressed, o|
0000f8a0  72 20 30 20 69 66 20 6e  6f 74 2e 0a 09 6e 3d 3d  |r 0 if not...n==|
0000f8b0  32 35 36 09 54 68 65 20  4f 70 65 72 61 74 69 6e  |256.The Operatin|
0000f8c0  67 20 53 79 73 74 65 6d  20 76 65 72 73 69 6f 6e  |g System version|
0000f8d0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
0000f8e0  20 65 69 74 68 65 72 20  72 65 61 64 73 20 61 20  | either reads a |
0000f8f0  63 68 61 72 61 63 74 65  72 20 66 72 6f 6d 20 74  |character from t|
0000f900  68 65 20 69 6e 70 75 74  20 73 74 72 65 61 6d 20  |he input stream |
0000f910  77 69 74 68 69 6e 20 61  20 74 69 6d 65 20 6c 69  |within a time li|
0000f920  6d 69 74 2c 20 74 65 73  74 73 20 61 20 73 70 65  |mit, tests a spe|
0000f930  63 69 66 69 63 20 6b 65  79 2c 20 6f 72 20 72 65  |cific key, or re|
0000f940  61 64 73 20 74 68 65 20  4f 70 65 72 61 74 69 6e  |ads the Operatin|
0000f950  67 20 53 79 73 74 65 6d  20 76 65 72 73 69 6f 6e  |g System version|
0000f960  2e 0a 0a 54 6f 20 72 65  61 64 20 61 20 63 68 61  |...To read a cha|
0000f970  72 61 63 74 65 72 20 77  69 74 68 69 6e 20 61 20  |racter within a |
0000f980  74 69 6d 65 20 6c 69 6d  69 74 2c 20 2f 6e 2f 20  |time limit, /n/ |
0000f990  73 68 6f 75 6c 64 20 62  65 20 74 68 65 20 74 69  |should be the ti|
0000f9a0  6d 65 20 6c 69 6d 69 74  20 69 6e 20 63 65 6e 74  |me limit in cent|
0000f9b0  69 73 65 63 6f 6e 64 73  20 28 75 70 20 74 6f 20  |iseconds (up to |
0000f9c0  33 32 37 36 37 20 2d 20  69 74 20 63 61 6e 20 62  |32767 - it can b|
0000f9d0  65 20 30 29 2e 20 54 68  65 20 70 72 6f 67 72 61  |e 0). The progra|
0000f9e0  6d 20 77 69 6c 6c 20 77  61 69 74 20 75 6e 74 69  |m will wait unti|
0000f9f0  6c 20 61 20 63 68 61 72  61 63 74 65 72 20 69 73  |l a character is|
0000fa00  20 69 6e 70 75 74 2c 20  66 6f 72 20 61 20 6d 61  | input, for a ma|
0000fa10  78 69 6d 75 6d 20 6f 66  20 2f 6e 2f 20 63 65 6e  |ximum of /n/ cen|
0000fa20  74 69 73 65 63 6f 6e 64  73 2c 20 61 6e 64 20 72  |tiseconds, and r|
0000fa30  65 74 75 72 6e 20 74 68  65 20 41 53 43 49 49 20  |eturn the ASCII |
0000fa40  76 61 6c 75 65 20 6f 66  20 74 68 65 20 6b 65 79  |value of the key|
0000fa50  2e 0a 0a 54 6f 20 74 65  73 74 20 61 20 73 70 65  |...To test a spe|
0000fa60  63 69 66 69 63 20 6b 65  79 2c 20 2f 6e 2f 20 73  |cific key, /n/ s|
0000fa70  68 6f 75 6c 64 20 62 65  20 61 20 76 61 6c 75 65  |hould be a value|
0000fa80  20 66 72 6f 6d 20 2d 32  35 35 20 74 6f 20 2d 31  | from -255 to -1|
0000fa90  2c 20 61 6e 64 20 74 68  65 20 6b 65 79 20 72 65  |, and the key re|
0000faa0  70 72 65 73 65 6e 74 65  64 20 62 79 20 74 68 61  |presented by tha|
0000fab0  74 20 76 61 6c 75 65 20  77 69 6c 6c 20 62 65 20  |t value will be |
0000fac0  74 65 73 74 65 64 2e 20  54 68 65 20 76 61 6c 75  |tested. The valu|
0000fad0  65 20 73 68 6f 75 6c 64  20 62 65 20 28 2d 31 20  |e should be (-1 |
0000fae0  2d 20 3c 6b 65 79 20 6e  72 3d 3e 53 57 49 3a 6f  |- <key nr=>SWI:o|
0000faf0  73 5f 62 79 74 65 31 32  31 61 3e 29 0a 0a 54 6f  |s_byte121a>)..To|
0000fb00  20 72 65 61 64 20 74 68  65 20 4f 53 20 76 65 72  | read the OS ver|
0000fb10  73 69 6f 6e 2c 20 6e 20  3d 20 2d 32 35 36 2e 0a  |sion, n = -256..|
0000fb20  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 69  |.This function i|
0000fb30  73 20 65 71 75 69 76 61  6c 65 6e 74 20 74 6f 20  |s equivalent to |
0000fb40  3c 4f 53 5f 42 79 74 65  3d 3e 53 57 49 3a 4f 53  |<OS_Byte=>SWI:OS|
0000fb50  5f 42 79 74 65 3e 20 31  32 39 2c 20 6f 72 20 3c  |_Byte> 129, or <|
0000fb60  49 4e 4b 45 59 3d 3e 42  61 73 69 63 3a 49 4e 4b  |INKEY=>Basic:INK|
0000fb70  45 59 3e 20 69 6e 20 42  61 73 69 63 2e 00 00 00  |EY> in Basic....|
0000fb80  44 41 54 41 f1 00 00 00  4d 69 73 63 65 6c 6c 61  |DATA....Miscella|
0000fb90  6e 65 6f 75 73 20 46 75  6e 63 74 69 6f 6e 73 0a  |neous Functions.|
0000fba0  23 54 61 62 6c 65 20 37  20 31 35 0a 3c 62 62 63  |#Table 7 15.<bbc|
0000fbb0  5f 61 64 76 61 6c 3e 0a  3c 62 62 63 5f 63 75 72  |_adval>.<bbc_cur|
0000fbc0  73 6f 72 3e 0a 3c 62 62  63 5f 67 65 74 3e 0a 3c  |sor>.<bbc_get>.<|
0000fbd0  62 62 63 5f 67 65 74 62  65 61 74 3e 0a 3c 62 62  |bbc_getbeat>.<bb|
0000fbe0  63 5f 67 65 74 62 65 61  74 73 3e 0a 3c 62 62 63  |c_getbeats>.<bbc|
0000fbf0  5f 67 65 74 74 65 6d 70  6f 3e 0a 3c 62 62 63 5f  |_gettempo>.<bbc_|
0000fc00  69 6e 6b 65 79 3e 0a 3c  62 62 63 5f 73 65 74 62  |inkey>.<bbc_setb|
0000fc10  65 61 74 73 3e 0a 3c 62  62 63 5f 73 65 74 74 65  |eats>.<bbc_sette|
0000fc20  6d 70 6f 3e 0a 3c 62 62  63 5f 73 6f 75 6e 64 3e  |mpo>.<bbc_sound>|
0000fc30  0a 3c 62 62 63 5f 73 6f  75 6e 64 6f 66 66 3e 0a  |.<bbc_soundoff>.|
0000fc40  3c 62 62 63 5f 73 6f 75  6e 64 6f 6e 3e 0a 3c 62  |<bbc_soundon>.<b|
0000fc50  62 63 5f 73 74 65 72 65  6f 3e 0a 3c 62 62 63 5f  |bc_stereo>.<bbc_|
0000fc60  76 6f 69 63 65 73 3e 0a  23 45 6e 64 54 61 62 6c  |voices>.#EndTabl|
0000fc70  65 00 00 00 44 41 54 41  15 01 00 00 62 62 63 5f  |e...DATA....bbc_|
0000fc80  6d 6f 64 65 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |mode.Syntax:.<os|
0000fc90  5f 65 72 72 6f 72 3e 20  2a 62 62 63 5f 6d 6f 64  |_error> *bbc_mod|
0000fca0  65 20 28 69 6e 74 20 6d  29 3b 0a 48 65 61 64 65  |e (int m);.Heade|
0000fcb0  72 3a 09 3c 62 62 63 2e  68 3d 3e 62 62 63 3e 0a  |r:.<bbc.h=>bbc>.|
0000fcc0  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
0000fcd0  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
0000fce0  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
0000fcf0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 63 68  |This function ch|
0000fd00  61 6e 67 65 73 20 74 68  65 20 63 75 72 72 65 6e  |anges the curren|
0000fd10  74 20 3c 73 63 72 65 65  6e 20 6d 6f 64 65 3d 3e  |t <screen mode=>|
0000fd20  56 44 55 3a 32 32 61 3e  20 74 6f 20 74 68 65 20  |VDU:22a> to the |
0000fd30  6f 6e 65 20 73 70 65 63  69 66 69 65 64 20 69 6e  |one specified in|
0000fd40  20 6d 2e 20 49 74 20 69  73 20 65 71 75 69 76 61  | m. It is equiva|
0000fd50  6c 65 6e 74 20 74 6f 20  3c 4d 4f 44 45 3d 3e 42  |lent to <MODE=>B|
0000fd60  61 73 69 63 3a 4d 4f 44  45 3e 20 69 6e 20 42 61  |asic:MODE> in Ba|
0000fd70  73 69 63 2c 20 6f 72 20  3c 56 44 55 20 32 32 3d  |sic, or <VDU 22=|
0000fd80  3e 56 44 55 3a 32 32 3e  2e 00 00 00 44 41 54 41  |>VDU:22>....DATA|
0000fd90  66 01 00 00 62 62 63 5f  6d 6f 64 65 76 61 72 0a  |f...bbc_modevar.|
0000fda0  53 79 6e 74 61 78 3a 09  69 6e 74 20 62 62 63 5f  |Syntax:.int bbc_|
0000fdb0  6d 6f 64 65 76 61 72 20  28 69 6e 74 20 6d 6f 64  |modevar (int mod|
0000fdc0  65 2c 20 69 6e 74 20 76  61 72 29 3b 0a 48 65 61  |e, int var);.Hea|
0000fdd0  64 65 72 3a 09 3c 62 62  63 2e 68 3d 3e 62 62 63  |der:.<bbc.h=>bbc|
0000fde0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 54 68 65 20  |>..Returns:.The |
0000fdf0  76 61 6c 75 65 20 6f 66  20 74 68 65 20 3c 6d 6f  |value of the <mo|
0000fe00  64 65 20 76 61 72 69 61  62 6c 65 3d 3e 62 62 63  |de variable=>bbc|
0000fe10  5f 6d 6f 64 65 76 61 72  5f 3e 2e 0a 0a 54 68 69  |_modevar_>...Thi|
0000fe20  73 20 66 75 6e 63 74 69  6f 6e 20 72 65 61 64 73  |s function reads|
0000fe30  20 74 68 65 20 76 61 6c  75 65 20 6f 66 20 61 20  | the value of a |
0000fe40  73 69 6e 67 6c 65 20 6d  6f 64 65 20 76 61 72 69  |single mode vari|
0000fe50  61 62 6c 65 20 66 6f 72  20 74 68 65 20 67 69 76  |able for the giv|
0000fe60  65 6e 20 6d 6f 64 65 2e  20 49 66 20 6d 6f 64 65  |en mode. If mode|
0000fe70  20 69 73 20 2d 31 20 74  68 65 6e 20 74 68 65 20  | is -1 then the |
0000fe80  63 75 72 72 65 6e 74 20  6d 6f 64 65 20 77 69 6c  |current mode wil|
0000fe90  6c 20 62 65 20 75 73 65  64 2e 0a 0a 54 68 69 73  |l be used...This|
0000fea0  20 66 75 6e 63 74 69 6f  6e 20 69 73 20 65 71 75  | function is equ|
0000feb0  69 76 61 6c 65 6e 74 20  74 6f 20 74 68 65 20 53  |ivalent to the S|
0000fec0  57 49 20 3c 4f 53 5f 52  65 61 64 4d 6f 64 65 56  |WI <OS_ReadModeV|
0000fed0  61 72 69 61 62 6c 65 3d  3e 53 57 49 3a 4f 53 5f  |ariable=>SWI:OS_|
0000fee0  52 65 61 64 4d 6f 64 65  56 61 72 69 61 62 6c 65  |ReadModeVariable|
0000fef0  3e 2e 00 00 44 41 54 41  b9 00 00 00 4d 6f 64 65  |>...DATA....Mode|
0000ff00  20 56 61 72 69 61 62 6c  65 73 0a 46 6f 72 20 65  | Variables.For e|
0000ff10  61 63 68 20 6f 66 20 74  68 65 20 3c 4d 6f 64 65  |ach of the <Mode|
0000ff20  20 76 61 72 69 61 62 6c  65 73 3d 3e 53 57 49 3a  | variables=>SWI:|
0000ff30  4f 53 5f 52 65 61 64 4d  6f 64 65 56 61 72 69 61  |OS_ReadModeVaria|
0000ff40  62 6c 65 2e 76 61 72 69  61 62 6c 65 73 3e 20 28  |ble.variables> (|
0000ff50  30 2d 31 32 29 20 69 73  20 64 65 66 69 6e 65 64  |0-12) is defined|
0000ff60  20 61 6e 20 65 6e 75 6d  20 74 79 70 65 2e 20 54  | an enum type. T|
0000ff70  68 65 20 6e 61 6d 65 73  20 61 72 65 20 74 68 65  |he names are the|
0000ff80  20 6e 61 6d 65 73 20 6f  66 20 74 68 65 20 76 61  | names of the va|
0000ff90  72 69 61 62 6c 65 73 20  70 72 65 66 69 78 65 64  |riables prefixed|
0000ffa0  20 77 69 74 68 20 22 62  62 63 5f 22 2e 00 00 00  | with "bbc_"....|
0000ffb0  44 41 54 41 f5 00 00 00  62 62 63 5f 6d 6f 76 65  |DATA....bbc_move|
0000ffc0  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
0000ffd0  6f 72 3e 20 2a 62 62 63  5f 6d 6f 76 65 20 28 69  |or> *bbc_move (i|
0000ffe0  6e 74 20 78 2c 20 69 6e  74 20 79 29 3b 0a 48 65  |nt x, int y);.He|
0000fff0  61 64 65 72 3a 09 3c 62  62 63 2e 68 3d 3e 62 62  |ader:.<bbc.h=>bb|
00010000  63 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |c>..Returns:.Poi|
00010010  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
00010020  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
00010030  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00010040  20 6d 6f 76 65 73 20 74  68 65 20 67 72 61 70 68  | moves the graph|
00010050  69 63 73 20 63 75 72 73  6f 72 20 74 6f 20 74 68  |ics cursor to th|
00010060  65 20 70 6f 73 69 74 69  6f 6e 20 67 69 76 65 6e  |e position given|
00010070  20 62 79 20 28 78 2c 79  29 2e 20 45 71 75 69 76  | by (x,y). Equiv|
00010080  61 6c 65 6e 74 20 74 6f  20 3c 4d 4f 56 45 3d 3e  |alent to <MOVE=>|
00010090  42 61 73 69 63 3a 4d 4f  56 45 3e 20 69 6e 20 42  |Basic:MOVE> in B|
000100a0  61 73 69 63 2e 00 00 00  44 41 54 41 0b 01 00 00  |asic....DATA....|
000100b0  62 62 63 5f 6d 6f 76 65  62 79 0a 53 79 6e 74 61  |bbc_moveby.Synta|
000100c0  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 62  |x:.<os_error> *b|
000100d0  62 63 5f 6d 6f 76 65 62  79 20 28 69 6e 74 20 78  |bc_moveby (int x|
000100e0  2c 20 69 6e 74 20 79 29  3b 0a 48 65 61 64 65 72  |, int y);.Header|
000100f0  3a 09 3c 62 62 63 2e 68  3d 3e 62 62 63 3e 0a 0a  |:.<bbc.h=>bbc>..|
00010100  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00010110  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00010120  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00010130  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 6d 6f 76  |his function mov|
00010140  65 73 20 74 68 65 20 67  72 61 70 68 69 63 73 20  |es the graphics |
00010150  63 75 72 73 6f 72 20 66  72 6f 6d 20 74 68 65 20  |cursor from the |
00010160  63 75 72 72 65 6e 74 20  70 6f 73 69 74 69 6f 6e  |current position|
00010170  20 72 65 6c 61 74 69 76  65 6c 79 20 62 79 20 28  | relatively by (|
00010180  78 2c 79 29 2e 20 45 71  75 69 76 61 6c 65 6e 74  |x,y). Equivalent|
00010190  20 74 6f 20 3c 4d 4f 56  45 20 42 59 3d 3e 42 61  | to <MOVE BY=>Ba|
000101a0  73 69 63 3a 4d 4f 56 45  3e 20 69 6e 20 42 61 73  |sic:MOVE> in Bas|
000101b0  69 63 2e 00 44 41 54 41  78 01 00 00 62 62 63 5f  |ic..DATAx...bbc_|
000101c0  6f 72 69 67 69 6e 0a 53  79 6e 74 61 78 3a 09 3c  |origin.Syntax:.<|
000101d0  6f 73 5f 65 72 72 6f 72  3e 20 2a 62 62 63 5f 6f  |os_error> *bbc_o|
000101e0  72 69 67 69 6e 20 28 69  6e 74 20 78 2c 20 69 6e  |rigin (int x, in|
000101f0  74 20 79 29 3b 0a 48 65  61 64 65 72 3a 09 3c 62  |t y);.Header:.<b|
00010200  62 63 2e 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |bc.h>..Returns:.|
00010210  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
00010220  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
00010230  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
00010240  69 6f 6e 20 6d 6f 76 65  73 20 74 68 65 20 63 75  |ion moves the cu|
00010250  72 72 65 6e 74 20 67 72  61 70 68 69 63 73 20 6f  |rrent graphics o|
00010260  72 69 67 69 6e 20 28 69  65 20 74 68 65 20 70 6f  |rigin (ie the po|
00010270  73 69 74 69 6f 6e 20 6f  66 20 28 30 2c 30 29 20  |sition of (0,0) |
00010280  6f 6e 20 74 68 65 20 73  63 72 65 65 6e 29 20 74  |on the screen) t|
00010290  6f 20 28 78 2c 79 29 2e  20 54 68 65 20 63 6f 6f  |o (x,y). The coo|
000102a0  72 64 69 6e 61 74 65 73  20 61 72 65 20 67 69 76  |rdinates are giv|
000102b0  65 6e 20 72 65 6c 61 74  69 76 65 20 74 6f 20 74  |en relative to t|
000102c0  68 65 20 73 63 72 65 65  6e 20 62 6f 74 74 6f 6d  |he screen bottom|
000102d0  20 6c 65 66 74 2e 0a 0a  54 68 69 73 20 66 75 6e  | left...This fun|
000102e0  63 74 69 6f 6e 20 69 73  20 65 71 75 69 76 61 6c  |ction is equival|
000102f0  65 6e 74 20 74 6f 20 3c  4f 52 49 47 49 4e 3d 3e  |ent to <ORIGIN=>|
00010300  42 61 73 69 63 3a 4f 52  49 47 49 4e 3e 20 69 6e  |Basic:ORIGIN> in|
00010310  20 42 61 73 69 63 2c 20  6f 72 20 3c 56 44 55 20  | Basic, or <VDU |
00010320  32 39 3d 3e 56 44 55 3a  32 39 3e 2e 44 41 54 41  |29=>VDU:29>.DATA|
00010330  eb 02 00 00 62 62 63 5f  70 61 6c 65 74 74 65 0a  |....bbc_palette.|
00010340  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
00010350  72 3e 20 2a 62 62 63 5f  70 61 6c 65 74 74 65 20  |r> *bbc_palette |
00010360  28 69 6e 74 20 63 2c 20  69 6e 74 20 6d 2c 20 69  |(int c, int m, i|
00010370  6e 74 20 72 2c 20 69 6e  74 20 67 2c 20 69 6e 74  |nt r, int g, int|
00010380  20 62 29 3b 0a 48 65 61  64 65 72 3a 09 3c 62 62  | b);.Header:.<bb|
00010390  63 2e 68 3d 3e 62 62 63  3e 0a 0a 52 65 74 75 72  |c.h=>bbc>..Retur|
000103a0  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
000103b0  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
000103c0  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
000103d0  75 6e 63 74 69 6f 6e 20  72 65 64 65 66 69 6e 65  |unction redefine|
000103e0  73 20 74 68 65 20 63 6f  6c 6f 75 72 20 73 70 65  |s the colour spe|
000103f0  63 69 66 69 65 64 20 69  6e 20 63 20 65 69 74 68  |cified in c eith|
00010400  65 72 20 74 6f 20 74 68  65 20 70 68 79 73 69 63  |er to the physic|
00010410  61 6c 20 63 6f 6c 6f 75  72 20 69 6e 20 2f 6d 2f  |al colour in /m/|
00010420  20 28 69 66 20 6d 5c 3c  31 36 29 20 6f 72 20 74  | (if m\<16) or t|
00010430  6f 20 74 68 65 20 63 6f  6c 6f 75 72 20 77 68 6f  |o the colour who|
00010440  73 65 20 72 65 64 2c 20  67 72 65 65 6e 2c 20 61  |se red, green, a|
00010450  6e 64 20 62 6c 75 65 20  63 6f 6d 70 6f 6e 65 6e  |nd blue componen|
00010460  74 73 20 61 72 65 20 67  69 76 65 6e 20 62 79 20  |ts are given by |
00010470  2f 72 2f 2c 20 2f 67 2f  2c 20 61 6e 64 20 2f 62  |/r/, /g/, and /b|
00010480  2f 2e 20 2f 6d 2f 20 63  61 6e 20 62 65 20 6f 6e  |/. /m/ can be on|
00010490  65 20 6f 66 20 74 68 65  20 66 6f 6c 6c 6f 77 69  |e of the followi|
000104a0  6e 67 3a 0a 0a 23 54 61  62 0a 20 20 30 2d 31 35  |ng:..#Tab.  0-15|
000104b0  09 43 6f 6c 6f 75 72 20  63 20 69 73 20 72 65 64  |.Colour c is red|
000104c0  65 66 69 6e 65 64 20 74  6f 20 62 65 20 74 68 65  |efined to be the|
000104d0  20 70 68 79 73 69 63 61  6c 20 63 6f 6c 6f 75 72  | physical colour|
000104e0  20 69 6e 20 6d 2e 0a 20  20 31 36 09 43 6f 6c 6f  | in m..  16.Colo|
000104f0  75 72 20 63 20 69 73 20  72 65 64 65 66 69 6e 65  |ur c is redefine|
00010500  64 20 74 6f 20 28 72 2c  67 2c 62 29 2e 0a 20 20  |d to (r,g,b)..  |
00010510  31 37 09 46 69 72 73 74  20 66 6c 61 73 68 20 63  |17.First flash c|
00010520  6f 6c 6f 75 72 20 66 6f  72 20 63 20 69 73 20 28  |olour for c is (|
00010530  72 2c 67 2c 62 29 2e 0a  20 20 31 38 09 53 65 63  |r,g,b)..  18.Sec|
00010540  6f 6e 64 20 66 6c 61 73  68 20 63 6f 6c 6f 75 72  |ond flash colour|
00010550  20 66 6f 72 20 63 20 69  73 20 28 72 2c 67 2c 62  | for c is (r,g,b|
00010560  29 2e 0a 20 20 32 34 09  42 6f 72 64 65 72 20 63  |)..  24.Border c|
00010570  6f 6c 6f 75 72 20 69 73  20 28 72 2c 67 2c 62 29  |olour is (r,g,b)|
00010580  2e 20 63 20 69 73 20 69  67 6e 6f 72 65 64 2e 0a  |. c is ignored..|
00010590  20 20 32 35 09 4d 6f 75  73 65 20 63 6f 6c 6f 75  |  25.Mouse colou|
000105a0  72 20 63 20 69 73 20 28  72 2c 67 2c 62 29 2e 0a  |r c is (r,g,b)..|
000105b0  0a 31 32 38 20 61 64 64  65 64 20 74 6f 20 61 6e  |.128 added to an|
000105c0  79 20 6f 66 20 74 68 65  20 61 62 6f 76 65 20 73  |y of the above s|
000105d0  65 74 73 20 74 68 65 20  73 75 70 72 65 6d 61 63  |ets the supremac|
000105e0  79 20 62 69 74 2e 0a 0a  54 68 69 73 20 63 6f 6d  |y bit...This com|
000105f0  6d 61 6e 64 20 69 73 20  65 71 75 69 76 61 6c 65  |mand is equivale|
00010600  6e 74 20 74 6f 20 3c 56  44 55 20 31 39 3d 3e 56  |nt to <VDU 19=>V|
00010610  44 55 3a 31 39 3e 2e 00  44 41 54 41 16 01 00 00  |DU:19>..DATA....|
00010620  62 62 63 5f 70 6c 6f 74  0a 53 79 6e 74 61 78 3a  |bbc_plot.Syntax:|
00010630  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 62 62 63  |.<os_error> *bbc|
00010640  5f 70 6c 6f 74 20 28 69  6e 74 20 6e 2c 20 69 6e  |_plot (int n, in|
00010650  74 20 78 2c 20 69 6e 74  20 79 29 3b 0a 48 65 61  |t x, int y);.Hea|
00010660  64 65 72 3a 09 3c 62 62  63 2e 68 3d 3e 62 62 63  |der:.<bbc.h=>bbc|
00010670  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
00010680  20 64 6f 65 73 20 6c 6f  74 73 20 6f 66 20 74 68  | does lots of th|
00010690  69 6e 67 73 2e 20 49 74  20 69 73 20 74 68 65 20  |ings. It is the |
000106a0  73 61 6d 65 20 61 73 20  3c 50 4c 4f 54 3d 3e 42  |same as <PLOT=>B|
000106b0  61 73 69 63 3a 50 4c 4f  54 3e 20 69 6e 20 42 61  |asic:PLOT> in Ba|
000106c0  73 69 63 2c 20 6f 72 20  74 68 65 20 53 57 49 20  |sic, or the SWI |
000106d0  3c 4f 53 5f 50 6c 6f 74  3d 3e 53 57 49 3a 4f 53  |<OS_Plot=>SWI:OS|
000106e0  5f 50 6c 6f 74 3e 2e 20  2f 6e 2f 20 69 73 20 74  |_Plot>. /n/ is t|
000106f0  68 65 20 3c 70 6c 6f 74  20 74 79 70 65 3d 3e 62  |he <plot type=>b|
00010700  62 63 5f 70 6c 6f 74 63  6f 6d 5f 3e 2c 20 61 6e  |bc_plotcom_>, an|
00010710  64 20 2f 78 2f 20 61 6e  64 20 2f 79 2f 20 61 72  |d /x/ and /y/ ar|
00010720  65 20 63 6f 6f 72 64 69  6e 61 74 65 73 2e 00 00  |e coordinates...|
00010730  44 41 54 41 53 01 00 00  50 6c 6f 74 20 43 6f 64  |DATAS...Plot Cod|
00010740  65 20 42 6c 6f 63 6b 20  4d 6f 64 69 66 69 65 72  |e Block Modifier|
00010750  73 0a 54 68 65 20 66 6f  6c 6c 6f 77 69 6e 67 20  |s.The following |
00010760  6d 61 63 72 6f 73 20 61  72 65 20 64 65 66 69 6e  |macros are defin|
00010770  65 64 20 69 6e 20 3c 62  62 63 2e 68 3d 3e 62 62  |ed in <bbc.h=>bb|
00010780  63 3e 0a 0a 4d 61 63 72  6f 09 43 6f 64 65 09 4d  |c>..Macro.Code.M|
00010790  65 61 6e 69 6e 67 0a 23  6c 69 6e 65 0a 62 62 63  |eaning.#line.bbc|
000107a0  5f 42 4d 6f 76 65 52 65  6c 09 30 09 4d 6f 76 65  |_BMoveRel.0.Move|
000107b0  20 72 65 6c 61 74 69 76  65 0a 62 62 63 5f 42 4d  | relative.bbc_BM|
000107c0  6f 76 65 52 65 63 74 52  65 6c 09 31 09 4d 6f 76  |oveRectRel.1.Mov|
000107d0  65 20 72 65 63 74 61 6e  67 6c 65 20 72 65 6c 61  |e rectangle rela|
000107e0  74 69 76 65 0a 62 62 63  5f 42 43 6f 70 79 52 65  |tive.bbc_BCopyRe|
000107f0  63 74 52 65 6c 09 32 09  43 6f 70 79 20 72 65 63  |ctRel.2.Copy rec|
00010800  74 61 6e 67 6c 65 20 72  65 6c 61 74 69 76 65 0a  |tangle relative.|
00010810  0a 62 62 63 5f 42 4d 6f  76 65 41 62 73 09 34 09  |.bbc_BMoveAbs.4.|
00010820  4d 6f 76 65 20 61 62 73  6f 6c 75 74 65 0a 62 62  |Move absolute.bb|
00010830  63 5f 42 4d 6f 76 65 52  65 63 74 41 62 73 09 35  |c_BMoveRectAbs.5|
00010840  09 4d 6f 76 65 20 72 65  63 74 61 6e 67 6c 65 20  |.Move rectangle |
00010850  61 62 73 6f 6c 75 74 65  0a 62 62 63 5f 42 43 6f  |absolute.bbc_BCo|
00010860  70 79 52 65 63 74 41 62  73 09 36 09 43 6f 70 79  |pyRectAbs.6.Copy|
00010870  20 72 65 63 74 61 6e 67  6c 65 20 61 62 73 6f 6c  | rectangle absol|
00010880  75 74 65 00 44 41 54 41  5e 06 00 00 50 6c 6f 74  |ute.DATA^...Plot|
00010890  20 43 6f 6d 6d 61 6e 64  73 0a 54 68 65 20 66 6f  | Commands.The fo|
000108a0  6c 6c 6f 77 69 6e 67 20  6d 61 63 72 6f 73 20 61  |llowing macros a|
000108b0  72 65 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 62  |re defined in <b|
000108c0  62 63 2e 68 3d 3e 62 62  63 3e 3a 0a 0a 4d 61 63  |bc.h=>bbc>:..Mac|
000108d0  72 6f 09 43 6f 64 65 09  4d 65 61 6e 69 6e 67 0a  |ro.Code.Meaning.|
000108e0  23 6c 69 6e 65 0a 62 62  63 5f 53 6f 6c 69 64 42  |#line.bbc_SolidB|
000108f0  6f 74 68 09 30 78 30 30  09 53 6f 6c 69 64 20 6c  |oth.0x00.Solid l|
00010900  69 6e 65 20 69 6e 63 6c  75 64 69 6e 67 20 62 6f  |ine including bo|
00010910  74 68 20 65 6e 64 20 70  6f 69 6e 74 73 0a 62 62  |th end points.bb|
00010920  63 5f 53 6f 6c 69 64 45  78 46 69 6e 61 6c 09 30  |c_SolidExFinal.0|
00010930  78 30 38 09 53 6f 6c 69  64 20 6c 69 6e 65 20 65  |x08.Solid line e|
00010940  78 63 6c 75 64 69 6e 67  20 74 68 65 20 66 69 6e  |xcluding the fin|
00010950  61 6c 20 70 6f 69 6e 74  0a 62 62 63 5f 44 6f 74  |al point.bbc_Dot|
00010960  74 65 64 42 6f 74 68 09  30 78 31 30 09 44 6f 74  |tedBoth.0x10.Dot|
00010970  74 65 64 20 6c 69 6e 65  20 69 6e 63 6c 2e 20 62  |ted line incl. b|
00010980  6f 74 68 20 65 6e 64 20  70 6f 69 6e 74 73 2c 20  |oth end points, |
00010990  70 61 74 74 65 72 6e 20  72 65 73 74 61 72 74 65  |pattern restarte|
000109a0  64 0a 62 62 63 5f 44 6f  74 74 65 64 45 78 46 69  |d.bbc_DottedExFi|
000109b0  6e 61 6c 09 30 78 31 38  09 44 6f 74 74 65 64 20  |nal.0x18.Dotted |
000109c0  6c 69 6e 65 20 65 78 63  6c 2e 20 66 69 6e 61 6c  |line excl. final|
000109d0  20 70 6f 69 6e 74 2c 20  70 61 74 74 65 72 6e 20  | point, pattern |
000109e0  72 65 73 74 61 72 74 65  64 0a 62 62 63 5f 53 6f  |restarted.bbc_So|
000109f0  6c 69 64 45 78 49 6e 69  74 09 30 78 32 30 09 53  |lidExInit.0x20.S|
00010a00  6f 6c 69 64 20 6c 69 6e  65 20 65 78 63 6c 75 64  |olid line exclud|
00010a10  69 6e 67 20 74 68 65 20  69 6e 69 74 69 61 6c 20  |ing the initial |
00010a20  70 6f 69 6e 74 0a 62 62  63 5f 53 6f 6c 69 64 45  |point.bbc_SolidE|
00010a30  78 42 6f 74 68 09 30 78  32 38 09 53 6f 6c 69 64  |xBoth.0x28.Solid|
00010a40  20 6c 69 6e 65 20 65 78  63 6c 75 64 69 6e 67 20  | line excluding |
00010a50  62 6f 74 68 20 65 6e 64  20 70 6f 69 6e 74 73 0a  |both end points.|
00010a60  62 62 63 5f 44 6f 74 74  65 64 45 78 49 6e 69 74  |bbc_DottedExInit|
00010a70  09 30 78 33 30 09 44 6f  74 74 65 64 20 6c 69 6e  |.0x30.Dotted lin|
00010a80  65 20 65 78 63 6c 2e 20  69 6e 69 74 69 61 6c 20  |e excl. initial |
00010a90  70 6f 69 6e 74 2c 20 70  61 74 74 65 72 6e 20 63  |point, pattern c|
00010aa0  6f 6e 74 69 6e 75 65 64  0a 62 62 63 5f 44 6f 74  |ontinued.bbc_Dot|
00010ab0  74 65 64 45 78 42 6f 74  68 09 30 78 33 38 09 44  |tedExBoth.0x38.D|
00010ac0  6f 74 74 65 64 20 6c 69  6e 65 20 65 78 63 6c 2e  |otted line excl.|
00010ad0  20 62 6f 74 68 20 65 6e  64 20 70 6f 69 6e 74 73  | both end points|
00010ae0  2c 20 70 61 74 74 65 72  6e 20 63 6f 6e 74 69 6e  |, pattern contin|
00010af0  75 65 64 0a 62 62 63 5f  50 6f 69 6e 74 09 30 78  |ued.bbc_Point.0x|
00010b00  34 30 09 50 6f 69 6e 74  20 70 6c 6f 74 0a 62 62  |40.Point plot.bb|
00010b10  63 5f 48 6f 72 69 7a 4c  69 6e 65 46 69 6c 6c 4e  |c_HorizLineFillN|
00010b20  42 09 30 78 34 38 09 48  6f 72 69 7a 6f 6e 74 61  |B.0x48.Horizonta|
00010b30  6c 20 6c 69 6e 65 20 66  69 6c 6c 20 28 6c 65 66  |l line fill (lef|
00010b40  74 20 26 20 72 69 67 68  74 29 20 74 6f 20 6e 6f  |t & right) to no|
00010b50  6e 2d 62 61 63 6b 67 72  6f 75 6e 64 0a 62 62 63  |n-background.bbc|
00010b60  5f 54 72 69 61 6e 67 6c  65 46 69 6c 6c 09 30 78  |_TriangleFill.0x|
00010b70  35 30 09 54 72 69 61 6e  67 6c 65 20 66 69 6c 6c  |50.Triangle fill|
00010b80  0a 62 62 63 5f 48 6f 72  69 7a 4c 69 6e 65 46 69  |.bbc_HorizLineFi|
00010b90  6c 6c 42 09 30 78 35 38  09 48 6f 72 69 7a 6f 6e  |llB.0x58.Horizon|
00010ba0  74 61 6c 20 6c 69 6e 65  20 66 69 6c 6c 20 28 72  |tal line fill (r|
00010bb0  69 67 68 74 20 6f 6e 6c  79 29 20 74 6f 20 62 61  |ight only) to ba|
00010bc0  63 6b 67 72 6f 75 6e 64  0a 62 62 63 5f 52 65 63  |ckground.bbc_Rec|
00010bd0  74 61 6e 67 6c 65 46 69  6c 6c 09 30 78 36 30 09  |tangleFill.0x60.|
00010be0  52 65 63 74 61 6e 67 6c  65 20 66 69 6c 6c 0a 62  |Rectangle fill.b|
00010bf0  62 63 5f 48 6f 72 69 7a  4c 69 6e 65 46 69 6c 6c  |bc_HorizLineFill|
00010c00  46 09 30 78 36 38 09 48  6f 72 69 7a 6f 6e 74 61  |F.0x68.Horizonta|
00010c10  6c 20 6c 69 6e 65 20 66  69 6c 6c 20 28 6c 65 66  |l line fill (lef|
00010c20  74 20 26 20 72 69 67 68  74 29 20 74 6f 20 66 6f  |t & right) to fo|
00010c30  72 65 67 72 6f 75 6e 64  0a 62 62 63 5f 50 61 72  |reground.bbc_Par|
00010c40  61 6c 6c 65 6c 46 69 6c  6c 09 30 78 37 30 09 50  |allelFill.0x70.P|
00010c50  61 72 61 6c 6c 65 6c 6f  67 72 61 6d 20 66 69 6c  |arallelogram fil|
00010c60  6c 0a 62 62 63 5f 48 6f  72 69 7a 4c 69 6e 65 46  |l.bbc_HorizLineF|
00010c70  69 6c 6c 4e 46 09 30 78  37 38 09 48 6f 72 69 7a  |illNF.0x78.Horiz|
00010c80  6f 6e 74 61 6c 20 6c 69  6e 65 20 66 69 6c 6c 20  |ontal line fill |
00010c90  28 72 69 67 68 74 20 6f  6e 6c 79 29 20 74 6f 20  |(right only) to |
00010ca0  6e 6f 6e 2d 66 6f 72 65  67 72 6f 75 6e 64 0a 62  |non-foreground.b|
00010cb0  62 63 5f 46 6c 6f 6f 64  54 6f 42 61 63 6b 09 30  |bc_FloodToBack.0|
00010cc0  78 38 30 09 46 6c 6f 6f  64 20 74 6f 20 6e 6f 6e  |x80.Flood to non|
00010cd0  2d 62 61 63 6b 67 72 6f  75 6e 64 0a 62 62 63 5f  |-background.bbc_|
00010ce0  46 6c 6f 6f 64 54 6f 46  6f 72 65 09 30 78 38 38  |FloodToFore.0x88|
00010cf0  09 46 6c 6f 6f 64 20 74  6f 20 66 6f 72 65 67 72  |.Flood to foregr|
00010d00  6f 75 6e 64 0a 62 62 63  5f 43 69 72 63 6c 65 09  |ound.bbc_Circle.|
00010d10  30 78 39 30 09 43 69 72  63 6c 65 20 6f 75 74 6c  |0x90.Circle outl|
00010d20  69 6e 65 0a 62 62 63 5f  43 69 72 63 6c 65 46 69  |ine.bbc_CircleFi|
00010d30  6c 6c 09 30 78 39 38 09  43 69 72 63 6c 65 20 66  |ll.0x98.Circle f|
00010d40  69 6c 6c 0a 62 62 63 5f  43 69 72 63 6c 65 41 72  |ill.bbc_CircleAr|
00010d50  63 09 30 78 41 30 09 43  69 72 63 75 6c 61 72 20  |c.0xA0.Circular |
00010d60  61 72 63 0a 62 62 63 5f  53 65 67 6d 65 6e 74 09  |arc.bbc_Segment.|
00010d70  30 78 41 38 09 53 65 67  6d 65 6e 74 0a 62 62 63  |0xA8.Segment.bbc|
00010d80  5f 53 65 63 74 6f 72 09  30 78 42 30 09 53 65 63  |_Sector.0xB0.Sec|
00010d90  74 6f 72 0a 62 62 63 5f  42 6c 6f 63 6b 09 30 78  |tor.bbc_Block.0x|
00010da0  42 38 09 42 6c 6f 63 6b  20 63 6f 70 79 2f 6d 6f  |B8.Block copy/mo|
00010db0  76 65 20 28 68 61 73 20  64 69 66 66 65 72 65 6e  |ve (has differen|
00010dc0  74 20 3c 6d 6f 64 69 66  69 65 72 73 3d 3e 62 62  |t <modifiers=>bb|
00010dd0  63 5f 70 6c 6f 74 62 6d  6f 64 5f 3e 29 0a 62 62  |c_plotbmod_>).bb|
00010de0  63 5f 45 6c 6c 69 70 73  65 09 30 78 43 30 09 45  |c_Ellipse.0xC0.E|
00010df0  6c 6c 69 70 73 65 20 6f  75 74 6c 69 6e 65 0a 62  |llipse outline.b|
00010e00  62 63 5f 45 6c 6c 69 70  73 65 46 69 6c 6c 09 30  |bc_EllipseFill.0|
00010e10  78 43 38 09 45 6c 6c 69  70 73 65 20 66 69 6c 6c  |xC8.Ellipse fill|
00010e20  0a 62 62 63 5f 47 72 61  70 68 69 63 73 43 68 61  |.bbc_GraphicsCha|
00010e30  72 09 30 78 44 30 09 46  6f 6e 74 20 70 72 69 6e  |r.0xD0.Font prin|
00010e40  74 69 6e 67 20 28 6f 62  73 6f 6c 65 74 65 20 2d  |ting (obsolete -|
00010e50  20 64 6f 6e 27 74 20 75  73 65 29 0a 62 62 63 5f  | don't use).bbc_|
00010e60  53 70 72 69 74 65 50 6c  6f 74 09 30 78 45 38 09  |SpritePlot.0xE8.|
00010e70  53 70 72 69 74 65 20 70  6c 6f 74 0a 0a 4f 6e 74  |Sprite plot..Ont|
00010e80  6f 20 65 61 63 68 20 6f  66 20 74 68 65 73 65 20  |o each of these |
00010e90  63 61 6e 20 62 65 20 61  64 64 65 64 20 61 20 3c  |can be added a <|
00010ea0  6d 6f 64 69 66 69 65 72  3d 3e 62 62 63 5f 70 6c  |modifier=>bbc_pl|
00010eb0  6f 74 6d 6f 64 5f 3e 20  77 68 69 63 68 20 61 66  |otmod_> which af|
00010ec0  66 65 63 74 73 20 74 68  65 20 77 61 79 20 74 68  |fects the way th|
00010ed0  65 20 63 6f 6d 6d 61 6e  64 20 62 65 68 61 76 65  |e command behave|
00010ee0  73 2e 00 00 44 41 54 41  cd 01 00 00 50 6c 6f 74  |s...DATA....Plot|
00010ef0  20 43 6f 64 65 20 4d 6f  64 69 66 69 65 72 73 0a  | Code Modifiers.|
00010f00  54 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 6d 61  |The following ma|
00010f10  63 72 6f 73 20 61 72 65  20 64 65 66 69 6e 65 64  |cros are defined|
00010f20  20 69 6e 20 3c 62 62 63  2e 68 3d 3e 62 62 63 3e  | in <bbc.h=>bbc>|
00010f30  2e 0a 0a 4d 61 63 72 6f  09 43 6f 64 65 09 4d 65  |...Macro.Code.Me|
00010f40  61 6e 69 6e 67 0a 23 6c  69 6e 65 0a 62 62 63 5f  |aning.#line.bbc_|
00010f50  4d 6f 76 65 43 75 72 73  6f 72 52 65 6c 09 30 09  |MoveCursorRel.0.|
00010f60  4d 6f 76 65 20 63 75 72  73 6f 72 20 72 65 6c 61  |Move cursor rela|
00010f70  74 69 76 65 0a 62 62 63  5f 44 72 61 77 52 65 6c  |tive.bbc_DrawRel|
00010f80  46 6f 72 65 09 31 09 50  6c 6f 74 20 72 65 6c 61  |Fore.1.Plot rela|
00010f90  74 69 76 65 20 69 6e 20  66 6f 72 65 67 72 6f 75  |tive in foregrou|
00010fa0  6e 64 0a 62 62 63 5f 44  72 61 77 52 65 6c 49 6e  |nd.bbc_DrawRelIn|
00010fb0  76 65 72 73 65 09 32 09  50 6c 6f 74 20 72 65 6c  |verse.2.Plot rel|
00010fc0  61 74 69 76 65 20 69 6e  20 69 6e 76 65 72 73 65  |ative in inverse|
00010fd0  0a 62 62 63 5f 44 72 61  77 52 65 6c 42 61 63 6b  |.bbc_DrawRelBack|
00010fe0  09 33 09 50 6c 6f 74 20  72 65 6c 61 74 69 76 65  |.3.Plot relative|
00010ff0  20 69 6e 20 62 61 63 6b  67 72 6f 75 6e 64 0a 62  | in background.b|
00011000  62 63 5f 4d 6f 76 65 43  75 72 73 6f 72 41 62 73  |bc_MoveCursorAbs|
00011010  09 34 09 4d 6f 76 65 20  63 75 72 73 6f 72 20 61  |.4.Move cursor a|
00011020  62 73 6f 6c 75 74 65 0a  62 62 63 5f 44 72 61 77  |bsolute.bbc_Draw|
00011030  41 62 73 46 6f 72 65 09  35 09 50 6c 6f 74 20 61  |AbsFore.5.Plot a|
00011040  62 73 6f 6c 75 74 65 20  69 6e 20 66 6f 72 65 67  |bsolute in foreg|
00011050  72 6f 75 6e 64 0a 62 62  63 5f 44 72 61 77 41 62  |round.bbc_DrawAb|
00011060  73 49 6e 76 65 72 73 65  09 36 09 50 6c 6f 74 20  |sInverse.6.Plot |
00011070  61 62 73 6f 6c 75 74 65  20 69 6e 20 69 6e 76 65  |absolute in inve|
00011080  72 73 65 0a 62 62 63 5f  44 72 61 77 41 62 73 42  |rse.bbc_DrawAbsB|
00011090  61 63 6b 09 37 09 50 6c  6f 74 20 61 62 73 6f 6c  |ack.7.Plot absol|
000110a0  75 74 65 20 69 6e 20 62  61 63 6b 67 72 6f 75 6e  |ute in backgroun|
000110b0  64 00 00 00 44 41 54 41  e7 01 00 00 62 62 63 5f  |d...DATA....bbc_|
000110c0  70 6f 69 6e 74 0a 53 79  6e 74 61 78 3a 09 69 6e  |point.Syntax:.in|
000110d0  74 20 62 62 63 5f 70 6f  69 6e 74 20 28 69 6e 74  |t bbc_point (int|
000110e0  20 78 2c 20 69 6e 74 20  79 29 3b 0a 48 65 61 64  | x, int y);.Head|
000110f0  65 72 3a 09 3c 62 62 63  2e 68 3d 3e 62 62 63 3e  |er:.<bbc.h=>bbc>|
00011100  0a 0a 52 65 74 75 72 6e  73 3a 09 54 68 65 20 63  |..Returns:.The c|
00011110  6f 6c 6f 75 72 20 6f 66  20 74 68 65 20 70 69 78  |olour of the pix|
00011120  65 6c 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |el...This functi|
00011130  6f 6e 20 72 65 61 64 73  20 74 68 65 20 6c 6f 67  |on reads the log|
00011140  69 63 61 6c 20 63 6f 6c  6f 75 72 20 6f 66 20 74  |ical colour of t|
00011150  68 65 20 70 69 78 65 6c  20 61 74 20 63 6f 6f 72  |he pixel at coor|
00011160  64 69 6e 61 74 65 73 20  28 78 2c 79 29 2e 20 49  |dinates (x,y). I|
00011170  66 20 74 68 65 20 63 6f  6f 72 64 69 6e 61 74 65  |f the coordinate|
00011180  73 20 61 72 65 20 6f 75  74 73 69 64 65 20 74 68  |s are outside th|
00011190  65 20 67 72 61 70 68 69  63 73 20 77 69 6e 64 6f  |e graphics windo|
000111a0  77 2c 20 6f 72 20 69 66  20 74 68 65 20 6d 6f 64  |w, or if the mod|
000111b0  65 20 69 73 20 32 35 36  20 63 6f 6c 6f 75 72 2c  |e is 256 colour,|
000111c0  20 74 68 65 6e 20 69 74  20 72 65 74 75 72 6e 73  | then it returns|
000111d0  20 30 78 46 46 2e 0a 0a  54 68 69 73 20 66 75 6e  | 0xFF...This fun|
000111e0  63 74 69 6f 6e 20 69 73  20 65 71 75 69 76 61 6c  |ction is equival|
000111f0  65 6e 74 20 74 6f 20 3c  4f 53 5f 57 6f 72 64 20  |ent to <OS_Word |
00011200  39 3d 3e 53 57 49 3a 6f  73 5f 77 6f 72 64 39 3e  |9=>SWI:os_word9>|
00011210  2e 20 43 61 6c 6c 69 6e  67 20 74 68 65 20 53 57  |. Calling the SW|
00011220  49 20 3c 4f 53 5f 52 65  61 64 50 6f 69 6e 74 3d  |I <OS_ReadPoint=|
00011230  3e 53 57 49 3a 4f 53 5f  52 65 61 64 50 6f 69 6e  |>SWI:OS_ReadPoin|
00011240  74 3e 20 69 73 20 61 20  62 65 74 74 65 72 20 77  |t> is a better w|
00011250  61 79 20 6f 66 20 64 6f  69 6e 67 20 74 68 69 73  |ay of doing this|
00011260  2c 20 74 68 6f 75 67 68  20 28 74 72 75 73 74 20  |, though (trust |
00011270  41 63 6f 72 6e 20 74 6f  20 69 67 6e 6f 72 65 20  |Acorn to ignore |
00011280  74 68 65 69 72 20 6f 77  6e 20 69 6d 70 72 6f 76  |their own improv|
00011290  65 6d 65 6e 74 73 2e 2e  2e 29 2e 00 44 41 54 41  |ements...)..DATA|
000112a0  09 01 00 00 62 62 63 5f  70 6f 73 0a 53 79 6e 74  |....bbc_pos.Synt|
000112b0  61 78 3a 09 69 6e 74 20  62 62 63 5f 70 6f 73 20  |ax:.int bbc_pos |
000112c0  28 76 6f 69 64 29 3b 0a  48 65 61 64 65 72 3a 09  |(void);.Header:.|
000112d0  3c 62 62 63 2e 68 3d 3e  62 62 63 3e 0a 0a 52 65  |<bbc.h=>bbc>..Re|
000112e0  74 75 72 6e 73 3a 09 54  68 65 20 63 75 72 73 6f  |turns:.The curso|
000112f0  72 20 70 6f 73 69 74 69  6f 6e 2e 0a 0a 54 68 69  |r position...Thi|
00011300  73 20 66 75 6e 63 74 69  6f 6e 20 72 65 61 64 73  |s function reads|
00011310  20 74 68 65 20 58 20 63  6f 6f 72 64 69 6e 61 74  | the X coordinat|
00011320  65 20 6f 66 20 74 68 65  20 74 65 78 74 20 63 75  |e of the text cu|
00011330  72 73 6f 72 2c 20 66 72  6f 6d 20 74 68 65 20 6c  |rsor, from the l|
00011340  65 66 74 20 68 61 6e 64  20 65 64 67 65 20 6f 66  |eft hand edge of|
00011350  20 74 68 65 20 63 75 72  72 65 6e 74 20 74 65 78  | the current tex|
00011360  74 20 77 69 6e 64 6f 77  2e 0a 0a 54 68 69 73 20  |t window...This |
00011370  66 75 6e 63 74 69 6f 6e  20 69 73 20 65 71 75 69  |function is equi|
00011380  76 61 6c 65 6e 74 20 74  6f 20 3c 4f 53 5f 42 79  |valent to <OS_By|
00011390  74 65 3d 3e 53 57 49 3a  4f 53 5f 42 79 74 65 3e  |te=>SWI:OS_Byte>|
000113a0  20 26 38 36 2e 00 00 00  44 41 54 41 5b 01 00 00  | &86....DATA[...|
000113b0  62 62 63 5f 72 65 63 74  61 6e 67 6c 65 0a 53 79  |bbc_rectangle.Sy|
000113c0  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
000113d0  20 2a 62 62 63 5f 72 65  63 74 61 6e 67 6c 65 20  | *bbc_rectangle |
000113e0  28 69 6e 74 20 78 2c 20  69 6e 74 20 79 2c 20 69  |(int x, int y, i|
000113f0  6e 74 20 77 2c 20 69 6e  74 20 68 29 3b 0a 48 65  |nt w, int h);.He|
00011400  61 64 65 72 3a 09 3c 62  62 63 2e 68 3d 3e 62 62  |ader:.<bbc.h=>bb|
00011410  63 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |c>..Returns:.Poi|
00011420  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
00011430  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
00011440  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00011450  20 64 72 61 77 73 20 61  20 72 65 63 74 61 6e 67  | draws a rectang|
00011460  6c 65 20 6f 6e 20 74 68  65 20 73 63 72 65 65 6e  |le on the screen|
00011470  2c 20 77 69 74 68 20 74  68 65 20 62 6f 74 74 6f  |, with the botto|
00011480  6d 20 6c 65 66 74 20 61  74 20 70 6f 73 69 74 69  |m left at positi|
00011490  6f 6e 20 28 78 2c 79 29  20 61 6e 64 20 77 69 64  |on (x,y) and wid|
000114a0  74 68 20 61 6e 64 20 68  65 69 67 68 74 20 61 73  |th and height as|
000114b0  20 67 69 76 65 6e 20 62  79 20 2f 77 2f 20 61 6e  | given by /w/ an|
000114c0  64 20 2f 68 2f 2e 20 45  71 75 69 76 61 6c 65 6e  |d /h/. Equivalen|
000114d0  74 20 74 6f 20 3c 52 45  43 54 41 4e 47 4c 45 3d  |t to <RECTANGLE=|
000114e0  3e 42 61 73 69 63 3a 52  45 43 54 41 4e 47 4c 45  |>Basic:RECTANGLE|
000114f0  3e 20 78 2c 79 2c 77 2c  68 20 69 6e 20 42 61 73  |> x,y,w,h in Bas|
00011500  69 63 2e 00 44 41 54 41  69 01 00 00 62 62 63 5f  |ic..DATAi...bbc_|
00011510  72 65 63 74 61 6e 67 6c  65 66 69 6c 6c 0a 53 79  |rectanglefill.Sy|
00011520  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00011530  20 2a 62 62 63 5f 72 65  63 74 61 6e 67 6c 65 66  | *bbc_rectanglef|
00011540  69 6c 6c 20 28 69 6e 74  20 78 2c 20 69 6e 74 20  |ill (int x, int |
00011550  79 2c 20 69 6e 74 20 77  2c 20 69 6e 74 20 68 29  |y, int w, int h)|
00011560  3b 0a 48 65 61 64 65 72  3a 09 3c 62 62 63 2e 68  |;.Header:.<bbc.h|
00011570  3d 3e 62 62 63 3e 0a 0a  52 65 74 75 72 6e 73 3a  |=>bbc>..Returns:|
00011580  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
00011590  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
000115a0  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
000115b0  74 69 6f 6e 20 64 72 61  77 73 20 61 20 66 69 6c  |tion draws a fil|
000115c0  6c 65 64 20 72 65 63 74  61 6e 67 6c 65 20 6f 6e  |led rectangle on|
000115d0  20 74 68 65 20 73 63 72  65 65 6e 2c 20 77 69 74  | the screen, wit|
000115e0  68 20 62 6f 74 74 6f 6d  20 6c 65 66 74 20 61 74  |h bottom left at|
000115f0  20 28 78 2c 79 29 20 61  6e 64 20 77 69 64 74 68  | (x,y) and width|
00011600  20 61 6e 64 20 68 65 69  67 68 74 20 73 70 65 63  | and height spec|
00011610  69 66 69 65 64 20 62 79  20 2f 77 2f 20 61 6e 64  |ified by /w/ and|
00011620  20 2f 68 2f 2e 20 49 74  20 69 73 20 65 71 75 69  | /h/. It is equi|
00011630  76 61 6c 65 6e 74 20 74  6f 20 3c 52 45 43 54 41  |valent to <RECTA|
00011640  4e 47 4c 45 20 46 49 4c  4c 20 78 2c 79 2c 77 2c  |NGLE FILL x,y,w,|
00011650  68 3d 3e 42 61 73 69 63  3a 52 45 43 54 41 4e 47  |h=>Basic:RECTANG|
00011660  4c 45 3e 20 69 6e 20 42  61 73 69 63 2e 00 00 00  |LE> in Basic....|
00011670  44 41 54 41 2e 01 00 00  62 62 63 5f 73 65 74 62  |DATA....bbc_setb|
00011680  65 61 74 73 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |eats.Syntax:.<os|
00011690  5f 65 72 72 6f 72 3e 20  2a 62 62 63 5f 73 65 74  |_error> *bbc_set|
000116a0  62 65 61 74 73 20 28 69  6e 74 20 6e 29 3b 0a 48  |beats (int n);.H|
000116b0  65 61 64 65 72 3a 09 3c  62 62 63 2e 68 3d 3e 62  |eader:.<bbc.h=>b|
000116c0  62 63 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |bc>..Returns:.Po|
000116d0  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
000116e0  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
000116f0  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
00011700  6e 20 73 65 74 73 20 74  68 65 20 63 75 72 72 65  |n sets the curre|
00011710  6e 74 20 62 61 72 20 6c  65 6e 67 74 68 20 74 6f  |nt bar length to|
00011720  20 2f 6e 2f 2c 20 61 6e  64 20 65 6e 61 62 6c 65  | /n/, and enable|
00011730  73 20 74 68 65 20 62 65  61 74 20 63 6f 75 6e 74  |s the beat count|
00011740  65 72 2e 20 49 74 20 69  73 20 65 71 75 69 76 61  |er. It is equiva|
00011750  6c 65 6e 74 20 74 6f 20  74 68 65 20 53 57 49 20  |lent to the SWI |
00011760  53 6f 75 6e 64 5f 51 42  65 61 74 2e 0a 0a 49 66  |Sound_QBeat...If|
00011770  20 6e 20 5c 3c 20 28 2d  31 29 20 74 68 65 6e 20  | n \< (-1) then |
00011780  74 68 65 20 62 65 61 74  20 63 6f 75 6e 74 65 72  |the beat counter|
00011790  20 69 73 20 64 69 73 61  62 6c 65 64 2e 20 00 00  | is disabled. ..|
000117a0  44 41 54 41 87 01 00 00  62 62 63 5f 73 65 74 74  |DATA....bbc_sett|
000117b0  65 6d 70 6f 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |empo.Syntax:.<os|
000117c0  5f 65 72 72 6f 72 3e 20  2a 62 62 63 5f 73 65 74  |_error> *bbc_set|
000117d0  74 65 6d 70 6f 20 28 69  6e 74 20 74 29 3b 0a 48  |tempo (int t);.H|
000117e0  65 61 64 65 72 3a 09 3c  62 62 63 2e 68 3d 3e 62  |eader:.<bbc.h=>b|
000117f0  62 63 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |bc>..Returns:.Po|
00011800  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
00011810  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
00011820  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
00011830  6e 20 73 65 74 73 20 74  68 65 20 74 65 6d 70 6f  |n sets the tempo|
00011840  20 66 6f 72 20 74 68 65  20 53 6f 75 6e 64 20 53  | for the Sound S|
00011850  63 68 65 64 75 6c 65 72  20 69 65 20 74 68 65 20  |cheduler ie the |
00011860  72 61 74 65 20 61 74 20  77 68 69 63 68 20 74 68  |rate at which th|
00011870  65 20 62 65 61 74 20 63  6f 75 6e 74 65 72 20 63  |e beat counter c|
00011880  6f 75 6e 74 73 2e 20 54  68 65 20 64 65 66 61 75  |ounts. The defau|
00011890  6c 74 20 69 73 20 30 78  31 30 30 30 20 77 68 69  |lt is 0x1000 whi|
000118a0  63 68 20 63 6f 72 72 65  73 70 6f 6e 64 73 20 74  |ch corresponds t|
000118b0  6f 20 6f 6e 65 20 62 65  61 74 20 70 65 72 20 63  |o one beat per c|
000118c0  65 6e 74 69 73 65 63 6f  6e 64 2e 20 30 78 32 30  |entisecond. 0x20|
000118d0  30 30 20 69 73 20 74 77  6f 20 62 65 61 74 73 20  |00 is two beats |
000118e0  70 65 72 20 63 65 6e 74  69 73 65 63 6f 6e 64 2c  |per centisecond,|
000118f0  20 65 74 63 2e 0a 0a 54  68 69 73 20 66 75 6e 63  | etc...This func|
00011900  74 69 6f 6e 20 69 73 20  65 71 75 69 76 61 6c 65  |tion is equivale|
00011910  6e 74 20 74 6f 20 53 57  49 20 53 6f 75 6e 64 5f  |nt to SWI Sound_|
00011920  51 54 65 6d 70 6f 2e 00  44 41 54 41 1d 04 00 00  |QTempo..DATA....|
00011930  62 62 63 5f 73 6f 75 6e  64 0a 53 79 6e 74 61 78  |bbc_sound.Syntax|
00011940  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 62 62  |:.<os_error> *bb|
00011950  63 5f 73 6f 75 6e 64 20  28 69 6e 74 20 63 2c 20  |c_sound (int c, |
00011960  69 6e 74 20 61 2c 20 69  6e 74 20 70 2c 20 69 6e  |int a, int p, in|
00011970  74 20 64 2c 20 69 6e 74  20 74 29 3b 0a 48 65 61  |t d, int t);.Hea|
00011980  64 65 72 3a 09 3c 62 62  63 2e 68 3d 3e 62 62 63  |der:.<bbc.h=>bbc|
00011990  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000119a0  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000119b0  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000119c0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000119d0  73 63 68 65 64 75 6c 65  73 20 61 20 73 6f 75 6e  |schedules a soun|
000119e0  64 20 77 69 74 68 20 63  68 61 6e 6e 65 6c 2c 20  |d with channel, |
000119f0  61 6d 70 6c 69 74 75 64  65 2c 20 70 69 74 63 68  |amplitude, pitch|
00011a00  20 61 6e 64 20 64 75 72  61 74 69 6f 6e 20 73 65  | and duration se|
00011a10  74 20 62 79 20 2f 63 2f  2c 20 2f 61 2f 2c 20 2f  |t by /c/, /a/, /|
00011a20  70 2f 20 61 6e 64 20 2f  64 2f 20 72 65 73 70 65  |p/ and /d/ respe|
00011a30  63 74 69 76 65 6c 79 2c  20 74 6f 20 6f 63 63 75  |ctively, to occu|
00011a40  72 20 61 74 20 74 68 65  20 73 63 68 65 64 75 6c  |r at the schedul|
00011a50  65 20 74 69 6d 65 20 67  69 76 65 6e 20 62 79 20  |e time given by |
00011a60  2f 74 2f 2e 0a 0a 41 6d  70 6c 69 74 75 64 65 20  |/t/...Amplitude |
00011a70  6d 61 79 20 62 65 20 65  69 74 68 65 72 20 30 2d  |may be either 0-|
00011a80  31 35 20 66 6f 72 20 6c  69 6e 65 61 72 20 63 6f  |15 for linear co|
00011a90  6e 74 72 6f 6c 2c 20 6f  72 20 30 78 31 30 30 20  |ntrol, or 0x100 |
00011aa0  74 6f 20 30 78 31 37 46  20 66 6f 72 20 6c 6f 67  |to 0x17F for log|
00011ab0  61 72 69 74 68 6d 69 63  20 63 6f 6e 74 72 6f 6c  |arithmic control|
00011ac0  20 69 6e 20 77 68 69 63  68 20 63 61 73 65 20 62  | in which case b|
00011ad0  69 74 20 37 20 73 65 74  20 6d 65 61 6e 73 20 73  |it 7 set means s|
00011ae0  6d 6f 6f 74 68 20 70 69  74 63 68 20 63 68 61 6e  |mooth pitch chan|
00011af0  67 65 73 2e 20 49 6e 20  74 68 65 20 6c 6f 67 61  |ges. In the loga|
00011b00  72 69 74 68 6d 69 63 20  73 63 61 6c 65 20 61 20  |rithmic scale a |
00011b10  63 68 61 6e 67 65 20 6f  66 20 30 78 31 30 20 6d  |change of 0x10 m|
00011b20  65 61 6e 73 20 61 20 64  6f 75 62 6c 69 6e 67 20  |eans a doubling |
00011b30  6f 72 20 68 61 6c 76 69  6e 67 20 6f 66 20 76 6f  |or halving of vo|
00011b40  6c 75 6d 65 2e 0a 0a 3c  50 69 74 63 68 3d 3e 73  |lume...<Pitch=>s|
00011b50  6f 75 6e 64 5f 70 69 74  63 68 5f 3e 20 6d 61 79  |ound_pitch_> may|
00011b60  20 62 65 20 65 69 74 68  65 72 20 30 2d 32 35 35  | be either 0-255|
00011b70  20 69 6e 20 71 75 61 72  74 65 72 2d 73 65 6d 69  | in quarter-semi|
00011b80  74 6f 6e 65 20 73 74 65  70 73 2c 20 6f 72 20 30  |tone steps, or 0|
00011b90  78 31 30 30 20 74 6f 20  30 78 37 46 46 20 66 6f  |x100 to 0x7FF fo|
00011ba0  72 20 66 69 6e 65 20 63  6f 6e 74 72 6f 6c 20 28  |r fine control (|
00011bb0  34 30 39 36 20 73 74 65  70 73 20 70 65 72 20 6f  |4096 steps per o|
00011bc0  63 74 61 76 65 21 29 20  69 6e 20 77 68 69 63 68  |ctave!) in which|
00011bd0  20 63 61 73 65 20 62 69  74 73 20 30 2d 31 31 20  | case bits 0-11 |
00011be0  72 65 70 72 65 73 65 6e  74 20 74 68 65 20 6e 6f  |represent the no|
00011bf0  74 65 20 61 6e 64 20 62  69 74 73 20 31 32 2d 20  |te and bits 12- |
00011c00  31 34 20 72 65 70 72 65  73 65 6e 74 20 74 68 65  |14 represent the|
00011c10  20 6f 63 74 61 76 65 2e  0a 0a 44 75 72 61 74 69  | octave...Durati|
00011c20  6f 6e 20 69 73 20 69 6e  20 74 77 65 6e 74 69 65  |on is in twentie|
00011c30  74 68 73 20 6f 66 20 61  20 73 65 63 6f 6e 64 2e  |ths of a second.|
00011c40  0a 0a 54 68 65 20 73 63  68 65 64 75 6c 65 20 74  |..The schedule t|
00011c50  69 6d 65 20 69 73 20 65  69 74 68 65 72 3a 20 28  |ime is either: (|
00011c60  2d 32 29 20 66 6f 72 20  69 6d 6d 65 64 69 61 74  |-2) for immediat|
00011c70  65 20 73 63 68 65 64 75  6c 69 6e 67 2c 20 28 2d  |e scheduling, (-|
00011c80  31 29 20 66 6f 72 20 73  63 68 65 64 75 6c 69 6e  |1) for schedulin|
00011c90  67 20 61 74 20 74 68 65  20 73 61 6d 65 20 74 69  |g at the same ti|
00011ca0  6d 65 20 61 73 20 74 68  65 20 6c 61 73 74 20 73  |me as the last s|
00011cb0  63 68 65 64 75 6c 65 64  20 65 76 65 6e 74 2c 20  |cheduled event, |
00011cc0  6f 72 20 61 20 73 63 68  65 64 75 6c 65 20 70 65  |or a schedule pe|
00011cd0  72 69 6f 64 2e 20 54 68  65 20 73 63 68 65 64 75  |riod. The schedu|
00011ce0  6c 65 20 70 65 72 69 6f  64 20 69 73 20 6d 65 61  |le period is mea|
00011cf0  73 75 72 65 64 20 66 72  6f 6d 20 74 68 65 20 6c  |sured from the l|
00011d00  61 73 74 20 62 61 72 20  73 74 61 72 74 20 28 69  |ast bar start (i|
00011d10  66 20 74 68 65 20 62 65  61 74 20 63 6f 75 6e 74  |f the beat count|
00011d20  65 72 20 69 73 20 65 6e  61 62 6c 65 64 29 20 6f  |er is enabled) o|
00011d30  72 20 66 72 6f 6d 20 74  68 65 20 63 61 6c 6c 20  |r from the call |
00011d40  74 69 6d 65 2e 00 00 00  44 41 54 41 3d 01 00 00  |time....DATA=...|
00011d50  62 62 63 5f 73 6f 75 6e  64 6f 66 66 0a 53 79 6e  |bbc_soundoff.Syn|
00011d60  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
00011d70  2a 62 62 63 5f 73 6f 75  6e 64 6f 66 66 20 28 76  |*bbc_soundoff (v|
00011d80  6f 69 64 29 3b 0a 48 65  61 64 65 72 3a 09 3c 62  |oid);.Header:.<b|
00011d90  62 63 2e 68 3d 3e 62 62  63 3e 0a 0a 52 65 74 75  |bc.h=>bbc>..Retu|
00011da0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00011db0  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00011dc0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00011dd0  66 75 6e 63 74 69 6f 6e  20 64 69 73 61 62 6c 65  |function disable|
00011de0  73 20 74 68 65 20 73 6f  75 6e 64 20 73 79 73 74  |s the sound syst|
00011df0  65 6d 20 63 6f 6d 70 6c  65 74 65 6c 79 2e 20 41  |em completely. A|
00011e00  6c 6c 20 53 6f 75 6e 64  20 69 6e 74 65 72 72 75  |ll Sound interru|
00011e10  70 74 73 20 61 6e 64 20  44 4d 41 20 61 63 74 69  |pts and DMA acti|
00011e20  76 69 74 79 20 69 73 20  73 75 73 70 65 6e 64 65  |vity is suspende|
00011e30  64 2e 0a 0a 54 68 69 73  20 69 73 20 65 71 75 69  |d...This is equi|
00011e40  76 61 6c 65 6e 74 20 74  6f 20 3c 2a 41 75 64 69  |valent to <*Audi|
00011e50  6f 20 4f 66 66 3e 20 6f  72 20 74 68 65 20 53 57  |o Off> or the SW|
00011e60  49 20 3c 53 6f 75 6e 64  5f 45 6e 61 62 6c 65 20  |I <Sound_Enable |
00011e70  31 3d 3e 53 57 49 3a 53  6f 75 6e 64 5f 45 6e 61  |1=>SWI:Sound_Ena|
00011e80  62 6c 65 3e 2e 00 00 00  44 41 54 41 f7 00 00 00  |ble>....DATA....|
00011e90  62 62 63 5f 73 6f 75 6e  64 6f 6e 0a 53 79 6e 74  |bbc_soundon.Synt|
00011ea0  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
00011eb0  62 62 63 5f 73 6f 75 6e  64 6f 6e 20 28 76 6f 69  |bbc_soundon (voi|
00011ec0  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 62 62 63  |d);.Header:.<bbc|
00011ed0  2e 68 3d 3e 62 62 63 3e  0a 0a 52 65 74 75 72 6e  |.h=>bbc>..Return|
00011ee0  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
00011ef0  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
00011f00  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
00011f10  6e 63 74 69 6f 6e 20 65  6e 61 62 6c 65 73 20 74  |nction enables t|
00011f20  68 65 20 73 6f 75 6e 64  20 73 79 73 74 65 6d 2e  |he sound system.|
00011f30  20 49 74 20 69 73 20 65  71 75 69 76 61 6c 65 6e  | It is equivalen|
00011f40  74 20 74 6f 20 3c 2a 41  75 64 69 6f 20 4f 6e 3e  |t to <*Audio On>|
00011f50  20 6f 72 20 74 68 65 20  53 57 49 20 3c 53 6f 75  | or the SWI <Sou|
00011f60  6e 64 5f 45 6e 61 62 6c  65 20 32 3d 3e 53 57 49  |nd_Enable 2=>SWI|
00011f70  3a 53 6f 75 6e 64 5f 45  6e 61 62 6c 65 3e 2e 00  |:Sound_Enable>..|
00011f80  44 41 54 41 bb 01 00 00  62 62 63 5f 73 74 65 72  |DATA....bbc_ster|
00011f90  65 6f 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |eo.Syntax:.<os_e|
00011fa0  72 72 6f 72 3e 20 2a 62  62 63 5f 73 74 65 72 65  |rror> *bbc_stere|
00011fb0  6f 20 28 69 6e 74 20 63  68 2c 20 69 6e 74 20 70  |o (int ch, int p|
00011fc0  6f 73 29 3b 0a 48 65 61  64 65 72 3a 09 3c 62 62  |os);.Header:.<bb|
00011fd0  63 2e 68 3d 3e 62 62 63  3e 0a 0a 52 65 74 75 72  |c.h=>bbc>..Retur|
00011fe0  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
00011ff0  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
00012000  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
00012010  75 6e 63 74 69 6f 6e 20  73 65 74 73 20 74 68 65  |unction sets the|
00012020  20 73 74 65 72 65 6f 20  70 6f 73 69 74 69 6f 6e  | stereo position|
00012030  20 6f 66 20 61 20 73 6f  75 6e 64 20 63 68 61 6e  | of a sound chan|
00012040  6e 65 6c 2e 20 54 68 65  20 70 6f 73 69 74 69 6f  |nel. The positio|
00012050  6e 73 20 61 72 65 20 66  72 6f 6d 20 2d 31 32 37  |ns are from -127|
00012060  20 74 6f 20 31 32 37 2c  20 77 69 74 68 20 2d 31  | to 127, with -1|
00012070  32 37 20 61 74 20 74 68  65 20 65 78 74 72 65 6d  |27 at the extrem|
00012080  65 20 6c 65 66 74 2c 20  30 20 69 6e 20 74 68 65  |e left, 0 in the|
00012090  20 63 65 6e 74 72 65 20  61 6e 64 20 31 32 37 20  | centre and 127 |
000120a0  61 74 20 74 68 65 20 65  78 74 72 65 6d 65 20 72  |at the extreme r|
000120b0  69 67 68 74 2e 20 49 66  20 6c 65 73 73 20 74 68  |ight. If less th|
000120c0  61 6e 20 38 20 63 68 61  6e 6e 65 6c 73 20 61 72  |an 8 channels ar|
000120d0  65 20 65 6e 61 62 6c 65  64 20 74 68 65 6e 20 6d  |e enabled then m|
000120e0  6f 72 65 20 74 68 61 6e  20 6f 6e 65 20 63 68 61  |ore than one cha|
000120f0  6e 6e 65 6c 20 77 69 6c  6c 20 62 65 20 61 6c 74  |nnel will be alt|
00012100  65 72 65 64 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |ered...This func|
00012110  74 69 6f 6e 20 69 73 20  65 71 75 69 76 61 6c 65  |tion is equivale|
00012120  6e 74 20 74 6f 20 74 68  65 20 53 57 49 20 53 6f  |nt to the SWI So|
00012130  75 6e 64 5f 53 74 65 72  65 6f 2e 00 44 41 54 41  |und_Stereo..DATA|
00012140  17 01 00 00 62 62 63 5f  73 74 72 69 6e 67 70 72  |....bbc_stringpr|
00012150  69 6e 74 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |int.Syntax:.<os_|
00012160  65 72 72 6f 72 3e 20 2a  62 62 63 5f 73 74 72 69  |error> *bbc_stri|
00012170  6e 67 70 72 69 6e 74 20  28 63 68 61 72 20 2a 73  |ngprint (char *s|
00012180  74 72 29 3b 0a 48 65 61  64 65 72 3a 09 3c 62 62  |tr);.Header:.<bb|
00012190  63 2e 68 3d 3e 62 62 63  3e 0a 0a 52 65 74 75 72  |c.h=>bbc>..Retur|
000121a0  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
000121b0  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
000121c0  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
000121d0  75 6e 63 74 69 6f 6e 20  77 72 69 74 65 73 20 74  |unction writes t|
000121e0  68 65 20 6e 75 6c 6c 20  74 65 72 6d 69 6e 61 74  |he null terminat|
000121f0  65 64 20 73 74 72 69 6e  67 20 74 6f 20 61 6c 6c  |ed string to all|
00012200  20 61 63 74 69 76 65 20  6f 75 74 70 75 74 20 73  | active output s|
00012210  74 72 65 61 6d 73 2e 20  49 74 20 64 6f 65 73 20  |treams. It does |
00012220  74 68 69 73 20 62 79 20  63 61 6c 6c 69 6e 67 20  |this by calling |
00012230  74 68 65 20 53 57 49 20  3c 4f 53 5f 57 72 69 74  |the SWI <OS_Writ|
00012240  65 30 3d 3e 53 57 49 2e  4f 53 5f 57 72 69 74 65  |e0=>SWI.OS_Write|
00012250  30 3e 2e 00 44 41 54 41  3e 01 00 00 62 62 63 5f  |0>..DATA>...bbc_|
00012260  74 61 62 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |tab.Syntax:.<os_|
00012270  65 72 72 6f 72 3e 20 2a  62 62 63 5f 74 61 62 20  |error> *bbc_tab |
00012280  28 69 6e 74 20 78 2c 20  69 6e 74 20 79 29 3b 0a  |(int x, int y);.|
00012290  48 65 61 64 65 72 3a 09  3c 62 62 63 2e 68 3d 3e  |Header:.<bbc.h=>|
000122a0  62 62 63 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |bbc>..Returns:.P|
000122b0  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
000122c0  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
000122d0  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
000122e0  6f 6e 20 6d 6f 76 65 73  20 74 68 65 20 74 65 78  |on moves the tex|
000122f0  74 20 63 75 72 73 6f 72  20 74 6f 20 70 6f 73 69  |t cursor to posi|
00012300  74 69 6f 6e 20 28 78 2c  79 29 2e 20 49 66 20 78  |tion (x,y). If x|
00012310  20 6f 72 20 79 20 61 72  65 20 6f 75 74 73 69 64  | or y are outsid|
00012320  65 20 74 68 65 20 63 75  72 72 65 6e 74 20 74 65  |e the current te|
00012330  78 74 20 77 69 6e 64 6f  77 2c 20 74 68 65 20 66  |xt window, the f|
00012340  75 6e 63 74 69 6f 6e 20  64 6f 65 73 20 6e 6f 74  |unction does not|
00012350  20 6d 6f 76 65 20 74 68  65 20 63 75 72 73 6f 72  | move the cursor|
00012360  2e 20 49 74 20 64 6f 65  73 20 74 68 69 73 20 62  |. It does this b|
00012370  79 20 6d 61 6b 69 6e 67  20 74 68 72 65 65 20 63  |y making three c|
00012380  61 6c 6c 73 20 74 6f 20  3c 62 62 63 5f 76 64 75  |alls to <bbc_vdu|
00012390  3e 2e 00 00 44 41 54 41  9b 00 00 00 54 65 78 74  |>...DATA....Text|
000123a0  20 4f 75 74 70 75 74 20  46 75 6e 63 74 69 6f 6e  | Output Function|
000123b0  73 0a 23 54 61 62 6c 65  20 35 20 31 37 0a 3c 62  |s.#Table 5 17.<b|
000123c0  62 63 5f 63 6c 73 3e 0a  3c 62 62 63 5f 63 6f 6c  |bc_cls>.<bbc_col|
000123d0  6f 75 72 3e 0a 3c 62 62  63 5f 70 6f 73 3e 0a 3c  |our>.<bbc_pos>.<|
000123e0  62 62 63 5f 73 74 72 69  6e 67 70 72 69 6e 74 3e  |bbc_stringprint>|
000123f0  0a 3c 62 62 63 5f 74 61  62 3e 0a 3c 62 62 63 5f  |.<bbc_tab>.<bbc_|
00012400  76 64 75 3e 0a 3c 62 62  63 5f 76 64 75 71 3e 0a  |vdu>.<bbc_vduq>.|
00012410  3c 62 62 63 5f 76 64 75  77 3e 0a 3c 62 62 63 5f  |<bbc_vduw>.<bbc_|
00012420  76 70 6f 73 3e 0a 23 45  6e 64 54 61 62 6c 65 00  |vpos>.#EndTable.|
00012430  44 41 54 41 6b 02 00 00  62 62 63 5f 74 69 6e 74  |DATAk...bbc_tint|
00012440  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00012450  6f 72 3e 20 2a 62 62 63  5f 74 69 6e 74 20 28 69  |or> *bbc_tint (i|
00012460  6e 74 20 63 2c 20 69 6e  74 20 74 29 3b 0a 48 65  |nt c, int t);.He|
00012470  61 64 65 72 3a 09 3c 62  62 63 2e 68 3d 3e 62 62  |ader:.<bbc.h=>bb|
00012480  63 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |c>..Returns:.Poi|
00012490  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000124a0  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000124b0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000124c0  20 73 65 74 73 20 74 68  65 20 74 69 6e 74 20 28  | sets the tint (|
000124d0  69 65 20 74 68 65 20 61  6d 6f 75 6e 74 20 6f 66  |ie the amount of|
000124e0  20 77 68 69 74 65 20 61  64 64 65 64 29 20 66 6f  | white added) fo|
000124f0  72 20 61 20 63 6f 6c 6f  75 72 20 28 32 35 36 20  |r a colour (256 |
00012500  63 6f 6c 6f 75 72 20 6d  6f 64 65 73 20 6f 6e 6c  |colour modes onl|
00012510  79 29 2e 20 54 68 65 20  63 6f 6c 6f 75 72 20 66  |y). The colour f|
00012520  6f 72 20 77 68 69 63 68  20 74 68 65 20 74 69 6e  |or which the tin|
00012530  74 20 69 73 20 73 65 74  20 69 73 20 73 70 65 63  |t is set is spec|
00012540  69 66 69 65 64 20 62 79  20 63 2c 20 77 68 69 63  |ified by c, whic|
00012550  68 20 6d 61 79 20 62 65  20 61 6e 79 20 6f 66 20  |h may be any of |
00012560  74 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 3a 0a 0a  |the following:..|
00012570  23 74 61 62 0a 20 20 20  20 20 20 20 30 09 54 65  |#tab.       0.Te|
00012580  78 74 20 66 6f 72 65 67  72 6f 75 6e 64 20 63 6f  |xt foreground co|
00012590  6c 6f 75 72 0a 20 20 20  20 20 20 20 31 09 54 65  |lour.       1.Te|
000125a0  78 74 20 62 61 63 6b 67  72 6f 75 6e 64 20 63 6f  |xt background co|
000125b0  6c 6f 75 72 0a 20 20 20  20 20 20 20 32 09 47 72  |lour.       2.Gr|
000125c0  61 70 68 69 63 73 20 66  6f 72 65 67 72 6f 75 6e  |aphics foregroun|
000125d0  64 20 63 6f 6c 6f 75 72  0a 20 20 20 20 20 20 20  |d colour.       |
000125e0  33 09 47 72 61 70 68 69  63 73 20 62 61 63 6b 67  |3.Graphics backg|
000125f0  72 6f 75 6e 64 20 63 6f  6c 6f 75 72 2e 0a 0a 54  |round colour...T|
00012600  68 65 20 74 69 6e 74 2c  20 67 69 76 65 6e 20 69  |he tint, given i|
00012610  6e 20 74 2c 20 73 68 6f  75 6c 64 20 62 65 20 65  |n t, should be e|
00012620  69 74 68 65 72 20 30 2c  20 31 2c 20 32 20 6f 72  |ither 0, 1, 2 or|
00012630  20 33 2e 20 54 68 65 20  68 69 67 68 65 72 20 69  | 3. The higher i|
00012640  74 20 69 73 2c 20 74 68  65 20 62 72 69 67 68 74  |t is, the bright|
00012650  65 72 20 74 68 65 20 63  6f 6c 6f 75 72 20 69 73  |er the colour is|
00012660  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00012670  20 69 73 20 65 71 75 69  76 61 6c 65 6e 74 20 74  | is equivalent t|
00012680  6f 20 3c 56 44 55 20 32  33 2c 31 37 3d 3e 56 44  |o <VDU 23,17=>VD|
00012690  55 3a 32 33 2c 31 37 2c  30 3e 2e 00 44 41 54 41  |U:23,17,0>..DATA|
000126a0  ff 00 00 00 62 62 63 5f  76 64 75 0a 53 79 6e 74  |....bbc_vdu.Synt|
000126b0  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
000126c0  62 62 63 5f 76 64 75 20  28 69 6e 74 20 63 29 3b  |bbc_vdu (int c);|
000126d0  0a 48 65 61 64 65 72 3a  09 3c 62 62 63 2e 68 3d  |.Header:.<bbc.h=|
000126e0  3e 62 62 63 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |>bbc>..Returns:.|
000126f0  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
00012700  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
00012710  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
00012720  69 6f 6e 20 77 72 69 74  65 73 20 74 68 65 20 73  |ion writes the s|
00012730  70 65 63 69 66 69 65 64  20 63 68 61 72 61 63 74  |pecified charact|
00012740  65 72 20 74 6f 20 61 6c  6c 20 61 63 74 69 76 65  |er to all active|
00012750  20 6f 75 74 70 75 74 20  73 74 72 65 61 6d 73 2e  | output streams.|
00012760  20 49 74 20 64 6f 65 73  20 74 68 69 73 20 62 79  | It does this by|
00012770  20 63 61 6c 6c 69 6e 67  20 74 68 65 20 53 57 49  | calling the SWI|
00012780  20 3c 4f 53 5f 57 72 69  74 65 43 3d 3e 53 57 49  | <OS_WriteC=>SWI|
00012790  2e 4f 53 5f 57 72 69 74  65 43 3e 00 44 41 54 41  |.OS_WriteC>.DATA|
000127a0  d3 04 00 00 56 44 55 20  43 6f 6d 6d 61 6e 64 73  |....VDU Commands|
000127b0  0a 54 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 6d  |.The following m|
000127c0  61 63 72 6f 73 20 61 72  65 20 64 65 66 69 6e 65  |acros are define|
000127d0  64 20 69 6e 20 3c 62 62  63 2e 68 3d 3e 62 62 63  |d in <bbc.h=>bbc|
000127e0  3e 3a 0a 0a 4d 61 63 72  6f 09 43 6f 64 65 09 4d  |>:..Macro.Code.M|
000127f0  65 61 6e 69 6e 67 0a 23  4c 69 6e 65 0a 62 62 63  |eaning.#Line.bbc|
00012800  5f 43 68 61 72 54 6f 50  72 69 6e 74 65 72 09 31  |_CharToPrinter.1|
00012810  09 53 65 6e 64 20 6e 65  78 74 20 63 68 61 72 20  |.Send next char |
00012820  74 6f 20 70 72 69 6e 74  65 72 0a 62 62 63 5f 45  |to printer.bbc_E|
00012830  6e 61 62 6c 65 50 72 69  6e 74 65 72 09 32 09 45  |nablePrinter.2.E|
00012840  6e 61 62 6c 65 20 70 72  69 6e 74 65 72 0a 62 62  |nable printer.bb|
00012850  63 5f 44 69 73 61 62 6c  65 50 72 69 6e 74 65 72  |c_DisablePrinter|
00012860  09 33 09 44 69 73 61 62  6c 65 20 70 72 69 6e 74  |.3.Disable print|
00012870  65 72 0a 62 62 63 5f 54  65 78 74 54 6f 54 65 78  |er.bbc_TextToTex|
00012880  74 09 34 09 53 70 6c 69  74 20 74 65 78 74 20 26  |t.4.Split text &|
00012890  20 67 72 61 70 68 69 63  73 20 63 75 72 73 6f 72  | graphics cursor|
000128a0  73 0a 62 62 63 5f 54 65  78 74 54 6f 47 72 61 70  |s.bbc_TextToGrap|
000128b0  68 09 35 09 4a 6f 69 6e  20 74 65 78 74 20 26 20  |h.5.Join text & |
000128c0  67 72 61 70 68 69 63 73  20 63 75 72 73 6f 72 73  |graphics cursors|
000128d0  0a 62 62 63 5f 45 6e 61  62 6c 65 56 44 55 09 36  |.bbc_EnableVDU.6|
000128e0  09 45 6e 61 62 6c 65 20  73 63 72 65 65 6e 20 6f  |.Enable screen o|
000128f0  75 74 70 75 74 0a 62 62  63 5f 42 65 6c 6c 09 37  |utput.bbc_Bell.7|
00012900  09 42 65 6c 6c 20 28 73  79 73 74 65 6d 20 62 65  |.Bell (system be|
00012910  65 70 29 0a 62 62 63 5f  4d 6f 76 65 4f 6e 65 42  |ep).bbc_MoveOneB|
00012920  61 63 6b 09 38 09 42 61  63 6b 73 70 61 63 65 20  |ack.8.Backspace |
00012930  28 6d 6f 76 65 20 6c 65  66 74 29 0a 62 62 63 5f  |(move left).bbc_|
00012940  4d 6f 76 65 4f 6e 65 4f  6e 09 39 09 48 6f 72 69  |MoveOneOn.9.Hori|
00012950  7a 6f 6e 74 61 6c 20 74  61 62 20 28 6d 6f 76 65  |zontal tab (move|
00012960  20 72 69 67 68 74 29 0a  62 62 63 5f 4d 6f 76 65  | right).bbc_Move|
00012970  44 6f 77 6e 4f 6e 65 09  31 30 09 4c 69 6e 65 20  |DownOne.10.Line |
00012980  66 65 65 64 20 28 6d 6f  76 65 20 64 6f 77 6e 29  |feed (move down)|
00012990  0a 62 62 63 5f 4d 6f 76  65 55 70 4f 6e 65 09 31  |.bbc_MoveUpOne.1|
000129a0  31 09 56 65 72 74 69 63  61 6c 20 74 61 62 20 28  |1.Vertical tab (|
000129b0  6d 6f 76 65 20 75 70 29  0a 62 62 63 5f 43 6c 65  |move up).bbc_Cle|
000129c0  61 72 54 65 78 74 09 31  32 09 46 6f 72 6d 20 66  |arText.12.Form f|
000129d0  65 65 64 2f 43 6c 65 61  72 20 73 63 72 65 65 6e  |eed/Clear screen|
000129e0  0a 62 62 63 5f 4d 6f 76  65 54 6f 53 74 61 72 74  |.bbc_MoveToStart|
000129f0  09 31 33 09 43 61 72 72  69 61 67 65 20 72 65 74  |.13.Carriage ret|
00012a00  75 72 6e 0a 62 62 63 5f  50 61 67 65 4f 6e 09 31  |urn.bbc_PageOn.1|
00012a10  34 09 50 61 67 65 64 20  6d 6f 64 65 20 6f 6e 0a  |4.Paged mode on.|
00012a20  62 62 63 5f 50 61 67 65  4f 66 66 09 31 35 09 50  |bbc_PageOff.15.P|
00012a30  61 67 65 64 20 6d 6f 64  65 20 6f 66 66 0a 62 62  |aged mode off.bb|
00012a40  63 5f 43 6c 65 61 72 47  72 61 70 68 09 31 36 09  |c_ClearGraph.16.|
00012a50  43 6c 65 61 72 20 67 72  61 70 68 69 63 73 20 77  |Clear graphics w|
00012a60  69 6e 64 6f 77 0a 62 62  63 5f 44 65 66 54 65 78  |indow.bbc_DefTex|
00012a70  74 43 6f 6c 6f 75 72 09  31 37 09 53 65 74 20 74  |tColour.17.Set t|
00012a80  65 78 74 20 63 6f 6c 6f  75 72 0a 62 62 63 5f 44  |ext colour.bbc_D|
00012a90  65 66 47 72 61 70 68 43  6f 6c 6f 75 72 09 31 38  |efGraphColour.18|
00012aa0  09 53 65 74 20 67 72 61  70 68 69 63 73 20 63 6f  |.Set graphics co|
00012ab0  6c 6f 75 72 20 61 6e 64  20 61 63 74 69 6f 6e 0a  |lour and action.|
00012ac0  62 62 63 5f 44 65 66 4c  6f 67 69 63 61 6c 09 31  |bbc_DefLogical.1|
00012ad0  39 09 53 65 74 20 70 61  6c 65 74 74 65 0a 62 62  |9.Set palette.bb|
00012ae0  63 5f 52 65 73 74 6f 72  65 4c 6f 67 69 63 61 6c  |c_RestoreLogical|
00012af0  09 32 30 09 52 65 73 74  6f 72 65 20 64 65 66 61  |.20.Restore defa|
00012b00  75 6c 74 20 70 61 6c 65  74 74 65 0a 62 62 63 5f  |ult palette.bbc_|
00012b10  44 69 73 61 62 6c 65 56  44 55 09 32 31 09 44 69  |DisableVDU.21.Di|
00012b20  73 61 62 6c 65 20 73 63  72 65 65 6e 20 6f 75 74  |sable screen out|
00012b30  70 75 74 0a 62 62 63 5f  53 63 72 65 65 6e 4d 6f  |put.bbc_ScreenMo|
00012b40  64 65 09 32 32 09 43 68  61 6e 67 65 20 53 63 72  |de.22.Change Scr|
00012b50  65 65 6e 20 4d 6f 64 65  0a 62 62 63 5f 4d 75 6c  |een Mode.bbc_Mul|
00012b60  74 69 50 75 72 70 6f 73  65 09 32 33 09 4d 69 73  |tiPurpose.23.Mis|
00012b70  63 0a 62 62 63 5f 44 65  66 47 72 61 70 68 57 69  |c.bbc_DefGraphWi|
00012b80  6e 64 6f 77 09 32 34 09  44 65 66 69 6e 65 20 67  |ndow.24.Define g|
00012b90  72 61 70 68 69 63 73 20  77 69 6e 64 6f 77 0a 62  |raphics window.b|
00012ba0  62 63 5f 50 6c 6f 74 43  6f 6d 6d 61 6e 64 09 32  |bc_PlotCommand.2|
00012bb0  35 09 50 6c 6f 74 0a 62  62 63 5f 44 65 66 61 75  |5.Plot.bbc_Defau|
00012bc0  6c 74 57 69 6e 64 6f 77  09 32 36 09 52 65 73 74  |ltWindow.26.Rest|
00012bd0  6f 72 65 20 64 65 66 61  75 6c 74 20 77 69 6e 64  |ore default wind|
00012be0  6f 77 73 0a 62 62 63 5f  44 65 66 54 65 78 74 57  |ows.bbc_DefTextW|
00012bf0  69 6e 64 6f 77 09 32 38  09 44 65 66 69 6e 65 20  |indow.28.Define |
00012c00  74 65 78 74 20 77 69 6e  64 6f 77 0a 62 62 63 5f  |text window.bbc_|
00012c10  44 65 66 47 72 61 70 68  4f 72 69 67 69 6e 09 32  |DefGraphOrigin.2|
00012c20  39 09 53 65 74 20 67 72  61 70 68 69 63 73 20 6f  |9.Set graphics o|
00012c30  72 69 67 69 6e 0a 62 62  63 5f 48 6f 6d 65 54 65  |rigin.bbc_HomeTe|
00012c40  78 74 09 33 30 09 48 6f  6d 65 0a 62 62 63 5f 4d  |xt.30.Home.bbc_M|
00012c50  6f 76 65 54 65 78 74 09  33 31 09 50 6f 73 69 74  |oveText.31.Posit|
00012c60  69 6f 6e 20 74 65 78 74  20 63 75 72 73 6f 72 00  |ion text cursor.|
00012c70  44 41 54 41 58 01 00 00  62 62 63 5f 76 64 75 71  |DATAX...bbc_vduq|
00012c80  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00012c90  6f 72 3e 20 2a 62 62 63  5f 76 64 75 71 20 28 69  |or> *bbc_vduq (i|
00012ca0  6e 74 20 63 2c 20 2e 2e  2e 29 3b 0a 48 65 61 64  |nt c, ...);.Head|
00012cb0  65 72 3a 09 3c 62 62 63  2e 68 3d 3e 62 62 63 3e  |er:.<bbc.h=>bbc>|
00012cc0  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
00012cd0  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
00012ce0  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
00012cf0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 6f  |.This function o|
00012d00  75 74 70 75 74 73 20 6d  75 6c 74 69 70 6c 65 20  |utputs multiple |
00012d10  63 68 61 72 61 63 74 65  72 73 2e 20 54 68 65 20  |characters. The |
00012d20  66 69 72 73 74 20 63 68  61 72 61 63 74 65 72 20  |first character |
00012d30  73 68 6f 75 6c 64 20 62  65 20 61 20 63 6f 6e 74  |should be a cont|
00012d40  72 6f 6c 20 63 6f 64 65  20 61 6e 64 20 74 68 65  |rol code and the|
00012d50  6e 20 74 68 65 20 70 61  72 61 6d 65 74 65 72 73  |n the parameters|
00012d60  20 66 6f 6c 6c 6f 77 2e  20 59 6f 75 20 63 61 6e  | follow. You can|
00012d70  20 6f 6e 6c 79 20 73 65  6e 64 20 74 68 65 20 72  | only send the r|
00012d80  69 67 68 74 20 6e 75 6d  62 65 72 20 6f 66 20 70  |ight number of p|
00012d90  61 72 61 6d 65 74 65 72  73 20 28 74 68 65 20 66  |arameters (the f|
00012da0  75 6e 63 74 69 6f 6e 20  6b 6e 6f 77 73 20 68 6f  |unction knows ho|
00012db0  77 20 6d 61 6e 79 20 74  68 65 72 65 20 73 68 6f  |w many there sho|
00012dc0  75 6c 64 20 62 65 29 2e  44 41 54 41 e6 00 00 00  |uld be).DATA....|
00012dd0  62 62 63 5f 76 64 75 76  61 72 0a 53 79 6e 74 61  |bbc_vduvar.Synta|
00012de0  78 3a 09 69 6e 74 20 62  62 63 5f 76 64 75 76 61  |x:.int bbc_vduva|
00012df0  72 20 28 69 6e 74 20 6e  29 3b 0a 48 65 61 64 65  |r (int n);.Heade|
00012e00  72 3a 09 3c 62 62 63 2e  68 3d 3e 62 62 63 3e 0a  |r:.<bbc.h=>bbc>.|
00012e10  0a 52 65 74 75 72 6e 73  3a 09 54 68 65 20 76 61  |.Returns:.The va|
00012e20  6c 75 65 20 6f 66 20 74  68 65 20 56 44 55 20 76  |lue of the VDU v|
00012e30  61 72 69 61 62 6c 65 2e  0a 0a 54 68 69 73 20 66  |ariable...This f|
00012e40  75 6e 63 74 69 6f 6e 20  72 65 61 64 73 20 61 20  |unction reads a |
00012e50  73 69 6e 67 6c 65 20 3c  56 44 55 3d 3e 62 62 63  |single <VDU=>bbc|
00012e60  5f 76 64 75 76 61 72 5f  3e 20 6f 72 20 3c 6d 6f  |_vduvar_> or <mo|
00012e70  64 65 3d 3e 62 62 63 5f  6d 6f 64 65 76 61 72 5f  |de=>bbc_modevar_|
00012e80  3e 20 76 61 72 69 61 62  6c 65 20 76 61 6c 75 65  |> variable value|
00012e90  2c 20 66 6f 72 20 74 68  65 20 63 75 72 72 65 6e  |, for the curren|
00012ea0  74 20 73 63 72 65 65 6e  20 6d 6f 64 65 2e 00 00  |t screen mode...|
00012eb0  44 41 54 41 ba 00 00 00  56 44 55 20 56 61 72 69  |DATA....VDU Vari|
00012ec0  61 62 6c 65 73 0a 46 6f  72 20 65 61 63 68 20 6f  |ables.For each o|
00012ed0  66 20 74 68 65 20 3c 56  44 55 20 76 61 72 69 61  |f the <VDU varia|
00012ee0  62 6c 65 73 3d 3e 53 57  49 3a 6f 73 5f 72 65 61  |bles=>SWI:os_rea|
00012ef0  64 76 64 75 76 61 72 69  61 62 6c 65 73 2e 76 61  |dvduvariables.va|
00012f00  72 69 61 62 6c 65 73 3e  20 28 31 32 38 2d 31 37  |riables> (128-17|
00012f10  30 29 20 69 73 20 64 65  66 69 6e 65 64 20 61 6e  |0) is defined an|
00012f20  20 65 6e 75 6d 20 74 79  70 65 2e 20 54 68 65 20  | enum type. The |
00012f30  6e 61 6d 65 73 20 61 72  65 20 74 68 65 20 6e 61  |names are the na|
00012f40  6d 65 73 20 6f 66 20 74  68 65 20 76 61 72 69 61  |mes of the varia|
00012f50  62 6c 65 73 20 70 72 65  66 69 78 65 64 20 77 69  |bles prefixed wi|
00012f60  74 68 20 22 62 62 63 5f  22 2e 00 00 44 41 54 41  |th "bbc_"...DATA|
00012f70  d0 01 00 00 62 62 63 5f  76 64 75 76 61 72 73 0a  |....bbc_vduvars.|
00012f80  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
00012f90  72 3e 20 2a 62 62 63 5f  76 64 75 76 61 72 73 20  |r> *bbc_vduvars |
00012fa0  28 69 6e 74 20 2a 76 61  72 2c 20 69 6e 74 20 2a  |(int *var, int *|
00012fb0  76 61 6c 29 3b 0a 48 65  61 64 65 72 3a 09 3c 62  |val);.Header:.<b|
00012fc0  62 63 2e 68 3d 3e 62 62  63 3e 0a 0a 52 65 74 75  |bc.h=>bbc>..Retu|
00012fd0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00012fe0  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00012ff0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00013000  66 75 6e 63 74 69 6f 6e  20 72 65 61 64 73 20 73  |function reads s|
00013010  65 76 65 72 61 6c 20 3c  56 44 55 3d 3e 62 62 63  |everal <VDU=>bbc|
00013020  5f 76 64 75 76 61 72 5f  3e 20 6f 72 20 3c 6d 6f  |_vduvar_> or <mo|
00013030  64 65 3d 3e 62 62 63 5f  6d 6f 64 65 76 61 72 5f  |de=>bbc_modevar_|
00013040  3e 20 76 61 72 69 61 62  6c 65 73 20 66 6f 72 20  |> variables for |
00013050  74 68 65 20 63 75 72 72  65 6e 74 20 6d 6f 64 65  |the current mode|
00013060  2e 20 2f 76 61 72 2f 20  70 6f 69 6e 74 73 20 74  |. /var/ points t|
00013070  6f 20 61 20 73 65 71 75  65 6e 63 65 20 6f 66 20  |o a sequence of |
00013080  2f 69 6e 74 73 2f 2c 20  74 65 72 6d 69 6e 61 74  |/ints/, terminat|
00013090  65 64 20 62 79 20 28 2d  31 29 2e 20 54 68 65 20  |ed by (-1). The |
000130a0  76 61 6c 75 65 20 6f 66  20 65 61 63 68 20 6f 66  |value of each of|
000130b0  20 74 68 6f 73 65 20 56  44 55 20 76 61 72 69 61  | those VDU varia|
000130c0  62 6c 65 73 20 77 69 6c  6c 20 62 65 20 72 65 61  |bles will be rea|
000130d0  64 20 61 6e 64 20 70 6c  61 63 65 64 20 69 6e 20  |d and placed in |
000130e0  74 68 65 20 73 65 71 75  65 6e 63 65 20 6f 66 20  |the sequence of |
000130f0  2f 69 6e 74 73 2f 20 70  6f 69 6e 74 65 64 20 74  |/ints/ pointed t|
00013100  6f 20 62 79 20 2f 76 61  6c 2f 2c 20 69 6e 20 74  |o by /val/, in t|
00013110  68 65 20 73 61 6d 65 20  6f 72 64 65 72 2e 20 2f  |he same order. /|
00013120  76 61 72 2f 20 61 6e 64  20 2f 76 61 6c 2f 20 6d  |var/ and /val/ m|
00013130  61 79 20 62 65 20 65 71  75 61 6c 2e 44 41 54 41  |ay be equal.DATA|
00013140  5f 01 00 00 62 62 63 5f  76 64 75 77 0a 53 79 6e  |_...bbc_vduw.Syn|
00013150  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
00013160  2a 6f 73 5f 76 64 75 77  20 28 69 6e 74 20 6e 29  |*os_vduw (int n)|
00013170  3b 0a 48 65 61 64 65 72  3a 09 3c 62 62 63 2e 68  |;.Header:.<bbc.h|
00013180  3d 3e 62 62 63 3e 0a 0a  52 65 74 75 72 6e 73 3a  |=>bbc>..Returns:|
00013190  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
000131a0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
000131b0  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
000131c0  74 69 6f 6e 20 73 65 6e  64 73 20 74 68 65 20 31  |tion sends the 1|
000131d0  36 2d 62 69 74 20 76 61  6c 75 65 20 69 6e 20 2f  |6-bit value in /|
000131e0  6e 2f 20 74 6f 20 74 68  65 20 56 44 55 20 64 72  |n/ to the VDU dr|
000131f0  69 76 65 72 20 61 73 20  74 77 6f 20 62 79 74 65  |iver as two byte|
00013200  73 2c 20 6c 6f 77 65 72  20 62 79 74 65 20 66 69  |s, lower byte fi|
00013210  72 73 74 20 28 6c 69 74  74 6c 65 20 65 6e 64 69  |rst (little endi|
00013220  61 6e 29 2e 20 49 74 20  77 6f 75 6c 64 20 74 79  |an). It would ty|
00013230  70 69 63 61 6c 6c 79 20  62 65 20 75 73 65 64 20  |pically be used |
00013240  66 6f 72 20 73 65 6e 64  69 6e 67 20 73 63 72 65  |for sending scre|
00013250  65 6e 20 63 6f 6f 72 64  69 6e 61 74 65 73 20 74  |en coordinates t|
00013260  6f 20 74 68 65 20 56 44  55 20 64 72 69 76 65 72  |o the VDU driver|
00013270  73 2c 20 61 73 20 74 68  65 73 65 20 61 72 65 20  |s, as these are |
00013280  61 6c 77 61 79 73 20 74  77 6f 20 62 79 74 65 20  |always two byte |
00013290  71 75 61 6e 74 69 74 69  65 73 2e 00 44 41 54 41  |quantities..DATA|
000132a0  58 00 00 00 56 44 55 2f  4d 6f 64 65 20 56 61 72  |X...VDU/Mode Var|
000132b0  69 61 62 6c 65 73 20 46  75 6e 63 74 69 6f 6e 73  |iables Functions|
000132c0  0a 23 49 6e 64 65 6e 74  20 31 30 0a 3c 62 62 63  |.#Indent 10.<bbc|
000132d0  5f 76 64 75 76 61 72 3e  0a 3c 62 62 63 5f 76 64  |_vduvar>.<bbc_vd|
000132e0  75 76 61 72 73 3e 0a 3c  62 62 63 5f 6d 6f 64 65  |uvars>.<bbc_mode|
000132f0  76 61 72 3e 44 41 54 41  df 00 00 00 62 62 63 5f  |var>DATA....bbc_|
00013300  76 6f 69 63 65 73 0a 53  79 6e 74 61 78 3a 09 3c  |voices.Syntax:.<|
00013310  6f 73 5f 65 72 72 6f 72  3e 20 2a 62 62 63 5f 76  |os_error> *bbc_v|
00013320  6f 69 63 65 73 20 28 69  6e 74 20 6e 29 3b 0a 48  |oices (int n);.H|
00013330  65 61 64 65 72 3a 09 3c  62 62 63 2e 68 3d 3e 62  |eader:.<bbc.h=>b|
00013340  62 63 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |bc>..Returns:.Po|
00013350  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
00013360  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
00013370  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
00013380  6e 20 73 65 74 73 20 74  68 65 20 6e 75 6d 62 65  |n sets the numbe|
00013390  72 20 6f 66 20 61 63 74  69 76 65 20 73 6f 75 6e  |r of active soun|
000133a0  64 20 63 68 61 6e 6e 65  6c 73 2e 20 2f 6e 2f 20  |d channels. /n/ |
000133b0  77 69 6c 6c 20 62 65 20  72 6f 75 6e 64 65 64 20  |will be rounded |
000133c0  75 70 20 74 6f 20 31 2c  20 32 2c 20 34 20 6f 72  |up to 1, 2, 4 or|
000133d0  20 38 2e 00 44 41 54 41  c9 00 00 00 62 62 63 5f  | 8..DATA....bbc_|
000133e0  76 70 6f 73 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |vpos.Syntax:.int|
000133f0  20 62 62 63 5f 76 70 6f  73 20 28 76 6f 69 64 29  | bbc_vpos (void)|
00013400  3b 0a 48 65 61 64 65 72  3a 09 3c 62 62 63 2e 68  |;.Header:.<bbc.h|
00013410  3d 3e 62 62 63 3e 0a 0a  52 65 74 75 72 6e 73 3a  |=>bbc>..Returns:|
00013420  09 54 68 65 20 63 75 72  73 6f 72 20 70 6f 73 69  |.The cursor posi|
00013430  74 69 6f 6e 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |tion...This func|
00013440  74 69 6f 6e 20 72 65 61  64 73 20 74 68 65 20 59  |tion reads the Y|
00013450  20 63 6f 6f 72 64 69 6e  61 74 65 20 6f 66 20 74  | coordinate of t|
00013460  68 65 20 74 65 78 74 20  63 75 72 73 6f 72 2c 20  |he text cursor, |
00013470  66 72 6f 6d 20 74 68 65  20 74 6f 70 20 65 64 67  |from the top edg|
00013480  65 20 6f 66 20 74 68 65  20 63 75 72 72 65 6e 74  |e of the current|
00013490  20 74 65 78 74 20 77 69  6e 64 6f 77 2e 00 00 00  | text window....|
000134a0  44 41 54 41 84 01 00 00  42 4f 4f 4c 0a 54 68 65  |DATA....BOOL.The|
000134b0  20 74 79 70 65 20 42 4f  4f 4c 20 69 73 20 64 65  | type BOOL is de|
000134c0  66 69 6e 65 64 20 69 6e  20 3c 44 65 73 6b 4c 69  |fined in <DeskLi|
000134d0  62 3a 43 6f 72 65 2e 68  3d 3e 43 6f 72 65 3e 2c  |b:Core.h=>Core>,|
000134e0  20 3c 54 69 6d 73 4c 69  62 3a 43 6f 72 65 2e 68  | <TimsLib:Core.h|
000134f0  3d 3e 43 6f 72 65 5f 54  4c 3e 20 61 6e 64 20 3c  |=>Core_TL> and <|
00013500  6f 73 2e 68 3d 3e 6f 73  3e 20 28 44 65 73 6b 74  |os.h=>os> (Deskt|
00013510  6f 70 20 43 29 20 61 73  20 61 6e 20 6f 62 6a 65  |op C) as an obje|
00013520  63 74 20 63 61 70 61 62  6c 65 20 6f 66 20 68 6f  |ct capable of ho|
00013530  6c 64 69 6e 67 20 74 68  65 20 76 61 6c 75 65 73  |lding the values|
00013540  20 3c 54 52 55 45 3e 20  61 6e 64 20 3c 46 41 4c  | <TRUE> and <FAL|
00013550  53 45 3e 2e 20 49 74 20  69 73 20 69 6e 20 66 61  |SE>. It is in fa|
00013560  63 74 20 64 65 66 69 6e  65 64 20 75 73 69 6e 67  |ct defined using|
00013570  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 6d  | the following m|
00013580  61 63 72 6f 2c 20 72 61  74 68 65 72 20 74 68 61  |acro, rather tha|
00013590  6e 20 70 72 6f 70 65 72  6c 79 20 64 65 66 69 6e  |n properly defin|
000135a0  69 6e 67 20 69 74 20 61  73 20 61 20 74 79 70 65  |ing it as a type|
000135b0  3a 0a 0a 7b 66 43 6f 64  65 3b 61 6c 69 67 6e 20  |:..{fCode;align |
000135c0  63 65 6e 74 72 65 7d 3c  23 64 65 66 69 6e 65 3d  |centre}<#define=|
000135d0  3e 64 65 66 69 6e 65 3e  20 42 4f 4f 4c 20 69 6e  |>define> BOOL in|
000135e0  74 7b 66 3b 61 6c 69 67  6e 7d 0a 0a 49 6e 20 44  |t{f;align}..In D|
000135f0  65 73 6b 4c 69 62 20 69  74 20 69 73 20 64 65 66  |eskLib it is def|
00013600  69 6e 65 64 20 61 73 20  61 6e 20 2f 75 6e 73 69  |ined as an /unsi|
00013610  67 6e 65 64 2f 2c 20 6e  6f 74 20 61 6e 20 2f 69  |gned/, not an /i|
00013620  6e 74 2f 2e 44 41 54 41  7e 01 00 00 62 72 65 61  |nt/.DATA~...brea|
00013630  6b 0a 54 68 69 73 20 63  6f 6d 6d 61 6e 64 20 61  |k.This command a|
00013640  6c 6c 6f 77 73 20 79 6f  75 20 74 6f 20 6a 75 6d  |llows you to jum|
00013650  70 20 6f 75 74 20 6f 66  20 61 20 73 65 74 20 6f  |p out of a set o|
00013660  66 20 62 72 61 63 65 73  2e 20 49 74 20 69 73 20  |f braces. It is |
00013670  6f 66 20 6d 6f 73 74 20  75 73 65 20 69 6e 20 3c  |of most use in <|
00013680  73 77 69 74 63 68 3e 20  63 6f 6e 73 74 72 75 63  |switch> construc|
00013690  74 73 2e 0a 0a 65 67 0a  0a 23 66 43 6f 64 65 0a  |ts...eg..#fCode.|
000136a0  20 20 20 73 77 69 74 63  68 20 28 61 29 0a 20 20  |   switch (a).  |
000136b0  20 5c 7b 0a 20 20 20 63  61 73 65 20 30 3a 20 3c  | \{.   case 0: <|
000136c0  70 75 74 73 3e 28 22 43  61 73 65 20 30 22 29 3b  |puts>("Case 0");|
000136d0  0a 20 20 20 63 61 73 65  20 31 3a 20 70 75 74 73  |.   case 1: puts|
000136e0  28 22 43 61 73 65 20 31  22 29 3b 0a 20 20 20 20  |("Case 1");.    |
000136f0  20 20 20 20 20 20 20 62  72 65 61 6b 3b 0a 20 20  |       break;.  |
00013700  20 63 61 73 65 20 32 3a  20 70 75 74 73 28 22 43  | case 2: puts("C|
00013710  61 73 65 20 32 22 29 3b  0a 20 20 20 7d 0a 23 66  |ase 2");.   }.#f|
00013720  0a 0a 49 66 20 61 3d 3d  30 2c 20 74 68 65 6e 20  |..If a==0, then |
00013730  94 43 61 73 65 20 30 95  20 61 6e 64 20 94 43 61  |.Case 0. and .Ca|
00013740  73 65 20 31 95 20 61 72  65 20 70 72 69 6e 74 65  |se 1. are printe|
00013750  64 2e 0a 49 66 20 61 3d  3d 31 2c 20 74 68 65 6e  |d..If a==1, then|
00013760  20 6a 75 73 74 20 94 43  61 73 65 20 31 95 20 69  | just .Case 1. i|
00013770  73 20 70 72 69 6e 74 65  64 2e 0a 49 66 20 61 3d  |s printed..If a=|
00013780  3d 32 2c 20 74 68 65 6e  20 6a 75 73 74 20 94 43  |=2, then just .C|
00013790  61 73 65 20 32 95 20 69  73 20 70 72 69 6e 74 65  |ase 2. is printe|
000137a0  64 2e 00 00 44 41 54 41  c9 02 00 00 62 73 65 61  |d...DATA....bsea|
000137b0  72 63 68 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |rch.Syntax:.void|
000137c0  20 2a 62 73 65 61 72 63  68 20 28 76 6f 69 64 20  | *bsearch (void |
000137d0  2a 6b 65 79 2c 20 76 6f  69 64 20 2a 62 61 73 65  |*key, void *base|
000137e0  2c 20 3c 73 69 7a 65 5f  74 3e 20 6e 75 6d 2c 20  |, <size_t> num, |
000137f0  73 69 7a 65 5f 74 20 73  69 7a 65 2c 20 69 6e 74  |size_t size, int|
00013800  20 28 2a 66 75 6e 63 29  20 28 76 6f 69 64 20 2a  | (*func) (void *|
00013810  2c 20 76 6f 69 64 20 2a  29 29 3b 0a 48 65 61 64  |, void *));.Head|
00013820  65 72 3a 09 3c 73 74 64  6c 69 62 2e 68 3d 3e 73  |er:.<stdlib.h=>s|
00013830  74 64 6c 69 62 3e 0a 0a  52 65 74 75 72 6e 73 3a  |tdlib>..Returns:|
00013840  09 41 20 70 6f 69 6e 74  65 72 20 74 6f 20 74 68  |.A pointer to th|
00013850  65 20 6d 61 74 63 68 69  6e 67 20 6f 62 6a 65 63  |e matching objec|
00013860  74 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |t, or <NULL> if |
00013870  6e 6f 6e 65 20 66 6f 75  6e 64 2e 0a 0a 54 68 69  |none found...Thi|
00013880  73 20 66 75 6e 63 74 69  6f 6e 20 73 65 61 72 63  |s function searc|
00013890  68 65 73 20 61 6e 20 61  72 72 61 79 20 6f 66 20  |hes an array of |
000138a0  2f 6e 75 6d 2f 20 6f 62  6a 65 63 74 73 2c 20 65  |/num/ objects, e|
000138b0  61 63 68 20 6f 66 20 77  68 69 63 68 20 69 73 20  |ach of which is |
000138c0  2f 73 69 7a 65 2f 20 62  79 74 65 73 20 6c 6f 6e  |/size/ bytes lon|
000138d0  67 2c 20 61 6e 64 20 77  68 6f 73 65 20 66 69 72  |g, and whose fir|
000138e0  73 74 20 6f 62 6a 65 63  74 20 69 73 20 70 6f 69  |st object is poi|
000138f0  6e 74 65 64 20 74 6f 20  62 79 20 2f 62 61 73 65  |nted to by /base|
00013900  2f 2c 20 66 6f 72 20 61  6e 20 6f 62 6a 65 63 74  |/, for an object|
00013910  20 77 68 69 63 68 20 6d  61 74 63 68 65 73 20 2f  | which matches /|
00013920  6b 65 79 2f 2e 0a 0a 54  68 65 20 66 75 6e 63 74  |key/...The funct|
00013930  69 6f 6e 20 77 68 69 63  68 20 6d 75 73 74 20 62  |ion which must b|
00013940  65 20 64 65 66 69 6e 65  64 20 62 79 20 79 6f 75  |e defined by you|
00013950  20 69 73 20 63 61 6c 6c  65 64 20 77 69 74 68 20  | is called with |
00013960  70 6f 69 6e 74 65 72 73  20 74 6f 20 6f 62 6a 65  |pointers to obje|
00013970  63 74 73 2e 20 49 66 20  74 68 65 20 66 69 72 73  |cts. If the firs|
00013980  74 20 69 73 20 6c 65 73  73 20 74 68 61 6e 2c 20  |t is less than, |
00013990  65 71 75 61 6c 20 74 6f  2c 20 6f 72 20 67 72 65  |equal to, or gre|
000139a0  61 74 65 72 20 74 68 61  6e 20 74 68 65 20 73 65  |ater than the se|
000139b0  63 6f 6e 64 20 74 68 65  6e 20 74 68 65 20 66 75  |cond then the fu|
000139c0  6e 63 74 69 6f 6e 20 73  68 6f 75 6c 64 20 72 65  |nction should re|
000139d0  74 75 72 6e 20 6c 65 73  73 20 74 68 61 6e 2c 20  |turn less than, |
000139e0  65 71 75 61 6c 20 74 6f  2c 20 6f 72 20 67 72 65  |equal to, or gre|
000139f0  61 74 65 72 20 74 68 61  6e 20 7a 65 72 6f 2e 0a  |ater than zero..|
00013a00  0a 54 68 65 20 61 72 72  61 79 20 6d 75 73 74 20  |.The array must |
00013a10  62 65 20 73 6f 72 74 65  64 20 69 6e 74 6f 20 61  |be sorted into a|
00013a20  73 63 65 6e 64 69 6e 67  20 6f 72 64 65 72 2c 20  |scending order, |
00013a30  6f 6e 20 74 68 65 20 62  61 73 69 73 20 6f 66 20  |on the basis of |
00013a40  74 68 65 20 63 72 69 74  65 72 69 61 20 75 73 65  |the criteria use|
00013a50  64 20 62 79 20 74 68 65  20 63 6f 6d 70 61 72 69  |d by the compari|
00013a60  73 6f 6e 20 66 75 6e 63  74 69 6f 6e 2e 00 00 00  |son function....|
00013a70  44 41 54 41 a6 00 00 00  42 55 46 53 49 5a 0a 23  |DATA....BUFSIZ.#|
00013a80  50 61 72 65 6e 74 20 73  74 64 69 6f 0a 54 68 65  |Parent stdio.The|
00013a90  20 6d 61 63 72 6f 20 42  55 46 53 49 5a 20 69 73  | macro BUFSIZ is|
00013aa0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 73 74 64  | defined in <std|
00013ab0  69 6f 2e 68 3d 3e 73 74  64 69 6f 3e 20 61 73 20  |io.h=>stdio> as |
00013ac0  74 68 65 20 73 69 7a 65  20 6f 66 20 74 68 65 20  |the size of the |
00013ad0  62 75 66 66 65 72 20 75  73 65 64 20 62 79 20 74  |buffer used by t|
00013ae0  68 65 20 66 75 6e 63 74  69 6f 6e 20 3c 73 65 74  |he function <set|
00013af0  62 75 66 3e 2e 20 49 6e  20 45 61 73 79 a0 43 20  |buf>. In Easy.C |
00013b00  69 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |it is defined as|
00013b10  20 34 30 39 36 2e 00 00  44 49 52 24 2c 00 00 00  | 4096...DIR$,...|
00013b20  2c 00 00 00 44 3b 01 00  46 ff ff ff 54 05 42 26  |,...D;..F...T.B&|
00013b30  9f 02 00 00 13 00 00 00  00 00 00 00 73 74 61 74  |............stat|
00013b40  65 00 00 00 44 41 54 41  9f 02 00 00 62 75 74 74  |e...DATA....butt|
00013b50  6f 6e 5f 73 74 61 74 65  0a 54 68 69 73 20 74 79  |on_state.This ty|
00013b60  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
00013b70  20 3c 44 65 73 6b 4c 69  62 3a 57 69 6d 70 2e 68  | <DeskLib:Wimp.h|
00013b80  3d 3e 57 69 6d 70 3e 2e  20 49 74 20 69 73 20 75  |=>Wimp>. It is u|
00013b90  73 65 64 20 74 6f 20 68  6f 6c 64 20 74 68 65 20  |sed to hold the |
00013ba0  63 75 72 72 65 6e 74 20  62 75 74 74 6f 6e 20 73  |current button s|
00013bb0  74 61 74 65 20 6f 66 20  74 68 65 20 6d 6f 75 73  |tate of the mous|
00013bc0  65 2c 20 62 6f 74 68 20  61 73 20 61 20 76 61 6c  |e, both as a val|
00013bd0  75 65 20 61 6e 64 20 61  73 20 69 6e 64 69 76 69  |ue and as indivi|
00013be0  64 75 61 6c 20 62 69 74  73 20 73 6f 20 79 6f 75  |dual bits so you|
00013bf0  20 63 61 6e 20 74 65 73  74 20 65 61 73 69 6c 79  | can test easily|
00013c00  20 66 6f 72 20 69 6e 64  69 76 69 64 75 61 6c 20  | for individual |
00013c10  62 75 74 74 6f 6e 73 2e  20 49 74 20 69 73 20 64  |buttons. It is d|
00013c20  65 66 69 6e 65 64 20 61  73 20 74 68 65 20 66 6f  |efined as the fo|
00013c30  6c 6c 6f 77 69 6e 67 20  75 6e 69 6f 6e 3a 0a 0a  |llowing union:..|
00013c40  20 20 5c 7b 0a 20 20 20  20 75 6e 73 69 67 6e 65  |  \{.    unsigne|
00013c50  64 20 69 6e 74 20 76 61  6c 75 65 3b 0a 20 20 20  |d int value;.   |
00013c60  20 73 74 72 75 63 74 0a  20 20 20 20 5c 7b 0a 20  | struct.    \{. |
00013c70  20 20 20 20 20 75 6e 73  69 67 6e 65 64 20 69 6e  |     unsigned in|
00013c80  74 20 61 64 6a 75 73 74  09 3a 20 31 3b 0a 20 20  |t adjust.: 1;.  |
00013c90  20 20 20 20 75 6e 73 69  67 6e 65 64 20 69 6e 74  |    unsigned int|
00013ca0  20 6d 65 6e 75 09 3a 20  31 3b 0a 20 20 20 20 20  | menu.: 1;.     |
00013cb0  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 73 65  | unsigned int se|
00013cc0  6c 65 63 74 09 3a 20 31  3b 0a 20 20 20 20 20 20  |lect.: 1;.      |
00013cd0  75 6e 73 69 67 6e 65 64  20 69 6e 74 20 64 75 6d  |unsigned int dum|
00013ce0  6d 79 33 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |my3.: 1;.      u|
00013cf0  6e 73 69 67 6e 65 64 20  69 6e 74 20 64 72 61 67  |nsigned int drag|
00013d00  61 64 6a 75 73 74 09 3a  20 31 3b 0a 20 20 20 20  |adjust.: 1;.    |
00013d10  20 20 75 6e 73 69 67 6e  65 64 20 69 6e 74 20 64  |  unsigned int d|
00013d20  75 6d 6d 79 35 09 3a 20  31 3b 0a 20 20 20 20 20  |ummy5.: 1;.     |
00013d30  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 64 72  | unsigned int dr|
00013d40  61 67 73 65 6c 65 63 74  09 3a 20 31 3b 0a 20 20  |agselect.: 1;.  |
00013d50  20 20 20 20 75 6e 73 69  67 6e 65 64 20 69 6e 74  |    unsigned int|
00013d60  20 64 75 6d 6d 79 37 09  3a 20 31 3b 0a 20 20 20  | dummy7.: 1;.   |
00013d70  20 20 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |   unsigned int |
00013d80  63 6c 69 63 6b 61 64 6a  75 73 74 09 3a 20 31 3b  |clickadjust.: 1;|
00013d90  0a 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |.      unsigned |
00013da0  69 6e 74 20 64 75 6d 6d  79 39 09 3a 20 31 3b 0a  |int dummy9.: 1;.|
00013db0  20 20 20 20 20 20 75 6e  73 69 67 6e 65 64 20 69  |      unsigned i|
00013dc0  6e 74 20 63 6c 69 63 6b  73 65 6c 65 63 74 09 3a  |nt clickselect.:|
00013dd0  20 31 3b 0a 20 20 20 20  7d 20 64 61 74 61 3b 0a  | 1;.    } data;.|
00013de0  20 20 7d 00 44 49 52 24  b0 04 00 00 b0 04 00 00  |  }.DIR$........|
00013df0  94 42 01 00 46 fd ff ff  16 63 84 2f cc 00 00 00  |.B..F....c./....|
00013e00  13 01 00 00 00 00 00 00  63 5f 00 00 e0 57 01 00  |........c_...W..|
00013e10  46 ff ff ff 06 05 dd 22  4e 01 00 00 13 00 00 00  |F......"N.......|
00013e20  00 00 00 00 63 61 6c 6c  6f 63 00 00 30 59 01 00  |....calloc..0Y..|
00013e30  46 fd ff ff c5 63 84 2f  8c 00 00 00 13 01 00 00  |F....c./........|
00013e40  00 00 00 00 63 61 70 5f  00 00 00 00 0c 5c 01 00  |....cap_.....\..|
00013e50  46 fd ff ff 1d 64 84 2f  2c 00 00 00 13 01 00 00  |F....d./,.......|
00013e60  00 00 00 00 63 61 72 65  74 5f 00 00 cc 5e 01 00  |....caret_...^..|
00013e70  46 ff ff ff 5c 6f b5 22  3c 00 00 00 13 00 00 00  |F...\o."<.......|
00013e80  00 00 00 00 63 61 73 65  00 00 00 00 08 5f 01 00  |....case....._..|
00013e90  46 ff ff ff 8f 50 be 22  aa 01 00 00 13 00 00 00  |F....P."........|
00013ea0  00 00 00 00 63 65 69 6c  00 00 00 00 b4 60 01 00  |....ceil.....`..|
00013eb0  46 fd ff ff 62 64 84 2f  60 00 00 00 13 01 00 00  |F...bd./`.......|
00013ec0  00 00 00 00 43 48 41 52  5f 00 00 00 dc 62 01 00  |....CHAR_....b..|
00013ed0  46 fd ff ff a2 64 84 2f  2c 00 00 00 13 01 00 00  |F....d./,.......|
00013ee0  00 00 00 00 63 68 61 72  69 6f 5f 00 08 64 01 00  |....chario_..d..|
00013ef0  46 ff ff ff 07 e5 53 26  a3 02 00 00 13 00 00 00  |F.....S&........|
00013f00  00 00 00 00 43 68 65 63  6b 00 00 00 ac 66 01 00  |....Check....f..|
00013f10  46 fd ff ff e4 64 84 2f  5c 01 00 00 13 01 00 00  |F....d./\.......|
00013f20  00 00 00 00 63 68 65 63  6b 5f 00 00 b4 72 01 00  |....check_...r..|
00013f30  46 ff ff ff 3f 4d c4 22  a0 00 00 00 13 00 00 00  |F...?M."........|
00013f40  00 00 00 00 63 6c 65 61  72 65 72 72 00 00 00 00  |....clearerr....|
00013f50  54 73 01 00 46 ff ff ff  d9 be e1 22 90 01 00 00  |Ts..F......"....|
00013f60  13 00 00 00 00 00 00 00  63 6c 6f 63 6b 00 00 00  |........clock...|
00013f70  e4 74 01 00 46 fd ff ff  c7 65 84 2f 28 00 00 00  |.t..F....e./(...|
00013f80  13 01 00 00 00 00 00 00  63 6c 6f 63 6b 5f 00 00  |........clock_..|
00013f90  d8 75 01 00 46 fd ff ff  e9 65 84 2f 2c 00 00 00  |.u..F....e./,...|
00013fa0  13 01 00 00 00 00 00 00  43 4c 4f 43 4b 53 5f 00  |........CLOCKS_.|
00013fb0  44 77 01 00 46 ff ff ff  79 85 54 26 d0 00 00 00  |Dw..F...y.T&....|
00013fc0  13 00 00 00 00 00 00 00  43 6c 6f 73 65 44 6f 77  |........CloseDow|
00013fd0  6e 46 75 6e 63 74 69 6f  6e 00 00 00 14 78 01 00  |nFunction....x..|
00013fe0  46 fd ff ff 28 66 84 2f  64 00 00 00 13 01 00 00  |F...(f./d.......|
00013ff0  00 00 00 00 63 6f 6c 6f  75 72 5f 00 d0 7b 01 00  |....colour_..{..|
00014000  46 ff ff ff 14 c5 f3 22  e0 01 00 00 13 00 00 00  |F......"........|
00014010  00 00 00 00 63 6f 6c 6f  75 72 6d 65 6e 75 00 00  |....colourmenu..|
00014020  b0 7d 01 00 46 ff ff ff  99 87 f4 24 ad 01 00 00  |.}..F......$....|
00014030  13 00 00 00 00 00 00 00  43 6f 6c 6f 75 72 54 72  |........ColourTr|
00014040  61 6e 00 00 60 7f 01 00  46 fd ff ff a8 66 84 2f  |an..`...F....f./|
00014050  2c 03 00 00 13 01 00 00  00 00 00 00 63 6f 6c 6f  |,...........colo|
00014060  75 72 74 72 61 6e 5f 00  d4 a1 01 00 46 fd ff ff  |urtran_.....F...|
00014070  42 68 84 2f fc 00 00 00  13 01 00 00 00 00 00 00  |Bh./............|
00014080  63 6f 6c 6f 75 72 74 72  61 6e 73 5f 00 00 00 00  |colourtrans_....|
00014090  b8 ac 01 00 46 fd ff ff  f3 68 84 2f f8 02 00 00  |....F....h./....|
000140a0  13 01 00 00 00 00 00 00  63 6f 6d 70 64 69 72 5f  |........compdir_|
000140b0  00 00 00 00 9c c7 01 00  46 fd ff ff 91 6a 84 2f  |........F....j./|
000140c0  2c 00 00 00 13 01 00 00  00 00 00 00 63 6f 6e 76  |,...........conv|
000140d0  65 72 74 5f 00 00 00 00  bc c8 01 00 46 ff ff ff  |ert_........F...|
000140e0  d9 a7 54 26 11 02 00 00  13 00 00 00 00 00 00 00  |..T&............|
000140f0  43 6f 6f 72 64 00 00 00  d0 ca 01 00 46 fd ff ff  |Coord.......F...|
00014100  df 6a 84 2f 40 02 00 00  13 01 00 00 00 00 00 00  |.j./@...........|
00014110  43 6f 6f 72 64 5f 00 00  70 e0 01 00 46 ff ff ff  |Coord_..p...F...|
00014120  41 22 1d 23 db 01 00 00  13 00 00 00 00 00 00 00  |A".#............|
00014130  63 6f 6f 72 64 73 00 00  4c e2 01 00 46 fd ff ff  |coords..L...F...|
00014140  41 6c 84 2f 20 02 00 00  13 01 00 00 00 00 00 00  |Al./ ...........|
00014150  63 6f 6f 72 64 73 5f 00  6c f3 01 00 46 ff ff ff  |coords_.l...F...|
00014160  59 96 f4 24 65 01 00 00  13 00 00 00 00 00 00 00  |Y..$e...........|
00014170  43 6f 72 65 00 00 00 00  d4 f4 01 00 46 fd ff ff  |Core........F...|
00014180  72 6d 84 2f 28 00 00 00  13 01 00 00 00 00 00 00  |rm./(...........|
00014190  43 6f 72 65 5f 00 00 00  f0 f5 01 00 46 ff ff ff  |Core_.......F...|
000141a0  12 b4 bd 22 a9 00 00 00  13 00 00 00 00 00 00 00  |..."............|
000141b0  63 6f 73 00 9c f6 01 00  46 ff ff ff 26 c6 bd 22  |cos.....F...&.."|
000141c0  cb 00 00 00 13 00 00 00  00 00 00 00 63 6f 73 68  |............cosh|
000141d0  00 00 00 00 68 f7 01 00  46 fd ff ff b3 6d 84 2f  |....h...F....m./|
000141e0  4c 00 00 00 13 01 00 00  00 00 00 00 63 74 5f 00  |L...........ct_.|
000141f0  68 f9 01 00 46 ff ff ff  79 ce e1 22 37 01 00 00  |h...F...y.."7...|
00014200  13 00 00 00 00 00 00 00  63 74 69 6d 65 00 00 00  |........ctime...|
00014210  a0 fa 01 00 46 ff ff ff  a1 96 ba 22 bd 01 00 00  |....F......"....|
00014220  13 00 00 00 00 00 00 00  63 74 79 70 65 00 00 00  |........ctype...|
00014230  60 fc 01 00 46 ff ff ff  6f de 4e 26 29 01 00 00  |`...F...o.N&)...|
00014240  13 00 00 00 00 00 00 00  43 6c 65 61 72 00 00 00  |........Clear...|
00014250  8c fd 01 00 46 fd ff ff  1f 6e 84 2f cc 00 00 00  |....F....n./....|
00014260  13 01 00 00 00 00 00 00  43 6c 65 61 72 5f 00 00  |........Clear_..|
00014270  04 04 02 00 46 fd ff ff  ad 6e 84 2f 48 00 00 00  |....F....n./H...|
00014280  13 01 00 00 00 00 00 00  43 6f 6c 6f 75 72 4d 65  |........ColourMe|
00014290  6e 75 5f 00 44 49 52 24  cc 00 00 00 cc 00 00 00  |nu_.DIR$........|
000142a0  60 43 01 00 46 fd ff ff  ad d3 e2 22 f9 01 00 00  |`C..F......"....|
000142b0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000142c0  5c 45 01 00 46 fd ff ff  1e ae e2 22 a9 04 00 00  |\E..F......"....|
000142d0  13 00 00 00 00 00 00 00  65 78 70 72 5f 00 00 00  |........expr_...|
000142e0  08 4a 01 00 46 fd ff ff  1c 45 e3 22 a3 02 00 00  |.J..F....E."....|
000142f0  13 00 00 00 00 00 00 00  66 75 6e 63 5f 00 00 00  |........func_...|
00014300  ac 4c 01 00 46 fd ff ff  7f d5 83 2f a9 04 00 00  |.L..F....../....|
00014310  13 00 00 00 00 00 00 00  73 74 72 75 63 74 5f 00  |........struct_.|
00014320  58 51 01 00 46 fd ff ff  77 6c e3 22 d5 02 00 00  |XQ..F...wl."....|
00014330  13 00 00 00 00 00 00 00  74 79 70 65 73 5f 00 00  |........types_..|
00014340  30 54 01 00 46 fd ff ff  39 f0 83 2f b0 03 00 00  |0T..F...9../....|
00014350  13 00 00 00 00 00 00 00  76 61 72 5f 00 00 00 00  |........var_....|
00014360  44 41 54 41 f9 01 00 00  54 68 65 20 43 20 4c 61  |DATA....The C La|
00014370  6e 67 75 61 67 65 0a 43  20 69 73 20 61 20 76 65  |nguage.C is a ve|
00014380  72 79 20 73 6d 61 6c 6c  20 6c 61 6e 67 75 61 67  |ry small languag|
00014390  65 2c 20 77 69 74 68 20  76 65 72 79 20 66 65 77  |e, with very few|
000143a0  20 63 6f 6d 6d 61 6e 64  73 20 61 6e 64 20 73 74  | commands and st|
000143b0  61 74 65 6d 65 6e 74 73  2e 20 4d 6f 73 74 20 6f  |atements. Most o|
000143c0  66 20 69 74 73 20 77 6f  72 6b 20 69 73 20 64 6f  |f its work is do|
000143d0  6e 65 20 62 79 20 65 76  61 6c 75 61 74 69 6e 67  |ne by evaluating|
000143e0  20 65 78 70 72 65 73 73  69 6f 6e 73 2e 20 49 6e  | expressions. In|
000143f0  20 66 61 63 74 2c 20 76  69 72 74 75 61 6c 6c 79  | fact, virtually|
00014400  20 65 76 65 72 79 74 68  69 6e 67 20 69 73 20 64  | everything is d|
00014410  6f 6e 65 20 74 68 69 73  20 77 61 79 20 62 65 63  |one this way bec|
00014420  61 75 73 65 20 65 76 65  6e 20 66 75 6e 63 74 69  |ause even functi|
00014430  6f 6e 20 63 61 6c 6c 73  20 61 72 65 20 65 76 61  |on calls are eva|
00014440  6c 75 61 74 65 64 20 61  73 20 65 78 70 72 65 73  |luated as expres|
00014450  73 69 6f 6e 73 2e 0a 0a  23 61 6c 69 67 6e 20 63  |sions...#align c|
00014460  65 6e 74 72 65 0a 3c 50  72 6f 67 72 61 6d 20 53  |entre.<Program S|
00014470  74 72 75 63 74 75 72 65  3d 3e 63 5f 73 74 72 75  |tructure=>c_stru|
00014480  63 74 5f 3e 0a 3c 45 78  70 72 65 73 73 69 6f 6e  |ct_>.<Expression|
00014490  73 3d 3e 63 5f 65 78 70  72 5f 3e 0a 3c 56 61 72  |s=>c_expr_>.<Var|
000144a0  69 61 62 6c 65 73 3d 3e  63 5f 76 61 72 5f 3e 0a  |iables=>c_var_>.|
000144b0  3c 46 75 6e 63 74 69 6f  6e 73 3d 3e 63 5f 66 75  |<Functions=>c_fu|
000144c0  6e 63 5f 3e 0a 3c 54 79  70 65 73 3d 3e 63 5f 74  |nc_>.<Types=>c_t|
000144d0  79 70 65 73 5f 3e 0a 23  61 6c 69 67 6e 0a 0a 43  |ypes_>.#align..C|
000144e0  6f 6d 6d 61 6e 64 73 3a  0a 0a 23 69 6e 64 65 6e  |ommands:..#inden|
000144f0  74 20 31 30 0a 23 54 61  62 6c 65 20 63 6f 6c 75  |t 10.#Table colu|
00014500  6d 6e 73 20 35 0a 3c 66  6f 72 3e 0a 3c 77 68 69  |mns 5.<for>.<whi|
00014510  6c 65 3e 0a 3c 64 6f 3e  0a 3c 69 66 3e 0a 3c 65  |le>.<do>.<if>.<e|
00014520  6c 73 65 3e 0a 3c 72 65  74 75 72 6e 3e 0a 3c 62  |lse>.<return>.<b|
00014530  72 65 61 6b 3e 0a 3c 73  77 69 74 63 68 3e 0a 3c  |reak>.<switch>.<|
00014540  63 61 73 65 3e 0a 3c 64  65 66 61 75 6c 74 3e 0a  |case>.<default>.|
00014550  23 45 6e 64 54 61 62 6c  65 00 00 00 44 41 54 41  |#EndTable...DATA|
00014560  a9 04 00 00 45 78 70 72  65 73 73 69 6f 6e 73 0a  |....Expressions.|
00014570  45 78 70 72 65 73 73 69  6f 6e 73 20 61 72 65 20  |Expressions are |
00014580  61 20 76 69 74 61 6c 20  70 61 72 74 20 6f 66 20  |a vital part of |
00014590  43 2e 20 54 68 65 79 20  61 72 65 20 77 72 69 74  |C. They are writ|
000145a0  74 65 6e 20 64 6f 77 6e  20 69 6e 20 6d 75 63 68  |ten down in much|
000145b0  20 74 68 65 20 73 61 6d  65 20 77 61 79 20 61 73  | the same way as|
000145c0  20 69 6e 20 61 6e 79 20  6f 74 68 65 72 20 6c 61  | in any other la|
000145d0  6e 67 75 61 67 65 3a 20  61 20 73 65 72 69 65 73  |nguage: a series|
000145e0  20 6f 66 20 76 61 6c 75  65 73 20 61 6e 64 20 6f  | of values and o|
000145f0  70 65 72 61 74 6f 72 73  2c 20 70 72 65 63 65 64  |perators, preced|
00014600  65 6e 63 65 20 67 69 76  65 6e 20 62 79 20 70 61  |ence given by pa|
00014610  72 65 6e 74 68 65 73 65  73 20 28 29 2e 20 56 61  |rentheses (). Va|
00014620  6c 75 65 73 20 63 61 6e  20 62 65 20 3c 76 61 72  |lues can be <var|
00014630  69 61 62 6c 65 73 3d 3e  63 5f 76 61 72 5f 3e 2c  |iables=>c_var_>,|
00014640  20 3c 66 75 6e 63 74 69  6f 6e 73 3d 3e 63 5f 66  | <functions=>c_f|
00014650  75 6e 63 5f 3e 20 6f 72  20 63 6f 6e 73 74 61 6e  |unc_> or constan|
00014660  74 73 2e 20 4f 70 65 72  61 74 6f 72 73 20 61 72  |ts. Operators ar|
00014670  65 20 61 73 20 66 6f 6c  6c 6f 77 73 3a 0a 0a 23  |e as follows:..#|
00014680  54 61 62 0a 20 20 20 20  20 20 20 20 20 20 20 2b  |Tab.           +|
00014690  09 50 6c 75 73 0a 20 20  20 20 20 20 20 20 20 20  |.Plus.          |
000146a0  20 2d 09 4d 69 6e 75 73  0a 20 20 20 20 20 20 20  | -.Minus.       |
000146b0  20 20 20 20 2a 09 4d 75  6c 74 69 70 6c 79 2f 63  |    *.Multiply/c|
000146c0  6f 6e 74 65 6e 74 73 20  6f 66 0a 20 20 20 20 20  |ontents of.     |
000146d0  20 20 20 20 20 20 2f 09  44 69 76 69 64 65 0a 20  |      /.Divide. |
000146e0  20 20 20 20 20 20 20 20  20 20 25 09 4d 6f 64 75  |          %.Modu|
000146f0  6c 6f 0a 20 20 20 20 20  20 20 20 20 20 20 26 09  |lo.           &.|
00014700  42 69 74 77 69 73 65 20  41 4e 44 2f 50 6f 69 6e  |Bitwise AND/Poin|
00014710  74 65 72 20 74 6f 2e 0a  20 20 20 20 20 20 20 20  |ter to..        |
00014720  20 20 20 7c 09 42 69 74  77 69 73 65 20 4f 52 0a  |   |.Bitwise OR.|
00014730  20 20 20 20 20 20 20 20  20 20 20 5e 09 42 69 74  |           ^.Bit|
00014740  77 69 73 65 20 45 4f 52  0a 20 20 20 20 20 20 20  |wise EOR.       |
00014750  20 20 20 20 7e 09 42 69  74 77 69 73 65 20 4e 4f  |    ~.Bitwise NO|
00014760  54 0a 20 20 20 3c 73 69  7a 65 6f 66 3e 28 78 29  |T.   <sizeof>(x)|
00014770  09 43 6c 69 63 6b 20 74  6f 20 66 69 6e 64 20 6f  |.Click to find o|
00014780  75 74 21 0a 0a 2a 20 61  6e 64 20 26 20 68 61 76  |ut!..* and & hav|
00014790  65 20 74 77 6f 20 75 73  65 73 2e 20 57 69 74 68  |e two uses. With|
000147a0  20 74 77 6f 20 76 61 6c  75 65 73 20 74 68 65 79  | two values they|
000147b0  20 70 65 72 66 6f 72 6d  20 6d 75 6c 74 69 70 6c  | perform multipl|
000147c0  79 20 61 6e 64 20 41 4e  44 20 72 65 70 65 63 74  |y and AND repect|
000147d0  69 76 65 6c 79 2e 20 48  6f 77 65 76 65 72 20 28  |ively. However (|
000147e0  2a 70 29 20 67 69 76 65  73 20 74 68 65 20 76 61  |*p) gives the va|
000147f0  6c 75 65 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |lue pointed to b|
00014800  79 20 70 2c 20 61 6e 64  20 28 26 61 29 20 67 69  |y p, and (&a) gi|
00014810  76 65 73 20 74 68 65 20  70 6f 69 6e 74 65 72 20  |ves the pointer |
00014820  74 6f 20 61 2e 0a 0a 54  68 65 73 65 20 61 72 65  |to a...These are|
00014830  20 63 6f 6d 70 61 72 69  73 6f 6e 20 6f 70 65 72  | comparison oper|
00014840  61 74 6f 72 73 2e 20 54  68 65 79 20 72 65 74 75  |ators. They retu|
00014850  72 6e 20 31 20 6f 72 20  30 20 28 74 72 75 65 20  |rn 1 or 0 (true |
00014860  6f 72 20 66 61 6c 73 65  29 3a 0a 23 54 61 62 0a  |or false):.#Tab.|
00014870  20 20 20 20 20 20 20 20  20 20 3d 3d 09 45 71 75  |          ==.Equ|
00014880  61 6c 73 0a 20 20 20 20  20 20 20 20 20 20 21 3d  |als.          !=|
00014890  09 4e 6f 74 20 65 71 75  61 6c 73 0a 20 20 20 20  |.Not equals.    |
000148a0  20 20 20 20 20 20 5c 3c  09 4c 65 73 73 20 74 68  |      \<.Less th|
000148b0  61 6e 0a 20 20 20 20 20  20 20 20 20 20 5c 3c 3d  |an.          \<=|
000148c0  09 4c 65 73 73 20 74 68  61 6e 2f 65 71 75 61 6c  |.Less than/equal|
000148d0  0a 20 20 20 20 20 20 20  20 20 20 3e 09 47 72 65  |.          >.Gre|
000148e0  61 74 65 72 20 74 68 61  6e 0a 20 20 20 20 20 20  |ater than.      |
000148f0  20 20 20 20 3e 3d 09 47  72 65 61 74 65 72 20 74  |    >=.Greater t|
00014900  68 61 6e 2f 65 71 75 61  6c 0a 0a 54 68 65 73 65  |han/equal..These|
00014910  20 61 72 65 20 6c 6f 67  69 63 61 6c 20 6f 70 65  | are logical ope|
00014920  72 61 74 6f 72 73 2e 20  54 68 65 79 20 72 65 74  |rators. They ret|
00014930  75 72 6e 20 31 20 6f 72  20 30 20 28 74 72 75 65  |urn 1 or 0 (true|
00014940  20 6f 72 20 66 61 6c 73  65 29 20 61 6e 64 20 74  | or false) and t|
00014950  61 6b 65 20 74 68 65 69  72 20 61 72 67 75 6d 65  |ake their argume|
00014960  6e 74 20 61 73 20 6e 6f  6e 2d 7a 65 72 6f 20 6f  |nt as non-zero o|
00014970  72 20 30 20 28 74 72 75  65 20 6f 72 20 66 61 6c  |r 0 (true or fal|
00014980  73 65 29 2e 20 65 67 20  33 20 26 26 20 33 20 67  |se). eg 3 && 3 g|
00014990  69 76 65 73 20 31 2c 20  77 68 65 72 65 61 73 20  |ives 1, whereas |
000149a0  33 20 26 20 33 20 67 69  76 65 73 20 33 2e 0a 23  |3 & 3 gives 3..#|
000149b0  54 61 62 0a 20 20 20 20  20 20 20 20 20 20 20 20  |Tab.            |
000149c0  20 26 26 09 4c 6f 67 69  63 61 6c 20 41 4e 44 0a  | &&.Logical AND.|
000149d0  20 20 20 20 20 20 20 20  20 20 20 20 20 7c 7c 09  |             ||.|
000149e0  4c 6f 67 69 63 61 6c 20  4f 52 0a 20 20 20 20 20  |Logical OR.     |
000149f0  20 20 20 20 20 20 20 20  21 09 4c 6f 67 69 63 61  |        !.Logica|
00014a00  6c 20 4e 4f 54 00 00 00  44 41 54 41 a3 02 00 00  |l NOT...DATA....|
00014a10  46 75 6e 63 74 69 6f 6e  73 0a 46 75 6e 63 74 69  |Functions.Functi|
00014a20  6f 6e 73 20 61 72 65 20  70 6f 73 73 69 62 6c 79  |ons are possibly|
00014a30  20 67 69 76 65 6e 20 73  6f 6d 65 20 76 61 6c 75  | given some valu|
00014a40  65 73 2c 20 64 6f 20 73  6f 6d 65 20 70 72 6f 63  |es, do some proc|
00014a50  65 73 73 69 6e 67 20 61  6e 64 20 70 6f 73 73 69  |essing and possi|
00014a60  62 6c 65 20 72 65 74 75  72 6e 20 61 20 76 61 6c  |ble return a val|
00014a70  75 65 2e 20 54 68 65 79  20 68 61 76 65 20 74 68  |ue. They have th|
00014a80  65 20 66 6f 72 6d 3a 0a  0a 23 66 43 6f 64 65 0a  |e form:..#fCode.|
00014a90  20 20 5c 3c 74 79 70 65  3e 20 5c 3c 6e 61 6d 65  |  \<type> \<name|
00014aa0  3e 20 28 5c 3c 76 61 72  69 61 62 6c 65 73 3e 29  |> (\<variables>)|
00014ab0  0a 20 20 5c 7b 0a 20 20  5c 3c 76 61 72 69 61 62  |.  \{.  \<variab|
00014ac0  6c 65 20 64 65 63 6c 61  72 61 74 69 6f 6e 73 3e  |le declarations>|
00014ad0  3b 0a 20 20 20 20 20 2e  2e 2e 0a 20 20 7d 0a 23  |;.     ....  }.#|
00014ae0  66 0a 0a 5c 3c 74 79 70  65 3e 09 69 73 20 74 68  |f..\<type>.is th|
00014af0  65 20 3c 74 79 70 65 3d  3e 63 5f 74 79 70 65 73  |e <type=>c_types|
00014b00  5f 3e 20 72 65 74 75 72  6e 65 64 20 62 79 20 74  |_> returned by t|
00014b10  68 65 20 66 75 6e 63 74  69 6f 6e 2e 0a 0a 5c 3c  |he function...\<|
00014b20  6e 61 6d 65 3e 09 69 73  20 74 68 65 20 66 75 6e  |name>.is the fun|
00014b30  63 74 69 6f 6e 20 6e 61  6d 65 2e 0a 0a 5c 3c 76  |ction name...\<v|
00014b40  61 72 69 61 62 6c 65 73  3e 09 61 72 65 20 74 68  |ariables>.are th|
00014b50  65 20 61 72 67 75 6d 65  6e 74 73 20 70 61 73 73  |e arguments pass|
00014b60  65 64 20 74 6f 20 74 68  65 20 66 75 6e 63 74 69  |ed to the functi|
00014b70  6f 6e 2c 20 64 65 63 6c  61 72 65 64 20 61 73 20  |on, declared as |
00014b80  6e 6f 72 6d 61 6c 20 3c  76 61 72 69 61 62 6c 65  |normal <variable|
00014b90  73 3d 3e 63 5f 76 61 72  5f 3e 2e 0a 0a 65 67 2e  |s=>c_var_>...eg.|
00014ba0  0a 0a 23 66 43 6f 64 65  0a 20 20 69 6e 74 20 6d  |..#fCode.  int m|
00014bb0  79 5f 66 75 6e 63 74 69  6f 6e 20 28 69 6e 74 20  |y_function (int |
00014bc0  61 2c 20 66 6c 6f 61 74  20 62 2c 20 63 68 61 72  |a, float b, char|
00014bd0  20 2a 63 29 0a 20 20 5c  7b 0a 20 20 20 20 20 2e  | *c).  \{.     .|
00014be0  2e 2e 2e 0a 20 20 7d 0a  23 66 0a 0a 64 65 63 6c  |....  }.#f..decl|
00014bf0  61 72 65 73 20 61 20 66  75 6e 63 74 69 6f 6e 20  |ares a function |
00014c00  63 61 6c 6c 65 64 20 7b  2f 7d 6d 79 5f 66 75 6e  |called {/}my_fun|
00014c10  63 74 69 6f 6e 7b 2f 7d  2c 20 70 61 73 73 65 64  |ction{/}, passed|
00014c20  20 74 68 72 65 65 20 76  61 6c 75 65 73 20 28 74  | three values (t|
00014c30  68 65 20 6c 61 73 74 20  61 20 70 6f 69 6e 74 65  |he last a pointe|
00014c40  72 20 74 6f 20 61 6e 20  61 72 72 61 79 20 6f 66  |r to an array of|
00014c50  20 63 68 61 72 73 20 69  65 20 61 20 73 74 72 69  | chars ie a stri|
00014c60  6e 67 29 20 61 6e 64 20  72 65 74 75 72 6e 69 6e  |ng) and returnin|
00014c70  67 20 61 6e 20 69 6e 74  65 67 65 72 2e 20 54 68  |g an integer. Th|
00014c80  65 20 77 6f 72 6b 20 6f  66 20 74 68 65 20 66 75  |e work of the fu|
00014c90  6e 63 74 69 6f 6e 20 69  73 20 64 6f 6e 65 20 69  |nction is done i|
00014ca0  6e 20 74 68 65 20 5c 7b  7d 73 2e 00 44 41 54 41  |n the \{}s..DATA|
00014cb0  a9 04 00 00 50 72 6f 67  72 61 6d 20 53 74 72 75  |....Program Stru|
00014cc0  63 74 75 72 65 0a 54 68  65 20 73 74 72 75 63 74  |cture.The struct|
00014cd0  75 72 65 20 6f 66 20 61  20 67 65 6e 65 72 61 6c  |ure of a general|
00014ce0  20 70 72 6f 67 72 61 6d  20 69 73 20 67 69 76 65  | program is give|
00014cf0  6e 20 62 65 6c 6f 77 3a  0a 0a 23 66 43 6f 64 65  |n below:..#fCode|
00014d00  0a 20 20 20 23 3c 69 6e  63 6c 75 64 65 3e 73 0a  |.   #<include>s.|
00014d10  20 20 20 23 3c 64 65 66  69 6e 65 3e 73 0a 20 20  |   #<define>s.  |
00014d20  20 46 75 6e 63 74 69 6f  6e 20 44 65 63 6c 61 72  | Function Declar|
00014d30  61 74 69 6f 6e 73 3b 0a  20 20 20 56 61 72 69 61  |ations;.   Varia|
00014d40  62 6c 65 20 44 65 63 6c  61 72 61 74 69 6f 6e 73  |ble Declarations|
00014d50  3b 0a 0a 20 20 20 6d 61  69 6e 28 29 0a 20 20 20  |;..   main().   |
00014d60  5c 7b 0a 20 20 20 20 20  20 2e 2e 2e 0a 20 20 20  |\{.      ....   |
00014d70  7d 0a 0a 20 20 20 4f 74  68 65 72 20 46 75 6e 63  |}..   Other Func|
00014d80  74 69 6f 6e 73 0a 23 66  0a 0a 4d 6f 73 74 20 6f  |tions.#f..Most o|
00014d90  66 20 74 68 65 73 65 20  69 74 65 6d 73 20 63 61  |f these items ca|
00014da0  6e 20 61 70 70 65 61 72  20 69 6e 20 61 6e 79 20  |n appear in any |
00014db0  6f 72 64 65 72 2e 20 46  75 6e 63 74 69 6f 6e 73  |order. Functions|
00014dc0  20 6e 65 65 64 20 6f 6e  6c 79 20 62 65 20 64 65  | need only be de|
00014dd0  63 6c 61 72 65 64 20 69  66 20 74 68 65 79 20 61  |clared if they a|
00014de0  72 65 20 63 61 6c 6c 65  64 20 62 65 66 6f 72 65  |re called before|
00014df0  20 74 68 65 79 20 61 72  65 20 64 65 66 69 6e 65  | they are define|
00014e00  64 2e 20 41 20 64 65 63  6c 61 72 61 74 69 6f 6e  |d. A declaration|
00014e10  20 69 73 20 6a 75 73 74  20 74 68 65 20 66 69 72  | is just the fir|
00014e20  73 74 20 6c 69 6e 65 20  6f 66 20 74 68 65 20 64  |st line of the d|
00014e30  65 66 69 6e 69 74 69 6f  6e 20 69 65 20 74 68 65  |efinition ie the|
00014e40  20 72 65 74 75 72 6e 20  74 79 70 65 2c 20 6e 61  | return type, na|
00014e50  6d 65 20 61 6e 64 20 70  61 72 61 6d 65 74 65 72  |me and parameter|
00014e60  73 2e 0a 0a 2f 6d 61 69  6e 2f 20 69 73 20 74 68  |s.../main/ is th|
00014e70  65 20 66 75 6e 63 74 69  6f 6e 20 63 61 6c 6c 65  |e function calle|
00014e80  64 20 77 68 65 6e 20 74  68 65 20 70 72 6f 67 72  |d when the progr|
00014e90  61 6d 20 69 73 20 72 75  6e 2e 20 4f 6e 20 65 78  |am is run. On ex|
00014ea0  69 74 20 66 72 6f 6d 20  74 68 69 73 20 66 75 6e  |it from this fun|
00014eb0  63 74 69 6f 6e 2c 20 74  68 65 20 70 72 6f 67 72  |ction, the progr|
00014ec0  61 6d 20 74 65 72 6d 69  6e 61 74 65 64 2e 20 49  |am terminated. I|
00014ed0  74 20 63 61 6e 20 74 61  6b 65 20 74 77 6f 20 61  |t can take two a|
00014ee0  72 67 75 6d 65 6e 74 73  20 61 73 20 66 6f 6c 6c  |rguments as foll|
00014ef0  6f 77 73 3a 0a 0a 7b 61  6c 69 67 6e 20 63 65 6e  |ows:..{align cen|
00014f00  74 72 65 3b 20 66 43 6f  64 65 7d 76 6f 69 64 20  |tre; fCode}void |
00014f10  6d 61 69 6e 20 28 69 6e  74 20 61 72 67 63 2c 20  |main (int argc, |
00014f20  63 68 61 72 20 2a 61 72  67 76 5b 5d 29 20 5c 7b  |char *argv[]) \{|
00014f30  7d 7b 66 3b 61 6c 69 67  6e 7d 0a 0a 54 68 65 73  |}{f;align}..Thes|
00014f40  65 20 61 72 65 20 74 68  65 20 70 61 72 61 6d 65  |e are the parame|
00014f50  74 65 72 73 20 70 61 73  73 65 64 20 6f 6e 20 74  |ters passed on t|
00014f60  68 65 20 63 6f 6d 6d 61  6e 64 20 6c 69 6e 65 2c  |he command line,|
00014f70  20 2f 61 72 67 63 2f 20  69 73 20 74 68 65 20 6e  | /argc/ is the n|
00014f80  75 6d 62 65 72 20 6f 66  20 74 68 65 6d 20 61 6e  |umber of them an|
00014f90  64 20 7b 2f 7d 61 72 67  76 5b 5d 7b 2f 7d 20 61  |d {/}argv[]{/} a|
00014fa0  72 65 20 74 68 65 20 70  61 72 61 6d 65 74 65 72  |re the parameter|
00014fb0  73 20 69 6e 20 74 68 65  20 6f 72 64 65 72 20 74  |s in the order t|
00014fc0  68 65 79 20 77 65 72 65  20 67 69 76 65 6e 20 6f  |hey were given o|
00014fd0  6e 20 74 68 65 20 63 6f  6d 6d 61 6e 64 20 6c 69  |n the command li|
00014fe0  6e 65 20 75 73 65 64 20  74 6f 20 73 74 61 72 74  |ne used to start|
00014ff0  20 74 68 65 20 70 72 6f  67 72 61 6d 2e 20 52 65  | the program. Re|
00015000  6d 65 6d 62 65 72 20 74  68 61 74 20 7b 2f 7d 61  |member that {/}a|
00015010  72 67 76 5b 30 5d 7b 2f  7d 20 77 69 6c 6c 20 70  |rgv[0]{/} will p|
00015020  72 6f 62 61 62 6c 79 20  62 65 20 74 68 65 20 70  |robably be the p|
00015030  72 6f 67 72 61 6d 20 6e  61 6d 65 20 69 74 73 65  |rogram name itse|
00015040  6c 66 2c 20 73 6f 20 7b  2f 7d 61 72 67 63 20 3e  |lf, so {/}argc >|
00015050  3d 20 32 7b 2f 7d 20 77  69 6c 6c 20 75 73 75 61  |= 2{/} will usua|
00015060  6c 6c 79 20 69 6d 70 6c  79 20 74 68 61 74 20 61  |lly imply that a|
00015070  20 63 6f 6d 6d 61 6e 64  20 6c 69 6e 65 20 61 72  | command line ar|
00015080  67 75 6d 65 6e 74 20 68  61 73 20 62 65 65 6e 20  |gument has been |
00015090  70 61 73 73 65 64 2e 0a  0a 46 75 6e 63 74 69 6f  |passed...Functio|
000150a0  6e 73 20 6f 72 20 56 61  72 69 61 62 6c 65 73 20  |ns or Variables |
000150b0  63 61 6e 20 62 65 20 64  65 63 6c 61 72 65 64 20  |can be declared |
000150c0  61 73 20 2f 65 78 74 65  72 6e 2f 20 69 65 20 74  |as /extern/ ie t|
000150d0  68 65 79 20 61 72 65 20  64 65 66 69 6e 65 64 20  |hey are defined |
000150e0  69 6e 20 61 20 64 69 66  66 65 72 65 6e 74 20 66  |in a different f|
000150f0  69 6c 65 20 65 67 20 69  6e 20 61 6e 6f 74 68 65  |ile eg in anothe|
00015100  72 20 73 6f 75 72 63 65  20 66 69 6c 65 2c 20 6f  |r source file, o|
00015110  72 20 2f 73 74 61 74 69  63 2f 20 69 65 20 74 68  |r /static/ ie th|
00015120  65 79 20 61 72 65 20 6e  6f 74 20 61 63 63 65 73  |ey are not acces|
00015130  73 69 62 6c 65 20 6f 75  74 73 69 64 65 20 74 68  |sible outside th|
00015140  65 20 73 63 6f 70 65 20  6f 66 20 74 68 69 73 20  |e scope of this |
00015150  66 69 6c 65 2e 00 00 00  44 41 54 41 d5 02 00 00  |file....DATA....|
00015160  54 79 70 65 73 0a 54 79  70 65 73 20 61 72 65 20  |Types.Types are |
00015170  64 65 66 69 6e 65 64 20  75 73 69 6e 67 20 74 68  |defined using th|
00015180  65 20 3c 74 79 70 65 64  65 66 3e 20 63 6f 6d 6d  |e <typedef> comm|
00015190  61 6e 64 2e 0a 54 68 65  20 62 75 69 6c 74 20 69  |and..The built i|
000151a0  6e 20 74 79 70 65 73 20  61 72 65 20 61 73 20 66  |n types are as f|
000151b0  6f 6c 6c 6f 77 73 3a 0a  0a 69 6e 74 3a 09 54 68  |ollows:..int:.Th|
000151c0  69 73 20 63 61 6e 20 62  65 20 61 20 2f 73 68 6f  |is can be a /sho|
000151d0  72 74 20 69 6e 74 2f 20  6f 72 20 61 20 2f 6c 6f  |rt int/ or a /lo|
000151e0  6e 67 20 69 6e 74 2f 2e  20 41 20 70 6c 61 69 6e  |ng int/. A plain|
000151f0  20 2f 69 6e 74 2f 20 6f  72 20 61 20 2f 6c 6f 6e  | /int/ or a /lon|
00015200  67 20 69 6e 74 2f 20 69  73 20 33 32 2d 62 69 74  |g int/ is 32-bit|
00015210  73 20 6f 6e 20 74 68 65  20 41 63 6f 72 6e 2e 20  |s on the Acorn. |
00015220  41 20 2f 73 68 6f 72 74  20 69 6e 74 2f 20 69 73  |A /short int/ is|
00015230  20 31 36 2d 62 69 74 73  20 69 6e 20 44 65 73 6b  | 16-bits in Desk|
00015240  74 6f 70 20 43 2c 20 61  6e 64 20 33 32 2d 62 69  |top C, and 32-bi|
00015250  74 73 20 69 6e 20 45 61  73 79 20 43 2e 20 54 68  |ts in Easy C. Th|
00015260  65 73 65 20 76 61 72 69  61 62 6c 65 20 74 79 70  |ese variable typ|
00015270  65 73 20 68 6f 6c 64 20  69 6e 74 65 67 65 72 20  |es hold integer |
00015280  76 61 6c 75 65 73 2e 20  49 74 20 63 61 6e 20 61  |values. It can a|
00015290  6c 73 6f 20 62 65 20 2f  73 69 67 6e 65 64 2f 20  |lso be /signed/ |
000152a0  6f 72 20 2f 75 6e 73 69  67 6e 65 64 2f 2e 0a 0a  |or /unsigned/...|
000152b0  63 68 61 72 3a 09 54 68  69 73 20 69 73 20 38 2d  |char:.This is 8-|
000152c0  62 69 74 73 20 6c 6f 6e  67 2e 20 49 74 20 63 61  |bits long. It ca|
000152d0  6e 20 62 65 20 2f 73 69  67 6e 65 64 2f 20 6f 72  |n be /signed/ or|
000152e0  20 2f 75 6e 73 69 67 6e  65 64 2f 2e 0a 0a 66 6c  | /unsigned/...fl|
000152f0  6f 61 74 2c 20 64 6f 75  62 6c 65 20 61 6e 64 20  |oat, double and |
00015300  6c 6f 6e 67 20 64 6f 75  62 6c 65 3a 09 54 68 65  |long double:.The|
00015310  73 65 20 68 6f 6c 64 20  66 6c 6f 61 74 69 6e 67  |se hold floating|
00015320  20 70 6f 69 6e 74 20 76  61 6c 75 65 73 2c 20 77  | point values, w|
00015330  69 74 68 20 69 6e 63 72  65 61 73 69 6e 67 20 61  |ith increasing a|
00015340  63 63 75 72 61 63 79 2e  0a 0a 76 6f 69 64 3a 09  |ccuracy...void:.|
00015350  54 68 69 73 20 69 73 20  61 20 73 70 65 63 69 61  |This is a specia|
00015360  6c 20 74 79 70 65 2e 20  49 74 20 69 73 20 75 73  |l type. It is us|
00015370  75 61 6c 6c 79 20 6f 6e  6c 79 20 75 73 65 64 20  |ually only used |
00015380  69 6e 20 66 75 6e 63 74  69 6f 6e 20 64 65 66 69  |in function defi|
00015390  6e 69 74 69 6f 6e 73 20  74 6f 20 69 6e 64 69 63  |nitions to indic|
000153a0  61 74 65 20 74 68 61 74  20 6e 6f 20 76 61 6c 75  |ate that no valu|
000153b0  65 20 69 73 20 70 61 73  73 65 64 20 61 6e 64 2f  |e is passed and/|
000153c0  6f 72 20 72 65 74 75 72  6e 65 64 2e 20 41 20 70  |or returned. A p|
000153d0  6f 69 6e 74 65 72 20 74  6f 20 61 20 2f 76 6f 69  |ointer to a /voi|
000153e0  64 2f 20 69 65 20 7b 2f  7d 76 6f 69 64 20 2a 7b  |d/ ie {/}void *{|
000153f0  2f 7d 20 63 61 6e 20 62  65 20 75 73 65 64 20 61  |/} can be used a|
00015400  6e 79 74 69 6d 65 20 74  6f 20 68 6f 6c 64 20 61  |nytime to hold a|
00015410  20 67 65 6e 65 72 61 6c  20 70 6f 69 6e 74 65 72  | general pointer|
00015420  20 74 6f 20 61 6e 79 74  68 69 6e 67 2e 00 00 00  | to anything....|
00015430  44 41 54 41 b0 03 00 00  56 61 72 69 61 62 6c 65  |DATA....Variable|
00015440  73 0a 56 61 72 69 61 62  6c 65 73 20 61 72 65 20  |s.Variables are |
00015450  64 65 66 69 6e 65 64 20  69 6e 20 74 65 72 6d 73  |defined in terms|
00015460  20 6f 66 20 61 20 74 79  70 65 2e 20 54 68 65 79  | of a type. They|
00015470  20 61 72 65 20 64 65 66  69 6e 65 64 20 62 79 20  | are defined by |
00015480  67 69 76 69 6e 67 20 74  68 65 20 74 79 70 65 20  |giving the type |
00015490  61 6e 64 20 74 68 65 6e  20 61 20 6c 69 73 74 20  |and then a list |
000154a0  6f 66 20 76 61 72 69 61  62 6c 65 20 6e 61 6d 65  |of variable name|
000154b0  73 20 73 65 70 61 72 61  74 65 64 20 62 79 20 63  |s separated by c|
000154c0  6f 6d 6d 61 73 3b 20 74  68 65 20 77 68 6f 6c 65  |ommas; the whole|
000154d0  20 6c 6f 74 20 74 65 72  6d 69 6e 61 74 65 64 20  | lot terminated |
000154e0  62 79 20 61 20 73 65 6d  69 63 6f 6c 6f 6e 2e 0a  |by a semicolon..|
000154f0  0a 65 67 0a 7b 61 6c 69  67 6e 20 63 65 6e 74 72  |.eg.{align centr|
00015500  65 3b 66 43 6f 64 65 7d  69 6e 74 20 61 2c 62 2c  |e;fCode}int a,b,|
00015510  2a 63 2c 64 5b 36 5d 2c  65 5b 5d 3d 5c 7b 39 2c  |*c,d[6],e[]=\{9,|
00015520  34 2c 35 2c 32 7d 3b 7b  66 3b 61 6c 69 67 6e 7d  |4,5,2};{f;align}|
00015530  0a 0a 54 68 65 20 27 2a  27 20 69 6e 64 69 63 61  |..The '*' indica|
00015540  74 65 73 20 74 68 61 74  20 2f 63 2f 20 69 73 20  |tes that /c/ is |
00015550  6e 6f 74 20 61 6e 20 69  6e 74 65 67 65 72 2c 20  |not an integer, |
00015560  62 75 74 20 61 20 70 6f  69 6e 74 65 72 20 74 6f  |but a pointer to|
00015570  20 61 6e 20 69 6e 74 65  67 65 72 2e 20 54 68 65  | an integer. The|
00015580  20 76 61 6c 75 65 20 2f  63 2f 20 70 6f 69 6e 74  | value /c/ point|
00015590  73 20 74 6f 20 69 73 20  67 69 76 65 6e 20 62 79  |s to is given by|
000155a0  20 7b 2f 7d 2a 63 7b 2f  7d 2e 20 2f 64 2f 20 69  | {/}*c{/}. /d/ i|
000155b0  73 20 64 65 66 69 6e 65  64 20 61 73 20 61 6e 20  |s defined as an |
000155c0  61 72 72 61 79 20 6f 66  20 36 20 69 6e 74 65 67  |array of 6 integ|
000155d0  65 72 73 2c 20 69 6e 64  65 78 65 64 20 61 73 20  |ers, indexed as |
000155e0  30 20 74 6f 20 35 2e 20  2f 65 2f 20 69 73 20 61  |0 to 5. /e/ is a|
000155f0  6e 20 61 72 72 61 79 20  6f 66 20 66 6f 75 72 20  |n array of four |
00015600  69 6e 74 65 67 65 72 73  2c 20 77 68 6f 73 65 20  |integers, whose |
00015610  76 61 6c 75 65 73 20 61  72 65 20 69 6e 69 74 69  |values are initi|
00015620  61 6c 69 73 65 64 20 74  6f 20 39 2c 34 2c 35 20  |alised to 9,4,5 |
00015630  61 6e 64 20 32 20 72 65  73 70 65 63 74 69 76 65  |and 2 respective|
00015640  6c 79 2e 0a 0a 4d 6f 72  65 20 63 6f 6d 70 6c 65  |ly...More comple|
00015650  78 20 76 61 72 69 61 62  6c 65 73 20 63 61 6e 20  |x variables can |
00015660  62 65 20 64 65 66 69 6e  65 64 20 75 73 69 6e 67  |be defined using|
00015670  20 3c 73 74 72 75 63 74  75 72 65 73 3d 3e 73 74  | <structures=>st|
00015680  72 75 63 74 3e 20 61 6e  64 20 3c 75 6e 69 6f 6e  |ruct> and <union|
00015690  73 3d 3e 75 6e 69 6f 6e  3e 2e 0a 0a 56 61 72 69  |s=>union>...Vari|
000156a0  61 62 6c 65 73 20 63 61  6e 20 62 65 20 64 65 6c  |ables can be del|
000156b0  63 6c 61 72 65 64 20 61  74 20 74 68 65 20 73 74  |clared at the st|
000156c0  61 72 74 20 6f 66 20 74  68 65 20 70 72 6f 67 72  |art of the progr|
000156d0  61 6d 2c 20 6f 75 74 73  69 64 65 20 61 6c 6c 20  |am, outside all |
000156e0  66 75 6e 63 74 69 6f 6e  73 20 69 6e 20 77 68 69  |functions in whi|
000156f0  63 68 20 63 61 73 65 20  74 68 65 79 20 61 72 65  |ch case they are|
00015700  20 67 6c 6f 62 61 6c 2e  20 41 6c 74 65 72 6e 61  | global. Alterna|
00015710  74 69 76 65 6c 79 2c 20  74 68 65 79 20 63 61 6e  |tively, they can|
00015720  20 62 65 20 64 65 63 6c  61 72 65 64 20 61 74 20  | be declared at |
00015730  74 68 65 20 73 74 61 72  74 20 6f 66 20 61 20 62  |the start of a b|
00015740  6c 6f 63 6b 20 69 6e 20  77 68 69 63 68 20 63 61  |lock in which ca|
00015750  73 65 20 74 68 65 79 20  61 72 65 20 6c 6f 63 61  |se they are loca|
00015760  6c 20 74 6f 20 74 68 61  74 20 62 6c 6f 63 6b 20  |l to that block |
00015770  61 6e 64 20 61 6e 79 20  62 6c 6f 63 6b 73 20 77  |and any blocks w|
00015780  69 74 68 69 6e 20 69 74  2e 20 2f 73 74 61 74 69  |ithin it. /stati|
00015790  63 2f 20 76 61 72 69 61  62 6c 65 73 20 64 65 63  |c/ variables dec|
000157a0  6c 61 72 65 64 20 77 69  74 68 69 6e 20 62 6c 6f  |lared within blo|
000157b0  63 6b 73 20 6b 65 65 70  20 74 68 65 69 72 20 76  |cks keep their v|
000157c0  61 6c 75 65 20 69 66 20  74 68 65 20 62 6c 6f 63  |alue if the bloc|
000157d0  6b 20 69 73 20 72 65 2d  65 6e 74 65 72 65 64 2e  |k is re-entered.|
000157e0  44 41 54 41 4e 01 00 00  63 61 6c 6c 6f 63 0a 53  |DATAN...calloc.S|
000157f0  79 6e 74 61 78 3a 09 76  6f 69 64 20 2a 63 61 6c  |yntax:.void *cal|
00015800  6c 6f 63 20 28 3c 73 69  7a 65 5f 74 3e 20 6e 2c  |loc (<size_t> n,|
00015810  20 73 69 7a 65 5f 74 20  73 69 7a 65 29 3b 0a 48  | size_t size);.H|
00015820  65 61 64 65 72 3a 09 3c  73 74 64 6c 69 62 2e 68  |eader:.<stdlib.h|
00015830  3d 3e 73 74 64 6c 69 62  3e 0a 0a 52 65 74 75 72  |=>stdlib>..Retur|
00015840  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 73  |ns:.Pointer to s|
00015850  70 61 63 65 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |pace, or <NULL> |
00015860  69 66 20 66 61 69 6c 65  64 2e 0a 0a 54 68 69 73  |if failed...This|
00015870  20 66 75 6e 63 74 69 6f  6e 20 61 6c 6c 6f 63 61  | function alloca|
00015880  74 65 73 20 73 70 61 63  65 20 66 6f 72 20 2f 6e  |tes space for /n|
00015890  2f 20 6f 62 6a 65 63 74  73 2c 20 77 69 74 68 20  |/ objects, with |
000158a0  65 61 63 68 20 6f 62 6a  65 63 74 20 74 61 6b 69  |each object taki|
000158b0  6e 67 20 2f 73 69 7a 65  2f 20 62 79 74 65 73 2e  |ng /size/ bytes.|
000158c0  20 54 68 65 20 74 6f 74  61 6c 20 73 70 61 63 65  | The total space|
000158d0  20 61 6c 6c 6f 63 61 74  65 64 20 69 73 20 74 68  | allocated is th|
000158e0  65 72 65 66 6f 72 65 20  28 6e 2a 73 69 7a 65 29  |erefore (n*size)|
000158f0  20 62 79 74 65 73 2e 20  54 68 65 20 65 6e 74 69  | bytes. The enti|
00015900  72 65 20 73 70 61 63 65  20 69 73 20 69 6e 69 74  |re space is init|
00015910  69 61 6c 69 73 65 64 20  77 69 74 68 20 65 61 63  |ialised with eac|
00015920  68 20 62 79 74 65 20 7a  65 72 6f 65 64 2e 00 00  |h byte zeroed...|
00015930  44 49 52 24 8c 00 00 00  8c 00 00 00 bc 59 01 00  |DIR$.........Y..|
00015940  46 ff ff ff 9b fd 45 23  8d 00 00 00 13 00 00 00  |F.....E#........|
00015950  00 00 00 00 62 75 74 74  00 00 00 00 4c 5a 01 00  |....butt....LZ..|
00015960  46 ff ff ff ce 01 46 23  91 00 00 00 13 00 00 00  |F.....F#........|
00015970  00 00 00 00 72 6f 75 6e  64 00 00 00 e0 5a 01 00  |....round....Z..|
00015980  46 ff ff ff 07 05 46 23  91 00 00 00 13 00 00 00  |F.....F#........|
00015990  00 00 00 00 73 71 75 61  72 65 00 00 74 5b 01 00  |....square..t[..|
000159a0  46 ff ff ff ca 08 46 23  95 00 00 00 13 00 00 00  |F.....F#........|
000159b0  00 00 00 00 74 72 69 61  6e 67 00 00 44 41 54 41  |....triang..DATA|
000159c0  8d 00 00 00 63 61 70 5f  62 75 74 74 0a 54 68 69  |....cap_butt.Thi|
000159d0  73 20 6d 61 63 72 6f 20  69 73 20 64 65 66 69 6e  |s macro is defin|
000159e0  65 64 20 69 6e 20 3c 64  72 61 77 6d 6f 64 2e 68  |ed in <drawmod.h|
000159f0  3d 3e 64 72 61 77 6d 6f  64 3e 2e 20 49 74 20 69  |=>drawmod>. It i|
00015a00  73 20 61 20 76 61 6c 75  65 20 72 65 70 72 65 73  |s a value repres|
00015a10  65 6e 74 69 6e 67 20 62  75 74 74 20 63 61 70 73  |enting butt caps|
00015a20  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
00015a30  61 73 20 28 28 75 6e 73  69 67 6e 65 64 20 63 68  |as ((unsigned ch|
00015a40  61 72 29 30 78 30 30 29  2e 00 00 00 44 41 54 41  |ar)0x00)....DATA|
00015a50  91 00 00 00 63 61 70 5f  72 6f 75 6e 64 0a 54 68  |....cap_round.Th|
00015a60  69 73 20 6d 61 63 72 6f  20 69 73 20 64 65 66 69  |is macro is defi|
00015a70  6e 65 64 20 69 6e 20 3c  64 72 61 77 6d 6f 64 2e  |ned in <drawmod.|
00015a80  68 3d 3e 64 72 61 77 6d  6f 64 3e 2e 20 49 74 20  |h=>drawmod>. It |
00015a90  69 73 20 61 20 76 61 6c  75 65 20 72 65 70 72 65  |is a value repre|
00015aa0  73 65 6e 74 69 6e 67 20  72 6f 75 6e 64 65 64 20  |senting rounded |
00015ab0  63 61 70 73 2e 20 49 74  20 69 73 20 64 65 66 69  |caps. It is defi|
00015ac0  6e 65 64 20 61 73 20 28  28 75 6e 73 69 67 6e 65  |ned as ((unsigne|
00015ad0  64 20 63 68 61 72 29 30  78 30 31 29 2e 00 00 00  |d char)0x01)....|
00015ae0  44 41 54 41 91 00 00 00  63 61 70 5f 73 71 75 61  |DATA....cap_squa|
00015af0  72 65 0a 54 68 69 73 20  6d 61 63 72 6f 20 69 73  |re.This macro is|
00015b00  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 64 72 61  | defined in <dra|
00015b10  77 6d 6f 64 2e 68 3d 3e  64 72 61 77 6d 6f 64 3e  |wmod.h=>drawmod>|
00015b20  2e 20 49 74 20 69 73 20  61 20 76 61 6c 75 65 20  |. It is a value |
00015b30  72 65 70 72 65 73 65 6e  74 69 6e 67 20 73 71 75  |representing squ|
00015b40  61 72 65 20 63 61 70 73  2e 20 49 74 20 69 73 20  |are caps. It is |
00015b50  64 65 66 69 6e 65 64 20  61 73 20 28 28 75 6e 73  |defined as ((uns|
00015b60  69 67 6e 65 64 20 63 68  61 72 29 30 78 30 32 29  |igned char)0x02)|
00015b70  2e 00 00 00 44 41 54 41  95 00 00 00 63 61 70 5f  |....DATA....cap_|
00015b80  74 72 69 61 6e 67 0a 54  68 69 73 20 6d 61 63 72  |triang.This macr|
00015b90  6f 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |o is defined in |
00015ba0  3c 64 72 61 77 6d 6f 64  2e 68 3d 3e 64 72 61 77  |<drawmod.h=>draw|
00015bb0  6d 6f 64 3e 2e 20 49 74  20 69 73 20 61 20 76 61  |mod>. It is a va|
00015bc0  6c 75 65 20 72 65 70 72  65 73 65 6e 74 69 6e 67  |lue representing|
00015bd0  20 74 72 69 61 6e 67 75  6c 61 72 20 63 61 70 73  | triangular caps|
00015be0  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
00015bf0  61 73 20 28 28 75 6e 73  69 67 6e 65 64 20 63 68  |as ((unsigned ch|
00015c00  61 72 29 30 78 30 33 29  2e 00 00 00 44 49 52 24  |ar)0x03)....DIR$|
00015c10  2c 00 00 00 2c 00 00 00  38 5c 01 00 46 ff ff ff  |,...,...8\..F...|
00015c20  40 40 46 26 92 02 00 00  13 00 00 00 00 00 00 00  |@@F&............|
00015c30  62 6c 6f 63 6b 00 00 00  44 41 54 41 92 02 00 00  |block...DATA....|
00015c40  63 61 72 65 74 5f 62 6c  6f 63 6b 0a 54 68 69 73  |caret_block.This|
00015c50  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
00015c60  20 62 79 20 3c 44 65 73  6b 4c 69 62 3a 57 69 6d  | by <DeskLib:Wim|
00015c70  70 2e 68 3d 3e 57 69 6d  70 3e 20 61 73 20 61 20  |p.h=>Wimp> as a |
00015c80  74 79 70 65 20 63 61 70  61 62 6c 65 20 6f 66 20  |type capable of |
00015c90  68 6f 6c 64 69 6e 67 20  69 6e 66 6f 72 6d 61 74  |holding informat|
00015ca0  69 6f 6e 20 61 62 6f 75  74 20 74 68 65 20 63 61  |ion about the ca|
00015cb0  72 65 74 20 70 6f 73 69  74 69 6f 6e 2e 20 49 74  |ret position. It|
00015cc0  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 20 74  | is defined as t|
00015cd0  68 65 20 66 6f 6c 6c 6f  77 69 6e 67 20 73 74 72  |he following str|
00015ce0  75 63 74 75 72 65 3a 0a  0a 20 20 5c 7b 0a 20 20  |ucture:..  \{.  |
00015cf0  20 20 3c 77 69 6e 64 6f  77 5f 68 61 6e 64 6c 65  |  <window_handle|
00015d00  3e 09 77 69 6e 64 6f 77  3b 0a 20 20 20 20 3c 69  |>.window;.    <i|
00015d10  63 6f 6e 5f 68 61 6e 64  6c 65 3e 09 69 63 6f 6e  |con_handle>.icon|
00015d20  3b 0a 20 20 20 20 3c 77  69 6d 70 5f 70 6f 69 6e  |;.    <wimp_poin|
00015d30  74 3e 09 6f 66 66 73 65  74 3b 0a 20 20 20 20 69  |t>.offset;.    i|
00015d40  6e 74 09 68 65 69 67 68  74 3b 0a 20 20 20 20 69  |nt.height;.    i|
00015d50  6e 74 09 69 6e 64 65 78  3b 0a 20 20 7d 0a 7b 74  |nt.index;.  }.{t|
00015d60  61 62 7d 0a 8f 09 2f 77  69 6e 64 6f 77 2f 20 61  |ab}.../window/ a|
00015d70  6e 64 20 2f 69 63 6f 6e  2f 20 61 72 65 20 2d 31  |nd /icon/ are -1|
00015d80  20 69 66 20 6e 6f 6e 65  2e 0a 8f 09 2f 6f 66 66  | if none..../off|
00015d90  73 65 74 2f 20 63 6f 6e  74 61 69 6e 73 20 74 68  |set/ contains th|
00015da0  65 20 63 61 72 65 74 20  6f 66 66 73 65 74 20 72  |e caret offset r|
00015db0  65 6c 61 74 69 76 65 20  74 6f 20 77 6f 72 6b 20  |elative to work |
00015dc0  61 72 65 61 20 6f 72 69  67 69 6e 2e 0a 8f 09 2f  |area origin..../|
00015dd0  69 6e 64 65 78 2f 20 63  6f 6e 74 61 69 6e 73 20  |index/ contains |
00015de0  74 68 65 20 69 6e 64 65  78 20 69 6e 74 6f 20 74  |the index into t|
00015df0  68 65 20 73 74 72 69 6e  67 2e 0a 8f 09 2f 68 65  |he string..../he|
00015e00  69 67 68 74 2f 20 63 6f  6e 74 69 6e 73 20 74 68  |ight/ contins th|
00015e10  65 20 63 61 72 65 74 20  68 65 69 67 68 74 20 61  |e caret height a|
00015e20  6e 64 20 66 6c 61 67 73  3a 0a 7b 74 61 62 7d 0a  |nd flags:.{tab}.|
00015e30  23 69 6e 64 65 6e 74 20  33 0a 5f 42 69 74 5f 09  |#indent 3._Bit_.|
00015e40  5f 4d 65 61 6e 69 6e 67  5f 0a 32 34 09 75 73 65  |_Meaning_.24.use|
00015e50  20 56 44 55 20 35 20 63  61 72 65 74 2c 20 6e 6f  | VDU 5 caret, no|
00015e60  74 20 61 6e 74 69 2d 61  6c 69 61 73 65 64 20 63  |t anti-aliased c|
00015e70  61 72 65 74 0a 32 35 09  63 61 72 65 74 20 69 73  |aret.25.caret is|
00015e80  20 69 6e 76 69 73 69 62  6c 65 0a 32 36 09 75 73  | invisible.26.us|
00015e90  65 20 62 69 74 73 20 31  36 2d 32 33 20 66 6f 72  |e bits 16-23 for|
00015ea0  20 63 6f 6c 6f 75 72 0a  32 37 09 62 69 74 73 20  | colour.27.bits |
00015eb0  31 36 2d 32 33 20 61 72  65 20 6c 6f 67 69 63 61  |16-23 are logica|
00015ec0  6c 20 63 6f 6c 6f 75 72  73 2e 00 00 44 41 54 41  |l colours...DATA|
00015ed0  3c 00 00 00 63 61 73 65  0a 54 68 69 73 20 63 6f  |<...case.This co|
00015ee0  6d 6d 61 6e 64 20 69 73  20 70 61 72 74 20 6f 66  |mmand is part of|
00015ef0  20 74 68 65 20 3c 73 77  69 74 63 68 3e 20 63 6f  | the <switch> co|
00015f00  6e 73 74 72 75 63 74 2e  44 41 54 41 aa 01 00 00  |nstruct.DATA....|
00015f10  63 65 69 6c 0a 53 79 6e  74 61 78 3a 09 64 6f 75  |ceil.Syntax:.dou|
00015f20  62 6c 65 20 63 65 69 6c  20 28 64 6f 75 62 6c 65  |ble ceil (double|
00015f30  20 78 29 3b 0a 48 65 61  64 65 72 3a 09 3c 6d 61  | x);.Header:.<ma|
00015f40  74 68 2e 68 3d 3e 6d 61  74 68 3e 0a 0a 52 65 74  |th.h=>math>..Ret|
00015f50  75 72 6e 73 3a 09 54 68  65 20 73 6d 61 6c 6c 65  |urns:.The smalle|
00015f60  73 74 20 69 6e 74 65 67  65 72 20 65 71 75 61 6c  |st integer equal|
00015f70  20 74 6f 20 6f 72 20 67  72 65 61 74 65 72 20 74  | to or greater t|
00015f80  68 61 6e 20 78 2e 0a 0a  54 68 69 73 20 66 75 6e  |han x...This fun|
00015f90  63 74 69 6f 6e 20 63 61  6c 63 75 6c 61 74 65 73  |ction calculates|
00015fa0  20 74 68 65 20 90 63 65  69 6c 69 6e 67 91 20 6f  | the .ceiling. o|
00015fb0  66 20 74 68 65 20 67 69  76 65 6e 20 76 61 6c 75  |f the given valu|
00015fc0  65 2e 20 54 68 69 73 20  69 73 20 74 68 65 20 73  |e. This is the s|
00015fd0  6d 61 6c 6c 65 73 74 20  69 6e 74 65 67 65 72 20  |mallest integer |
00015fe0  6e 6f 74 20 6c 65 73 73  20 74 68 61 6e 20 78 2e  |not less than x.|
00015ff0  20 42 61 73 69 63 61 6c  6c 79 2c 20 69 66 20 78  | Basically, if x|
00016000  20 69 73 20 61 6e 20 69  6e 74 65 67 65 72 20 76  | is an integer v|
00016010  61 6c 75 65 20 74 68 65  6e 20 74 68 65 20 66 75  |alue then the fu|
00016020  6e 63 74 69 6f 6e 20 72  65 74 75 72 6e 73 20 78  |nction returns x|
00016030  2c 20 6f 74 68 65 72 77  69 73 65 20 69 74 20 72  |, otherwise it r|
00016040  65 74 75 72 6e 73 20 74  68 65 20 6e 65 78 74 20  |eturns the next |
00016050  68 69 67 68 65 73 74 20  69 6e 74 65 67 65 72 2e  |highest integer.|
00016060  20 4e 6f 74 65 20 74 68  61 74 20 74 68 65 20 72  | Note that the r|
00016070  65 73 75 6c 74 20 69 73  20 72 65 74 75 72 6e 65  |esult is returne|
00016080  64 20 61 73 20 61 20 64  6f 75 62 6c 65 2c 20 65  |d as a double, e|
00016090  76 65 6e 20 74 68 6f 75  67 68 20 69 74 20 69 73  |ven though it is|
000160a0  20 61 6e 20 69 6e 74 65  67 65 72 20 76 61 6c 75  | an integer valu|
000160b0  65 2e 00 00 44 49 52 24  60 00 00 00 60 00 00 00  |e...DIR$`...`...|
000160c0  14 61 01 00 46 ff ff ff  30 df bc 22 95 00 00 00  |.a..F...0.."....|
000160d0  13 00 00 00 00 00 00 00  42 49 54 00 ac 61 01 00  |........BIT..a..|
000160e0  46 ff ff ff fb f5 bc 22  9c 00 00 00 13 00 00 00  |F......"........|
000160f0  00 00 00 00 4d 41 58 00  48 62 01 00 46 ff ff ff  |....MAX.Hb..F...|
00016100  ab f2 bc 22 92 00 00 00  13 00 00 00 00 00 00 00  |..."............|
00016110  4d 49 4e 00 44 41 54 41  95 00 00 00 43 48 41 52  |MIN.DATA....CHAR|
00016120  5f 42 49 54 0a 54 68 69  73 20 6d 61 63 72 6f 20  |_BIT.This macro |
00016130  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 6c  |is defined in <l|
00016140  69 6d 69 74 73 2e 68 3e  20 61 6e 64 20 72 65 70  |imits.h> and rep|
00016150  72 65 73 65 6e 74 73 20  74 68 65 20 6e 75 6d 62  |resents the numb|
00016160  65 72 20 6f 66 20 62 69  74 73 20 69 6e 20 77 68  |er of bits in wh|
00016170  69 63 68 20 63 68 61 72  20 76 61 6c 75 65 73 20  |ich char values |
00016180  61 72 65 20 73 74 6f 72  65 64 2e 20 49 6e 20 45  |are stored. In E|
00016190  61 73 79 20 43 20 69 74  20 69 73 20 64 65 66 69  |asy C it is defi|
000161a0  6e 65 64 20 61 73 20 38  2e 00 00 00 44 41 54 41  |ned as 8....DATA|
000161b0  9c 00 00 00 43 48 41 52  5f 4d 41 58 0a 54 68 69  |....CHAR_MAX.Thi|
000161c0  73 20 6d 61 63 72 6f 20  69 73 20 64 65 66 69 6e  |s macro is defin|
000161d0  65 64 20 69 6e 20 3c 6c  69 6d 69 74 73 2e 68 3e  |ed in <limits.h>|
000161e0  20 61 6e 64 20 72 65 70  72 65 73 65 6e 74 73 20  | and represents |
000161f0  74 68 65 20 6d 61 78 69  6d 75 6d 20 76 61 6c 75  |the maximum valu|
00016200  65 20 77 68 69 63 68 20  63 61 6e 20 62 65 20 73  |e which can be s|
00016210  74 6f 72 65 64 20 69 6e  20 61 20 63 68 61 72 2e  |tored in a char.|
00016220  20 49 6e 20 45 61 73 79  20 43 20 69 74 20 69 73  | In Easy C it is|
00016230  20 64 65 66 69 6e 65 64  20 61 73 20 30 78 66 66  | defined as 0xff|
00016240  55 20 28 32 35 35 29 2e  44 41 54 41 92 00 00 00  |U (255).DATA....|
00016250  43 48 41 52 5f 4d 49 4e  0a 54 68 69 73 20 6d 61  |CHAR_MIN.This ma|
00016260  63 72 6f 20 69 73 20 64  65 66 69 6e 65 64 20 69  |cro is defined i|
00016270  6e 20 3c 6c 69 6d 69 74  73 2e 68 3e 20 61 6e 64  |n <limits.h> and|
00016280  20 72 65 70 72 65 73 65  6e 74 73 20 74 68 65 20  | represents the |
00016290  6d 69 6e 69 6d 75 6d 20  76 61 6c 75 65 20 77 68  |minimum value wh|
000162a0  69 63 68 20 63 61 6e 20  62 65 20 73 74 6f 72 65  |ich can be store|
000162b0  64 20 69 6e 20 61 20 63  68 61 72 2e 20 49 6e 20  |d in a char. In |
000162c0  45 61 73 79 20 43 20 69  74 20 69 73 20 64 65 66  |Easy C it is def|
000162d0  69 6e 65 64 20 61 73 20  30 2e 00 00 44 49 52 24  |ined as 0...DIR$|
000162e0  2c 00 00 00 2c 00 00 00  08 63 01 00 46 fd ff ff  |,...,....c..F...|
000162f0  19 5b c2 22 fd 00 00 00  13 00 00 00 00 00 00 00  |.[."............|
00016300  21 52 6f 6f 74 00 00 00  44 41 54 41 fd 00 00 00  |!Root...DATA....|
00016310  43 68 61 72 61 63 74 65  72 20 49 2f 4f 20 46 75  |Character I/O Fu|
00016320  6e 63 74 69 6f 6e 73 0a  23 50 61 72 65 6e 74 20  |nctions.#Parent |
00016330  73 74 64 69 6f 0a 54 68  65 73 65 20 66 75 6e 63  |stdio.These func|
00016340  74 69 6f 6e 73 20 72 65  61 64 20 61 6e 64 20 77  |tions read and w|
00016350  72 69 74 65 20 66 72 6f  6d 20 61 6e 79 20 73 74  |rite from any st|
00016360  72 65 61 6d 2c 20 73 69  6e 67 6c 65 20 63 68 61  |ream, single cha|
00016370  72 61 63 74 65 72 73 2c  20 6f 72 20 61 20 73 65  |racters, or a se|
00016380  71 75 65 6e 63 65 20 6f  66 20 63 68 61 72 61 63  |quence of charac|
00016390  74 65 72 73 2e 0a 0a 23  54 61 62 6c 65 20 34 20  |ters...#Table 4 |
000163a0  31 36 0a 3c 66 67 65 74  63 3e 0a 3c 66 67 65 74  |16.<fgetc>.<fget|
000163b0  73 3e 0a 3c 66 70 75 74  63 3e 0a 3c 66 70 75 74  |s>.<fputc>.<fput|
000163c0  73 3e 0a 3c 67 65 74 63  3e 0a 3c 67 65 74 63 68  |s>.<getc>.<getch|
000163d0  61 72 3e 0a 3c 67 65 74  73 3e 0a 3c 70 75 74 63  |ar>.<gets>.<putc|
000163e0  3e 0a 3c 70 75 74 63 68  61 72 3e 0a 3c 70 75 74  |>.<putchar>.<put|
000163f0  73 3e 0a 3c 75 6e 67 65  74 63 3e 0a 23 45 6e 64  |s>.<ungetc>.#End|
00016400  54 61 62 6c 65 00 00 00  44 41 54 41 a3 02 00 00  |Table...DATA....|
00016410  54 69 6d 73 4c 69 62 3a  43 68 65 63 6b 2e 68 0a  |TimsLib:Check.h.|
00016420  23 50 61 72 65 6e 74 20  72 6f 5f 74 6c 69 62 5f  |#Parent ro_tlib_|
00016430  0a 54 68 69 73 20 68 65  61 64 65 72 20 70 72 6f  |.This header pro|
00016440  76 69 64 65 73 20 61 20  72 65 70 6c 61 63 65 6d  |vides a replacem|
00016450  65 6e 74 20 66 6f 72 20  74 68 65 20 41 4e 53 49  |ent for the ANSI|
00016460  20 3c 61 73 73 65 72 74  2e 68 3d 3e 61 73 73 65  | <assert.h=>asse|
00016470  72 74 3e 20 68 65 61 64  65 72 2e 20 49 66 20 61  |rt> header. If a|
00016480  6e 20 61 73 73 65 72 74  69 6f 6e 20 66 61 69 6c  |n assertion fail|
00016490  73 2c 20 61 6e 20 65 72  72 6f 72 20 62 6f 78 20  |s, an error box |
000164a0  69 73 20 64 69 73 70 6c  61 79 65 64 20 67 69 76  |is displayed giv|
000164b0  69 6e 67 20 74 68 65 20  66 69 6c 65 2c 20 6c 69  |ing the file, li|
000164c0  6e 65 20 61 6e 64 20 72  65 61 73 6f 6e 2e 20 54  |ne and reason. T|
000164d0  68 65 20 75 73 65 72 20  63 61 6e 20 74 68 65 6e  |he user can then|
000164e0  20 71 75 69 74 20 74 68  65 20 61 70 70 6c 69 63  | quit the applic|
000164f0  61 74 69 6f 6e 20 6f 72  20 63 6f 6e 74 69 6e 75  |ation or continu|
00016500  65 2e 0a 0a 46 75 6e 63  74 69 6f 6e 73 3a 0a 0a  |e...Functions:..|
00016510  23 69 6e 64 65 6e 74 20  34 0a 23 54 61 62 6c 65  |#indent 4.#Table|
00016520  20 63 6f 6c 75 6d 6e 73  20 32 0a 3c 43 68 65 63  | columns 2.<Chec|
00016530  6b 5f 49 6e 69 74 3e 0a  3c 43 68 65 63 6b 5f 52  |k_Init>.<Check_R|
00016540  65 67 69 73 74 65 72 43  6c 6f 73 65 44 6f 77 6e  |egisterCloseDown|
00016550  3e 0a 3c 43 68 65 63 6b  5f 41 73 73 65 72 74 3e  |>.<Check_Assert>|
00016560  0a 3c 43 68 65 63 6b 5f  41 73 73 65 72 74 41 6c  |.<Check_AssertAl|
00016570  77 61 79 73 3e 0a 3c 43  68 65 63 6b 5f 41 73 73  |ways>.<Check_Ass|
00016580  65 72 74 46 61 69 6c 75  72 65 3e 0a 3c 43 68 65  |ertFailure>.<Che|
00016590  63 6b 5f 41 73 73 65 72  74 46 61 69 6c 75 72 65  |ck_AssertFailure|
000165a0  45 78 74 3e 0a 3c 43 68  65 63 6b 5f 56 61 6c 69  |Ext>.<Check_Vali|
000165b0  64 3e 0a 3c 43 68 65 63  6b 5f 41 73 73 65 72 74  |d>.<Check_Assert|
000165c0  56 61 6c 69 64 3e 0a 23  45 6e 64 54 61 62 6c 65  |Valid>.#EndTable|
000165d0  0a 23 69 6e 64 65 6e 74  0a 0a 46 75 6e 63 74 69  |.#indent..Functi|
000165e0  6f 6e 2d 6c 69 6b 65 20  6d 61 63 72 6f 73 3a 0a  |on-like macros:.|
000165f0  0a 23 69 6e 64 65 6e 74  20 31 30 0a 23 54 61 62  |.#indent 10.#Tab|
00016600  6c 65 20 63 6f 6c 75 6d  6e 73 20 33 0a 3c 41 53  |le columns 3.<AS|
00016610  53 45 52 54 3d 3e 41 53  53 45 52 54 5f 3e 0a 3c  |SERT=>ASSERT_>.<|
00016620  56 45 52 49 46 59 3e 0a  3c 41 53 53 45 52 54 5f  |VERIFY>.<ASSERT_|
00016630  56 41 4c 49 44 3e 0a 3c  56 45 52 49 46 59 5f 56  |VALID>.<VERIFY_V|
00016640  41 4c 49 44 3e 0a 3c 56  41 4c 49 44 3e 0a 0a 23  |ALID>.<VALID>..#|
00016650  45 6e 64 54 61 62 6c 65  0a 0a 23 54 61 62 6c 65  |EndTable..#Table|
00016660  20 63 6f 6c 75 6d 6e 73  20 32 0a 54 79 70 65 3a  | columns 2.Type:|
00016670  0a 0a 3c 43 6c 6f 73 65  44 6f 77 6e 46 75 6e 63  |..<CloseDownFunc|
00016680  74 69 6f 6e 3e 0a 56 61  72 69 61 62 6c 65 3a 0a  |tion>.Variable:.|
00016690  0a 3c 63 68 65 63 6b 5f  61 62 6f 72 74 69 6e 67  |.<check_aborting|
000166a0  3e 0a 23 45 6e 64 54 61  62 6c 65 00 44 49 52 24  |>.#EndTable.DIR$|
000166b0  5c 01 00 00 5c 01 00 00  08 68 01 00 46 ff ff ff  |\...\....h..F...|
000166c0  50 89 54 26 c7 00 00 00  13 00 00 00 00 00 00 00  |P.T&............|
000166d0  61 62 6f 72 74 69 6e 67  00 00 00 00 d0 68 01 00  |aborting.....h..|
000166e0  46 ff ff ff 89 08 54 26  a4 01 00 00 13 00 00 00  |F.....T&........|
000166f0  00 00 00 00 41 73 73 65  72 74 00 00 74 6a 01 00  |....Assert..tj..|
00016700  46 ff ff ff c9 0e 54 26  eb 00 00 00 13 00 00 00  |F.....T&........|
00016710  00 00 00 00 41 73 73 65  72 74 41 6c 77 61 79 73  |....AssertAlways|
00016720  00 00 00 00 60 6b 01 00  46 ff ff ff b0 14 54 26  |....`k..F.....T&|
00016730  d8 00 00 00 13 00 00 00  00 00 00 00 41 73 73 65  |............Asse|
00016740  72 74 46 61 69 6c 75 72  65 00 00 00 38 6c 01 00  |rtFailure...8l..|
00016750  46 ff ff ff d7 23 54 26  bd 01 00 00 13 00 00 00  |F....#T&........|
00016760  00 00 00 00 41 73 73 65  72 74 46 61 69 6c 75 72  |....AssertFailur|
00016770  65 45 78 74 00 00 00 00  f8 6d 01 00 46 ff ff ff  |eExt.....m..F...|
00016780  eb 3d 54 26 08 01 00 00  13 00 00 00 00 00 00 00  |.=T&............|
00016790  41 73 73 65 72 74 56 61  6c 69 64 00 00 6f 01 00  |AssertValid..o..|
000167a0  46 ff ff ff da f3 53 26  b0 00 00 00 13 00 00 00  |F.....S&........|
000167b0  00 00 00 00 49 6e 69 74  00 00 00 00 b0 6f 01 00  |....Init.....o..|
000167c0  46 ff ff ff cb fa 53 26  1a 01 00 00 13 00 00 00  |F.....S&........|
000167d0  00 00 00 00 52 65 67 69  73 74 65 72 43 6c 6f 73  |....RegisterClos|
000167e0  65 44 6f 77 6e 00 00 00  cc 70 01 00 46 ff ff ff  |eDown....p..F...|
000167f0  45 33 54 26 e7 01 00 00  13 00 00 00 00 00 00 00  |E3T&............|
00016800  56 61 6c 69 64 00 00 00  44 41 54 41 c7 00 00 00  |Valid...DATA....|
00016810  63 68 65 63 6b 5f 61 62  6f 72 74 69 6e 67 0a 54  |check_aborting.T|
00016820  68 69 73 20 76 61 72 69  61 62 6c 65 20 69 73 20  |his variable is |
00016830  64 65 66 69 6e 65 64 20  69 6e 20 3c 54 69 6d 73  |defined in <Tims|
00016840  4c 69 62 3a 43 68 65 63  6b 2e 68 3d 3e 43 68 65  |Lib:Check.h=>Che|
00016850  63 6b 3e 2e 20 49 74 20  63 6f 6e 74 61 69 6e 73  |ck>. It contains|
00016860  20 3c 54 52 55 45 3e 20  77 68 65 6e 20 61 6e 20  | <TRUE> when an |
00016870  69 72 72 65 63 6f 76 65  72 61 62 6c 65 20 65 72  |irrecoverable er|
00016880  72 6f 72 20 68 61 73 20  6f 63 63 75 72 72 65 64  |ror has occurred|
00016890  2c 20 6f 72 20 74 68 65  20 75 73 65 72 20 68 61  |, or the user ha|
000168a0  73 20 64 65 63 69 64 65  64 20 74 6f 20 61 62 6f  |s decided to abo|
000168b0  72 74 20 64 75 65 20 74  6f 20 61 6e 20 61 73 73  |rt due to an ass|
000168c0  65 72 74 69 6f 6e 20 66  61 69 6c 75 72 65 2e 00  |ertion failure..|
000168d0  44 41 54 41 a4 01 00 00  43 68 65 63 6b 5f 41 73  |DATA....Check_As|
000168e0  73 65 72 74 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |sert.Syntax:.voi|
000168f0  64 20 43 68 65 63 6b 5f  41 73 73 65 72 74 20 28  |d Check_Assert (|
00016900  3c 42 4f 4f 4c 3e 20 65  78 70 72 2c 20 63 68 61  |<BOOL> expr, cha|
00016910  72 20 2a 72 65 61 73 6f  6e 29 3b 0a 48 65 61 64  |r *reason);.Head|
00016920  65 72 3a 09 3c 54 69 6d  73 4c 69 62 3a 43 68 65  |er:.<TimsLib:Che|
00016930  63 6b 2e 68 3d 3e 43 68  65 63 6b 3e 0a 0a 54 68  |ck.h=>Check>..Th|
00016940  69 73 20 63 61 6c 6c 20  63 68 65 63 6b 73 20 74  |is call checks t|
00016950  68 61 74 20 2f 65 78 70  72 2f 20 69 73 20 3c 54  |hat /expr/ is <T|
00016960  52 55 45 3e 20 2d 20 69  66 20 6e 6f 74 20 74 68  |RUE> - if not th|
00016970  65 6e 20 61 6e 20 65 72  72 6f 72 20 62 6f 78 20  |en an error box |
00016980  69 73 20 64 69 73 70 6c  61 79 65 64 20 61 6c 6c  |is displayed all|
00016990  6f 77 69 6e 67 20 74 68  65 20 75 73 65 72 20 74  |owing the user t|
000169a0  6f 20 63 6f 6e 74 69 6e  75 65 20 6f 72 20 71 75  |o continue or qu|
000169b0  69 74 2e 20 41 6e 20 6f  70 74 69 6f 6e 61 6c 20  |it. An optional |
000169c0  64 65 73 63 72 69 70 74  69 6f 6e 20 6f 66 20 74  |description of t|
000169d0  68 65 20 66 61 75 6c 74  20 28 7b 2f 7d 72 65 61  |he fault ({/}rea|
000169e0  73 6f 6e 7b 2f 7d 29 20  6d 61 79 20 62 65 20 64  |son{/}) may be d|
000169f0  69 73 70 6c 61 79 65 64  2e 20 49 66 20 2f 72 65  |isplayed. If /re|
00016a00  61 73 6f 6e 2f 20 69 73  20 3c 4e 55 4c 4c 3e 20  |ason/ is <NULL> |
00016a10  74 68 65 6e 20 6e 6f 20  64 65 73 63 72 69 70 74  |then no descript|
00016a20  69 6f 6e 20 69 73 20 64  69 73 70 6c 61 79 65 64  |ion is displayed|
00016a30  2e 0a 0a 49 66 20 74 68  65 20 6d 61 63 72 6f 20  |...If the macro |
00016a40  7b 2a 7d 5f 44 45 42 55  47 7b 2a 7d 20 69 73 20  |{*}_DEBUG{*} is |
00016a50  6e 6f 74 20 64 65 66 69  6e 65 64 20 74 68 65 6e  |not defined then|
00016a60  20 74 68 69 73 20 68 61  73 20 6e 6f 20 65 66 66  | this has no eff|
00016a70  65 63 74 2e 44 41 54 41  eb 00 00 00 43 68 65 63  |ect.DATA....Chec|
00016a80  6b 5f 41 73 73 65 72 74  41 6c 77 61 79 73 0a 53  |k_AssertAlways.S|
00016a90  79 6e 74 61 78 3a 09 76  6f 69 64 20 43 68 65 63  |yntax:.void Chec|
00016aa0  6b 5f 41 73 73 65 72 74  41 6c 77 61 79 73 20 28  |k_AssertAlways (|
00016ab0  3c 42 4f 4f 4c 3e 20 65  78 70 72 2c 20 63 68 61  |<BOOL> expr, cha|
00016ac0  72 20 2a 72 65 61 73 6f  6e 29 3b 0a 48 65 61 64  |r *reason);.Head|
00016ad0  65 72 3a 09 3c 54 69 6d  73 4c 69 62 3a 43 68 65  |er:.<TimsLib:Che|
00016ae0  63 6b 2e 68 3d 3e 43 68  65 63 6b 3e 0a 0a 54 68  |ck.h=>Check>..Th|
00016af0  69 73 20 66 75 6e 63 74  69 6f 6e 20 69 73 20 69  |is function is i|
00016b00  64 65 6e 74 69 63 61 6c  20 74 6f 20 3c 43 68 65  |dentical to <Che|
00016b10  63 6b 5f 41 73 73 65 72  74 3e 2c 20 65 78 63 65  |ck_Assert>, exce|
00016b20  70 74 20 74 68 61 74 20  69 74 20 67 65 74 73 20  |pt that it gets |
00016b30  63 61 6c 6c 65 64 20 72  65 67 61 72 64 6c 65 73  |called regardles|
00016b40  73 20 6f 66 20 74 68 65  20 73 74 61 74 65 20 6f  |s of the state o|
00016b50  66 20 7b 2a 7d 5f 44 45  42 55 47 7b 2a 7d 2e 00  |f {*}_DEBUG{*}..|
00016b60  44 41 54 41 d8 00 00 00  43 68 65 63 6b 5f 41 73  |DATA....Check_As|
00016b70  73 65 72 74 46 61 69 6c  75 72 65 0a 53 79 6e 74  |sertFailure.Synt|
00016b80  61 78 3a 09 76 6f 69 64  20 43 68 65 63 6b 5f 41  |ax:.void Check_A|
00016b90  73 73 65 72 74 46 61 69  6c 75 72 65 20 28 63 68  |ssertFailure (ch|
00016ba0  61 72 20 2a 72 65 61 73  6f 6e 29 3b 0a 48 65 61  |ar *reason);.Hea|
00016bb0  64 65 72 3a 09 3c 54 69  6d 73 4c 69 62 3a 43 68  |der:.<TimsLib:Ch|
00016bc0  65 63 6b 2e 68 3d 3e 43  68 65 63 6b 3e 0a 0a 54  |eck.h=>Check>..T|
00016bd0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 64 69 73  |his function dis|
00016be0  70 6c 61 79 73 20 2f 72  65 61 73 6f 6e 2f 20 69  |plays /reason/ i|
00016bf0  6e 20 61 6e 20 65 72 72  6f 72 20 62 6f 78 2c 20  |n an error box, |
00016c00  61 6e 64 20 67 69 76 65  73 20 74 68 65 20 75 73  |and gives the us|
00016c10  65 72 20 74 68 65 20 63  68 6f 69 63 65 20 6f 66  |er the choice of|
00016c20  20 71 75 69 74 74 69 6e  67 20 6f 72 20 63 6f 6e  | quitting or con|
00016c30  74 69 6e 75 69 6e 67 2e  44 41 54 41 bd 01 00 00  |tinuing.DATA....|
00016c40  43 68 65 63 6b 5f 41 73  73 65 72 74 46 61 69 6c  |Check_AssertFail|
00016c50  75 72 65 45 78 74 0a 53  79 6e 74 61 78 3a 09 76  |ureExt.Syntax:.v|
00016c60  6f 69 64 20 43 68 65 63  6b 5f 41 73 73 65 72 74  |oid Check_Assert|
00016c70  46 61 69 6c 75 72 65 45  78 74 20 28 63 68 61 72  |FailureExt (char|
00016c80  20 2a 72 65 61 73 6f 6e  2c 20 63 68 61 72 20 2a  | *reason, char *|
00016c90  66 69 6c 65 2c 20 69 6e  74 20 6c 69 6e 65 29 3b  |file, int line);|
00016ca0  0a 48 65 61 64 65 72 3a  09 3c 54 69 6d 73 4c 69  |.Header:.<TimsLi|
00016cb0  62 3a 43 68 65 63 6b 2e  68 3d 3e 43 68 65 63 6b  |b:Check.h=>Check|
00016cc0  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
00016cd0  20 64 69 73 70 6c 61 79  73 20 2f 72 65 61 73 6f  | displays /reaso|
00016ce0  6e 2f 2c 20 2f 66 69 6c  65 2f 20 61 6e 64 20 2f  |n/, /file/ and /|
00016cf0  6c 69 6e 65 2f 20 69 6e  20 61 6e 20 65 72 72 6f  |line/ in an erro|
00016d00  72 20 62 6f 78 2c 20 61  6e 64 20 67 69 76 65 73  |r box, and gives|
00016d10  20 74 68 65 20 75 73 65  72 20 74 68 65 20 63 68  | the user the ch|
00016d20  6f 69 63 65 20 6f 66 20  71 75 69 74 74 69 6e 67  |oice of quitting|
00016d30  20 6f 72 20 63 6f 6e 74  69 6e 75 69 6e 67 2e 20  | or continuing. |
00016d40  2f 66 69 6c 65 2f 20 61  6e 64 20 2f 6c 69 6e 65  |/file/ and /line|
00016d50  2f 20 77 69 6c 6c 20 6e  6f 72 6d 61 6c 6c 79 20  |/ will normally |
00016d60  62 65 20 73 65 74 20 75  73 69 6e 67 20 74 68 65  |be set using the|
00016d70  20 7b 2a 7d 5f 5f 46 49  4c 45 5f 5f 7b 2a 7d 20  | {*}__FILE__{*} |
00016d80  61 6e 64 20 7b 2a 7d 5f  5f 4c 49 4e 45 5f 5f 7b  |and {*}__LINE__{|
00016d90  2a 7d 20 6d 61 63 72 6f  73 2e 0a 0a 49 66 20 74  |*} macros...If t|
00016da0  68 65 20 75 73 65 72 20  71 75 69 74 73 2c 20 74  |he user quits, t|
00016db0  68 65 6e 20 74 68 65 20  66 75 6e 63 74 69 6f 6e  |hen the function|
00016dc0  20 72 65 67 69 73 74 65  72 65 64 20 77 69 74 68  | registered with|
00016dd0  20 3c 43 68 65 63 6b 5f  52 65 67 69 73 74 65 72  | <Check_Register|
00016de0  43 6c 6f 73 65 44 6f 77  6e 3e 20 69 73 20 63 61  |CloseDown> is ca|
00016df0  6c 6c 65 64 2e 00 00 00  44 41 54 41 08 01 00 00  |lled....DATA....|
00016e00  43 68 65 63 6b 5f 41 73  73 65 72 74 56 61 6c 69  |Check_AssertVali|
00016e10  64 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 43  |d.Syntax:.void C|
00016e20  68 65 63 6b 5f 41 73 73  65 72 74 56 61 6c 69 64  |heck_AssertValid|
00016e30  20 28 76 6f 69 64 20 2a  70 29 3b 0a 48 65 61 64  | (void *p);.Head|
00016e40  65 72 3a 09 3c 54 69 6d  73 4c 69 62 3a 43 68 65  |er:.<TimsLib:Che|
00016e50  63 6b 2e 68 3d 3e 43 68  65 63 6b 3e 0a 0a 54 68  |ck.h=>Check>..Th|
00016e60  69 73 20 66 75 6e 63 74  69 6f 6e 20 63 68 65 63  |is function chec|
00016e70  6b 73 20 69 66 20 74 68  65 20 67 69 76 65 6e 20  |ks if the given |
00016e80  70 6f 69 6e 74 65 72 20  2f 70 2f 20 69 73 20 76  |pointer /p/ is v|
00016e90  61 6c 69 64 2e 20 49 66  20 69 74 20 69 73 20 6e  |alid. If it is n|
00016ea0  6f 74 20 74 68 65 6e 20  61 6e 20 61 73 73 65 72  |ot then an asser|
00016eb0  74 69 6f 6e 20 66 61 69  6c 75 72 65 20 6f 63 63  |tion failure occ|
00016ec0  75 72 73 2e 20 49 66 20  74 68 65 20 6d 61 63 72  |urs. If the macr|
00016ed0  6f 20 7b 2a 7d 5f 44 45  42 55 47 7b 2a 7d 20 69  |o {*}_DEBUG{*} i|
00016ee0  73 20 6e 6f 74 20 64 65  66 69 6e 65 64 2c 20 69  |s not defined, i|
00016ef0  74 20 68 61 73 20 6e 6f  20 65 66 66 65 63 74 2e  |t has no effect.|
00016f00  44 41 54 41 b0 00 00 00  43 68 65 63 6b 5f 49 6e  |DATA....Check_In|
00016f10  69 74 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |it.Syntax:.void |
00016f20  43 68 65 63 6b 5f 49 6e  69 74 20 28 76 6f 69 64  |Check_Init (void|
00016f30  29 3b 0a 48 65 61 64 65  72 3a 09 3c 54 69 6d 73  |);.Header:.<Tims|
00016f40  4c 69 62 3a 43 68 65 63  6b 2e 68 3d 3e 43 68 65  |Lib:Check.h=>Che|
00016f50  63 6b 3e 0a 0a 49 6e 69  74 69 61 6c 69 73 65 73  |ck>..Initialises|
00016f60  20 74 68 65 20 43 68 65  63 6b 20 6d 6f 64 75 6c  | the Check modul|
00016f70  65 2e 20 54 68 69 73 20  6d 75 73 74 20 62 65 20  |e. This must be |
00016f80  63 61 6c 6c 65 64 20 62  65 66 6f 72 65 20 63 61  |called before ca|
00016f90  6c 6c 69 6e 67 20 61 6e  79 20 6f 74 68 65 72 20  |lling any other |
00016fa0  43 68 65 63 6b 20 66 75  6e 63 74 69 6f 6e 73 2e  |Check functions.|
00016fb0  44 41 54 41 1a 01 00 00  43 68 65 63 6b 5f 52 65  |DATA....Check_Re|
00016fc0  67 69 73 74 65 72 43 6c  6f 73 65 44 6f 77 6e 0a  |gisterCloseDown.|
00016fd0  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 43 68 65  |Syntax:.void Che|
00016fe0  63 6b 5f 52 65 67 69 73  74 65 72 43 6c 6f 73 65  |ck_RegisterClose|
00016ff0  44 6f 77 6e 20 28 3c 43  6c 6f 73 65 44 6f 77 6e  |Down (<CloseDown|
00017000  46 75 6e 63 74 69 6f 6e  3e 20 66 75 6e 63 29 3b  |Function> func);|
00017010  0a 48 65 61 64 65 72 3a  09 3c 54 69 6d 73 4c 69  |.Header:.<TimsLi|
00017020  62 3a 43 68 65 63 6b 2e  68 3d 3e 43 68 65 63 6b  |b:Check.h=>Check|
00017030  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
00017040  20 72 65 67 69 73 74 65  72 73 20 61 20 66 75 6e  | registers a fun|
00017050  63 74 69 6f 6e 20 74 6f  20 62 65 20 63 61 6c 6c  |ction to be call|
00017060  65 64 20 69 6e 20 74 68  65 20 65 76 65 6e 74 20  |ed in the event |
00017070  6f 66 20 61 6e 20 69 72  72 65 63 6f 76 65 72 61  |of an irrecovera|
00017080  62 6c 65 20 61 73 73 65  72 74 69 6f 6e 20 66 61  |ble assertion fa|
00017090  69 6c 75 72 65 2e 20 49  66 20 2f 66 75 6e 63 2f  |ilure. If /func/|
000170a0  20 3d 20 3c 4e 55 4c 4c  3e 20 74 68 65 6e 20 6e  | = <NULL> then n|
000170b0  6f 20 66 75 6e 63 74 69  6f 6e 20 77 69 6c 6c 20  |o function will |
000170c0  62 65 20 63 61 6c 6c 65  64 2e 00 00 44 41 54 41  |be called...DATA|
000170d0  e7 01 00 00 43 68 65 63  6b 5f 56 61 6c 69 64 0a  |....Check_Valid.|
000170e0  53 79 6e 74 61 78 3a 09  3c 42 4f 4f 4c 3e 20 43  |Syntax:.<BOOL> C|
000170f0  68 65 63 6b 5f 56 61 6c  69 64 20 28 76 6f 69 64  |heck_Valid (void|
00017100  20 2a 70 2c 20 63 68 61  72 20 2a 66 69 6c 65 2c  | *p, char *file,|
00017110  20 69 6e 74 20 6c 69 6e  65 29 3b 0a 09 3c 42 4f  | int line);..<BO|
00017120  4f 4c 3e 20 43 68 65 63  6b 5f 56 61 6c 69 64 20  |OL> Check_Valid |
00017130  28 76 6f 69 64 20 2a 70  29 3b 0a 48 65 61 64 65  |(void *p);.Heade|
00017140  72 3a 09 3c 54 69 6d 73  4c 69 62 3a 43 68 65 63  |r:.<TimsLib:Chec|
00017150  6b 2e 68 3d 3e 43 68 65  63 6b 3e 0a 0a 52 65 74  |k.h=>Check>..Ret|
00017160  75 72 6e 73 3a 09 3c 54  52 55 45 3e 20 69 66 20  |urns:.<TRUE> if |
00017170  74 68 65 20 70 6f 69 6e  74 65 72 20 69 73 20 76  |the pointer is v|
00017180  61 6c 69 64 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |alid...This func|
00017190  74 69 6f 6e 20 63 68 65  63 6b 73 20 69 66 20 74  |tion checks if t|
000171a0  68 65 20 67 69 76 65 6e  20 70 6f 69 6e 74 65 72  |he given pointer|
000171b0  20 2f 70 2f 20 69 73 20  76 61 6c 69 64 20 61 6e  | /p/ is valid an|
000171c0  64 20 72 65 74 75 72 6e  73 20 3c 54 52 55 45 3e  |d returns <TRUE>|
000171d0  20 6f 72 20 3c 46 41 4c  53 45 3e 20 61 63 63 6f  | or <FALSE> acco|
000171e0  72 64 69 6e 67 6c 79 2e  20 54 68 65 20 66 69 72  |rdingly. The fir|
000171f0  73 74 20 66 6f 72 6d 20  6f 66 20 74 68 65 20 66  |st form of the f|
00017200  75 6e 63 74 69 6f 6e 20  69 73 20 75 73 65 64 20  |unction is used |
00017210  69 66 20 74 68 65 20 6d  61 63 72 6f 20 7b 2a 7d  |if the macro {*}|
00017220  5f 44 45 42 55 47 7b 2a  7d 20 69 73 20 64 65 66  |_DEBUG{*} is def|
00017230  69 6e 65 64 2c 20 6f 74  68 65 72 77 69 73 65 20  |ined, otherwise |
00017240  74 68 65 20 73 65 63 6f  6e 64 20 66 6f 72 6d 20  |the second form |
00017250  69 73 20 75 73 65 64 2e  20 4e 6f 72 6d 61 6c 6c  |is used. Normall|
00017260  79 20 74 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |y this function |
00017270  77 69 6c 6c 20 6f 6e 6c  79 20 62 65 20 63 61 6c  |will only be cal|
00017280  6c 65 64 20 61 73 20 61  20 72 65 73 75 6c 74 20  |led as a result |
00017290  6f 66 20 75 73 69 6e 67  20 3c 56 41 4c 49 44 3e  |of using <VALID>|
000172a0  20 6f 72 20 3c 41 53 53  45 52 54 5f 56 41 4c 49  | or <ASSERT_VALI|
000172b0  44 3e 2e 00 44 41 54 41  a0 00 00 00 63 6c 65 61  |D>..DATA....clea|
000172c0  72 65 72 72 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |rerr.Syntax:.voi|
000172d0  64 20 63 6c 65 61 72 65  72 72 20 28 3c 46 49 4c  |d clearerr (<FIL|
000172e0  45 3e 20 2a 73 74 72 65  61 6d 29 3b 0a 48 65 61  |E> *stream);.Hea|
000172f0  64 65 72 3a 09 3c 73 74  64 69 6f 2e 68 3d 3e 73  |der:.<stdio.h=>s|
00017300  74 64 69 6f 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |tdio>..This func|
00017310  74 69 6f 6e 20 63 6c 65  61 72 73 20 74 68 65 20  |tion clears the |
00017320  65 6e 64 2d 6f 66 2d 66  69 6c 65 20 61 6e 64 20  |end-of-file and |
00017330  65 72 72 6f 72 20 66 6c  61 67 73 20 6f 66 20 74  |error flags of t|
00017340  68 65 20 73 70 65 63 69  66 69 65 64 20 73 74 72  |he specified str|
00017350  65 61 6d 2e 44 41 54 41  90 01 00 00 63 6c 6f 63  |eam.DATA....cloc|
00017360  6b 0a 53 79 6e 74 61 78  3a 09 3c 63 6c 6f 63 6b  |k.Syntax:.<clock|
00017370  5f 74 3e 20 63 6c 6f 63  6b 20 28 76 6f 69 64 29  |_t> clock (void)|
00017380  3b 0a 48 65 61 64 65 72  3a 09 3c 74 69 6d 65 2e  |;.Header:.<time.|
00017390  68 3d 3e 74 69 6d 65 5f  68 3e 0a 0a 52 65 74 75  |h=>time_h>..Retu|
000173a0  72 6e 73 3a 09 54 68 65  20 6e 75 6d 62 65 72 20  |rns:.The number |
000173b0  6f 66 20 63 6c 6f 63 6b  20 74 69 63 6b 73 2e 0a  |of clock ticks..|
000173c0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
000173d0  65 61 64 73 20 74 68 65  20 6e 75 6d 62 65 72 20  |eads the number |
000173e0  6f 66 20 63 6c 6f 63 6b  20 74 69 63 6b 73 20 77  |of clock ticks w|
000173f0  68 69 63 68 20 68 61 76  65 20 6f 63 63 75 72 72  |hich have occurr|
00017400  65 64 20 73 69 6e 63 65  20 74 68 65 20 6c 61 73  |ed since the las|
00017410  74 20 74 69 6d 65 20 74  68 65 20 63 6f 6d 70 75  |t time the compu|
00017420  74 65 72 27 73 20 69 6e  74 65 72 6e 61 6c 20 63  |ter's internal c|
00017430  6c 6f 63 6b 20 77 61 73  20 72 65 73 65 74 2e 20  |lock was reset. |
00017440  54 68 65 20 6e 75 6d 62  65 72 20 6f 66 20 63 6c  |The number of cl|
00017450  6f 63 6b 20 74 69 63 6b  73 20 70 65 72 20 73 65  |ock ticks per se|
00017460  63 6f 6e 64 20 69 73 20  67 69 76 65 6e 20 62 79  |cond is given by|
00017470  20 3c 43 4c 4f 43 4b 53  5f 50 45 52 5f 53 45 43  | <CLOCKS_PER_SEC|
00017480  3e 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |>...This functio|
00017490  6e 20 69 73 20 72 6f 75  67 68 6c 79 20 65 71 75  |n is roughly equ|
000174a0  69 76 61 6c 65 6e 74 20  74 6f 20 74 68 65 20 53  |ivalent to the S|
000174b0  57 49 20 3c 4f 53 5f 52  65 61 64 4d 6f 6e 6f 74  |WI <OS_ReadMonot|
000174c0  6f 6e 69 63 54 69 6d 65  3d 3e 53 57 49 3a 4f 53  |onicTime=>SWI:OS|
000174d0  5f 52 65 61 64 4d 6f 6e  6f 74 6f 6e 69 63 54 69  |_ReadMonotonicTi|
000174e0  6d 65 3e 2e 44 49 52 24  28 00 00 00 28 00 00 00  |me>.DIR$(...(...|
000174f0  0c 75 01 00 46 ff ff ff  56 49 e2 22 c9 00 00 00  |.u..F...VI."....|
00017500  13 00 00 00 00 00 00 00  74 00 00 00 44 41 54 41  |........t...DATA|
00017510  c9 00 00 00 63 6c 6f 63  6b 5f 74 0a 54 68 65 20  |....clock_t.The |
00017520  74 79 70 65 20 7b 2f 7d  63 6c 6f 63 6b 5f 74 7b  |type {/}clock_t{|
00017530  2f 7d 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |/} is defined in|
00017540  20 3c 74 69 6d 65 2e 68  3d 3e 74 69 6d 65 5f 68  | <time.h=>time_h|
00017550  3e 20 61 73 20 61 6e 20  6f 62 6a 65 63 74 20 63  |> as an object c|
00017560  61 70 61 62 6c 65 20 6f  66 20 68 6f 6c 64 69 6e  |apable of holdin|
00017570  67 20 61 6c 6c 20 70 6f  73 73 69 62 6c 65 20 76  |g all possible v|
00017580  61 6c 75 65 73 20 72 65  74 75 72 6e 65 64 20 62  |alues returned b|
00017590  79 20 74 68 65 20 66 75  6e 63 74 69 6f 6e 20 3c  |y the function <|
000175a0  63 6c 6f 63 6b 3e 2e 20  49 6e 20 45 61 73 79 20  |clock>. In Easy |
000175b0  43 20 69 74 20 69 73 20  64 65 66 69 6e 65 64 20  |C it is defined |
000175c0  61 73 20 61 6e 20 2f 75  6e 73 69 67 6e 65 64 20  |as an /unsigned |
000175d0  69 6e 74 2f 2e 00 00 00  44 49 52 24 2c 00 00 00  |int/....DIR$,...|
000175e0  2c 00 00 00 04 76 01 00  46 ff ff ff 3c 3d e2 22  |,....v..F...<=."|
000175f0  3e 01 00 00 13 00 00 00  00 00 00 00 50 45 52 5f  |>...........PER_|
00017600  53 45 43 00 44 41 54 41  3e 01 00 00 43 4c 4f 43  |SEC.DATA>...CLOC|
00017610  4b 53 5f 50 45 52 5f 53  45 43 0a 54 68 65 20 6d  |KS_PER_SEC.The m|
00017620  61 63 72 6f 20 7b 2f 7d  43 4c 4f 43 4b 53 5f 50  |acro {/}CLOCKS_P|
00017630  45 52 5f 53 45 43 7b 2f  7d 20 69 73 20 64 65 66  |ER_SEC{/} is def|
00017640  69 6e 65 64 20 69 6e 20  3c 74 69 6d 65 2e 68 3d  |ined in <time.h=|
00017650  3e 74 69 6d 65 5f 68 3e  20 74 6f 20 72 65 70 72  |>time_h> to repr|
00017660  65 73 65 6e 74 20 74 68  65 20 6e 75 6d 62 65 72  |esent the number|
00017670  20 6f 66 20 63 6c 6f 63  6b 20 74 69 63 6b 73 20  | of clock ticks |
00017680  70 65 72 20 73 65 63 6f  6e 64 20 28 6f 72 20 6d  |per second (or m|
00017690  6f 72 65 20 66 6f 72 6d  61 6c 6c 79 2c 20 74 68  |ore formally, th|
000176a0  65 20 64 69 66 66 65 72  65 6e 63 65 20 69 6e 20  |e difference in |
000176b0  74 68 65 20 72 65 74 75  72 6e 20 76 61 6c 75 65  |the return value|
000176c0  73 20 6f 66 20 74 68 65  20 66 75 6e 63 74 69 6f  |s of the functio|
000176d0  6e 20 3c 63 6c 6f 63 6b  3e 20 61 74 20 6f 6e 65  |n <clock> at one|
000176e0  20 73 65 63 6f 6e 64 20  69 6e 74 65 72 76 61 6c  | second interval|
000176f0  73 29 2e 20 49 6e 20 45  61 73 79 20 43 20 69 74  |s). In Easy C it|
00017700  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 20 31  | is defined as 1|
00017710  30 30 2c 20 68 65 6e 63  65 20 74 68 65 20 63 6c  |00, hence the cl|
00017720  6f 63 6b 20 74 69 63 6b  20 76 61 6c 75 65 20 69  |ock tick value i|
00017730  73 20 69 6e 20 63 65 6e  74 69 73 65 63 6f 6e 64  |s in centisecond|
00017740  73 2e 00 00 44 41 54 41  d0 00 00 00 43 6c 6f 73  |s...DATA....Clos|
00017750  65 44 6f 77 6e 46 75 6e  63 74 69 6f 6e 0a 54 68  |eDownFunction.Th|
00017760  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
00017770  65 64 20 69 6e 20 3c 54  69 6d 73 4c 69 62 3a 43  |ed in <TimsLib:C|
00017780  68 65 63 6b 2e 68 3d 3e  43 68 65 63 6b 3e 2e 20  |heck.h=>Check>. |
00017790  49 74 20 69 73 20 74 68  65 20 74 79 70 65 20 6f  |It is the type o|
000177a0  66 20 61 20 66 75 6e 63  74 69 6f 6e 20 63 61 6c  |f a function cal|
000177b0  6c 65 64 20 6f 6e 20 61  20 61 73 73 65 72 74 69  |led on a asserti|
000177c0  6f 6e 20 66 61 69 6c 75  72 65 2e 20 54 68 65 20  |on failure. The |
000177d0  66 75 6e 63 74 69 6f 6e  20 73 68 6f 75 6c 64 20  |function should |
000177e0  68 61 76 65 20 74 68 65  20 66 6f 72 6d 3a 0a 0a  |have the form:..|
000177f0  7b 66 43 6f 64 65 3b 61  6c 69 67 6e 20 63 65 6e  |{fCode;align cen|
00017800  74 72 65 7d 76 6f 69 64  20 6d 79 5f 66 75 6e 63  |tre}void my_func|
00017810  20 28 29 3b 44 49 52 24  64 00 00 00 64 00 00 00  | ();DIR$d...d...|
00017820  78 78 01 00 46 ff ff ff  a5 b1 61 25 1f 01 00 00  |xx..F.....a%....|
00017830  13 00 00 00 00 00 00 00  63 6d 79 6b 00 00 00 00  |........cmyk....|
00017840  98 79 01 00 46 ff ff ff  5c a8 61 25 13 01 00 00  |.y..F...\.a%....|
00017850  13 00 00 00 00 00 00 00  68 73 76 00 ac 7a 01 00  |........hsv..z..|
00017860  46 ff ff ff 3c a1 61 25  22 01 00 00 13 00 00 00  |F...<.a%".......|
00017870  00 00 00 00 72 67 62 00  44 41 54 41 1f 01 00 00  |....rgb.DATA....|
00017880  63 6f 6c 6f 75 72 5f 63  6d 79 6b 0a 54 68 69 73  |colour_cmyk.This|
00017890  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
000178a0  20 69 6e 20 3c 44 65 73  6b 4c 69 62 3a 50 6f 70  | in <DeskLib:Pop|
000178b0  55 70 2e 68 3d 3e 50 6f  70 55 70 3e 2e 20 49 74  |Up.h=>PopUp>. It|
000178c0  20 69 73 20 61 20 73 74  72 75 63 74 75 72 65 20  | is a structure |
000178d0  75 73 65 64 20 74 6f 20  68 6f 6c 64 20 61 20 43  |used to hold a C|
000178e0  4d 59 4b 20 63 6f 6c 6f  75 72 3a 0a 0a 20 20 5c  |MYK colour:..  \|
000178f0  7b 0a 20 20 20 20 75 6e  73 69 67 6e 65 64 20 69  |{.    unsigned i|
00017900  6e 74 20 6b 65 79 09 09  3a 20 38 3b 0a 20 20 20  |nt key..: 8;.   |
00017910  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 79 65  | unsigned int ye|
00017920  6c 6c 6f 77 09 09 3a 20  38 3b 0a 20 20 20 20 75  |llow..: 8;.    u|
00017930  6e 73 69 67 6e 65 64 20  69 6e 74 20 6d 61 67 65  |nsigned int mage|
00017940  6e 74 61 09 3a 20 38 3b  0a 20 20 20 20 75 6e 73  |nta.: 8;.    uns|
00017950  69 67 6e 65 64 20 69 6e  74 20 63 79 61 6e 09 09  |igned int cyan..|
00017960  3a 20 38 3b 0a 20 20 7d  0a 0a 53 65 65 20 74 68  |: 8;.  }..See th|
00017970  65 20 50 6f 70 55 70 20  64 6f 63 75 6d 65 6e 74  |e PopUp document|
00017980  61 74 69 6f 6e 20 66 6f  72 20 6d 6f 72 65 20 64  |ation for more d|
00017990  65 74 61 69 6c 73 2e 00  44 41 54 41 13 01 00 00  |etails..DATA....|
000179a0  63 6f 6c 6f 75 72 5f 68  73 76 0a 54 68 69 73 20  |colour_hsv.This |
000179b0  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
000179c0  69 6e 20 3c 44 65 73 6b  4c 69 62 3a 50 6f 70 55  |in <DeskLib:PopU|
000179d0  70 2e 68 3d 3e 50 6f 70  55 70 3e 2e 20 49 74 20  |p.h=>PopUp>. It |
000179e0  69 73 20 61 20 73 74 72  75 63 74 75 72 65 20 75  |is a structure u|
000179f0  73 65 64 20 74 6f 20 68  6f 6c 64 20 61 6e 20 48  |sed to hold an H|
00017a00  53 56 20 63 6f 6c 6f 75  72 3a 0a 0a 20 20 5c 7b  |SV colour:..  \{|
00017a10  0a 20 20 20 20 75 6e 73  69 67 6e 65 64 20 69 6e  |.    unsigned in|
00017a20  74 20 76 61 6c 75 65 09  09 3a 20 38 3b 0a 20 20  |t value..: 8;.  |
00017a30  20 20 75 6e 73 69 67 6e  65 64 20 69 6e 74 20 73  |  unsigned int s|
00017a40  61 74 75 72 61 74 69 6f  6e 09 3a 20 38 3b 0a 20  |aturation.: 8;. |
00017a50  20 20 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |   unsigned int |
00017a60  68 75 65 09 09 3a 20 31  36 3b 20 2f 2a 20 30 20  |hue..: 16; /* 0 |
00017a70  2d 20 33 35 39 20 2a 2f  0a 20 20 7d 0a 0a 53 65  |- 359 */.  }..Se|
00017a80  65 20 74 68 65 20 50 6f  70 55 70 20 64 6f 63 75  |e the PopUp docu|
00017a90  6d 65 6e 74 61 74 69 6f  6e 20 66 6f 72 20 6d 6f  |mentation for mo|
00017aa0  72 65 20 64 65 74 61 69  6c 73 2e 00 44 41 54 41  |re details..DATA|
00017ab0  22 01 00 00 63 6f 6c 6f  75 72 5f 72 67 62 0a 54  |"...colour_rgb.T|
00017ac0  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
00017ad0  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
00017ae0  50 6f 70 55 70 2e 68 3d  3e 50 6f 70 55 70 3e 2e  |PopUp.h=>PopUp>.|
00017af0  20 49 74 20 69 73 20 61  20 73 74 72 75 63 74 75  | It is a structu|
00017b00  72 65 20 75 73 65 64 20  74 6f 20 68 6f 6c 64 20  |re used to hold |
00017b10  61 6e 20 52 47 42 20 63  6f 6c 6f 75 72 3a 0a 0a  |an RGB colour:..|
00017b20  20 20 5c 7b 0a 20 20 20  20 75 6e 73 69 67 6e 65  |  \{.    unsigne|
00017b30  64 20 69 6e 74 20 74 72  61 6e 73 70 61 72 65 6e  |d int transparen|
00017b40  63 79 09 3a 20 38 3b 0a  20 20 20 20 75 6e 73 69  |cy.: 8;.    unsi|
00017b50  67 6e 65 64 20 69 6e 74  20 72 65 64 09 09 3a 20  |gned int red..: |
00017b60  38 3b 0a 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |8;.    unsigned |
00017b70  69 6e 74 20 67 72 65 65  6e 09 09 3a 20 38 3b 0a  |int green..: 8;.|
00017b80  20 20 20 20 75 6e 73 69  67 6e 65 64 20 69 6e 74  |    unsigned int|
00017b90  20 62 6c 75 65 09 09 3a  20 38 3b 0a 20 20 7d 0a  | blue..: 8;.  }.|
00017ba0  0a 53 65 65 20 74 68 65  20 50 6f 70 55 70 20 64  |.See the PopUp d|
00017bb0  6f 63 75 6d 65 6e 74 61  74 69 6f 6e 20 66 6f 72  |ocumentation for|
00017bc0  20 6d 6f 72 65 20 64 65  74 61 69 6c 73 2e 00 00  | more details...|
00017bd0  44 41 54 41 e0 01 00 00  63 6f 6c 6f 75 72 6d 65  |DATA....colourme|
00017be0  6e 75 2e 68 0a 54 68 65  20 5c 3c 63 6f 6c 6f 75  |nu.h.The \<colou|
00017bf0  72 6d 65 6e 75 2e 68 3e  20 68 65 61 64 65 72 20  |rmenu.h> header |
00017c00  64 65 63 6c 61 72 65 73  20 6f 6e 65 20 66 75 6e  |declares one fun|
00017c10  63 74 69 6f 6e 2c 20 61  73 20 66 6f 6c 6c 6f 77  |ction, as follow|
00017c20  73 3a 0a 0a 53 79 6e 74  61 78 3a 09 3c 6d 65 6e  |s:..Syntax:.<men|
00017c30  75 3e 20 63 6f 6c 6f 75  72 6d 65 6e 75 5f 6d 61  |u> colourmenu_ma|
00017c40  6b 65 20 28 63 68 61 72  20 2a 74 69 74 6c 65 2c  |ke (char *title,|
00017c50  20 3c 42 4f 4f 4c 3e 20  6e 6f 6e 65 66 6c 61 67  | <BOOL> noneflag|
00017c60  29 3b 0a 48 65 61 64 65  72 3a 09 3c 63 6f 6c 6f  |);.Header:.<colo|
00017c70  75 72 6d 65 6e 75 2e 68  3d 3e 63 6f 6c 6f 75 72  |urmenu.h=>colour|
00017c80  6d 65 6e 75 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |menu>..Returns:.|
00017c90  50 6f 69 6e 74 65 72 20  74 6f 20 6d 65 6e 75 20  |Pointer to menu |
00017ca0  73 74 72 75 63 74 75 72  65 2e 0a 0a 54 68 69 73  |structure...This|
00017cb0  20 66 75 6e 63 74 69 6f  6e 20 63 72 65 61 74 65  | function create|
00017cc0  73 20 61 20 6d 65 6e 75  20 63 6f 6e 74 61 69 6e  |s a menu contain|
00017cd0  69 6e 67 20 74 68 65 20  31 36 20 57 69 6d 70 20  |ing the 16 Wimp |
00017ce0  63 6f 6c 6f 75 72 73 2e  20 49 66 20 2f 6e 6f 6e  |colours. If /non|
00017cf0  65 66 6c 61 67 2f 20 3d  20 3c 54 52 55 45 3e 20  |eflag/ = <TRUE> |
00017d00  74 68 65 6e 20 61 6e 20  61 64 64 69 74 69 6f 6e  |then an addition|
00017d10  61 6c 20 65 6e 74 72 79  20 27 4e 6f 6e 65 27 20  |al entry 'None' |
00017d20  77 69 6c 6c 20 62 65 20  70 72 65 73 65 6e 74 2e  |will be present.|
00017d30  20 2f 74 69 74 6c 65 2f  20 70 6f 69 6e 74 73 20  | /title/ points |
00017d40  74 6f 20 74 68 65 20 74  69 74 6c 65 20 66 6f 72  |to the title for|
00017d50  20 74 68 65 20 6d 65 6e  75 2e 20 54 68 65 20 6d  | the menu. The m|
00017d60  65 6e 75 20 69 73 20 6f  6e 6c 79 20 63 72 65 61  |enu is only crea|
00017d70  74 65 64 2c 20 6e 6f 74  20 64 69 73 70 6c 61 79  |ted, not display|
00017d80  65 64 2e 0a 0a 54 68 65  20 69 63 6f 6e 73 20 6f  |ed...The icons o|
00017d90  6e 20 74 68 69 73 20 6d  65 6e 75 20 61 72 65 20  |n this menu are |
00017da0  6e 75 6d 62 65 72 65 64  20 66 72 6f 6d 20 31 2e  |numbered from 1.|
00017db0  44 41 54 41 ad 01 00 00  43 6f 6c 6f 75 72 54 72  |DATA....ColourTr|
00017dc0  61 6e 2e 68 0a 56 65 72  73 69 6f 6e 3a 20 31 2e  |an.h.Version: 1.|
00017dd0  30 30 20 28 31 33 20 4d  61 79 20 31 39 39 34 29  |00 (13 May 1994)|
00017de0  0a 23 6c 69 6e 65 0a 54  68 65 20 5c 3c 43 6f 6c  |.#line.The \<Col|
00017df0  6f 75 72 54 72 61 6e 2e  68 3e 20 68 65 61 64 65  |ourTran.h> heade|
00017e00  72 20 64 65 66 69 6e 65  73 20 73 65 76 65 72 61  |r defines severa|
00017e10  6c 20 66 75 6e 63 74 69  6f 6e 73 20 77 68 69 63  |l functions whic|
00017e20  68 20 61 63 63 65 73 73  20 74 68 65 20 72 6f 75  |h access the rou|
00017e30  74 69 6e 65 73 20 69 6e  20 74 68 65 20 3c 43 6f  |tines in the <Co|
00017e40  6c 6f 75 72 54 72 61 6e  73 3d 3e 53 57 49 3a 43  |lourTrans=>SWI:C|
00017e50  6f 6c 6f 75 72 54 72 61  6e 73 5f 3e 20 6d 6f 64  |olourTrans_> mod|
00017e60  75 6c 65 2e 20 49 74 20  61 6c 73 6f 20 64 65 66  |ule. It also def|
00017e70  69 6e 65 73 20 6f 6e 65  20 74 79 70 65 2e 0a 0a  |ines one type...|
00017e80  46 75 6e 63 74 69 6f 6e  73 3a 0a 0a 23 69 6e 64  |Functions:..#ind|
00017e90  65 6e 74 20 38 0a 3c 43  6f 6c 6f 75 72 54 72 61  |ent 8.<ColourTra|
00017ea0  6e 73 5f 53 65 74 47 43  4f 4c 3e 0a 3c 43 6f 6c  |ns_SetGCOL>.<Col|
00017eb0  6f 75 72 54 72 61 6e 73  5f 49 6e 76 61 6c 69 64  |ourTrans_Invalid|
00017ec0  61 74 65 43 61 63 68 65  3e 0a 3c 43 6f 6c 6f 75  |ateCache>.<Colou|
00017ed0  72 54 72 61 6e 73 5f 53  65 6c 65 63 74 54 61 62  |rTrans_SelectTab|
00017ee0  6c 65 3e 0a 3c 43 6f 6c  6f 75 72 54 72 61 6e 73  |le>.<ColourTrans|
00017ef0  5f 52 65 74 75 72 6e 46  6f 6e 74 43 6f 6c 6f 75  |_ReturnFontColou|
00017f00  72 73 3e 0a 3c 43 6f 6c  6f 75 72 54 72 61 6e 73  |rs>.<ColourTrans|
00017f10  5f 52 65 74 75 72 6e 43  6f 6c 6f 75 72 4e 75 6d  |_ReturnColourNum|
00017f20  62 65 72 46 6f 72 4d 6f  64 65 3e 0a 23 69 6e 64  |berForMode>.#ind|
00017f30  65 6e 74 0a 0a 54 79 70  65 3a 0a 0a 23 69 6e 64  |ent..Type:..#ind|
00017f40  65 6e 74 20 38 0a 3c 63  6f 6c 6f 75 72 74 72 61  |ent 8.<colourtra|
00017f50  6e 73 5f 66 6f 6e 74 62  6c 6f 63 6b 3e 00 00 00  |ns_fontblock>...|
00017f60  44 49 52 24 2c 03 00 00  2c 03 00 00 8c 82 01 00  |DIR$,...,.......|
00017f70  46 ff ff ff 27 8c 1c 23  2f 01 00 00 13 00 00 00  |F...'..#/.......|
00017f80  00 00 00 00 63 6f 6c 6f  75 72 6e 75 6d 62 65 72  |....colournumber|
00017f90  74 6f 47 43 4f 4c 00 00  bc 83 01 00 46 ff ff ff  |toGCOL......F...|
00017fa0  46 85 1c 23 30 01 00 00  13 00 00 00 00 00 00 00  |F..#0...........|
00017fb0  47 43 4f 4c 5f 74 6f 63  6f 6c 6f 75 72 6e 75 6d  |GCOL_tocolournum|
00017fc0  62 65 72 00 ec 84 01 00  46 ff ff ff db 21 1c 23  |ber.....F....!.#|
00017fd0  e9 02 00 00 13 00 00 00  00 00 00 00 68 00 00 00  |............h...|
00017fe0  d8 87 01 00 46 ff ff ff  f6 e1 1c 23 25 01 00 00  |....F......#%...|
00017ff0  13 00 00 00 00 00 00 00  69 6e 76 61 6c 69 64 61  |........invalida|
00018000  74 65 5f 63 61 63 68 65  00 00 00 00 00 89 01 00  |te_cache........|
00018010  46 ff ff ff a5 fb 1b 23  66 01 00 00 13 00 00 00  |F......#f.......|
00018020  00 00 00 00 72 65 74 75  72 6e 5f 63 6f 6c 6f 75  |....return_colou|
00018030  72 6e 75 6d 62 65 72 00  68 8a 01 00 46 ff ff ff  |rnumber.h...F...|
00018040  e5 03 1c 23 93 01 00 00  13 00 00 00 00 00 00 00  |...#............|
00018050  72 65 74 75 72 6e 5f 47  43 4f 4c 66 6f 72 6d 6f  |return_GCOLformo|
00018060  64 65 00 00 fc 8b 01 00  46 ff ff ff 11 66 1c 23  |de......F....f.#|
00018070  4f 01 00 00 13 00 00 00  00 00 00 00 72 65 74 75  |O...........retu|
00018080  72 6e 5f 4f 70 70 47 43  4f 4c 00 00 4c 8d 01 00  |rn_OppGCOL..L...|
00018090  46 ff ff ff 94 97 1c 23  0d 02 00 00 13 00 00 00  |F......#........|
000180a0  00 00 00 00 72 65 74 75  72 6e 66 6f 6e 74 63 6f  |....returnfontco|
000180b0  6c 6f 75 72 73 00 00 00  5c 8f 01 00 46 ff ff ff  |lours...\...F...|
000180c0  30 dc 1b 23 5d 01 00 00  13 00 00 00 00 00 00 00  |0..#]...........|
000180d0  72 65 74 75 72 6e 47 43  4f 4c 00 00 bc 90 01 00  |returnGCOL......|
000180e0  46 ff ff ff 2d d3 1b 23  82 01 00 00 13 00 00 00  |F...-..#........|
000180f0  00 00 00 00 73 65 6c 65  63 74 5f 47 43 4f 4c 74  |....select_GCOLt|
00018100  61 62 6c 65 00 00 00 00  40 92 01 00 46 ff ff ff  |able....@...F...|
00018110  66 be 1b 23 7e 01 00 00  13 00 00 00 00 00 00 00  |f..#~...........|
00018120  73 65 6c 65 63 74 5f 74  61 62 6c 65 00 00 00 00  |select_table....|
00018130  c0 93 01 00 46 ff ff ff  9c da 1c 23 4c 02 00 00  |....F......#L...|
00018140  13 00 00 00 00 00 00 00  73 65 74 66 6f 6e 74 63  |........setfontc|
00018150  6f 6c 6f 75 72 73 00 00  0c 96 01 00 46 ff ff ff  |olours......F...|
00018160  5f f1 1b 23 ec 01 00 00  13 00 00 00 00 00 00 00  |_..#............|
00018170  73 65 74 47 43 4f 4c 00  f8 97 01 00 46 ff ff ff  |setGCOL.....F...|
00018180  c9 74 b5 22 12 02 00 00  13 00 00 00 00 00 00 00  |.t."............|
00018190  73 65 74 4f 70 70 47 43  4f 4c 00 00 0c 9a 01 00  |setOppGCOL......|
000181a0  46 ff ff ff 0d 5f 1c 23  a1 01 00 00 13 00 00 00  |F...._.#........|
000181b0  00 00 00 00 72 65 74 75  72 6e 5f 63 6f 6c 6f 75  |....return_colou|
000181c0  72 66 6f 72 6d 6f 64 65  00 00 00 00 b0 9b 01 00  |rformode........|
000181d0  46 ff ff ff 5c ed 1c 23  75 01 00 00 13 00 00 00  |F...\..#u.......|
000181e0  00 00 00 00 63 6f 6e 76  65 72 74 5f 64 65 76 69  |....convert_devi|
000181f0  63 65 5f 63 6f 6c 6f 75  72 00 00 00 28 9d 01 00  |ce_colour...(...|
00018200  46 ff ff ff 33 7e 1c 23  aa 01 00 00 13 00 00 00  |F...3~.#........|
00018210  00 00 00 00 72 65 74 75  72 6e 5f 4f 70 70 63 6f  |....return_Oppco|
00018220  6c 6f 75 72 66 6f 72 6d  6f 64 65 00 d4 9e 01 00  |lourformode.....|
00018230  46 ff ff ff 47 6e 1c 23  61 01 00 00 13 00 00 00  |F...Gn.#a.......|
00018240  00 00 00 00 72 65 74 75  72 6e 5f 4f 70 70 63 6f  |....return_Oppco|
00018250  6c 6f 75 72 6e 75 6d 62  65 72 00 00 38 a0 01 00  |lournumber..8...|
00018260  46 ff ff ff 2a 76 1c 23  9c 01 00 00 13 00 00 00  |F...*v.#........|
00018270  00 00 00 00 72 65 74 75  72 6e 5f 4f 70 70 47 43  |....return_OppGC|
00018280  4f 4c 66 6f 72 6d 6f 64  65 00 00 00 44 41 54 41  |OLformode...DATA|
00018290  2f 01 00 00 63 6f 6c 6f  75 72 74 72 61 6e 5f 63  |/...colourtran_c|
000182a0  6f 6c 6f 75 72 6e 75 6d  62 65 72 74 6f 47 43 4f  |olournumbertoGCO|
000182b0  4c 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |L.Syntax:.<os_er|
000182c0  72 6f 72 3e 20 2a 63 6f  6c 6f 75 72 74 72 61 6e  |ror> *colourtran|
000182d0  5f 63 6f 6c 6f 75 72 6e  75 6d 62 65 72 74 6f 47  |_colournumbertoG|
000182e0  43 4f 4c 20 28 69 6e 74  20 63 6f 6c 2c 20 69 6e  |COL (int col, in|
000182f0  74 20 2a 67 63 6f 6c 29  3b 0a 48 65 61 64 65 72  |t *gcol);.Header|
00018300  3a 09 3c 63 6f 6c 6f 75  72 74 72 61 6e 2e 68 3d  |:.<colourtran.h=|
00018310  3e 63 6f 6c 6f 75 72 74  72 61 6e 5f 68 3e 0a 0a  |>colourtran_h>..|
00018320  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00018330  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00018340  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00018350  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 74 72 61  |his function tra|
00018360  6e 73 6c 61 74 65 73 20  61 20 63 6f 6c 6f 75 72  |nslates a colour|
00018370  20 6e 75 6d 62 65 72 20  74 6f 20 61 20 47 43 4f  | number to a GCO|
00018380  4c 20 28 61 73 73 75 6d  69 6e 67 20 32 35 36 20  |L (assuming 256 |
00018390  63 6f 6c 6f 75 72 20 6d  6f 64 65 29 20 61 6e 64  |colour mode) and|
000183a0  20 72 65 74 75 72 6e 73  20 69 74 20 69 6e 20 7b  | returns it in {|
000183b0  2f 7d 2a 67 63 6f 6c 7b  2f 7d 2e 00 44 41 54 41  |/}*gcol{/}..DATA|
000183c0  30 01 00 00 63 6f 6c 6f  75 72 74 72 61 6e 5f 47  |0...colourtran_G|
000183d0  43 4f 4c 5f 74 6f 63 6f  6c 6f 75 72 6e 75 6d 62  |COL_tocolournumb|
000183e0  65 72 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |er.Syntax:.<os_e|
000183f0  72 72 6f 72 3e 20 2a 63  6f 6c 6f 75 72 74 72 61  |rror> *colourtra|
00018400  6e 5f 47 43 4f 4c 5f 74  6f 63 6f 6c 6f 75 72 6e  |n_GCOL_tocolourn|
00018410  75 6d 62 65 72 20 28 69  6e 74 20 67 63 6f 6c 2c  |umber (int gcol,|
00018420  20 69 6e 74 20 2a 63 6f  6c 29 3b 0a 48 65 61 64  | int *col);.Head|
00018430  65 72 3a 09 3c 63 6f 6c  6f 75 72 74 72 61 6e 2e  |er:.<colourtran.|
00018440  68 3d 3e 63 6f 6c 6f 75  72 74 72 61 6e 5f 68 3e  |h=>colourtran_h>|
00018450  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
00018460  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
00018470  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
00018480  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 74  |.This function t|
00018490  72 61 6e 73 6c 61 74 65  73 20 61 20 47 43 4f 4c  |ranslates a GCOL|
000184a0  20 74 6f 20 61 20 63 6f  6c 6f 75 72 20 6e 75 6d  | to a colour num|
000184b0  62 65 72 20 28 61 73 73  75 6d 69 6e 67 20 32 35  |ber (assuming 25|
000184c0  36 20 63 6f 6c 6f 75 72  20 6d 6f 64 65 29 20 61  |6 colour mode) a|
000184d0  6e 64 20 72 65 74 75 72  6e 73 20 69 74 20 69 6e  |nd returns it in|
000184e0  20 7b 2f 7d 2a 63 6f 6c  7b 2f 7d 2e 44 41 54 41  | {/}*col{/}.DATA|
000184f0  e9 02 00 00 63 6f 6c 6f  75 72 74 72 61 6e 2e 68  |....colourtran.h|
00018500  0a 54 68 65 20 5c 3c 63  6f 6c 6f 75 72 74 72 61  |.The \<colourtra|
00018510  6e 2e 68 3e 20 68 65 61  64 65 72 20 64 65 63 6c  |n.h> header decl|
00018520  61 72 65 73 20 66 75 6e  63 74 69 6f 6e 73 0a 61  |ares functions.a|
00018530  63 63 65 73 73 69 6e 67  20 74 68 65 20 72 6f 75  |ccessing the rou|
00018540  74 69 6e 65 73 20 69 6e  20 74 68 65 20 43 6f 6c  |tines in the Col|
00018550  6f 75 72 54 72 61 6e 73  0a 6d 6f 64 75 6c 65 2e  |ourTrans.module.|
00018560  0a 0a 46 75 6e 63 74 69  6f 6e 73 3a 0a 0a 20 20  |..Functions:..  |
00018570  20 20 20 3c 63 6f 6c 6f  75 72 74 72 61 6e 5f 73  |   <colourtran_s|
00018580  65 6c 65 63 74 5f 74 61  62 6c 65 3e 0a 20 20 20  |elect_table>.   |
00018590  20 20 3c 63 6f 6c 6f 75  72 74 72 61 6e 5f 73 65  |  <colourtran_se|
000185a0  6c 65 63 74 5f 47 43 4f  4c 74 61 62 6c 65 3e 0a  |lect_GCOLtable>.|
000185b0  20 20 20 20 20 3c 63 6f  6c 6f 75 72 74 72 61 6e  |     <colourtran|
000185c0  5f 72 65 74 75 72 6e 47  43 4f 4c 3e 0a 20 20 20  |_returnGCOL>.   |
000185d0  20 20 3c 63 6f 6c 6f 75  72 74 72 61 6e 5f 73 65  |  <colourtran_se|
000185e0  74 47 43 4f 4c 3e 0a 20  20 20 20 20 3c 63 6f 6c  |tGCOL>.     <col|
000185f0  6f 75 72 74 72 61 6e 5f  72 65 74 75 72 6e 5f 63  |ourtran_return_c|
00018600  6f 6c 6f 75 72 6e 75 6d  62 65 72 3e 0a 20 20 20  |olournumber>.   |
00018610  20 20 3c 63 6f 6c 6f 75  72 74 72 61 6e 5f 72 65  |  <colourtran_re|
00018620  74 75 72 6e 5f 47 43 4f  4c 66 6f 72 6d 6f 64 65  |turn_GCOLformode|
00018630  3e 0a 20 20 20 20 20 3c  63 6f 6c 6f 75 72 74 72  |>.     <colourtr|
00018640  61 6e 5f 72 65 74 75 72  6e 5f 63 6f 6c 6f 75 72  |an_return_colour|
00018650  66 6f 72 6d 6f 64 65 3e  0a 20 20 20 20 20 3c 63  |formode>.     <c|
00018660  6f 6c 6f 75 72 74 72 61  6e 5f 72 65 74 75 72 6e  |olourtran_return|
00018670  5f 4f 70 70 47 43 4f 4c  3e 0a 20 20 20 20 20 3c  |_OppGCOL>.     <|
00018680  63 6f 6c 6f 75 72 74 72  61 6e 5f 72 65 74 75 72  |colourtran_retur|
00018690  6e 5f 4f 70 70 63 6f 6c  6f 75 72 6e 75 6d 62 65  |n_Oppcolournumbe|
000186a0  72 3e 0a 20 20 20 20 20  3c 63 6f 6c 6f 75 72 74  |r>.     <colourt|
000186b0  72 61 6e 5f 72 65 74 75  72 6e 5f 4f 70 70 47 43  |ran_return_OppGC|
000186c0  4f 4c 66 6f 72 6d 6f 64  65 3e 0a 20 20 20 20 20  |OLformode>.     |
000186d0  3c 63 6f 6c 6f 75 72 74  72 61 6e 5f 72 65 74 75  |<colourtran_retu|
000186e0  72 6e 5f 4f 70 70 63 6f  6c 6f 75 72 66 6f 72 6d  |rn_Oppcolourform|
000186f0  6f 64 65 3e 0a 20 20 20  20 20 3c 63 6f 6c 6f 75  |ode>.     <colou|
00018700  72 74 72 61 6e 5f 47 43  4f 4c 5f 74 6f 63 6f 6c  |rtran_GCOL_tocol|
00018710  6f 75 72 6e 75 6d 62 65  72 3e 0a 20 20 20 20 20  |ournumber>.     |
00018720  3c 63 6f 6c 6f 75 72 74  72 61 6e 5f 63 6f 6c 6f  |<colourtran_colo|
00018730  75 72 6e 75 6d 62 65 72  74 6f 47 43 4f 4c 3e 0a  |urnumbertoGCOL>.|
00018740  20 20 20 20 20 3c 63 6f  6c 6f 75 72 74 72 61 6e  |     <colourtran|
00018750  5f 72 65 74 75 72 6e 66  6f 6e 74 63 6f 6c 6f 75  |_returnfontcolou|
00018760  72 73 3e 0a 20 20 20 20  20 3c 63 6f 6c 6f 75 72  |rs>.     <colour|
00018770  74 72 61 6e 5f 73 65 74  66 6f 6e 74 63 6f 6c 6f  |tran_setfontcolo|
00018780  75 72 73 3e 0a 20 20 20  20 20 3c 63 6f 6c 6f 75  |urs>.     <colou|
00018790  72 74 72 61 6e 5f 69 6e  76 61 6c 69 64 61 74 65  |rtran_invalidate|
000187a0  5f 63 61 63 68 65 3e 0a  20 20 20 20 20 3c 63 6f  |_cache>.     <co|
000187b0  6c 6f 75 72 74 72 61 6e  5f 63 6f 6e 76 65 72 74  |lourtran_convert|
000187c0  5f 64 65 76 69 63 65 5f  63 6f 6c 6f 75 72 3e 0a  |_device_colour>.|
000187d0  20 20 20 20 20 00 00 00  44 41 54 41 25 01 00 00  |     ...DATA%...|
000187e0  63 6f 6c 6f 75 72 74 72  61 6e 5f 69 6e 76 61 6c  |colourtran_inval|
000187f0  69 64 61 74 65 5f 63 61  63 68 65 0a 53 79 6e 74  |idate_cache.Synt|
00018800  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
00018810  63 6f 6c 6f 75 72 74 72  61 6e 5f 69 6e 76 61 6c  |colourtran_inval|
00018820  69 64 61 74 65 5f 63 61  63 68 65 20 28 76 6f 69  |idate_cache (voi|
00018830  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 63 6f 6c  |d);.Header:.<col|
00018840  6f 75 72 74 72 61 6e 2e  68 3d 3e 63 6f 6c 6f 75  |ourtran.h=>colou|
00018850  72 74 72 61 6e 5f 68 3e  0a 0a 52 65 74 75 72 6e  |rtran_h>..Return|
00018860  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
00018870  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
00018880  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
00018890  6e 63 74 69 6f 6e 20 73  68 6f 75 6c 64 20 62 65  |nction should be|
000188a0  20 63 61 6c 6c 65 64 20  77 68 65 6e 20 74 68 65  | called when the|
000188b0  20 70 61 6c 65 74 74 65  20 68 61 73 20 63 68 61  | palette has cha|
000188c0  6e 67 65 64 20 73 69 6e  63 65 20 61 20 63 61 6c  |nged since a cal|
000188d0  6c 20 77 61 73 20 6c 61  73 74 20 6d 61 64 65 20  |l was last made |
000188e0  74 6f 20 61 20 66 75 6e  63 74 69 6f 6e 20 69 6e  |to a function in|
000188f0  20 74 68 69 73 20 6d 6f  64 75 6c 65 2e 00 00 00  | this module....|
00018900  44 41 54 41 66 01 00 00  63 6f 6c 6f 75 72 74 72  |DATAf...colourtr|
00018910  61 6e 5f 72 65 74 75 72  6e 5f 63 6f 6c 6f 75 72  |an_return_colour|
00018920  6e 75 6d 62 65 72 0a 53  79 6e 74 61 78 3a 09 3c  |number.Syntax:.<|
00018930  6f 73 5f 65 72 72 6f 72  3e 20 2a 63 6f 6c 6f 75  |os_error> *colou|
00018940  72 74 72 61 6e 5f 72 65  74 75 72 6e 5f 63 6f 6c  |rtran_return_col|
00018950  6f 75 72 6e 75 6d 62 65  72 20 28 3c 77 69 6d 70  |ournumber (<wimp|
00018960  5f 70 61 6c 65 74 74 65  77 6f 72 64 3e 20 65 6e  |_paletteword> en|
00018970  74 72 79 2c 20 69 6e 74  20 2a 63 6f 6c 29 3b 0a  |try, int *col);.|
00018980  48 65 61 64 65 72 3a 09  3c 63 6f 6c 6f 75 72 74  |Header:.<colourt|
00018990  72 61 6e 2e 68 3d 3e 63  6f 6c 6f 75 72 74 72 61  |ran.h=>colourtra|
000189a0  6e 5f 68 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |n_h>..Returns:.P|
000189b0  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
000189c0  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
000189d0  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
000189e0  6f 6e 20 69 6e 66 6f 72  6d 73 20 79 6f 75 20 6f  |on informs you o|
000189f0  66 20 74 68 65 20 63 6c  6f 73 65 73 74 20 63 6f  |f the closest co|
00018a00  6c 6f 75 72 20 6e 75 6d  62 65 72 20 69 6e 20 74  |lour number in t|
00018a10  68 65 20 63 75 72 72 65  6e 74 20 6d 6f 64 65 20  |he current mode |
00018a20  74 6f 20 61 20 67 69 76  65 6e 20 70 61 6c 65 74  |to a given palet|
00018a30  74 65 20 65 6e 74 72 79  2e 20 54 68 65 20 63 6f  |te entry. The co|
00018a40  6c 6f 75 72 20 6e 75 6d  62 65 72 20 69 73 20 72  |lour number is r|
00018a50  65 74 75 72 6e 65 64 20  69 6e 20 7b 2f 7d 2a 63  |eturned in {/}*c|
00018a60  6f 6c 7b 2f 7d 2e 00 00  44 41 54 41 93 01 00 00  |ol{/}...DATA....|
00018a70  63 6f 6c 6f 75 72 74 72  61 6e 5f 72 65 74 75 72  |colourtran_retur|
00018a80  6e 5f 47 43 4f 4c 66 6f  72 6d 6f 64 65 0a 53 79  |n_GCOLformode.Sy|
00018a90  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00018aa0  20 2a 63 6f 6c 6f 75 72  74 72 61 6e 5f 72 65 74  | *colourtran_ret|
00018ab0  75 72 6e 5f 47 43 4f 4c  66 6f 72 6d 6f 64 65 20  |urn_GCOLformode |
00018ac0  28 3c 77 69 6d 70 5f 70  61 6c 65 74 74 65 77 6f  |(<wimp_palettewo|
00018ad0  72 64 3e 20 65 6e 74 72  79 2c 20 69 6e 74 20 64  |rd> entry, int d|
00018ae0  65 73 74 6d 6f 64 65 2c  20 77 69 6d 70 5f 70 61  |estmode, wimp_pa|
00018af0  6c 65 74 74 65 77 6f 72  64 20 2a 64 65 73 74 70  |letteword *destp|
00018b00  61 6c 2c 20 69 6e 74 20  2a 67 63 6f 6c 29 3b 0a  |al, int *gcol);.|
00018b10  48 65 61 64 65 72 3a 09  3c 63 6f 6c 6f 75 72 74  |Header:.<colourt|
00018b20  72 61 6e 2e 68 3d 3e 63  6f 6c 6f 75 72 74 72 61  |ran.h=>colourtra|
00018b30  6e 5f 68 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |n_h>..Returns:.P|
00018b40  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
00018b50  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
00018b60  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
00018b70  6f 6e 20 69 6e 66 6f 72  6d 73 20 79 6f 75 20 6f  |on informs you o|
00018b80  66 20 74 68 65 20 63 6c  6f 73 65 73 74 20 47 43  |f the closest GC|
00018b90  4f 4c 20 74 6f 20 61 20  67 69 76 65 6e 20 70 61  |OL to a given pa|
00018ba0  6c 65 74 74 65 20 65 6e  74 72 79 2c 20 64 65 73  |lette entry, des|
00018bb0  74 69 6e 61 74 69 6f 6e  20 6d 6f 64 65 20 61 6e  |tination mode an|
00018bc0  64 20 64 65 73 74 69 6e  61 74 69 6f 6e 20 70 61  |d destination pa|
00018bd0  6c 65 74 74 65 2e 20 54  68 65 20 47 43 4f 4c 20  |lette. The GCOL |
00018be0  69 73 20 72 65 74 75 72  6e 65 64 20 69 6e 20 7b  |is returned in {|
00018bf0  2f 7d 2a 67 63 6f 6c 7b  2f 7d 2e 00 44 41 54 41  |/}*gcol{/}..DATA|
00018c00  4f 01 00 00 63 6f 6c 6f  75 72 74 72 61 6e 5f 72  |O...colourtran_r|
00018c10  65 74 75 72 6e 5f 4f 70  70 47 43 4f 4c 0a 53 79  |eturn_OppGCOL.Sy|
00018c20  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00018c30  20 2a 63 6f 6c 6f 75 72  74 72 61 6e 5f 72 65 74  | *colourtran_ret|
00018c40  75 72 6e 5f 4f 70 70 47  43 4f 4c 20 28 3c 77 69  |urn_OppGCOL (<wi|
00018c50  6d 70 5f 70 61 6c 65 74  74 65 77 6f 72 64 3e 20  |mp_paletteword> |
00018c60  65 6e 74 72 79 2c 20 69  6e 74 20 2a 67 63 6f 6c  |entry, int *gcol|
00018c70  29 3b 0a 48 65 61 64 65  72 3a 09 3c 63 6f 6c 6f  |);.Header:.<colo|
00018c80  75 72 74 72 61 6e 2e 68  3d 3e 63 6f 6c 6f 75 72  |urtran.h=>colour|
00018c90  74 72 61 6e 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |tran_h>..Returns|
00018ca0  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
00018cb0  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
00018cc0  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
00018cd0  63 74 69 6f 6e 20 69 6e  66 6f 72 6d 73 20 79 6f  |ction informs yo|
00018ce0  75 20 6f 66 20 74 68 65  20 66 75 72 74 68 65 73  |u of the furthes|
00018cf0  74 20 47 43 4f 4c 20 69  6e 20 74 68 65 20 63 75  |t GCOL in the cu|
00018d00  72 72 65 6e 74 20 6d 6f  64 65 20 66 72 6f 6d 20  |rrent mode from |
00018d10  61 20 67 69 76 65 6e 20  70 61 6c 65 74 74 65 20  |a given palette |
00018d20  65 6e 74 72 79 2e 20 54  68 65 20 47 43 4f 4c 20  |entry. The GCOL |
00018d30  69 73 20 72 65 74 75 72  6e 65 64 20 69 6e 20 7b  |is returned in {|
00018d40  2f 7d 2a 67 63 6f 6c 7b  2f 7d 2e 00 44 41 54 41  |/}*gcol{/}..DATA|
00018d50  0d 02 00 00 63 6f 6c 6f  75 72 74 72 61 6e 5f 72  |....colourtran_r|
00018d60  65 74 75 72 6e 66 6f 6e  74 63 6f 6c 6f 75 72 73  |eturnfontcolours|
00018d70  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00018d80  6f 72 3e 20 2a 63 6f 6c  6f 75 72 74 72 61 6e 5f  |or> *colourtran_|
00018d90  72 65 74 75 72 6e 66 6f  6e 74 63 6f 6c 6f 75 72  |returnfontcolour|
00018da0  73 20 28 3c 66 6f 6e 74  3e 20 2a 68 61 6e 64 6c  |s (<font> *handl|
00018db0  65 2c 20 3c 77 69 6d 70  5f 70 61 6c 65 74 74 65  |e, <wimp_palette|
00018dc0  77 6f 72 64 3e 20 2a 62  61 63 6b 67 6e 64 2c 20  |word> *backgnd, |
00018dd0  77 69 6d 70 5f 70 61 6c  65 74 74 65 77 6f 72 64  |wimp_paletteword|
00018de0  20 2a 66 6f 72 65 67 6e  64 2c 20 69 6e 74 20 2a  | *foregnd, int *|
00018df0  6d 61 78 5f 6f 66 66 73  65 74 29 3b 0a 48 65 61  |max_offset);.Hea|
00018e00  64 65 72 3a 09 3c 63 6f  6c 6f 75 72 74 72 61 6e  |der:.<colourtran|
00018e10  2e 68 3d 3e 63 6f 6c 6f  75 72 74 72 61 6e 5f 68  |.h=>colourtran_h|
00018e20  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
00018e30  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
00018e40  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
00018e50  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00018e60  69 6e 66 6f 72 6d 73 20  79 6f 75 20 6f 66 20 66  |informs you of f|
00018e70  6f 6e 74 20 63 6f 6c 6f  75 72 73 20 74 6f 20 6d  |ont colours to m|
00018e80  61 74 63 68 20 74 68 65  20 67 69 76 65 6e 20 63  |atch the given c|
00018e90  6f 6c 6f 75 72 73 2e 20  54 68 65 20 63 6c 6f 73  |olours. The clos|
00018ea0  65 73 20 61 70 70 72 6f  78 69 6d 61 74 69 6f 6e  |es approximation|
00018eb0  73 20 74 6f 20 66 6f 72  65 2f 62 61 63 6b 67 72  |s to fore/backgr|
00018ec0  6f 75 6e 64 20 63 6f 6c  6f 75 72 73 20 77 69 6c  |ound colours wil|
00018ed0  6c 20 62 65 20 73 65 74  2c 20 61 6e 64 20 61 73  |l be set, and as|
00018ee0  20 6d 61 6e 79 20 69 6e  74 65 72 6d 65 64 69 61  | many intermedia|
00018ef0  74 65 20 63 6f 6c 6f 75  72 73 20 61 73 20 70 6f  |te colours as po|
00018f00  73 73 69 62 6c 65 20 28  75 70 20 74 6f 20 61 20  |ssible (up to a |
00018f10  6d 61 78 69 6d 75 6d 20  6f 66 20 7b 2f 7d 2a 6d  |maximum of {/}*m|
00018f20  61 78 5f 6f 66 66 73 65  74 7b 2f 7d 29 2e 20 56  |ax_offset{/}). V|
00018f30  61 6c 75 65 73 20 61 72  65 20 72 65 74 75 6e 65  |alues are retune|
00018f40  64 20 74 68 72 6f 75 67  68 20 74 68 65 20 70 61  |d through the pa|
00018f50  72 61 6d 65 74 65 72 73  2e 00 00 00 44 41 54 41  |rameters....DATA|
00018f60  5d 01 00 00 63 6f 6c 6f  75 72 74 72 61 6e 5f 72  |]...colourtran_r|
00018f70  65 74 75 72 6e 47 43 4f  4c 0a 53 79 6e 74 61 78  |eturnGCOL.Syntax|
00018f80  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 63 6f  |:.<os_error> *co|
00018f90  6c 6f 75 72 74 72 61 6e  5f 72 65 74 75 72 6e 47  |lourtran_returnG|
00018fa0  43 4f 4c 20 28 3c 77 69  6d 70 5f 70 61 6c 65 74  |COL (<wimp_palet|
00018fb0  74 65 77 6f 72 64 3e 20  65 6e 74 72 79 2c 20 69  |teword> entry, i|
00018fc0  6e 74 20 2a 67 63 6f 6c  29 3b 0a 48 65 61 64 65  |nt *gcol);.Heade|
00018fd0  72 3a 09 3c 63 6f 6c 6f  75 72 74 72 61 6e 2e 68  |r:.<colourtran.h|
00018fe0  3d 3e 63 6f 6c 6f 75 72  74 72 61 6e 5f 68 3e 0a  |=>colourtran_h>.|
00018ff0  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
00019000  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
00019010  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
00019020  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 69 6e  |This function in|
00019030  66 6f 72 6d 73 20 79 6f  75 20 6f 66 20 74 68 65  |forms you of the|
00019040  20 63 6c 6f 73 65 73 74  20 47 43 4f 4c 20 69 6e  | closest GCOL in|
00019050  20 74 68 65 20 63 75 72  72 65 6e 74 20 6d 6f 64  | the current mod|
00019060  65 20 74 6f 20 61 20 67  69 76 65 6e 20 70 61 6c  |e to a given pal|
00019070  65 74 74 65 20 65 6e 74  72 79 2e 20 54 68 65 20  |ette entry. The |
00019080  47 43 4f 4c 20 76 61 6c  75 65 20 69 73 20 72 65  |GCOL value is re|
00019090  74 75 72 6e 65 64 20 69  6e 20 74 68 65 20 76 61  |turned in the va|
000190a0  72 69 61 62 6c 65 20 70  6f 69 6e 74 65 64 20 74  |riable pointed t|
000190b0  6f 20 2f 67 63 6f 6c 2f  2e 00 00 00 44 41 54 41  |o /gcol/....DATA|
000190c0  82 01 00 00 63 6f 6c 6f  75 72 74 72 61 6e 5f 73  |....colourtran_s|
000190d0  65 6c 65 63 74 5f 47 43  4f 4c 74 61 62 6c 65 0a  |elect_GCOLtable.|
000190e0  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
000190f0  72 3e 20 2a 63 6f 6c 6f  75 72 74 72 61 6e 5f 73  |r> *colourtran_s|
00019100  65 6c 65 63 74 5f 47 43  4f 4c 74 61 62 6c 65 20  |elect_GCOLtable |
00019110  28 69 6e 74 20 73 72 63  6d 6f 64 65 2c 20 3c 77  |(int srcmode, <w|
00019120  69 6d 70 5f 70 61 6c 65  74 74 65 77 6f 72 64 3e  |imp_paletteword>|
00019130  20 2a 73 72 63 70 61 6c  2c 20 69 6e 74 20 64 65  | *srcpal, int de|
00019140  73 74 6d 6f 64 65 2c 20  77 69 6d 70 5f 70 61 6c  |stmode, wimp_pal|
00019150  65 74 74 65 77 6f 72 64  20 2a 64 65 73 74 70 61  |etteword *destpa|
00019160  6c 2c 20 76 6f 69 64 20  2a 62 75 66 66 65 72 29  |l, void *buffer)|
00019170  3b 0a 48 65 61 64 65 72  3a 09 3c 63 6f 6c 6f 75  |;.Header:.<colou|
00019180  72 74 72 61 6e 2e 68 3d  3e 63 6f 6c 6f 75 72 74  |rtran.h=>colourt|
00019190  72 61 6e 5f 68 3e 0a 0a  52 65 74 75 72 6e 73 3a  |ran_h>..Returns:|
000191a0  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
000191b0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
000191c0  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
000191d0  74 69 6f 6e 20 73 65 74  73 20 75 70 20 61 20 6c  |tion sets up a l|
000191e0  69 73 74 20 6f 66 20 47  43 4f 4c 73 20 69 6e 20  |ist of GCOLs in |
000191f0  61 20 62 75 66 66 65 72  2c 20 67 69 76 65 6e 20  |a buffer, given |
00019200  61 20 73 6f 75 72 63 65  20 6d 6f 64 65 20 61 6e  |a source mode an|
00019210  64 20 70 61 6c 65 74 74  65 2c 20 61 6e 64 20 61  |d palette, and a|
00019220  20 64 65 73 74 69 6e 61  74 69 6f 6e 20 6d 6f 64  | destination mod|
00019230  65 20 61 6e 64 20 70 61  6c 65 74 74 65 2e 00 00  |e and palette...|
00019240  44 41 54 41 7e 01 00 00  63 6f 6c 6f 75 72 74 72  |DATA~...colourtr|
00019250  61 6e 5f 73 65 6c 65 63  74 5f 74 61 62 6c 65 0a  |an_select_table.|
00019260  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
00019270  72 3e 20 2a 63 6f 6c 6f  75 72 74 72 61 6e 5f 73  |r> *colourtran_s|
00019280  65 6c 65 63 74 5f 74 61  62 6c 65 20 28 69 6e 74  |elect_table (int|
00019290  20 73 72 63 6d 6f 64 65  2c 20 3c 77 69 6d 70 5f  | srcmode, <wimp_|
000192a0  70 61 6c 65 74 74 65 77  6f 72 64 3e 20 2a 73 72  |paletteword> *sr|
000192b0  63 70 61 6c 2c 20 69 6e  74 20 64 65 73 74 6d 6f  |cpal, int destmo|
000192c0  64 65 2c 20 77 69 6d 70  5f 70 61 6c 65 74 74 65  |de, wimp_palette|
000192d0  77 6f 72 64 20 2a 64 65  73 74 70 61 6c 2c 20 76  |word *destpal, v|
000192e0  6f 69 64 20 2a 62 75 66  66 65 72 29 3b 0a 48 65  |oid *buffer);.He|
000192f0  61 64 65 72 3a 09 3c 63  6f 6c 6f 75 72 74 72 61  |ader:.<colourtra|
00019300  6e 2e 68 3d 3e 63 6f 6c  6f 75 72 74 72 61 6e 5f  |n.h=>colourtran_|
00019310  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 20 50 6f 69  |h>..Returns: Poi|
00019320  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
00019330  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
00019340  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00019350  20 73 65 74 73 20 75 70  20 61 20 74 72 61 6e 73  | sets up a trans|
00019360  6c 61 74 69 6f 6e 20 74  61 62 6c 65 20 69 6e 20  |lation table in |
00019370  61 20 62 75 66 66 65 72  2c 20 67 69 76 65 6e 20  |a buffer, given |
00019380  61 20 73 6f 75 72 63 65  20 6d 6f 64 65 20 61 6e  |a source mode an|
00019390  64 20 70 61 6c 65 74 74  65 2c 20 61 6e 64 20 61  |d palette, and a|
000193a0  20 64 65 73 74 69 6e 61  74 69 6f 6e 20 6d 6f 64  | destination mod|
000193b0  65 20 61 6e 64 20 70 61  6c 65 74 74 65 2e 00 00  |e and palette...|
000193c0  44 41 54 41 4c 02 00 00  63 6f 6c 6f 75 72 74 72  |DATAL...colourtr|
000193d0  61 6e 5f 73 65 74 66 6f  6e 74 63 6f 6c 6f 75 72  |an_setfontcolour|
000193e0  73 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |s.Syntax:.<os_er|
000193f0  72 6f 72 3e 20 2a 63 6f  6c 6f 75 72 74 72 61 6e  |ror> *colourtran|
00019400  5f 73 65 74 66 6f 6e 74  63 6f 6c 6f 75 72 73 20  |_setfontcolours |
00019410  28 3c 66 6f 6e 74 3e 20  2a 68 61 6e 64 6c 65 2c  |(<font> *handle,|
00019420  20 3c 77 69 6d 70 5f 70  61 6c 65 74 74 65 77 6f  | <wimp_palettewo|
00019430  72 64 3e 20 2a 62 61 63  6b 67 6e 64 2c 20 77 69  |rd> *backgnd, wi|
00019440  6d 70 5f 70 61 6c 65 74  74 65 77 6f 72 64 20 2a  |mp_paletteword *|
00019450  66 6f 72 65 67 6e 64 2c  20 69 6e 74 20 2a 6d 61  |foregnd, int *ma|
00019460  78 5f 6f 66 66 73 65 74  29 3b 0a 48 65 61 64 65  |x_offset);.Heade|
00019470  72 3a 09 3c 63 6f 6c 6f  75 72 74 72 61 6e 2e 68  |r:.<colourtran.h|
00019480  3d 3e 63 6f 6c 6f 75 72  74 72 61 6e 5f 68 3e 0a  |=>colourtran_h>.|
00019490  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
000194a0  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
000194b0  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
000194c0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 69 6e  |This function in|
000194d0  66 6f 72 6d 73 20 79 6f  75 20 6f 66 20 66 6f 6e  |forms you of fon|
000194e0  74 20 63 6f 6c 6f 75 72  73 20 74 6f 20 6d 61 74  |t colours to mat|
000194f0  63 68 20 74 68 65 20 67  69 76 65 6e 20 63 6f 6c  |ch the given col|
00019500  6f 75 72 73 2e 20 54 68  65 20 63 6c 6f 73 65 73  |ours. The closes|
00019510  20 61 70 70 72 6f 78 69  6d 61 74 69 6f 6e 73 20  | approximations |
00019520  74 6f 20 66 6f 72 65 2f  62 61 63 6b 67 72 6f 75  |to fore/backgrou|
00019530  6e 64 20 63 6f 6c 6f 75  72 73 20 77 69 6c 6c 20  |nd colours will |
00019540  62 65 20 73 65 74 2c 20  61 6e 64 20 61 73 20 6d  |be set, and as m|
00019550  61 6e 79 20 69 6e 74 65  72 6d 65 64 69 61 74 65  |any intermediate|
00019560  20 63 6f 6c 6f 75 72 73  20 61 73 20 70 6f 73 73  | colours as poss|
00019570  69 62 6c 65 20 28 75 70  20 74 6f 20 61 20 6d 61  |ible (up to a ma|
00019580  78 69 6d 75 6d 20 6f 66  20 7b 2f 7d 2a 6d 61 78  |ximum of {/}*max|
00019590  5f 6f 66 66 73 65 74 7b  2f 7d 29 2e 20 56 61 6c  |_offset{/}). Val|
000195a0  75 65 73 20 61 72 65 20  72 65 74 75 6e 65 64 20  |ues are retuned |
000195b0  74 68 72 6f 75 67 68 20  74 68 65 20 70 61 72 61  |through the para|
000195c0  6d 65 74 65 72 73 2e 20  7b 2a 7d 46 6f 6e 74 5f  |meters. {*}Font_|
000195d0  73 65 74 66 6f 6e 74 63  6f 6c 6f 75 72 73 28 29  |setfontcolours()|
000195e0  7b 2a 7d 20 69 73 20 74  68 65 6e 20 63 61 6c 6c  |{*} is then call|
000195f0  65 64 20 77 69 74 68 20  74 68 65 73 65 20 61 73  |ed with these as|
00019600  20 70 61 72 61 6d 65 74  65 72 73 2e 44 41 54 41  | parameters.DATA|
00019610  ec 01 00 00 63 6f 6c 6f  75 72 74 72 61 6e 5f 73  |....colourtran_s|
00019620  65 74 47 43 4f 4c 0a 53  79 6e 74 61 78 3a 09 3c  |etGCOL.Syntax:.<|
00019630  6f 73 5f 65 72 72 6f 72  3e 20 2a 63 6f 6c 6f 75  |os_error> *colou|
00019640  72 74 72 61 6e 5f 73 65  74 47 43 4f 4c 20 28 3c  |rtran_setGCOL (<|
00019650  77 69 6d 70 5f 70 61 6c  65 74 74 65 77 6f 72 64  |wimp_paletteword|
00019660  3e 20 65 6e 74 72 79 2c  20 69 6e 74 20 62 61 63  |> entry, int bac|
00019670  6b 2c 20 69 6e 74 20 67  63 6f 6c 5f 69 6e 2c 20  |k, int gcol_in, |
00019680  69 6e 74 20 2a 67 63 6f  6c 5f 6f 75 74 29 3b 0a  |int *gcol_out);.|
00019690  48 65 61 64 65 72 3a 09  3c 63 6f 6c 6f 75 72 74  |Header:.<colourt|
000196a0  72 61 6e 2e 68 3d 3e 63  6f 6c 6f 75 72 74 72 61  |ran.h=>colourtra|
000196b0  6e 5f 68 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |n_h>..Returns:.P|
000196c0  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
000196d0  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
000196e0  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
000196f0  6f 6e 20 69 6e 66 6f 72  6d 73 20 79 6f 75 20 6f  |on informs you o|
00019700  66 20 74 68 65 20 63 6c  6f 73 65 73 74 20 47 43  |f the closest GC|
00019710  4f 4c 20 69 6e 20 74 68  65 20 63 75 72 72 65 6e  |OL in the curren|
00019720  74 20 6d 6f 64 65 20 74  6f 20 61 20 67 69 76 65  |t mode to a give|
00019730  6e 20 70 61 6c 65 74 74  65 20 65 6e 74 72 79 2c  |n palette entry,|
00019740  20 61 6e 64 20 61 6c 73  6f 20 73 65 74 73 20 74  | and also sets t|
00019750  68 65 20 47 43 4f 4c 2e  20 2f 62 61 63 6b 2f 20  |he GCOL. /back/ |
00019760  73 68 6f 75 6c 64 20 62  65 20 30 20 74 6f 20 73  |should be 0 to s|
00019770  65 74 20 61 20 66 6f 72  65 67 72 6f 75 6e 64 20  |et a foreground |
00019780  63 6f 6c 6f 75 72 2c 20  6f 72 20 31 32 38 20 74  |colour, or 128 t|
00019790  6f 20 73 65 74 20 61 20  62 61 63 6b 67 72 6f 75  |o set a backgrou|
000197a0  6e 64 20 63 6f 6c 6f 75  72 2e 20 7b 2f 7d 67 63  |nd colour. {/}gc|
000197b0  6f 6c 5f 69 6e 7b 2f 7d  20 69 73 20 74 68 65 20  |ol_in{/} is the |
000197c0  47 43 4f 4c 20 61 63 74  69 6f 6e 20 61 6e 64 20  |GCOL action and |
000197d0  74 68 65 20 47 43 4f 4c  20 69 73 20 72 65 74 75  |the GCOL is retu|
000197e0  72 6e 65 64 20 69 6e 20  7b 2f 7d 2a 67 63 6f 6c  |rned in {/}*gcol|
000197f0  5f 6f 75 74 7b 2f 7d 2e  44 41 54 41 12 02 00 00  |_out{/}.DATA....|
00019800  63 6f 6c 6f 75 72 74 72  61 6e 5f 73 65 74 4f 70  |colourtran_setOp|
00019810  70 47 43 4f 4c 0a 53 79  6e 74 61 78 3a 20 20 3c  |pGCOL.Syntax:  <|
00019820  6f 73 5f 65 72 72 6f 72  3e 20 2a 63 6f 6c 6f 75  |os_error> *colou|
00019830  72 74 72 61 6e 5f 73 65  74 4f 70 70 47 43 4f 4c  |rtran_setOppGCOL|
00019840  0a 20 20 20 20 20 20 20  20 20 28 3c 77 69 6d 70  |.         (<wimp|
00019850  5f 70 61 6c 65 74 74 65  77 6f 72 64 3e 20 65 6e  |_paletteword> en|
00019860  74 72 79 2c 20 69 6e 74  20 62 61 63 6b 2c 0a 20  |try, int back,. |
00019870  20 20 20 20 20 20 20 20  69 6e 74 20 67 63 6f 6c  |        int gcol|
00019880  5f 69 6e 2c 20 69 6e 74  20 2a 67 63 6f 6c 5f 6f  |_in, int *gcol_o|
00019890  75 74 29 3b 0a 48 65 61  64 65 72 3a 20 20 3c 63  |ut);.Header:  <c|
000198a0  6f 6c 6f 75 72 74 72 61  6e 2e 68 3d 3e 63 6f 6c  |olourtran.h=>col|
000198b0  6f 75 72 74 72 61 6e 5f  68 3e 0a 0a 52 65 74 75  |ourtran_h>..Retu|
000198c0  72 6e 73 3a 20 50 6f 69  6e 74 65 72 20 74 6f 20  |rns: Pointer to |
000198d0  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
000198e0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
000198f0  66 75 6e 63 74 69 6f 6e  20 69 6e 66 6f 72 6d 73  |function informs|
00019900  20 79 6f 75 20 6f 66 20  74 68 65 20 66 75 72 74  | you of the furt|
00019910  68 65 73 74 20 47 43 4f  4c 20 69 6e 20 74 68 65  |hest GCOL in the|
00019920  0a 63 75 72 72 65 6e 74  20 6d 6f 64 65 20 66 72  |.current mode fr|
00019930  6f 6d 20 61 20 67 69 76  65 6e 20 70 61 6c 65 74  |om a given palet|
00019940  74 65 20 65 6e 74 72 79  2e 20 54 68 65 20 47 43  |te entry. The GC|
00019950  4f 4c 20 69 73 0a 72 65  74 75 72 6e 65 64 20 69  |OL is.returned i|
00019960  6e 20 27 2a 67 63 6f 6c  5f 6f 75 74 27 2e 20 49  |n '*gcol_out'. I|
00019970  74 20 61 6c 73 6f 20 73  65 74 73 20 74 68 65 20  |t also sets the |
00019980  47 43 4f 4c 20 77 69 74  68 20 74 68 65 0a 61 63  |GCOL with the.ac|
00019990  74 69 6f 6e 20 27 67 63  6f 6c 5f 69 6e 27 2e 20  |tion 'gcol_in'. |
000199a0  49 66 20 27 62 61 63 6b  27 20 69 73 20 31 32 38  |If 'back' is 128|
000199b0  20 74 68 65 6e 20 74 68  65 20 62 61 63 6b 67 72  | then the backgr|
000199c0  6f 75 6e 64 0a 63 6f 6c  6f 75 72 20 69 73 20 73  |ound.colour is s|
000199d0  65 74 2c 20 65 6c 73 65  20 69 66 20 27 62 61 63  |et, else if 'bac|
000199e0  6b 27 20 69 73 20 30 20  74 68 65 6e 20 74 68 65  |k' is 0 then the|
000199f0  20 66 6f 72 65 67 72 6f  75 6e 64 0a 63 6f 6c 6f  | foreground.colo|
00019a00  75 72 20 69 73 20 73 65  74 2e 00 00 44 41 54 41  |ur is set...DATA|
00019a10  a1 01 00 00 63 6f 6c 6f  75 72 74 72 61 6e 5f 72  |....colourtran_r|
00019a20  65 74 75 72 6e 5f 63 6f  6c 6f 75 72 66 6f 72 6d  |eturn_colourform|
00019a30  6f 64 65 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |ode.Syntax:.<os_|
00019a40  65 72 72 6f 72 3e 20 2a  63 6f 6c 6f 75 72 74 72  |error> *colourtr|
00019a50  61 6e 5f 72 65 74 75 72  6e 5f 63 6f 6c 6f 75 72  |an_return_colour|
00019a60  66 6f 72 6d 6f 64 65 20  28 3c 77 69 6d 70 5f 70  |formode (<wimp_p|
00019a70  61 6c 65 74 74 65 77 6f  72 64 3e 20 65 6e 74 72  |aletteword> entr|
00019a80  79 2c 20 69 6e 74 20 64  65 73 74 6d 6f 64 65 2c  |y, int destmode,|
00019a90  20 77 69 6d 70 5f 70 61  6c 65 74 74 65 77 6f 72  | wimp_palettewor|
00019aa0  64 20 2a 64 65 73 74 70  61 6c 2c 20 69 6e 74 20  |d *destpal, int |
00019ab0  2a 63 6f 6c 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |*col);.Header:.<|
00019ac0  63 6f 6c 6f 75 72 74 72  61 6e 2e 68 3d 3e 63 6f  |colourtran.h=>co|
00019ad0  6c 6f 75 72 74 72 61 6e  5f 68 3e 0a 0a 52 65 74  |lourtran_h>..Ret|
00019ae0  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
00019af0  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
00019b00  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
00019b10  20 66 75 6e 63 74 69 6f  6e 20 69 6e 66 6f 72 6d  | function inform|
00019b20  73 20 79 6f 75 20 6f 66  20 74 68 65 20 63 6c 6f  |s you of the clo|
00019b30  73 65 73 74 20 63 6f 6c  6f 75 72 20 74 6f 20 61  |sest colour to a|
00019b40  20 67 69 76 65 6e 20 70  61 6c 65 74 74 65 20 65  | given palette e|
00019b50  6e 74 72 79 2c 20 64 65  73 74 69 6e 61 74 69 6f  |ntry, destinatio|
00019b60  6e 20 6d 6f 64 65 20 61  6e 64 20 64 65 73 74 69  |n mode and desti|
00019b70  6e 61 74 69 6f 6e 20 70  61 6c 65 74 74 65 2e 20  |nation palette. |
00019b80  54 68 65 20 63 6f 6c 6f  75 72 20 6e 75 6d 62 65  |The colour numbe|
00019b90  72 20 69 73 20 72 65 74  75 72 6e 65 64 20 69 6e  |r is returned in|
00019ba0  20 7b 2f 7d 2a 67 63 6f  6c 7b 2f 7d 2e 00 00 00  | {/}*gcol{/}....|
00019bb0  44 41 54 41 75 01 00 00  63 6f 6c 6f 75 72 74 72  |DATAu...colourtr|
00019bc0  61 6e 5f 63 6f 6e 76 65  72 74 5f 64 65 76 69 63  |an_convert_devic|
00019bd0  65 5f 63 6f 6c 6f 75 72  0a 53 79 6e 74 61 78 3a  |e_colour.Syntax:|
00019be0  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 63 6f 6c  |.<os_error> *col|
00019bf0  6f 75 72 74 72 61 6e 5f  63 6f 6e 76 65 72 74 5f  |ourtran_convert_|
00019c00  64 65 76 69 63 65 5f 63  6f 6c 6f 75 72 20 28 3c  |device_colour (<|
00019c10  77 69 6d 70 5f 70 61 6c  65 74 74 65 77 6f 72 64  |wimp_paletteword|
00019c20  3e 20 64 76 63 65 2c 20  77 69 6d 70 5f 70 61 6c  |> dvce, wimp_pal|
00019c30  65 74 74 65 77 6f 72 64  20 2a 72 67 62 29 3b 0a  |etteword *rgb);.|
00019c40  48 65 61 64 65 72 3a 09  3c 63 6f 6c 6f 75 72 74  |Header:.<colourt|
00019c50  72 61 6e 2e 68 3d 3e 63  6f 6c 6f 75 72 74 72 61  |ran.h=>colourtra|
00019c60  6e 5f 68 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |n_h>..Returns:.P|
00019c70  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
00019c80  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
00019c90  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
00019ca0  6f 6e 20 63 6f 6e 76 65  72 74 73 20 74 68 65 20  |on converts the |
00019cb0  64 65 76 69 63 65 20 63  6f 6c 6f 75 72 20 69 6e  |device colour in|
00019cc0  20 2f 64 76 63 65 2f 20  74 6f 20 61 20 73 74 61  | /dvce/ to a sta|
00019cd0  6e 64 61 72 64 20 52 47  42 20 63 6f 6c 6f 75 72  |ndard RGB colour|
00019ce0  2c 20 72 65 74 75 72 6e  65 64 20 69 6e 20 7b 2f  |, returned in {/|
00019cf0  7d 2a 72 67 62 7b 2f 7d  2e 20 49 74 20 75 73 65  |}*rgb{/}. It use|
00019d00  73 20 74 68 65 20 63 75  72 72 65 6e 74 20 63 61  |s the current ca|
00019d10  6c 69 62 72 61 74 69 6f  6e 20 74 6f 20 63 6f 6e  |libration to con|
00019d20  76 65 72 74 2e 00 00 00  44 41 54 41 aa 01 00 00  |vert....DATA....|
00019d30  63 6f 6c 6f 75 72 74 72  61 6e 5f 72 65 74 75 72  |colourtran_retur|
00019d40  6e 5f 4f 70 70 63 6f 6c  6f 75 72 66 6f 72 6d 6f  |n_Oppcolourformo|
00019d50  64 65 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |de.Syntax:.<os_e|
00019d60  72 72 6f 72 3e 20 2a 63  6f 6c 6f 75 72 74 72 61  |rror> *colourtra|
00019d70  6e 5f 72 65 74 75 72 6e  5f 4f 70 70 63 6f 6c 6f  |n_return_Oppcolo|
00019d80  75 72 66 6f 72 6d 6f 64  65 20 28 3c 77 69 6d 70  |urformode (<wimp|
00019d90  5f 70 61 6c 65 74 74 65  77 6f 72 64 3e 20 65 6e  |_paletteword> en|
00019da0  74 72 79 2c 20 69 6e 74  20 64 65 73 74 6d 6f 64  |try, int destmod|
00019db0  65 2c 20 77 69 6d 70 5f  70 61 6c 65 74 74 65 77  |e, wimp_palettew|
00019dc0  6f 72 64 20 2a 64 65 73  74 70 61 6c 2c 20 69 6e  |ord *destpal, in|
00019dd0  74 20 2a 63 6f 6c 29 3b  0a 48 65 61 64 65 72 3a  |t *col);.Header:|
00019de0  09 3c 63 6f 6c 6f 75 72  74 72 61 6e 2e 68 3d 3e  |.<colourtran.h=>|
00019df0  63 6f 6c 6f 75 72 74 72  61 6e 5f 68 3e 0a 0a 52  |colourtran_h>..R|
00019e00  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
00019e10  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
00019e20  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
00019e30  69 73 20 66 75 6e 63 74  69 6f 6e 20 69 6e 66 6f  |is function info|
00019e40  72 6d 73 20 79 6f 75 20  6f 66 20 74 68 65 20 66  |rms you of the f|
00019e50  75 72 74 68 65 73 74 20  63 6f 6c 6f 75 72 20 66  |urthest colour f|
00019e60  72 6f 6d 20 61 20 67 69  76 65 6e 20 70 61 6c 65  |rom a given pale|
00019e70  74 74 65 20 65 6e 74 72  79 2c 20 64 65 73 74 69  |tte entry, desti|
00019e80  6e 61 74 69 6f 6e 20 6d  6f 64 65 20 61 6e 64 20  |nation mode and |
00019e90  64 65 73 74 69 6e 61 74  69 6f 6e 20 70 61 6c 65  |destination pale|
00019ea0  74 74 65 2e 20 54 68 65  20 63 6f 6c 6f 75 72 20  |tte. The colour |
00019eb0  6e 75 6d 62 65 72 20 69  73 20 72 65 74 75 72 6e  |number is return|
00019ec0  65 64 20 69 6e 20 7b 2f  7d 2a 67 63 6f 6c 7b 2f  |ed in {/}*gcol{/|
00019ed0  7d 2e 00 00 44 41 54 41  61 01 00 00 63 6f 6c 6f  |}...DATAa...colo|
00019ee0  75 72 74 72 61 6e 5f 72  65 74 75 72 6e 5f 4f 70  |urtran_return_Op|
00019ef0  70 63 6f 6c 6f 75 72 6e  75 6d 62 65 72 0a 53 79  |pcolournumber.Sy|
00019f00  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00019f10  20 2a 63 6f 6c 6f 75 72  74 72 61 6e 5f 72 65 74  | *colourtran_ret|
00019f20  75 72 6e 5f 4f 70 70 63  6f 6c 6f 75 72 6e 75 6d  |urn_Oppcolournum|
00019f30  62 65 72 20 28 3c 77 69  6d 70 5f 70 61 6c 65 74  |ber (<wimp_palet|
00019f40  74 65 77 6f 72 64 3e 20  65 6e 74 72 79 2c 20 69  |teword> entry, i|
00019f50  6e 74 20 2a 63 6f 6c 29  3b 0a 48 65 61 64 65 72  |nt *col);.Header|
00019f60  3a 09 3c 63 6f 6c 6f 75  72 74 72 61 6e 2e 68 3d  |:.<colourtran.h=|
00019f70  3e 63 6f 6c 6f 75 72 74  72 61 6e 5f 68 3e 0a 0a  |>colourtran_h>..|
00019f80  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00019f90  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00019fa0  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00019fb0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 69 6e 66  |his function inf|
00019fc0  6f 72 6d 73 20 79 6f 75  20 6f 66 20 74 68 65 20  |orms you of the |
00019fd0  66 75 72 74 68 65 73 74  20 63 6f 6c 6f 75 72 20  |furthest colour |
00019fe0  69 6e 20 74 68 65 20 63  75 72 72 65 6e 74 20 6d  |in the current m|
00019ff0  6f 64 65 20 66 72 6f 6d  20 61 20 67 69 76 65 6e  |ode from a given|
0001a000  20 70 61 6c 65 74 74 65  20 65 6e 74 72 79 2e 20  | palette entry. |
0001a010  54 68 65 20 63 6f 6c 6f  75 72 20 69 73 20 72 65  |The colour is re|
0001a020  74 75 72 6e 65 64 20 69  6e 20 7b 2f 7d 2a 63 6f  |turned in {/}*co|
0001a030  6c 7b 2f 7d 2e 00 00 00  44 41 54 41 9c 01 00 00  |l{/}....DATA....|
0001a040  63 6f 6c 6f 75 72 74 72  61 6e 5f 72 65 74 75 72  |colourtran_retur|
0001a050  6e 5f 4f 70 70 47 43 4f  4c 66 6f 72 6d 6f 64 65  |n_OppGCOLformode|
0001a060  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
0001a070  6f 72 3e 20 2a 63 6f 6c  6f 75 72 74 72 61 6e 5f  |or> *colourtran_|
0001a080  72 65 74 75 72 6e 5f 4f  70 70 47 43 4f 4c 66 6f  |return_OppGCOLfo|
0001a090  72 6d 6f 64 65 20 28 3c  77 69 6d 70 5f 70 61 6c  |rmode (<wimp_pal|
0001a0a0  65 74 74 65 77 6f 72 64  3e 20 65 6e 74 72 79 2c  |etteword> entry,|
0001a0b0  20 69 6e 74 20 64 65 73  74 6d 6f 64 65 2c 20 77  | int destmode, w|
0001a0c0  69 6d 70 5f 70 61 6c 65  74 74 65 77 6f 72 64 20  |imp_paletteword |
0001a0d0  2a 64 65 73 74 70 61 6c  2c 20 69 6e 74 20 2a 67  |*destpal, int *g|
0001a0e0  63 6f 6c 29 3b 0a 48 65  61 64 65 72 3a 09 3c 63  |col);.Header:.<c|
0001a0f0  6f 6c 6f 75 72 74 72 61  6e 2e 68 3d 3e 63 6f 6c  |olourtran.h=>col|
0001a100  6f 75 72 74 72 61 6e 5f  68 3e 0a 0a 52 65 74 75  |ourtran_h>..Retu|
0001a110  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
0001a120  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
0001a130  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
0001a140  66 75 6e 63 74 69 6f 6e  20 69 6e 66 6f 72 6d 73  |function informs|
0001a150  20 79 6f 75 20 6f 66 20  74 68 65 20 66 75 72 74  | you of the furt|
0001a160  68 65 73 74 20 47 43 4f  4c 20 66 72 6f 6d 20 61  |hest GCOL from a|
0001a170  20 67 69 76 65 6e 20 70  61 6c 65 74 74 65 20 65  | given palette e|
0001a180  6e 74 72 79 2c 20 64 65  73 74 69 6e 61 74 69 6f  |ntry, destinatio|
0001a190  6e 20 6d 6f 64 65 20 61  6e 64 20 64 65 73 74 69  |n mode and desti|
0001a1a0  6e 61 74 69 6f 6e 20 70  61 6c 65 74 74 65 2e 20  |nation palette. |
0001a1b0  54 68 65 20 47 43 4f 4c  20 69 73 20 72 65 74 75  |The GCOL is retu|
0001a1c0  72 6e 65 64 20 69 6e 20  7b 2f 7d 2a 67 63 6f 6c  |rned in {/}*gcol|
0001a1d0  7b 2f 7d 2e 44 49 52 24  fc 00 00 00 fc 00 00 00  |{/}.DIR$........|
0001a1e0  d0 a2 01 00 46 ff ff ff  66 4c f0 24 61 01 00 00  |....F...fL.$a...|
0001a1f0  13 00 00 00 00 00 00 00  53 65 74 47 43 4f 4c 00  |........SetGCOL.|
0001a200  34 a4 01 00 46 ff ff ff  b9 8f f0 24 36 01 00 00  |4...F......$6...|
0001a210  13 00 00 00 00 00 00 00  49 6e 76 61 6c 69 64 61  |........Invalida|
0001a220  74 65 43 61 63 68 65 00  6c a5 01 00 46 ff ff ff  |teCache.l...F...|
0001a230  18 98 f0 24 9c 01 00 00  13 00 00 00 00 00 00 00  |...$............|
0001a240  53 65 6c 65 63 74 54 61  62 6c 65 00 08 a7 01 00  |SelectTable.....|
0001a250  46 ff ff ff 01 a6 f0 24  77 02 00 00 13 00 00 00  |F......$w.......|
0001a260  00 00 00 00 52 65 74 75  72 6e 46 6f 6e 74 43 6f  |....ReturnFontCo|
0001a270  6c 6f 75 72 73 00 00 00  80 a9 01 00 46 ff ff ff  |lours.......F...|
0001a280  65 bb f0 24 de 01 00 00  13 00 00 00 00 00 00 00  |e..$............|
0001a290  52 65 74 75 72 6e 43 6f  6c 6f 75 72 4e 75 6d 62  |ReturnColourNumb|
0001a2a0  65 72 46 6f 72 4d 6f 64  65 00 00 00 60 ab 01 00  |erForMode...`...|
0001a2b0  46 ff ff ff 46 c6 f0 24  55 01 00 00 13 00 00 00  |F...F..$U.......|
0001a2c0  00 00 00 00 66 6f 6e 74  62 6c 6f 63 6b 00 00 00  |....fontblock...|
0001a2d0  44 41 54 41 61 01 00 00  43 6f 6c 6f 75 72 54 72  |DATAa...ColourTr|
0001a2e0  61 6e 73 5f 53 65 74 47  43 4f 4c 0a 53 79 6e 74  |ans_SetGCOL.Synt|
0001a2f0  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
0001a300  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 53 65 74 47  |ColourTrans_SetG|
0001a310  43 4f 4c 20 28 69 6e 74  20 70 61 6c 65 74 74 65  |COL (int palette|
0001a320  2c 20 69 6e 74 20 3c 66  6c 61 67 73 3d 3e 63 74  |, int <flags=>ct|
0001a330  5f 66 6c 61 67 73 5f 3e  2c 20 69 6e 74 20 3c 61  |_flags_>, int <a|
0001a340  63 74 69 6f 6e 3d 3e 56  44 55 3a 31 38 61 3e 29  |ction=>VDU:18a>)|
0001a350  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
0001a360  69 62 3a 43 6f 6c 6f 75  72 54 72 61 6e 2e 68 3d  |ib:ColourTran.h=|
0001a370  3e 43 6f 6c 6f 75 72 54  72 61 6e 3e 0a 0a 52 65  |>ColourTran>..Re|
0001a380  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
0001a390  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
0001a3a0  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
0001a3b0  73 20 66 75 6e 63 74 69  6f 6e 20 77 6f 72 6b 73  |s function works|
0001a3c0  20 6f 75 74 20 74 68 65  20 63 6c 6f 73 65 73 74  | out the closest|
0001a3d0  20 47 43 4f 4c 20 69 6e  20 74 68 65 20 63 75 72  | GCOL in the cur|
0001a3e0  72 65 6e 74 20 6d 6f 64  65 20 74 6f 20 61 20 67  |rent mode to a g|
0001a3f0  69 76 65 6e 20 3c 70 61  6c 65 74 74 65 20 65 6e  |iven <palette en|
0001a400  74 72 79 3d 3e 63 74 5f  70 61 6c 65 6e 74 5f 3e  |try=>ct_palent_>|
0001a410  20 28 69 6e 20 7b 2f 7d  70 61 6c 65 74 74 65 7b  | (in {/}palette{|
0001a420  2f 7d 29 2c 20 61 6e 64  20 73 65 74 73 20 69 74  |/}), and sets it|
0001a430  2e 00 00 00 44 41 54 41  36 01 00 00 43 6f 6c 6f  |....DATA6...Colo|
0001a440  75 72 54 72 61 6e 73 5f  49 6e 76 61 6c 69 64 61  |urTrans_Invalida|
0001a450  74 65 43 61 63 68 65 0a  53 79 6e 74 61 78 3a 09  |teCache.Syntax:.|
0001a460  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 43 6f 6c 6f  |<os_error> *Colo|
0001a470  75 72 54 72 61 6e 73 5f  49 6e 76 61 6c 69 64 61  |urTrans_Invalida|
0001a480  74 65 43 61 63 68 65 20  28 76 6f 69 64 29 3b 0a  |teCache (void);.|
0001a490  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
0001a4a0  3a 43 6f 6c 6f 75 72 54  72 61 6e 2e 68 3d 3e 43  |:ColourTran.h=>C|
0001a4b0  6f 6c 6f 75 72 54 72 61  6e 3e 0a 0a 52 65 74 75  |olourTran>..Retu|
0001a4c0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
0001a4d0  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
0001a4e0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
0001a4f0  66 75 6e 63 74 69 6f 6e  20 69 6e 66 6f 72 6d 73  |function informs|
0001a500  20 74 68 65 20 43 6f 6c  6f 75 72 54 72 61 6e 73  | the ColourTrans|
0001a510  20 6d 6f 64 75 6c 65 20  74 68 61 74 20 79 6f 75  | module that you|
0001a520  20 68 61 76 65 20 63 68  61 6e 67 65 64 20 74 68  | have changed th|
0001a530  65 20 70 61 6c 65 74 74  65 2e 20 59 6f 75 20 64  |e palette. You d|
0001a540  6f 20 6e 6f 74 20 6e 65  65 64 20 74 6f 20 64 6f  |o not need to do|
0001a550  20 74 68 69 73 20 61 66  74 65 72 20 61 20 6d 6f  | this after a mo|
0001a560  64 65 20 63 68 61 6e 67  65 2e 00 00 44 41 54 41  |de change...DATA|
0001a570  9c 01 00 00 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |....ColourTrans_|
0001a580  53 65 6c 65 63 74 54 61  62 6c 65 0a 53 79 6e 74  |SelectTable.Synt|
0001a590  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
0001a5a0  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 53 65 6c 65  |ColourTrans_Sele|
0001a5b0  63 74 54 61 62 6c 65 20  28 69 6e 74 20 73 72 63  |ctTable (int src|
0001a5c0  5f 6d 6f 64 65 2c 20 69  6e 74 20 2a 73 72 63 5f  |_mode, int *src_|
0001a5d0  70 61 6c 2c 20 69 6e 74  20 64 73 74 5f 6d 6f 64  |pal, int dst_mod|
0001a5e0  65 2c 20 69 6e 74 20 2a  64 73 74 5f 70 61 6c 2c  |e, int *dst_pal,|
0001a5f0  20 63 68 61 72 20 2a 74  61 62 6c 65 29 3b 0a 48  | char *table);.H|
0001a600  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
0001a610  43 6f 6c 6f 75 72 54 72  61 6e 2e 68 3d 3e 43 6f  |ColourTran.h=>Co|
0001a620  6c 6f 75 72 54 72 61 6e  3e 0a 0a 52 65 74 75 72  |lourTran>..Retur|
0001a630  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
0001a640  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
0001a650  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
0001a660  75 6e 63 74 69 6f 6e 20  73 65 74 73 20 75 70 20  |unction sets up |
0001a670  61 20 74 72 61 6e 73 6c  61 74 69 6f 6e 20 74 61  |a translation ta|
0001a680  62 6c 65 20 69 6e 20 61  20 62 75 66 66 65 72 2c  |ble in a buffer,|
0001a690  20 66 6f 72 20 73 6f 75  72 63 65 20 61 6e 64 20  | for source and |
0001a6a0  64 65 73 74 69 6e 61 74  69 6f 6e 20 6d 6f 64 65  |destination mode|
0001a6b0  20 61 6e 64 20 70 61 6c  65 74 74 65 20 61 73 20  | and palette as |
0001a6c0  67 69 76 65 6e 2e 0a 0a  4d 6f 64 65 20 61 6e 64  |given...Mode and|
0001a6d0  20 70 61 6c 65 74 74 65  20 70 61 72 61 6d 65 74  | palette paramet|
0001a6e0  65 72 73 20 6d 61 79 20  62 65 20 2d 31 20 74 6f  |ers may be -1 to|
0001a6f0  20 75 73 65 20 74 68 65  20 63 75 72 72 65 6e 74  | use the current|
0001a700  20 76 61 6c 75 65 73 2e  44 41 54 41 77 02 00 00  | values.DATAw...|
0001a710  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
0001a720  72 6e 46 6f 6e 74 43 6f  6c 6f 75 72 73 0a 53 79  |rnFontColours.Sy|
0001a730  6e 74 61 78 3a 09 6f 73  5f 65 72 72 6f 72 20 2a  |ntax:.os_error *|
0001a740  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
0001a750  72 6e 46 6f 6e 74 43 6f  6c 6f 75 72 73 20 28 3c  |rnFontColours (<|
0001a760  63 6f 6c 6f 75 72 74 72  61 6e 73 5f 66 6f 6e 74  |colourtrans_font|
0001a770  62 6c 6f 63 6b 3e 20 2a  66 6f 6e 74 63 6f 6c 73  |block> *fontcols|
0001a780  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
0001a790  4c 69 62 3a 43 6f 6c 6f  75 72 54 72 61 6e 2e 68  |Lib:ColourTran.h|
0001a7a0  3d 3e 43 6f 6c 6f 75 72  54 72 61 6e 3e 0a 0a 52  |=>ColourTran>..R|
0001a7b0  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
0001a7c0  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
0001a7d0  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
0001a7e0  69 73 20 66 75 6e 63 74  69 6f 6e 20 66 69 6e 64  |is function find|
0001a7f0  73 20 74 68 65 20 6d 61  78 69 6d 75 6d 20 72 61  |s the maximum ra|
0001a800  6e 67 65 20 6f 66 20 63  6f 6c 6f 75 72 73 20 77  |nge of colours w|
0001a810  68 69 63 68 20 63 61 6e  20 62 65 20 75 73 65 64  |hich can be used|
0001a820  20 66 6f 72 20 61 6e 74  69 2d 61 6c 69 61 73 69  | for anti-aliasi|
0001a830  6e 67 20 61 20 66 6f 6e  74 2e 20 49 66 20 61 6e  |ng a font. If an|
0001a840  74 69 2d 61 6c 69 61 73  69 6e 67 20 69 73 20 64  |ti-aliasing is d|
0001a850  65 73 69 72 65 64 2c 20  7b 2f 7d 66 6f 6e 74 63  |esired, {/}fontc|
0001a860  6f 6c 73 2d 3e 6d 61 78  7b 2f 7d 20 73 68 6f 75  |ols->max{/} shou|
0001a870  6c 64 20 62 65 20 73 65  74 20 74 6f 20 31 34 20  |ld be set to 14 |
0001a880  6f 6e 20 65 6e 74 72 79  2c 20 6f 74 68 65 72 77  |on entry, otherw|
0001a890  69 73 65 20 69 74 20 73  68 6f 75 6c 64 20 62 65  |ise it should be|
0001a8a0  20 73 65 74 20 74 6f 20  30 2e 20 7b 2f 7d 66 6f  | set to 0. {/}fo|
0001a8b0  6e 74 63 6f 6c 73 2d 3e  66 6f 6e 74 7b 2f 7d 20  |ntcols->font{/} |
0001a8c0  73 68 6f 75 6c 64 20 62  65 20 73 65 74 20 74 6f  |should be set to|
0001a8d0  20 74 68 65 20 66 6f 6e  74 20 68 61 6e 64 6c 65  | the font handle|
0001a8e0  2c 20 6f 72 20 30 20 66  6f 72 20 74 68 65 20 63  |, or 0 for the c|
0001a8f0  75 72 72 65 6e 74 20 66  6f 6e 74 2c 20 61 6e 64  |urrent font, and|
0001a900  20 74 68 65 20 66 6f 72  65 67 72 6f 75 6e 64 20  | the foreground |
0001a910  61 6e 64 20 62 61 63 6b  67 72 6f 75 6e 64 20 3c  |and background <|
0001a920  70 61 6c 65 74 74 65 20  65 6e 74 72 69 65 73 3d  |palette entries=|
0001a930  3e 63 74 5f 70 61 6c 65  6e 74 5f 3e 20 73 68 6f  |>ct_palent_> sho|
0001a940  75 6c 64 20 62 65 20 70  6c 61 63 65 64 20 69 6e  |uld be placed in|
0001a950  20 7b 2f 7d 66 6f 6e 74  63 6f 6c 73 2d 3e 62 61  | {/}fontcols->ba|
0001a960  63 6b 7b 2f 7d 20 61 6e  64 20 7b 2f 7d 66 6f 6e  |ck{/} and {/}fon|
0001a970  74 63 6f 6c 73 2d 3e 66  6f 72 65 7b 2f 7d 2e 00  |tcols->fore{/}..|
0001a980  44 41 54 41 de 01 00 00  43 6f 6c 6f 75 72 54 72  |DATA....ColourTr|
0001a990  61 6e 73 5f 52 65 74 75  72 6e 43 6f 6c 6f 75 72  |ans_ReturnColour|
0001a9a0  4e 75 6d 62 65 72 46 6f  72 4d 6f 64 65 0a 53 79  |NumberForMode.Sy|
0001a9b0  6e 74 61 78 3a 09 69 6e  74 20 43 6f 6c 6f 75 72  |ntax:.int Colour|
0001a9c0  54 72 61 6e 73 5f 52 65  74 75 72 6e 43 6f 6c 6f  |Trans_ReturnColo|
0001a9d0  75 72 4e 75 6d 62 65 72  46 6f 72 4d 6f 64 65 20  |urNumberForMode |
0001a9e0  28 69 6e 74 20 70 61 6c  65 74 74 65 2c 20 69 6e  |(int palette, in|
0001a9f0  74 20 6d 6f 64 65 2c 20  69 6e 74 20 2a 70 61 6c  |t mode, int *pal|
0001aa00  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
0001aa10  4c 69 62 3a 43 6f 6c 6f  75 72 54 72 61 6e 2e 68  |Lib:ColourTran.h|
0001aa20  3d 3e 43 6f 6c 6f 75 72  54 72 61 6e 3e 0a 0a 52  |=>ColourTran>..R|
0001aa30  65 74 75 72 6e 73 3a 09  2d 31 20 66 6f 72 20 65  |eturns:.-1 for e|
0001aa40  72 72 6f 72 2c 20 6f 72  20 63 6f 6c 6f 75 72 20  |rror, or colour |
0001aa50  6e 75 6d 62 65 72 2e 0a  0a 54 68 69 73 20 66 75  |number...This fu|
0001aa60  6e 63 74 69 6f 6e 2c 20  67 69 76 65 6e 20 61 20  |nction, given a |
0001aa70  3c 70 61 6c 65 74 74 65  20 65 6e 74 72 79 3d 3e  |<palette entry=>|
0001aa80  63 74 5f 70 61 6c 65 6e  74 5f 3e 20 69 6e 20 2f  |ct_palent_> in /|
0001aa90  70 61 6c 65 74 74 65 2f  2c 20 61 20 64 65 73 74  |palette/, a dest|
0001aaa0  69 6e 61 74 69 6f 6e 20  6d 6f 64 65 20 69 6e 20  |ination mode in |
0001aab0  2f 6d 6f 64 65 2f 20 61  6e 64 20 61 20 70 61 6c  |/mode/ and a pal|
0001aac0  65 74 74 65 20 69 6e 20  2f 70 61 6c 2f 2c 20 72  |ette in /pal/, r|
0001aad0  65 74 75 72 6e 73 20 74  68 65 20 63 6c 6f 73 65  |eturns the close|
0001aae0  73 74 20 63 6f 6c 6f 75  72 20 6e 75 6d 62 65 72  |st colour number|
0001aaf0  2e 20 2f 6d 6f 64 65 2f  20 6d 61 79 20 62 65 20  |. /mode/ may be |
0001ab00  2d 31 20 66 6f 72 20 74  68 65 20 63 75 72 72 65  |-1 for the curre|
0001ab10  6e 74 20 6d 6f 64 65 2c  20 2f 70 61 6c 2f 20 6d  |nt mode, /pal/ m|
0001ab20  61 79 20 62 65 20 2d 31  20 66 6f 72 20 74 68 65  |ay be -1 for the|
0001ab30  20 63 75 72 72 65 6e 74  20 70 61 6c 65 74 74 65  | current palette|
0001ab40  20 6f 72 20 30 20 66 6f  72 20 74 68 65 20 64 65  | or 0 for the de|
0001ab50  66 61 75 6c 74 20 70 61  6c 65 74 74 65 2e 00 00  |fault palette...|
0001ab60  44 41 54 41 55 01 00 00  63 6f 6c 6f 75 72 74 72  |DATAU...colourtr|
0001ab70  61 6e 73 5f 66 6f 6e 74  62 6c 6f 63 6b 0a 54 68  |ans_fontblock.Th|
0001ab80  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
0001ab90  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 43  |ed in <DeskLib:C|
0001aba0  6f 6c 6f 75 72 54 72 61  6e 2e 68 3d 3e 43 6f 6c  |olourTran.h=>Col|
0001abb0  6f 75 72 54 72 61 6e 3e  20 74 6f 20 68 6f 6c 64  |ourTran> to hold|
0001abc0  20 74 68 65 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  | the information|
0001abd0  20 6e 65 65 64 65 64 20  66 6f 72 20 74 68 65 20  | needed for the |
0001abe0  3c 43 6f 6c 6f 75 72 54  72 61 6e 73 5f 52 65 74  |<ColourTrans_Ret|
0001abf0  75 72 6e 46 6f 6e 74 43  6f 6c 6f 75 72 73 3e 20  |urnFontColours> |
0001ac00  66 75 6e 63 74 69 6f 6e  2e 20 49 74 20 69 73 20  |function. It is |
0001ac10  64 65 66 69 6e 65 64 20  61 73 3a 0a 0a 7b 0a 20  |defined as:..{. |
0001ac20  20 20 20 69 6e 74 20 66  6f 6e 74 3b 09 2f 2a 20  |   int font;./* |
0001ac30  66 6f 6e 74 20 68 61 6e  64 6c 65 20 2a 2f 0a 20  |font handle */. |
0001ac40  20 20 20 69 6e 74 20 62  61 63 6b 3b 09 2f 2a 20  |   int back;./* |
0001ac50  62 61 63 6b 67 72 6f 75  6e 64 20 63 6f 6c 6f 75  |background colou|
0001ac60  72 20 2a 2f 0a 20 20 20  20 69 6e 74 20 66 6f 72  |r */.    int for|
0001ac70  65 3b 09 2f 2a 20 66 6f  72 65 67 72 6f 75 6e 64  |e;./* foreground|
0001ac80  20 63 6f 6c 6f 75 72 20  2a 2f 0a 20 20 20 20 69  | colour */.    i|
0001ac90  6e 74 20 6d 61 78 3b 09  2f 2a 20 6d 61 78 69 6d  |nt max;./* maxim|
0001aca0  75 6d 20 63 6f 6c 6f 75  72 20 6f 66 66 73 65 74  |um colour offset|
0001acb0  20 2a 2f 0a 7d 00 00 00  44 49 52 24 f8 02 00 00  | */.}...DIR$....|
0001acc0  f8 02 00 00 b0 af 01 00  46 fd ff ff 85 32 59 26  |........F....2Y&|
0001acd0  81 03 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
0001ace0  74 00 00 00 34 b3 01 00  46 fd ff ff 4b 73 e7 22  |t...4...F...Ks."|
0001acf0  ca 00 00 00 13 00 00 00  00 00 00 00 62 61 73 65  |............base|
0001ad00  5f 00 00 00 00 b4 01 00  46 fd ff ff 57 20 e7 22  |_.......F...W ."|
0001ad10  98 00 00 00 13 00 00 00  00 00 00 00 64 65 62 75  |............debu|
0001ad20  67 5f 00 00 98 b4 01 00  46 fd ff ff f8 19 e7 22  |g_......F......"|
0001ad30  39 01 00 00 13 00 00 00  00 00 00 00 64 65 66 69  |9...........defi|
0001ad40  6e 65 5f 00 d4 b5 01 00  46 fd ff ff bb 99 e7 22  |ne_.....F......"|
0001ad50  c4 00 00 00 13 00 00 00  00 00 00 00 64 65 73 6b  |............desk|
0001ad60  74 6f 70 5f 00 00 00 00  98 b6 01 00 46 fd ff ff  |top_........F...|
0001ad70  26 26 e7 22 eb 00 00 00  13 00 00 00 00 00 00 00  |&&."............|
0001ad80  65 72 72 6f 72 6c 69 6d  69 74 5f 00 84 b7 01 00  |errorlimit_.....|
0001ad90  46 fd ff ff ad 5d e7 22  c9 00 00 00 13 00 00 00  |F....]."........|
0001ada0  00 00 00 00 69 6d 61 67  65 5f 00 00 50 b8 01 00  |....image_..P...|
0001adb0  46 fd ff ff 48 49 e7 22  cd 00 00 00 13 00 00 00  |F...HI."........|
0001adc0  00 00 00 00 69 6e 63 6c  75 64 65 73 5f 00 00 00  |....includes_...|
0001add0  20 b9 01 00 46 fd ff ff  90 a5 e7 22 b0 00 00 00  | ...F......"....|
0001ade0  13 00 00 00 00 00 00 00  69 6e 66 6f 72 6d 61 74  |........informat|
0001adf0  69 6f 6e 61 6c 73 5f 00  d0 b9 01 00 46 fd ff ff  |ionals_.....F...|
0001ae00  d9 68 e7 22 bd 00 00 00  13 00 00 00 00 00 00 00  |.h."............|
0001ae10  6c 69 62 72 61 72 79 5f  00 00 00 00 90 ba 01 00  |library_........|
0001ae20  46 fd ff ff 3c 50 e7 22  c4 00 00 00 13 00 00 00  |F...<P."........|
0001ae30  00 00 00 00 6c 69 6e 6b  5f 00 00 00 54 bb 01 00  |....link_...T...|
0001ae40  46 fd ff ff 9c d6 e6 22  89 01 00 00 13 00 00 00  |F......"........|
0001ae50  00 00 00 00 6c 69 73 74  5f 00 00 00 e0 bc 01 00  |....list_.......|
0001ae60  46 fd ff ff 1d 7b e7 22  1a 01 00 00 13 00 00 00  |F....{."........|
0001ae70  00 00 00 00 6d 61 70 5f  00 00 00 00 fc bd 01 00  |....map_........|
0001ae80  46 fd ff ff 27 00 e7 22  98 00 00 00 13 00 00 00  |F...'.."........|
0001ae90  00 00 00 00 6f 62 6a 65  63 74 5f 00 94 be 01 00  |....object_.....|
0001aea0  46 fd ff ff d2 e4 e6 22  43 01 00 00 13 00 00 00  |F......"C.......|
0001aeb0  00 00 00 00 6f 70 74 69  6d 69 73 65 5f 00 00 00  |....optimise_...|
0001aec0  d8 bf 01 00 46 fd ff ff  4f b1 e7 22 40 01 00 00  |....F...O.."@...|
0001aed0  13 00 00 00 00 00 00 00  70 72 6f 66 69 6c 65 5f  |........profile_|
0001aee0  00 00 00 00 18 c1 01 00  46 fd ff ff 17 56 e7 22  |........F....V."|
0001aef0  7d 00 00 00 13 00 00 00  00 00 00 00 72 75 6e 5f  |}...........run_|
0001af00  00 00 00 00 98 c1 01 00  46 fd ff ff 92 35 e7 22  |........F....5."|
0001af10  fc 01 00 00 13 00 00 00  00 00 00 00 73 68 6f 77  |............show|
0001af20  5f 00 00 00 94 c3 01 00  46 fd ff ff 93 3f e7 22  |_.......F....?."|
0001af30  8b 00 00 00 13 00 00 00  00 00 00 00 73 69 6c 65  |............sile|
0001af40  6e 74 5f 00 20 c4 01 00  46 fd ff ff 36 f4 e6 22  |nt_. ...F...6.."|
0001af50  e6 01 00 00 13 00 00 00  00 00 00 00 73 74 61 6e  |............stan|
0001af60  64 61 72 64 5f 00 00 00  08 c6 01 00 46 fd ff ff  |dard_.......F...|
0001af70  3d 82 e7 22 b8 00 00 00  13 00 00 00 00 00 00 00  |=.."............|
0001af80  74 68 72 6f 77 62 61 63  6b 5f 00 00 c0 c6 01 00  |throwback_......|
0001af90  46 fd ff ff 2b a1 e7 22  dc 00 00 00 13 00 00 00  |F...+.."........|
0001afa0  00 00 00 00 77 61 72 6e  69 6e 67 73 5f 00 00 00  |....warnings_...|
0001afb0  44 41 54 41 81 03 00 00  43 6f 6d 70 69 6c 65 72  |DATA....Compiler|
0001afc0  20 44 69 72 65 63 74 69  76 65 73 0a 54 68 69 73  | Directives.This|
0001afd0  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 69 73 20  | information is |
0001afe0  66 6f 72 20 45 61 73 79  20 43 20 6f 6e 6c 79 3a  |for Easy C only:|
0001aff0  0a 0a 54 68 65 73 65 20  61 72 65 20 6f 6e 6c 79  |..These are only|
0001b000  20 75 73 65 64 20 77 68  65 6e 20 63 6f 6d 70 69  | used when compi|
0001b010  6c 69 6e 67 20 66 72 6f  6d 20 74 68 65 20 63 6f  |ling from the co|
0001b020  6d 6d 61 6e 64 20 6c 69  6e 65 20 75 73 69 6e 67  |mmand line using|
0001b030  20 74 68 65 20 27 63 63  27 20 63 6f 6d 6d 61 6e  | the 'cc' comman|
0001b040  64 2e 20 54 68 65 79 20  61 72 65 20 70 72 65 66  |d. They are pref|
0001b050  69 78 65 64 20 62 79 20  22 2d 22 2e 20 48 65 6c  |ixed by "-". Hel|
0001b060  70 20 63 61 6e 20 62 65  20 67 6f 74 20 62 79 20  |p can be got by |
0001b070  75 73 69 6e 67 20 3c 2a  48 65 6c 70 20 63 63 3e  |using <*Help cc>|
0001b080  2e 20 41 20 73 75 6d 6d  61 72 79 20 6f 66 20 74  |. A summary of t|
0001b090  68 65 20 64 69 72 65 63  74 69 76 65 73 20 75 73  |he directives us|
0001b0a0  65 64 20 69 73 20 73 68  6f 77 6e 20 62 65 6c 6f  |ed is shown belo|
0001b0b0  77 3a 0a 0a 23 69 6e 64  65 6e 74 20 37 20 0a 23  |w:..#indent 7 .#|
0001b0c0  54 61 62 6c 65 20 37 0a  3c 5c 2d 6c 69 73 74 3d  |Table 7.<\-list=|
0001b0d0  3e 63 6f 6d 70 64 69 72  5f 6c 69 73 74 5f 3e 0a  |>compdir_list_>.|
0001b0e0  3c 5c 2d 6f 70 74 69 6d  69 73 65 3d 3e 63 6f 6d  |<\-optimise=>com|
0001b0f0  70 64 69 72 5f 6f 70 74  69 6d 69 73 65 5f 3e 0a  |pdir_optimise_>.|
0001b100  3c 5c 2d 73 74 61 6e 64  61 72 64 3d 3e 63 6f 6d  |<\-standard=>com|
0001b110  70 64 69 72 5f 73 74 61  6e 64 61 72 64 5f 3e 0a  |pdir_standard_>.|
0001b120  3c 5c 2d 6f 62 6a 65 63  74 3d 3e 63 6f 6d 70 64  |<\-object=>compd|
0001b130  69 72 5f 6f 62 6a 65 63  74 5f 3e 0a 3c 5c 2d 64  |ir_object_>.<\-d|
0001b140  65 66 69 6e 65 3d 3e 63  6f 6d 70 64 69 72 5f 64  |efine=>compdir_d|
0001b150  65 66 69 6e 65 5f 3e 0a  3c 5c 2d 64 65 62 75 67  |efine_>.<\-debug|
0001b160  3d 3e 63 6f 6d 70 64 69  72 5f 64 65 62 75 67 5f  |=>compdir_debug_|
0001b170  3e 0a 3c 5c 2d 65 72 72  6f 72 6c 69 6d 69 74 3d  |>.<\-errorlimit=|
0001b180  3e 63 6f 6d 70 64 69 72  5f 65 72 72 6f 72 6c 69  |>compdir_errorli|
0001b190  6d 69 74 5f 3e 0a 3c 5c  2d 73 68 6f 77 3d 3e 63  |mit_>.<\-show=>c|
0001b1a0  6f 6d 70 64 69 72 5f 73  68 6f 77 5f 3e 0a 3c 5c  |ompdir_show_>.<\|
0001b1b0  2d 73 69 6c 65 6e 74 3d  3e 63 6f 6d 70 64 69 72  |-silent=>compdir|
0001b1c0  5f 73 69 6c 65 6e 74 5f  3e 0a 3c 5c 2d 69 6e 63  |_silent_>.<\-inc|
0001b1d0  6c 75 64 65 73 3d 3e 63  6f 6d 70 64 69 72 5f 69  |ludes=>compdir_i|
0001b1e0  6e 63 6c 75 64 65 73 5f  3e 0a 3c 5c 2d 6c 69 6e  |ncludes_>.<\-lin|
0001b1f0  6b 3d 3e 63 6f 6d 70 64  69 72 5f 6c 69 6e 6b 5f  |k=>compdir_link_|
0001b200  3e 0a 3c 5c 2d 72 75 6e  3d 3e 63 6f 6d 70 64 69  |>.<\-run=>compdi|
0001b210  72 5f 72 75 6e 5f 3e 0a  3c 5c 2d 69 6d 61 67 65  |r_run_>.<\-image|
0001b220  3d 3e 63 6f 6d 70 64 69  72 5f 69 6d 61 67 65 5f  |=>compdir_image_|
0001b230  3e 0a 3c 5c 2d 6c 69 62  72 61 72 79 3d 3e 63 6f  |>.<\-library=>co|
0001b240  6d 70 64 69 72 5f 6c 69  62 72 61 72 79 5f 3e 0a  |mpdir_library_>.|
0001b250  3c 5c 2d 62 61 73 65 3d  3e 63 6f 6d 70 64 69 72  |<\-base=>compdir|
0001b260  5f 62 61 73 65 5f 3e 0a  3c 5c 2d 6d 61 70 3d 3e  |_base_>.<\-map=>|
0001b270  63 6f 6d 70 64 69 72 5f  6d 61 70 5f 3e 0a 3c 5c  |compdir_map_>.<\|
0001b280  2d 74 68 72 6f 77 62 61  63 6b 3d 3e 63 6f 6d 70  |-throwback=>comp|
0001b290  64 69 72 5f 74 68 72 6f  77 62 61 63 6b 5f 3e 0a  |dir_throwback_>.|
0001b2a0  3c 5c 2d 64 65 73 6b 74  6f 70 3d 3e 63 6f 6d 70  |<\-desktop=>comp|
0001b2b0  64 69 72 5f 64 65 73 6b  74 6f 70 5f 3e 0a 3c 5c  |dir_desktop_>.<\|
0001b2c0  2d 77 61 72 6e 69 6e 67  73 3d 3e 63 6f 6d 70 64  |-warnings=>compd|
0001b2d0  69 72 5f 77 61 72 6e 69  6e 67 73 5f 3e 0a 3c 5c  |ir_warnings_>.<\|
0001b2e0  2d 69 6e 66 6f 72 6d 61  74 69 6f 6e 61 6c 73 3d  |-informationals=|
0001b2f0  3e 63 6f 6d 70 64 69 72  5f 69 6e 66 6f 72 6d 61  |>compdir_informa|
0001b300  74 69 6f 6e 61 6c 73 5f  3e 0a 3c 5c 2d 70 72 6f  |tionals_>.<\-pro|
0001b310  66 69 6c 65 3d 3e 63 6f  6d 70 64 69 72 5f 70 72  |file=>compdir_pr|
0001b320  6f 66 69 6c 65 5f 3e 0a  23 45 6e 64 54 61 62 6c  |ofile_>.#EndTabl|
0001b330  65 00 00 00 44 41 54 41  ca 00 00 00 2d 62 61 73  |e...DATA....-bas|
0001b340  65 0a 41 62 62 72 65 76  69 61 74 69 6f 6e 3a 09  |e.Abbreviation:.|
0001b350  2d 62 0a 53 79 6e 74 61  78 3a 09 2d 62 61 73 65  |-b.Syntax:.-base|
0001b360  3d 5c 3c 61 64 64 72 65  73 73 3e 0a 0a 54 68 69  |=\<address>..Thi|
0001b370  73 20 64 69 72 65 63 74  69 76 65 20 73 70 65 63  |s directive spec|
0001b380  69 66 69 65 73 20 74 68  65 20 62 61 73 65 20 61  |ifies the base a|
0001b390  64 64 72 65 73 73 20 6f  66 20 74 68 65 20 65 78  |ddress of the ex|
0001b3a0  65 63 75 74 61 62 6c 65  20 63 6f 64 65 2e 20 49  |ecutable code. I|
0001b3b0  74 20 6f 6e 6c 79 20 61  70 70 6c 69 65 73 20 69  |t only applies i|
0001b3c0  66 20 3c 5c 2d 6c 69 6e  6b 3d 3e 63 6f 6d 70 64  |f <\-link=>compd|
0001b3d0  69 72 5f 6c 69 6e 6b 5f  3e 20 69 73 20 73 70 65  |ir_link_> is spe|
0001b3e0  63 69 66 69 65 64 2e 0a  0a 65 67 20 7b 66 43 6f  |cified...eg {fCo|
0001b3f0  64 65 7d 2d 62 61 73 65  3d 26 41 30 30 30 00 00  |de}-base=&A000..|
0001b400  44 41 54 41 98 00 00 00  2d 64 65 62 75 67 0a 41  |DATA....-debug.A|
0001b410  62 62 72 65 76 69 61 74  69 6f 6e 3a 09 2d 64 65  |bbreviation:.-de|
0001b420  62 0a 44 65 66 61 75 6c  74 09 2d 6e 6f 64 65 62  |b.Default.-nodeb|
0001b430  75 67 0a 0a 54 68 69 73  20 71 75 61 6c 69 66 69  |ug..This qualifi|
0001b440  65 72 20 61 6c 6c 6f 77  73 20 79 6f 75 20 74 6f  |er allows you to|
0001b450  20 73 65 74 20 77 68 65  74 68 65 72 20 64 65 62  | set whether deb|
0001b460  75 67 67 69 6e 67 20 69  6e 66 6f 72 6d 61 74 69  |ugging informati|
0001b470  6f 6e 20 69 73 20 69 6e  63 6c 75 64 65 64 20 77  |on is included w|
0001b480  69 74 68 20 74 68 65 20  65 78 65 63 75 74 61 62  |ith the executab|
0001b490  6c 65 20 66 69 6c 65 2e  44 41 54 41 39 01 00 00  |le file.DATA9...|
0001b4a0  2d 64 65 66 69 6e 65 0a  41 62 62 72 65 76 69 61  |-define.Abbrevia|
0001b4b0  74 69 6f 6e 3a 09 2d 64  0a 53 79 6e 74 61 78 09  |tion:.-d.Syntax.|
0001b4c0  2d 64 65 66 69 6e 65 3d  5c 3c 64 65 66 69 6e 69  |-define=\<defini|
0001b4d0  74 69 6f 6e 73 3e 0a 0a  54 68 69 73 20 71 75 61  |tions>..This qua|
0001b4e0  6c 69 66 69 65 72 20 61  6c 6c 6f 77 73 20 79 6f  |lifier allows yo|
0001b4f0  75 20 74 6f 20 64 65 66  69 6e 65 20 6d 61 63 72  |u to define macr|
0001b500  6f 73 20 69 6e 20 74 68  65 20 73 61 6d 65 20 66  |os in the same f|
0001b510  6f 72 6d 20 61 73 20 3c  23 64 65 66 69 6e 65 3d  |orm as <#define=|
0001b520  3e 64 65 66 69 6e 65 3e  2e 20 54 68 65 20 64 65  |>define>. The de|
0001b530  66 69 6e 69 74 69 6f 6e  73 20 61 72 65 20 73 65  |finitions are se|
0001b540  70 61 72 61 74 65 64 20  62 79 20 63 6f 6d 6d 61  |parated by comma|
0001b550  73 2c 20 61 6e 64 20 69  66 20 74 68 65 79 20 63  |s, and if they c|
0001b560  6f 6e 74 61 69 6e 20 73  70 61 63 65 73 20 74 68  |ontain spaces th|
0001b570  65 79 20 6d 75 73 74 20  62 65 20 65 6e 63 6c 6f  |ey must be enclo|
0001b580  73 65 64 20 69 6e 20 71  75 6f 74 65 73 20 65 67  |sed in quotes eg|
0001b590  0a 0a 23 77 72 61 70 20  6f 66 66 0a 7b 66 43 6f  |..#wrap off.{fCo|
0001b5a0  64 65 3b 61 6c 69 67 6e  20 63 65 6e 74 72 65 7d  |de;align centre}|
0001b5b0  2d 64 65 66 69 6e 65 3d  22 53 54 41 52 54 20 30  |-define="START 0|
0001b5c0  22 2c 22 45 4e 44 20 31  30 30 22 2c 44 45 42 55  |","END 100",DEBU|
0001b5d0  47 00 00 00 44 41 54 41  c4 00 00 00 2d 64 65 73  |G...DATA....-des|
0001b5e0  6b 74 6f 70 0a 41 62 62  72 65 76 69 61 74 69 6f  |ktop.Abbreviatio|
0001b5f0  6e 3a 09 2d 64 65 73 0a  44 65 66 61 75 6c 74 3a  |n:.-des.Default:|
0001b600  09 2d 6e 6f 64 65 73 6b  74 6f 70 0a 0a 54 68 69  |.-nodesktop..Thi|
0001b610  73 20 64 69 72 65 63 74  69 76 65 20 63 61 75 73  |s directive caus|
0001b620  65 73 20 74 68 65 20 63  6f 6d 70 69 6c 65 72 20  |es the compiler |
0001b630  74 6f 20 69 67 6e 6f 72  65 20 74 68 65 20 75 73  |to ignore the us|
0001b640  75 61 6c 20 64 69 72 65  63 74 6f 72 79 20 6e 61  |ual directory na|
0001b650  6d 69 6e 67 20 63 6f 6e  76 65 6e 74 69 6f 6e 73  |ming conventions|
0001b660  2c 20 61 6e 64 20 61 63  63 65 70 74 20 66 75 6c  |, and accept ful|
0001b670  6c 20 70 61 74 68 6e 61  6d 65 73 20 66 6f 72 20  |l pathnames for |
0001b680  73 6f 75 72 63 65 20 61  6e 64 20 6f 62 6a 65 63  |source and objec|
0001b690  74 20 66 69 6c 65 73 2e  44 41 54 41 eb 00 00 00  |t files.DATA....|
0001b6a0  2d 65 72 72 6f 72 6c 69  6d 69 74 0a 41 62 62 72  |-errorlimit.Abbr|
0001b6b0  65 76 69 61 74 69 6f 6e  3a 09 2d 65 0a 53 79 6e  |eviation:.-e.Syn|
0001b6c0  74 61 78 09 2d 65 72 72  6f 72 6c 69 6d 69 74 3d  |tax.-errorlimit=|
0001b6d0  5c 3c 6c 69 6d 69 74 3e  0a 44 65 66 61 75 6c 74  |\<limit>.Default|
0001b6e0  3a 09 2d 6e 6f 64 65 62  75 67 0a 0a 54 68 69 73  |:.-nodebug..This|
0001b6f0  20 71 75 61 6c 69 66 69  65 72 20 61 6c 6c 6f 77  | qualifier allow|
0001b700  73 20 79 6f 75 20 74 6f  20 73 65 74 20 74 68 65  |s you to set the|
0001b710  20 6e 75 6d 62 65 72 20  6f 66 20 65 72 72 6f 72  | number of error|
0001b720  20 77 68 69 63 68 20 6d  61 79 20 62 65 20 70 72  | which may be pr|
0001b730  6f 64 75 63 65 64 20 62  65 66 6f 72 65 20 74 68  |oduced before th|
0001b740  65 20 63 6f 6d 70 69 6c  65 72 20 67 69 76 65 73  |e compiler gives|
0001b750  20 75 70 21 20 54 68 65  20 6c 69 6d 69 74 20 63  | up! The limit c|
0001b760  61 6e 20 62 65 20 73 77  69 74 63 68 65 64 20 75  |an be switched u|
0001b770  73 69 6e 67 20 2d 6e 6f  65 72 72 6f 72 6c 69 6d  |sing -noerrorlim|
0001b780  69 74 2e 00 44 41 54 41  c9 00 00 00 2d 69 6d 61  |it..DATA....-ima|
0001b790  67 65 0a 41 62 62 72 65  76 69 61 74 69 6f 6e 3a  |ge.Abbreviation:|
0001b7a0  09 2d 69 6d 0a 53 79 6e  74 61 78 3a 09 2d 69 6d  |.-im.Syntax:.-im|
0001b7b0  61 67 65 3d 5c 3c 66 69  6c 65 6e 61 6d 65 3e 0a  |age=\<filename>.|
0001b7c0  0a 54 68 69 73 20 64 69  72 65 63 74 69 76 65 20  |.This directive |
0001b7d0  73 70 65 63 69 66 69 65  73 20 74 68 65 20 6e 61  |specifies the na|
0001b7e0  6d 65 20 6f 66 20 74 68  65 20 66 69 6e 61 6c 20  |me of the final |
0001b7f0  65 78 65 63 75 74 61 62  6c 65 2e 20 49 74 20 6f  |executable. It o|
0001b800  6e 6c 79 20 61 70 70 6c  69 65 73 20 69 66 20 3c  |nly applies if <|
0001b810  5c 2d 6c 69 6e 6b 3d 3e  63 6f 6d 70 64 69 72 5f  |\-link=>compdir_|
0001b820  6c 69 6e 6b 5f 3e 20 6f  72 20 3c 5c 2d 72 75 6e  |link_> or <\-run|
0001b830  3d 3e 63 6f 6d 70 64 69  72 5f 72 75 6e 5f 3e 20  |=>compdir_run_> |
0001b840  69 73 20 73 70 65 63 69  66 69 65 64 2e 00 00 00  |is specified....|
0001b850  44 41 54 41 cd 00 00 00  2d 69 6e 63 6c 75 64 65  |DATA....-include|
0001b860  73 0a 41 62 62 72 65 76  69 61 74 69 6f 6e 3a 09  |s.Abbreviation:.|
0001b870  2d 69 6e 63 0a 53 79 6e  74 61 78 3a 09 2d 69 6e  |-inc.Syntax:.-in|
0001b880  63 6c 75 64 65 73 3d 22  5c 3c 70 61 74 68 6e 61  |cludes="\<pathna|
0001b890  6d 65 3e 22 0a 44 65 66  61 75 6c 74 3a 09 2d 69  |me>".Default:.-i|
0001b8a0  6e 63 6c 75 64 65 73 3d  22 22 0a 0a 54 68 69 73  |ncludes=""..This|
0001b8b0  20 71 75 61 6c 69 66 69  65 72 20 61 6c 6c 6f 77  | qualifier allow|
0001b8c0  73 20 79 6f 75 20 74 6f  20 73 70 65 63 69 66 79  |s you to specify|
0001b8d0  20 74 68 65 20 70 61 74  68 20 43 20 77 69 6c 6c  | the path C will|
0001b8e0  20 73 65 61 72 63 68 20  66 6f 72 20 6c 6f 63 61  | search for loca|
0001b8f0  6c 20 68 65 61 64 65 72  73 20 69 65 20 68 65 61  |l headers ie hea|
0001b900  64 65 72 73 20 65 6e 63  6c 6f 73 65 64 20 69 6e  |ders enclosed in|
0001b910  20 71 75 6f 74 65 20 6d  61 72 6b 73 2e 00 00 00  | quote marks....|
0001b920  44 41 54 41 b0 00 00 00  2d 69 6e 66 6f 72 6d 61  |DATA....-informa|
0001b930  74 69 6f 6e 61 6c 73 0a  41 62 62 72 65 76 69 61  |tionals.Abbrevia|
0001b940  74 69 6f 6e 3a 09 2d 69  0a 44 65 66 61 75 6c 74  |tion:.-i.Default|
0001b950  3a 09 2d 69 6e 66 6f 72  6d 61 74 69 6f 6e 61 6c  |:.-informational|
0001b960  73 0a 0a 54 68 69 73 20  64 69 72 65 63 74 69 76  |s..This directiv|
0001b970  65 20 63 61 75 73 65 73  20 74 68 65 20 63 6f 6d  |e causes the com|
0001b980  70 69 6c 65 72 20 74 6f  20 72 65 70 6f 72 74 20  |piler to report |
0001b990  76 65 72 79 20 6d 69 6e  6f 72 20 65 72 72 6f 72  |very minor error|
0001b9a0  73 2e 20 54 68 65 79 20  63 61 6e 20 62 65 20 64  |s. They can be d|
0001b9b0  69 73 61 62 6c 65 64 20  75 73 69 6e 67 20 2d 6e  |isabled using -n|
0001b9c0  6f 69 6e 66 6f 72 6d 61  74 69 6f 6e 61 6c 73 2e  |oinformationals.|
0001b9d0  44 41 54 41 bd 00 00 00  2d 6c 69 62 72 61 72 79  |DATA....-library|
0001b9e0  0a 41 62 62 72 65 76 69  61 74 69 6f 6e 3a 09 2d  |.Abbreviation:.-|
0001b9f0  6c 69 62 0a 0a 54 68 69  73 20 64 69 72 65 63 74  |lib..This direct|
0001ba00  69 76 65 20 73 70 65 63  69 66 69 65 73 20 74 68  |ive specifies th|
0001ba10  65 20 6c 69 62 72 61 72  69 65 73 20 74 6f 20 62  |e libraries to b|
0001ba20  65 20 6c 69 6e 6b 65 64  20 69 66 20 3c 5c 2d 6c  |e linked if <\-l|
0001ba30  69 6e 6b 3d 3e 63 6f 6d  70 64 69 72 5f 6c 69 6e  |ink=>compdir_lin|
0001ba40  6b 5f 3e 20 6f 72 20 3c  5c 2d 72 75 6e 3d 3e 63  |k_> or <\-run=>c|
0001ba50  6f 6d 70 64 69 72 5f 72  75 6e 5f 3e 20 69 73 20  |ompdir_run_> is |
0001ba60  73 70 65 63 69 66 69 65  64 2e 0a 0a 65 67 20 7b  |specified...eg {|
0001ba70  66 43 6f 64 65 7d 2d 6c  69 62 72 61 72 79 3d 53  |fCode}-library=S|
0001ba80  54 44 43 4c 69 62 2c 52  4f 53 4c 69 62 00 00 00  |TDCLib,ROSLib...|
0001ba90  44 41 54 41 c4 00 00 00  2d 6c 69 6e 6b 0a 41 62  |DATA....-link.Ab|
0001baa0  62 72 65 76 69 61 74 69  6f 6e 3a 09 2d 6c 69 6e  |breviation:.-lin|
0001bab0  0a 44 65 66 61 75 6c 74  3a 09 2d 6e 6f 6c 69 6e  |.Default:.-nolin|
0001bac0  6b 0a 0a 49 66 20 2d 6c  69 6e 6b 20 69 73 20 73  |k..If -link is s|
0001bad0  70 65 63 69 66 69 65 64  2c 20 45 61 73 79 20 43  |pecified, Easy C|
0001bae0  20 6c 69 6e 6b 73 20 74  68 65 20 70 72 6f 67 72  | links the progr|
0001baf0  61 6d 20 61 75 74 6f 6d  61 74 69 63 61 6c 6c 79  |am automatically|
0001bb00  20 61 66 74 65 72 20 63  6f 6d 70 69 6c 61 74 69  | after compilati|
0001bb10  6f 6e 2e 20 49 74 20 64  6f 65 73 20 6e 6f 74 20  |on. It does not |
0001bb20  67 65 6e 65 72 61 74 65  20 61 6e 20 6f 62 6a 65  |generate an obje|
0001bb30  63 74 20 66 69 6c 65 2c  20 73 61 76 69 6e 67 20  |ct file, saving |
0001bb40  74 69 6d 65 20 61 6e 64  20 64 69 73 63 20 73 70  |time and disc sp|
0001bb50  61 63 65 2e 44 41 54 41  89 01 00 00 2d 6c 69 73  |ace.DATA....-lis|
0001bb60  74 0a 41 62 62 72 65 76  69 61 74 69 6f 6e 3a 09  |t.Abbreviation:.|
0001bb70  2d 6c 0a 44 65 66 61 75  6c 74 20 73 65 74 74 69  |-l.Default setti|
0001bb80  6e 67 3a 09 2d 6e 6f 6c  69 73 74 0a 0a 54 68 69  |ng:.-nolist..Thi|
0001bb90  73 20 71 75 61 6c 69 66  69 65 72 20 63 61 75 73  |s qualifier caus|
0001bba0  65 73 20 45 61 73 79 20  43 20 74 6f 20 63 72 65  |es Easy C to cre|
0001bbb0  61 74 65 20 61 20 6c 69  73 74 69 6e 67 20 6f 66  |ate a listing of|
0001bbc0  20 63 6f 64 65 20 61 73  20 69 74 20 63 6f 6d 70  | code as it comp|
0001bbd0  69 6c 65 73 2e 20 43 6f  6e 74 72 6f 6c 20 6f 76  |iles. Control ov|
0001bbe0  65 72 20 74 68 65 20 6c  69 73 74 69 6e 67 20 69  |er the listing i|
0001bbf0  73 20 64 6f 6e 65 20 75  73 69 6e 67 20 3c 5c 2d  |s done using <\-|
0001bc00  73 68 6f 77 3d 3e 63 6f  6d 70 64 69 72 5f 73 68  |show=>compdir_sh|
0001bc10  6f 77 5f 3e 2e 20 42 79  20 64 65 66 61 75 6c 74  |ow_>. By default|
0001bc20  2c 20 45 61 73 79 20 43  20 70 75 74 73 20 6c 69  |, Easy C puts li|
0001bc30  73 74 69 6e 67 73 20 69  6e 20 74 68 65 20 27 6c  |stings in the 'l|
0001bc40  69 73 74 27 20 73 75 62  64 69 72 65 63 74 6f 72  |ist' subdirector|
0001bc50  79 20 6f 66 20 74 68 65  20 63 75 72 72 65 6e 74  |y of the current|
0001bc60  20 64 69 72 65 63 74 6f  72 79 2c 20 77 69 74 68  | directory, with|
0001bc70  20 74 68 65 20 73 6f 75  72 63 65 20 66 69 6c 65  | the source file|
0001bc80  27 73 20 6e 61 6d 65 2e  20 59 6f 75 20 63 61 6e  |'s name. You can|
0001bc90  20 75 73 65 20 2d 6c 69  73 74 3d 5c 3c 66 69 6c  | use -list=\<fil|
0001bca0  65 6e 61 6d 65 3e 20 74  6f 20 63 68 61 6e 67 65  |ename> to change|
0001bcb0  20 74 68 65 20 66 69 6c  65 20 75 73 65 64 2e 20  | the file used. |
0001bcc0  2d 6e 6f 6c 69 73 74 20  73 77 69 74 63 68 65 73  |-nolist switches|
0001bcd0  20 6c 69 73 74 69 6e 67  20 6f 66 66 2e 00 00 00  | listing off....|
0001bce0  44 41 54 41 1a 01 00 00  2d 6d 61 70 0a 41 62 62  |DATA....-map.Abb|
0001bcf0  72 65 76 69 61 74 69 6f  6e 3a 09 2d 6d 0a 53 79  |reviation:.-m.Sy|
0001bd00  6e 74 61 78 3a 09 2d 6d  61 70 3d 5c 3c 66 69 6c  |ntax:.-map=\<fil|
0001bd10  65 6e 61 6d 65 3e 0a 44  65 66 61 75 6c 74 3a 09  |ename>.Default:.|
0001bd20  2d 6e 6f 6d 61 70 0a 0a  54 68 69 73 20 64 69 72  |-nomap..This dir|
0001bd30  65 63 74 69 76 65 20 73  70 65 63 69 66 69 65 73  |ective specifies|
0001bd40  20 74 68 61 74 20 61 20  66 69 6c 65 20 63 6f 6e  | that a file con|
0001bd50  74 61 69 6e 69 6e 67 20  6d 61 70 20 6f 66 20 74  |taining map of t|
0001bd60  68 65 20 66 75 6e 63 74  69 6f 6e 73 20 6c 69 6e  |he functions lin|
0001bd70  6b 65 64 20 62 79 20 3c  5c 2d 6c 69 6e 6b 3d 3e  |ked by <\-link=>|
0001bd80  63 6f 6d 70 64 69 72 5f  6c 69 6e 6b 5f 3e 2e 20  |compdir_link_>. |
0001bd90  4d 61 70 20 66 69 6c 65  73 20 61 72 65 20 6e 6f  |Map files are no|
0001bda0  72 6d 61 6c 6c 79 20 73  61 76 65 64 20 69 6e 20  |rmally saved in |
0001bdb0  73 75 62 64 69 72 65 63  74 6f 72 79 20 22 6d 61  |subdirectory "ma|
0001bdc0  70 22 2c 20 62 75 74 20  79 6f 75 20 63 61 6e 20  |p", but you can |
0001bdd0  73 70 65 63 69 66 79 20  61 20 70 61 72 74 69 63  |specify a partic|
0001bde0  75 6c 61 72 20 66 69 6c  65 6e 61 6d 65 20 69 66  |ular filename if|
0001bdf0  20 79 6f 75 20 77 61 6e  74 2e 00 00 44 41 54 41  | you want...DATA|
0001be00  98 00 00 00 2d 6f 62 6a  65 63 74 0a 41 62 62 72  |....-object.Abbr|
0001be10  65 76 69 61 74 69 6f 6e  3a 09 2d 6f 62 0a 0a 54  |eviation:.-ob..T|
0001be20  68 69 73 20 71 75 61 6c  69 66 69 65 72 20 73 65  |his qualifier se|
0001be30  74 73 20 74 68 65 20 66  69 6c 65 6e 61 6d 65 20  |ts the filename |
0001be40  6f 66 20 74 68 65 20 6f  62 6a 65 63 74 20 63 6f  |of the object co|
0001be50  64 65 20 70 72 6f 64 75  63 65 64 2e 20 49 74 20  |de produced. It |
0001be60  69 73 20 75 73 65 64 20  61 73 3a 0a 0a 7b 66 43  |is used as:..{fC|
0001be70  6f 64 65 3b 61 6c 69 67  6e 20 63 65 6e 74 72 65  |ode;align centre|
0001be80  7d 2d 6f 62 6a 65 63 74  3d 5c 3c 66 69 6c 65 6e  |}-object=\<filen|
0001be90  61 6d 65 3e 44 41 54 41  43 01 00 00 2d 6f 70 74  |ame>DATAC...-opt|
0001bea0  69 6d 69 73 65 0a 41 62  62 72 65 76 69 61 74 69  |imise.Abbreviati|
0001beb0  6f 6e 3a 09 2d 6f 0a 44  65 66 61 75 6c 74 20 73  |on:.-o.Default s|
0001bec0  65 74 74 69 6e 67 3a 09  2d 6f 70 74 69 6d 69 73  |etting:.-optimis|
0001bed0  65 3d 61 6c 6c 0a 0a 54  68 69 73 20 71 75 61 6c  |e=all..This qual|
0001bee0  69 66 69 65 72 20 73 65  74 73 20 74 68 65 20 64  |ifier sets the d|
0001bef0  65 67 72 65 65 20 6f 66  20 6f 70 74 69 6d 69 73  |egree of optimis|
0001bf00  61 74 69 6f 6e 20 74 6f  20 62 65 20 70 65 72 66  |ation to be perf|
0001bf10  6f 72 6d 65 64 2e 20 59  6f 75 20 63 61 6e 20 75  |ormed. You can u|
0001bf20  73 65 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |se the following|
0001bf30  3a 0a 0a 23 74 61 62 0a  2d 6e 6f 6f 70 74 69 6d  |:..#tab.-nooptim|
0001bf40  69 73 65 09 4e 6f 20 6f  70 74 69 6d 69 73 61 74  |ise.No optimisat|
0001bf50  69 6f 6e 20 70 65 72 66  6f 72 6d 65 64 0a 2d 6f  |ion performed.-o|
0001bf60  70 74 69 6d 69 73 65 3d  66 6f 6c 64 09 46 6f 6c  |ptimise=fold.Fol|
0001bf70  64 20 6f 70 74 69 6d 69  73 61 74 69 6f 6e 20 6f  |d optimisation o|
0001bf80  6e 6c 79 0a 2d 6f 70 74  69 6d 69 73 65 3d 70 65  |nly.-optimise=pe|
0001bf90  65 70 68 6f 6c 65 09 50  65 65 70 68 6f 6c 65 20  |ephole.Peephole |
0001bfa0  6f 70 74 69 6d 69 73 61  74 69 6f 6e 20 6f 6e 6c  |optimisation onl|
0001bfb0  79 0a 2d 6f 70 74 69 6d  69 73 65 3d 61 6c 6c 09  |y.-optimise=all.|
0001bfc0  42 6f 74 68 20 6f 70 74  69 6d 69 73 61 74 69 6f  |Both optimisatio|
0001bfd0  6e 20 74 79 70 65 73 00  44 41 54 41 40 01 00 00  |n types.DATA@...|
0001bfe0  2d 70 72 6f 66 69 6c 65  0a 41 62 62 72 65 76 69  |-profile.Abbrevi|
0001bff0  61 74 69 6f 6e 3a 09 2d  70 0a 53 79 6e 74 61 78  |ation:.-p.Syntax|
0001c000  3a 09 2d 70 72 6f 66 69  6c 65 3d 5c 3c 6d 6f 64  |:.-profile=\<mod|
0001c010  69 66 69 65 72 3e 0a 44  65 66 61 75 6c 74 3a 09  |ifier>.Default:.|
0001c020  2d 70 72 6f 66 69 6c 65  3d 6e 6f 6e 65 0a 0a 54  |-profile=none..T|
0001c030  68 69 73 20 64 69 72 65  63 74 69 76 65 20 63 61  |his directive ca|
0001c040  75 73 65 73 20 74 68 65  20 63 6f 6d 70 69 6c 65  |uses the compile|
0001c050  72 20 74 6f 20 69 6e 63  6c 75 64 65 20 70 72 6f  |r to include pro|
0001c060  66 69 6c 69 6e 67 20 69  6e 66 6f 72 6d 61 74 69  |filing informati|
0001c070  6f 6e 20 66 6f 72 20 75  73 65 20 62 79 20 61 20  |on for use by a |
0001c080  73 65 70 61 72 61 74 65  20 70 72 6f 66 69 6c 65  |separate profile|
0001c090  72 2e 20 54 68 65 20 6d  6f 64 69 66 69 65 72 73  |r. The modifiers|
0001c0a0  20 61 72 65 3a 0a 0a 23  74 61 62 0a 66 75 6e 63  | are:..#tab.func|
0001c0b0  74 69 6f 6e 09 46 75 6e  63 74 69 6f 6e 20 65 78  |tion.Function ex|
0001c0c0  65 63 75 74 69 6f 6e 20  74 69 6d 65 73 0a 6c 69  |ecution times.li|
0001c0d0  6e 65 09 4c 69 6e 65 20  65 78 65 63 75 74 69 6f  |ne.Line executio|
0001c0e0  6e 20 74 69 6d 65 73 0a  62 6f 74 68 09 42 6f 74  |n times.both.Bot|
0001c0f0  68 20 6f 66 20 74 68 65  20 61 62 6f 76 65 0a 6e  |h of the above.n|
0001c100  6f 6e 65 09 4e 65 69 74  68 65 72 20 6f 66 20 74  |one.Neither of t|
0001c110  68 65 20 61 62 6f 76 65  44 41 54 41 7d 00 00 00  |he aboveDATA}...|
0001c120  2d 72 75 6e 0a 41 62 62  72 65 76 69 61 74 69 6f  |-run.Abbreviatio|
0001c130  6e 3a 09 2d 72 0a 44 65  66 61 75 6c 74 3a 09 2d  |n:.-r.Default:.-|
0001c140  6e 6f 72 75 6e 0a 0a 49  66 20 2d 72 75 6e 20 69  |norun..If -run i|
0001c150  73 20 73 70 65 63 69 66  69 65 64 2c 20 45 61 73  |s specified, Eas|
0001c160  79 20 43 20 72 75 6e 73  20 74 68 65 20 70 72 6f  |y C runs the pro|
0001c170  67 72 61 6d 20 61 75 74  6f 6d 61 74 69 63 61 6c  |gram automatical|
0001c180  6c 79 20 61 66 74 65 72  20 63 6f 6d 70 69 6c 61  |ly after compila|
0001c190  74 69 6f 6e 2e 00 00 00  44 41 54 41 fc 01 00 00  |tion....DATA....|
0001c1a0  2d 73 68 6f 77 0a 41 62  62 72 65 76 69 61 74 69  |-show.Abbreviati|
0001c1b0  6f 6e 3a 09 2d 73 68 0a  53 79 6e 74 61 78 3a 09  |on:.-sh.Syntax:.|
0001c1c0  2d 73 68 6f 77 3d 5c 3c  6d 6f 64 69 66 69 65 72  |-show=\<modifier|
0001c1d0  73 3e 0a 44 65 66 61 75  6c 74 3a 09 2d 73 68 6f  |s>.Default:.-sho|
0001c1e0  77 3d 73 6f 75 72 63 65  0a 0a 54 68 69 73 20 71  |w=source..This q|
0001c1f0  75 61 6c 69 66 69 65 72  20 61 6c 6c 6f 77 73 20  |ualifier allows |
0001c200  79 6f 75 20 74 6f 20 73  65 74 20 77 68 61 74 20  |you to set what |
0001c210  69 73 20 69 6e 63 6c 75  64 65 64 20 69 6e 20 74  |is included in t|
0001c220  68 65 20 6c 69 73 74 69  6e 67 20 70 72 6f 64 75  |he listing produ|
0001c230  63 65 64 20 62 79 20 3c  5c 2d 6c 69 73 74 3d 3e  |ced by <\-list=>|
0001c240  63 6f 6d 70 64 69 72 5f  6c 69 73 74 5f 3e 2e 20  |compdir_list_>. |
0001c250  54 68 65 20 6d 6f 64 69  66 69 65 72 73 20 61 72  |The modifiers ar|
0001c260  65 20 73 65 70 61 72 61  74 65 64 20 62 79 20 63  |e separated by c|
0001c270  6f 6d 6d 61 73 20 61 6e  64 20 61 72 65 20 61 73  |ommas and are as|
0001c280  20 66 6f 6c 6c 6f 77 73  3a 0a 0a 73 6f 75 72 63  | follows:..sourc|
0001c290  65 09 53 6f 75 72 63 65  20 63 6f 64 65 20 69 73  |e.Source code is|
0001c2a0  20 69 6e 63 6c 75 64 65  64 2e 0a 65 78 70 61 6e  | included..expan|
0001c2b0  64 65 64 09 45 61 63 68  20 6c 69 6e 65 20 73 68  |ded.Each line sh|
0001c2c0  6f 77 6e 20 74 77 69 63  65 2c 20 77 69 74 68 20  |own twice, with |
0001c2d0  65 78 70 61 6e 64 65 64  20 6d 61 63 72 6f 73 20  |expanded macros |
0001c2e0  6f 6e 20 73 65 63 6f 6e  64 20 6c 69 6e 65 2e 0a  |on second line..|
0001c2f0  63 6f 64 65 09 41 52 4d  20 61 73 73 65 6d 62 6c  |code.ARM assembl|
0001c300  65 72 20 63 6f 64 65 20  69 73 20 69 6e 63 6c 75  |er code is inclu|
0001c310  64 65 64 2e 0a 76 61 72  69 61 62 6c 65 73 09 56  |ded..variables.V|
0001c320  61 72 69 61 62 6c 65 20  2d 3e 20 72 65 67 69 73  |ariable -> regis|
0001c330  74 65 72 20 6d 61 70 70  69 6e 67 73 20 73 68 6f  |ter mappings sho|
0001c340  77 6e 2e 0a 69 6e 63 6c  75 64 65 73 09 49 6e 63  |wn..includes.Inc|
0001c350  6c 75 64 65 20 66 69 6c  65 73 20 61 72 65 20 6c  |lude files are l|
0001c360  69 73 74 65 64 2e 0a 61  6c 6c 09 41 6c 6c 20 6f  |isted..all.All o|
0001c370  66 20 74 68 65 20 61 62  6f 76 65 2e 0a 6e 6f 6e  |f the above..non|
0001c380  65 09 4e 6f 6e 65 20 6f  66 20 74 68 65 20 61 62  |e.None of the ab|
0001c390  6f 76 65 2e 44 41 54 41  8b 00 00 00 2d 73 69 6c  |ove.DATA....-sil|
0001c3a0  65 6e 74 0a 41 62 62 72  65 76 69 61 74 69 6f 6e  |ent.Abbreviation|
0001c3b0  3a 09 2d 73 69 0a 44 65  66 61 75 6c 74 3a 09 2d  |:.-si.Default:.-|
0001c3c0  6e 6f 73 69 6c 65 6e 74  0a 0a 54 68 69 73 20 71  |nosilent..This q|
0001c3d0  75 61 6c 69 66 69 65 72  20 73 77 69 74 63 68 65  |ualifier switche|
0001c3e0  73 20 6f 66 66 20 61 6c  6c 20 6f 75 74 70 75 74  |s off all output|
0001c3f0  20 64 75 72 69 6e 67 20  63 6f 6d 70 69 6c 61 74  | during compilat|
0001c400  69 6f 6e 2c 20 65 78 63  65 70 74 20 66 6f 72 20  |ion, except for |
0001c410  65 72 72 6f 72 20 6d 65  73 73 61 67 65 73 2e 00  |error messages..|
0001c420  44 41 54 41 e6 01 00 00  2d 73 74 61 6e 64 61 72  |DATA....-standar|
0001c430  64 0a 41 62 62 72 65 76  69 61 74 69 6f 6e 3a 09  |d.Abbreviation:.|
0001c440  2d 73 0a 44 65 66 61 75  6c 74 20 73 65 74 74 69  |-s.Default setti|
0001c450  6e 67 3a 09 2d 73 74 61  6e 64 61 72 64 3d 41 4e  |ng:.-standard=AN|
0001c460  53 49 0a 0a 54 68 69 73  20 71 75 61 6c 69 66 69  |SI..This qualifi|
0001c470  65 72 20 73 65 74 73 20  74 68 65 20 73 74 61 6e  |er sets the stan|
0001c480  64 61 72 64 20 6f 66 20  43 20 75 73 65 64 2e 20  |dard of C used. |
0001c490  59 6f 75 20 63 61 6e 20  75 73 65 20 74 68 65 20  |You can use the |
0001c4a0  66 6f 6c 6c 6f 77 69 6e  67 3a 0a 0a 23 74 61 62  |following:..#tab|
0001c4b0  0a 2d 73 74 61 6e 64 61  72 64 3d 4b 52 09 4f 72  |.-standard=KR.Or|
0001c4c0  69 67 69 6e 61 6c 20 4b  20 26 20 52 20 73 74 61  |iginal K & R sta|
0001c4d0  6e 64 61 72 64 0a 2d 73  74 61 6e 64 61 72 64 3d  |ndard.-standard=|
0001c4e0  41 4e 53 49 09 41 4e 53  49 20 73 74 61 6e 64 61  |ANSI.ANSI standa|
0001c4f0  72 64 0a 2d 73 74 61 6e  64 61 72 64 3d 45 78 74  |rd.-standard=Ext|
0001c500  65 6e 64 65 64 09 45 61  73 79 20 43 20 65 78 74  |ended.Easy C ext|
0001c510  65 6e 73 69 6f 6e 73 0a  0a 54 68 65 20 65 78 74  |ensions..The ext|
0001c520  65 6e 64 65 64 20 66 6f  72 6d 20 68 61 73 20 33  |ended form has 3|
0001c530  20 65 78 74 65 6e 73 69  6f 6e 73 20 74 6f 20 74  | extensions to t|
0001c540  68 65 20 41 4e 53 49 20  73 74 61 6e 64 61 72 64  |he ANSI standard|
0001c550  3a 0a 0a 23 74 61 62 0a  8f 09 54 68 65 20 73 79  |:..#tab...The sy|
0001c560  6d 62 6f 6c 20 24 20 69  73 20 61 6c 6c 6f 77 65  |mbol $ is allowe|
0001c570  64 20 69 6e 20 76 61 72  69 61 62 6c 65 20 6e 61  |d in variable na|
0001c580  6d 65 73 2e 0a 8f 09 42  69 6e 61 72 79 20 6e 75  |mes....Binary nu|
0001c590  6d 62 65 72 73 20 63 61  6e 20 62 65 20 73 70 65  |mbers can be spe|
0001c5a0  63 69 66 69 65 64 20 77  69 74 68 20 70 72 65 66  |cified with pref|
0001c5b0  69 78 20 30 62 0a 8f 09  41 75 74 6f 6d 61 74 69  |ix 0b...Automati|
0001c5c0  63 20 61 72 67 75 6d 65  6e 74 20 63 6f 75 6e 74  |c argument count|
0001c5d0  69 6e 67 20 69 73 20 73  75 70 70 6f 72 74 65 64  |ing is supported|
0001c5e0  2e 20 53 65 65 20 41 70  70 65 6e 64 69 78 20 43  |. See Appendix C|
0001c5f0  20 6f 66 20 74 68 65 20  45 61 73 79 20 43 20 6d  | of the Easy C m|
0001c600  61 6e 75 61 6c 2e 00 00  44 41 54 41 b8 00 00 00  |anual...DATA....|
0001c610  2d 74 68 72 6f 77 62 61  63 6b 0a 41 62 62 72 65  |-throwback.Abbre|
0001c620  76 69 61 74 69 6f 6e 3a  09 2d 74 68 0a 44 65 66  |viation:.-th.Def|
0001c630  61 75 6c 74 3a 09 2d 6e  6f 74 68 72 6f 77 62 61  |ault:.-nothrowba|
0001c640  63 6b 0a 0a 54 68 69 73  20 64 69 72 65 63 74 69  |ck..This directi|
0001c650  76 65 20 73 70 65 63 69  66 69 65 73 20 74 68 61  |ve specifies tha|
0001c660  74 20 65 72 72 6f 72 73  20 67 65 6e 65 72 61 74  |t errors generat|
0001c670  65 64 20 61 72 65 20 74  72 61 6e 73 6d 69 74 74  |ed are transmitt|
0001c680  65 64 20 76 69 61 20 74  68 65 20 22 54 68 72 6f  |ed via the "Thro|
0001c690  77 62 61 63 6b 22 20 73  79 73 74 65 6d 20 74 6f  |wback" system to|
0001c6a0  20 61 6e 20 65 78 74 65  72 6e 61 6c 20 65 64 69  | an external edi|
0001c6b0  74 6f 72 20 65 67 20 53  74 72 6f 6e 67 45 44 2e  |tor eg StrongED.|
0001c6c0  44 41 54 41 dc 00 00 00  2d 77 61 72 6e 69 6e 67  |DATA....-warning|
0001c6d0  73 0a 41 62 62 72 65 76  69 61 74 69 6f 6e 3a 09  |s.Abbreviation:.|
0001c6e0  2d 77 0a 53 79 6e 74 61  78 3a 09 2d 77 61 72 6e  |-w.Syntax:.-warn|
0001c6f0  69 6e 67 73 3d 5c 3c 6c  65 76 65 6c 3e 0a 44 65  |ings=\<level>.De|
0001c700  66 61 75 6c 74 3a 09 2d  77 61 72 6e 69 6e 67 73  |fault:.-warnings|
0001c710  0a 0a 54 68 69 73 20 64  69 72 65 63 74 69 76 65  |..This directive|
0001c720  20 63 61 75 73 65 73 20  74 68 65 20 63 6f 6d 70  | causes the comp|
0001c730  69 6c 65 72 20 74 6f 20  72 65 70 6f 72 74 20 77  |iler to report w|
0001c740  61 72 6e 69 6e 67 73 2e  20 54 68 65 79 20 63 61  |arnings. They ca|
0001c750  6e 20 62 65 20 73 77 69  74 63 68 65 64 20 6f 66  |n be switched of|
0001c760  66 20 75 73 69 6e 67 20  2d 6e 6f 77 61 72 6e 69  |f using -nowarni|
0001c770  6e 67 73 2e 20 59 6f 75  20 63 61 6e 20 61 6c 73  |ngs. You can als|
0001c780  6f 20 73 70 65 63 69 66  79 20 74 68 65 20 77 61  |o specify the wa|
0001c790  72 6e 69 6e 67 20 6c 65  76 65 6c 2e 44 49 52 24  |rning level.DIR$|
0001c7a0  2c 00 00 00 2c 00 00 00  c8 c7 01 00 46 ff ff ff  |,...,.......F...|
0001c7b0  b6 6c f1 24 f4 00 00 00  13 00 00 00 00 00 00 00  |.l.$............|
0001c7c0  62 6c 6f 63 6b 00 00 00  44 41 54 41 f4 00 00 00  |block...DATA....|
0001c7d0  63 6f 6e 76 65 72 74 5f  62 6c 6f 63 6b 0a 54 68  |convert_block.Th|
0001c7e0  65 20 74 79 70 65 20 7b  2a 7d 63 6f 6e 76 65 72  |e type {*}conver|
0001c7f0  74 5f 62 6c 6f 63 6b 7b  2a 7d 20 69 73 20 64 65  |t_block{*} is de|
0001c800  66 69 6e 65 64 20 69 6e  20 3c 44 65 73 6b 4c 69  |fined in <DeskLi|
0001c810  62 3a 43 6f 6f 72 64 2e  68 3d 3e 43 6f 6f 72 64  |b:Coord.h=>Coord|
0001c820  3e 20 61 73 20 61 6e 20  6f 62 6a 65 63 74 20 63  |> as an object c|
0001c830  61 70 61 62 6c 65 20 6f  66 20 68 6f 6c 64 69 6e  |apable of holdin|
0001c840  67 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 61 62  |g information ab|
0001c850  6f 75 74 20 74 68 65 20  70 6f 73 69 74 69 6f 6e  |out the position|
0001c860  20 6f 66 20 61 20 77 69  6e 64 6f 77 20 61 6e 64  | of a window and|
0001c870  20 69 74 73 20 73 63 72  6f 6c 6c 20 62 61 72 73  | its scroll bars|
0001c880  2e 0a 0a 5c 7b 0a 20 20  20 20 3c 77 69 6d 70 5f  |...\{.    <wimp_|
0001c890  72 65 63 74 3e 20 73 63  72 65 65 6e 72 65 63 74  |rect> screenrect|
0001c8a0  3b 0a 20 20 20 20 3c 77  69 6d 70 5f 70 6f 69 6e  |;.    <wimp_poin|
0001c8b0  74 3e 20 73 63 72 6f 6c  6c 3b 0a 7d 44 41 54 41  |t> scroll;.}DATA|
0001c8c0  11 02 00 00 43 6f 6f 72  64 2e 68 0a 56 65 72 73  |....Coord.h.Vers|
0001c8d0  69 6f 6e 3a 20 31 2e 30  32 20 28 30 32 20 4d 61  |ion: 1.02 (02 Ma|
0001c8e0  72 20 31 39 39 33 29 0a  23 6c 69 6e 65 0a 54 68  |r 1993).#line.Th|
0001c8f0  65 20 5c 3c 43 6f 6f 72  64 2e 68 3e 20 68 65 61  |e \<Coord.h> hea|
0001c900  64 65 72 20 64 65 66 69  6e 65 73 20 66 75 6e 63  |der defines func|
0001c910  74 69 6f 6e 73 20 66 6f  72 20 68 61 6e 64 6c 69  |tions for handli|
0001c920  6e 67 20 70 6f 69 6e 74  73 20 61 6e 64 20 72 65  |ng points and re|
0001c930  63 74 61 6e 67 6c 65 73  2e 20 49 74 20 61 6c 73  |ctangles. It als|
0001c940  6f 20 64 65 66 69 6e 65  73 20 6f 6e 65 20 74 79  |o defines one ty|
0001c950  70 65 2e 0a 0a 46 75 6e  63 74 69 6f 6e 73 3a 0a  |pe...Functions:.|
0001c960  0a 23 69 6e 64 65 6e 74  20 34 0a 23 54 61 62 6c  |.#indent 4.#Tabl|
0001c970  65 20 37 20 32 33 0a 3c  43 6f 6f 72 64 5f 50 6f  |e 7 23.<Coord_Po|
0001c980  69 6e 74 49 6e 52 65 63  74 3e 0a 3c 43 6f 6f 72  |intInRect>.<Coor|
0001c990  64 5f 52 65 63 74 43 6f  6e 74 61 69 6e 65 64 3e  |d_RectContained>|
0001c9a0  0a 3c 43 6f 6f 72 64 5f  52 65 63 74 73 4f 76 65  |.<Coord_RectsOve|
0001c9b0  72 6c 61 70 3e 0a 3c 43  6f 6f 72 64 5f 52 65 63  |rlap>.<Coord_Rec|
0001c9c0  74 73 49 6e 74 65 72 73  65 63 74 3e 0a 3c 43 6f  |tsIntersect>.<Co|
0001c9d0  6f 72 64 5f 57 69 6e 64  6f 77 4f 72 69 67 69 6e  |ord_WindowOrigin|
0001c9e0  3e 0a 3c 43 6f 6f 72 64  5f 58 54 6f 53 63 72 65  |>.<Coord_XToScre|
0001c9f0  65 6e 3e 0a 3c 43 6f 6f  72 64 5f 59 54 6f 53 63  |en>.<Coord_YToSc|
0001ca00  72 65 65 6e 3e 0a 3c 43  6f 6f 72 64 5f 50 6f 69  |reen>.<Coord_Poi|
0001ca10  6e 74 54 6f 53 63 72 65  65 6e 3e 0a 3c 43 6f 6f  |ntToScreen>.<Coo|
0001ca20  72 64 5f 52 65 63 74 54  6f 53 63 72 65 65 6e 3e  |rd_RectToScreen>|
0001ca30  0a 3c 43 6f 6f 72 64 5f  58 54 6f 57 6f 72 6b 41  |.<Coord_XToWorkA|
0001ca40  72 65 61 3e 0a 3c 43 6f  6f 72 64 5f 59 54 6f 57  |rea>.<Coord_YToW|
0001ca50  6f 72 6b 41 72 65 61 3e  0a 3c 43 6f 6f 72 64 5f  |orkArea>.<Coord_|
0001ca60  50 6f 69 6e 74 54 6f 57  6f 72 6b 41 72 65 61 3e  |PointToWorkArea>|
0001ca70  0a 3c 43 6f 6f 72 64 5f  52 65 63 74 54 6f 57 6f  |.<Coord_RectToWo|
0001ca80  72 6b 41 72 65 61 3e 0a  3c 43 6f 6f 72 64 5f 52  |rkArea>.<Coord_R|
0001ca90  65 63 74 55 6e 69 6f 6e  3e 0a 23 45 6e 64 54 61  |ectUnion>.#EndTa|
0001caa0  62 6c 65 0a 23 69 6e 64  65 6e 74 0a 0a 54 79 70  |ble.#indent..Typ|
0001cab0  65 3a 0a 0a 23 69 6e 64  65 6e 74 20 34 0a 3c 63  |e:..#indent 4.<c|
0001cac0  6f 6e 76 65 72 74 5f 62  6c 6f 63 6b 3e 00 00 00  |onvert_block>...|
0001cad0  44 49 52 24 40 02 00 00  40 02 00 00 10 cd 01 00  |DIR$@...@.......|
0001cae0  46 ff ff ff f8 f7 f0 24  3e 01 00 00 13 00 00 00  |F......$>.......|
0001caf0  00 00 00 00 50 6f 69 6e  74 49 6e 52 65 63 74 00  |....PointInRect.|
0001cb00  50 ce 01 00 46 ff ff ff  91 48 f1 24 f2 00 00 00  |P...F....H.$....|
0001cb10  13 00 00 00 00 00 00 00  50 6f 69 6e 74 54 6f 53  |........PointToS|
0001cb20  63 72 65 65 6e 00 00 00  44 cf 01 00 46 ff ff ff  |creen...D...F...|
0001cb30  7f 00 f1 24 6c 01 00 00  13 00 00 00 00 00 00 00  |...$l...........|
0001cb40  52 65 63 74 43 6f 6e 74  61 69 6e 65 64 00 00 00  |RectContained...|
0001cb50  b0 d0 01 00 46 ff ff ff  09 06 f1 24 fc 00 00 00  |....F......$....|
0001cb60  13 00 00 00 00 00 00 00  52 65 63 74 73 4f 76 65  |........RectsOve|
0001cb70  72 6c 61 70 00 00 00 00  ac d1 01 00 46 ff ff ff  |rlap........F...|
0001cb80  e8 4c f1 24 f3 00 00 00  13 00 00 00 00 00 00 00  |.L.$............|
0001cb90  52 65 63 74 54 6f 53 63  72 65 65 6e 00 00 00 00  |RectToScreen....|
0001cba0  a0 d2 01 00 46 ff ff ff  70 9f 54 26 32 01 00 00  |....F...p.T&2...|
0001cbb0  13 00 00 00 00 00 00 00  52 65 63 74 55 6e 69 6f  |........RectUnio|
0001cbc0  6e 00 00 00 d4 d3 01 00  46 fd ff ff 1b 92 54 26  |n.......F.....T&|
0001cbd0  b8 00 00 00 13 00 00 00  00 00 00 00 54 4c 00 00  |............TL..|
0001cbe0  8c d4 01 00 46 ff ff ff  d3 30 f1 24 2c 02 00 00  |....F....0.$,...|
0001cbf0  13 00 00 00 00 00 00 00  57 69 6e 64 6f 77 4f 72  |........WindowOr|
0001cc00  69 67 69 6e 00 00 00 00  b8 d6 01 00 46 ff ff ff  |igin........F...|
0001cc10  f3 3e f1 24 5a 01 00 00  13 00 00 00 00 00 00 00  |.>.$Z...........|
0001cc20  58 54 6f 53 63 72 65 65  6e 00 00 00 14 d8 01 00  |XToScreen.......|
0001cc30  46 ff ff ff 53 52 f1 24  5e 01 00 00 13 00 00 00  |F...SR.$^.......|
0001cc40  00 00 00 00 58 54 6f 57  6f 72 6b 41 72 65 61 00  |....XToWorkArea.|
0001cc50  74 d9 01 00 46 ff ff ff  1a 44 f1 24 5a 01 00 00  |t...F....D.$Z...|
0001cc60  13 00 00 00 00 00 00 00  59 54 6f 53 63 72 65 65  |........YToScree|
0001cc70  6e 00 00 00 d0 da 01 00  46 ff ff ff c1 57 f1 24  |n.......F....W.$|
0001cc80  5e 01 00 00 13 00 00 00  00 00 00 00 59 54 6f 57  |^...........YToW|
0001cc90  6f 72 6b 41 72 65 61 00  30 dc 01 00 46 ff ff ff  |orkArea.0...F...|
0001cca0  72 23 f1 24 4c 02 00 00  13 00 00 00 00 00 00 00  |r#.$L...........|
0001ccb0  52 65 63 74 73 49 6e 74  65 72 73 65 63 74 00 00  |RectsIntersect..|
0001ccc0  7c de 01 00 46 ff ff ff  f7 63 f1 24 f9 00 00 00  ||...F....c.$....|
0001ccd0  13 00 00 00 00 00 00 00  52 65 63 74 54 6f 57 6f  |........RectToWo|
0001cce0  72 6b 41 72 65 61 00 00  78 df 01 00 46 ff ff ff  |rkArea..x...F...|
0001ccf0  2c 5e f1 24 f8 00 00 00  13 00 00 00 00 00 00 00  |,^.$............|
0001cd00  50 6f 69 6e 74 54 6f 57  6f 72 6b 41 72 65 61 00  |PointToWorkArea.|
0001cd10  44 41 54 41 3e 01 00 00  43 6f 6f 72 64 5f 50 6f  |DATA>...Coord_Po|
0001cd20  69 6e 74 49 6e 52 65 63  74 0a 53 79 6e 74 61 78  |intInRect.Syntax|
0001cd30  3a 09 3c 42 4f 4f 4c 3e  20 43 6f 6f 72 64 5f 50  |:.<BOOL> Coord_P|
0001cd40  6f 69 6e 74 49 6e 52 65  63 74 20 28 3c 77 69 6d  |ointInRect (<wim|
0001cd50  70 5f 70 6f 69 6e 74 3e  20 2a 70 2c 20 3c 77 69  |p_point> *p, <wi|
0001cd60  6d 70 5f 72 65 63 74 3e  20 2a 72 29 3b 0a 48 65  |mp_rect> *r);.He|
0001cd70  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 43  |ader:.<DeskLib:C|
0001cd80  6f 6f 72 64 2e 68 3d 3e  43 6f 6f 72 64 3e 0a 0a  |oord.h=>Coord>..|
0001cd90  52 65 74 75 72 6e 73 3a  09 3c 54 52 55 45 3e 20  |Returns:.<TRUE> |
0001cda0  6f 72 20 3c 46 41 4c 53  45 3e 2e 0a 0a 54 68 69  |or <FALSE>...Thi|
0001cdb0  73 20 66 75 6e 63 74 69  6f 6e 20 74 65 73 74 73  |s function tests|
0001cdc0  20 77 68 65 74 68 65 72  20 74 68 65 20 70 6f 69  | whether the poi|
0001cdd0  6e 74 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |nt pointed to by|
0001cde0  20 2f 70 2f 20 6c 69 65  73 20 77 69 74 68 69 6e  | /p/ lies within|
0001cdf0  20 74 68 65 20 72 65 63  74 61 6e 67 6c 65 20 70  | the rectangle p|
0001ce00  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 2f 72 2f  |ointed to by /r/|
0001ce10  2e 20 49 66 20 2f 70 2f  20 69 73 20 6f 6e 20 74  |. If /p/ is on t|
0001ce20  68 65 20 70 65 72 69 6d  65 74 65 72 20 6f 66 20  |he perimeter of |
0001ce30  74 68 65 20 72 65 63 74  61 6e 67 6c 65 20 69 74  |the rectangle it|
0001ce40  20 72 65 74 75 72 6e 73  20 54 52 55 45 2e 00 00  | returns TRUE...|
0001ce50  44 41 54 41 f2 00 00 00  43 6f 6f 72 64 5f 50 6f  |DATA....Coord_Po|
0001ce60  69 6e 74 54 6f 53 63 72  65 65 6e 0a 53 79 6e 74  |intToScreen.Synt|
0001ce70  61 78 3a 09 76 6f 69 64  20 43 6f 6f 72 64 5f 50  |ax:.void Coord_P|
0001ce80  6f 69 6e 74 54 6f 53 63  72 65 65 6e 20 28 3c 77  |ointToScreen (<w|
0001ce90  69 6d 70 5f 70 6f 69 6e  74 3e 20 2a 70 2c 20 3c  |imp_point> *p, <|
0001cea0  63 6f 6e 76 65 72 74 5f  62 6c 6f 63 6b 3e 20 2a  |convert_block> *|
0001ceb0  62 6c 6b 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |blk);.Header:.<D|
0001cec0  65 73 6b 4c 69 62 3a 43  6f 6f 72 64 2e 68 3d 3e  |eskLib:Coord.h=>|
0001ced0  43 6f 6f 72 64 3e 0a 0a  54 68 69 73 20 66 75 6e  |Coord>..This fun|
0001cee0  63 74 69 6f 6e 20 63 6f  6e 76 65 72 74 73 20 74  |ction converts t|
0001cef0  68 65 20 70 6f 69 6e 74  20 69 6e 20 77 6f 72 6b  |he point in work|
0001cf00  20 61 72 65 61 20 63 6f  6f 72 64 69 6e 61 74 65  | area coordinate|
0001cf10  73 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 79 20  |s pointed to by |
0001cf20  70 2c 20 69 6e 74 6f 20  6f 6e 65 20 69 6e 20 73  |p, into one in s|
0001cf30  63 72 65 65 6e 20 63 6f  6f 72 64 69 6e 61 74 65  |creen coordinate|
0001cf40  73 2e 00 00 44 41 54 41  6c 01 00 00 43 6f 6f 72  |s...DATAl...Coor|
0001cf50  64 5f 52 65 63 74 43 6f  6e 74 61 69 6e 65 64 0a  |d_RectContained.|
0001cf60  53 79 6e 74 61 78 3a 09  3c 42 4f 4f 4c 3e 20 43  |Syntax:.<BOOL> C|
0001cf70  6f 6f 72 64 5f 52 65 63  74 43 6f 6e 74 61 69 6e  |oord_RectContain|
0001cf80  65 64 20 28 3c 77 69 6d  70 5f 72 65 63 74 3e 20  |ed (<wimp_rect> |
0001cf90  2a 69 6e 72 65 63 74 2c  20 77 69 6d 70 5f 72 65  |*inrect, wimp_re|
0001cfa0  63 74 20 2a 6f 75 74 72  65 63 74 29 3b 0a 48 65  |ct *outrect);.He|
0001cfb0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 43  |ader:.<DeskLib:C|
0001cfc0  6f 6f 72 64 2e 68 3d 3e  43 6f 6f 72 64 3e 0a 0a  |oord.h=>Coord>..|
0001cfd0  52 65 74 75 72 6e 73 3a  09 3c 54 52 55 45 3e 20  |Returns:.<TRUE> |
0001cfe0  6f 72 20 3c 46 41 4c 53  45 3e 2e 0a 0a 54 68 69  |or <FALSE>...Thi|
0001cff0  73 20 66 75 6e 63 74 69  6f 6e 20 74 65 73 74 73  |s function tests|
0001d000  20 77 68 65 74 68 65 72  20 74 68 65 20 72 65 63  | whether the rec|
0001d010  74 61 6e 67 6c 65 20 70  6f 69 6e 74 65 64 20 74  |tangle pointed t|
0001d020  6f 20 62 79 20 2f 69 6e  72 65 63 74 2f 20 69 73  |o by /inrect/ is|
0001d030  20 77 68 6f 6c 6c 79 20  63 6f 6e 74 61 69 6e 65  | wholly containe|
0001d040  64 20 62 79 20 74 68 65  20 72 65 63 74 61 6e 67  |d by the rectang|
0001d050  6c 65 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |le pointed to by|
0001d060  20 2f 6f 75 74 72 65 63  74 2f 2e 20 50 6f 69 6e  | /outrect/. Poin|
0001d070  74 73 20 6f 6e 20 74 68  65 20 70 65 72 69 6d 65  |ts on the perime|
0001d080  74 65 72 20 6f 66 20 2f  6f 75 74 72 65 63 74 2f  |ter of /outrect/|
0001d090  20 61 72 65 20 63 6f 6e  73 69 64 65 72 65 64 20  | are considered |
0001d0a0  74 6f 20 62 65 20 77 69  74 68 69 6e 20 69 74 2e  |to be within it.|
0001d0b0  44 41 54 41 fc 00 00 00  43 6f 6f 72 64 5f 52 65  |DATA....Coord_Re|
0001d0c0  63 74 73 4f 76 65 72 6c  61 70 0a 53 79 6e 74 61  |ctsOverlap.Synta|
0001d0d0  78 3a 09 3c 42 4f 4f 4c  3e 20 43 6f 6f 72 64 5f  |x:.<BOOL> Coord_|
0001d0e0  52 65 63 74 73 4f 76 65  72 6c 61 70 20 28 3c 77  |RectsOverlap (<w|
0001d0f0  69 6d 70 5f 72 65 63 74  3e 20 2a 61 2c 20 77 69  |imp_rect> *a, wi|
0001d100  6d 70 5f 72 65 63 74 20  2a 62 29 3b 0a 48 65 61  |mp_rect *b);.Hea|
0001d110  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 43 6f  |der:.<DeskLib:Co|
0001d120  6f 72 64 2e 68 3d 3e 43  6f 6f 72 64 3e 0a 0a 52  |ord.h=>Coord>..R|
0001d130  65 74 75 72 6e 73 3a 09  3c 54 52 55 45 3e 20 6f  |eturns:.<TRUE> o|
0001d140  72 20 3c 46 41 4c 53 45  3e 2e 0a 0a 54 68 69 73  |r <FALSE>...This|
0001d150  20 66 75 6e 63 74 69 6f  6e 20 63 68 65 63 6b 73  | function checks|
0001d160  20 74 6f 20 73 65 65 20  69 66 20 61 6e 79 20 70  | to see if any p|
0001d170  61 72 74 20 6f 66 20 74  68 65 20 74 77 6f 20 72  |art of the two r|
0001d180  65 63 74 61 6e 67 6c 65  73 20 70 6f 69 6e 74 65  |ectangles pointe|
0001d190  64 20 74 6f 20 62 79 20  2f 61 2f 20 61 6e 64 20  |d to by /a/ and |
0001d1a0  2f 62 2f 20 6f 76 65 72  6c 61 70 2e 44 41 54 41  |/b/ overlap.DATA|
0001d1b0  f3 00 00 00 43 6f 6f 72  64 5f 52 65 63 74 54 6f  |....Coord_RectTo|
0001d1c0  53 63 72 65 65 6e 0a 53  79 6e 74 61 78 3a 09 76  |Screen.Syntax:.v|
0001d1d0  6f 69 64 20 43 6f 6f 72  64 5f 52 65 63 74 54 6f  |oid Coord_RectTo|
0001d1e0  53 63 72 65 65 6e 20 28  3c 77 69 6d 70 5f 72 65  |Screen (<wimp_re|
0001d1f0  63 74 3e 20 2a 70 2c 20  3c 63 6f 6e 76 65 72 74  |ct> *p, <convert|
0001d200  5f 62 6c 6f 63 6b 3e 20  2a 62 6c 6b 29 3b 0a 48  |_block> *blk);.H|
0001d210  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
0001d220  43 6f 6f 72 64 2e 68 3d  3e 43 6f 6f 72 64 3e 0a  |Coord.h=>Coord>.|
0001d230  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
0001d240  6f 6e 76 65 72 74 73 20  74 68 65 20 72 65 63 74  |onverts the rect|
0001d250  61 6e 67 6c 65 20 69 6e  20 77 6f 72 6b 20 61 72  |angle in work ar|
0001d260  65 61 20 63 6f 6f 72 64  69 6e 61 74 65 73 20 70  |ea coordinates p|
0001d270  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 70 2c 20  |ointed to by p, |
0001d280  69 6e 74 6f 20 6f 6e 65  20 69 6e 20 73 63 72 65  |into one in scre|
0001d290  65 6e 20 63 6f 6f 72 64  69 6e 61 74 65 73 2e 00  |en coordinates..|
0001d2a0  44 41 54 41 32 01 00 00  43 6f 6f 72 64 5f 52 65  |DATA2...Coord_Re|
0001d2b0  63 74 55 6e 69 6f 6e 0a  53 79 6e 74 61 78 3a 09  |ctUnion.Syntax:.|
0001d2c0  76 6f 69 64 20 43 6f 6f  72 64 5f 52 65 63 74 55  |void Coord_RectU|
0001d2d0  6e 69 6f 6e 20 28 3c 77  69 6d 70 5f 72 65 63 74  |nion (<wimp_rect|
0001d2e0  3e 20 2a 64 65 73 74 2c  20 77 69 6d 70 5f 72 65  |> *dest, wimp_re|
0001d2f0  63 74 20 2a 61 2c 20 77  69 6d 70 5f 72 65 63 74  |ct *a, wimp_rect|
0001d300  20 2a 62 29 3b 0a 48 65  61 64 65 72 3a 09 3c 54  | *b);.Header:.<T|
0001d310  69 6d 73 4c 69 62 3a 43  6f 6f 72 64 2e 68 3d 3e  |imsLib:Coord.h=>|
0001d320  43 6f 6f 72 64 5f 54 4c  3e 0a 09 3c 44 65 73 6b  |Coord_TL>..<Desk|
0001d330  4c 69 62 3a 43 6f 6f 72  64 2e 68 3d 3e 43 6f 6f  |Lib:Coord.h=>Coo|
0001d340  72 64 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |rd>..This functi|
0001d350  6f 6e 20 66 69 6e 64 73  20 74 68 65 20 75 6e 69  |on finds the uni|
0001d360  6f 6e 20 6f 66 20 74 68  65 20 74 77 6f 20 72 65  |on of the two re|
0001d370  63 74 61 6e 67 6c 65 2c  20 2f 61 2f 20 61 6e 64  |ctangle, /a/ and|
0001d380  20 2f 62 2f 2c 20 61 6e  64 20 72 65 74 75 72 6e  | /b/, and return|
0001d390  73 20 69 74 20 69 6e 20  2f 64 65 73 74 2f 2e 20  |s it in /dest/. |
0001d3a0  41 6e 79 20 6f 66 20 2f  61 2f 2c 20 2f 62 2f 20  |Any of /a/, /b/ |
0001d3b0  6f 72 20 2f 64 65 73 74  2f 20 63 61 6e 20 62 65  |or /dest/ can be|
0001d3c0  20 74 68 65 20 73 61 6d  65 20 70 6f 69 6e 74 65  | the same pointe|
0001d3d0  72 2e 00 00 44 41 54 41  b8 00 00 00 54 69 6d 73  |r...DATA....Tims|
0001d3e0  4c 69 62 3a 43 6f 6f 72  64 2e 68 0a 23 50 61 72  |Lib:Coord.h.#Par|
0001d3f0  65 6e 74 20 72 6f 5f 74  6c 69 62 5f 0a 54 68 69  |ent ro_tlib_.Thi|
0001d400  73 20 69 73 20 61 6e 20  65 78 74 65 6e 73 69 6f  |s is an extensio|
0001d410  6e 20 66 6f 72 20 3c 44  65 73 6b 4c 69 62 3a 43  |n for <DeskLib:C|
0001d420  6f 6f 72 64 2e 68 3d 3e  43 6f 6f 72 64 3e 20 74  |oord.h=>Coord> t|
0001d430  68 61 74 20 70 72 6f 76  69 64 65 73 20 6f 6e 65  |hat provides one|
0001d440  20 65 78 74 72 61 20 66  75 6e 63 74 69 6f 6e 2c  | extra function,|
0001d450  20 3c 43 6f 6f 72 64 5f  52 65 63 74 55 6e 69 6f  | <Coord_RectUnio|
0001d460  6e 3e 2c 20 77 68 69 63  68 20 69 73 20 6e 6f 77  |n>, which is now|
0001d470  20 69 6e 63 6c 75 64 65  64 20 69 6e 20 44 65 73  | included in Des|
0001d480  6b 4c 69 62 20 61 6e 79  77 61 79 2e 44 41 54 41  |kLib anyway.DATA|
0001d490  2c 02 00 00 43 6f 6f 72  64 5f 57 69 6e 64 6f 77  |,...Coord_Window|
0001d4a0  4f 72 69 67 69 6e 0a 53  79 6e 74 61 78 3a 09 76  |Origin.Syntax:.v|
0001d4b0  6f 69 64 20 43 6f 6f 72  64 5f 57 69 6e 64 6f 77  |oid Coord_Window|
0001d4c0  4f 72 69 67 69 6e 20 28  3c 77 69 6d 70 5f 70 6f  |Origin (<wimp_po|
0001d4d0  69 6e 74 3e 20 2a 6f 2c  20 3c 63 6f 6e 76 65 72  |int> *o, <conver|
0001d4e0  74 5f 62 6c 6f 63 6b 3e  20 2a 62 6c 6b 29 3b 0a  |t_block> *blk);.|
0001d4f0  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
0001d500  3a 43 6f 6f 72 64 2e 68  3d 3e 43 6f 6f 72 64 3e  |:Coord.h=>Coord>|
0001d510  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0001d520  72 65 74 75 72 6e 73 20  69 6e 20 74 68 65 20 63  |returns in the c|
0001d530  6f 6f 72 64 69 6e 61 74  65 73 20 70 6f 69 6e 74  |oordinates point|
0001d540  65 64 20 74 6f 20 62 79  20 2f 6f 2f 2c 20 74 68  |ed to by /o/, th|
0001d550  65 20 73 63 72 65 65 6e  20 63 6f 6f 72 64 69 6e  |e screen coordin|
0001d560  61 74 65 73 20 6f 66 20  74 68 65 20 6f 72 69 67  |ates of the orig|
0001d570  69 6e 20 6f 66 20 61 20  77 69 6e 64 6f 77 27 73  |in of a window's|
0001d580  20 77 6f 72 6b 20 61 72  65 61 20 28 69 65 20 74  | work area (ie t|
0001d590  68 65 20 74 6f 70 20 6c  65 66 74 29 2e 20 54 68  |he top left). Th|
0001d5a0  65 20 73 63 72 65 65 6e  20 70 6f 73 69 74 69 6f  |e screen positio|
0001d5b0  6e 20 61 6e 64 20 73 63  72 6f 6c 6c 20 62 61 72  |n and scroll bar|
0001d5c0  20 70 6f 73 69 74 69 6f  6e 73 20 6f 66 20 74 68  | positions of th|
0001d5d0  65 20 77 69 6e 64 6f 77  20 73 68 6f 75 6c 64 20  |e window should |
0001d5e0  62 65 20 70 6c 61 63 65  64 20 69 6e 20 74 68 65  |be placed in the|
0001d5f0  20 73 74 72 75 63 74 75  72 65 20 70 6f 69 6e 74  | structure point|
0001d600  65 64 20 74 6f 20 62 79  20 2f 62 6c 6b 2f 2e 0a  |ed to by /blk/..|
0001d610  0a 54 68 65 20 6f 72 69  67 69 6e 20 72 65 74 75  |.The origin retu|
0001d620  72 6e 65 64 20 63 61 6e  20 62 65 20 6f 66 20 67  |rned can be of g|
0001d630  72 65 61 74 20 75 73 65  20 69 6e 20 72 65 64 72  |reat use in redr|
0001d640  61 77 20 63 6f 64 65 20  2d 20 61 6e 79 20 64 72  |aw code - any dr|
0001d650  61 77 69 6e 67 20 64 6f  6e 65 20 72 65 6c 61 74  |awing done relat|
0001d660  69 76 65 20 74 6f 20 74  68 69 73 20 77 69 6c 6c  |ive to this will|
0001d670  20 61 6c 77 61 79 73 20  61 70 70 65 61 72 20 61  | always appear a|
0001d680  74 20 74 68 65 20 63 6f  72 72 65 63 74 20 70 6c  |t the correct pl|
0001d690  61 63 65 2c 20 69 72 72  65 73 70 65 63 74 69 76  |ace, irrespectiv|
0001d6a0  65 20 6f 66 20 77 69 6e  64 6f 77 20 70 6f 73 69  |e of window posi|
0001d6b0  74 69 6f 6e 69 6e 67 2e  44 41 54 41 5a 01 00 00  |tioning.DATAZ...|
0001d6c0  43 6f 6f 72 64 5f 58 54  6f 53 63 72 65 65 6e 0a  |Coord_XToScreen.|
0001d6d0  53 79 6e 74 61 78 3a 09  69 6e 74 20 43 6f 6f 72  |Syntax:.int Coor|
0001d6e0  64 5f 58 54 6f 53 63 72  65 65 6e 20 28 69 6e 74  |d_XToScreen (int|
0001d6f0  20 78 2c 20 3c 63 6f 6e  76 65 72 74 5f 62 6c 6f  | x, <convert_blo|
0001d700  63 6b 3e 20 2a 62 6c 6b  29 3b 0a 48 65 61 64 65  |ck> *blk);.Heade|
0001d710  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 43 6f 6f 72  |r:.<DeskLib:Coor|
0001d720  64 2e 68 3d 3e 43 6f 6f  72 64 3e 0a 0a 52 65 74  |d.h=>Coord>..Ret|
0001d730  75 72 6e 73 3a 09 54 68  65 20 78 20 73 63 72 65  |urns:.The x scre|
0001d740  65 6e 20 63 6f 6f 72 64  69 6e 61 74 65 2e 0a 0a  |en coordinate...|
0001d750  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 74 61  |This function ta|
0001d760  6b 65 73 20 61 6e 20 78  20 77 6f 72 6b 20 61 72  |kes an x work ar|
0001d770  65 61 20 63 6f 6f 72 64  69 6e 61 74 65 20 61 6e  |ea coordinate an|
0001d780  64 20 61 20 70 6f 69 6e  74 65 72 20 74 6f 20 61  |d a pointer to a|
0001d790  20 63 6f 6e 76 65 72 74  5f 62 6c 6f 63 6b 20 28  | convert_block (|
0001d7a0  77 68 69 63 68 20 63 6f  6e 74 61 69 6e 73 20 74  |which contains t|
0001d7b0  68 65 20 77 69 6e 64 6f  77 20 61 6e 64 20 73 63  |he window and sc|
0001d7c0  72 6f 6c 6c 20 62 61 72  20 70 6f 73 69 74 69 6f  |roll bar positio|
0001d7d0  6e 29 20 61 6e 64 20 63  6f 6e 76 65 72 74 73 20  |n) and converts |
0001d7e0  74 68 65 20 77 6f 72 6b  20 61 72 65 61 20 63 6f  |the work area co|
0001d7f0  6f 72 64 69 6e 61 74 65  20 69 6e 74 6f 20 61 20  |ordinate into a |
0001d800  73 63 72 65 65 6e 20 63  6f 6f 72 64 69 6e 61 74  |screen coordinat|
0001d810  65 2e 00 00 44 41 54 41  5e 01 00 00 43 6f 6f 72  |e...DATA^...Coor|
0001d820  64 5f 58 54 6f 57 6f 72  6b 41 72 65 61 0a 53 79  |d_XToWorkArea.Sy|
0001d830  6e 74 61 78 3a 09 69 6e  74 20 43 6f 6f 72 64 5f  |ntax:.int Coord_|
0001d840  58 54 6f 57 6f 72 6b 41  72 65 61 20 28 69 6e 74  |XToWorkArea (int|
0001d850  20 78 2c 20 3c 63 6f 6e  76 65 72 74 5f 62 6c 6f  | x, <convert_blo|
0001d860  63 6b 3e 20 2a 62 6c 6b  29 3b 0a 48 65 61 64 65  |ck> *blk);.Heade|
0001d870  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 43 6f 6f 72  |r:.<DeskLib:Coor|
0001d880  64 2e 68 3d 3e 43 6f 6f  72 64 3e 0a 0a 52 65 74  |d.h=>Coord>..Ret|
0001d890  75 72 6e 73 3a 09 54 68  65 20 78 20 77 6f 72 6b  |urns:.The x work|
0001d8a0  20 61 72 65 61 20 63 6f  6f 72 64 69 6e 61 74 65  | area coordinate|
0001d8b0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
0001d8c0  20 74 61 6b 65 73 20 61  6e 20 78 20 73 63 72 65  | takes an x scre|
0001d8d0  65 6e 20 63 6f 6f 72 64  69 6e 61 74 65 20 61 6e  |en coordinate an|
0001d8e0  64 20 61 20 70 6f 69 6e  74 65 72 20 74 6f 20 61  |d a pointer to a|
0001d8f0  20 63 6f 6e 76 65 72 74  5f 62 6c 6f 63 6b 20 28  | convert_block (|
0001d900  77 68 69 63 68 20 63 6f  6e 74 61 69 6e 73 20 74  |which contains t|
0001d910  68 65 20 77 69 6e 64 6f  77 20 61 6e 64 20 73 63  |he window and sc|
0001d920  72 6f 6c 6c 20 62 61 72  20 70 6f 73 69 74 69 6f  |roll bar positio|
0001d930  6e 29 20 61 6e 64 20 63  6f 6e 76 65 72 74 73 20  |n) and converts |
0001d940  74 68 65 20 73 63 72 65  65 6e 20 63 6f 6f 72 64  |the screen coord|
0001d950  69 6e 61 74 65 20 69 6e  74 6f 20 61 20 77 6f 72  |inate into a wor|
0001d960  6b 20 61 72 65 61 20 63  6f 6f 72 64 69 6e 61 74  |k area coordinat|
0001d970  65 2e 00 00 44 41 54 41  5a 01 00 00 43 6f 6f 72  |e...DATAZ...Coor|
0001d980  64 5f 59 54 6f 53 63 72  65 65 6e 0a 53 79 6e 74  |d_YToScreen.Synt|
0001d990  61 78 3a 09 69 6e 74 20  43 6f 6f 72 64 5f 59 54  |ax:.int Coord_YT|
0001d9a0  6f 53 63 72 65 65 6e 20  28 69 6e 74 20 79 2c 20  |oScreen (int y, |
0001d9b0  3c 63 6f 6e 76 65 72 74  5f 62 6c 6f 63 6b 3e 20  |<convert_block> |
0001d9c0  2a 62 6c 6b 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |*blk);.Header:.<|
0001d9d0  44 65 73 6b 4c 69 62 3a  43 6f 6f 72 64 2e 68 3d  |DeskLib:Coord.h=|
0001d9e0  3e 43 6f 6f 72 64 3e 0a  0a 52 65 74 75 72 6e 73  |>Coord>..Returns|
0001d9f0  3a 09 54 68 65 20 79 20  73 63 72 65 65 6e 20 63  |:.The y screen c|
0001da00  6f 6f 72 64 69 6e 61 74  65 2e 0a 0a 54 68 69 73  |oordinate...This|
0001da10  20 66 75 6e 63 74 69 6f  6e 20 74 61 6b 65 73 20  | function takes |
0001da20  61 6e 20 79 20 77 6f 72  6b 20 61 72 65 61 20 63  |an y work area c|
0001da30  6f 6f 72 64 69 6e 61 74  65 20 61 6e 64 20 61 20  |oordinate and a |
0001da40  70 6f 69 6e 74 65 72 20  74 6f 20 61 20 63 6f 6e  |pointer to a con|
0001da50  76 65 72 74 5f 62 6c 6f  63 6b 20 28 77 68 69 63  |vert_block (whic|
0001da60  68 20 63 6f 6e 74 61 69  6e 73 20 74 68 65 20 77  |h contains the w|
0001da70  69 6e 64 6f 77 20 61 6e  64 20 73 63 72 6f 6c 6c  |indow and scroll|
0001da80  20 62 61 72 20 70 6f 73  69 74 69 6f 6e 29 20 61  | bar position) a|
0001da90  6e 64 20 63 6f 6e 76 65  72 74 73 20 74 68 65 20  |nd converts the |
0001daa0  77 6f 72 6b 20 61 72 65  61 20 63 6f 6f 72 64 69  |work area coordi|
0001dab0  6e 61 74 65 20 69 6e 74  6f 20 61 20 73 63 72 65  |nate into a scre|
0001dac0  65 6e 20 63 6f 6f 72 64  69 6e 61 74 65 2e 00 00  |en coordinate...|
0001dad0  44 41 54 41 5e 01 00 00  43 6f 6f 72 64 5f 59 54  |DATA^...Coord_YT|
0001dae0  6f 57 6f 72 6b 41 72 65  61 0a 53 79 6e 74 61 78  |oWorkArea.Syntax|
0001daf0  3a 09 69 6e 74 20 43 6f  6f 72 64 5f 59 54 6f 57  |:.int Coord_YToW|
0001db00  6f 72 6b 41 72 65 61 20  28 69 6e 74 20 79 2c 20  |orkArea (int y, |
0001db10  3c 63 6f 6e 76 65 72 74  5f 62 6c 6f 63 6b 3e 20  |<convert_block> |
0001db20  2a 62 6c 6b 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |*blk);.Header:.<|
0001db30  44 65 73 6b 4c 69 62 3a  43 6f 6f 72 64 2e 68 3d  |DeskLib:Coord.h=|
0001db40  3e 43 6f 6f 72 64 3e 0a  0a 52 65 74 75 72 6e 73  |>Coord>..Returns|
0001db50  3a 09 54 68 65 20 79 20  77 6f 72 6b 20 61 72 65  |:.The y work are|
0001db60  61 20 63 6f 6f 72 64 69  6e 61 74 65 2e 0a 0a 54  |a coordinate...T|
0001db70  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 74 61 6b  |his function tak|
0001db80  65 73 20 61 6e 20 79 20  73 63 72 65 65 6e 20 63  |es an y screen c|
0001db90  6f 6f 72 64 69 6e 61 74  65 20 61 6e 64 20 61 20  |oordinate and a |
0001dba0  70 6f 69 6e 74 65 72 20  74 6f 20 61 20 63 6f 6e  |pointer to a con|
0001dbb0  76 65 72 74 5f 62 6c 6f  63 6b 20 28 77 68 69 63  |vert_block (whic|
0001dbc0  68 20 63 6f 6e 74 61 69  6e 73 20 74 68 65 20 77  |h contains the w|
0001dbd0  69 6e 64 6f 77 20 61 6e  64 20 73 63 72 6f 6c 6c  |indow and scroll|
0001dbe0  20 62 61 72 20 70 6f 73  69 74 69 6f 6e 29 20 61  | bar position) a|
0001dbf0  6e 64 20 63 6f 6e 76 65  72 74 73 20 74 68 65 20  |nd converts the |
0001dc00  73 63 72 65 65 6e 20 63  6f 6f 72 64 69 6e 61 74  |screen coordinat|
0001dc10  65 20 69 6e 74 6f 20 61  20 77 6f 72 6b 20 61 72  |e into a work ar|
0001dc20  65 61 20 63 6f 6f 72 64  69 6e 61 74 65 2e 00 00  |ea coordinate...|
0001dc30  44 41 54 41 4c 02 00 00  43 6f 6f 72 64 5f 52 65  |DATAL...Coord_Re|
0001dc40  63 74 73 49 6e 74 65 72  73 65 63 74 0a 53 79 6e  |ctsIntersect.Syn|
0001dc50  74 61 78 3a 09 3c 42 4f  4f 4c 3e 20 43 6f 6f 72  |tax:.<BOOL> Coor|
0001dc60  64 5f 52 65 63 74 73 49  6e 74 65 72 73 65 63 74  |d_RectsIntersect|
0001dc70  20 28 3c 77 69 6d 70 5f  72 65 63 74 3e 20 2a 61  | (<wimp_rect> *a|
0001dc80  2c 20 77 69 6d 70 5f 72  65 63 74 20 2a 62 29 3b  |, wimp_rect *b);|
0001dc90  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
0001dca0  62 3a 43 6f 6f 72 64 2e  68 3d 3e 43 6f 6f 72 64  |b:Coord.h=>Coord|
0001dcb0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 3c 54 52 55  |>..Returns:.<TRU|
0001dcc0  45 3e 20 6f 72 20 3c 46  41 4c 53 45 3e 2e 0a 0a  |E> or <FALSE>...|
0001dcd0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 63 68  |This function ch|
0001dce0  65 63 6b 73 20 74 6f 20  73 65 65 20 69 66 20 61  |ecks to see if a|
0001dcf0  6e 79 20 70 61 72 74 20  6f 66 20 74 68 65 20 74  |ny part of the t|
0001dd00  77 6f 20 72 65 63 74 61  6e 67 6c 65 73 20 70 6f  |wo rectangles po|
0001dd10  69 6e 74 65 64 20 74 6f  20 62 79 20 2f 61 2f 20  |inted to by /a/ |
0001dd20  61 6e 64 20 2f 62 2f 20  6f 76 65 72 6c 61 70 2e  |and /b/ overlap.|
0001dd30  20 48 6f 77 65 76 65 72  2c 20 69 66 20 6f 6e 65  | However, if one|
0001dd40  20 72 65 63 74 61 6e 67  6c 65 20 69 73 20 63 6f  | rectangle is co|
0001dd50  6e 74 61 69 6e 65 64 20  77 68 6f 6c 6c 79 20 77  |ntained wholly w|
0001dd60  69 74 68 69 6e 20 74 68  65 20 6f 74 68 65 72 20  |ithin the other |
0001dd70  74 68 65 6e 20 74 68 65  20 66 75 6e 63 74 69 6f  |then the functio|
0001dd80  6e 20 72 65 74 75 72 6e  73 20 46 41 4c 53 45 2e  |n returns FALSE.|
0001dd90  20 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 69  | This function i|
0001dda0  73 20 61 63 74 75 61 6c  6c 79 20 69 6d 70 6c 65  |s actually imple|
0001ddb0  6d 65 6e 74 65 64 20 61  73 20 74 68 65 20 66 6f  |mented as the fo|
0001ddc0  6c 6c 6f 77 69 6e 67 20  6d 61 63 72 6f 3a 0a 0a  |llowing macro:..|
0001ddd0  7b 66 43 6f 64 65 7d 3c  23 64 65 66 69 6e 65 3d  |{fCode}<#define=|
0001dde0  3e 64 65 66 69 6e 65 3e  20 43 6f 6f 72 64 5f 52  |>define> Coord_R|
0001ddf0  65 63 74 73 49 6e 74 65  72 73 65 63 74 28 72 31  |ectsIntersect(r1|
0001de00  2c 72 32 29 0a 20 20 20  20 20 20 20 20 28 3c 43  |,r2).        (<C|
0001de10  6f 6f 72 64 5f 52 65 63  74 73 4f 76 65 72 6c 61  |oord_RectsOverla|
0001de20  70 3e 28 72 31 2c 72 32  29 20 26 26 0a 20 20 20  |p>(r1,r2) &&.   |
0001de30  20 20 20 20 20 20 21 3c  43 6f 6f 72 64 5f 52 65  |      !<Coord_Re|
0001de40  63 74 43 6f 6e 74 61 69  6e 65 64 3e 28 72 31 2c  |ctContained>(r1,|
0001de50  72 32 29 20 26 26 0a 20  20 20 20 20 20 20 20 20  |r2) &&.         |
0001de60  21 43 6f 6f 72 64 5f 52  65 63 74 43 6f 6e 74 61  |!Coord_RectConta|
0001de70  69 6e 65 64 28 72 32 2c  72 31 29 29 44 41 54 41  |ined(r2,r1))DATA|
0001de80  f9 00 00 00 43 6f 6f 72  64 5f 52 65 63 74 54 6f  |....Coord_RectTo|
0001de90  57 6f 72 6b 41 72 65 61  0a 53 79 6e 74 61 78 3a  |WorkArea.Syntax:|
0001dea0  09 76 6f 69 64 20 43 6f  6f 72 64 5f 52 65 63 74  |.void Coord_Rect|
0001deb0  54 6f 57 6f 72 6b 41 72  65 61 20 28 3c 77 69 6d  |ToWorkArea (<wim|
0001dec0  70 5f 72 65 63 74 3e 20  2a 70 2c 20 3c 63 6f 6e  |p_rect> *p, <con|
0001ded0  76 65 72 74 5f 62 6c 6f  63 6b 3e 20 2a 62 6c 6b  |vert_block> *blk|
0001dee0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
0001def0  4c 69 62 3a 43 6f 6f 72  64 2e 68 3d 3e 43 6f 6f  |Lib:Coord.h=>Coo|
0001df00  72 64 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |rd>..This functi|
0001df10  6f 6e 20 63 6f 6e 76 65  72 74 73 20 74 68 65 20  |on converts the |
0001df20  72 65 63 74 61 6e 67 6c  65 20 69 6e 20 73 63 72  |rectangle in scr|
0001df30  65 65 6e 20 63 6f 6f 72  64 69 6e 61 74 65 73 20  |een coordinates |
0001df40  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 2f 70  |pointed to by /p|
0001df50  2f 2c 20 69 6e 74 6f 20  6f 6e 65 20 69 6e 20 77  |/, into one in w|
0001df60  6f 72 6b 20 61 72 65 61  20 63 6f 6f 72 64 69 6e  |ork area coordin|
0001df70  61 74 65 73 2e 00 00 00  44 41 54 41 f8 00 00 00  |ates....DATA....|
0001df80  43 6f 6f 72 64 5f 50 6f  69 6e 74 54 6f 57 6f 72  |Coord_PointToWor|
0001df90  6b 41 72 65 61 0a 53 79  6e 74 61 78 3a 09 76 6f  |kArea.Syntax:.vo|
0001dfa0  69 64 20 43 6f 6f 72 64  5f 50 6f 69 6e 74 54 6f  |id Coord_PointTo|
0001dfb0  57 6f 72 6b 41 72 65 61  20 28 3c 77 69 6d 70 5f  |WorkArea (<wimp_|
0001dfc0  70 6f 69 6e 74 3e 20 2a  70 2c 20 3c 63 6f 6e 76  |point> *p, <conv|
0001dfd0  65 72 74 5f 62 6c 6f 63  6b 3e 20 2a 62 6c 6b 29  |ert_block> *blk)|
0001dfe0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
0001dff0  69 62 3a 43 6f 6f 72 64  2e 68 3d 3e 43 6f 6f 72  |ib:Coord.h=>Coor|
0001e000  64 3e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |d>..This functio|
0001e010  6e 20 63 6f 6e 76 65 72  74 73 20 74 68 65 20 70  |n converts the p|
0001e020  6f 69 6e 74 20 69 6e 20  73 63 72 65 65 6e 20 63  |oint in screen c|
0001e030  6f 6f 72 64 69 6e 61 74  65 73 20 70 6f 69 6e 74  |oordinates point|
0001e040  65 64 20 74 6f 20 62 79  20 2f 70 2f 2c 20 69 6e  |ed to by /p/, in|
0001e050  74 6f 20 6f 6e 65 20 69  6e 20 77 6f 72 6b 20 61  |to one in work a|
0001e060  72 65 61 20 63 6f 6f 72  64 69 6e 61 74 65 73 2e  |rea coordinates.|
0001e070  44 41 54 41 db 01 00 00  63 6f 6f 72 64 73 2e 68  |DATA....coords.h|
0001e080  0a 54 68 69 73 20 68 65  61 64 65 72 20 63 6f 6e  |.This header con|
0001e090  74 61 69 6e 73 20 66 75  6e 63 74 69 6f 6e 73 20  |tains functions |
0001e0a0  61 6e 64 20 74 79 70 65  73 20 66 6f 72 20 68 61  |and types for ha|
0001e0b0  6e 64 6c 69 6e 67 20 77  69 6e 64 6f 77 20 63 6f  |ndling window co|
0001e0c0  6f 72 64 69 6e 61 74 65  73 2e 0a 0a 46 75 6e 63  |ordinates...Func|
0001e0d0  74 69 6f 6e 73 3a 0a 0a  23 49 6e 64 65 6e 74 20  |tions:..#Indent |
0001e0e0  33 3b 54 61 62 6c 65 20  36 0a 3c 63 6f 6f 72 64  |3;Table 6.<coord|
0001e0f0  73 5f 78 5f 74 6f 73 63  72 65 65 6e 3e 0a 3c 63  |s_x_toscreen>.<c|
0001e100  6f 6f 72 64 73 5f 79 5f  74 6f 73 63 72 65 65 6e  |oords_y_toscreen|
0001e110  3e 0a 3c 63 6f 6f 72 64  73 5f 78 5f 74 6f 77 6f  |>.<coords_x_towo|
0001e120  72 6b 61 72 65 61 3e 0a  3c 63 6f 6f 72 64 73 5f  |rkarea>.<coords_|
0001e130  79 5f 74 6f 77 6f 72 6b  61 72 65 61 3e 0a 3c 63  |y_toworkarea>.<c|
0001e140  6f 6f 72 64 73 5f 62 6f  78 5f 74 6f 73 63 72 65  |oords_box_toscre|
0001e150  65 6e 3e 0a 3c 63 6f 6f  72 64 73 5f 62 6f 78 5f  |en>.<coords_box_|
0001e160  74 6f 77 6f 72 6b 61 72  65 61 3e 0a 3c 63 6f 6f  |toworkarea>.<coo|
0001e170  72 64 73 5f 70 6f 69 6e  74 5f 74 6f 73 63 72 65  |rds_point_toscre|
0001e180  65 6e 3e 0a 3c 63 6f 6f  72 64 73 5f 70 6f 69 6e  |en>.<coords_poin|
0001e190  74 5f 74 6f 77 6f 72 6b  61 72 65 61 3e 0a 3c 63  |t_toworkarea>.<c|
0001e1a0  6f 6f 72 64 73 5f 77 69  74 68 69 6e 62 6f 78 3e  |oords_withinbox>|
0001e1b0  0a 3c 63 6f 6f 72 64 73  5f 6f 66 66 73 65 74 62  |.<coords_offsetb|
0001e1c0  6f 78 3e 0a 3c 63 6f 6f  72 64 73 5f 69 6e 74 65  |ox>.<coords_inte|
0001e1d0  72 73 65 63 74 73 3e 0a  3c 63 6f 6f 72 64 73 5f  |rsects>.<coords_|
0001e1e0  62 6f 78 65 73 6f 76 65  72 6c 61 70 3e 0a 23 45  |boxesoverlap>.#E|
0001e1f0  6e 64 54 61 62 6c 65 3b  49 6e 64 65 6e 74 20 30  |ndTable;Indent 0|
0001e200  0a 0a 54 79 70 65 73 3a  0a 0a 23 49 6e 64 65 6e  |..Types:..#Inden|
0001e210  74 20 31 33 3b 54 61 62  6c 65 20 31 20 32 34 0a  |t 13;Table 1 24.|
0001e220  3c 63 6f 6f 72 64 73 5f  63 76 74 73 74 72 3e 0a  |<coords_cvtstr>.|
0001e230  3c 63 6f 6f 72 64 73 5f  70 6f 69 6e 74 73 74 72  |<coords_pointstr|
0001e240  3e 0a 23 45 6e 64 54 61  62 6c 65 00 44 49 52 24  |>.#EndTable.DIR$|
0001e250  20 02 00 00 20 02 00 00  6c e4 01 00 46 ff ff ff  | ... ...l...F...|
0001e260  dd 4c 1d 23 ee 00 00 00  13 00 00 00 00 00 00 00  |.L.#............|
0001e270  62 6f 78 5f 74 6f 73 63  72 65 65 6e 00 00 00 00  |box_toscreen....|
0001e280  5c e5 01 00 46 ff ff ff  9d 54 1d 23 f2 00 00 00  |\...F....T.#....|
0001e290  13 00 00 00 00 00 00 00  62 6f 78 5f 74 6f 77 6f  |........box_towo|
0001e2a0  72 6b 61 72 65 61 00 00  50 e6 01 00 46 ff ff ff  |rkarea..P...F...|
0001e2b0  61 9d 1d 23 f6 00 00 00  13 00 00 00 00 00 00 00  |a..#............|
0001e2c0  62 6f 78 65 73 6f 76 65  72 6c 61 70 00 00 00 00  |boxesoverlap....|
0001e2d0  48 e7 01 00 46 ff ff ff  46 a3 1d 23 d5 00 00 00  |H...F...F..#....|
0001e2e0  13 00 00 00 00 00 00 00  63 76 74 73 74 72 00 00  |........cvtstr..|
0001e2f0  20 e8 01 00 46 ff ff ff  68 95 1d 23 0f 01 00 00  | ...F...h..#....|
0001e300  13 00 00 00 00 00 00 00  69 6e 74 65 72 73 65 63  |........intersec|
0001e310  74 73 00 00 30 e9 01 00  46 ff ff ff d0 80 1d 23  |ts..0...F......#|
0001e320  3b 01 00 00 13 00 00 00  00 00 00 00 6f 66 66 73  |;...........offs|
0001e330  65 74 62 6f 78 00 00 00  6c ea 01 00 46 ff ff ff  |etbox...l...F...|
0001e340  ea 5e 1d 23 f5 00 00 00  13 00 00 00 00 00 00 00  |.^.#............|
0001e350  70 6f 69 6e 74 5f 74 6f  73 63 72 65 65 6e 00 00  |point_toscreen..|
0001e360  64 eb 01 00 46 ff ff ff  57 66 1d 23 f9 00 00 00  |d...F...Wf.#....|
0001e370  13 00 00 00 00 00 00 00  70 6f 69 6e 74 5f 74 6f  |........point_to|
0001e380  77 6f 72 6b 61 72 65 61  00 00 00 00 60 ec 01 00  |workarea....`...|
0001e390  46 ff ff ff ce a8 1d 23  8d 00 00 00 13 00 00 00  |F......#........|
0001e3a0  00 00 00 00 70 6f 69 6e  74 73 74 72 00 00 00 00  |....pointstr....|
0001e3b0  f0 ec 01 00 46 ff ff ff  88 6e 1d 23 01 01 00 00  |....F....n.#....|
0001e3c0  13 00 00 00 00 00 00 00  77 69 74 68 69 6e 62 6f  |........withinbo|
0001e3d0  78 00 00 00 f4 ed 01 00  46 ff ff ff 82 2d 1d 23  |x.......F....-.#|
0001e3e0  5c 01 00 00 13 00 00 00  00 00 00 00 78 5f 74 6f  |\...........x_to|
0001e3f0  73 63 72 65 65 6e 00 00  50 ef 01 00 46 ff ff ff  |screen..P...F...|
0001e400  b8 3d 1d 23 60 01 00 00  13 00 00 00 00 00 00 00  |.=.#`...........|
0001e410  78 5f 74 6f 77 6f 72 6b  61 72 65 61 00 00 00 00  |x_toworkarea....|
0001e420  b0 f0 01 00 46 ff ff ff  93 36 1d 23 5c 01 00 00  |....F....6.#\...|
0001e430  13 00 00 00 00 00 00 00  79 5f 74 6f 73 63 72 65  |........y_toscre|
0001e440  65 6e 00 00 0c f2 01 00  46 ff ff ff 48 45 1d 23  |en......F...HE.#|
0001e450  60 01 00 00 13 00 00 00  00 00 00 00 79 5f 74 6f  |`...........y_to|
0001e460  77 6f 72 6b 61 72 65 61  00 00 00 00 44 41 54 41  |workarea....DATA|
0001e470  ee 00 00 00 63 6f 6f 72  64 73 5f 62 6f 78 5f 74  |....coords_box_t|
0001e480  6f 73 63 72 65 65 6e 0a  53 79 6e 74 61 78 3a 09  |oscreen.Syntax:.|
0001e490  76 6f 69 64 20 63 6f 6f  72 64 73 5f 62 6f 78 5f  |void coords_box_|
0001e4a0  74 6f 73 63 72 65 65 6e  20 28 3c 77 69 6d 70 5f  |toscreen (<wimp_|
0001e4b0  62 6f 78 3e 20 2a 62 2c  20 3c 63 6f 6f 72 64 73  |box> *b, <coords|
0001e4c0  5f 63 76 74 73 74 72 3e  20 2a 72 29 3b 0a 48 65  |_cvtstr> *r);.He|
0001e4d0  61 64 65 72 3a 09 3c 63  6f 6f 72 64 73 2e 68 3d  |ader:.<coords.h=|
0001e4e0  3e 63 6f 6f 72 64 73 3e  0a 0a 54 68 69 73 20 66  |>coords>..This f|
0001e4f0  75 6e 63 74 69 6f 6e 20  63 6f 6e 76 65 72 74 73  |unction converts|
0001e500  20 74 68 65 20 72 65 63  74 61 6e 67 6c 65 20 69  | the rectangle i|
0001e510  6e 20 77 6f 72 6b 20 61  72 65 61 20 63 6f 6f 72  |n work area coor|
0001e520  64 69 6e 61 74 65 73 20  70 6f 69 6e 74 65 64 20  |dinates pointed |
0001e530  74 6f 20 62 79 20 2f 62  2f 2c 20 69 6e 74 6f 20  |to by /b/, into |
0001e540  6f 6e 65 20 69 6e 20 73  63 72 65 65 6e 20 63 6f  |one in screen co|
0001e550  6f 72 64 69 6e 61 74 65  73 2e 00 00 44 41 54 41  |ordinates...DATA|
0001e560  f2 00 00 00 63 6f 6f 72  64 73 5f 62 6f 78 5f 74  |....coords_box_t|
0001e570  6f 77 6f 72 6b 61 72 65  61 0a 53 79 6e 74 61 78  |oworkarea.Syntax|
0001e580  3a 09 76 6f 69 64 20 63  6f 6f 72 64 73 5f 62 6f  |:.void coords_bo|
0001e590  78 5f 74 6f 77 6f 72 6b  61 72 65 61 20 28 3c 77  |x_toworkarea (<w|
0001e5a0  69 6d 70 5f 62 6f 78 3e  20 2a 62 2c 20 3c 63 6f  |imp_box> *b, <co|
0001e5b0  6f 72 64 73 5f 63 76 74  73 74 72 3e 20 2a 72 29  |ords_cvtstr> *r)|
0001e5c0  3b 0a 48 65 61 64 65 72  3a 09 3c 63 6f 6f 72 64  |;.Header:.<coord|
0001e5d0  73 2e 68 3d 3e 63 6f 6f  72 64 73 3e 0a 0a 54 68  |s.h=>coords>..Th|
0001e5e0  69 73 20 66 75 6e 63 74  69 6f 6e 20 63 6f 6e 76  |is function conv|
0001e5f0  65 72 74 73 20 74 68 65  20 72 65 63 74 61 6e 67  |erts the rectang|
0001e600  6c 65 20 69 6e 20 73 63  72 65 65 6e 20 63 6f 6f  |le in screen coo|
0001e610  72 64 69 6e 61 74 65 73  20 70 6f 69 6e 74 65 64  |rdinates pointed|
0001e620  20 74 6f 20 62 79 20 2f  62 2f 2c 20 69 6e 74 6f  | to by /b/, into|
0001e630  20 6f 6e 65 20 69 6e 20  77 6f 72 6b 20 61 72 65  | one in work are|
0001e640  61 20 63 6f 6f 72 64 69  6e 61 74 65 73 2e 00 00  |a coordinates...|
0001e650  44 41 54 41 f6 00 00 00  63 6f 6f 72 64 73 5f 62  |DATA....coords_b|
0001e660  6f 78 65 73 6f 76 65 72  6c 61 70 0a 53 79 6e 74  |oxesoverlap.Synt|
0001e670  61 78 3a 09 3c 42 4f 4f  4c 3e 20 63 6f 6f 72 64  |ax:.<BOOL> coord|
0001e680  73 5f 62 6f 78 65 73 6f  76 65 72 6c 61 70 20 28  |s_boxesoverlap (|
0001e690  3c 77 69 6d 70 5f 62 6f  78 3e 20 2a 61 2c 20 77  |<wimp_box> *a, w|
0001e6a0  69 6d 70 5f 62 6f 78 20  2a 62 29 3b 0a 48 65 61  |imp_box *b);.Hea|
0001e6b0  64 65 72 3a 09 3c 63 6f  6f 72 64 73 2e 68 3d 3e  |der:.<coords.h=>|
0001e6c0  63 6f 6f 72 64 73 3e 0a  0a 52 65 74 75 72 6e 73  |coords>..Returns|
0001e6d0  3a 09 3c 54 52 55 45 3e  20 6f 72 20 3c 46 41 4c  |:.<TRUE> or <FAL|
0001e6e0  53 45 3e 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |SE>...This funct|
0001e6f0  69 6f 6e 20 63 68 65 63  6b 73 20 74 6f 20 73 65  |ion checks to se|
0001e700  65 20 69 66 20 61 6e 79  20 70 61 72 74 20 6f 66  |e if any part of|
0001e710  20 74 68 65 20 74 77 6f  20 72 65 63 74 61 6e 67  | the two rectang|
0001e720  6c 65 73 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |les pointed to b|
0001e730  79 20 2f 61 2f 20 61 6e  64 20 2f 62 2f 20 6f 76  |y /a/ and /b/ ov|
0001e740  65 72 6c 61 70 2e 00 00  44 41 54 41 d5 00 00 00  |erlap...DATA....|
0001e750  63 6f 6f 72 64 73 5f 63  76 74 73 74 72 0a 54 68  |coords_cvtstr.Th|
0001e760  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
0001e770  65 64 20 69 6e 20 3c 63  6f 6f 72 64 73 2e 68 3d  |ed in <coords.h=|
0001e780  3e 63 6f 6f 72 64 73 3e  20 61 73 20 61 6e 20 6f  |>coords> as an o|
0001e790  62 6a 65 63 74 20 63 61  70 61 62 6c 65 20 6f 66  |bject capable of|
0001e7a0  20 68 6f 6c 64 69 6e 67  20 69 6e 66 6f 72 6d 61  | holding informa|
0001e7b0  74 69 6f 6e 20 61 62 6f  75 74 20 74 68 65 20 70  |tion about the p|
0001e7c0  6f 73 69 74 69 6f 6e 20  6f 66 20 61 20 77 69 6e  |osition of a win|
0001e7d0  64 6f 77 20 61 6e 64 20  69 74 73 20 73 63 72 6f  |dow and its scro|
0001e7e0  6c 6c 20 62 61 72 73 2e  0a 0a 20 20 5c 7b 0a 20  |ll bars...  \{. |
0001e7f0  20 20 20 3c 77 69 6d 70  5f 62 6f 78 3e 20 62 6f  |   <wimp_box> bo|
0001e800  78 3b 0a 20 20 20 20 69  6e 74 20 20 20 20 20 20  |x;.    int      |
0001e810  73 63 78 2c 20 73 63 79  3b 0a 20 20 7d 00 00 00  |scx, scy;.  }...|
0001e820  44 41 54 41 0f 01 00 00  63 6f 6f 72 64 73 5f 69  |DATA....coords_i|
0001e830  6e 74 65 72 73 65 63 74  73 0a 53 79 6e 74 61 78  |ntersects.Syntax|
0001e840  3a 09 3c 42 4f 4f 4c 3e  20 63 6f 6f 72 64 73 5f  |:.<BOOL> coords_|
0001e850  69 6e 74 65 72 73 65 63  74 73 20 28 3c 77 69 6d  |intersects (<wim|
0001e860  70 5f 62 6f 78 3e 20 2a  6c 2c 20 77 69 6d 70 5f  |p_box> *l, wimp_|
0001e870  62 6f 78 20 2a 62 2c 20  69 6e 74 20 77 69 64 74  |box *b, int widt|
0001e880  68 29 3b 0a 48 65 61 64  65 72 3a 09 3c 63 6f 6f  |h);.Header:.<coo|
0001e890  72 64 73 2e 68 3d 3e 63  6f 6f 72 64 73 3e 0a 0a  |rds.h=>coords>..|
0001e8a0  52 65 74 75 72 6e 73 3a  09 3c 54 52 55 45 3e 20  |Returns:.<TRUE> |
0001e8b0  6f 72 20 3c 46 41 4c 53  45 3e 2e 0a 0a 54 68 69  |or <FALSE>...Thi|
0001e8c0  73 20 66 75 6e 63 74 69  6f 6e 20 63 68 65 63 6b  |s function check|
0001e8d0  73 20 74 6f 20 73 65 65  20 69 66 20 74 68 65 20  |s to see if the |
0001e8e0  6c 69 6e 65 20 64 65 66  69 6e 65 64 20 62 79 20  |line defined by |
0001e8f0  2f 6c 2f 20 28 77 69 74  68 20 77 69 64 74 68 20  |/l/ (with width |
0001e900  7b 2f 7d 77 69 64 74 68  7b 2f 7d 29 20 69 6e 74  |{/}width{/}) int|
0001e910  65 72 73 65 63 74 73 20  74 68 65 20 62 6f 78 20  |ersects the box |
0001e920  64 65 66 69 6e 65 64 20  62 79 20 2f 62 2f 2e 00  |defined by /b/..|
0001e930  44 41 54 41 3b 01 00 00  63 6f 6f 72 64 73 5f 6f  |DATA;...coords_o|
0001e940  66 66 73 65 74 62 6f 78  0a 53 79 6e 74 61 78 3a  |ffsetbox.Syntax:|
0001e950  09 76 6f 69 64 20 63 6f  6f 72 64 73 5f 6f 66 66  |.void coords_off|
0001e960  73 65 74 62 6f 78 20 28  3c 77 69 6d 70 5f 62 6f  |setbox (<wimp_bo|
0001e970  78 3e 20 2a 73 72 63 2c  20 69 6e 74 20 64 78 2c  |x> *src, int dx,|
0001e980  20 69 6e 74 20 64 79 2c  20 3c 77 69 6d 70 5f 62  | int dy, <wimp_b|
0001e990  6f 78 3e 20 2a 72 65 73  75 6c 74 29 3b 0a 48 65  |ox> *result);.He|
0001e9a0  61 64 65 72 3a 09 3c 63  6f 6f 72 64 73 2e 68 3d  |ader:.<coords.h=|
0001e9b0  3e 63 6f 6f 72 64 73 3e  0a 0a 54 68 69 73 20 66  |>coords>..This f|
0001e9c0  75 6e 63 74 69 6f 6e 20  61 64 64 73 20 2f 64 78  |unction adds /dx|
0001e9d0  2f 20 74 6f 20 61 6c 6c  20 78 20 63 6f 6f 72 64  |/ to all x coord|
0001e9e0  69 6e 61 74 65 73 20 69  6e 20 74 68 65 20 62 6f  |inates in the bo|
0001e9f0  78 20 2f 73 72 63 2f 20  61 6e 64 20 2f 64 79 2f  |x /src/ and /dy/|
0001ea00  20 74 6f 20 61 6c 6c 20  79 20 63 6f 6f 72 64 69  | to all y coordi|
0001ea10  6e 61 74 65 73 2c 20 61  6e 64 20 70 6c 61 63 65  |nates, and place|
0001ea20  73 20 74 68 65 20 72 65  73 75 6c 74 20 69 6e 20  |s the result in |
0001ea30  2f 72 65 73 75 6c 74 2f  2e 0a 0a 2f 73 6f 75 72  |/result/.../sour|
0001ea40  63 65 2f 20 61 6e 64 20  2f 72 65 73 75 6c 74 2f  |ce/ and /result/|
0001ea50  20 6d 61 79 20 62 65 20  74 68 65 20 73 61 6d 65  | may be the same|
0001ea60  20 73 74 72 75 63 74 75  72 65 2e 00 44 41 54 41  | structure..DATA|
0001ea70  f5 00 00 00 63 6f 6f 72  64 73 5f 70 6f 69 6e 74  |....coords_point|
0001ea80  5f 74 6f 73 63 72 65 65  6e 0a 53 79 6e 74 61 78  |_toscreen.Syntax|
0001ea90  3a 09 76 6f 69 64 20 63  6f 6f 72 64 73 5f 70 6f  |:.void coords_po|
0001eaa0  69 6e 74 5f 74 6f 73 63  72 65 65 6e 20 28 3c 63  |int_toscreen (<c|
0001eab0  6f 6f 72 64 73 5f 70 6f  69 6e 74 73 74 72 3e 20  |oords_pointstr> |
0001eac0  2a 70 2c 20 3c 63 6f 6f  72 64 73 5f 63 76 74 73  |*p, <coords_cvts|
0001ead0  74 72 3e 20 2a 72 29 3b  0a 48 65 61 64 65 72 3a  |tr> *r);.Header:|
0001eae0  09 3c 63 6f 6f 72 64 73  2e 68 3d 3e 63 6f 6f 72  |.<coords.h=>coor|
0001eaf0  64 73 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ds>..This functi|
0001eb00  6f 6e 20 63 6f 6e 76 65  72 74 73 20 74 68 65 20  |on converts the |
0001eb10  70 6f 69 6e 74 20 69 6e  20 77 6f 72 6b 20 61 72  |point in work ar|
0001eb20  65 61 20 63 6f 6f 72 64  69 6e 61 74 65 73 20 70  |ea coordinates p|
0001eb30  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 2f 70 2f  |ointed to by /p/|
0001eb40  2c 20 69 6e 74 6f 20 6f  6e 65 20 69 6e 20 73 63  |, into one in sc|
0001eb50  72 65 65 6e 20 63 6f 6f  72 64 69 6e 61 74 65 73  |reen coordinates|
0001eb60  2e 00 00 00 44 41 54 41  f9 00 00 00 63 6f 6f 72  |....DATA....coor|
0001eb70  64 73 5f 70 6f 69 6e 74  5f 74 6f 77 6f 72 6b 61  |ds_point_toworka|
0001eb80  72 65 61 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |rea.Syntax:.void|
0001eb90  20 63 6f 6f 72 64 73 5f  70 6f 69 6e 74 5f 74 6f  | coords_point_to|
0001eba0  77 6f 72 6b 61 72 65 61  20 28 3c 63 6f 6f 72 64  |workarea (<coord|
0001ebb0  73 5f 70 6f 69 6e 74 73  74 72 3e 20 2a 70 2c 20  |s_pointstr> *p, |
0001ebc0  3c 63 6f 6f 72 64 73 5f  63 76 74 73 74 72 3e 20  |<coords_cvtstr> |
0001ebd0  2a 72 29 3b 0a 48 65 61  64 65 72 3a 09 3c 63 6f  |*r);.Header:.<co|
0001ebe0  6f 72 64 73 2e 68 3d 3e  63 6f 6f 72 64 73 3e 0a  |ords.h=>coords>.|
0001ebf0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
0001ec00  6f 6e 76 65 72 74 73 20  74 68 65 20 70 6f 69 6e  |onverts the poin|
0001ec10  74 20 69 6e 20 73 63 72  65 65 6e 20 63 6f 6f 72  |t in screen coor|
0001ec20  64 69 6e 61 74 65 73 20  70 6f 69 6e 74 65 64 20  |dinates pointed |
0001ec30  74 6f 20 62 79 20 2f 70  2f 2c 20 69 6e 74 6f 20  |to by /p/, into |
0001ec40  6f 6e 65 20 69 6e 20 77  6f 72 6b 20 61 72 65 61  |one in work area|
0001ec50  20 63 6f 6f 72 64 69 6e  61 74 65 73 2e 00 00 00  | coordinates....|
0001ec60  44 41 54 41 8d 00 00 00  63 6f 6f 72 64 73 5f 70  |DATA....coords_p|
0001ec70  6f 69 6e 74 73 74 72 0a  54 68 69 73 20 74 79 70  |ointstr.This typ|
0001ec80  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
0001ec90  3c 63 6f 6f 72 64 73 2e  68 3d 3e 63 6f 6f 72 64  |<coords.h=>coord|
0001eca0  73 3e 20 61 73 20 61 6e  20 6f 62 6a 65 63 74 20  |s> as an object |
0001ecb0  63 61 70 61 62 6c 65 20  6f 66 20 68 6f 6c 64 69  |capable of holdi|
0001ecc0  6e 67 20 61 20 63 6f 6f  72 64 69 6e 61 74 65 20  |ng a coordinate |
0001ecd0  70 61 69 72 2e 0a 0a 20  20 5c 7b 0a 20 20 20 20  |pair...  \{.    |
0001ece0  69 6e 74 20 78 2c 20 79  3b 0a 20 20 7d 00 00 00  |int x, y;.  }...|
0001ecf0  44 41 54 41 01 01 00 00  63 6f 6f 72 64 73 5f 77  |DATA....coords_w|
0001ed00  69 74 68 69 6e 62 6f 78  0a 53 79 6e 74 61 78 3a  |ithinbox.Syntax:|
0001ed10  09 3c 42 4f 4f 4c 3e 20  63 6f 6f 72 64 73 5f 77  |.<BOOL> coords_w|
0001ed20  69 74 68 69 6e 62 6f 78  20 28 3c 63 6f 6f 72 64  |ithinbox (<coord|
0001ed30  73 5f 70 6f 69 6e 74 73  74 72 3e 20 2a 70 2c 20  |s_pointstr> *p, |
0001ed40  3c 77 69 6d 70 5f 62 6f  78 3e 20 2a 62 6f 78 29  |<wimp_box> *box)|
0001ed50  3b 0a 48 65 61 64 65 72  3a 09 3c 63 6f 6f 72 64  |;.Header:.<coord|
0001ed60  73 2e 68 3d 3e 63 6f 6f  72 64 73 3e 0a 0a 52 65  |s.h=>coords>..Re|
0001ed70  74 75 72 6e 73 3a 09 3c  54 52 55 45 3e 20 6f 72  |turns:.<TRUE> or|
0001ed80  20 3c 46 41 4c 53 45 3e  2e 0a 0a 54 68 69 73 20  | <FALSE>...This |
0001ed90  66 75 6e 63 74 69 6f 6e  20 74 65 73 74 73 20 77  |function tests w|
0001eda0  68 65 74 68 65 72 20 74  68 65 20 70 6f 69 6e 74  |hether the point|
0001edb0  20 70 6f 69 6e 74 65 64  20 74 6f 20 62 79 20 2f  | pointed to by /|
0001edc0  70 2f 20 6c 69 65 73 20  77 69 74 68 69 6e 20 74  |p/ lies within t|
0001edd0  68 65 20 72 65 63 74 61  6e 67 6c 65 20 70 6f 69  |he rectangle poi|
0001ede0  6e 74 65 64 20 74 6f 20  62 79 20 2f 62 6f 78 2f  |nted to by /box/|
0001edf0  2e 00 00 00 44 41 54 41  5c 01 00 00 63 6f 6f 72  |....DATA\...coor|
0001ee00  64 73 5f 78 5f 74 6f 73  63 72 65 65 6e 0a 53 79  |ds_x_toscreen.Sy|
0001ee10  6e 74 61 78 3a 09 69 6e  74 20 63 6f 6f 72 64 73  |ntax:.int coords|
0001ee20  5f 78 5f 74 6f 73 63 72  65 65 6e 20 28 69 6e 74  |_x_toscreen (int|
0001ee30  20 78 2c 20 3c 63 6f 6f  72 64 73 5f 63 76 74 73  | x, <coords_cvts|
0001ee40  74 72 3e 20 2a 72 29 3b  0a 48 65 61 64 65 72 3a  |tr> *r);.Header:|
0001ee50  09 3c 63 6f 6f 72 64 73  2e 68 3d 3e 63 6f 6f 72  |.<coords.h=>coor|
0001ee60  64 73 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 54 68  |ds>..Returns:.Th|
0001ee70  65 20 78 20 73 63 72 65  65 6e 20 63 6f 6f 72 64  |e x screen coord|
0001ee80  69 6e 61 74 65 2e 0a 0a  54 68 69 73 20 66 75 6e  |inate...This fun|
0001ee90  63 74 69 6f 6e 20 74 61  6b 65 73 20 61 6e 20 78  |ction takes an x|
0001eea0  20 77 6f 72 6b 20 61 72  65 61 20 63 6f 6f 72 64  | work area coord|
0001eeb0  69 6e 61 74 65 20 61 6e  64 20 61 20 70 6f 69 6e  |inate and a poin|
0001eec0  74 65 72 20 74 6f 20 61  20 7b 2f 7d 63 6f 6f 72  |ter to a {/}coor|
0001eed0  64 73 5f 63 76 74 73 74  72 7b 2f 7d 20 28 77 68  |ds_cvtstr{/} (wh|
0001eee0  69 63 68 20 63 6f 6e 74  61 69 6e 73 20 74 68 65  |ich contains the|
0001eef0  20 77 69 6e 64 6f 77 20  61 6e 64 20 73 63 72 6f  | window and scro|
0001ef00  6c 6c 20 62 61 72 20 70  6f 73 69 74 69 6f 6e 29  |ll bar position)|
0001ef10  20 61 6e 64 20 63 6f 6e  76 65 72 74 73 20 74 68  | and converts th|
0001ef20  65 20 77 6f 72 6b 20 61  72 65 61 20 63 6f 6f 72  |e work area coor|
0001ef30  64 69 6e 61 74 65 20 69  6e 74 6f 20 61 20 73 63  |dinate into a sc|
0001ef40  72 65 65 6e 20 63 6f 6f  72 64 69 6e 61 74 65 2e  |reen coordinate.|
0001ef50  44 41 54 41 60 01 00 00  63 6f 6f 72 64 73 5f 78  |DATA`...coords_x|
0001ef60  5f 74 6f 77 6f 72 6b 61  72 65 61 0a 53 79 6e 74  |_toworkarea.Synt|
0001ef70  61 78 3a 09 69 6e 74 20  63 6f 6f 72 64 73 5f 78  |ax:.int coords_x|
0001ef80  5f 74 6f 77 6f 72 6b 61  72 65 61 20 28 69 6e 74  |_toworkarea (int|
0001ef90  20 78 2c 20 3c 63 6f 6f  72 64 73 5f 63 76 74 73  | x, <coords_cvts|
0001efa0  74 72 3e 20 2a 72 29 3b  0a 48 65 61 64 65 72 3a  |tr> *r);.Header:|
0001efb0  09 3c 63 6f 6f 72 64 73  2e 68 3d 3e 63 6f 6f 72  |.<coords.h=>coor|
0001efc0  64 73 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 54 68  |ds>..Returns:.Th|
0001efd0  65 20 78 20 77 6f 72 6b  20 61 72 65 61 20 63 6f  |e x work area co|
0001efe0  6f 72 64 69 6e 61 74 65  2e 0a 0a 54 68 69 73 20  |ordinate...This |
0001eff0  66 75 6e 63 74 69 6f 6e  20 74 61 6b 65 73 20 61  |function takes a|
0001f000  6e 20 78 20 73 63 72 65  65 6e 20 63 6f 6f 72 64  |n x screen coord|
0001f010  69 6e 61 74 65 20 61 6e  64 20 61 20 70 6f 69 6e  |inate and a poin|
0001f020  74 65 72 20 74 6f 20 61  20 7b 2f 7d 63 6f 6f 72  |ter to a {/}coor|
0001f030  64 73 5f 63 76 74 73 74  72 7b 2f 7d 20 28 77 68  |ds_cvtstr{/} (wh|
0001f040  69 63 68 20 63 6f 6e 74  61 69 6e 73 20 74 68 65  |ich contains the|
0001f050  20 77 69 6e 64 6f 77 20  61 6e 64 20 73 63 72 6f  | window and scro|
0001f060  6c 6c 20 62 61 72 20 70  6f 73 69 74 69 6f 6e 29  |ll bar position)|
0001f070  20 61 6e 64 20 63 6f 6e  76 65 72 74 73 20 74 68  | and converts th|
0001f080  65 20 73 63 72 65 65 6e  20 63 6f 6f 72 64 69 6e  |e screen coordin|
0001f090  61 74 65 20 69 6e 74 6f  20 61 20 77 6f 72 6b 20  |ate into a work |
0001f0a0  61 72 65 61 20 63 6f 6f  72 64 69 6e 61 74 65 2e  |area coordinate.|
0001f0b0  44 41 54 41 5c 01 00 00  63 6f 6f 72 64 73 5f 79  |DATA\...coords_y|
0001f0c0  5f 74 6f 73 63 72 65 65  6e 0a 53 79 6e 74 61 78  |_toscreen.Syntax|
0001f0d0  3a 09 69 6e 74 20 63 6f  6f 72 64 73 5f 79 5f 74  |:.int coords_y_t|
0001f0e0  6f 73 63 72 65 65 6e 20  28 69 6e 74 20 79 2c 20  |oscreen (int y, |
0001f0f0  3c 63 6f 6f 72 64 73 5f  63 76 74 73 74 72 3e 20  |<coords_cvtstr> |
0001f100  2a 72 29 3b 0a 48 65 61  64 65 72 3a 09 3c 63 6f  |*r);.Header:.<co|
0001f110  6f 72 64 73 2e 68 3d 3e  63 6f 6f 72 64 73 3e 0a  |ords.h=>coords>.|
0001f120  0a 52 65 74 75 72 6e 73  3a 09 54 68 65 20 79 20  |.Returns:.The y |
0001f130  73 63 72 65 65 6e 20 63  6f 6f 72 64 69 6e 61 74  |screen coordinat|
0001f140  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
0001f150  6e 20 74 61 6b 65 73 20  61 6e 20 79 20 77 6f 72  |n takes an y wor|
0001f160  6b 20 61 72 65 61 20 63  6f 6f 72 64 69 6e 61 74  |k area coordinat|
0001f170  65 20 61 6e 64 20 61 20  70 6f 69 6e 74 65 72 20  |e and a pointer |
0001f180  74 6f 20 61 20 7b 2f 7d  63 6f 6f 72 64 73 5f 63  |to a {/}coords_c|
0001f190  76 74 73 74 72 7b 2f 7d  20 28 77 68 69 63 68 20  |vtstr{/} (which |
0001f1a0  63 6f 6e 74 61 69 6e 73  20 74 68 65 20 77 69 6e  |contains the win|
0001f1b0  64 6f 77 20 61 6e 64 20  73 63 72 6f 6c 6c 20 62  |dow and scroll b|
0001f1c0  61 72 20 70 6f 73 69 74  69 6f 6e 29 20 61 6e 64  |ar position) and|
0001f1d0  20 63 6f 6e 76 65 72 74  73 20 74 68 65 20 77 6f  | converts the wo|
0001f1e0  72 6b 20 61 72 65 61 20  63 6f 6f 72 64 69 6e 61  |rk area coordina|
0001f1f0  74 65 20 69 6e 74 6f 20  61 20 73 63 72 65 65 6e  |te into a screen|
0001f200  20 63 6f 6f 72 64 69 6e  61 74 65 2e 44 41 54 41  | coordinate.DATA|
0001f210  60 01 00 00 63 6f 6f 72  64 73 5f 79 5f 74 6f 77  |`...coords_y_tow|
0001f220  6f 72 6b 61 72 65 61 0a  53 79 6e 74 61 78 3a 09  |orkarea.Syntax:.|
0001f230  69 6e 74 20 63 6f 6f 72  64 73 5f 79 5f 74 6f 77  |int coords_y_tow|
0001f240  6f 72 6b 61 72 65 61 20  28 69 6e 74 20 79 2c 20  |orkarea (int y, |
0001f250  3c 63 6f 6f 72 64 73 5f  63 76 74 73 74 72 3e 20  |<coords_cvtstr> |
0001f260  2a 72 29 3b 0a 48 65 61  64 65 72 3a 09 3c 63 6f  |*r);.Header:.<co|
0001f270  6f 72 64 73 2e 68 3d 3e  63 6f 6f 72 64 73 3e 0a  |ords.h=>coords>.|
0001f280  0a 52 65 74 75 72 6e 73  3a 09 54 68 65 20 79 20  |.Returns:.The y |
0001f290  77 6f 72 6b 20 61 72 65  61 20 63 6f 6f 72 64 69  |work area coordi|
0001f2a0  6e 61 74 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |nate...This func|
0001f2b0  74 69 6f 6e 20 74 61 6b  65 73 20 61 6e 20 79 20  |tion takes an y |
0001f2c0  73 63 72 65 65 6e 20 63  6f 6f 72 64 69 6e 61 74  |screen coordinat|
0001f2d0  65 20 61 6e 64 20 61 20  70 6f 69 6e 74 65 72 20  |e and a pointer |
0001f2e0  74 6f 20 61 20 7b 2f 7d  63 6f 6f 72 64 73 5f 63  |to a {/}coords_c|
0001f2f0  76 74 73 74 72 7b 2f 7d  20 28 77 68 69 63 68 20  |vtstr{/} (which |
0001f300  63 6f 6e 74 61 69 6e 73  20 74 68 65 20 77 69 6e  |contains the win|
0001f310  64 6f 77 20 61 6e 64 20  73 63 72 6f 6c 6c 20 62  |dow and scroll b|
0001f320  61 72 20 70 6f 73 69 74  69 6f 6e 29 20 61 6e 64  |ar position) and|
0001f330  20 63 6f 6e 76 65 72 74  73 20 74 68 65 20 73 63  | converts the sc|
0001f340  72 65 65 6e 20 63 6f 6f  72 64 69 6e 61 74 65 20  |reen coordinate |
0001f350  69 6e 74 6f 20 61 20 77  6f 72 6b 20 61 72 65 61  |into a work area|
0001f360  20 63 6f 6f 72 64 69 6e  61 74 65 2e 44 41 54 41  | coordinate.DATA|
0001f370  65 01 00 00 44 65 73 6b  4c 69 62 3a 43 6f 72 65  |e...DeskLib:Core|
0001f380  2e 68 0a 56 65 72 73 69  6f 6e 3a 20 31 2e 30 31  |.h.Version: 1.01|
0001f390  20 28 30 32 20 4d 61 72  20 31 39 39 34 29 0a 23  | (02 Mar 1994).#|
0001f3a0  6c 69 6e 65 0a 54 68 65  20 5c 3c 43 6f 72 65 2e  |line.The \<Core.|
0001f3b0  68 3e 20 68 65 61 64 65  72 20 64 65 66 69 6e 65  |h> header define|
0001f3c0  73 20 73 65 76 65 72 61  6c 20 6d 61 63 72 6f 73  |s several macros|
0001f3d0  20 75 73 65 64 20 62 79  20 74 68 65 20 72 65 73  | used by the res|
0001f3e0  74 20 6f 66 20 44 65 73  6b 4c 69 62 2e 20 49 74  |t of DeskLib. It|
0001f3f0  20 61 6c 73 6f 20 64 65  66 69 6e 65 73 20 74 77  | also defines tw|
0001f400  6f 20 74 79 70 65 73 2e  0a 0a 4d 61 63 72 6f 73  |o types...Macros|
0001f410  3a 0a 0a 23 69 6e 64 65  6e 74 20 34 0a 23 54 61  |:..#indent 4.#Ta|
0001f420  62 6c 65 20 63 6f 6c 75  6d 6e 73 20 34 0a 3c 46  |ble columns 4.<F|
0001f430  41 4c 53 45 3e 0a 3c 54  52 55 45 3e 0a 3c 45 52  |ALSE>.<TRUE>.<ER|
0001f440  52 4f 52 3e 0a 3c 4e 4f  45 52 52 4f 52 3e 0a 3c  |ROR>.<NOERROR>.<|
0001f450  4e 55 4c 4c 3e 0a 3c 55  4e 55 53 45 44 5f 41 52  |NULL>.<UNUSED_AR|
0001f460  47 3e 0a 3c 55 4e 55 53  45 44 3e 0a 3c 4d 41 58  |G>.<UNUSED>.<MAX|
0001f470  3e 0a 3c 4d 49 4e 3e 0a  3c 4f 53 43 4c 49 3e 0a  |>.<MIN>.<OSCLI>.|
0001f480  0a 0a 23 45 6e 64 54 61  62 6c 65 0a 0a 23 69 6e  |..#EndTable..#in|
0001f490  64 65 6e 74 20 30 0a 54  79 70 65 73 3a 0a 0a 23  |dent 0.Types:..#|
0001f4a0  49 6e 64 65 6e 74 20 31  35 0a 23 54 61 62 6c 65  |Indent 15.#Table|
0001f4b0  20 31 20 31 35 0a 3c 42  4f 4f 4c 3e 0a 3c 6f 73  | 1 15.<BOOL>.<os|
0001f4c0  5f 65 72 72 6f 72 3e 0a  23 45 6e 64 54 61 62 6c  |_error>.#EndTabl|
0001f4d0  65 00 00 00 44 49 52 24  28 00 00 00 28 00 00 00  |e...DIR$(...(...|
0001f4e0  fc f4 01 00 46 fd ff ff  a0 b5 54 26 f3 00 00 00  |....F.....T&....|
0001f4f0  13 00 00 00 00 00 00 00  54 4c 00 00 44 41 54 41  |........TL..DATA|
0001f500  f3 00 00 00 54 69 6d 73  4c 69 62 3a 43 6f 72 65  |....TimsLib:Core|
0001f510  2e 68 0a 54 68 69 73 20  68 65 61 64 65 72 20 63  |.h.This header c|
0001f520  6f 6e 74 61 69 6e 73 20  64 65 66 69 6e 69 74 69  |ontains definiti|
0001f530  6f 6e 73 20 75 73 65 64  20 62 79 20 74 68 65 20  |ons used by the |
0001f540  72 65 73 74 20 6f 66 20  54 69 6d 73 4c 69 62 20  |rest of TimsLib |
0001f550  61 6e 64 20 61 6c 73 6f  20 75 73 65 66 75 6c 20  |and also useful |
0001f560  64 65 66 69 6e 69 74 69  6f 6e 73 20 66 6f 72 20  |definitions for |
0001f570  79 6f 75 72 20 6f 77 6e  20 63 6f 64 65 2e 0a 0a  |your own code...|
0001f580  4d 61 63 72 6f 73 3a 0a  0a 23 49 6e 64 65 6e 74  |Macros:..#Indent|
0001f590  20 35 0a 23 54 61 62 6c  65 20 33 20 31 34 0a 3c  | 5.#Table 3 14.<|
0001f5a0  55 4e 55 53 45 44 5f 41  52 47 3e 0a 3c 55 4e 55  |UNUSED_ARG>.<UNU|
0001f5b0  53 45 44 3e 0a 3c 42 4f  4f 4c 3e 0a 3c 54 52 55  |SED>.<BOOL>.<TRU|
0001f5c0  45 3e 0a 3c 46 41 4c 53  45 3e 0a 3c 4e 55 4c 4c  |E>.<FALSE>.<NULL|
0001f5d0  3e 0a 3c 4d 41 58 3e 0a  3c 4d 49 4e 3e 0a 3c 4f  |>.<MAX>.<MIN>.<O|
0001f5e0  53 43 4c 49 3e 0a 23 45  6e 64 54 61 62 6c 65 00  |SCLI>.#EndTable.|
0001f5f0  44 41 54 41 a9 00 00 00  63 6f 73 0a 53 79 6e 74  |DATA....cos.Synt|
0001f600  61 78 3a 09 64 6f 75 62  6c 65 20 63 6f 73 20 28  |ax:.double cos (|
0001f610  64 6f 75 62 6c 65 20 78  29 3b 0a 48 65 61 64 65  |double x);.Heade|
0001f620  72 3a 09 3c 6d 61 74 68  2e 68 3d 3e 6d 61 74 68  |r:.<math.h=>math|
0001f630  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 54 68 65 20  |>..Returns:.The |
0001f640  63 6f 73 69 6e 65 20 6f  66 20 78 20 69 6e 20 72  |cosine of x in r|
0001f650  61 64 69 61 6e 73 2e 0a  0a 54 68 69 73 20 66 75  |adians...This fu|
0001f660  6e 63 74 69 6f 6e 20 63  61 6c 63 75 6c 61 74 65  |nction calculate|
0001f670  73 20 74 68 65 20 70 72  69 6e 63 69 70 61 6c 20  |s the principal |
0001f680  76 61 6c 75 65 20 6f 66  20 74 68 65 20 63 6f 73  |value of the cos|
0001f690  69 6e 65 20 6f 66 20 78  2e 00 00 00 44 41 54 41  |ine of x....DATA|
0001f6a0  cb 00 00 00 63 6f 73 68  0a 53 79 6e 74 61 78 3a  |....cosh.Syntax:|
0001f6b0  09 64 6f 75 62 6c 65 20  63 6f 73 68 20 28 64 6f  |.double cosh (do|
0001f6c0  75 62 6c 65 20 78 29 3b  0a 48 65 61 64 65 72 3a  |uble x);.Header:|
0001f6d0  09 3c 6d 61 74 68 2e 68  3d 3e 6d 61 74 68 3e 0a  |.<math.h=>math>.|
0001f6e0  0a 52 65 74 75 72 6e 73  3a 09 54 68 65 20 68 79  |.Returns:.The hy|
0001f6f0  70 65 72 62 6f 6c 69 63  20 63 6f 73 69 6e 65 20  |perbolic cosine |
0001f700  6f 66 20 78 20 69 6e 20  72 61 64 69 61 6e 73 2e  |of x in radians.|
0001f710  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0001f720  63 61 6c 63 75 6c 61 74  65 73 20 74 68 65 20 68  |calculates the h|
0001f730  79 70 65 72 62 6f 6c 69  63 20 63 6f 73 69 6e 65  |yperbolic cosine|
0001f740  20 6f 66 20 78 2e 20 41  6e 20 65 72 72 6f 72 20  | of x. An error |
0001f750  6f 63 63 75 72 73 20 69  66 20 78 20 69 73 20 74  |occurs if x is t|
0001f760  6f 6f 20 62 69 67 2e 00  44 49 52 24 4c 00 00 00  |oo big..DIR$L...|
0001f770  4c 00 00 00 b4 f7 01 00  46 fd ff ff 9a 7d b5 22  |L.......F....}."|
0001f780  c4 00 00 00 13 00 00 00  00 00 00 00 66 6c 61 67  |............flag|
0001f790  73 5f 00 00 78 f8 01 00  46 fd ff ff ef ac f0 24  |s_..x...F......$|
0001f7a0  ee 00 00 00 13 00 00 00  00 00 00 00 70 61 6c 65  |............pale|
0001f7b0  6e 74 5f 00 44 41 54 41  c4 00 00 00 43 6f 6c 6f  |nt_.DATA....Colo|
0001f7c0  75 72 54 72 61 6e 73 5f  53 65 74 47 43 4f 4c 20  |urTrans_SetGCOL |
0001f7d0  46 6c 61 67 73 0a 42 69  74 73 20 20 20 20 4d 65  |Flags.Bits    Me|
0001f7e0  61 6e 69 6e 67 0a 30 2d  36 20 20 20 20 20 52 65  |aning.0-6     Re|
0001f7f0  73 65 72 76 65 64 2c 20  73 68 6f 75 6c 64 20 62  |served, should b|
0001f800  65 20 7a 65 72 6f 2e 0a  37 20 20 20 20 20 20 20  |e zero..7       |
0001f810  53 65 74 20 62 61 63 6b  67 72 6f 75 6e 64 20 63  |Set background c|
0001f820  6f 6c 6f 75 72 2e 0a 38  20 20 20 20 20 20 20 55  |olour..8       U|
0001f830  73 65 20 64 69 74 68 65  72 69 6e 67 20 74 6f 20  |se dithering to |
0001f840  69 6d 70 72 6f 76 65 20  61 70 70 72 6f 78 69 6d  |improve approxim|
0001f850  61 74 69 6f 6e 2e 0a 39  2d 33 31 20 20 20 20 52  |ation..9-31    R|
0001f860  65 73 65 72 76 65 64 2c  20 73 68 6f 75 6c 64 20  |eserved, should |
0001f870  62 65 20 7a 65 72 6f 2e  44 41 54 41 ee 00 00 00  |be zero.DATA....|
0001f880  50 61 6c 65 74 74 65 20  45 6e 74 72 79 0a 54 68  |Palette Entry.Th|
0001f890  69 73 20 69 73 20 61 20  6c 6f 6e 67 20 69 6e 74  |is is a long int|
0001f8a0  20 6f 66 20 74 68 65 20  66 6f 72 6d 20 30 78 42  | of the form 0xB|
0001f8b0  42 47 47 52 52 30 30 20  69 65 20 74 68 65 20 69  |BGGRR00 ie the i|
0001f8c0  6e 74 65 6e 73 69 74 79  20 6f 66 20 65 61 63 68  |ntensity of each|
0001f8d0  20 6f 66 20 52 65 64 2c  20 47 72 65 65 6e 2c 20  | of Red, Green, |
0001f8e0  61 6e 64 20 42 6c 75 65  20 69 6e 20 65 61 63 68  |and Blue in each|
0001f8f0  20 6f 66 20 74 6f 70 20  74 68 72 65 65 20 62 79  | of top three by|
0001f900  74 65 73 2e 20 46 6f 72  20 65 78 61 6d 70 6c 65  |tes. For example|
0001f910  2c 20 77 68 69 74 65 20  69 73 20 30 78 46 46 46  |, white is 0xFFF|
0001f920  46 46 46 30 30 2c 20 62  72 69 67 68 74 20 62 6c  |FFF00, bright bl|
0001f930  75 65 20 69 73 20 30 78  46 46 30 30 30 30 30 30  |ue is 0xFF000000|
0001f940  20 61 6e 64 20 68 61 6c  66 20 69 6e 74 65 6e 73  | and half intens|
0001f950  69 74 79 20 72 65 64 20  69 73 20 30 78 30 30 30  |ity red is 0x000|
0001f960  30 37 46 30 30 2e 00 00  44 41 54 41 37 01 00 00  |07F00...DATA7...|
0001f970  63 74 69 6d 65 0a 53 79  6e 74 61 78 3a 09 63 68  |ctime.Syntax:.ch|
0001f980  61 72 20 2a 63 74 69 6d  65 20 28 3c 74 69 6d 65  |ar *ctime (<time|
0001f990  5f 74 3e 20 2a 74 69 6d  65 72 29 3b 0a 48 65 61  |_t> *timer);.Hea|
0001f9a0  64 65 72 3a 09 3c 74 69  6d 65 2e 68 3d 3e 74 69  |der:.<time.h=>ti|
0001f9b0  6d 65 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |me_h>..Returns:.|
0001f9c0  50 6f 69 6e 74 65 72 20  74 6f 20 74 68 65 20 74  |Pointer to the t|
0001f9d0  69 6d 65 20 73 74 72 69  6e 67 2e 0a 0a 54 68 69  |ime string...Thi|
0001f9e0  73 20 66 75 6e 63 74 69  6f 6e 20 63 6f 6e 76 65  |s function conve|
0001f9f0  72 74 73 20 74 68 65 20  63 61 6c 65 6e 64 61 72  |rts the calendar|
0001fa00  20 74 69 6d 65 20 70 6f  69 6e 74 65 64 20 74 6f  | time pointed to|
0001fa10  20 62 79 20 2f 74 69 6d  65 72 2f 20 69 6e 74 6f  | by /timer/ into|
0001fa20  20 61 20 73 74 72 69 6e  67 20 63 6f 6e 74 61 69  | a string contai|
0001fa30  6e 69 6e 67 20 74 68 65  20 6c 6f 63 61 6c 20 74  |ning the local t|
0001fa40  69 6d 65 20 65 71 75 69  76 61 6c 65 6e 74 2e 0a  |ime equivalent..|
0001fa50  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 69  |.This function i|
0001fa60  73 20 65 71 75 69 76 61  6c 65 6e 74 20 74 6f 3a  |s equivalent to:|
0001fa70  0a 7b 61 6c 69 67 6e 20  63 65 6e 74 72 65 7d 3c  |.{align centre}<|
0001fa80  61 73 63 74 69 6d 65 3e  28 20 3c 6c 6f 63 61 6c  |asctime>( <local|
0001fa90  74 69 6d 65 3e 28 74 69  6d 65 72 29 20 29 3b 00  |time>(timer) );.|
0001faa0  44 41 54 41 bd 01 00 00  63 74 79 70 65 2e 68 0a  |DATA....ctype.h.|
0001fab0  23 50 61 72 65 6e 74 20  61 6e 73 69 5f 0a 54 68  |#Parent ansi_.Th|
0001fac0  65 20 5c 3c 63 74 79 70  65 2e 68 5c 3e 20 68 65  |e \<ctype.h\> he|
0001fad0  61 64 65 72 20 64 65 63  6c 61 72 65 73 20 61 20  |ader declares a |
0001fae0  6e 75 6d 62 65 72 20 6f  66 0a 66 75 6e 63 74 69  |number of.functi|
0001faf0  6f 6e 73 20 66 6f 72 20  74 65 73 74 69 6e 67 20  |ons for testing |
0001fb00  63 68 61 72 61 63 74 65  72 73 2e 20 49 6e 20 61  |characters. In a|
0001fb10  64 64 69 74 69 6f 6e 0a  74 77 6f 20 66 75 6e 63  |ddition.two func|
0001fb20  74 69 6f 6e 73 20 74 6f  20 63 68 61 6e 67 65 20  |tions to change |
0001fb30  74 68 65 20 63 61 73 65  20 6f 66 20 61 20 63 68  |the case of a ch|
0001fb40  61 72 61 63 74 65 72 0a  61 72 65 20 70 72 6f 76  |aracter.are prov|
0001fb50  69 64 65 64 2e 0a 0a 43  68 61 72 61 63 74 65 72  |ided...Character|
0001fb60  20 74 65 73 74 69 6e 67  20 66 75 6e 63 74 69 6f  | testing functio|
0001fb70  6e 73 3a 0a 0a 23 49 6e  64 65 6e 74 20 38 0a 23  |ns:..#Indent 8.#|
0001fb80  54 61 62 6c 65 20 34 20  31 35 0a 3c 69 73 61 6c  |Table 4 15.<isal|
0001fb90  6e 75 6d 3e 0a 3c 69 73  61 6c 70 68 61 3e 0a 3c  |num>.<isalpha>.<|
0001fba0  69 73 63 6e 74 72 6c 3e  0a 3c 69 73 64 69 67 69  |iscntrl>.<isdigi|
0001fbb0  74 3e 0a 3c 69 73 67 72  61 70 68 3e 0a 3c 69 73  |t>.<isgraph>.<is|
0001fbc0  6c 6f 77 65 72 3e 0a 3c  69 73 70 72 69 6e 74 3e  |lower>.<isprint>|
0001fbd0  0a 3c 69 73 70 75 6e 63  74 3e 0a 3c 69 73 73 70  |.<ispunct>.<issp|
0001fbe0  61 63 65 3e 0a 3c 69 73  75 70 70 65 72 3e 0a 3c  |ace>.<isupper>.<|
0001fbf0  69 73 78 64 69 67 69 74  3e 0a 23 45 6e 64 54 61  |isxdigit>.#EndTa|
0001fc00  62 6c 65 0a 0a 23 49 6e  64 65 6e 74 20 30 0a 43  |ble..#Indent 0.C|
0001fc10  61 73 65 20 63 68 61 6e  67 69 6e 67 20 66 75 6e  |ase changing fun|
0001fc20  63 74 69 6f 6e 73 3a 0a  0a 23 49 6e 64 65 6e 74  |ctions:..#Indent|
0001fc30  20 31 32 0a 23 54 61 62  6c 65 20 31 20 31 35 0a  | 12.#Table 1 15.|
0001fc40  3c 74 6f 6c 6f 77 65 72  3e 0a 3c 74 6f 75 70 70  |<tolower>.<toupp|
0001fc50  65 72 3e 0a 23 45 6e 64  54 61 62 6c 65 00 00 00  |er>.#EndTable...|
0001fc60  44 41 54 41 29 01 00 00  44 65 73 6b 4c 69 62 3a  |DATA)...DeskLib:|
0001fc70  43 6c 65 61 72 2e 68 0a  56 65 72 73 69 6f 6e 3a  |Clear.h.Version:|
0001fc80  20 31 2e 30 31 20 28 33  30 20 4a 75 6e 20 31 39  | 1.01 (30 Jun 19|
0001fc90  39 34 29 0a 23 6c 69 6e  65 0a 54 68 69 73 20 68  |94).#line.This h|
0001fca0  65 61 64 65 72 20 64 65  63 6c 61 72 65 73 20 73  |eader declares s|
0001fcb0  65 76 65 72 61 6c 20 66  75 6e 63 74 69 6f 6e 73  |everal functions|
0001fcc0  20 61 6e 64 20 61 20 74  79 70 65 20 66 6f 72 20  | and a type for |
0001fcd0  68 61 6e 64 6c 69 6e 67  20 43 6c 65 61 72 20 66  |handling Clear f|
0001fce0  69 6c 65 73 2e 0a 0a 46  75 6e 63 74 69 6f 6e 73  |iles...Functions|
0001fcf0  3a 0a 0a 23 69 6e 64 65  6e 74 20 35 0a 23 74 61  |:..#indent 5.#ta|
0001fd00  62 6c 65 20 63 6f 6c 75  6d 6e 73 20 33 0a 3c 43  |ble columns 3.<C|
0001fd10  6c 65 61 72 5f 49 6e 69  74 3e 0a 3c 43 6c 65 61  |lear_Init>.<Clea|
0001fd20  72 5f 4c 6f 61 64 3e 0a  3c 43 6c 65 61 72 5f 53  |r_Load>.<Clear_S|
0001fd30  61 76 65 3e 0a 3c 43 6c  65 61 72 5f 43 72 65 61  |ave>.<Clear_Crea|
0001fd40  74 65 3e 0a 3c 43 6c 65  61 72 5f 46 72 65 65 3e  |te>.<Clear_Free>|
0001fd50  0a 0a 23 65 6e 64 74 61  62 6c 65 0a 23 69 6e 64  |..#endtable.#ind|
0001fd60  65 6e 74 0a 0a 54 79 70  65 3a 0a 0a 7b 61 6c 69  |ent..Type:..{ali|
0001fd70  67 6e 20 63 65 6e 74 72  65 7d 3c 63 6c 65 61 72  |gn centre}<clear|
0001fd80  5f 70 69 63 74 75 72 65  3e 00 00 00 44 49 52 24  |_picture>...DIR$|
0001fd90  cc 00 00 00 cc 00 00 00  58 fe 01 00 46 ff ff ff  |........X...F...|
0001fda0  5f 10 4f 26 2c 01 00 00  13 00 00 00 00 00 00 00  |_.O&,...........|
0001fdb0  70 69 63 74 75 72 65 00  84 ff 01 00 46 ff ff ff  |picture.....F...|
0001fdc0  92 37 4f 26 01 01 00 00  13 00 00 00 00 00 00 00  |.7O&............|
0001fdd0  49 6e 69 74 00 00 00 00  88 00 02 00 46 ff ff ff  |Init........F...|
0001fde0  b3 4f 4f 26 e1 00 00 00  13 00 00 00 00 00 00 00  |.OO&............|
0001fdf0  4c 6f 61 64 00 00 00 00  6c 01 02 00 46 ff ff ff  |Load....l...F...|
0001fe00  69 5e 4f 26 cc 00 00 00  13 00 00 00 00 00 00 00  |i^O&............|
0001fe10  53 61 76 65 00 00 00 00  38 02 02 00 46 ff ff ff  |Save....8...F...|
0001fe20  4f 79 4f 26 25 01 00 00  13 00 00 00 00 00 00 00  |OyO&%...........|
0001fe30  43 72 65 61 74 65 00 00  60 03 02 00 46 ff ff ff  |Create..`...F...|
0001fe40  72 85 4f 26 a4 00 00 00  13 00 00 00 00 00 00 00  |r.O&............|
0001fe50  46 72 65 65 00 00 00 00  44 41 54 41 2c 01 00 00  |Free....DATA,...|
0001fe60  63 6c 65 61 72 5f 70 69  63 74 75 72 65 0a 54 68  |clear_picture.Th|
0001fe70  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
0001fe80  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 43  |ed in <DeskLib:C|
0001fe90  6c 65 61 72 2e 68 3d 3e  43 6c 65 61 72 3e 20 61  |lear.h=>Clear> a|
0001fea0  73 20 61 20 73 74 72 75  63 74 75 72 65 20 63 6f  |s a structure co|
0001feb0  6e 74 61 69 6e 69 6e 67  20 61 20 43 6c 65 61 72  |ntaining a Clear|
0001fec0  20 66 69 6c 65 2e 0a 0a  20 20 20 20 5c 7b 0a 20  | file...    \{. |
0001fed0  20 20 20 20 20 20 20 63  68 61 72 09 09 2a 63 72  |       char..*cr|
0001fee0  65 61 74 6f 72 3b 0a 20  20 20 20 20 20 20 20 75  |eator;.        u|
0001fef0  6e 73 69 67 6e 65 64 09  63 72 65 61 74 6f 72 76  |nsigned.creatorv|
0001ff00  65 72 73 69 6f 6e 3b 0a  20 20 20 20 20 20 20 20  |ersion;.        |
0001ff10  75 6e 73 69 67 6e 65 64  09 77 69 64 74 68 2c 20  |unsigned.width, |
0001ff20  68 65 69 67 68 74 3b 0a  20 20 20 20 20 20 20 20  |height;.        |
0001ff30  75 6e 73 69 67 6e 65 64  09 62 70 70 3b 0a 20 20  |unsigned.bpp;.  |
0001ff40  20 20 20 20 20 20 3c 70  61 6c 65 74 74 65 5f 65  |      <palette_e|
0001ff50  6e 74 72 79 3e 09 2a 70  61 6c 65 74 74 65 3b 0a  |ntry>.*palette;.|
0001ff60  20 20 20 20 20 20 20 20  75 6e 73 69 67 6e 65 64  |        unsigned|
0001ff70  20 63 68 61 72 09 2a 62  69 74 6d 61 70 3b 0a 20  | char.*bitmap;. |
0001ff80  20 20 20 7d 44 41 54 41  01 01 00 00 43 6c 65 61  |   }DATA....Clea|
0001ff90  72 5f 49 6e 69 74 0a 53  79 6e 74 61 78 3a 09 76  |r_Init.Syntax:.v|
0001ffa0  6f 69 64 20 43 6c 65 61  72 5f 49 6e 69 74 20 28  |oid Clear_Init (|
0001ffb0  63 68 61 72 20 2a 63 72  65 61 74 6f 72 2c 20 75  |char *creator, u|
0001ffc0  6e 73 69 67 6e 65 64 20  76 65 72 73 69 6f 6e 29  |nsigned version)|
0001ffd0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
0001ffe0  69 62 3a 43 6c 65 61 72  2e 68 3d 3e 43 6c 65 61  |ib:Clear.h=>Clea|
0001fff0  72 3e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |r>..This functio|
00020000  6e 20 74 65 6c 6c 73 20  74 68 65 20 43 6c 65 61  |n tells the Clea|
00020010  72 20 6c 69 62 72 61 72  79 20 77 68 61 74 20 64  |r library what d|
00020020  65 74 61 69 6c 73 20 69  74 20 73 68 6f 75 6c 64  |etails it should|
00020030  20 66 69 6c 6c 20 69 6e  20 74 68 65 20 61 70 70  | fill in the app|
00020040  72 6f 70 72 69 61 74 65  20 66 69 65 6c 64 73 20  |ropriate fields |
00020050  77 68 65 6e 20 75 73 69  6e 67 20 3c 43 6c 65 61  |when using <Clea|
00020060  72 5f 53 61 76 65 3e 2e  20 2f 76 65 72 73 69 6f  |r_Save>. /versio|
00020070  6e 2f 20 69 73 20 2a 20  31 30 30 20 61 73 20 75  |n/ is * 100 as u|
00020080  73 75 61 6c 2e 00 00 00  44 41 54 41 e1 00 00 00  |sual....DATA....|
00020090  43 6c 65 61 72 5f 4c 6f  61 64 0a 53 79 6e 74 61  |Clear_Load.Synta|
000200a0  78 3a 09 3c 63 6c 65 61  72 5f 70 69 63 74 75 72  |x:.<clear_pictur|
000200b0  65 3e 20 2a 43 6c 65 61  72 5f 4c 6f 61 64 20 28  |e> *Clear_Load (|
000200c0  63 68 61 72 20 2a 66 69  6c 65 6e 61 6d 65 29 3b  |char *filename);|
000200d0  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
000200e0  62 3a 43 6c 65 61 72 2e  68 3d 3e 43 6c 65 61 72  |b:Clear.h=>Clear|
000200f0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
00020100  74 65 72 20 74 6f 20 70  69 63 74 75 72 65 2c 20  |ter to picture, |
00020110  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 61 6e 20  |or <NULL> if an |
00020120  65 72 72 6f 72 20 6f 63  63 75 72 72 65 64 2e 0a  |error occurred..|
00020130  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 6c  |.This function l|
00020140  6f 61 64 73 20 74 68 65  20 6e 61 6d 65 64 20 43  |oads the named C|
00020150  6c 65 61 72 20 70 69 63  74 75 72 65 20 69 6e 74  |lear picture int|
00020160  6f 20 6d 65 6d 6f 72 79  2e 00 00 00 44 41 54 41  |o memory....DATA|
00020170  cc 00 00 00 43 6c 65 61  72 5f 53 61 76 65 0a 53  |....Clear_Save.S|
00020180  79 6e 74 61 78 3a 09 76  6f 69 64 20 43 6c 65 61  |yntax:.void Clea|
00020190  72 5f 53 61 76 65 20 28  3c 63 6c 65 61 72 5f 70  |r_Save (<clear_p|
000201a0  69 63 74 75 72 65 3e 20  2a 70 69 63 2c 63 68 61  |icture> *pic,cha|
000201b0  72 20 2a 66 69 6c 65 6e  61 6d 65 29 3b 0a 48 65  |r *filename);.He|
000201c0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 43  |ader:.<DeskLib:C|
000201d0  6c 65 61 72 2e 68 3d 3e  43 6c 65 61 72 3e 0a 0a  |lear.h=>Clear>..|
000201e0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 73 61  |This function sa|
000201f0  76 65 73 20 74 68 65 20  70 69 63 74 75 72 65 20  |ves the picture |
00020200  70 6f 69 6e 74 65 72 20  74 6f 20 62 79 20 2f 70  |pointer to by /p|
00020210  69 63 2f 20 74 6f 20 74  68 65 20 66 69 6c 65 20  |ic/ to the file |
00020220  73 70 65 63 69 66 69 65  64 20 69 6e 20 2f 66 69  |specified in /fi|
00020230  6c 65 6e 61 6d 65 2f 2e  44 41 54 41 25 01 00 00  |lename/.DATA%...|
00020240  43 6c 65 61 72 5f 43 72  65 61 74 65 0a 53 79 6e  |Clear_Create.Syn|
00020250  74 61 78 3a 09 3c 63 6c  65 61 72 5f 70 69 63 74  |tax:.<clear_pict|
00020260  75 72 65 3e 20 2a 43 6c  65 61 72 5f 43 72 65 61  |ure> *Clear_Crea|
00020270  74 65 20 28 75 6e 73 69  67 6e 65 64 20 77 69 64  |te (unsigned wid|
00020280  74 68 2c 20 75 6e 73 69  67 6e 65 64 20 68 65 69  |th, unsigned hei|
00020290  67 68 74 2c 20 75 6e 73  69 67 6e 65 64 20 62 70  |ght, unsigned bp|
000202a0  70 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |p);.Header:.<Des|
000202b0  6b 4c 69 62 3a 43 6c 65  61 72 2e 68 3d 3e 43 6c  |kLib:Clear.h=>Cl|
000202c0  65 61 72 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |ear>..Returns:.P|
000202d0  6f 69 6e 74 65 72 20 74  6f 20 70 69 63 74 75 72  |ointer to pictur|
000202e0  65 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |e, or <NULL> if |
000202f0  66 61 69 6c 65 64 2e 0a  0a 54 68 69 73 20 66 75  |failed...This fu|
00020300  6e 63 74 69 6f 6e 20 61  74 74 65 6d 70 74 73 20  |nction attempts |
00020310  74 6f 20 61 6c 6c 6f 63  61 74 65 20 6d 65 6d 6f  |to allocate memo|
00020320  72 79 20 66 6f 72 20 61  20 70 69 63 74 75 72 65  |ry for a picture|
00020330  20 6f 66 20 74 68 65 20  67 69 76 65 6e 20 77 69  | of the given wi|
00020340  64 74 68 2c 20 68 65 69  67 68 74 20 61 6e 64 20  |dth, height and |
00020350  63 6f 6c 6f 75 72 20 64  65 70 74 68 2e 00 00 00  |colour depth....|
00020360  44 41 54 41 a4 00 00 00  43 6c 65 61 72 5f 46 72  |DATA....Clear_Fr|
00020370  65 65 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |ee.Syntax:.void |
00020380  43 6c 65 61 72 5f 46 72  65 65 20 28 3c 63 6c 65  |Clear_Free (<cle|
00020390  61 72 5f 70 69 63 74 75  72 65 3e 20 2a 70 69 63  |ar_picture> *pic|
000203a0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
000203b0  4c 69 62 3a 43 6c 65 61  72 2e 68 3d 3e 43 6c 65  |Lib:Clear.h=>Cle|
000203c0  61 72 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ar>..This functi|
000203d0  6f 6e 20 66 72 65 65 73  20 61 6c 6c 20 6d 65 6d  |on frees all mem|
000203e0  6f 72 79 20 75 73 65 64  20 62 79 20 74 68 65 20  |ory used by the |
000203f0  43 6c 65 61 72 20 70 69  63 74 75 72 65 20 2f 70  |Clear picture /p|
00020400  69 63 2f 2e 44 49 52 24  48 00 00 00 48 00 00 00  |ic/.DIR$H...H...|
00020410  4c 04 02 00 46 ff ff ff  50 1f 52 26 1d 01 00 00  |L...F...P.R&....|
00020420  13 00 00 00 00 00 00 00  43 72 65 61 74 65 00 00  |........Create..|
00020430  6c 05 02 00 46 fd ff ff  6c 4c 52 26 94 00 00 00  |l...F...lLR&....|
00020440  13 00 00 00 00 00 00 00  44 4c 00 00 44 41 54 41  |........DL..DATA|
00020450  1d 01 00 00 43 6f 6c 6f  75 72 4d 65 6e 75 5f 43  |....ColourMenu_C|
00020460  72 65 61 74 65 0a 53 79  6e 74 61 78 3a 09 3c 6d  |reate.Syntax:.<m|
00020470  65 6e 75 5f 70 74 72 3e  20 43 6f 6c 6f 75 72 4d  |enu_ptr> ColourM|
00020480  65 6e 75 5f 43 72 65 61  74 65 20 28 63 68 61 72  |enu_Create (char|
00020490  20 2a 6e 61 6d 65 29 3b  0a 48 65 61 64 65 72 3a  | *name);.Header:|
000204a0  09 3c 44 65 73 6b 4c 69  62 3a 43 6f 6c 6f 75 72  |.<DeskLib:Colour|
000204b0  4d 65 6e 75 2e 68 3d 3e  43 6f 6c 6f 75 72 4d 65  |Menu.h=>ColourMe|
000204c0  6e 75 5f 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |nu_>..Returns:.P|
000204d0  6f 69 6e 74 65 72 20 74  6f 20 6e 65 77 20 6d 65  |ointer to new me|
000204e0  6e 75 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |nu..This functio|
000204f0  6e 20 63 72 65 61 74 65  73 20 61 20 6d 65 6e 75  |n creates a menu|
00020500  20 63 6f 6e 74 61 69 6e  69 6e 67 20 74 68 65 20  | containing the |
00020510  31 36 20 57 69 6d 70 20  63 6f 6c 6f 75 72 73 2e  |16 Wimp colours.|
00020520  20 2f 6e 61 6d 65 2f 20  63 6f 6e 74 61 69 6e 73  | /name/ contains|
00020530  20 74 68 65 20 6d 65 6e  75 20 74 69 74 6c 65 2e  | the menu title.|
00020540  20 54 68 65 20 6d 65 6e  75 20 69 73 20 6f 6e 6c  | The menu is onl|
00020550  79 20 63 72 65 61 74 65  64 2c 20 6e 6f 74 20 64  |y created, not d|
00020560  69 73 70 6c 61 79 65 64  2e 00 00 00 44 41 54 41  |isplayed....DATA|
00020570  94 00 00 00 44 65 73 6b  4c 69 62 3a 43 6f 6c 6f  |....DeskLib:Colo|
00020580  75 72 4d 65 6e 75 2e 68  0a 56 65 72 73 69 6f 6e  |urMenu.h.Version|
00020590  3a 20 31 2e 30 30 20 28  32 37 20 41 75 67 20 31  |: 1.00 (27 Aug 1|
000205a0  39 39 34 29 0a 23 6c 69  6e 65 0a 54 68 69 73 20  |994).#line.This |
000205b0  68 65 61 64 65 72 20 64  65 63 6c 61 72 65 73 20  |header declares |
000205c0  6a 75 73 74 20 6f 6e 65  20 66 75 6e 63 74 69 6f  |just one functio|
000205d0  6e 2e 0a 0a 46 75 6e 63  74 69 6f 6e 3a 0a 0a 7b  |n...Function:..{|
000205e0  61 6c 69 67 6e 20 63 65  6e 74 72 65 7d 3c 43 6f  |align centre}<Co|
000205f0  6c 6f 75 72 4d 65 6e 75  5f 43 72 65 61 74 65 3e  |lourMenu_Create>|
00020600  44 49 52 24 c0 04 00 00  c0 04 00 00 c0 0a 02 00  |DIR$............|
00020610  46 fd ff ff 10 6f 84 2f  2c 01 00 00 13 01 00 00  |F....o./,.......|
00020620  00 00 00 00 44 42 4c 5f  00 00 00 00 50 10 02 00  |....DBL_....P...|
00020630  46 ff ff ff bf fc 1e 23  b0 02 00 00 13 00 00 00  |F......#........|
00020640  00 00 00 00 64 62 6f 78  00 00 00 00 00 13 02 00  |....dbox........|
00020650  46 fd ff ff d9 6f 84 2f  38 04 00 00 13 01 00 00  |F....o./8.......|
00020660  00 00 00 00 64 62 6f 78  5f 00 00 00 00 38 02 00  |....dbox_....8..|
00020670  46 ff ff ff 86 7d 1f 23  a3 02 00 00 13 00 00 00  |F....}.#........|
00020680  00 00 00 00 64 62 6f 78  66 69 6c 65 00 00 00 00  |....dboxfile....|
00020690  a4 3a 02 00 46 ff ff ff  1b 92 1f 23 ee 01 00 00  |.:..F......#....|
000206a0  13 00 00 00 00 00 00 00  64 62 6f 78 71 75 65 72  |........dboxquer|
000206b0  79 00 00 00 94 3c 02 00  46 fd ff ff 41 72 84 2f  |y....<..F...Ar./|
000206c0  2c 00 00 00 13 01 00 00  00 00 00 00 64 62 6f 78  |,...........dbox|
000206d0  71 75 65 72 79 5f 00 00  98 3d 02 00 46 ff ff ff  |query_...=..F...|
000206e0  7b b3 1f 23 c2 02 00 00  13 00 00 00 00 00 00 00  |{..#............|
000206f0  64 62 6f 78 74 63 6f 6c  00 00 00 00 5c 40 02 00  |dboxtcol....\@..|
00020700  46 fd ff ff 75 72 84 2f  54 00 00 00 13 01 00 00  |F...ur./T.......|
00020710  00 00 00 00 64 62 6f 78  74 63 6f 6c 5f 00 00 00  |....dboxtcol_...|
00020720  d0 42 02 00 46 ff ff ff  2a 41 e6 22 03 01 00 00  |.B..F...*A."....|
00020730  13 00 00 00 00 00 00 00  44 43 42 00 d4 43 02 00  |........DCB..C..|
00020740  46 ff ff ff fc 48 e6 22  9f 00 00 00 13 00 00 00  |F....H."........|
00020750  00 00 00 00 44 43 44 00  74 44 02 00 46 ff ff ff  |....DCD.tD..F...|
00020760  4f 84 b5 22 3f 00 00 00  13 00 00 00 00 00 00 00  |O.."?...........|
00020770  64 65 66 61 75 6c 74 00  b4 44 02 00 46 ff ff ff  |default..D..F...|
00020780  5d 31 e5 22 cf 02 00 00  13 00 00 00 00 00 00 00  |]1."............|
00020790  64 65 66 69 6e 65 00 00  84 47 02 00 46 ff ff ff  |define...G..F...|
000207a0  c0 89 f2 24 7d 00 00 00  13 00 00 00 00 00 00 00  |...$}...........|
000207b0  64 69 61 6c 6f 67 00 00  04 48 02 00 46 fd ff ff  |dialog...H..F...|
000207c0  08 73 84 2f 24 02 00 00  13 01 00 00 00 00 00 00  |.s./$...........|
000207d0  64 69 61 6c 6f 67 5f 00  d8 5d 02 00 46 ff ff ff  |dialog_..]..F...|
000207e0  2e d6 e1 22 da 00 00 00  13 00 00 00 00 00 00 00  |..."............|
000207f0  64 69 66 66 74 69 6d 65  00 00 00 00 b4 5e 02 00  |difftime.....^..|
00020800  46 ff ff ff 0c b7 f2 24  21 02 00 00 13 00 00 00  |F......$!.......|
00020810  00 00 00 00 44 69 73 70  61 74 63 68 00 00 00 00  |....Dispatch....|
00020820  d8 60 02 00 46 fd ff ff  74 74 84 2f 48 00 00 00  |.`..F...tt./H...|
00020830  13 01 00 00 00 00 00 00  44 69 73 70 61 74 63 68  |........Dispatch|
00020840  5f 00 00 00 f4 62 02 00  46 ff ff ff e5 36 de 22  |_....b..F....6."|
00020850  3e 01 00 00 13 00 00 00  00 00 00 00 64 69 76 00  |>...........div.|
00020860  34 64 02 00 46 fd ff ff  c2 74 84 2f 28 00 00 00  |4d..F....t./(...|
00020870  13 01 00 00 00 00 00 00  64 69 76 5f 00 00 00 00  |........div_....|
00020880  3c 65 02 00 46 fd ff ff  e3 74 84 2f 6c 00 00 00  |<e..F....t./l...|
00020890  13 01 00 00 00 00 00 00  44 4c 5f 00 44 6b 02 00  |........DL_.Dk..|
000208a0  46 ff ff ff fd 65 e4 22  df 02 00 00 13 00 00 00  |F....e."........|
000208b0  00 00 00 00 64 6f 00 00  24 6e 02 00 46 ff ff ff  |....do..$n..F...|
000208c0  1e aa f4 24 87 01 00 00  13 00 00 00 00 00 00 00  |...$............|
000208d0  44 72 61 67 00 00 00 00  ac 6f 02 00 46 fd ff ff  |Drag.....o..F...|
000208e0  59 75 84 2f 2c 01 00 00  13 01 00 00 00 00 00 00  |Yu./,...........|
000208f0  64 72 61 67 5f 00 00 00  cc 7d 02 00 46 ff ff ff  |drag_....}..F...|
00020900  c4 ae f4 24 06 01 00 00  13 00 00 00 00 00 00 00  |...$............|
00020910  44 72 61 67 41 53 70 72  00 00 00 00 d4 7e 02 00  |DragASpr.....~..|
00020920  46 fd ff ff 20 76 84 2f  70 00 00 00 13 01 00 00  |F... v./p.......|
00020930  00 00 00 00 44 72 61 67  41 53 70 72 69 74 65 5f  |....DragASprite_|
00020940  00 00 00 00 cc 85 02 00  46 ff ff ff d3 89 b5 22  |........F......"|
00020950  4f 00 00 00 13 00 00 00  00 00 00 00 64 72 61 77  |O...........draw|
00020960  00 00 00 00 1c 86 02 00  46 fd ff ff ae 76 84 2f  |........F....v./|
00020970  a0 09 00 00 13 01 00 00  00 00 00 00 44 72 61 77  |............Draw|
00020980  5f 00 00 00 70 e2 02 00  46 ff ff ff 20 2e 24 23  |_...p...F... .$#|
00020990  9a 02 00 00 13 00 00 00  00 00 00 00 64 72 61 77  |............draw|
000209a0  66 64 69 61 67 00 00 00  0c e5 02 00 46 fd ff ff  |fdiag.......F...|
000209b0  f2 7b 84 2f 2c 00 00 00  13 01 00 00 00 00 00 00  |.{./,...........|
000209c0  64 72 61 77 66 64 69 61  67 5f 00 00 f0 e5 02 00  |drawfdiag_......|
000209d0  46 ff ff ff 41 86 25 23  18 09 00 00 13 00 00 00  |F...A.%#........|
000209e0  00 00 00 00 64 72 61 77  66 65 72 72 6f 72 00 00  |....drawferror..|
000209f0  08 ef 02 00 46 ff ff ff  3b c4 26 23 eb 01 00 00  |....F...;.&#....|
00020a00  13 00 00 00 00 00 00 00  64 72 61 77 66 6f 62 6a  |........drawfobj|
00020a10  00 00 00 00 f4 f0 02 00  46 fd ff ff 3f 7c 84 2f  |........F...?|./|
00020a20  2c 00 00 00 13 01 00 00  00 00 00 00 64 72 61 77  |,...........draw|
00020a30  66 6f 62 6a 5f 00 00 00  d0 f1 02 00 46 ff ff ff  |fobj_.......F...|
00020a40  9d 07 27 23 7b 04 00 00  13 00 00 00 00 00 00 00  |..'#{...........|
00020a50  64 72 61 77 66 74 79 70  65 73 00 00 4c f6 02 00  |drawftypes..L...|
00020a60  46 ff ff ff 72 6c 45 23  de 03 00 00 13 00 00 00  |F...rlE#........|
00020a70  00 00 00 00 64 72 61 77  6d 6f 64 00 2c fa 02 00  |....drawmod.,...|
00020a80  46 fd ff ff a4 7c 84 2f  48 04 00 00 13 01 00 00  |F....|./H.......|
00020a90  00 00 00 00 64 72 61 77  6d 6f 64 5f 00 00 00 00  |....drawmod_....|
00020aa0  2c 25 03 00 46 fd ff ff  f1 7e 84 2f 2c 00 00 00  |,%..F....~./,...|
00020ab0  13 01 00 00 00 00 00 00  64 73 70 72 5f 00 00 00  |........dspr_...|
00020ac0  44 49 52 24 2c 01 00 00  2c 01 00 00 ec 0b 02 00  |DIR$,...,.......|
00020ad0  46 ff ff ff dd 7d b5 22  3a 00 00 00 13 00 00 00  |F....}.":.......|
00020ae0  00 00 00 00 44 49 47 00  28 0c 02 00 46 ff ff ff  |....DIG.(...F...|
00020af0  e4 7d b5 22 3e 00 00 00  13 00 00 00 00 00 00 00  |.}.">...........|
00020b00  45 50 53 49 4c 4f 4e 00  68 0c 02 00 46 ff ff ff  |EPSILON.h...F...|
00020b10  69 8e bc 22 8d 00 00 00  13 00 00 00 00 00 00 00  |i.."............|
00020b20  4d 41 4e 54 5f 44 49 47  00 00 00 00 f8 0c 02 00  |MANT_DIG........|
00020b30  46 ff ff ff 68 c8 bc 22  91 00 00 00 13 00 00 00  |F...h.."........|
00020b40  00 00 00 00 4d 41 58 00  8c 0d 02 00 46 ff ff ff  |....MAX.....F...|
00020b50  5f bd bc 22 90 00 00 00  13 00 00 00 00 00 00 00  |_.."............|
00020b60  4d 41 58 5f 31 30 5f 45  58 50 00 00 1c 0e 02 00  |MAX_10_EXP......|
00020b70  46 ff ff ff c0 b1 bc 22  85 00 00 00 13 00 00 00  |F......"........|
00020b80  00 00 00 00 4d 41 58 5f  45 58 50 00 a4 0e 02 00  |....MAX_EXP.....|
00020b90  46 ff ff ff 76 d7 bc 22  91 00 00 00 13 00 00 00  |F...v.."........|
00020ba0  00 00 00 00 4d 49 4e 00  38 0f 02 00 46 ff ff ff  |....MIN.8...F...|
00020bb0  bf a7 bc 22 90 00 00 00  13 00 00 00 00 00 00 00  |..."............|
00020bc0  4d 49 4e 5f 31 30 5f 45  58 50 00 00 c8 0f 02 00  |MIN_10_EXP......|
00020bd0  46 ff ff ff 59 9c bc 22  85 00 00 00 13 00 00 00  |F...Y.."........|
00020be0  00 00 00 00 4d 49 4e 5f  45 58 50 00 44 41 54 41  |....MIN_EXP.DATA|
00020bf0  3a 00 00 00 44 42 4c 5f  44 49 47 0a 54 68 69 73  |:...DBL_DIG.This|
00020c00  20 6d 61 63 72 6f 20 69  73 20 64 65 66 69 6e 65  | macro is define|
00020c10  64 20 69 6e 20 3c 66 6c  6f 61 74 2e 68 3d 3e 66  |d in <float.h=>f|
00020c20  6c 6f 61 74 3e 2e 00 00  44 41 54 41 3e 00 00 00  |loat>...DATA>...|
00020c30  44 42 4c 5f 45 50 53 49  4c 4f 4e 0a 54 68 69 73  |DBL_EPSILON.This|
00020c40  20 6d 61 63 72 6f 20 69  73 20 64 65 66 69 6e 65  | macro is define|
00020c50  64 20 69 6e 20 3c 66 6c  6f 61 74 2e 68 3d 3e 66  |d in <float.h=>f|
00020c60  6c 6f 61 74 3e 2e 00 00  44 41 54 41 8d 00 00 00  |loat>...DATA....|
00020c70  44 42 4c 5f 4d 41 4e 54  5f 44 49 47 0a 54 68 69  |DBL_MANT_DIG.Thi|
00020c80  73 20 6d 61 63 72 6f 20  69 73 20 64 65 66 69 6e  |s macro is defin|
00020c90  65 64 20 69 6e 20 3c 66  6c 6f 61 74 2e 68 3d 3e  |ed in <float.h=>|
00020ca0  66 6c 6f 61 74 3e 2e 20  49 74 20 67 69 76 65 73  |float>. It gives|
00020cb0  20 74 68 65 20 6e 75 6d  62 65 72 20 6f 66 20 64  | the number of d|
00020cc0  69 67 69 74 73 20 69 6e  20 74 68 65 20 6d 61 6e  |igits in the man|
00020cd0  74 69 73 73 61 20 6f 66  20 61 20 76 61 72 69 61  |tissa of a varia|
00020ce0  62 6c 65 20 6f 66 20 74  79 70 65 20 27 64 6f 75  |ble of type 'dou|
00020cf0  62 6c 65 27 2e 00 00 00  44 41 54 41 91 00 00 00  |ble'....DATA....|
00020d00  44 42 4c 5f 4d 41 58 0a  54 68 69 73 20 6d 61 63  |DBL_MAX.This mac|
00020d10  72 6f 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |ro is defined in|
00020d20  20 3c 66 6c 6f 61 74 2e  68 3d 3e 66 6c 6f 61 74  | <float.h=>float|
00020d30  3e 2e 20 49 74 20 67 69  76 65 73 20 74 68 65 20  |>. It gives the |
00020d40  6d 61 78 69 6d 75 6d 20  70 6f 73 69 74 69 76 65  |maximum positive|
00020d50  20 76 61 6c 75 65 20 74  68 61 74 20 63 61 6e 20  | value that can |
00020d60  62 65 20 73 74 6f 72 65  64 20 69 6e 20 61 20 76  |be stored in a v|
00020d70  61 72 69 61 62 6c 65 20  6f 66 20 74 79 70 65 20  |ariable of type |
00020d80  27 64 6f 75 62 6c 65 27  2e 00 00 00 44 41 54 41  |'double'....DATA|
00020d90  90 00 00 00 44 42 4c 5f  4d 41 58 5f 31 30 5f 45  |....DBL_MAX_10_E|
00020da0  58 50 0a 54 68 69 73 20  6d 61 63 72 6f 20 69 73  |XP.This macro is|
00020db0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 66 6c 6f  | defined in <flo|
00020dc0  61 74 2e 68 3d 3e 66 6c  6f 61 74 3e 2e 20 49 74  |at.h=>float>. It|
00020dd0  20 67 69 76 65 73 20 74  68 65 20 6d 61 78 69 6d  | gives the maxim|
00020de0  75 6d 20 62 61 73 65 20  31 30 20 65 78 70 6f 6e  |um base 10 expon|
00020df0  65 6e 74 20 61 20 76 61  72 69 61 62 6c 65 20 6f  |ent a variable o|
00020e00  66 20 74 79 70 65 20 27  64 6f 75 62 6c 65 27 20  |f type 'double' |
00020e10  63 61 6e 20 63 6f 6e 74  61 69 6e 2e 44 41 54 41  |can contain.DATA|
00020e20  85 00 00 00 44 42 4c 5f  4d 41 58 5f 45 58 50 0a  |....DBL_MAX_EXP.|
00020e30  54 68 69 73 20 6d 61 63  72 6f 20 69 73 20 64 65  |This macro is de|
00020e40  66 69 6e 65 64 20 69 6e  20 3c 66 6c 6f 61 74 2e  |fined in <float.|
00020e50  68 3d 3e 66 6c 6f 61 74  3e 2e 20 49 74 20 67 69  |h=>float>. It gi|
00020e60  76 65 73 20 74 68 65 20  6d 61 78 69 6d 75 6d 20  |ves the maximum |
00020e70  65 78 70 6f 6e 65 6e 74  20 61 20 76 61 72 69 61  |exponent a varia|
00020e80  62 6c 65 20 6f 66 20 74  79 70 65 20 27 64 6f 75  |ble of type 'dou|
00020e90  62 6c 65 27 20 63 61 6e  20 63 6f 6e 74 61 69 6e  |ble' can contain|
00020ea0  2e 00 00 00 44 41 54 41  91 00 00 00 44 42 4c 5f  |....DATA....DBL_|
00020eb0  4d 49 4e 0a 54 68 69 73  20 6d 61 63 72 6f 20 69  |MIN.This macro i|
00020ec0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 66 6c  |s defined in <fl|
00020ed0  6f 61 74 2e 68 3d 3e 66  6c 6f 61 74 3e 2e 20 49  |oat.h=>float>. I|
00020ee0  74 20 67 69 76 65 73 20  74 68 65 20 6d 69 6e 69  |t gives the mini|
00020ef0  6d 75 6d 20 70 6f 73 69  74 69 76 65 20 76 61 6c  |mum positive val|
00020f00  75 65 20 74 68 61 74 20  63 61 6e 20 62 65 20 73  |ue that can be s|
00020f10  74 6f 72 65 64 20 69 6e  20 61 20 76 61 72 69 61  |tored in a varia|
00020f20  62 6c 65 20 6f 66 20 74  79 70 65 20 27 64 6f 75  |ble of type 'dou|
00020f30  62 6c 65 27 2e 00 00 00  44 41 54 41 90 00 00 00  |ble'....DATA....|
00020f40  44 42 4c 5f 4d 49 4e 5f  31 30 5f 45 58 50 0a 54  |DBL_MIN_10_EXP.T|
00020f50  68 69 73 20 6d 61 63 72  6f 20 69 73 20 64 65 66  |his macro is def|
00020f60  69 6e 65 64 20 69 6e 20  3c 66 6c 6f 61 74 2e 68  |ined in <float.h|
00020f70  3d 3e 66 6c 6f 61 74 3e  2e 20 49 74 20 67 69 76  |=>float>. It giv|
00020f80  65 73 20 74 68 65 20 6d  69 6e 69 6d 75 6d 20 62  |es the minimum b|
00020f90  61 73 65 20 31 30 20 65  78 70 6f 6e 65 6e 74 20  |ase 10 exponent |
00020fa0  61 20 76 61 72 69 61 62  6c 65 20 6f 66 20 74 79  |a variable of ty|
00020fb0  70 65 20 27 64 6f 75 62  6c 65 27 20 63 61 6e 20  |pe 'double' can |
00020fc0  63 6f 6e 74 61 69 6e 2e  44 41 54 41 85 00 00 00  |contain.DATA....|
00020fd0  44 42 4c 5f 4d 49 4e 5f  45 58 50 0a 54 68 69 73  |DBL_MIN_EXP.This|
00020fe0  20 6d 61 63 72 6f 20 69  73 20 64 65 66 69 6e 65  | macro is define|
00020ff0  64 20 69 6e 20 3c 66 6c  6f 61 74 2e 68 3d 3e 66  |d in <float.h=>f|
00021000  6c 6f 61 74 3e 2e 20 49  74 20 67 69 76 65 73 20  |loat>. It gives |
00021010  74 68 65 20 6d 69 6e 69  6d 75 6d 20 65 78 70 6f  |the minimum expo|
00021020  6e 65 6e 74 20 61 20 76  61 72 69 61 62 6c 65 20  |nent a variable |
00021030  6f 66 20 74 79 70 65 20  27 64 6f 75 62 6c 65 27  |of type 'double'|
00021040  20 63 61 6e 20 63 6f 6e  74 61 69 6e 2e 00 00 00  | can contain....|
00021050  44 41 54 41 b0 02 00 00  64 62 6f 78 0a 54 68 65  |DATA....dbox.The|
00021060  20 74 79 70 65 20 64 62  6f 78 20 69 73 20 64 65  | type dbox is de|
00021070  66 69 6e 65 64 20 69 6e  20 3c 64 62 6f 78 2e 68  |fined in <dbox.h|
00021080  3d 3e 64 62 6f 78 5f 68  3e 20 61 73 20 61 20 74  |=>dbox_h> as a t|
00021090  79 70 65 20 63 61 70 61  62 6c 65 20 6f 66 20 68  |ype capable of h|
000210a0  6f 6c 64 69 6e 67 20 61  6e 20 61 62 73 74 72 61  |olding an abstra|
000210b0  63 74 20 64 69 61 6c 6f  67 75 65 20 62 6f 78 20  |ct dialogue box |
000210c0  68 61 6e 64 6c 65 2e 20  54 68 65 20 73 74 72 75  |handle. The stru|
000210d0  63 74 75 72 65 20 74 6f  20 77 68 69 63 68 20 74  |cture to which t|
000210e0  68 65 20 74 79 70 65 20  70 6f 69 6e 74 73 20 69  |he type points i|
000210f0  73 20 61 73 20 66 6f 6c  6c 6f 77 73 3a 0a 0a 5c  |s as follows:..\|
00021100  7b 0a 20 20 20 20 73 74  72 75 63 74 20 64 62 6f  |{.    struct dbo|
00021110  78 5f 5f 73 74 72 20 2a  6e 65 78 74 3b 09 2f 2a  |x__str *next;./*|
00021120  20 4c 69 6e 6b 65 64 20  6c 69 73 74 20 2a 2f 0a  | Linked list */.|
00021130  20 20 20 20 3c 77 69 6d  70 5f 77 3e 20 77 3b 0a  |    <wimp_w> w;.|
00021140  20 20 20 20 69 6e 74 20  70 6f 73 61 74 63 61 72  |    int posatcar|
00021150  65 74 3b 0a 20 20 20 20  69 6e 74 20 73 68 6f 77  |et;.    int show|
00021160  69 6e 67 3b 0a 20 20 20  20 3c 77 69 6d 70 5f 63  |ing;.    <wimp_c|
00021170  61 72 65 74 73 74 72 3e  20 63 61 72 65 74 73 74  |aretstr> caretst|
00021180  72 3b 0a 20 20 20 20 3c  64 62 6f 78 5f 68 61 6e  |r;.    <dbox_han|
00021190  64 6c 65 72 5f 70 72 6f  63 3e 20 65 76 65 6e 74  |dler_proc> event|
000211a0  70 72 6f 63 3b 0a 20 20  20 20 76 6f 69 64 20 2a  |proc;.    void *|
000211b0  65 76 65 6e 74 70 72 6f  63 68 61 6e 64 6c 65 3b  |eventprochandle;|
000211c0  0a 20 20 20 20 3c 64 62  6f 78 5f 72 61 77 5f 68  |.    <dbox_raw_h|
000211d0  61 6e 64 6c 65 72 5f 70  72 6f 63 3e 20 72 61 77  |andler_proc> raw|
000211e0  65 76 65 6e 74 70 72 6f  63 3b 20 09 0a 20 20 20  |eventproc; ..   |
000211f0  20 76 6f 69 64 20 2a 72  61 77 65 76 65 6e 74 70  | void *raweventp|
00021200  72 6f 63 68 61 6e 64 6c  65 3b 0a 20 20 20 20 3c  |rochandle;.    <|
00021210  64 62 6f 78 5f 66 69 65  6c 64 3e 20 66 69 65 6c  |dbox_field> fiel|
00021220  64 3b 0a 20 20 20 20 69  6e 74 20 66 69 65 6c 64  |d;.    int field|
00021230  77 61 69 74 69 6e 67 3b  0a 20 20 20 20 69 6e 74  |waiting;.    int|
00021240  20 65 76 65 6e 74 64 65  70 74 68 3b 0a 20 20 20  | eventdepth;.   |
00021250  20 69 6e 74 20 64 69 73  70 6f 73 65 70 65 6e 64  | int disposepend|
00021260  69 6e 67 3b 0a 20 20 20  20 63 68 61 72 20 6e 61  |ing;.    char na|
00021270  6d 65 5b 31 32 5d 3b 0a  20 20 20 20 63 68 61 72  |me[12];.    char|
00021280  20 2a 77 6f 72 6b 73 70  61 63 65 3b 0a 20 20 20  | *workspace;.   |
00021290  20 69 6e 74 20 77 6f 72  6b 73 70 61 63 65 73 69  | int workspacesi|
000212a0  7a 65 3b 0a 20 20 20 20  3c 77 69 6d 70 5f 77 69  |ze;.    <wimp_wi|
000212b0  6e 64 3e 20 77 69 6e 64  6f 77 3b 0a 7d 0a 54 68  |nd> window;.}.Th|
000212c0  69 73 20 73 74 72 75 63  74 75 72 65 20 69 73 20  |is structure is |
000212d0  61 20 7b 2f 7d 64 62 6f  78 5f 5f 73 74 72 7b 2f  |a {/}dbox__str{/|
000212e0  7d 2e 20 41 20 64 62 6f  78 20 69 73 20 61 20 7b  |}. A dbox is a {|
000212f0  2f 7d 64 62 6f 78 5f 5f  73 74 72 2a 7b 2f 7d 2e  |/}dbox__str*{/}.|
00021300  44 49 52 24 38 04 00 00  38 04 00 00 38 17 02 00  |DIR$8...8...8...|
00021310  46 ff ff ff 7d e9 1e 23  92 00 00 00 13 00 00 00  |F...}..#........|
00021320  00 00 00 00 43 4c 4f 53  45 00 00 00 cc 17 02 00  |....CLOSE.......|
00021330  46 fd ff ff 5f 10 1e 23  7d 00 00 00 13 00 00 00  |F..._..#}.......|
00021340  00 00 00 00 63 72 64 6c  5f 00 00 00 4c 18 02 00  |....crdl_...L...|
00021350  46 fd ff ff 35 32 1e 23  9b 00 00 00 13 00 00 00  |F...52.#........|
00021360  00 00 00 00 63 74 72 6c  5f 00 00 00 e8 18 02 00  |....ctrl_.......|
00021370  46 ff ff ff ea 15 1e 23  c7 00 00 00 13 00 00 00  |F......#........|
00021380  00 00 00 00 64 69 73 70  6f 73 65 00 b0 19 02 00  |....dispose.....|
00021390  46 ff ff ff 85 7d 1e 23  c6 01 00 00 13 00 00 00  |F....}.#........|
000213a0  00 00 00 00 65 76 65 6e  74 68 61 6e 64 6c 65 72  |....eventhandler|
000213b0  00 00 00 00 78 1b 02 00  46 fd ff ff 68 6d 1e 23  |....x...F...hm.#|
000213c0  79 00 00 00 13 00 00 00  00 00 00 00 65 76 6e 74  |y...........evnt|
000213d0  5f 00 00 00 f4 1b 02 00  46 ff ff ff 73 37 1e 23  |_.......F...s7.#|
000213e0  da 00 00 00 13 00 00 00  00 00 00 00 66 61 64 65  |............fade|
000213f0  66 69 65 6c 64 00 00 00  d0 1c 02 00 46 ff ff ff  |field.......F...|
00021400  63 19 1f 23 b4 00 00 00  13 00 00 00 00 00 00 00  |c..#............|
00021410  66 69 65 6c 64 00 00 00  84 1d 02 00 46 ff ff ff  |field.......F...|
00021420  98 1c 1f 23 42 01 00 00  13 00 00 00 00 00 00 00  |...#B...........|
00021430  66 69 65 6c 64 74 79 70  65 00 00 00 c8 1e 02 00  |fieldtype.......|
00021440  46 ff ff ff 4c c0 1e 23  13 01 00 00 13 00 00 00  |F...L..#........|
00021450  00 00 00 00 66 69 6c 6c  69 6e 00 00 dc 1f 02 00  |....fillin......|
00021460  46 ff ff ff 6c 84 1e 23  d6 00 00 00 13 00 00 00  |F...l..#........|
00021470  00 00 00 00 67 65 74 00  b4 20 02 00 46 ff ff ff  |....get.. ..F...|
00021480  e6 3d 1e 23 37 01 00 00  13 00 00 00 00 00 00 00  |.=.#7...........|
00021490  67 65 74 66 69 65 6c 64  00 00 00 00 ec 21 02 00  |getfield.....!..|
000214a0  46 ff ff ff 09 48 1e 23  36 01 00 00 13 00 00 00  |F....H.#6.......|
000214b0  00 00 00 00 67 65 74 6e  75 6d 65 72 69 63 00 00  |....getnumeric..|
000214c0  24 23 02 00 46 ff ff ff  66 34 1f 23 77 02 00 00  |$#..F...f4.#w...|
000214d0  13 00 00 00 00 00 00 00  68 00 00 00 9c 25 02 00  |........h....%..|
000214e0  46 ff ff ff ed 2b 1f 23  d6 00 00 00 13 00 00 00  |F....+.#........|
000214f0  00 00 00 00 68 61 6e 64  6c 65 72 5f 70 72 6f 63  |....handler_proc|
00021500  00 00 00 00 74 26 02 00  46 ff ff ff a8 1a 1e 23  |....t&..F......#|
00021510  b3 00 00 00 13 00 00 00  00 00 00 00 68 69 64 65  |............hide|
00021520  00 00 00 00 28 27 02 00  46 ff ff ff eb cd 1e 23  |....('..F......#|
00021530  e5 00 00 00 13 00 00 00  00 00 00 00 69 6e 69 74  |............init|
00021540  00 00 00 00 10 28 02 00  46 ff ff ff 7e 1f 1e 23  |.....(..F...~..#|
00021550  3d 01 00 00 13 00 00 00  00 00 00 00 6e 65 77 00  |=...........new.|
00021560  50 29 02 00 46 fd ff ff  a9 b2 1e 23 9a 00 00 00  |P)..F......#....|
00021570  13 00 00 00 00 00 00 00  70 65 6e 64 5f 00 00 00  |........pend_...|
00021580  ec 29 02 00 46 ff ff ff  76 d6 1e 23 fc 00 00 00  |.)..F...v..#....|
00021590  13 00 00 00 00 00 00 00  70 65 72 73 69 73 74 00  |........persist.|
000215a0  e8 2a 02 00 46 ff ff ff  2f de 1e 23 7f 01 00 00  |.*..F.../..#....|
000215b0  13 00 00 00 00 00 00 00  70 6f 70 75 70 00 00 00  |........popup...|
000215c0  68 2c 02 00 46 ff ff ff  e3 ab 1e 23 e0 00 00 00  |h,..F......#....|
000215d0  13 00 00 00 00 00 00 00  72 65 61 64 00 00 00 00  |........read....|
000215e0  48 2d 02 00 46 ff ff ff  ba 50 1e 23 0a 01 00 00  |H-..F....P.#....|
000215f0  13 00 00 00 00 00 00 00  73 65 74 66 69 65 6c 64  |........setfield|
00021600  00 00 00 00 54 2e 02 00  46 ff ff ff 7f 58 1e 23  |....T...F....X.#|
00021610  3b 01 00 00 13 00 00 00  00 00 00 00 73 65 74 6e  |;...........setn|
00021620  75 6d 65 72 69 63 00 00  90 2f 02 00 46 ff ff ff  |umeric.../..F...|
00021630  09 26 1e 23 68 01 00 00  13 00 00 00 00 00 00 00  |.&.#h...........|
00021640  73 68 6f 77 00 00 00 00  f8 30 02 00 46 ff ff ff  |show.....0..F...|
00021650  f4 2c 1e 23 22 01 00 00  13 00 00 00 00 00 00 00  |.,.#"...........|
00021660  73 68 6f 77 73 74 61 74  69 63 00 00 1c 32 02 00  |showstatic...2..|
00021670  46 ff ff ff 12 e4 1e 23  03 01 00 00 13 00 00 00  |F......#........|
00021680  00 00 00 00 73 79 73 68  61 6e 64 6c 65 00 00 00  |....syshandle...|
00021690  20 33 02 00 46 ff ff ff  f7 5c 1e 23 cf 00 00 00  | 3..F....\.#....|
000216a0  13 00 00 00 00 00 00 00  75 6e 66 61 64 65 66 69  |........unfadefi|
000216b0  65 6c 64 00 f0 33 02 00  46 ff ff ff de a5 1e 23  |eld..3..F......#|
000216c0  28 02 00 00 13 00 00 00  00 00 00 00 72 61 77 5f  |(...........raw_|
000216d0  65 76 65 6e 74 68 61 6e  64 6c 65 72 00 00 00 00  |eventhandler....|
000216e0  18 36 02 00 46 ff ff ff  93 40 1f 23 eb 00 00 00  |.6..F....@.#....|
000216f0  13 00 00 00 00 00 00 00  72 61 77 5f 68 61 6e 64  |........raw_hand|
00021700  6c 65 72 5f 70 72 6f 63  00 00 00 00 04 37 02 00  |ler_proc.....7..|
00021710  46 ff ff ff e5 c6 1e 23  fb 00 00 00 13 00 00 00  |F......#........|
00021720  00 00 00 00 66 69 6c 6c  69 6e 5f 66 69 78 65 64  |....fillin_fixed|
00021730  63 61 72 65 74 00 00 00  44 41 54 41 92 00 00 00  |caret...DATA....|
00021740  64 62 6f 78 5f 43 4c 4f  53 45 0a 54 68 65 20 6d  |dbox_CLOSE.The m|
00021750  61 63 72 6f 20 7b 2f 7d  64 62 6f 78 5f 43 4c 4f  |acro {/}dbox_CLO|
00021760  53 45 7b 2f 7d 20 69 73  20 64 65 66 69 6e 65 64  |SE{/} is defined|
00021770  20 69 6e 20 3c 64 62 6f  78 2e 68 3d 3e 64 62 6f  | in <dbox.h=>dbo|
00021780  78 5f 68 3e 20 61 73 20  74 68 65 20 76 61 6c 75  |x_h> as the valu|
00021790  65 20 72 65 74 75 72 6e  65 64 20 77 68 65 6e 20  |e returned when |
000217a0  74 68 65 20 64 69 61 6c  6f 67 75 65 20 69 73 20  |the dialogue is |
000217b0  63 6c 6f 73 65 64 20 75  73 69 6e 67 20 61 20 63  |closed using a c|
000217c0  6c 6f 73 65 20 69 63 6f  6e 2e 00 00 44 41 54 41  |lose icon...DATA|
000217d0  7d 00 00 00 43 72 65 61  74 69 6e 67 2f 44 65 6c  |}...Creating/Del|
000217e0  65 74 69 6e 67 20 46 75  6e 63 74 69 6f 6e 73 0a  |eting Functions.|
000217f0  23 54 61 62 6c 65 20 33  20 31 36 0a 3c 64 62 6f  |#Table 3 16.<dbo|
00021800  78 5f 64 69 73 70 6f 73  65 3e 0a 3c 64 62 6f 78  |x_dispose>.<dbox|
00021810  5f 68 69 64 65 3e 0a 3c  64 62 6f 78 5f 6e 65 77  |_hide>.<dbox_new|
00021820  3e 0a 3c 64 62 6f 78 5f  73 68 6f 77 3e 0a 3c 64  |>.<dbox_show>.<d|
00021830  62 6f 78 5f 73 68 6f 77  73 74 61 74 69 63 3e 0a  |box_showstatic>.|
00021840  23 45 6e 64 54 61 62 6c  65 00 00 00 44 41 54 41  |#EndTable...DATA|
00021850  9b 00 00 00 43 6f 6e 74  72 6f 6c 6c 69 6e 67 20  |....Controlling |
00021860  46 75 6e 63 74 69 6f 6e  73 0a 23 54 61 62 6c 65  |Functions.#Table|
00021870  20 33 20 31 38 0a 3c 64  62 6f 78 5f 66 61 64 65  | 3 18.<dbox_fade|
00021880  66 69 65 6c 64 3e 0a 3c  64 62 6f 78 5f 67 65 74  |field>.<dbox_get|
*
000218a0  6e 75 6d 65 72 69 63 3e  0a 3c 64 62 6f 78 5f 73  |numeric>.<dbox_s|
000218b0  65 74 66 69 65 6c 64 3e  0a 3c 64 62 6f 78 5f 73  |etfield>.<dbox_s|
000218c0  65 74 6e 75 6d 65 72 69  63 3e 0a 3c 64 62 6f 78  |etnumeric>.<dbox|
000218d0  5f 75 6e 66 61 64 65 66  69 65 6c 64 3e 0a 23 45  |_unfadefield>.#E|
000218e0  6e 64 54 61 62 6c 65 00  44 41 54 41 c7 00 00 00  |ndTable.DATA....|
000218f0  64 62 6f 78 5f 64 69 73  70 6f 73 65 0a 53 79 6e  |dbox_dispose.Syn|
00021900  74 61 78 3a 09 76 6f 69  64 20 64 62 6f 78 5f 64  |tax:.void dbox_d|
00021910  69 73 70 6f 73 65 20 28  3c 64 62 6f 78 3e 20 2a  |ispose (<dbox> *|
00021920  70 29 3b 0a 48 65 61 64  65 72 3a 09 3c 64 62 6f  |p);.Header:.<dbo|
00021930  78 2e 68 3d 3e 64 62 6f  78 5f 68 3e 0a 0a 54 68  |x.h=>dbox_h>..Th|
00021940  69 73 20 66 75 6e 63 74  69 6f 6e 20 64 69 73 70  |is function disp|
00021950  6f 73 65 73 20 6f 66 20  74 68 65 20 64 69 61 6c  |oses of the dial|
00021960  6f 67 75 65 20 62 6f 78  20 77 68 6f 73 65 20 68  |ogue box whose h|
00021970  61 6e 64 6c 65 20 69 73  20 70 6f 69 6e 74 65 64  |andle is pointed|
00021980  20 74 6f 20 62 79 20 2f  70 2f 2e 20 49 74 20 61  | to by /p/. It a|
00021990  6c 73 6f 20 72 65 6d 6f  76 65 73 20 69 74 20 66  |lso removes it f|
000219a0  72 6f 6d 20 74 68 65 20  73 63 72 65 65 6e 2e 00  |rom the screen..|
000219b0  44 41 54 41 c6 01 00 00  64 62 6f 78 5f 65 76 65  |DATA....dbox_eve|
000219c0  6e 74 68 61 6e 64 6c 65  72 0a 53 79 6e 74 61 78  |nthandler.Syntax|
000219d0  3a 09 76 6f 69 64 20 64  62 6f 78 5f 65 76 65 6e  |:.void dbox_even|
000219e0  74 68 61 6e 64 6c 65 72  20 28 3c 64 62 6f 78 3e  |thandler (<dbox>|
000219f0  20 64 2c 20 3c 64 62 6f  78 5f 68 61 6e 64 6c 65  | d, <dbox_handle|
00021a00  72 5f 70 72 6f 63 3e 20  70 72 6f 63 2c 20 76 6f  |r_proc> proc, vo|
00021a10  69 64 20 2a 68 61 6e 64  6c 65 29 3b 0a 48 65 61  |id *handle);.Hea|
00021a20  64 65 72 3a 09 3c 64 62  6f 78 2e 68 3d 3e 64 62  |der:.<dbox.h=>db|
00021a30  6f 78 5f 68 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |ox_h>..This func|
00021a40  74 69 6f 6e 20 64 65 73  69 67 6e 61 74 65 73 20  |tion designates |
00021a50  61 20 68 61 6e 64 6c 65  72 20 77 68 69 63 68 20  |a handler which |
00021a60  77 69 6c 6c 20 62 65 20  63 61 6c 6c 65 64 20 77  |will be called w|
00021a70  69 74 68 20 74 68 65 20  68 61 6e 64 6c 65 20 67  |ith the handle g|
00021a80  69 76 65 6e 20 77 68 65  6e 65 76 65 72 20 61 20  |iven whenever a |
00021a90  66 69 65 6c 64 20 69 6e  20 74 68 65 20 73 70 65  |field in the spe|
00021aa0  63 69 66 69 65 64 20 64  69 61 6c 6f 67 75 65 20  |cified dialogue |
00021ab0  62 6f 78 20 69 73 20 61  63 74 69 76 61 74 65 64  |box is activated|
00021ac0  2e 20 54 68 65 20 68 61  6e 64 6c 65 72 20 69 73  |. The handler is|
00021ad0  20 61 20 66 75 6e 63 74  69 6f 6e 20 77 68 6f 73  | a function whos|
00021ae0  65 20 70 72 6f 74 6f 74  79 70 65 20 69 73 3a 0a  |e prototype is:.|
00021af0  7b 66 43 6f 64 65 3b 61  6c 69 67 6e 20 63 65 6e  |{fCode;align cen|
00021b00  74 72 65 7d 76 6f 69 64  20 70 72 6f 63 20 28 64  |tre}void proc (d|
00021b10  62 6f 78 20 64 2c 20 76  6f 69 64 20 2a 68 61 6e  |box d, void *han|
00021b20  64 6c 65 29 3b 7b 66 3b  61 6c 69 67 6e 7d 0a 0a  |dle);{f;align}..|
00021b30  54 68 65 20 68 61 6e 64  6c 65 20 69 73 20 61 20  |The handle is a |
00021b40  75 73 65 72 2d 64 65 66  69 6e 65 64 20 70 6f 69  |user-defined poi|
00021b50  6e 74 65 72 20 28 69 65  20 69 74 20 6d 61 79 20  |nter (ie it may |
00021b60  62 65 20 61 6e 79 74 68  69 6e 67 20 79 6f 75 20  |be anything you |
00021b70  6c 69 6b 65 29 2e 00 00  44 41 54 41 79 00 00 00  |like)...DATAy...|
00021b80  45 76 65 6e 74 20 48 61  6e 64 6c 69 6e 67 20 46  |Event Handling F|
00021b90  75 6e 63 74 69 6f 6e 73  0a 23 54 61 62 6c 65 20  |unctions.#Table |
00021ba0  32 20 32 30 0a 3c 64 62  6f 78 5f 65 76 65 6e 74  |2 20.<dbox_event|
00021bb0  68 61 6e 64 6c 65 72 3e  0a 3c 64 62 6f 78 5f 67  |handler>.<dbox_g|
00021bc0  65 74 3e 0a 3c 64 62 6f  78 5f 72 61 77 5f 65 76  |et>.<dbox_raw_ev|
00021bd0  65 6e 74 68 61 6e 64 6c  65 72 3e 0a 3c 64 62 6f  |enthandler>.<dbo|
00021be0  78 5f 72 65 61 64 3e 0a  23 45 6e 64 54 61 62 6c  |x_read>.#EndTabl|
00021bf0  65 00 00 00 44 41 54 41  da 00 00 00 64 62 6f 78  |e...DATA....dbox|
00021c00  5f 66 61 64 65 66 69 65  6c 64 0a 53 79 6e 74 61  |_fadefield.Synta|
00021c10  78 3a 09 76 6f 69 64 20  64 62 6f 78 5f 66 61 64  |x:.void dbox_fad|
00021c20  65 66 69 65 6c 64 20 28  3c 64 62 6f 78 3e 20 64  |efield (<dbox> d|
00021c30  2c 20 3c 64 62 6f 78 5f  66 69 65 6c 64 3e 20 66  |, <dbox_field> f|
00021c40  29 3b 0a 48 65 61 64 65  72 3a 09 3c 64 62 6f 78  |);.Header:.<dbox|
00021c50  2e 68 3d 3e 64 62 6f 78  5f 68 3e 0a 0a 54 68 69  |.h=>dbox_h>..Thi|
00021c60  73 20 66 75 6e 63 74 69  6f 6e 20 66 61 64 65 73  |s function fades|
00021c70  20 28 6f 72 20 73 68 61  64 65 73 20 69 6e 20 41  | (or shades in A|
00021c80  63 6f 72 6e 2d 73 70 65  61 6b 29 20 74 68 65 20  |corn-speak) the |
00021c90  73 70 65 63 69 66 69 65  64 20 66 69 65 6c 64 20  |specified field |
00021ca0  73 6f 20 74 68 61 74 20  69 74 20 6e 6f 20 6c 6f  |so that it no lo|
00021cb0  6e 67 65 72 20 72 65 73  70 6f 6e 64 73 20 74 6f  |nger responds to|
00021cc0  20 6d 6f 75 73 65 20 63  6c 69 63 6b 73 2e 00 00  | mouse clicks...|
00021cd0  44 41 54 41 b4 00 00 00  64 62 6f 78 5f 66 69 65  |DATA....dbox_fie|
00021ce0  6c 64 0a 54 68 65 20 74  79 70 65 20 7b 2f 7d 64  |ld.The type {/}d|
00021cf0  62 6f 78 5f 66 69 65 6c  64 7b 2f 7d 20 69 73 20  |box_field{/} is |
00021d00  64 65 66 69 6e 65 64 20  69 6e 20 3c 64 62 6f 78  |defined in <dbox|
00021d10  2e 68 3d 3e 64 62 6f 78  5f 68 3e 20 61 73 20 61  |.h=>dbox_h> as a|
00021d20  20 74 79 70 65 20 63 61  70 61 62 6c 65 20 6f 66  | type capable of|
00021d30  20 68 6f 6c 64 69 6e 67  20 61 6e 79 20 66 69 65  | holding any fie|
00021d40  6c 64 20 6e 75 6d 62 65  72 20 77 69 74 68 69 6e  |ld number within|
00021d50  20 61 20 64 69 61 6c 6f  67 75 65 20 62 6f 78 2e  | a dialogue box.|
00021d60  20 49 74 20 69 73 20 61  63 74 75 61 6c 6c 79 20  | It is actually |
00021d70  64 65 66 69 6e 65 64 20  61 73 20 61 6e 20 2f 69  |defined as an /i|
00021d80  6e 74 2f 2e 44 41 54 41  42 01 00 00 64 62 6f 78  |nt/.DATAB...dbox|
00021d90  5f 66 69 65 6c 64 74 79  70 65 0a 54 68 65 20 74  |_fieldtype.The t|
00021da0  79 70 65 20 7b 2f 7d 64  62 6f 78 5f 66 69 65 6c  |ype {/}dbox_fiel|
00021db0  64 74 79 70 65 7b 2f 7d  20 69 73 20 64 65 66 69  |dtype{/} is defi|
00021dc0  6e 65 64 20 69 6e 20 3c  64 62 6f 78 2e 68 3d 3e  |ned in <dbox.h=>|
00021dd0  64 62 6f 78 5f 68 3e 20  61 73 20 61 20 74 79 70  |dbox_h> as a typ|
00021de0  65 20 63 61 70 61 62 6c  65 20 6f 66 20 73 70 65  |e capable of spe|
00021df0  63 69 66 79 69 6e 67 20  61 20 66 69 65 6c 64 20  |cifying a field |
00021e00  74 79 70 65 2e 20 49 74  20 69 73 20 61 6e 20 65  |type. It is an e|
00021e10  6e 75 6d 65 72 61 74 65  64 20 74 79 70 65 20 61  |numerated type a|
00021e20  73 20 66 6f 6c 6c 6f 77  73 3a 0a 0a 65 6e 75 6d  |s follows:..enum|
00021e30  0a 5c 7b 0a 20 20 20 20  64 62 6f 78 5f 46 41 43  |.\{.    dbox_FAC|
00021e40  54 49 4f 4e 2c 09 2f 2a  20 41 63 74 69 6f 6e 20  |TION,./* Action |
00021e50  66 69 65 6c 64 20 2a 2f  0a 20 20 20 20 64 62 6f  |field */.    dbo|
00021e60  78 5f 46 4f 55 54 50 55  54 2c 09 2f 2a 20 4f 75  |x_FOUTPUT,./* Ou|
00021e70  74 70 75 74 20 66 69 65  6c 64 20 2a 2f 0a 20 20  |tput field */.  |
00021e80  20 20 64 62 6f 78 5f 46  49 4e 50 55 54 2c 09 2f  |  dbox_FINPUT,./|
00021e90  2a 20 49 6e 70 75 74 20  66 69 65 6c 64 20 2a 2f  |* Input field */|
00021ea0  0a 20 20 20 20 64 62 6f  78 5f 46 4f 4e 4f 46 46  |.    dbox_FONOFF|
00021eb0  2c 09 2f 2a 20 4f 6e 2f  4f 66 66 20 66 69 65 6c  |,./* On/Off fiel|
00021ec0  64 20 2a 2f 0a 7d 00 00  44 41 54 41 13 01 00 00  |d */.}..DATA....|
00021ed0  64 62 6f 78 5f 66 69 6c  6c 69 6e 0a 53 79 6e 74  |dbox_fillin.Synt|
00021ee0  61 78 3a 09 3c 64 62 6f  78 5f 66 69 65 6c 64 3e  |ax:.<dbox_field>|
00021ef0  20 64 62 6f 78 5f 66 69  6c 6c 69 6e 20 28 3c 64  | dbox_fillin (<d|
00021f00  62 6f 78 3e 20 64 29 3b  0a 48 65 61 64 65 72 3a  |box> d);.Header:|
00021f10  09 3c 64 62 6f 78 2e 68  3d 3e 64 62 6f 78 5f 68  |.<dbox.h=>dbox_h|
00021f20  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 54 68 65 20  |>..Returns:.The |
00021f30  61 63 74 69 76 61 74 65  64 20 66 69 65 6c 64 2e  |activated field.|
00021f40  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00021f50  70 72 6f 63 65 73 73 65  73 20 65 76 65 6e 74 73  |processes events|
00021f60  20 75 6e 74 69 6c 20 61  20 66 69 65 6c 64 20 69  | until a field i|
00021f70  6e 20 74 68 65 20 64 69  61 6c 6f 67 75 65 20 62  |n the dialogue b|
00021f80  6f 78 20 69 73 20 61 63  74 69 76 61 74 65 64 2e  |ox is activated.|
00021f90  20 54 68 65 20 63 61 72  65 74 20 69 73 20 61 6c  | The caret is al|
00021fa0  73 6f 20 70 6c 61 63 65  64 20 69 6e 20 74 68 65  |so placed in the|
00021fb0  20 66 69 72 73 74 20 77  72 69 74 65 61 62 6c 65  | first writeable|
00021fc0  20 66 69 65 6c 64 20 69  6e 20 74 68 65 20 64 69  | field in the di|
00021fd0  61 6c 6f 67 75 65 20 62  6f 78 2e 00 44 41 54 41  |alogue box..DATA|
00021fe0  d6 00 00 00 64 62 6f 78  5f 67 65 74 0a 53 79 6e  |....dbox_get.Syn|
00021ff0  74 61 78 3a 09 3c 64 62  6f 78 5f 66 69 65 6c 64  |tax:.<dbox_field|
00022000  3e 20 64 62 6f 78 5f 67  65 74 20 28 3c 64 62 6f  |> dbox_get (<dbo|
00022010  78 3e 20 64 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |x> d);.Header:.<|
00022020  64 62 6f 78 2e 68 3d 3e  64 62 6f 78 5f 68 3e 0a  |dbox.h=>dbox_h>.|
00022030  0a 52 65 74 75 72 6e 73  3a 09 54 68 65 20 61 63  |.Returns:.The ac|
00022040  74 69 76 61 74 65 64 20  66 69 65 6c 64 20 6e 75  |tivated field nu|
00022050  6d 62 65 72 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |mber...This func|
00022060  74 69 6f 6e 20 72 65 61  64 73 20 74 68 65 20 66  |tion reads the f|
00022070  69 65 6c 64 20 6e 75 6d  62 65 72 20 6f 66 20 74  |ield number of t|
00022080  68 65 20 61 63 74 69 76  61 74 65 64 20 66 69 65  |he activated fie|
00022090  6c 64 20 61 6e 64 20 63  61 6e 63 65 6c 73 20 74  |ld and cancels t|
000220a0  68 65 20 65 76 65 6e 74  2e 20 49 20 74 68 69 6e  |he event. I thin|
000220b0  6b 2e 00 00 44 41 54 41  37 01 00 00 64 62 6f 78  |k...DATA7...dbox|
000220c0  5f 67 65 74 66 69 65 6c  64 0a 53 79 6e 74 61 78  |_getfield.Syntax|
000220d0  3a 09 76 6f 69 64 20 64  62 6f 78 5f 67 65 74 66  |:.void dbox_getf|
000220e0  69 65 6c 64 20 28 3c 64  62 6f 78 3e 20 64 2c 20  |ield (<dbox> d, |
000220f0  3c 64 62 6f 78 5f 66 69  65 6c 64 3e 20 66 2c 20  |<dbox_field> f, |
00022100  63 68 61 72 20 2a 62 75  66 2c 20 69 6e 74 20 73  |char *buf, int s|
00022110  69 7a 65 29 3b 0a 48 65  61 64 65 72 3a 09 3c 64  |ize);.Header:.<d|
00022120  62 6f 78 2e 68 3d 3e 64  62 6f 78 5f 68 3e 0a 0a  |box.h=>dbox_h>..|
00022130  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 72 65  |This function re|
00022140  61 64 73 20 74 68 65 20  63 6f 6e 74 65 6e 74 73  |ads the contents|
00022150  20 6f 66 20 74 68 65 20  73 70 65 63 69 66 69 65  | of the specifie|
00022160  64 20 66 69 65 6c 64 20  69 6e 20 74 68 65 20 73  |d field in the s|
00022170  70 65 63 69 66 69 65 64  20 64 69 61 6c 6f 67 75  |pecified dialogu|
00022180  65 20 62 6f 78 20 61 6e  64 20 72 65 74 75 72 6e  |e box and return|
00022190  73 20 69 74 73 20 63 6f  6e 74 65 6e 74 73 20 69  |s its contents i|
000221a0  6e 20 74 68 65 20 63 68  61 72 61 63 74 65 72 20  |n the character |
000221b0  61 72 72 61 79 20 70 6f  69 6e 74 65 64 20 74 6f  |array pointed to|
000221c0  20 62 79 20 2f 62 75 66  2f 2e 20 2f 73 69 7a 65  | by /buf/. /size|
000221d0  2f 20 69 73 20 74 68 65  20 73 69 7a 65 20 6f 66  |/ is the size of|
000221e0  20 74 68 65 20 61 72 72  61 79 2e 00 44 41 54 41  | the array..DATA|
000221f0  36 01 00 00 64 62 6f 78  5f 67 65 74 6e 75 6d 65  |6...dbox_getnume|
00022200  72 69 63 0a 53 79 6e 74  61 78 3a 09 69 6e 74 20  |ric.Syntax:.int |
00022210  64 62 6f 78 5f 67 65 74  6e 75 6d 65 72 69 63 20  |dbox_getnumeric |
00022220  28 3c 64 62 6f 78 3e 20  64 2c 20 3c 64 62 6f 78  |(<dbox> d, <dbox|
00022230  5f 66 69 65 6c 64 3e 20  66 29 3b 0a 48 65 61 64  |_field> f);.Head|
00022240  65 72 3a 09 3c 64 62 6f  78 2e 68 3d 3e 64 62 6f  |er:.<dbox.h=>dbo|
00022250  78 5f 68 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 54  |x_h>..Returns:.T|
00022260  68 65 20 66 69 65 6c 64  20 63 6f 6e 74 65 6e 74  |he field content|
00022270  73 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |s...This functio|
00022280  6e 20 63 6f 6e 76 65 72  74 73 20 74 68 65 20 63  |n converts the c|
00022290  6f 6e 74 65 6e 74 73 20  6f 66 20 74 68 65 20 66  |ontents of the f|
000222a0  69 65 6c 64 20 69 6e 74  6f 20 61 20 73 69 67 6e  |ield into a sign|
000222b0  65 64 20 69 6e 74 65 67  65 72 20 61 6e 64 20 72  |ed integer and r|
000222c0  65 74 75 72 6e 73 20 69  74 2e 20 49 66 20 74 68  |eturns it. If th|
000222d0  65 20 66 69 65 6c 64 20  69 73 20 61 6e 20 6f 6e  |e field is an on|
000222e0  2f 6f 66 66 20 66 69 65  6c 64 2c 20 74 68 65 6e  |/off field, then|
000222f0  20 69 74 20 72 65 74 75  72 6e 73 20 31 20 69 66  | it returns 1 if|
00022300  20 74 68 65 20 66 69 65  6c 64 20 69 73 20 73 65  | the field is se|
00022310  74 2c 20 61 6e 64 20 30  20 69 66 20 75 6e 73 65  |t, and 0 if unse|
00022320  74 2e 00 00 44 41 54 41  77 02 00 00 64 62 6f 78  |t...DATAw...dbox|
00022330  2e 68 0a 23 50 61 72 65  6e 74 20 72 6f 5f 61 6e  |.h.#Parent ro_an|
00022340  73 69 63 5f 0a 54 68 65  20 5c 3c 64 62 6f 78 2e  |sic_.The \<dbox.|
00022350  68 3e 20 68 65 61 64 65  72 20 64 65 63 6c 61 72  |h> header declar|
00022360  65 73 20 61 20 6e 75 6d  62 65 72 20 6f 66 20 66  |es a number of f|
00022370  75 6e 63 74 69 6f 6e 73  20 66 6f 72 20 68 61 6e  |unctions for han|
00022380  64 6c 69 6e 67 20 64 69  61 6c 6f 67 75 65 20 62  |dling dialogue b|
00022390  6f 78 65 73 2e 20 49 74  20 61 6c 73 6f 20 64 65  |oxes. It also de|
000223a0  66 69 6e 65 73 20 61 20  66 65 77 20 74 79 70 65  |fines a few type|
000223b0  73 20 72 65 6c 61 74 69  6e 67 20 74 6f 20 64 69  |s relating to di|
000223c0  61 6c 6f 67 75 65 20 62  6f 78 65 73 2e 0a 0a 46  |alogue boxes...F|
000223d0  75 6e 63 74 69 6f 6e 73  3a 0a 0a 23 49 6e 64 65  |unctions:..#Inde|
000223e0  6e 74 20 31 30 0a 23 54  61 62 6c 65 20 32 20 32  |nt 10.#Table 2 2|
000223f0  30 0a 3c 43 72 65 61 74  69 6e 67 2f 44 65 6c 65  |0.<Creating/Dele|
00022400  74 69 6e 67 3d 3e 64 62  6f 78 5f 63 72 64 6c 5f  |ting=>dbox_crdl_|
00022410  3e 0a 3c 43 6f 6e 74 72  6f 6c 6c 69 6e 67 3d 3e  |>.<Controlling=>|
00022420  64 62 6f 78 5f 63 74 72  6c 5f 3e 0a 3c 45 76 65  |dbox_ctrl_>.<Eve|
00022430  6e 74 20 68 61 6e 64 6c  69 6e 67 3d 3e 64 62 6f  |nt handling=>dbo|
00022440  78 5f 65 76 6e 74 5f 3e  0a 3c 50 65 6e 64 69 6e  |x_evnt_>.<Pendin|
00022450  67 20 6f 70 65 72 61 74  69 6f 6e 73 3d 3e 64 62  |g operations=>db|
00022460  6f 78 5f 70 65 6e 64 5f  3e 0a 23 45 6e 64 54 61  |ox_pend_>.#EndTa|
00022470  62 6c 65 0a 0a 23 49 6e  64 65 6e 74 20 30 0a 4d  |ble..#Indent 0.M|
00022480  61 63 72 6f 73 3a 0a 0a  7b 61 6c 69 67 6e 20 63  |acros:..{align c|
00022490  65 6e 74 72 65 7d 3c 64  62 6f 78 5f 43 4c 4f 53  |entre}<dbox_CLOS|
000224a0  45 3e 7b 61 6c 69 67 6e  7d 0a 20 20 20 0a 54 79  |E>{align}.   .Ty|
000224b0  70 65 73 3a 0a 0a 23 49  6e 64 65 6e 74 20 31 30  |pes:..#Indent 10|
000224c0  0a 23 54 61 62 6c 65 20  33 20 32 30 0a 3c 64 62  |.#Table 3 20.<db|
000224d0  6f 78 3e 0a 3c 64 62 6f  78 5f 66 69 65 6c 64 3e  |ox>.<dbox_field>|
000224e0  0a 3c 64 62 6f 78 5f 66  69 65 6c 64 74 79 70 65  |.<dbox_fieldtype|
000224f0  3e 0a 3c 64 62 6f 78 5f  68 61 6e 64 6c 65 72 5f  |>.<dbox_handler_|
00022500  70 72 6f 63 3e 0a 3c 64  62 6f 78 5f 72 61 77 5f  |proc>.<dbox_raw_|
00022510  68 61 6e 64 6c 65 72 5f  70 72 6f 63 3e 0a 23 45  |handler_proc>.#E|
00022520  6e 64 54 61 62 6c 65 0a  0a 23 62 65 6c 6f 77 3b  |ndTable..#below;|
00022530  69 6e 64 65 6e 74 20 30  0a 42 65 66 6f 72 65 20  |indent 0.Before |
00022540  61 6e 79 20 64 69 61 6c  6f 67 75 65 20 62 6f 78  |any dialogue box|
00022550  65 73 20 6d 61 79 20 62  65 20 75 73 65 64 2c 20  |es may be used, |
00022560  74 68 65 20 64 62 6f 78  20 73 79 73 74 65 6d 20  |the dbox system |
00022570  6d 75 73 74 20 62 65 20  69 6e 69 74 69 61 6c 69  |must be initiali|
00022580  73 65 64 20 62 79 20 63  61 6c 6c 69 6e 67 20 3c  |sed by calling <|
00022590  64 62 6f 78 5f 69 6e 69  74 3e 2e 00 44 41 54 41  |dbox_init>..DATA|
000225a0  d6 00 00 00 64 62 6f 78  5f 68 61 6e 64 6c 65 72  |....dbox_handler|
000225b0  5f 70 72 6f 63 0a 54 68  69 73 20 74 79 70 65 20  |_proc.This type |
000225c0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 64  |is defined in <d|
000225d0  62 6f 78 2e 68 3d 3e 64  62 6f 78 5f 68 3e 20 61  |box.h=>dbox_h> a|
000225e0  73 20 61 20 66 75 6e 63  74 69 6f 6e 20 74 79 70  |s a function typ|
000225f0  65 20 66 6f 72 20 75 73  65 20 62 79 20 3c 64 62  |e for use by <db|
00022600  6f 78 5f 65 76 65 6e 74  68 61 6e 64 6c 65 72 3e  |ox_eventhandler>|
00022610  2e 20 54 68 65 20 66 75  6e 63 74 69 6f 6e 20 69  |. The function i|
00022620  73 20 64 65 66 69 6e 65  64 20 61 73 3a 0a 7b 77  |s defined as:.{w|
00022630  72 61 70 20 6f 66 66 7d  0a 7b 66 43 6f 64 65 3b  |rap off}.{fCode;|
00022640  61 6c 69 67 6e 7d 76 6f  69 64 20 70 72 6f 63 20  |align}void proc |
00022650  28 3c 64 62 6f 78 3e 20  64 2c 20 76 6f 69 64 20  |(<dbox> d, void |
00022660  2a 68 61 6e 64 6c 65 29  3b 7b 66 3b 61 6c 69 67  |*handle);{f;alig|
00022670  6e 7d 00 00 44 41 54 41  b3 00 00 00 64 62 6f 78  |n}..DATA....dbox|
00022680  5f 68 69 64 65 0a 53 79  6e 74 61 78 3a 09 76 6f  |_hide.Syntax:.vo|
00022690  69 64 20 64 62 6f 78 5f  68 69 64 65 20 28 3c 64  |id dbox_hide (<d|
000226a0  62 6f 78 3e 20 64 29 3b  0a 48 65 61 64 65 72 3a  |box> d);.Header:|
000226b0  09 3c 64 62 6f 78 2e 68  3d 3e 64 62 6f 78 5f 68  |.<dbox.h=>dbox_h|
000226c0  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
000226d0  20 74 65 6d 70 6f 72 61  72 69 6c 79 20 63 6c 6f  | temporarily clo|
000226e0  73 65 73 20 74 68 65 20  64 69 61 6c 6f 67 75 65  |ses the dialogue|
000226f0  20 62 6f 78 20 67 69 76  65 6e 20 69 6e 20 2f 64  | box given in /d|
00022700  2f 2e 20 49 74 20 6d 61  79 20 62 65 20 72 65 2d  |/. It may be re-|
00022710  73 68 6f 77 6e 20 77 69  74 68 20 3c 64 62 6f 78  |shown with <dbox|
00022720  5f 73 68 6f 77 3e 2e 00  44 41 54 41 e5 00 00 00  |_show>..DATA....|
00022730  64 62 6f 78 5f 69 6e 69  74 0a 53 79 6e 74 61 78  |dbox_init.Syntax|
00022740  3a 09 76 6f 69 64 20 64  62 6f 78 5f 69 6e 69 74  |:.void dbox_init|
00022750  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
00022760  09 3c 64 62 6f 78 2e 68  3d 3e 64 62 6f 78 5f 68  |.<dbox.h=>dbox_h|
00022770  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
00022780  20 69 6e 69 74 69 61 6c  69 73 65 73 20 74 68 65  | initialises the|
00022790  20 64 62 6f 78 20 73 79  73 74 65 6d 2e 20 49 74  | dbox system. It|
000227a0  20 6d 75 73 74 20 62 65  20 63 61 6c 6c 65 64 20  | must be called |
000227b0  6f 6e 63 65 20 62 65 66  6f 72 65 20 61 6e 79 20  |once before any |
000227c0  64 69 61 6c 6f 67 75 65  20 62 6f 78 65 73 20 6d  |dialogue boxes m|
000227d0  61 79 20 62 65 20 75 73  65 64 2e 20 49 74 20 6d  |ay be used. It m|
000227e0  75 73 74 20 62 65 20 63  61 6c 6c 65 64 20 61 66  |ust be called af|
000227f0  74 65 72 20 3c 74 65 6d  70 6c 61 74 65 5f 69 6e  |ter <template_in|
00022800  69 74 3e 2c 20 68 6f 77  65 76 65 72 2e 00 00 00  |it>, however....|
00022810  44 41 54 41 3d 01 00 00  64 62 6f 78 5f 6e 65 77  |DATA=...dbox_new|
00022820  0a 53 79 6e 74 61 78 3a  09 3c 64 62 6f 78 3e 20  |.Syntax:.<dbox> |
00022830  64 62 6f 78 5f 6e 65 77  20 28 63 68 61 72 20 2a  |dbox_new (char *|
00022840  6e 61 6d 65 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |name);.Header:.<|
00022850  64 62 6f 78 2e 68 3d 3e  64 62 6f 78 5f 68 3e 0a  |dbox.h=>dbox_h>.|
00022860  0a 52 65 74 75 72 6e 73  3a 09 54 68 65 20 64 62  |.Returns:.The db|
00022870  6f 78 20 68 61 6e 64 6c  65 2c 20 3c 4e 55 4c 4c  |ox handle, <NULL|
00022880  3e 20 66 6f 72 20 65 72  72 6f 72 2e 0a 0a 54 68  |> for error...Th|
00022890  69 73 20 66 75 6e 63 74  69 6f 6e 20 63 72 65 61  |is function crea|
000228a0  74 65 73 20 61 20 6e 65  77 20 64 69 61 6c 6f 67  |tes a new dialog|
000228b0  75 65 20 62 6f 78 20 66  72 6f 6d 20 74 68 65 20  |ue box from the |
000228c0  74 65 6d 70 6c 61 74 65  20 77 68 6f 73 65 20 6e  |template whose n|
000228d0  61 6d 65 20 69 73 20 67  69 76 65 6e 2e 20 54 68  |ame is given. Th|
000228e0  65 20 74 65 6d 70 6c 61  74 65 20 6d 75 73 74 20  |e template must |
000228f0  68 61 76 65 20 62 65 65  6e 20 6c 6f 61 64 65 64  |have been loaded|
00022900  20 77 69 74 68 20 3c 74  65 6d 70 6c 61 74 65 5f  | with <template_|
00022910  69 6e 69 74 3e 2e 0a 0a  54 68 69 73 20 6f 6e 6c  |init>...This onl|
00022920  79 20 63 72 65 61 74 65  73 20 74 68 65 20 77 69  |y creates the wi|
00022930  6e 64 6f 77 2c 20 69 74  20 64 6f 65 73 20 6e 6f  |ndow, it does no|
00022940  74 20 64 69 73 70 6c 61  79 20 69 74 2e 00 00 00  |t display it....|
00022950  44 41 54 41 9a 00 00 00  50 65 6e 64 69 6e 67 20  |DATA....Pending |
00022960  4f 70 65 72 61 74 69 6f  6e 73 20 46 75 6e 63 74  |Operations Funct|
00022970  69 6f 6e 73 0a 23 54 61  62 6c 65 20 33 20 32 35  |ions.#Table 3 25|
00022980  0a 3c 64 62 6f 78 5f 66  69 6c 6c 69 6e 3e 0a 3c  |.<dbox_fillin>.<|
00022990  64 62 6f 78 5f 66 69 6c  6c 69 6e 5f 66 69 78 65  |dbox_fillin_fixe|
000229a0  64 63 61 72 65 74 3e 0a  3c 64 62 6f 78 5f 69 6e  |dcaret>.<dbox_in|
000229b0  69 74 3e 0a 3c 64 62 6f  78 5f 70 65 72 73 69 73  |it>.<dbox_persis|
000229c0  74 3e 0a 3c 64 62 6f 78  5f 70 6f 70 75 70 3e 0a  |t>.<dbox_popup>.|
000229d0  3c 64 62 6f 78 5f 73 79  73 68 61 6e 64 6c 65 3e  |<dbox_syshandle>|
000229e0  0a 23 45 6e 64 54 61 62  6c 65 00 00 44 41 54 41  |.#EndTable..DATA|
000229f0  fc 00 00 00 64 62 6f 78  5f 70 65 72 73 69 73 74  |....dbox_persist|
00022a00  0a 53 79 6e 74 61 78 3a  09 3c 42 4f 4f 4c 3e 20  |.Syntax:.<BOOL> |
00022a10  64 62 6f 78 5f 70 65 72  73 69 73 74 20 28 76 6f  |dbox_persist (vo|
00022a20  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 64 62  |id);.Header:.<db|
00022a30  6f 78 2e 68 3d 3e 64 62  6f 78 5f 68 3e 0a 0a 52  |ox.h=>dbox_h>..R|
00022a40  65 74 75 72 6e 73 3a 09  3c 54 52 55 45 3e 20 69  |eturns:.<TRUE> i|
00022a50  66 20 74 68 65 20 64 62  6f 78 20 69 73 20 74 6f  |f the dbox is to|
00022a60  20 72 65 6d 61 69 6e 20  6f 6e 20 73 63 72 65 65  | remain on scree|
00022a70  6e 2e 0a 0a 42 61 73 69  63 61 6c 6c 79 2c 20 69  |n...Basically, i|
00022a80  66 20 74 68 65 20 75 73  65 72 20 63 6c 69 63 6b  |f the user click|
00022a90  65 64 20 2a 41 64 6a 75  73 74 2a 20 74 68 65 6e  |ed *Adjust* then|
00022aa0  20 74 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  | this function r|
00022ab0  65 74 75 72 6e 73 20 54  52 55 45 20 61 6e 64 20  |eturns TRUE and |
00022ac0  79 6f 75 20 73 68 6f 75  6c 64 20 6e 6f 74 20 64  |you should not d|
00022ad0  65 73 74 72 6f 79 20 74  68 65 20 64 69 61 6c 6f  |estroy the dialo|
00022ae0  67 75 65 20 62 6f 78 2e  44 41 54 41 7f 01 00 00  |gue box.DATA....|
00022af0  64 62 6f 78 5f 70 6f 70  75 70 0a 53 79 6e 74 61  |dbox_popup.Synta|
00022b00  78 3a 09 3c 64 62 6f 78  5f 66 69 65 6c 64 3e 20  |x:.<dbox_field> |
00022b10  64 62 6f 78 5f 70 6f 70  75 70 20 28 63 68 61 72  |dbox_popup (char|
00022b20  20 2a 6e 61 6d 65 2c 20  63 68 61 72 20 2a 6d 73  | *name, char *ms|
00022b30  67 29 3b 0a 48 65 61 64  65 72 3a 09 3c 64 62 6f  |g);.Header:.<dbo|
00022b40  78 2e 68 3d 3e 64 62 6f  78 5f 68 3e 0a 0a 52 65  |x.h=>dbox_h>..Re|
00022b50  74 75 72 6e 73 3a 09 54  68 65 20 61 63 74 69 76  |turns:.The activ|
00022b60  61 74 65 64 20 66 69 65  6c 64 20 6e 75 6d 62 65  |ated field numbe|
00022b70  72 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |r...This functio|
00022b80  6e 20 69 73 20 74 68 65  20 65 61 73 79 20 77 61  |n is the easy wa|
00022b90  79 20 74 6f 20 68 61 6e  64 6c 65 20 74 68 65 20  |y to handle the |
00022ba0  64 62 6f 78 20 73 79 73  74 65 6d 2e 20 49 74 20  |dbox system. It |
00022bb0  63 72 65 61 74 65 73 20  61 20 64 69 61 6c 6f 67  |creates a dialog|
00022bc0  75 65 20 62 6f 78 20 66  72 6f 6d 20 74 68 65 20  |ue box from the |
00022bd0  6e 61 6d 65 64 20 74 65  6d 70 6c 61 74 65 2c 20  |named template, |
00022be0  70 75 74 73 20 74 68 65  20 73 74 72 69 6e 67 20  |puts the string |
00022bf0  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 2f 6d  |pointed to by /m|
00022c00  73 67 2f 20 69 6e 74 6f  20 66 69 65 6c 64 20 31  |sg/ into field 1|
00022c10  2c 20 63 61 6c 6c 73 20  3c 64 62 6f 78 5f 66 69  |, calls <dbox_fi|
00022c20  6c 6c 69 6e 3e 2c 20 64  65 73 74 72 6f 79 73 20  |llin>, destroys |
00022c30  74 68 65 20 64 62 6f 78  20 61 6e 64 20 72 65 74  |the dbox and ret|
00022c40  75 72 6e 73 20 74 68 65  20 6e 75 6d 62 65 72 20  |urns the number |
00022c50  6f 66 20 74 68 65 20 61  63 74 69 76 61 74 65 64  |of the activated|
00022c60  20 66 69 65 6c 64 2e 00  44 41 54 41 e0 00 00 00  | field..DATA....|
00022c70  64 62 6f 78 5f 72 65 61  64 0a 53 79 6e 74 61 78  |dbox_read.Syntax|
00022c80  3a 09 3c 64 62 6f 78 5f  66 69 65 6c 64 3e 20 64  |:.<dbox_field> d|
00022c90  62 6f 78 5f 72 65 61 64  20 28 3c 64 62 6f 78 3e  |box_read (<dbox>|
00022ca0  20 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 64 62  | d);.Header:.<db|
00022cb0  6f 78 2e 68 3d 3e 64 62  6f 78 5f 68 3e 0a 0a 52  |ox.h=>dbox_h>..R|
00022cc0  65 74 75 72 6e 73 3a 09  54 68 65 20 61 63 74 69  |eturns:.The acti|
00022cd0  76 61 74 65 64 20 66 69  65 6c 64 20 6e 75 6d 62  |vated field numb|
00022ce0  65 72 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |er...This functi|
00022cf0  6f 6e 20 72 65 61 64 73  20 74 68 65 20 66 69 65  |on reads the fie|
00022d00  6c 64 20 6e 75 6d 62 65  72 20 6f 66 20 74 68 65  |ld number of the|
00022d10  20 61 63 74 69 76 61 74  65 64 20 66 69 65 6c 64  | activated field|
00022d20  20 61 6e 64 20 64 6f 65  73 20 6e 6f 74 20 63 61  | and does not ca|
00022d30  6e 63 65 6c 20 74 68 65  20 65 76 65 6e 74 2e 20  |ncel the event. |
00022d40  49 20 74 68 69 6e 6b 2e  44 41 54 41 0a 01 00 00  |I think.DATA....|
00022d50  64 62 6f 78 5f 73 65 74  66 69 65 6c 64 0a 53 79  |dbox_setfield.Sy|
00022d60  6e 74 61 78 3a 09 76 6f  69 64 20 64 62 6f 78 5f  |ntax:.void dbox_|
00022d70  73 65 74 66 69 65 6c 64  20 28 3c 64 62 6f 78 3e  |setfield (<dbox>|
00022d80  20 64 2c 20 3c 64 62 6f  78 5f 66 69 65 6c 64 3e  | d, <dbox_field>|
00022d90  20 66 2c 20 63 68 61 72  20 2a 70 29 3b 0a 48 65  | f, char *p);.He|
00022da0  61 64 65 72 3a 09 3c 64  62 6f 78 2e 68 3d 3e 64  |ader:.<dbox.h=>d|
00022db0  62 6f 78 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |box>..This funct|
00022dc0  69 6f 6e 20 73 65 74 73  20 74 68 65 20 63 6f 6e  |ion sets the con|
00022dd0  74 65 6e 74 73 20 6f 66  20 74 68 65 20 66 69 65  |tents of the fie|
00022de0  6c 64 20 67 69 76 65 6e  20 69 6e 20 74 68 65 20  |ld given in the |
00022df0  64 69 61 6c 6f 67 75 65  20 62 6f 78 20 67 69 76  |dialogue box giv|
00022e00  65 6e 20 74 6f 20 74 68  65 20 6e 75 6c 6c 2d 74  |en to the null-t|
00022e10  65 72 6d 69 6e 61 74 65  64 20 74 65 78 74 20 63  |erminated text c|
00022e20  6f 6e 74 61 69 6e 65 64  20 69 6e 20 74 68 65 20  |ontained in the |
00022e30  63 68 61 72 61 63 74 65  72 20 61 72 72 61 79 20  |character array |
00022e40  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 2f 70  |pointed to by /p|
00022e50  2f 2e 00 00 44 41 54 41  3b 01 00 00 64 62 6f 78  |/...DATA;...dbox|
00022e60  5f 73 65 74 6e 75 6d 65  72 69 63 0a 53 79 6e 74  |_setnumeric.Synt|
00022e70  61 78 3a 09 76 6f 69 64  20 64 62 6f 78 5f 73 65  |ax:.void dbox_se|
00022e80  74 6e 75 6d 65 72 69 63  20 28 3c 64 62 6f 78 3e  |tnumeric (<dbox>|
00022e90  20 64 2c 20 3c 64 62 6f  78 5f 66 69 65 6c 64 3e  | d, <dbox_field>|
00022ea0  20 66 2c 20 69 6e 74 20  76 61 6c 29 3b 0a 48 65  | f, int val);.He|
00022eb0  61 64 65 72 3a 09 3c 64  62 6f 78 2e 68 3d 3e 64  |ader:.<dbox.h=>d|
00022ec0  62 6f 78 5f 68 3e 0a 0a  54 68 69 73 20 66 75 6e  |box_h>..This fun|
00022ed0  63 74 69 6f 6e 20 73 65  74 73 20 74 68 65 20 66  |ction sets the f|
00022ee0  69 65 6c 64 20 69 6e 20  74 68 65 20 64 69 61 6c  |ield in the dial|
00022ef0  6f 67 75 65 20 62 6f 78  20 73 70 65 63 69 66 69  |ogue box specifi|
00022f00  65 64 20 74 6f 20 62 65  20 74 68 65 20 74 65 78  |ed to be the tex|
00022f10  74 75 61 6c 20 65 71 75  69 76 61 6c 65 6e 74 20  |tual equivalent |
00022f20  6f 66 20 74 68 65 20 76  61 6c 75 65 20 67 69 76  |of the value giv|
00022f30  65 6e 20 69 6e 20 2f 76  61 6c 2f 2e 20 49 66 20  |en in /val/. If |
00022f40  74 68 65 20 66 69 65 6c  64 20 69 73 20 61 6e 20  |the field is an |
00022f50  61 63 74 69 6f 6e 20 66  69 65 6c 64 20 74 68 65  |action field the|
00022f60  6e 20 61 20 6e 6f 6e 2d  7a 65 72 6f 20 76 61 6c  |n a non-zero val|
00022f70  75 65 20 73 65 74 73 20  69 74 2c 20 61 6e 64 20  |ue sets it, and |
00022f80  7a 65 72 6f 20 75 6e 73  65 74 73 20 69 74 2e 00  |zero unsets it..|
00022f90  44 41 54 41 68 01 00 00  64 62 6f 78 5f 73 68 6f  |DATAh...dbox_sho|
00022fa0  77 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 64  |w.Syntax:.void d|
00022fb0  62 6f 78 5f 73 68 6f 77  20 28 3c 64 62 6f 78 3e  |box_show (<dbox>|
00022fc0  20 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 64 62  | d);.Header:.<db|
00022fd0  6f 78 2e 68 3d 3e 64 62  6f 78 5f 68 3e 0a 0a 54  |ox.h=>dbox_h>..T|
00022fe0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 68 6f  |his function sho|
00022ff0  77 73 20 74 68 65 20 64  69 61 6c 6f 67 75 65 20  |ws the dialogue |
00023000  62 6f 78 20 77 68 6f 73  65 20 68 61 6e 64 6c 65  |box whose handle|
00023010  20 69 73 20 67 69 76 65  6e 2e 20 44 69 61 6c 6f  | is given. Dialo|
00023020  67 75 65 20 62 6f 78 65  73 20 73 68 6f 77 6e 20  |gue boxes shown |
00023030  69 6e 20 74 68 69 73 20  77 61 79 20 77 69 6c 6c  |in this way will|
00023040  20 64 69 73 61 70 70 65  61 72 20 69 66 20 74 68  | disappear if th|
00023050  65 20 75 73 65 72 73 20  63 6c 69 63 6b 73 20 6f  |e users clicks o|
00023060  75 74 73 69 64 65 20 74  68 65 6d 2c 20 6f 72 20  |utside them, or |
00023070  70 72 65 73 73 65 73 20  2a 45 73 63 61 70 65 2a  |presses *Escape*|
00023080  20 28 6c 69 6b 65 20 61  20 6d 65 6e 75 29 2e 20  | (like a menu). |
00023090  54 68 65 20 64 69 61 6c  6f 67 75 65 20 62 6f 78  |The dialogue box|
000230a0  20 77 69 6c 6c 20 62 65  20 73 68 6f 77 6e 20 6e  | will be shown n|
000230b0  65 61 72 20 74 68 65 20  6c 61 73 74 20 6d 65 6e  |ear the last men|
000230c0  75 20 73 65 6c 65 63 74  69 6f 6e 20 6f 72 20 63  |u selection or c|
000230d0  61 72 65 74 20 73 65 74  74 69 6e 67 20 28 77 68  |aret setting (wh|
000230e0  69 63 68 65 76 65 72 20  69 73 20 6d 6f 73 74 20  |ichever is most |
000230f0  72 65 63 65 6e 74 29 2e  44 41 54 41 22 01 00 00  |recent).DATA"...|
00023100  64 62 6f 78 5f 73 68 6f  77 73 74 61 74 69 63 0a  |dbox_showstatic.|
00023110  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 64 62 6f  |Syntax:.void dbo|
00023120  78 5f 73 68 6f 77 73 74  61 74 69 63 20 28 3c 64  |x_showstatic (<d|
00023130  62 6f 78 3e 20 64 29 3b  0a 48 65 61 64 65 72 3a  |box> d);.Header:|
00023140  09 3c 64 62 6f 78 2e 68  3d 3e 64 62 6f 78 5f 68  |.<dbox.h=>dbox_h|
00023150  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
00023160  20 73 68 6f 77 73 20 74  68 65 20 64 69 61 6c 6f  | shows the dialo|
00023170  67 75 65 20 62 6f 78 20  77 68 6f 6c 65 20 68 61  |gue box whole ha|
00023180  6e 64 6c 65 20 69 73 20  67 69 76 65 6e 2e 20 49  |ndle is given. I|
00023190  74 20 77 69 6c 6c 20 72  65 6d 61 69 6e 20 76 69  |t will remain vi|
000231a0  73 69 62 6c 65 20 75 6e  74 69 6c 20 73 70 65 63  |sible until spec|
000231b0  69 66 69 63 61 6c 6c 79  20 63 6c 6f 73 65 64 20  |ifically closed |
000231c0  65 69 74 68 65 72 20 62  79 20 74 68 65 20 70 72  |either by the pr|
000231d0  6f 67 72 61 6d 20 6f 72  20 62 79 20 74 68 65 20  |ogram or by the |
000231e0  75 73 65 72 2e 20 4f 74  68 65 72 77 69 73 65 20  |user. Otherwise |
000231f0  74 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 69 73  |this function is|
00023200  20 69 64 65 6e 74 69 63  61 6c 20 74 6f 20 3c 64  | identical to <d|
00023210  62 6f 78 5f 73 68 6f 77  3e 2e 00 00 44 41 54 41  |box_show>...DATA|
00023220  03 01 00 00 64 62 6f 78  5f 73 79 73 68 61 6e 64  |....dbox_syshand|
00023230  6c 65 0a 53 79 6e 74 61  78 3a 09 69 6e 74 20 64  |le.Syntax:.int d|
00023240  62 6f 78 5f 73 79 73 68  61 6e 64 6c 65 20 28 3c  |box_syshandle (<|
00023250  64 62 6f 78 3e 20 64 29  3b 0a 48 65 61 64 65 72  |dbox> d);.Header|
00023260  3a 09 3c 64 62 6f 78 2e  68 3d 3e 64 62 6f 78 5f  |:.<dbox.h=>dbox_|
00023270  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 54 68 65  |h>..Returns:.The|
00023280  20 77 69 6e 64 6f 77 20  68 61 6e 64 6c 65 20 6f  | window handle o|
00023290  66 20 74 68 65 20 64 62  6f 78 2e 0a 0a 54 68 69  |f the dbox...Thi|
000232a0  73 20 66 75 6e 63 74 69  6f 6e 20 72 65 74 75 72  |s function retur|
000232b0  6e 73 20 74 68 65 20 77  69 6e 64 6f 77 20 68 61  |ns the window ha|
000232c0  6e 64 6c 65 20 6f 66 20  61 20 67 69 76 65 6e 20  |ndle of a given |
000232d0  64 69 61 6c 6f 67 75 65  20 62 6f 78 2e 20 54 68  |dialogue box. Th|
000232e0  69 73 20 61 6c 6c 6f 77  73 20 79 6f 75 20 74 6f  |is allows you to|
000232f0  20 61 6c 74 65 72 20 74  68 65 20 63 6f 6e 74 65  | alter the conte|
00023300  6e 74 73 20 6f 66 20 69  74 20 75 73 69 6e 67 20  |nts of it using |
00023310  73 74 61 6e 64 61 72 64  20 63 61 6c 6c 73 2e 00  |standard calls..|
00023320  44 41 54 41 cf 00 00 00  64 62 6f 78 5f 75 6e 66  |DATA....dbox_unf|
00023330  61 64 65 66 69 65 6c 64  0a 53 79 6e 74 61 78 3a  |adefield.Syntax:|
00023340  09 76 6f 69 64 20 64 62  6f 78 5f 75 6e 66 61 64  |.void dbox_unfad|
00023350  65 66 69 65 6c 64 20 28  3c 64 62 6f 78 3e 20 64  |efield (<dbox> d|
00023360  2c 20 3c 64 62 6f 78 5f  66 69 65 6c 64 3e 20 66  |, <dbox_field> f|
00023370  29 3b 0a 48 65 61 64 65  72 3a 09 3c 64 62 6f 78  |);.Header:.<dbox|
00023380  2e 68 3d 3e 64 62 6f 78  5f 68 3e 0a 0a 54 68 69  |.h=>dbox_h>..Thi|
00023390  73 20 66 75 6e 63 74 69  6f 6e 20 75 6e 66 61 64  |s function unfad|
000233a0  65 73 20 28 75 6e 73 68  61 64 65 73 29 20 74 68  |es (unshades) th|
000233b0  65 20 73 70 65 63 69 66  69 65 64 20 66 69 65 6c  |e specified fiel|
000233c0  64 20 73 6f 20 74 68 61  74 20 69 74 20 72 65 73  |d so that it res|
000233d0  70 6f 6e 64 73 20 74 6f  20 6d 6f 75 73 65 20 63  |ponds to mouse c|
000233e0  6c 69 63 6b 73 2e 20 20  20 20 20 20 20 20 20 00  |licks.         .|
000233f0  44 41 54 41 28 02 00 00  64 62 6f 78 5f 72 61 77  |DATA(...dbox_raw|
00023400  5f 65 76 65 6e 74 68 61  6e 64 6c 65 72 0a 53 79  |_eventhandler.Sy|
00023410  6e 74 61 78 3a 09 76 6f  69 64 20 64 62 6f 78 5f  |ntax:.void dbox_|
00023420  72 61 77 5f 65 76 65 6e  74 68 61 6e 64 6c 65 72  |raw_eventhandler|
00023430  20 28 3c 64 62 6f 78 3e  20 64 2c 20 3c 64 62 6f  | (<dbox> d, <dbo|
00023440  78 5f 72 61 77 5f 68 61  6e 64 6c 65 72 5f 70 72  |x_raw_handler_pr|
00023450  6f 63 3d 3e 64 62 6f 78  5f 72 61 77 5f 68 61 6e  |oc=>dbox_raw_han|
00023460  64 6c 65 72 5f 70 72 3e  20 70 72 6f 63 2c 20 76  |dler_pr> proc, v|
00023470  6f 69 64 20 2a 68 6e 64  29 3b 0a 48 65 61 64 65  |oid *hnd);.Heade|
00023480  72 3a 09 3c 64 62 6f 78  2e 68 3d 3e 64 62 6f 78  |r:.<dbox.h=>dbox|
00023490  5f 68 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |_h>..This functi|
000234a0  6f 6e 20 64 65 73 69 67  6e 61 74 65 73 20 61 20  |on designates a |
000234b0  68 61 6e 64 6c 65 72 20  77 68 69 63 68 20 77 69  |handler which wi|
000234c0  6c 6c 20 62 65 20 63 61  6c 6c 65 64 20 77 69 74  |ll be called wit|
000234d0  68 20 74 68 65 20 75 73  65 72 20 68 61 6e 64 6c  |h the user handl|
000234e0  65 20 67 69 76 65 6e 20  28 7b 2f 7d 68 6e 64 7b  |e given ({/}hnd{|
000234f0  2f 7d 29 20 77 68 65 6e  65 76 65 72 20 61 20 66  |/}) whenever a f|
00023500  69 65 6c 64 20 69 6e 20  74 68 65 20 73 70 65 63  |ield in the spec|
00023510  69 66 69 65 64 20 64 69  61 6c 6f 67 75 65 20 62  |ified dialogue b|
00023520  6f 78 20 69 73 20 61 63  74 69 76 61 74 65 64 2e  |ox is activated.|
00023530  20 54 68 65 20 68 61 6e  64 6c 65 72 20 69 73 20  | The handler is |
00023540  61 20 66 75 6e 63 74 69  6f 6e 20 77 68 6f 73 65  |a function whose|
00023550  20 70 72 6f 74 6f 74 79  70 65 20 69 73 20 73 69  | prototype is si|
00023560  6d 69 6c 61 72 20 74 6f  3a 0a 7b 66 43 6f 64 65  |milar to:.{fCode|
00023570  3b 61 6c 69 67 6e 20 63  65 6e 74 72 65 7d 3c 42  |;align centre}<B|
00023580  4f 4f 4c 3e 20 70 72 6f  63 20 28 64 62 6f 78 20  |OOL> proc (dbox |
00023590  64 2c 20 76 6f 69 64 20  2a 65 76 65 6e 74 2c 20  |d, void *event, |
000235a0  76 6f 69 64 20 2a 68 6e  64 29 3b 7b 66 3b 61 6c  |void *hnd);{f;al|
000235b0  69 67 6e 7d 0a 0a 54 68  65 20 65 76 65 6e 74 20  |ign}..The event |
000235c0  77 69 6c 6c 20 61 63 74  75 61 6c 6c 79 20 62 65  |will actually be|
000235d0  20 61 20 3c 77 69 6d 70  5f 65 76 65 6e 74 73 74  | a <wimp_eventst|
000235e0  72 3e 2a 20 75 6e 64 65  72 20 52 49 53 43 20 4f  |r>* under RISC O|
000235f0  53 2e 20 54 68 65 20 68  61 6e 64 6c 65 20 69 73  |S. The handle is|
00023600  20 61 20 75 73 65 72 20  64 65 66 69 6e 65 64 20  | a user defined |
00023610  70 6f 69 6e 74 65 72 2e  44 41 54 41 eb 00 00 00  |pointer.DATA....|
00023620  64 62 6f 78 5f 72 61 77  5f 68 61 6e 64 6c 65 72  |dbox_raw_handler|
00023630  5f 70 72 6f 63 0a 54 68  69 73 20 74 79 70 65 20  |_proc.This type |
00023640  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 64  |is defined in <d|
00023650  62 6f 78 2e 68 3d 3e 64  62 6f 78 5f 68 3e 20 61  |box.h=>dbox_h> a|
00023660  73 20 61 20 66 75 6e 63  74 69 6f 6e 20 74 79 70  |s a function typ|
00023670  65 20 66 6f 72 20 75 73  65 20 62 79 20 3c 64 62  |e for use by <db|
00023680  6f 78 5f 72 61 77 5f 65  76 65 6e 74 68 61 6e 64  |ox_raw_eventhand|
00023690  6c 65 72 3e 2e 20 54 68  65 20 66 75 6e 63 74 69  |ler>. The functi|
000236a0  6f 6e 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |on is defined as|
000236b0  3a 0a 7b 77 72 61 70 20  6f 66 66 7d 0a 7b 66 43  |:.{wrap off}.{fC|
000236c0  6f 64 65 3b 61 6c 69 67  6e 7d 76 6f 69 64 20 70  |ode;align}void p|
000236d0  72 6f 63 20 28 3c 64 62  6f 78 3e 20 64 2c 20 76  |roc (<dbox> d, v|
000236e0  6f 69 64 20 2a 65 76 65  6e 74 2c 20 76 6f 69 64  |oid *event, void|
000236f0  20 2a 68 61 6e 64 6c 65  29 3b 7b 66 3b 61 6c 69  | *handle);{f;ali|
00023700  67 6e 7d 00 44 41 54 41  fb 00 00 00 64 62 6f 78  |gn}.DATA....dbox|
00023710  5f 66 69 6c 6c 69 6e 5f  66 69 78 65 64 63 61 72  |_fillin_fixedcar|
00023720  65 74 0a 53 79 6e 74 61  78 3a 09 3c 64 62 6f 78  |et.Syntax:.<dbox|
00023730  5f 66 69 65 6c 64 3e 20  64 62 6f 78 5f 66 69 6c  |_field> dbox_fil|
00023740  6c 69 6e 5f 66 69 78 65  64 63 61 72 65 74 20 28  |lin_fixedcaret (|
00023750  3c 64 62 6f 78 3e 20 64  29 3b 0a 48 65 61 64 65  |<dbox> d);.Heade|
00023760  72 3a 09 3c 64 62 6f 78  2e 68 3d 3e 64 62 6f 78  |r:.<dbox.h=>dbox|
00023770  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 54 68  |_h>..Returns:.Th|
00023780  65 20 61 63 74 69 76 61  74 65 64 20 66 69 65 6c  |e activated fiel|
00023790  64 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |d...This functio|
000237a0  6e 20 70 72 6f 63 65 73  73 65 73 20 65 76 65 6e  |n processes even|
000237b0  74 73 20 75 6e 74 69 6c  20 61 20 66 69 65 6c 64  |ts until a field|
000237c0  20 69 6e 20 74 68 65 20  64 69 61 6c 6f 67 75 65  | in the dialogue|
000237d0  20 62 6f 78 20 69 73 20  61 63 74 69 76 61 74 65  | box is activate|
000237e0  64 2e 20 49 74 20 64 6f  65 73 20 6e 6f 74 20 63  |d. It does not c|
000237f0  6c 61 69 6d 20 74 68 65  20 63 61 72 65 74 2e 00  |laim the caret..|
00023800  44 41 54 41 a3 02 00 00  64 62 6f 78 66 69 6c 65  |DATA....dboxfile|
00023810  2e 68 0a 54 68 69 73 20  68 65 61 64 65 72 20 64  |.h.This header d|
00023820  65 63 6c 61 72 65 73 20  6a 75 73 74 20 6f 6e 65  |eclares just one|
00023830  20 66 75 6e 63 74 69 6f  6e 20 61 73 20 66 6f 6c  | function as fol|
00023840  6c 6f 77 73 3a 0a 0a 53  79 6e 74 61 78 3a 09 76  |lows:..Syntax:.v|
00023850  6f 69 64 20 64 62 6f 78  66 69 6c 65 20 28 63 68  |oid dboxfile (ch|
00023860  61 72 20 2a 6d 65 73 73  2c 20 75 6e 73 69 67 6e  |ar *mess, unsign|
00023870  65 64 20 74 79 70 65 2c  20 63 68 61 72 20 2a 61  |ed type, char *a|
00023880  2c 20 69 6e 74 20 2a 62  75 66 73 69 7a 65 29 3b  |, int *bufsize);|
00023890  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000238a0  64 69 73 70 6c 61 79 73  20 61 20 64 69 61 6c 6f  |displays a dialo|
000238b0  67 75 65 20 62 6f 78 20  77 69 74 68 20 61 20 6d  |gue box with a m|
000238c0  65 73 73 61 67 65 20 28  67 69 76 65 6e 20 69 6e  |essage (given in|
000238d0  20 7b 2f 7d 6d 65 73 73  7b 2f 7d 2c 20 6e 6f 20  | {/}mess{/}, no |
000238e0  6d 6f 72 65 20 74 68 61  6e 20 32 30 20 63 68 61  |more than 20 cha|
000238f0  72 61 63 74 65 72 73 29  2c 20 61 6e 20 69 6e 70  |racters), an inp|
00023900  75 74 20 66 69 65 6c 64  20 28 63 6f 6e 74 65 6e  |ut field (conten|
00023910  74 73 20 74 61 6b 65 6e  20 66 72 6f 6d 20 61 6e  |ts taken from an|
00023920  64 20 70 75 74 20 62 61  63 6b 20 69 6e 20 7b 2f  |d put back in {/|
00023930  7d 61 7b 2f 7d 29 2c 20  61 6e 64 20 61 6e 20 2a  |}a{/}), and an *|
00023940  4f 4b 2a 20 62 75 74 74  6f 6e 2e 20 49 74 20 6f  |OK* button. It o|
00023950  70 65 6e 73 20 74 68 69  73 20 75 73 69 6e 67 20  |pens this using |
00023960  3c 64 62 6f 78 3d 3e 64  62 6f 78 5f 68 3e 20 66  |<dbox=>dbox_h> f|
00023970  75 6e 63 74 69 6f 6e 73  20 61 6e 64 20 77 61 69  |unctions and wai|
00023980  74 73 20 66 6f 72 20 74  68 65 20 75 73 65 72 20  |ts for the user |
00023990  74 6f 20 74 79 70 65 20  69 6e 20 61 20 66 69 6c  |to type in a fil|
000239a0  65 6e 61 6d 65 20 61 6e  64 20 63 6c 69 63 6b 20  |ename and click |
000239b0  4f 4b 2e 20 2f 62 75 66  73 69 7a 65 2f 20 67 69  |OK. /bufsize/ gi|
000239c0  76 65 73 20 74 68 65 20  73 69 7a 65 20 6f 66 20  |ves the size of |
000239d0  2f 61 2f 2e 0a 0a 54 68  65 20 77 69 6e 64 6f 77  |/a/...The window|
000239e0  20 75 73 65 64 20 6d 75  73 74 20 62 65 20 63 61  | used must be ca|
000239f0  6c 6c 65 64 20 22 64 62  6f 78 66 69 6c 65 5f 64  |lled "dboxfile_d|
00023a00  62 22 2e 20 49 63 6f 6e  20 30 20 6d 75 73 74 20  |b". Icon 0 must |
00023a10  62 65 20 2a 4f 4b 2a 20  28 6d 65 6e 75 20 69 63  |be *OK* (menu ic|
00023a20  6f 6e 29 2c 20 31 20 6d  75 73 74 20 62 65 20 74  |on), 1 must be t|
00023a30  68 65 20 6d 65 73 73 61  67 65 20 28 69 6e 64 69  |he message (indi|
00023a40  72 65 63 74 65 64 20 74  65 78 74 2c 20 74 79 70  |rected text, typ|
00023a50  65 20 7b 2f 7d 4e 45 56  45 52 7b 2f 7d 29 2c 20  |e {/}NEVER{/}), |
00023a60  61 6e 64 20 32 20 6d 75  73 74 20 62 65 20 74 68  |and 2 must be th|
00023a70  65 20 66 69 6c 65 6e 61  6d 65 20 28 69 6e 64 69  |e filename (indi|
00023a80  72 65 63 74 65 64 20 74  65 78 74 2c 20 74 79 70  |rected text, typ|
00023a90  65 20 7b 2f 7d 57 52 49  54 45 41 42 4c 45 7b 2f  |e {/}WRITEABLE{/|
00023aa0  7d 29 2e 00 44 41 54 41  ee 01 00 00 64 62 6f 78  |})..DATA....dbox|
00023ab0  71 75 65 72 79 2e 68 0a  54 68 69 73 20 68 65 61  |query.h.This hea|
00023ac0  64 65 72 20 64 65 63 6c  61 72 65 73 20 6a 75 73  |der declares jus|
00023ad0  74 20 6f 6e 65 20 66 75  6e 63 74 69 6f 6e 20 61  |t one function a|
00023ae0  73 20 66 6f 6c 6c 6f 77  73 3a 0a 0a 53 79 6e 74  |s follows:..Synt|
00023af0  61 78 3a 09 3c 64 62 6f  78 71 75 65 72 79 5f 52  |ax:.<dboxquery_R|
00023b00  45 50 4c 59 3e 20 64 62  6f 78 71 75 65 72 79 20  |EPLY> dboxquery |
00023b10  28 63 68 61 72 20 2a 6d  65 73 73 29 3b 0a 0a 52  |(char *mess);..R|
00023b20  65 74 75 72 6e 73 3a 09  31 20 3d 20 59 45 53 2c  |eturns:.1 = YES,|
00023b30  20 32 20 3d 20 4e 4f 2c  20 33 20 3d 20 43 41 4e  | 2 = NO, 3 = CAN|
00023b40  43 45 4c 4c 45 44 2e 0a  0a 54 68 69 73 20 66 75  |CELLED...This fu|
00023b50  6e 63 74 69 6f 6e 20 64  69 73 70 6c 61 79 73 20  |nction displays |
00023b60  61 20 64 69 61 6c 6f 67  75 65 20 62 6f 78 20 77  |a dialogue box w|
00023b70  69 74 68 20 61 20 6d 65  73 73 61 67 65 20 28 67  |ith a message (g|
00023b80  69 76 65 6e 20 69 6e 20  7b 2f 7d 6d 65 73 73 7b  |iven in {/}mess{|
00023b90  2f 7d 2c 20 6e 6f 20 6d  6f 72 65 20 74 68 61 6e  |/}, no more than|
00023ba0  20 31 32 30 20 63 68 61  72 61 63 74 65 72 73 29  | 120 characters)|
00023bb0  2c 20 61 6e 64 20 2a 59  65 73 2a 20 61 6e 64 20  |, and *Yes* and |
00023bc0  2a 4e 6f 2a 20 69 63 6f  6e 73 2c 20 61 6e 64 20  |*No* icons, and |
00023bd0  77 61 69 74 73 20 66 6f  72 20 74 68 65 20 75 73  |waits for the us|
00023be0  65 72 20 74 6f 20 72 65  70 6c 79 2e 0a 0a 54 68  |er to reply...Th|
00023bf0  65 20 77 69 6e 64 6f 77  20 75 73 65 64 20 6d 75  |e window used mu|
00023c00  73 74 20 62 65 20 63 61  6c 6c 65 64 20 22 71 75  |st be called "qu|
00023c10  65 72 79 22 2e 20 49 63  6f 6e 20 30 20 6d 75 73  |ery". Icon 0 mus|
00023c20  74 20 62 65 20 2a 59 65  73 2a 20 28 6d 65 6e 75  |t be *Yes* (menu|
00023c30  20 69 63 6f 6e 29 2c 20  31 20 6d 75 73 74 20 62  | icon), 1 must b|
00023c40  65 20 74 68 65 20 6d 65  73 73 61 67 65 20 28 69  |e the message (i|
00023c50  6e 64 69 72 65 63 74 65  64 20 74 65 78 74 2c 20  |ndirected text, |
00023c60  74 79 70 65 20 7b 2f 7d  4e 45 56 45 52 7b 2f 7d  |type {/}NEVER{/}|
00023c70  29 2c 20 61 6e 64 20 32  20 6d 75 73 74 20 62 65  |), and 2 must be|
00023c80  20 2a 4e 6f 2a 20 28 6d  65 6e 75 20 69 63 6f 6e  | *No* (menu icon|
00023c90  29 2e 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |)...DIR$,...,...|
00023ca0  c0 3c 02 00 46 ff ff ff  8b 99 1f 23 d7 00 00 00  |.<..F......#....|
00023cb0  13 00 00 00 00 00 00 00  52 45 50 4c 59 00 00 00  |........REPLY...|
00023cc0  44 41 54 41 d7 00 00 00  64 62 6f 78 71 75 65 72  |DATA....dboxquer|
00023cd0  79 5f 52 45 50 4c 59 0a  54 68 69 73 20 69 73 20  |y_REPLY.This is |
00023ce0  61 6e 20 65 6e 75 6d 65  72 61 74 65 64 20 74 79  |an enumerated ty|
00023cf0  70 65 20 75 73 65 64 20  66 6f 72 20 72 65 74 75  |pe used for retu|
00023d00  72 6e 69 6e 67 20 76 61  6c 75 65 73 20 66 72 6f  |rning values fro|
00023d10  6d 20 74 68 65 20 3c 64  62 6f 78 71 75 65 72 79  |m the <dboxquery|
00023d20  3e 20 66 75 6e 63 74 69  6f 6e 2e 20 49 74 20 69  |> function. It i|
00023d30  73 20 64 65 66 69 6e 65  64 20 61 73 3a 0a 0a 20  |s defined as:.. |
00023d40  20 20 20 5c 7b 0a 20 20  20 20 20 20 64 62 6f 78  |   \{.      dbox|
00023d50  71 75 65 72 79 5f 59 45  53 09 3d 20 31 2c 0a 20  |query_YES.= 1,. |
00023d60  20 20 20 20 20 64 62 6f  78 71 75 65 72 79 5f 4e  |     dboxquery_N|
00023d70  4f 09 3d 20 32 2c 0a 20  20 20 20 20 20 64 62 6f  |O.= 2,.      dbo|
00023d80  78 71 75 65 72 79 5f 43  41 4e 43 45 4c 09 3d 20  |xquery_CANCEL.= |
00023d90  33 0a 20 20 20 20 7d 00  44 41 54 41 c2 02 00 00  |3.    }.DATA....|
00023da0  64 62 6f 78 74 63 6f 6c  0a 54 68 69 73 20 68 65  |dboxtcol.This he|
00023db0  61 64 65 72 20 64 65 63  6c 61 72 65 73 20 6f 6e  |ader declares on|
00023dc0  65 20 66 75 6e 63 74 69  6f 6e 20 61 6e 64 20 61  |e function and a|
00023dd0  20 66 65 77 20 6f 74 68  65 72 20 62 69 74 73 20  | few other bits |
00023de0  61 6e 64 20 70 69 65 63  65 73 20 66 6f 72 20 64  |and pieces for d|
00023df0  69 73 70 6c 61 79 20 61  6e 64 20 65 6e 74 72 79  |isplay and entry|
00023e00  20 6f 66 20 74 72 75 65  20 63 6f 6c 6f 75 72 73  | of true colours|
00023e10  20 28 62 69 74 20 6f 66  20 61 20 6d 69 73 6e 6f  | (bit of a misno|
00023e20  6d 65 72 20 74 68 65 72  65 2e 2e 2e 29 0a 0a 53  |mer there...)..S|
00023e30  79 6e 74 61 78 3a 09 3c  42 4f 4f 4c 3e 20 64 62  |yntax:.<BOOL> db|
00023e40  6f 78 74 63 6f 6c 20 28  3c 64 62 6f 78 74 63 6f  |oxtcol (<dboxtco|
00023e50  6c 5f 63 6f 6c 6f 75 72  3e 20 2a 63 6f 6c 2c 20  |l_colour> *col, |
00023e60  42 4f 4f 4c 20 74 72 61  6e 73 66 6c 61 67 2c 20  |BOOL transflag, |
00023e70  63 68 61 72 20 2a 6e 61  6d 65 2c 20 3c 64 62 6f  |char *name, <dbo|
00023e80  78 74 63 6f 6c 5f 63 6f  6c 6f 75 72 68 61 6e 64  |xtcol_colourhand|
00023e90  6c 65 72 3e 20 70 72 6f  63 2c 20 76 6f 69 64 20  |ler> proc, void |
00023ea0  2a 72 29 3b 0a 0a 52 65  74 75 72 6e 73 3a 09 3c  |*r);..Returns:.<|
00023eb0  54 52 55 45 3e 20 69 66  20 63 6f 6c 6f 75 72 20  |TRUE> if colour |
00023ec0  65 64 69 74 65 64 20 61  6e 64 20 4f 4b 20 63 6c  |edited and OK cl|
00023ed0  69 63 6b 65 64 2e 0a 0a  54 68 69 73 20 66 75 6e  |icked...This fun|
00023ee0  63 74 69 6f 6e 20 64 69  73 70 6c 61 79 73 20 61  |ction displays a|
00023ef0  20 64 69 61 6c 6f 67 75  65 20 62 6f 78 20 66 6f  | dialogue box fo|
00023f00  72 20 74 68 65 20 75 73  65 72 20 74 6f 20 65 64  |r the user to ed|
00023f10  69 74 20 61 6e 20 52 47  42 20 63 6f 6c 6f 75 72  |it an RGB colour|
00023f20  2e 20 2f 63 6f 6c 6f 75  72 2f 20 63 6f 6e 74 61  |. /colour/ conta|
00023f30  69 6e 73 20 74 68 65 20  63 6f 6c 6f 75 72 20 74  |ins the colour t|
00023f40  6f 20 62 65 20 65 64 69  74 65 64 2c 20 2f 74 72  |o be edited, /tr|
00023f50  61 6e 73 66 6c 61 67 2f  20 69 73 20 54 52 55 45  |ansflag/ is TRUE|
00023f60  20 69 66 20 74 72 61 6e  73 70 61 72 65 6e 74 20  | if transparent |
00023f70  63 6f 6c 6f 75 72 73 20  63 61 6e 20 62 65 20 73  |colours can be s|
00023f80  65 6c 65 63 74 65 64 2c  20 2f 6e 61 6d 65 2f 20  |elected, /name/ |
00023f90  69 73 20 74 68 65 20 74  69 74 6c 65 2c 20 2f 70  |is the title, /p|
00023fa0  72 6f 63 2f 20 69 73 20  74 68 65 20 68 61 6e 64  |roc/ is the hand|
00023fb0  6c 65 72 20 66 75 6e 63  74 69 6f 6e 2c 20 61 6e  |ler function, an|
00023fc0  64 20 2f 72 2f 20 69 73  20 70 61 73 73 65 64 20  |d /r/ is passed |
00023fd0  64 69 72 65 63 74 20 74  6f 20 2f 70 72 6f 63 2f  |direct to /proc/|
00023fe0  2e 0a 0a 2f 70 72 6f 63  2f 20 69 73 20 63 61 6c  |.../proc/ is cal|
00023ff0  6c 65 64 20 77 68 65 6e  20 74 68 65 20 75 73 65  |led when the use|
00024000  72 20 63 6c 69 63 6b 73  20 2a 4f 4b 2a 2e 0a 0a  |r clicks *OK*...|
00024010  54 68 65 20 74 65 6d 70  6c 61 74 65 20 73 68 6f  |The template sho|
00024020  75 6c 64 20 62 65 20 74  68 65 20 73 61 6d 65 20  |uld be the same |
00024030  61 73 20 74 68 61 74 20  75 73 65 64 20 62 79 20  |as that used by |
00024040  21 50 61 69 6e 74 2c 20  63 61 6c 6c 65 64 20 22  |!Paint, called "|
00024050  64 62 6f 78 74 63 6f 6c  22 2e 00 00 44 49 52 24  |dboxtcol"...DIR$|
00024060  54 00 00 00 54 00 00 00  b0 40 02 00 46 ff ff ff  |T...T....@..F...|
00024070  f4 bc 1f 23 9d 00 00 00  13 00 00 00 00 00 00 00  |...#............|
00024080  63 6f 6c 6f 75 72 00 00  50 41 02 00 46 ff ff ff  |colour..PA..F...|
00024090  62 d4 1f 23 7f 01 00 00  13 00 00 00 00 00 00 00  |b..#............|
000240a0  63 6f 6c 6f 75 72 68 61  6e 64 6c 65 72 00 00 00  |colourhandler...|
000240b0  44 41 54 41 9d 00 00 00  64 62 6f 78 74 63 6f 6c  |DATA....dboxtcol|
000240c0  5f 63 6f 6c 6f 75 72 0a  54 68 69 73 20 74 79 70  |_colour.This typ|
000240d0  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
000240e0  3c 64 62 6f 78 74 63 6f  6c 2e 68 3d 3e 64 62 6f  |<dboxtcol.h=>dbo|
000240f0  78 74 63 6f 6c 3e 2e 20  49 74 20 69 73 20 61 20  |xtcol>. It is a |
00024100  74 79 70 65 20 68 6f 6c  64 69 6e 67 20 61 6e 20  |type holding an |
00024110  52 47 42 20 63 6f 6c 6f  75 72 20 69 6e 20 74 68  |RGB colour in th|
00024120  65 20 66 6f 72 6d 20 30  78 42 42 47 47 52 52 30  |e form 0xBBGGRR0|
00024130  30 2e 20 49 74 20 69 73  20 64 65 66 69 6e 65 64  |0. It is defined|
00024140  20 61 73 20 61 6e 20 2f  69 6e 74 2f 2e 00 00 00  | as an /int/....|
00024150  44 41 54 41 7f 01 00 00  64 62 6f 78 74 63 6f 6c  |DATA....dboxtcol|
00024160  5f 63 6f 6c 6f 75 72 68  61 6e 64 6c 65 72 0a 54  |_colourhandler.T|
00024170  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
00024180  6e 65 64 20 69 6e 20 3c  64 62 6f 78 74 63 6f 6c  |ned in <dboxtcol|
00024190  2e 68 3d 3e 64 62 6f 78  74 63 6f 6c 3e 2e 20 49  |.h=>dboxtcol>. I|
000241a0  74 20 69 73 20 61 20 66  75 6e 63 74 69 6f 6e 20  |t is a function |
000241b0  63 61 6c 6c 65 64 20 62  79 20 64 62 6f 78 74 63  |called by dboxtc|
000241c0  6f 6c 20 77 68 65 6e 20  74 68 65 20 75 73 65 72  |ol when the user|
000241d0  20 68 61 73 20 63 6c 69  63 6b 65 64 20 2a 4f 4b  | has clicked *OK|
000241e0  2a 20 69 6e 20 74 68 65  20 63 6f 6c 6f 75 72 20  |* in the colour |
000241f0  73 65 6c 65 63 74 6f 72  2e 20 54 68 65 20 66 75  |selector. The fu|
00024200  6e 63 74 69 6f 6e 20 73  68 6f 75 6c 64 20 62 65  |nction should be|
00024210  20 6f 66 20 74 68 65 20  66 6f 72 6d 3a 0a 7b 77  | of the form:.{w|
00024220  72 61 70 20 6f 66 66 7d  0a 7b 66 43 6f 64 65 3b  |rap off}.{fCode;|
00024230  61 6c 69 67 6e 20 63 65  6e 74 72 65 7d 76 6f 69  |align centre}voi|
00024240  64 20 6d 79 66 75 6e 63  20 28 3c 64 62 6f 78 74  |d myfunc (<dboxt|
00024250  63 6f 6c 5f 63 6f 6c 6f  75 72 3e 20 63 6f 6c 2c  |col_colour> col,|
00024260  20 76 6f 69 64 20 2a 72  29 3b 7b 66 3b 61 6c 69  | void *r);{f;ali|
00024270  67 6e 7d 0a 7b 77 72 61  70 7d 0a 57 68 65 72 65  |gn}.{wrap}.Where|
00024280  20 2f 63 6f 6c 2f 20 69  73 20 74 68 65 20 63 6f  | /col/ is the co|
00024290  6c 6f 75 72 20 61 73 20  65 64 69 74 65 64 20 62  |lour as edited b|
000242a0  79 20 74 68 65 20 75 73  65 72 2c 20 61 6e 64 20  |y the user, and |
000242b0  2f 72 2f 20 69 73 20 70  61 73 73 65 64 20 73 74  |/r/ is passed st|
000242c0  72 61 69 67 68 74 20 74  68 72 6f 75 67 68 2e 00  |raight through..|
000242d0  44 41 54 41 03 01 00 00  44 43 42 20 3c 62 79 74  |DATA....DCB <byt|
000242e0  65 73 3e 0a 54 68 69 73  20 73 74 6f 72 65 73 20  |es>.This stores |
000242f0  6f 6e 65 20 6f 72 20 6d  6f 72 65 20 62 79 74 65  |one or more byte|
00024300  73 2c 20 73 65 70 61 72  61 74 65 64 20 62 79 20  |s, separated by |
00024310  63 6f 6d 6d 61 73 2e 20  54 68 65 20 62 79 74 65  |commas. The byte|
00024320  73 20 6d 61 79 20 69 6e  20 66 61 63 74 20 62 65  |s may in fact be|
00024330  20 63 6f 6e 74 61 69 6e  65 64 20 69 6e 20 61 20  | contained in a |
00024340  71 75 6f 74 65 64 20 73  74 72 69 6e 67 20 65 67  |quoted string eg|
00024350  3a 0a 0a 23 77 72 61 70  20 6f 66 66 0a 7b 61 6c  |:..#wrap off.{al|
00024360  69 67 6e 20 63 65 6e 74  72 65 3b 66 43 6f 64 65  |ign centre;fCode|
00024370  7d 44 43 42 20 22 54 68  69 73 20 69 73 20 61 20  |}DCB "This is a |
00024380  6e 75 6c 6c 2d 74 65 72  6d 69 6e 61 74 65 64 20  |null-terminated |
00024390  73 74 72 69 6e 67 22 2c  30 7b 66 3b 61 6c 69 67  |string",0{f;alig|
000243a0  6e 3b 77 72 61 70 7d 0a  0a 44 45 46 42 20 61 6e  |n;wrap}..DEFB an|
000243b0  64 20 45 51 55 42 20 61  72 65 20 62 6f 74 68 20  |d EQUB are both |
000243c0  70 73 75 65 64 6f 6e 79  6d 73 20 66 6f 72 20 44  |psuedonyms for D|
000243d0  43 42 2e 00 44 41 54 41  9f 00 00 00 44 43 44 20  |CB..DATA....DCD |
000243e0  3c 62 79 74 65 73 3e 0a  54 68 69 73 20 73 74 6f  |<bytes>.This sto|
000243f0  72 65 73 20 6f 6e 65 20  6f 72 20 6d 6f 72 65 20  |res one or more |
00024400  77 6f 72 64 73 2c 20 73  65 70 61 72 61 74 65 64  |words, separated|
00024410  20 62 79 20 63 6f 6d 6d  61 73 2e 0a 0a 7b 66 43  | by commas...{fC|
00024420  6f 64 65 3b 61 6c 69 67  6e 20 63 65 6e 74 72 65  |ode;align centre|
00024430  7d 44 43 44 20 31 2c 32  2c 33 2c 34 2c 35 7b 66  |}DCD 1,2,3,4,5{f|
00024440  3b 61 6c 69 67 6e 7d 0a  0a 44 45 46 57 20 61 6e  |;align}..DEFW an|
00024450  64 20 45 51 55 57 20 61  72 65 20 62 6f 74 68 20  |d EQUW are both |
00024460  70 73 65 75 64 6f 6e 79  6d 73 20 66 6f 72 20 44  |pseudonyms for D|
00024470  43 44 2e 00 44 41 54 41  3f 00 00 00 64 65 66 61  |CD..DATA?...defa|
00024480  75 6c 74 0a 54 68 69 73  20 63 6f 6d 6d 61 6e 64  |ult.This command|
00024490  20 69 73 20 70 61 72 74  20 6f 66 20 74 68 65 20  | is part of the |
000244a0  3c 73 77 69 74 63 68 3e  20 63 6f 6e 73 74 72 75  |<switch> constru|
000244b0  63 74 2e 00 44 41 54 41  cf 02 00 00 23 64 65 66  |ct..DATA....#def|
000244c0  69 6e 65 0a 54 68 69 73  20 64 69 72 65 63 74 69  |ine.This directi|
000244d0  76 65 20 64 65 66 69 6e  65 73 20 61 20 6d 61 63  |ve defines a mac|
000244e0  72 6f 2e 20 4d 61 63 72  6f 73 20 61 72 65 20 74  |ro. Macros are t|
000244f0  6f 6b 65 6e 73 20 77 68  69 63 68 20 61 72 65 20  |okens which are |
00024500  73 75 62 73 74 69 74 75  74 65 64 20 77 68 65 6e  |substituted when|
00024510  20 65 6e 63 6f 75 6e 74  65 72 65 64 20 6c 61 74  | encountered lat|
00024520  65 72 20 69 6e 20 74 68  65 20 73 6f 75 72 63 65  |er in the source|
00024530  20 66 69 6c 65 2c 20 62  65 66 6f 72 65 20 63 6f  | file, before co|
00024540  6d 70 69 6c 69 6e 67 2e  20 41 20 6d 61 63 72 6f  |mpiling. A macro|
00024550  20 63 61 6e 20 62 65 20  64 65 66 69 6e 65 64 20  | can be defined |
00024560  77 69 74 68 20 6f 72 20  77 69 74 68 6f 75 74 20  |with or without |
00024570  61 20 76 61 6c 75 65 2e  20 46 75 6e 63 74 69 6f  |a value. Functio|
00024580  6e 2d 6c 69 6b 65 20 6d  61 63 72 6f 73 20 63 61  |n-like macros ca|
00024590  6e 20 61 6c 73 6f 20 62  65 20 64 65 66 69 6e 65  |n also be define|
000245a0  64 2e 0a 0a 65 67 20 23  64 65 66 69 6e 65 20 4d  |d...eg #define M|
000245b0  41 43 52 4f 09 64 65 66  69 6e 65 73 20 4d 41 43  |ACRO.defines MAC|
000245c0  52 4f 2c 20 62 75 74 20  4d 41 43 52 4f 20 64 6f  |RO, but MACRO do|
000245d0  65 73 20 6e 6f 74 20 61  63 74 75 61 6c 6c 79 20  |es not actually |
000245e0  73 74 61 6e 64 20 66 6f  72 20 61 6e 79 74 68 69  |stand for anythi|
000245f0  6e 67 2e 0a 0a 65 67 20  23 64 65 66 69 6e 65 20  |ng...eg #define |
00024600  50 45 4f 50 4c 45 20 37  09 64 65 66 69 6e 65 73  |PEOPLE 7.defines|
00024610  20 50 45 4f 50 4c 45 20  74 6f 20 62 65 20 37 2e  | PEOPLE to be 7.|
00024620  20 45 76 65 72 79 20 74  69 6d 65 20 50 45 4f 50  | Every time PEOP|
00024630  4c 45 20 69 73 20 65 6e  63 6f 75 6e 74 65 72 65  |LE is encountere|
00024640  64 20 28 6e 6f 74 20 77  69 74 68 69 6e 20 71 75  |d (not within qu|
00024650  6f 74 65 73 29 2c 20 37  20 77 69 6c 6c 20 62 65  |otes), 7 will be|
00024660  20 73 75 62 73 74 69 74  75 74 65 64 20 73 6f 20  | substituted so |
00024670  79 6f 75 20 63 61 6e 20  75 73 65 20 7b 66 43 6f  |you can use {fCo|
00024680  64 65 7d 6e 75 6d 62 65  72 5f 6f 66 5f 70 65 6f  |de}number_of_peo|
00024690  70 6c 65 3d 50 45 4f 50  4c 45 3b 7b 66 7d 0a 0a  |ple=PEOPLE;{f}..|
000246a0  65 67 20 23 64 65 66 69  6e 65 20 54 41 42 28 78  |eg #define TAB(x|
000246b0  2c 79 29 20 3c 70 72 69  6e 74 66 3e 28 22 5c 5c  |,y) <printf>("\\|
000246c0  78 31 66 25 63 25 63 22  2c 78 2c 79 29 09 45 76  |x1f%c%c",x,y).Ev|
000246d0  65 72 79 20 74 69 6d 65  20 79 6f 75 20 75 73 65  |ery time you use|
000246e0  20 54 41 42 28 78 2c 79  29 20 70 72 69 6e 74 66  | TAB(x,y) printf|
000246f0  28 22 5c 5c 78 31 66 25  63 25 63 22 2c 78 2c 79  |("\\x1f%c%c",x,y|
00024700  29 20 77 69 6c 6c 20 62  65 20 73 75 62 73 74 69  |) will be substi|
00024710  74 75 74 65 64 20 65 67  2e 20 54 41 42 28 31 2c  |tuted eg. TAB(1,|
00024720  31 29 20 63 6f 6e 76 65  72 74 73 20 74 6f 20 70  |1) converts to p|
00024730  72 69 6e 74 66 28 22 5c  5c 78 31 66 25 63 25 63  |rintf("\\x1f%c%c|
00024740  22 2c 31 2c 31 29 3b 0a  0a 49 74 20 69 73 20 63  |",1,1);..It is c|
00024750  6f 6e 76 65 6e 74 69 6f  6e 61 6c 20 74 6f 20 75  |onventional to u|
00024760  73 65 20 63 61 70 69 74  61 6c 20 6c 65 74 74 65  |se capital lette|
00024770  72 73 20 66 6f 72 20 6d  61 63 72 6f 20 6e 61 6d  |rs for macro nam|
00024780  65 73 2e 00 44 41 54 41  7d 00 00 00 64 69 61 6c  |es..DATA}...dial|
00024790  6f 67 0a 54 68 65 20 74  79 70 65 20 2a 64 69 61  |og.The type *dia|
000247a0  6c 6f 67 2a 20 69 73 20  64 65 66 69 6e 65 64 20  |log* is defined |
000247b0  69 6e 20 3c 44 65 73 6b  4c 69 62 3a 44 69 61 6c  |in <DeskLib:Dial|
000247c0  6f 67 2e 68 3d 3e 44 69  61 6c 6f 67 5f 68 3e 20  |og.h=>Dialog_h> |
000247d0  61 73 20 61 20 74 79 70  65 20 68 6f 6c 64 69 6e  |as a type holdin|
000247e0  67 20 61 20 70 6f 69 6e  74 65 72 20 74 6f 20 61  |g a pointer to a|
000247f0  20 3c 64 69 61 6c 6f 67  5f 72 65 63 6f 72 64 3e  | <dialog_record>|
00024800  2e 00 00 00 44 49 52 24  24 02 00 00 24 02 00 00  |....DIR$$...$...|
00024810  28 4a 02 00 46 ff ff ff  7e 8c f2 24 d7 00 00 00  |(J..F...~..$....|
00024820  13 00 00 00 00 00 00 00  43 4c 4f 53 45 00 00 00  |........CLOSE...|
00024830  00 4b 02 00 46 ff ff ff  9f 22 f2 24 03 01 00 00  |.K..F....".$....|
00024840  13 00 00 00 00 00 00 00  43 72 65 61 74 65 00 00  |........Create..|
00024850  04 4c 02 00 46 ff ff ff  c2 25 f2 24 f2 00 00 00  |.L..F....%.$....|
00024860  13 00 00 00 00 00 00 00  44 65 73 74 72 6f 79 00  |........Destroy.|
00024870  f8 4c 02 00 46 ff ff ff  fd 9a f4 24 e8 02 00 00  |.L..F......$....|
00024880  13 00 00 00 00 00 00 00  68 00 00 00 e0 4f 02 00  |........h....O..|
00024890  46 ff ff ff 37 44 f2 24  27 01 00 00 13 00 00 00  |F...7D.$'.......|
000248a0  00 00 00 00 48 69 64 65  00 00 00 00 08 51 02 00  |....Hide.....Q..|
000248b0  46 ff ff ff 05 6f f2 24  82 01 00 00 13 00 00 00  |F....o.$........|
000248c0  00 00 00 00 4c 61 73 74  43 6c 69 63 6b 65 64 00  |....LastClicked.|
000248d0  8c 52 02 00 46 ff ff ff  43 93 f2 24 d1 00 00 00  |.R..F...C..$....|
000248e0  13 00 00 00 00 00 00 00  4e 4f 43 48 4f 49 43 45  |........NOCHOICE|
000248f0  00 00 00 00 60 53 02 00  46 ff ff ff 9c 65 f2 24  |....`S..F....e.$|
00024900  0b 01 00 00 13 00 00 00  00 00 00 00 50 65 72 73  |............Pers|
00024910  69 73 74 00 6c 54 02 00  46 ff ff ff f3 82 f2 24  |ist.lT..F......$|
00024920  6f 01 00 00 13 00 00 00  00 00 00 00 72 65 63 6f  |o...........reco|
00024930  72 64 00 00 dc 55 02 00  46 ff ff ff e4 2a f2 24  |rd...U..F....*.$|
00024940  32 01 00 00 13 00 00 00  00 00 00 00 53 68 6f 77  |2...........Show|
00024950  00 00 00 00 10 57 02 00  46 ff ff ff 90 32 f2 24  |.....W..F....2.$|
00024960  63 01 00 00 13 00 00 00  00 00 00 00 53 68 6f 77  |c...........Show|
00024970  41 74 00 00 74 58 02 00  46 ff ff ff ea 39 f2 24  |At..tX..F....9.$|
00024980  67 01 00 00 13 00 00 00  00 00 00 00 53 68 6f 77  |g...........Show|
00024990  53 74 61 74 69 63 00 00  dc 59 02 00 46 ff ff ff  |Static...Y..F...|
000249a0  f1 76 f2 24 ea 00 00 00  13 00 00 00 00 00 00 00  |.v.$............|
000249b0  53 74 69 6c 6c 4f 70 65  6e 00 00 00 c8 5a 02 00  |StillOpen....Z..|
000249c0  46 fd ff ff da c7 54 26  b3 00 00 00 13 00 00 00  |F.....T&........|
000249d0  00 00 00 00 54 4c 00 00  7c 5b 02 00 46 ff ff ff  |....TL..|[..F...|
000249e0  a2 4e f2 24 32 01 00 00  13 00 00 00 00 00 00 00  |.N.$2...........|
000249f0  57 61 69 74 46 6f 72 43  6c 69 63 6b 00 00 00 00  |WaitForClick....|
00024a00  b0 5c 02 00 46 ff ff ff  e2 55 f2 24 28 01 00 00  |.\..F....U.$(...|
00024a10  13 00 00 00 00 00 00 00  57 69 6e 64 6f 77 48 61  |........WindowHa|
00024a20  6e 64 6c 65 00 00 00 00  44 41 54 41 d7 00 00 00  |ndle....DATA....|
00024a30  64 69 61 6c 6f 67 5f 43  4c 4f 53 45 0a 54 68 65  |dialog_CLOSE.The|
00024a40  20 6d 61 63 72 6f 20 27  64 69 61 6c 6f 67 5f 43  | macro 'dialog_C|
00024a50  4c 4f 53 45 27 20 69 73  20 64 65 66 69 6e 65 64  |LOSE' is defined|
00024a60  20 69 6e 20 3c 44 65 73  6b 4c 69 62 3a 44 69 61  | in <DeskLib:Dia|
00024a70  6c 6f 67 2e 68 3d 3e 44  69 61 6c 6f 67 5f 68 3e  |log.h=>Dialog_h>|
00024a80  20 61 6e 64 20 69 73 20  72 65 74 75 72 6e 65 64  | and is returned|
00024a90  20 62 79 20 3c 44 69 61  6c 6f 67 5f 57 61 69 74  | by <Dialog_Wait|
00024aa0  46 6f 72 43 6c 69 63 6b  3e 20 77 68 65 6e 20 74  |ForClick> when t|
00024ab0  68 65 20 64 69 61 6c 6f  67 75 65 20 62 6f 78 20  |he dialogue box |
00024ac0  69 73 20 63 6c 6f 73 65  64 20 62 79 20 63 6c 69  |is closed by cli|
00024ad0  63 6b 69 6e 67 20 6f 75  74 73 69 64 65 20 77 69  |cking outside wi|
00024ae0  6e 64 6f 77 20 6f 72 20  63 6c 69 63 6b 69 6e 67  |ndow or clicking|
00024af0  20 6f 6e 20 63 6c 6f 73  65 20 69 63 6f 6e 2e 00  | on close icon..|
00024b00  44 41 54 41 03 01 00 00  44 69 61 6c 6f 67 5f 43  |DATA....Dialog_C|
00024b10  72 65 61 74 65 0a 53 79  6e 74 61 78 3a 09 3c 64  |reate.Syntax:.<d|
00024b20  69 61 6c 6f 67 3e 20 44  69 61 6c 6f 67 5f 43 72  |ialog> Dialog_Cr|
00024b30  65 61 74 65 20 28 63 68  61 72 20 2a 6e 61 6d 65  |eate (char *name|
00024b40  2c 20 69 6e 74 20 6d 61  78 74 69 74 6c 65 73 69  |, int maxtitlesi|
00024b50  7a 65 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |ze);.Header:.<De|
00024b60  73 6b 4c 69 62 3a 44 69  61 6c 6f 67 2e 68 3d 3e  |skLib:Dialog.h=>|
00024b70  44 69 61 6c 6f 67 5f 68  3e 0a 0a 52 65 74 75 72  |Dialog_h>..Retur|
00024b80  6e 73 3a 09 48 61 6e 64  6c 65 20 6f 66 20 63 72  |ns:.Handle of cr|
00024b90  65 61 74 65 64 20 64 69  61 6c 6f 67 75 65 20 62  |eated dialogue b|
00024ba0  6f 78 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |ox..This functio|
00024bb0  6e 20 63 72 65 61 74 65  73 20 28 62 75 74 20 64  |n creates (but d|
00024bc0  6f 65 73 20 6e 6f 74 20  73 68 6f 77 29 20 61 20  |oes not show) a |
00024bd0  64 69 61 6c 6f 67 75 65  20 62 6f 78 20 66 72 6f  |dialogue box fro|
00024be0  6d 20 74 68 65 20 74 65  6d 70 6c 61 74 65 20 77  |m the template w|
00024bf0  68 6f 73 65 20 6e 61 6d  65 20 69 73 20 67 69 76  |hose name is giv|
00024c00  65 6e 2e 00 44 41 54 41  f2 00 00 00 44 69 61 6c  |en..DATA....Dial|
00024c10  6f 67 5f 44 65 73 74 72  6f 79 0a 53 79 6e 74 61  |og_Destroy.Synta|
00024c20  78 3a 09 76 6f 69 64 20  44 69 61 6c 6f 67 5f 44  |x:.void Dialog_D|
00024c30  65 73 74 72 6f 79 20 28  3c 64 69 61 6c 6f 67 3e  |estroy (<dialog>|
00024c40  20 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  | d);.Header:.<De|
00024c50  73 6b 4c 69 62 3a 44 69  61 6c 6f 67 2e 68 3d 3e  |skLib:Dialog.h=>|
00024c60  44 69 61 6c 6f 67 5f 68  3e 0a 0a 54 68 69 73 20  |Dialog_h>..This |
00024c70  66 75 6e 63 74 69 6f 6e  20 72 65 6d 6f 76 65 73  |function removes|
00024c80  20 74 68 65 20 64 69 61  6c 6f 67 75 65 20 62 6f  | the dialogue bo|
00024c90  78 20 77 68 6f 73 65 20  68 61 6e 64 6c 65 20 69  |x whose handle i|
00024ca0  73 20 67 69 76 65 6e 2c  20 62 6f 74 68 20 66 72  |s given, both fr|
00024cb0  6f 6d 20 74 68 65 20 64  69 73 70 6c 61 79 20 61  |om the display a|
00024cc0  6e 64 20 66 72 6f 6d 20  6d 65 6d 6f 72 79 2e 20  |nd from memory. |
00024cd0  54 68 69 73 20 68 61 6e  64 6c 65 20 69 73 20 6e  |This handle is n|
00024ce0  6f 77 20 63 6f 6d 70 6c  65 74 65 6c 79 20 69 6e  |ow completely in|
00024cf0  76 61 6c 69 64 2e 00 00  44 41 54 41 e8 02 00 00  |valid...DATA....|
00024d00  44 65 73 6b 4c 69 62 3a  44 69 61 6c 6f 67 2e 68  |DeskLib:Dialog.h|
00024d10  0a 56 65 72 73 69 6f 6e  3a 20 31 2e 30 31 20 28  |.Version: 1.01 (|
00024d20  30 32 20 4d 61 72 20 31  39 39 34 29 0a 23 6c 69  |02 Mar 1994).#li|
00024d30  6e 65 0a 54 68 69 73 20  68 65 61 64 65 72 20 64  |ne.This header d|
00024d40  65 63 6c 61 72 65 73 20  66 75 6e 63 74 69 6f 6e  |eclares function|
00024d50  73 20 66 6f 72 20 68 61  6e 64 6c 69 6e 67 20 64  |s for handling d|
00024d60  69 61 6c 6f 67 75 65 20  62 6f 78 65 73 2e 0a 0a  |ialogue boxes...|
00024d70  46 75 6e 63 74 69 6f 6e  73 3a 0a 0a 23 49 6e 64  |Functions:..#Ind|
00024d80  65 6e 74 20 38 0a 23 54  61 62 6c 65 20 36 20 32  |ent 8.#Table 6 2|
00024d90  31 0a 3c 44 69 61 6c 6f  67 5f 43 72 65 61 74 65  |1.<Dialog_Create|
00024da0  3e 0a 3c 44 69 61 6c 6f  67 5f 44 65 73 74 72 6f  |>.<Dialog_Destro|
00024db0  79 3e 0a 3c 44 69 61 6c  6f 67 5f 53 68 6f 77 3e  |y>.<Dialog_Show>|
00024dc0  0a 3c 44 69 61 6c 6f 67  5f 53 68 6f 77 41 74 3e  |.<Dialog_ShowAt>|
00024dd0  0a 3c 44 69 61 6c 6f 67  5f 53 68 6f 77 53 74 61  |.<Dialog_ShowSta|
00024de0  74 69 63 3e 0a 3c 44 69  61 6c 6f 67 5f 48 69 64  |tic>.<Dialog_Hid|
00024df0  65 3e 0a 3c 44 69 61 6c  6f 67 5f 57 61 69 74 46  |e>.<Dialog_WaitF|
00024e00  6f 72 43 6c 69 63 6b 3e  0a 3c 44 69 61 6c 6f 67  |orClick>.<Dialog|
00024e10  5f 57 69 6e 64 6f 77 48  61 6e 64 6c 65 3e 0a 3c  |_WindowHandle>.<|
00024e20  44 69 61 6c 6f 67 5f 50  65 72 73 69 73 74 3e 0a  |Dialog_Persist>.|
00024e30  3c 44 69 61 6c 6f 67 5f  4c 61 73 74 43 6c 69 63  |<Dialog_LastClic|
00024e40  6b 65 64 3e 0a 3c 44 69  61 6c 6f 67 5f 53 74 69  |ked>.<Dialog_Sti|
00024e50  6c 6c 4f 70 65 6e 3e 0a  23 45 6e 64 54 61 62 6c  |llOpen>.#EndTabl|
00024e60  65 0a 0a 23 69 6e 64 65  6e 74 20 30 0a 54 79 70  |e..#indent 0.Typ|
00024e70  65 73 3a 0a 0a 23 69 6e  64 65 6e 74 20 31 36 0a  |es:..#indent 16.|
00024e80  23 54 61 62 6c 65 20 31  20 32 31 0a 3c 64 69 61  |#Table 1 21.<dia|
00024e90  6c 6f 67 5f 72 65 63 6f  72 64 3e 0a 3c 64 69 61  |log_record>.<dia|
00024ea0  6c 6f 67 3e 0a 23 45 6e  64 54 61 62 6c 65 0a 0a  |log>.#EndTable..|
00024eb0  23 69 6e 64 65 6e 74 20  30 0a 4d 61 63 72 6f 73  |#indent 0.Macros|
00024ec0  3a 0a 0a 23 69 6e 64 65  6e 74 20 31 31 0a 23 54  |:..#indent 11.#T|
00024ed0  61 62 6c 65 20 31 20 32  31 0a 3c 64 69 61 6c 6f  |able 1 21.<dialo|
00024ee0  67 5f 43 4c 4f 53 45 3e  0a 3c 64 69 61 6c 6f 67  |g_CLOSE>.<dialog|
00024ef0  5f 4e 4f 43 48 4f 49 43  45 3e 0a 23 45 6e 64 54  |_NOCHOICE>.#EndT|
00024f00  61 62 6c 65 0a 23 69 6e  64 65 6e 74 20 30 0a 0a  |able.#indent 0..|
00024f10  41 20 64 69 61 6c 6f 67  75 65 20 69 73 20 61 20  |A dialogue is a |
00024f20  77 69 6e 64 6f 77 20 74  68 61 74 20 69 73 20 70  |window that is p|
00024f30  6f 70 70 65 64 20 6f 70  65 6e 20 74 6f 20 67 65  |opped open to ge|
00024f40  74 20 75 73 65 72 20 63  68 6f 69 63 65 73 20 61  |t user choices a|
00024f50  6e 64 20 74 68 65 6e 20  67 6f 65 73 20 61 77 61  |nd then goes awa|
00024f60  79 2e 20 54 68 69 73 20  68 65 61 64 65 72 20 73  |y. This header s|
00024f70  69 6d 70 6c 69 66 69 65  73 20 70 6f 70 70 69 6e  |implifies poppin|
00024f80  67 20 75 70 20 73 75 63  68 20 64 69 61 6c 6f 67  |g up such dialog|
00024f90  75 65 73 2c 20 61 73 20  69 74 20 68 61 6e 64 6c  |ues, as it handl|
00024fa0  65 73 20 6f 70 65 6e 69  6e 67 2c 20 63 6c 6f 73  |es opening, clos|
00024fb0  69 6e 67 20 61 6e 64 20  73 69 6d 70 6c 65 20 70  |ing and simple p|
00024fc0  72 6f 63 65 73 73 69 6e  67 20 6f 66 20 74 68 65  |rocessing of the|
00024fd0  20 77 69 6e 64 6f 77 20  66 6f 72 20 79 6f 75 2e  | window for you.|
00024fe0  44 41 54 41 27 01 00 00  44 69 61 6c 6f 67 5f 48  |DATA'...Dialog_H|
00024ff0  69 64 65 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |ide.Syntax:.void|
00025000  20 44 69 61 6c 6f 67 5f  48 69 64 65 20 28 3c 64  | Dialog_Hide (<d|
00025010  69 61 6c 6f 67 3e 20 64  29 3b 0a 48 65 61 64 65  |ialog> d);.Heade|
00025020  72 73 3a 09 3c 54 69 6d  73 4c 69 62 3a 44 69 61  |rs:.<TimsLib:Dia|
00025030  6c 6f 67 2e 68 3d 3e 44  69 61 6c 6f 67 5f 54 4c  |log.h=>Dialog_TL|
00025040  3e 0a 09 09 3c 44 65 73  6b 4c 69 62 3a 44 69 61  |>...<DeskLib:Dia|
00025050  6c 6f 67 2e 68 3d 3e 44  69 61 6c 6f 67 5f 68 3e  |log.h=>Dialog_h>|
00025060  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00025070  68 69 64 65 73 20 74 68  65 20 67 69 76 65 6e 20  |hides the given |
00025080  64 69 61 6c 6f 67 75 65  20 62 6f 78 20 62 79 20  |dialogue box by |
00025090  63 6c 6f 73 69 6e 67 20  74 68 65 20 77 69 6e 64  |closing the wind|
000250a0  6f 77 2c 20 62 75 74 20  64 6f 65 73 20 6e 6f 74  |ow, but does not|
000250b0  20 64 65 73 74 72 6f 79  20 69 74 2e 20 49 74 20  | destroy it. It |
000250c0  6d 61 79 20 62 65 20 73  75 62 73 65 71 75 65 6e  |may be subsequen|
000250d0  74 6c 79 20 72 65 6f 70  65 6e 65 64 20 77 69 74  |tly reopened wit|
000250e0  68 20 3c 44 69 61 6c 6f  67 5f 53 68 6f 77 3e 20  |h <Dialog_Show> |
000250f0  6f 72 20 3c 44 69 61 6c  6f 67 5f 53 68 6f 77 53  |or <Dialog_ShowS|
00025100  74 61 74 69 63 3e 2e 00  44 41 54 41 82 01 00 00  |tatic>..DATA....|
00025110  44 69 61 6c 6f 67 5f 4c  61 73 74 43 6c 69 63 6b  |Dialog_LastClick|
00025120  65 64 0a 53 79 6e 74 61  78 3a 09 3c 69 63 6f 6e  |ed.Syntax:.<icon|
00025130  5f 68 61 6e 64 6c 65 3e  20 44 69 61 6c 6f 67 5f  |_handle> Dialog_|
00025140  4c 61 73 74 43 6c 69 63  6b 65 64 20 28 3c 64 69  |LastClicked (<di|
00025150  61 6c 6f 67 3e 20 64 29  3b 0a 48 65 61 64 65 72  |alog> d);.Header|
00025160  3a 09 3c 44 65 73 6b 4c  69 62 3a 44 69 61 6c 6f  |:.<DeskLib:Dialo|
00025170  67 2e 68 3d 3e 44 69 61  6c 6f 67 5f 68 3e 0a 0a  |g.h=>Dialog_h>..|
00025180  52 65 74 75 72 6e 73 3a  09 49 63 6f 6e 20 6e 75  |Returns:.Icon nu|
00025190  6d 62 65 72 20 6c 61 73  74 20 63 6c 69 63 6b 65  |mber last clicke|
000251a0  64 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |d...This functio|
000251b0  6e 20 72 65 74 75 72 6e  73 20 74 68 65 20 69 63  |n returns the ic|
000251c0  6f 6e 20 6e 75 6d 62 65  72 20 6f 66 20 74 68 65  |on number of the|
000251d0  20 6c 61 73 74 20 69 63  6f 6e 20 77 68 69 63 68  | last icon which|
000251e0  20 77 61 73 20 63 6c 69  63 6b 65 64 20 69 6e 20  | was clicked in |
000251f0  74 68 65 20 67 69 76 65  6e 20 64 69 61 6c 6f 67  |the given dialog|
00025200  75 65 20 62 6f 78 2e 20  49 66 20 6e 6f 20 69 63  |ue box. If no ic|
00025210  6f 6e 73 20 68 61 76 65  20 62 65 65 6e 20 63 6c  |ons have been cl|
00025220  69 63 6b 65 64 20 79 65  74 2c 20 69 74 20 72 65  |icked yet, it re|
00025230  74 75 72 6e 73 20 3c 64  69 61 6c 6f 67 5f 4e 4f  |turns <dialog_NO|
00025240  43 48 4f 49 43 45 3e 2e  20 49 74 20 69 73 20 61  |CHOICE>. It is a|
00025250  63 74 75 61 6c 6c 79 20  64 65 66 69 6e 65 64 20  |ctually defined |
00025260  61 73 20 61 20 6d 61 63  72 6f 20 72 65 74 75 72  |as a macro retur|
00025270  6e 69 6e 67 20 7b 2f 7d  64 2d 3e 6c 61 73 74 63  |ning {/}d->lastc|
00025280  6c 69 63 6b 65 64 7b 2f  7d 2e 00 00 44 41 54 41  |licked{/}...DATA|
00025290  d1 00 00 00 64 69 61 6c  6f 67 5f 4e 4f 43 48 4f  |....dialog_NOCHO|
000252a0  49 43 45 0a 54 68 65 20  6d 61 63 72 6f 20 7b 2a  |ICE.The macro {*|
000252b0  7d 64 69 61 6c 6f 67 5f  4e 4f 43 48 4f 49 43 45  |}dialog_NOCHOICE|
000252c0  7b 2a 7d 20 69 73 20 64  65 66 69 6e 65 64 20 69  |{*} is defined i|
000252d0  6e 20 3c 44 65 73 6b 4c  69 62 3a 44 69 61 6c 6f  |n <DeskLib:Dialo|
000252e0  67 2e 68 3d 3e 44 69 61  6c 6f 67 5f 68 3e 20 61  |g.h=>Dialog_h> a|
000252f0  6e 64 20 69 73 20 72 65  74 75 72 6e 65 64 20 62  |nd is returned b|
00025300  79 20 3c 44 69 61 6c 6f  67 5f 4c 61 73 74 43 6c  |y <Dialog_LastCl|
00025310  69 63 6b 65 64 3e 20 77  68 65 6e 20 74 68 65 20  |icked> when the |
00025320  75 73 65 72 20 68 61 73  20 6e 6f 74 20 79 65 74  |user has not yet|
00025330  20 64 6f 6e 65 20 61 6e  79 74 68 69 6e 67 2e 20  | done anything. |
00025340  49 74 20 69 73 20 61 63  74 75 61 6c 6c 79 20 64  |It is actually d|
00025350  65 66 69 6e 65 64 20 61  73 20 2d 32 2e 00 00 00  |efined as -2....|
00025360  44 41 54 41 0b 01 00 00  44 69 61 6c 6f 67 5f 50  |DATA....Dialog_P|
00025370  65 72 73 69 73 74 0a 53  79 6e 74 61 78 3a 09 3c  |ersist.Syntax:.<|
00025380  42 4f 4f 4c 3e 20 44 69  61 6c 6f 67 5f 50 65 72  |BOOL> Dialog_Per|
00025390  73 69 73 74 20 28 3c 64  69 61 6c 6f 67 3e 20 64  |sist (<dialog> d|
000253a0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
000253b0  4c 69 62 3a 44 69 61 6c  6f 67 2e 68 3d 3e 44 69  |Lib:Dialog.h=>Di|
000253c0  61 6c 6f 67 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |alog_h>..Returns|
000253d0  3a 09 3c 54 52 55 45 3e  20 69 66 20 6c 61 73 74  |:.<TRUE> if last|
000253e0  20 64 69 61 6c 6f 67 75  65 20 62 6f 78 20 70 65  | dialogue box pe|
000253f0  72 73 69 73 74 73 2e 0a  0a 54 68 69 73 20 66 75  |rsists...This fu|
00025400  6e 63 74 69 6f 6e 20 63  68 65 63 6b 73 20 74 6f  |nction checks to|
00025410  20 73 65 65 20 69 66 3a  7b 74 61 62 7d 0a 20 09  | see if:{tab}. .|
00025420  8f 09 54 68 65 20 6c 61  73 74 20 63 68 6f 69 63  |..The last choic|
00025430  65 20 77 61 73 20 6d 61  64 65 20 77 69 74 68 20  |e was made with |
00025440  2a 41 64 6a 75 73 74 2a  0a 20 09 8f 09 54 68 65  |*Adjust*. ...The|
00025450  20 64 69 61 6c 6f 67 75  65 20 62 6f 78 20 69 73  | dialogue box is|
00025460  20 73 74 69 6c 6c 20 6f  70 65 6e 00 44 41 54 41  | still open.DATA|
00025470  6f 01 00 00 64 69 61 6c  6f 67 5f 72 65 63 6f 72  |o...dialog_recor|
00025480  64 0a 54 68 65 20 74 79  70 65 20 7b 2a 7d 64 69  |d.The type {*}di|
00025490  61 6c 6f 67 5f 72 65 63  6f 72 64 7b 2a 7d 20 69  |alog_record{*} i|
000254a0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 44 65  |s defined in <De|
000254b0  73 6b 4c 69 62 3a 44 69  61 6c 6f 67 2e 68 3d 3e  |skLib:Dialog.h=>|
000254c0  44 69 61 6c 6f 67 3e 20  61 73 20 74 68 65 20 66  |Dialog> as the f|
000254d0  6f 6c 6c 6f 77 69 6e 67  20 73 74 72 75 63 74 75  |ollowing structu|
000254e0  72 65 3a 0a 0a 5c 7b 0a  20 20 20 20 3c 77 69 6e  |re:..\{.    <win|
000254f0  64 6f 77 5f 68 61 6e 64  6c 65 3e 09 77 69 6e 64  |dow_handle>.wind|
00025500  6f 77 3b 0a 20 20 20 20  3c 69 63 6f 6e 5f 68 61  |ow;.    <icon_ha|
00025510  6e 64 6c 65 3e 09 6c 61  73 74 63 6c 69 63 6b 65  |ndle>.lastclicke|
00025520  64 3b 0a 20 20 20 20 3c  62 75 74 74 6f 6e 5f 73  |d;.    <button_s|
00025530  74 61 74 65 3e 09 62 75  74 74 6f 6e 3b 0a 20 20  |tate>.button;.  |
00025540  20 20 73 74 72 75 63 74  0a 20 20 20 20 5c 7b 7b  |  struct.    \{{|
00025550  74 61 62 7d 0a 20 20 20  20 20 20 20 20 75 6e 73  |tab}.        uns|
00025560  69 67 6e 65 64 20 69 6e  74 20 73 74 69 6c 6c 6f  |igned int stillo|
00025570  70 65 6e 09 3a 20 31 3b  0a 20 20 20 20 20 20 20  |pen.: 1;.       |
00025580  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 70 65  | unsigned int pe|
00025590  72 73 69 73 74 09 3a 20  31 3b 0a 20 20 20 20 20  |rsist.: 1;.     |
000255a0  20 20 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |   unsigned int |
000255b0  69 73 73 74 61 74 69 63  09 3a 20 31 3b 0a 20 20  |isstatic.: 1;.  |
000255c0  20 20 7d 20 73 74 61 74  65 3b 0a 7d 20 64 69 61  |  } state;.} dia|
000255d0  6c 6f 67 5f 72 65 63 6f  72 64 3b 00 44 41 54 41  |log_record;.DATA|
000255e0  32 01 00 00 44 69 61 6c  6f 67 5f 53 68 6f 77 0a  |2...Dialog_Show.|
000255f0  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 44 69 61  |Syntax:.void Dia|
00025600  6c 6f 67 5f 53 68 6f 77  20 28 3c 64 69 61 6c 6f  |log_Show (<dialo|
00025610  67 3e 20 64 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |g> d);.Header:.<|
00025620  44 65 73 6b 4c 69 62 3a  44 69 61 6c 6f 67 2e 68  |DeskLib:Dialog.h|
00025630  3d 3e 44 69 61 6c 6f 67  5f 68 3e 0a 0a 54 68 69  |=>Dialog_h>..Thi|
00025640  73 20 66 75 6e 63 74 69  6f 6e 20 73 68 6f 77 73  |s function shows|
00025650  20 74 68 65 20 64 69 61  6c 6f 67 75 65 20 62 6f  | the dialogue bo|
00025660  78 20 77 68 6f 73 65 20  68 61 6e 64 6c 65 20 69  |x whose handle i|
00025670  73 20 67 69 76 65 6e 20  69 6e 20 74 68 65 20 63  |s given in the c|
00025680  65 6e 74 72 65 20 6f 66  20 74 68 65 20 73 63 72  |entre of the scr|
00025690  65 65 6e 2e 20 54 68 65  20 64 69 61 6c 6f 67 75  |een. The dialogu|
000256a0  65 20 62 6f 78 20 69 73  20 6f 70 65 6e 65 64 20  |e box is opened |
000256b0  61 73 20 61 20 74 72 61  6e 73 69 65 6e 74 20 64  |as a transient d|
000256c0  69 61 6c 6f 67 75 65 20  62 6f 78 2c 20 69 2e 65  |ialogue box, i.e|
000256d0  2e 20 69 74 20 77 69 6c  6c 20 64 69 73 61 70 70  |. it will disapp|
000256e0  65 61 72 20 69 66 20 79  6f 75 20 63 6c 69 63 6b  |ear if you click|
000256f0  20 6f 75 74 73 69 64 65  20 69 74 20 6f 72 20 70  | outside it or p|
00025700  72 65 73 73 20 2a 45 73  63 61 70 65 2a 2e 00 00  |ress *Escape*...|
00025710  44 41 54 41 63 01 00 00  44 69 61 6c 6f 67 5f 53  |DATAc...Dialog_S|
00025720  68 6f 77 41 74 0a 53 79  6e 74 61 78 3a 09 76 6f  |howAt.Syntax:.vo|
00025730  69 64 20 44 69 61 6c 6f  67 5f 53 68 6f 77 41 74  |id Dialog_ShowAt|
00025740  20 28 3c 64 69 61 6c 6f  67 3e 20 64 2c 20 69 6e  | (<dialog> d, in|
00025750  74 20 78 2c 20 69 6e 74  20 79 29 3b 0a 48 65 61  |t x, int y);.Hea|
00025760  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 44 69  |der:.<DeskLib:Di|
00025770  61 6c 6f 67 2e 68 3d 3e  44 69 61 6c 6f 67 5f 68  |alog.h=>Dialog_h|
00025780  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
00025790  73 20 73 68 6f 77 73 20  74 68 65 20 64 69 61 6c  |s shows the dial|
000257a0  6f 67 75 65 20 62 6f 78  20 77 68 6f 73 65 20 68  |ogue box whose h|
000257b0  61 6e 64 6c 65 20 69 73  20 67 69 76 65 6e 20 77  |andle is given w|
000257c0  69 74 68 20 74 68 65 20  74 6f 70 20 6c 65 66 74  |ith the top left|
000257d0  20 6f 66 20 74 68 65 20  64 69 61 6c 6f 67 20 61  | of the dialog a|
000257e0  74 20 74 68 65 20 70 6f  73 69 74 69 6f 6e 20 73  |t the position s|
000257f0  70 65 63 69 66 69 65 64  2e 20 54 68 65 20 64 69  |pecified. The di|
00025800  61 6c 6f 67 75 65 20 62  6f 78 20 69 73 20 6f 70  |alogue box is op|
00025810  65 6e 65 64 20 61 73 20  61 20 74 72 61 6e 73 69  |ened as a transi|
00025820  65 6e 74 20 64 69 61 6c  6f 67 75 65 20 62 6f 78  |ent dialogue box|
00025830  2c 20 69 2e 65 2e 20 69  74 20 77 69 6c 6c 20 64  |, i.e. it will d|
00025840  69 73 61 70 70 65 61 72  20 69 66 20 79 6f 75 20  |isappear if you |
00025850  63 6c 69 63 6b 20 6f 75  74 73 69 64 65 20 69 74  |click outside it|
00025860  20 6f 72 20 70 72 65 73  73 20 2a 45 73 63 61 70  | or press *Escap|
00025870  65 2a 2e 00 44 41 54 41  67 01 00 00 44 69 61 6c  |e*..DATAg...Dial|
00025880  6f 67 5f 53 68 6f 77 53  74 61 74 69 63 0a 53 79  |og_ShowStatic.Sy|
00025890  6e 74 61 78 3a 09 76 6f  69 64 20 44 69 61 6c 6f  |ntax:.void Dialo|
000258a0  67 5f 53 68 6f 77 53 74  61 74 69 63 20 28 3c 64  |g_ShowStatic (<d|
000258b0  69 61 6c 6f 67 3e 20 64  2c 20 3c 77 69 6e 64 6f  |ialog> d, <windo|
000258c0  77 5f 6f 70 65 6e 70 6f  73 3e 20 6f 70 65 6e 70  |w_openpos> openp|
000258d0  6f 73 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |os);.Header:.<De|
000258e0  73 6b 4c 69 62 3a 44 69  61 6c 6f 67 2e 68 3d 3e  |skLib:Dialog.h=>|
000258f0  44 69 61 6c 6f 67 5f 68  3e 0a 0a 54 68 69 73 20  |Dialog_h>..This |
00025900  66 75 6e 63 74 69 6f 6e  20 73 68 6f 77 73 20 74  |function shows t|
00025910  68 65 20 64 69 61 6c 6f  67 75 65 20 62 6f 78 20  |he dialogue box |
00025920  77 68 6f 73 65 20 68 61  6e 64 6c 65 20 69 73 20  |whose handle is |
00025930  67 69 76 65 6e 20 61 73  20 61 20 27 73 74 61 74  |given as a 'stat|
00025940  69 63 27 20 64 69 61 6c  6f 67 75 65 20 62 6f 78  |ic' dialogue box|
00025950  20 69 65 20 69 74 20 6f  6e 6c 79 20 63 6c 6f 73  | ie it only clos|
00025960  65 73 20 69 66 20 74 68  65 20 63 6c 6f 73 65 20  |es if the close |
00025970  69 63 6f 6e 20 69 73 20  63 6c 69 63 6b 65 64 20  |icon is clicked |
00025980  6f 72 20 69 66 20 74 68  65 20 61 70 70 6c 69 63  |or if the applic|
00025990  61 74 69 6f 6e 20 63 6c  6f 73 65 73 20 69 74 2e  |ation closes it.|
000259a0  20 2f 6f 70 65 6e 70 6f  73 2f 20 67 6f 76 65 72  | /openpos/ gover|
000259b0  6e 73 20 74 68 65 20 70  6f 73 69 74 69 6f 6e 20  |ns the position |
000259c0  61 74 20 77 68 69 63 68  20 74 68 65 20 64 62 6f  |at which the dbo|
000259d0  78 20 69 73 20 73 68 6f  77 6e 2e 00 44 41 54 41  |x is shown..DATA|
000259e0  ea 00 00 00 44 69 61 6c  6f 67 5f 53 74 69 6c 6c  |....Dialog_Still|
000259f0  4f 70 65 6e 0a 53 79 6e  74 61 78 3a 09 3c 42 4f  |Open.Syntax:.<BO|
00025a00  4f 4c 3e 20 44 69 61 6c  6f 67 5f 53 74 69 6c 6c  |OL> Dialog_Still|
00025a10  4f 70 65 6e 20 28 3c 64  69 61 6c 6f 67 3e 20 64  |Open (<dialog> d|
00025a20  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00025a30  4c 69 62 3a 44 69 61 6c  6f 67 2e 68 3d 3e 44 69  |Lib:Dialog.h=>Di|
00025a40  61 6c 6f 67 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |alog_h>..Returns|
00025a50  3a 09 3c 54 52 55 45 3e  20 69 66 20 74 68 65 20  |:.<TRUE> if the |
00025a60  64 69 61 6c 6f 67 75 65  20 62 6f 78 20 69 73 20  |dialogue box is |
00025a70  6f 70 65 6e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |open..This funct|
00025a80  69 6f 6e 20 69 73 20 61  63 74 75 61 6c 6c 79 20  |ion is actually |
00025a90  64 65 66 69 6e 65 64 20  61 73 20 61 20 6d 61 63  |defined as a mac|
00025aa0  72 6f 20 72 65 74 75 72  6e 69 6e 67 20 7b 2f 7d  |ro returning {/}|
00025ab0  64 2d 3e 73 74 61 74 65  2e 73 74 69 6c 6c 6f 70  |d->state.stillop|
00025ac0  65 6e 7b 2f 7d 2e 00 00  44 41 54 41 b3 00 00 00  |en{/}...DATA....|
00025ad0  54 69 6d 73 4c 69 62 3a  44 69 61 6c 6f 67 2e 68  |TimsLib:Dialog.h|
00025ae0  0a 23 50 61 72 65 6e 74  20 72 6f 5f 74 6c 69 62  |.#Parent ro_tlib|
00025af0  5f 0a 54 68 69 73 20 69  73 20 61 6e 20 65 78 74  |_.This is an ext|
00025b00  65 6e 73 69 6f 6e 20 74  6f 20 3c 44 65 73 6b 4c  |ension to <DeskL|
00025b10  69 62 3a 44 69 61 6c 6f  67 2e 68 3d 3e 44 69 61  |ib:Dialog.h=>Dia|
00025b20  6c 6f 67 5f 68 3e 20 77  68 69 63 68 0a 70 72 6f  |log_h> which.pro|
00025b30  76 69 64 65 73 20 6f 6e  65 20 66 75 6e 63 74 69  |vides one functi|
00025b40  6f 6e 2c 20 3c 44 69 61  6c 6f 67 5f 48 69 64 65  |on, <Dialog_Hide|
00025b50  3e 2c 20 77 68 69 63 68  20 69 73 20 6e 6f 77 20  |>, which is now |
00025b60  69 6e 63 6c 75 64 65 64  20 69 6e 20 44 65 73 6b  |included in Desk|
00025b70  4c 69 62 20 61 6e 79 77  61 79 2e 00 44 41 54 41  |Lib anyway..DATA|
00025b80  32 01 00 00 44 69 61 6c  6f 67 5f 57 61 69 74 46  |2...Dialog_WaitF|
00025b90  6f 72 43 6c 69 63 6b 0a  53 79 6e 74 61 78 3a 09  |orClick.Syntax:.|
00025ba0  69 6e 74 20 44 69 61 6c  6f 67 5f 57 61 69 74 46  |int Dialog_WaitF|
00025bb0  6f 72 43 6c 69 63 6b 20  28 3c 64 69 61 6c 6f 67  |orClick (<dialog|
00025bc0  3e 20 64 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |> d);.Header:.<D|
00025bd0  65 73 6b 4c 69 62 3a 44  69 61 6c 6f 67 2e 68 3d  |eskLib:Dialog.h=|
00025be0  3e 44 69 61 6c 6f 67 5f  68 3e 0a 0a 52 65 74 75  |>Dialog_h>..Retu|
00025bf0  72 6e 73 3a 09 54 68 65  20 69 63 6f 6e 20 63 6c  |rns:.The icon cl|
00025c00  69 63 6b 65 64 2e 0a 0a  54 68 69 73 20 66 75 6e  |icked...This fun|
00025c10  63 74 69 6f 6e 20 77 61  69 74 73 20 66 6f 72 20  |ction waits for |
00025c20  61 6e 20 69 63 6f 6e 20  74 6f 20 62 65 20 63 6c  |an icon to be cl|
00025c30  69 63 6b 65 64 20 69 6e  20 74 68 65 20 64 69 61  |icked in the dia|
00025c40  6c 6f 67 75 65 20 62 6f  78 2e 20 41 6c 6c 20 6f  |logue box. All o|
00025c50  74 68 65 72 20 65 76 65  6e 74 73 20 61 72 65 20  |ther events are |
00025c60  70 72 6f 63 65 73 73 65  64 20 6e 6f 72 6d 61 6c  |processed normal|
00025c70  6c 79 2e 20 49 66 20 74  68 65 20 75 73 65 72 20  |ly. If the user |
00025c80  63 6c 6f 73 65 73 20 74  68 65 20 77 69 6e 64 6f  |closes the windo|
00025c90  77 2c 20 3c 64 69 61 6c  6f 67 5f 43 4c 4f 53 45  |w, <dialog_CLOSE|
00025ca0  3e 20 69 73 20 72 65 74  75 72 6e 65 64 2e 00 00  |> is returned...|
00025cb0  44 41 54 41 28 01 00 00  44 69 61 6c 6f 67 5f 57  |DATA(...Dialog_W|
00025cc0  69 6e 64 6f 77 48 61 6e  64 6c 65 0a 53 79 6e 74  |indowHandle.Synt|
00025cd0  61 78 3a 09 3c 77 69 6e  64 6f 77 5f 68 61 6e 64  |ax:.<window_hand|
00025ce0  6c 65 3e 20 44 69 61 6c  6f 67 5f 57 69 6e 64 6f  |le> Dialog_Windo|
00025cf0  77 48 61 6e 64 6c 65 20  28 3c 64 69 61 6c 6f 67  |wHandle (<dialog|
00025d00  3e 20 64 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |> d);.Header:.<D|
00025d10  65 73 6b 4c 69 62 3a 44  69 61 6c 6f 67 2e 68 3e  |eskLib:Dialog.h>|
00025d20  0a 0a 52 65 74 75 72 6e  73 3a 09 54 68 65 20 77  |..Returns:.The w|
00025d30  69 6e 64 6f 77 20 68 61  6e 64 6c 65 2e 0a 0a 54  |indow handle...T|
00025d40  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 74  |his function ret|
00025d50  75 72 6e 73 20 74 68 65  20 52 49 53 43 20 4f 53  |urns the RISC OS|
00025d60  20 57 49 4d 50 20 77 69  6e 64 6f 77 20 68 61 6e  | WIMP window han|
00025d70  64 6c 65 20 61 73 73 6f  63 69 61 74 65 64 20 77  |dle associated w|
00025d80  69 74 68 20 74 68 65 20  67 69 76 65 6e 20 64 69  |ith the given di|
00025d90  61 6c 6f 67 75 65 20 62  6f 78 2e 20 49 74 20 69  |alogue box. It i|
00025da0  73 20 61 63 74 75 61 6c  6c 79 20 64 65 66 69 6e  |s actually defin|
00025db0  65 64 20 61 73 20 61 20  6d 61 63 72 6f 20 72 65  |ed as a macro re|
00025dc0  74 75 72 6e 69 6e 67 20  7b 2f 7d 64 2d 3e 77 69  |turning {/}d->wi|
00025dd0  6e 64 6f 77 7b 2f 7d 2e  44 41 54 41 da 00 00 00  |ndow{/}.DATA....|
00025de0  64 69 66 66 74 69 6d 65  0a 53 79 6e 74 61 78 3a  |difftime.Syntax:|
00025df0  09 64 6f 75 62 6c 65 20  64 69 66 66 74 69 6d 65  |.double difftime|
00025e00  20 28 3c 74 69 6d 65 5f  74 3e 20 74 32 2c 20 74  | (<time_t> t2, t|
00025e10  69 6d 65 5f 74 20 74 31  29 3b 0a 48 65 61 64 65  |ime_t t1);.Heade|
00025e20  72 3a 09 3c 74 69 6d 65  2e 68 3d 3e 74 69 6d 65  |r:.<time.h=>time|
00025e30  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 54 68  |_h>..Returns:.Th|
00025e40  65 20 69 6e 74 65 72 76  61 6c 20 69 6e 20 73 65  |e interval in se|
00025e50  63 6f 6e 64 73 2e 0a 0a  54 68 69 73 20 66 75 6e  |conds...This fun|
00025e60  63 74 69 6f 6e 20 63 61  6c 63 75 6c 61 74 65 73  |ction calculates|
00025e70  20 74 68 65 20 64 69 66  66 65 72 65 6e 63 65 20  | the difference |
00025e80  62 65 74 77 65 65 6e 20  74 68 65 20 74 77 6f 20  |between the two |
00025e90  63 61 6c 65 6e 64 61 72  20 74 69 6d 65 73 20 28  |calendar times (|
00025ea0  74 32 2d 74 31 29 20 69  6e 20 73 65 63 6f 6e 64  |t2-t1) in second|
00025eb0  73 2e 00 00 44 41 54 41  21 02 00 00 44 69 73 70  |s...DATA!...Disp|
00025ec0  61 74 63 68 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |atch.Syntax:.int|
00025ed0  20 44 69 73 70 61 74 63  68 20 28 69 6e 74 20 76  | Dispatch (int v|
00025ee0  61 6c 75 65 2c 20 69 6e  74 20 73 69 7a 65 2c 20  |alue, int size, |
00025ef0  69 6e 74 20 74 61 62 6c  65 5b 5d 2c 20 3c 64 69  |int table[], <di|
00025f00  73 70 61 74 63 68 5f 70  72 6f 63 3e 20 66 75 6e  |spatch_proc> fun|
00025f10  63 74 69 6f 6e 73 5b 5d  2c 20 69 6e 74 20 61 72  |ctions[], int ar|
00025f20  67 30 2c 20 69 6e 74 20  61 72 67 31 2c 20 69 6e  |g0, int arg1, in|
00025f30  74 20 61 72 67 32 2c 20  69 6e 74 20 61 72 67 33  |t arg2, int arg3|
00025f40  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00025f50  4c 69 62 3a 44 69 73 70  61 74 63 68 2e 68 3d 3e  |Lib:Dispatch.h=>|
00025f60  44 69 73 70 61 74 63 68  5f 68 3e 0a 0a 52 65 74  |Dispatch_h>..Ret|
00025f70  75 72 6e 73 3a 09 2d 31  20 69 66 20 66 61 69 6c  |urns:.-1 if fail|
00025f80  65 64 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ed...This functi|
00025f90  6f 6e 20 73 65 61 72 63  68 65 73 20 74 68 72 6f  |on searches thro|
00025fa0  75 67 68 20 74 68 65 20  61 72 72 61 79 20 2f 74  |ugh the array /t|
00025fb0  61 62 6c 65 2f 20 28 77  68 69 63 68 20 68 61 73  |able/ (which has|
00025fc0  20 2f 73 69 7a 65 2f 20  65 6c 65 6d 65 6e 74 73  | /size/ elements|
00025fd0  29 20 66 6f 72 20 61 20  76 61 6c 75 65 20 77 68  |) for a value wh|
00025fe0  69 63 68 20 6d 61 74 63  68 65 73 20 2f 76 61 6c  |ich matches /val|
00025ff0  75 65 2f 2e 20 49 74 20  74 68 65 6e 20 63 61 6c  |ue/. It then cal|
00026000  6c 73 20 74 68 65 20 63  6f 72 72 65 73 70 6f 6e  |ls the correspon|
00026010  64 69 6e 67 20 66 75 6e  63 74 69 6f 6e 20 69 6e  |ding function in|
00026020  20 74 68 65 20 2f 66 75  6e 63 74 69 6f 6e 73 2f  | the /functions/|
00026030  20 61 72 72 61 79 20 77  69 74 68 20 61 72 67 75  | array with argu|
00026040  6d 65 6e 74 73 20 61 73  20 67 69 76 65 6e 2e 0a  |ments as given..|
00026050  0a 49 66 20 6f 6e 65 20  6f 66 20 74 68 65 20 65  |.If one of the e|
00026060  6c 65 6d 65 6e 74 73 20  69 6e 20 2f 74 61 62 6c  |lements in /tabl|
00026070  65 2f 20 68 61 73 20 74  68 65 20 76 61 6c 75 65  |e/ has the value|
00026080  20 2d 31 2c 20 69 74 20  69 73 20 61 6c 77 61 79  | -1, it is alway|
00026090  73 20 63 61 6c 6c 65 64  2c 20 73 6f 20 69 66 20  |s called, so if |
000260a0  79 6f 75 20 77 61 6e 74  20 61 20 64 65 66 61 75  |you want a defau|
000260b0  6c 74 20 61 63 74 69 6f  6e 2c 20 6d 61 6b 65 20  |lt action, make |
000260c0  69 74 20 74 68 65 20 6c  61 73 74 20 66 75 6e 63  |it the last func|
000260d0  74 69 6f 6e 2e 00 00 00  44 49 52 24 48 00 00 00  |tion....DIR$H...|
000260e0  48 00 00 00 20 61 02 00  46 fd ff ff 95 a5 f4 24  |H... a..F......$|
000260f0  c3 00 00 00 13 00 00 00  00 00 00 00 68 00 00 00  |............h...|
00026100  e4 61 02 00 46 ff ff ff  b3 c1 f2 24 0e 01 00 00  |.a..F......$....|
00026110  13 00 00 00 00 00 00 00  70 72 6f 63 00 00 00 00  |........proc....|
00026120  44 41 54 41 c3 00 00 00  44 65 73 6b 4c 69 62 3a  |DATA....DeskLib:|
00026130  44 69 73 70 61 74 63 68  2e 68 0a 56 65 72 73 69  |Dispatch.h.Versi|
00026140  6f 6e 3a 20 31 2e 30 30  20 28 30 33 20 41 70 72  |on: 1.00 (03 Apr|
00026150  20 31 39 39 32 29 0a 23  6c 69 6e 65 0a 54 68 69  | 1992).#line.Thi|
00026160  73 20 68 65 61 64 65 72  20 64 65 63 6c 61 72 65  |s header declare|
00026170  73 20 6a 75 73 74 20 6f  6e 65 20 66 75 6e 63 74  |s just one funct|
00026180  69 6f 6e 2c 20 61 20 66  75 6e 63 74 69 6f 6e 20  |ion, a function |
00026190  64 69 73 70 61 74 63 68  65 72 2e 20 49 74 20 61  |dispatcher. It a|
000261a0  6c 73 6f 20 64 65 66 69  6e 65 73 20 6f 6e 65 20  |lso defines one |
000261b0  74 79 70 65 2e 0a 0a 46  75 6e 63 74 69 6f 6e 3a  |type...Function:|
000261c0  09 3c 44 69 73 70 61 74  63 68 3e 0a 0a 54 79 70  |.<Dispatch>..Typ|
000261d0  65 3a 09 09 3c 64 69 73  70 61 74 63 68 5f 70 72  |e:..<dispatch_pr|
000261e0  6f 63 3e 00 44 41 54 41  0e 01 00 00 64 69 73 70  |oc>.DATA....disp|
000261f0  61 74 63 68 5f 70 72 6f  63 0a 54 68 65 20 74 79  |atch_proc.The ty|
00026200  70 65 20 64 69 73 70 61  74 63 68 5f 70 72 6f 63  |pe dispatch_proc|
00026210  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
00026220  44 65 73 6b 4c 69 62 3a  44 69 73 70 61 74 63 68  |DeskLib:Dispatch|
00026230  2e 68 3d 3e 44 69 73 70  61 74 63 68 5f 68 3e 20  |.h=>Dispatch_h> |
00026240  61 73 20 61 20 74 79 70  65 20 63 61 70 61 62 6c  |as a type capabl|
00026250  65 20 6f 66 20 68 6f 6c  64 69 6e 67 20 61 20 70  |e of holding a p|
00026260  6f 69 6e 74 65 72 20 74  6f 20 61 20 66 75 6e 63  |ointer to a func|
00026270  74 69 6f 6e 20 74 6f 20  62 65 20 63 61 6c 6c 65  |tion to be calle|
00026280  64 20 62 79 20 74 68 65  20 3c 44 69 73 70 61 74  |d by the <Dispat|
00026290  63 68 3e 20 66 75 6e 63  74 69 6f 6e 2e 20 46 75  |ch> function. Fu|
000262a0  6e 63 74 69 6f 6e 73 20  73 68 6f 75 6c 64 20 68  |nctions should h|
000262b0  61 76 65 20 74 68 65 20  66 6f 72 6d 3a 20 7b 66  |ave the form: {f|
000262c0  43 6f 64 65 7d 76 6f 69  64 20 6d 79 66 75 6e 63  |Code}void myfunc|
000262d0  28 29 3b 20 7b 66 7d 77  69 74 68 20 75 70 20 74  |(); {f}with up t|
000262e0  6f 20 74 68 72 65 65 20  61 72 67 75 6d 65 6e 74  |o three argument|
000262f0  73 2e 00 00 44 41 54 41  3e 01 00 00 64 69 76 0a  |s...DATA>...div.|
00026300  53 79 6e 74 61 78 3a 09  3c 64 69 76 5f 74 3e 20  |Syntax:.<div_t> |
00026310  64 69 76 20 28 69 6e 74  20 78 2c 20 69 6e 74 20  |div (int x, int |
00026320  79 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 74 64  |y);.Header:.<std|
00026330  6c 69 62 2e 68 3d 3e 73  74 64 6c 69 62 3e 0a 0a  |lib.h=>stdlib>..|
00026340  52 65 74 75 72 6e 73 3a  09 54 68 65 20 71 75 6f  |Returns:.The quo|
00026350  74 69 65 6e 74 20 61 6e  64 20 72 65 6d 61 69 6e  |tient and remain|
00026360  64 65 72 20 6f 66 20 78  2f 79 2e 0a 0a 54 68 69  |der of x/y...Thi|
00026370  73 20 66 75 6e 63 74 69  6f 6e 20 63 61 6c 63 75  |s function calcu|
00026380  6c 61 74 65 73 20 74 68  65 20 71 75 6f 74 69 65  |lates the quotie|
00026390  6e 74 20 61 6e 64 20 72  65 6d 61 69 6e 64 65 72  |nt and remainder|
000263a0  20 6f 66 20 78 2f 79 2e  20 46 6f 72 6d 61 6c 6c  | of x/y. Formall|
000263b0  79 20 74 68 69 73 20 69  73 20 64 65 66 69 6e 65  |y this is define|
000263c0  64 20 61 73 20 72 3d 78  2d 28 71 2a 79 29 2c 20  |d as r=x-(q*y), |
000263d0  77 68 65 72 65 20 72 20  69 73 20 74 68 65 20 72  |where r is the r|
000263e0  65 6d 61 69 6e 64 65 72  20 61 6e 64 20 71 20 69  |emainder and q i|
000263f0  73 20 74 68 65 20 71 75  6f 74 69 65 6e 74 2e 20  |s the quotient. |
00026400  72 20 69 73 20 61 6c 77  61 79 73 20 6c 65 73 73  |r is always less|
00026410  20 74 68 61 6e 20 79 20  61 6e 64 20 6f 66 20 74  | than y and of t|
00026420  68 65 20 73 61 6d 65 20  73 69 67 6e 20 61 73 20  |he same sign as |
00026430  71 2e 00 00 44 49 52 24  28 00 00 00 28 00 00 00  |q...DIR$(...(...|
00026440  5c 64 02 00 46 ff ff ff  1c 63 de 22 e0 00 00 00  |\d..F....c."....|
00026450  13 00 00 00 00 00 00 00  74 00 00 00 44 41 54 41  |........t...DATA|
00026460  e0 00 00 00 64 69 76 5f  74 0a 54 68 65 20 74 79  |....div_t.The ty|
00026470  70 65 20 7b 2f 7d 64 69  76 5f 74 7b 2f 7d 20 69  |pe {/}div_t{/} i|
00026480  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 73 74  |s defined in <st|
00026490  64 6c 69 62 2e 68 3d 3e  73 74 64 6c 69 62 3e 20  |dlib.h=>stdlib> |
000264a0  66 6f 72 20 68 6f 6c 64  69 6e 67 20 72 65 74 75  |for holding retu|
000264b0  72 6e 20 76 61 6c 75 65  73 20 66 72 6f 6d 20 74  |rn values from t|
000264c0  68 65 20 66 75 6e 63 74  69 6f 6e 20 3c 64 69 76  |he function <div|
000264d0  3e 2e 20 49 74 20 69 73  20 64 65 66 69 6e 65 64  |>. It is defined|
000264e0  20 61 73 20 74 68 65 20  66 6f 6c 6c 6f 77 69 6e  | as the followin|
000264f0  67 20 73 74 72 75 63 74  75 72 65 3a 0a 0a 5c 7b  |g structure:..\{|
00026500  0a 20 20 20 20 69 6e 74  20 71 75 6f 74 3b 09 2f  |.    int quot;./|
00026510  2a 20 51 75 6f 74 69 65  6e 74 20 2a 2f 0a 20 20  |* Quotient */.  |
00026520  20 20 69 6e 74 20 72 65  6d 3b 09 2f 2a 20 52 65  |  int rem;./* Re|
00026530  6d 61 69 6e 64 65 72 20  2a 2f 0a 7d 44 49 52 24  |mainder */.}DIR$|
00026540  6c 00 00 00 6c 00 00 00  a8 65 02 00 46 fd ff ff  |l...l....e..F...|
00026550  2f a8 08 2e 02 03 00 00  13 00 00 00 00 00 00 00  |/...............|
00026560  4d 65 6e 75 00 00 00 00  ac 68 02 00 46 fd ff ff  |Menu.....h..F...|
00026570  59 6b 36 26 94 01 00 00  13 00 00 00 00 00 00 00  |Yk6&............|
00026580  54 69 6d 65 00 00 00 00  40 6a 02 00 46 fd ff ff  |Time....@j..F...|
00026590  bd 7c 52 26 01 01 00 00  13 00 00 00 00 00 00 00  |.|R&............|
000265a0  70 6f 69 6e 74 65 72 00  44 41 54 41 02 03 00 00  |pointer.DATA....|
000265b0  44 65 73 6b 4c 69 62 3a  4d 65 6e 75 2e 68 0a 56  |DeskLib:Menu.h.V|
000265c0  65 72 73 69 6f 6e 3a 20  31 2e 30 33 20 28 44 65  |ersion: 1.03 (De|
000265d0  63 20 31 39 39 34 29 0a  23 6c 69 6e 65 0a 54 68  |c 1994).#line.Th|
000265e0  69 73 20 68 65 61 64 65  72 20 64 65 63 6c 61 72  |is header declar|
000265f0  65 73 20 66 75 6e 63 74  69 6f 6e 73 20 66 6f 72  |es functions for|
00026600  20 68 61 6e 64 6c 69 6e  67 20 52 49 53 43 20 4f  | handling RISC O|
00026610  53 20 6d 65 6e 75 73 20  65 61 73 69 6c 79 2e 0a  |S menus easily..|
00026620  0a 46 75 6e 63 74 69 6f  6e 73 3a 0a 0a 23 54 61  |.Functions:..#Ta|
00026630  62 6c 65 20 63 6f 6c 75  6d 6e 73 20 33 0a 3c 4d  |ble columns 3.<M|
00026640  65 6e 75 5f 4e 65 77 3e  0a 3c 4d 65 6e 75 5f 45  |enu_New>.<Menu_E|
00026650  78 74 65 6e 64 3e 0a 3c  4d 65 6e 75 5f 53 68 6f  |xtend>.<Menu_Sho|
00026660  77 3e 0a 3c 4d 65 6e 75  5f 53 68 6f 77 4c 61 73  |w>.<Menu_ShowLas|
00026670  74 3e 0a 3c 4d 65 6e 75  5f 41 64 64 53 75 62 4d  |t>.<Menu_AddSubM|
00026680  65 6e 75 3e 0a 3c 4d 65  6e 75 5f 43 61 6c 63 48  |enu>.<Menu_CalcH|
00026690  65 69 67 68 74 3e 0a 3c  4d 65 6e 75 5f 53 79 73  |eight>.<Menu_Sys|
000266a0  48 61 6e 64 6c 65 3d 3e  4d 65 6e 75 5f 53 79 73  |Handle=>Menu_Sys|
000266b0  48 61 6e 64 6c 65 5f 3e  0a 3c 4d 65 6e 75 5f 53  |Handle_>.<Menu_S|
000266c0  44 69 73 70 6f 73 65 3e  0a 3c 4d 65 6e 75 5f 46  |Dispose>.<Menu_F|
000266d0  75 6c 6c 44 69 73 70 6f  73 65 3e 0a 3c 4d 65 6e  |ullDispose>.<Men|
000266e0  75 5f 4d 61 6b 65 49 6e  64 69 72 65 63 74 65 64  |u_MakeIndirected|
000266f0  3e 0a 3c 4d 65 6e 75 5f  4d 61 6b 65 57 72 69 74  |>.<Menu_MakeWrit|
00026700  61 62 6c 65 3e 0a 3c 4d  65 6e 75 5f 53 65 74 46  |able>.<Menu_SetF|
00026710  6c 61 67 73 3e 0a 3c 4d  65 6e 75 5f 47 65 74 46  |lags>.<Menu_GetF|
00026720  6c 61 67 73 3e 0a 3c 4d  65 6e 75 5f 53 65 74 54  |lags>.<Menu_SetT|
00026730  65 78 74 3e 0a 3c 4d 65  6e 75 5f 47 65 74 54 65  |ext>.<Menu_GetTe|
00026740  78 74 3e 0a 3c 4d 65 6e  75 5f 52 65 6d 6f 76 65  |xt>.<Menu_Remove|
00026750  49 74 65 6d 3e 0a 3c 4d  65 6e 75 5f 57 61 72 6e  |Item>.<Menu_Warn|
00026760  3e 0a 3c 4d 65 6e 75 5f  50 6f 70 55 70 3e 0a 3c  |>.<Menu_PopUp>.<|
00026770  4d 65 6e 75 5f 50 6f 70  55 70 41 75 74 6f 3e 0a  |Menu_PopUpAuto>.|
00026780  3c 4d 65 6e 75 5f 46 6f  6e 74 4d 65 6e 75 3e 0a  |<Menu_FontMenu>.|
00026790  3c 4d 65 6e 75 5f 46 6f  6e 74 4d 65 6e 75 33 3e  |<Menu_FontMenu3>|
000267a0  0a 3c 4d 65 6e 75 5f 46  6f 6e 74 4d 65 6e 75 44  |.<Menu_FontMenuD|
000267b0  65 63 6f 64 65 3e 0a 3c  4d 65 6e 75 5f 46 6f 6e  |ecode>.<Menu_Fon|
000267c0  74 4d 65 6e 75 44 65 63  6f 64 65 33 3e 0a 3c 4d  |tMenuDecode3>.<M|
000267d0  65 6e 75 5f 52 65 76 69  73 65 57 69 64 74 68 3e  |enu_ReviseWidth>|
000267e0  0a 23 45 6e 64 54 61 62  6c 65 0a 0a 4d 61 63 72  |.#EndTable..Macr|
000267f0  6f 73 3a 0a 0a 23 69 6e  64 65 6e 74 20 34 0a 23  |os:..#indent 4.#|
00026800  74 61 62 6c 65 20 6c 69  6e 65 73 20 31 0a 3c 4d  |table lines 1.<M|
00026810  65 6e 75 5f 46 6f 6e 74  4d 65 6e 75 5f 4e 4f 54  |enu_FontMenu_NOT|
00026820  49 43 4b 3e 0a 3c 4d 65  6e 75 5f 46 6f 6e 74 4d  |ICK>.<Menu_FontM|
00026830  65 6e 75 5f 54 49 43 4b  53 59 53 46 4f 4e 54 3e  |enu_TICKSYSFONT>|
00026840  0a 23 65 6e 64 74 61 62  6c 65 0a 23 69 6e 64 65  |.#endtable.#inde|
00026850  6e 74 0a 0a 56 61 72 69  61 62 6c 65 73 3a 0a 0a  |nt..Variables:..|
00026860  23 69 6e 64 65 6e 74 20  31 30 0a 23 54 61 62 6c  |#indent 10.#Tabl|
00026870  65 20 63 6f 6c 75 6d 6e  73 20 32 0a 3c 6d 65 6e  |e columns 2.<men|
00026880  75 5f 63 75 72 72 65 6e  74 70 6f 73 3e 0a 3c 6d  |u_currentpos>.<m|
00026890  65 6e 75 5f 63 75 72 72  65 6e 74 6f 70 65 6e 3e  |enu_currentopen>|
000268a0  0a 23 45 6e 64 54 61 62  6c 65 00 00 44 41 54 41  |.#EndTable..DATA|
000268b0  94 01 00 00 44 65 73 6b  4c 69 62 3a 54 69 6d 65  |....DeskLib:Time|
000268c0  2e 68 0a 56 65 72 73 69  6f 6e 3a 20 31 2e 30 32  |.h.Version: 1.02|
000268d0  20 28 32 32 20 4d 61 79  20 31 39 39 34 29 0a 23  | (22 May 1994).#|
000268e0  6c 69 6e 65 0a 54 68 69  73 20 68 65 61 64 65 72  |line.This header|
000268f0  20 64 65 63 6c 61 72 65  73 20 66 75 6e 63 74 69  | declares functi|
00026900  6f 6e 73 20 74 6f 20 64  6f 20 77 69 74 68 20 74  |ons to do with t|
00026910  69 6d 65 3a 0a 0a 46 75  6e 63 74 69 6f 6e 73 3a  |ime:..Functions:|
00026920  0a 0a 23 69 6e 64 65 6e  74 20 31 30 0a 3c 54 69  |..#indent 10.<Ti|
00026930  6d 65 5f 4d 6f 6e 6f 74  6f 6e 69 63 3e 0a 3c 54  |me_Monotonic>.<T|
00026940  69 6d 65 5f 43 6f 6e 76  65 72 74 44 61 74 65 41  |ime_ConvertDateA|
00026950  6e 64 54 69 6d 65 3e 0a  3c 54 69 6d 65 5f 43 6f  |ndTime>.<Time_Co|
00026960  6e 76 65 72 74 53 74 61  6e 64 61 72 64 44 61 74  |nvertStandardDat|
00026970  65 41 6e 64 54 69 6d 65  3e 0a 23 69 6e 64 65 6e  |eAndTime>.#inden|
00026980  74 20 30 0a 0a 4d 61 63  72 6f 73 3a 0a 0a 23 54  |t 0..Macros:..#T|
00026990  61 62 6c 65 20 32 20 31  36 0a 3c 54 69 6d 65 5f  |able 2 16.<Time_|
000269a0  43 54 49 4d 45 3e 0a 3c  54 69 6d 65 5f 53 54 41  |CTIME>.<Time_STA|
000269b0  4e 44 41 52 44 3e 0a 3c  54 69 6d 65 5f 46 41 4e  |NDARD>.<Time_FAN|
000269c0  43 59 44 41 54 45 3e 0a  3c 54 69 6d 65 5f 53 48  |CYDATE>.<Time_SH|
000269d0  4f 52 54 54 49 4d 45 3e  0a 3c 54 69 6d 65 5f 4c  |ORTTIME>.<Time_L|
000269e0  4f 4e 47 54 49 4d 45 3e  0a 3c 54 69 6d 65 5f 45  |ONGTIME>.<Time_E|
000269f0  55 52 4f 54 49 4d 45 3e  0a 23 45 6e 64 54 61 62  |UROTIME>.#EndTab|
00026a00  6c 65 0a 0a 54 68 65 20  6d 61 63 72 6f 73 20 61  |le..The macros a|
00026a10  72 65 20 66 6f 72 6d 61  74 20 73 74 72 69 6e 67  |re format string|
00026a20  73 20 66 6f 72 20 3c 54  69 6d 65 5f 43 6f 6e 76  |s for <Time_Conv|
00026a30  65 72 74 44 61 74 65 41  6e 64 54 69 6d 65 3e 2e  |ertDateAndTime>.|
00026a40  44 41 54 41 01 01 00 00  44 65 73 6b 4c 69 62 3a  |DATA....DeskLib:|
00026a50  50 6f 69 6e 74 65 72 2e  68 0a 56 65 72 73 69 6f  |Pointer.h.Versio|
00026a60  6e 3a 20 31 2e 30 30 20  28 32 38 20 53 65 70 20  |n: 1.00 (28 Sep |
00026a70  31 39 39 34 29 0a 23 6c  69 6e 65 0a 54 68 69 73  |1994).#line.This|
00026a80  20 68 65 61 64 65 72 20  63 6f 6e 74 61 69 6e 73  | header contains|
00026a90  20 68 69 67 68 2d 6c 65  76 65 6c 20 70 6f 69 6e  | high-level poin|
00026aa0  74 65 72 20 68 61 6e 64  6c 69 6e 67 20 66 75 6e  |ter handling fun|
00026ab0  63 74 69 6f 6e 73 2e 0a  0a 46 75 6e 63 74 69 6f  |ctions...Functio|
00026ac0  6e 73 3a 0a 0a 23 74 61  62 6c 65 20 63 6f 6c 75  |ns:..#table colu|
00026ad0  6d 6e 73 20 32 0a 3c 50  6f 69 6e 74 65 72 5f 52  |mns 2.<Pointer_R|
00026ae0  65 73 74 72 69 63 74 54  6f 57 69 6e 64 6f 77 3e  |estrictToWindow>|
00026af0  0a 3c 50 6f 69 6e 74 65  72 5f 52 65 73 74 72 69  |.<Pointer_Restri|
00026b00  63 74 54 6f 49 63 6f 6e  3e 0a 3c 50 6f 69 6e 74  |ctToIcon>.<Point|
00026b10  65 72 5f 52 65 73 74 72  69 63 74 54 6f 52 65 63  |er_RestrictToRec|
00026b20  74 3e 0a 3c 50 6f 69 6e  74 65 72 5f 55 6e 72 65  |t>.<Pointer_Unre|
00026b30  73 74 72 69 63 74 3e 0a  23 65 6e 64 74 61 62 6c  |strict>.#endtabl|
00026b40  65 00 00 00 44 41 54 41  df 02 00 00 64 6f 0a 54  |e...DATA....do.T|
00026b50  68 69 73 20 63 6f 6d 6d  61 6e 64 20 64 65 66 69  |his command defi|
00026b60  6e 65 73 20 61 20 2f 64  6f 2f 20 6c 6f 6f 70 2e  |nes a /do/ loop.|
00026b70  20 54 68 69 73 20 73 69  6d 69 6c 61 72 20 74 6f  | This similar to|
00026b80  20 61 20 3c 52 45 50 45  41 54 3d 3e 42 61 73 69  | a <REPEAT=>Basi|
00026b90  63 3a 52 45 50 45 41 54  3e 20 6c 6f 6f 70 20 69  |c:REPEAT> loop i|
00026ba0  6e 20 42 61 73 69 63 20  28 62 75 74 20 6e 6f 74  |n Basic (but not|
00026bb0  65 20 69 74 20 69 73 20  2a 77 68 69 6c 65 2a 20  |e it is *while* |
00026bc0  6e 6f 74 20 2a 75 6e 74  69 6c 2a 2e 20 49 74 20  |not *until*. It |
00026bd0  68 61 73 20 74 68 65 20  67 65 6e 65 72 61 6c 20  |has the general |
00026be0  66 6f 72 6d 3a 0a 0a 7b  66 43 6f 64 65 3b 61 6c  |form:..{fCode;al|
00026bf0  69 67 6e 20 63 65 6e 74  72 65 7d 64 6f 20 5c 3c  |ign centre}do \<|
00026c00  73 74 61 74 65 6d 65 6e  74 3e 3b 20 77 68 69 6c  |statement>; whil|
00026c10  65 20 28 5c 3c 63 6f 6e  64 69 74 69 6f 6e 3e 29  |e (\<condition>)|
00026c20  3b 7b 66 3b 61 6c 69 67  6e 7d 0a 0a 5c 3c 73 74  |;{f;align}..\<st|
00026c30  61 74 65 6d 65 6e 74 3e  09 69 73 20 74 68 65 20  |atement>.is the |
00026c40  63 6f 6d 6d 61 6e 64 20  65 78 65 63 75 74 65 64  |command executed|
00026c50  20 77 69 74 68 69 6e 20  74 68 65 20 6c 6f 6f 70  | within the loop|
00026c60  2e 20 49 74 20 69 73 20  65 78 65 63 75 74 65 64  |. It is executed|
00026c70  20 61 74 20 6c 65 61 73  74 20 6f 6e 63 65 2e 20  | at least once. |
00026c80  49 74 20 6d 61 79 20 62  65 20 61 20 63 6f 6d 70  |It may be a comp|
00026c90  6f 75 6e 64 20 73 74 61  74 65 6d 65 6e 74 20 69  |ound statement i|
00026ca0  65 20 73 65 76 65 72 61  6c 20 73 74 61 74 65 6d  |e several statem|
00026cb0  65 6e 74 73 20 65 6e 63  6c 6f 73 65 64 20 69 6e  |ents enclosed in|
00026cc0  20 62 72 61 63 65 73 20  5c 7b 7d 2c 20 69 6e 20  | braces \{}, in |
00026cd0  77 68 69 63 68 20 63 61  73 65 20 6e 6f 20 73 65  |which case no se|
00026ce0  6d 69 63 6f 6c 6f 6e 20  6e 65 65 64 20 66 6f 6c  |micolon need fol|
00026cf0  6c 6f 77 20 69 74 2c 20  62 75 74 20 74 68 65 20  |low it, but the |
00026d00  66 69 6e 61 6c 20 73 65  6d 69 63 6f 6c 6f 6e 20  |final semicolon |
00026d10  6d 75 73 74 20 73 74 69  6c 6c 20 62 65 20 70 72  |must still be pr|
00026d20  65 73 65 6e 74 2e 0a 0a  5c 3c 63 6f 6e 64 69 74  |esent...\<condit|
00026d30  69 6f 6e 3e 09 69 73 20  65 76 61 6c 75 61 74 65  |ion>.is evaluate|
00026d40  64 20 61 74 20 74 68 65  20 65 6e 64 20 6f 66 20  |d at the end of |
00026d50  65 61 63 68 20 74 69 6d  65 20 72 6f 75 6e 64 20  |each time round |
00026d60  74 68 65 20 6c 6f 6f 70  2e 20 49 66 20 69 74 20  |the loop. If it |
00026d70  69 73 20 66 61 6c 73 65  20 28 30 29 20 74 68 65  |is false (0) the|
00026d80  6e 20 74 68 65 20 6c 6f  6f 70 20 69 73 20 66 69  |n the loop is fi|
00026d90  6e 69 73 68 65 64 2c 20  65 6c 73 65 20 69 74 20  |nished, else it |
00026da0  67 6f 65 73 20 72 6f 75  6e 64 20 61 67 61 69 6e  |goes round again|
00026db0  2e 0a 0a 65 67 2e 20 20  20 20 20 7b 66 43 6f 64  |...eg.     {fCod|
00026dc0  65 7d 64 6f 20 69 3d 3c  67 65 74 63 68 61 72 3e  |e}do i=<getchar>|
00026dd0  28 29 3b 20 77 68 69 6c  65 20 28 69 21 3d 27 51  |(); while (i!='Q|
00026de0  27 29 3b 7b 66 7d 0a 0a  54 68 69 73 20 67 65 74  |');{f}..This get|
00026df0  73 20 63 68 61 72 61 63  74 65 72 73 20 66 72 6f  |s characters fro|
00026e00  6d 20 74 68 65 20 6b 65  79 62 6f 61 72 64 20 75  |m the keyboard u|
00026e10  6e 74 69 6c 20 79 6f 75  20 70 72 65 73 73 20 94  |ntil you press .|
00026e20  51 95 2e 00 44 41 54 41  87 01 00 00 44 65 73 6b  |Q...DATA....Desk|
00026e30  4c 69 62 3a 44 72 61 67  2e 68 0a 56 65 72 73 69  |Lib:Drag.h.Versi|
00026e40  6f 6e 3a 20 31 2e 30 30  20 28 30 31 20 41 70 72  |on: 1.00 (01 Apr|
00026e50  20 31 39 39 34 29 0a 23  6c 69 6e 65 0a 54 68 69  | 1994).#line.Thi|
00026e60  73 20 68 65 61 64 65 72  20 64 65 63 6c 61 72 65  |s header declare|
00026e70  73 20 66 75 6e 63 74 69  6f 6e 73 20 66 6f 72 20  |s functions for |
00026e80  61 75 74 6f 6d 61 74 69  63 61 6c 6c 79 20 68 61  |automatically ha|
00026e90  6e 64 6c 69 6e 67 20 64  72 61 67 20 75 70 64 61  |ndling drag upda|
00026ea0  74 65 20 61 6e 64 20 66  69 6e 69 73 68 20 65 76  |te and finish ev|
00026eb0  65 6e 74 73 2e 0a 0a 46  75 6e 63 74 69 6f 6e 73  |ents...Functions|
00026ec0  3a 0a 0a 23 69 6e 64 65  6e 74 20 39 0a 23 54 61  |:..#indent 9.#Ta|
00026ed0  62 6c 65 20 31 20 32 34  0a 3c 44 72 61 67 5f 49  |ble 1 24.<Drag_I|
00026ee0  6e 69 74 69 61 6c 69 73  65 3e 0a 3c 44 72 61 67  |nitialise>.<Drag|
00026ef0  5f 53 65 74 48 61 6e 64  6c 65 72 73 3e 0a 23 45  |_SetHandlers>.#E|
00026f00  6e 64 54 61 62 6c 65 0a  23 69 6e 64 65 6e 74 0a  |ndTable.#indent.|
00026f10  0a 54 79 70 65 3a 0a 7b  61 6c 69 67 6e 20 63 65  |.Type:.{align ce|
00026f20  6e 74 72 65 7d 0a 3c 64  72 61 67 5f 68 61 6e 64  |ntre}.<drag_hand|
00026f30  6c 65 72 3e 7b 61 6c 69  67 6e 7d 0a 0a 56 61 72  |ler>{align}..Var|
00026f40  69 61 62 6c 65 73 3a 0a  0a 23 69 6e 64 65 6e 74  |iables:..#indent|
00026f50  20 34 0a 23 54 61 62 6c  65 20 32 20 32 34 0a 3c  | 4.#Table 2 24.<|
00026f60  64 72 61 67 5f 63 75 72  72 65 6e 74 75 70 64 61  |drag_currentupda|
00026f70  74 65 3e 0a 3c 64 72 61  67 5f 63 75 72 72 65 6e  |te>.<drag_curren|
00026f80  74 63 6f 6d 70 6c 65 74  65 3e 0a 3c 64 72 61 67  |tcomplete>.<drag|
00026f90  5f 63 75 72 72 65 6e 74  75 73 65 72 64 61 74 61  |_currentuserdata|
00026fa0  3e 0a 23 45 6e 64 54 61  62 6c 65 00 44 49 52 24  |>.#EndTable.DIR$|
00026fb0  2c 01 00 00 2c 01 00 00  d8 70 02 00 46 ff ff ff  |,...,....p..F...|
00026fc0  ea 46 42 26 1e 02 00 00  13 00 00 00 00 00 00 00  |.FB&............|
00026fd0  62 6c 6f 63 6b 00 00 00  f8 72 02 00 46 ff ff ff  |block....r..F...|
00026fe0  93 0a f3 24 c1 00 00 00  13 00 00 00 00 00 00 00  |...$............|
00026ff0  63 75 72 72 65 6e 74 63  6f 6d 70 6c 65 74 65 00  |currentcomplete.|
00027000  bc 73 02 00 46 ff ff ff  e8 07 f3 24 a2 00 00 00  |.s..F......$....|
00027010  13 00 00 00 00 00 00 00  63 75 72 72 65 6e 74 75  |........currentu|
00027020  70 64 61 74 65 00 00 00  60 74 02 00 46 ff ff ff  |pdate...`t..F...|
00027030  88 03 f3 24 46 01 00 00  13 00 00 00 00 00 00 00  |...$F...........|
00027040  68 61 6e 64 6c 65 72 00  a8 75 02 00 46 ff ff ff  |handler..u..F...|
00027050  26 e4 f2 24 af 01 00 00  13 00 00 00 00 00 00 00  |&..$............|
00027060  49 6e 69 74 69 61 6c 69  73 65 00 00 58 77 02 00  |Initialise..Xw..|
00027070  46 ff ff ff f4 f3 f2 24  55 02 00 00 13 00 00 00  |F......$U.......|
00027080  00 00 00 00 53 65 74 48  61 6e 64 6c 65 72 73 00  |....SetHandlers.|
00027090  b0 79 02 00 46 ff ff ff  3e 34 42 26 61 03 00 00  |.y..F...>4B&a...|
000270a0  13 00 00 00 00 00 00 00  74 79 70 65 00 00 00 00  |........type....|
000270b0  14 7d 02 00 46 ff ff ff  d0 2f f3 24 b5 00 00 00  |.}..F..../.$....|
000270c0  13 00 00 00 00 00 00 00  63 75 72 72 65 6e 74 75  |........currentu|
000270d0  73 65 72 64 61 74 61 00  44 41 54 41 1e 02 00 00  |serdata.DATA....|
000270e0  64 72 61 67 5f 62 6c 6f  63 6b 0a 54 68 69 73 20  |drag_block.This |
000270f0  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
00027100  62 79 20 3c 44 65 73 6b  4c 69 62 3a 57 69 6d 70  |by <DeskLib:Wimp|
00027110  2e 68 3d 3e 57 69 6d 70  3e 2e 20 49 74 20 69 73  |.h=>Wimp>. It is|
00027120  20 61 20 73 74 72 75 63  74 75 72 65 20 63 6f 6e  | a structure con|
00027130  74 61 69 6e 69 6e 67 20  69 6e 66 6f 72 6d 61 74  |taining informat|
00027140  69 6f 6e 20 74 6f 20 62  65 20 70 61 73 73 65 64  |ion to be passed|
00027150  20 74 6f 20 3c 57 69 6d  70 5f 44 72 61 67 42 6f  | to <Wimp_DragBo|
00027160  78 3e 2e 0a 0a 20 20 20  5c 7b 0a 20 20 20 20 20  |x>...   \{.     |
00027170  3c 77 69 6e 64 6f 77 5f  68 61 6e 64 6c 65 3e 20  |<window_handle> |
00027180  77 69 6e 64 6f 77 3b 0a  20 20 20 20 20 3c 64 72  |window;.     <dr|
00027190  61 67 5f 74 79 70 65 3e  20 20 20 20 20 74 79 70  |ag_type>     typ|
000271a0  65 3b 0a 20 20 20 20 20  3c 77 69 6d 70 5f 62 6f  |e;.     <wimp_bo|
000271b0  78 3e 20 20 20 20 20 20  73 63 72 65 65 6e 72 65  |x>      screenre|
000271c0  63 74 3b 0a 20 20 20 20  20 77 69 6d 70 5f 62 6f  |ct;.     wimp_bo|
000271d0  78 20 20 20 20 20 20 70  61 72 65 6e 74 3b 0a 20  |x      parent;. |
000271e0  20 20 7d 0a 0a 2f 77 69  6e 64 6f 77 2f 20 69 73  |  }../window/ is|
000271f0  20 6f 6e 6c 79 20 6e 65  65 64 65 64 20 66 6f 72  | only needed for|
00027200  20 64 72 61 67 20 74 79  70 65 73 20 31 2d 34 2e  | drag types 1-4.|
00027210  20 2f 70 61 72 65 6e 74  2f 20 69 73 20 6f 6e 6c  | /parent/ is onl|
00027220  79 20 6e 65 65 64 65 64  20 66 6f 72 20 74 79 70  |y needed for typ|
00027230  65 73 20 35 2d 31 31 2e  20 4e 6f 74 65 20 74 68  |es 5-11. Note th|
00027240  61 74 20 74 68 65 72 65  20 69 73 20 6e 6f 20 73  |at there is no s|
00027250  75 70 70 6f 72 74 20 69  6e 20 44 65 73 6b 4c 69  |upport in DeskLi|
00027260  62 20 66 6f 72 20 74 79  70 65 73 20 38 2d 31 31  |b for types 8-11|
00027270  2c 20 62 65 63 61 75 73  65 20 74 68 69 73 20 73  |, because this s|
00027280  74 72 75 63 74 75 72 65  20 64 6f 65 73 20 6e 6f  |tructure does no|
00027290  74 20 61 6c 6c 6f 63 61  74 65 20 73 70 61 63 65  |t allocate space|
000272a0  20 66 6f 72 20 74 68 65  20 65 78 74 72 61 20 70  | for the extra p|
000272b0  61 72 61 6d 65 74 65 72  73 20 6e 65 65 64 65 64  |arameters needed|
000272c0  20 62 79 20 74 68 6f 73  65 20 74 79 70 65 73 20  | by those types |
000272d0  28 74 68 65 79 20 61 72  65 20 63 6f 6d 70 6c 69  |(they are compli|
000272e0  63 61 74 65 64 20 74 6f  20 75 73 65 20 61 6e 79  |cated to use any|
000272f0  77 61 79 21 29 2e 00 00  44 41 54 41 c1 00 00 00  |way!)...DATA....|
00027300  64 72 61 67 5f 63 75 72  72 65 6e 74 63 6f 6d 70  |drag_currentcomp|
00027310  6c 65 74 65 0a 54 68 69  73 20 76 61 72 69 61 62  |lete.This variab|
00027320  6c 65 20 69 73 20 64 65  63 6c 61 72 65 64 20 69  |le is declared i|
00027330  6e 20 3c 44 65 73 6b 4c  69 62 3a 44 72 61 67 2e  |n <DeskLib:Drag.|
00027340  68 3d 3e 44 72 61 67 3e  20 61 6e 64 20 63 6f 6e  |h=>Drag> and con|
00027350  74 61 69 6e 73 20 74 68  65 20 66 75 6e 63 74 69  |tains the functi|
00027360  6f 6e 20 6c 61 73 74 20  70 61 73 73 65 64 20 74  |on last passed t|
00027370  6f 20 3c 44 72 61 67 5f  53 65 74 48 61 6e 64 6c  |o <Drag_SetHandl|
00027380  65 72 73 3e 20 61 73 20  74 68 65 20 66 75 6e 63  |ers> as the func|
00027390  74 69 6f 6e 20 74 6f 20  62 65 20 63 61 6c 6c 65  |tion to be calle|
000273a0  64 20 61 74 20 74 68 65  20 65 6e 64 20 6f 66 20  |d at the end of |
000273b0  74 68 65 20 64 72 61 67  2e 00 00 00 44 41 54 41  |the drag....DATA|
000273c0  a2 00 00 00 64 72 61 67  5f 63 75 72 72 65 6e 74  |....drag_current|
000273d0  75 70 64 61 74 65 0a 54  68 69 73 20 76 61 72 69  |update.This vari|
000273e0  61 62 6c 65 20 69 73 20  64 65 63 6c 61 72 65 64  |able is declared|
000273f0  20 69 6e 20 3c 44 65 73  6b 4c 69 62 3a 44 72 61  | in <DeskLib:Dra|
00027400  67 2e 68 3d 3e 44 72 61  67 3e 20 61 6e 64 20 63  |g.h=>Drag> and c|
00027410  6f 6e 74 61 69 6e 73 20  74 68 65 20 66 75 6e 63  |ontains the func|
00027420  74 69 6f 6e 20 6c 61 73  74 20 70 61 73 73 65 64  |tion last passed|
00027430  20 74 6f 20 3c 44 72 61  67 5f 53 65 74 48 61 6e  | to <Drag_SetHan|
00027440  64 6c 65 72 73 3e 20 61  73 20 74 68 65 20 75 70  |dlers> as the up|
00027450  64 61 74 65 20 66 75 6e  63 74 69 6f 6e 2e 00 00  |date function...|
00027460  44 41 54 41 46 01 00 00  64 72 61 67 5f 68 61 6e  |DATAF...drag_han|
00027470  64 6c 65 72 0a 54 68 69  73 20 74 79 70 65 20 69  |dler.This type i|
00027480  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 44 65  |s defined in <De|
00027490  73 6b 4c 69 62 3a 44 72  61 67 2e 68 3d 3e 44 72  |skLib:Drag.h=>Dr|
000274a0  61 67 3e 2e 20 49 74 20  69 73 20 75 73 65 64 20  |ag>. It is used |
000274b0  74 6f 20 64 65 66 69 6e  65 20 66 75 6e 63 74 69  |to define functi|
000274c0  6f 6e 73 20 63 61 6c 6c  65 64 20 62 79 20 74 68  |ons called by th|
000274d0  65 20 44 72 61 67 20 6d  6f 64 75 6c 65 20 64 75  |e Drag module du|
000274e0  72 69 6e 67 20 61 6e 64  20 61 74 20 74 68 65 20  |ring and at the |
000274f0  65 6e 64 20 6f 66 20 61  20 64 72 61 67 2e 20 46  |end of a drag. F|
00027500  75 6e 63 74 69 6f 6e 73  20 73 68 6f 75 6c 64 20  |unctions should |
00027510  62 65 20 6f 66 20 74 68  65 20 66 6f 72 6d 3a 0a  |be of the form:.|
00027520  7b 77 72 61 70 20 6f 66  66 7d 0a 7b 66 43 6f 64  |{wrap off}.{fCod|
00027530  65 3b 61 6c 69 67 6e 20  63 65 6e 74 72 65 7d 76  |e;align centre}v|
00027540  6f 69 64 20 6d 79 66 75  6e 63 20 28 76 6f 69 64  |oid myfunc (void|
00027550  20 2a 72 65 66 29 3b 7b  66 3b 61 6c 69 67 6e 3b  | *ref);{f;align;|
00027560  77 72 61 70 7d 0a 0a 77  68 65 72 65 20 2f 72 65  |wrap}..where /re|
00027570  66 2f 20 69 73 20 74 68  65 20 76 61 6c 75 65 20  |f/ is the value |
00027580  70 61 73 73 65 64 20 77  68 65 6e 20 73 65 74 74  |passed when sett|
00027590  69 6e 67 20 74 68 65 20  64 72 61 67 20 68 61 6e  |ing the drag han|
000275a0  64 6c 65 72 73 2e 00 00  44 41 54 41 af 01 00 00  |dlers...DATA....|
000275b0  44 72 61 67 5f 49 6e 69  74 69 61 6c 69 73 65 0a  |Drag_Initialise.|
000275c0  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 44 72 61  |Syntax:.void Dra|
000275d0  67 5f 49 6e 69 74 69 61  6c 69 73 65 20 28 3c 42  |g_Initialise (<B|
000275e0  4f 4f 4c 3e 20 75 73 65  6e 75 6c 6c 29 3b 0a 48  |OOL> usenull);.H|
000275f0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00027600  44 72 61 67 2e 68 3d 3e  44 72 61 67 3e 0a 0a 54  |Drag.h=>Drag>..T|
00027610  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 6d 75 73  |his function mus|
00027620  74 20 62 65 20 63 61 6c  6c 65 64 20 74 6f 20 69  |t be called to i|
00027630  6e 69 74 69 61 6c 69 73  65 20 74 68 65 20 64 72  |nitialise the dr|
00027640  61 67 20 73 79 73 74 65  6d 20 66 6f 72 20 75 73  |ag system for us|
00027650  65 20 77 69 74 68 20 74  68 65 20 3c 45 76 65 6e  |e with the <Even|
00027660  74 3e 20 6d 6f 64 75 6c  65 2e 20 2f 75 73 65 6e  |t> module. /usen|
00027670  75 6c 6c 2f 20 73 68 6f  75 6c 64 20 62 65 20 3c  |ull/ should be <|
00027680  54 52 55 45 3e 20 69 66  20 79 6f 75 20 77 61 6e  |TRUE> if you wan|
00027690  74 20 74 68 65 20 44 72  61 67 20 6d 6f 64 75 6c  |t the Drag modul|
000276a0  65 20 74 6f 20 62 65 20  61 62 6c 65 20 74 6f 20  |e to be able to |
000276b0  64 6f 20 74 68 69 6e 67  73 20 6f 6e 20 4e 75 6c  |do things on Nul|
000276c0  6c 20 65 76 65 6e 74 73  2e 20 59 6f 75 20 77 69  |l events. You wi|
000276d0  6c 6c 20 6f 6e 6c 79 20  75 73 75 61 6c 6c 79 20  |ll only usually |
000276e0  6e 65 65 64 20 74 68 69  73 20 69 66 20 79 6f 75  |need this if you|
000276f0  20 61 72 65 20 64 6f 69  6e 67 20 61 6e 79 20 64  | are doing any d|
00027700  72 61 67 67 69 6e 67 20  6f 66 20 75 73 65 72 2d  |ragging of user-|
00027710  64 72 61 77 6e 20 6f 62  6a 65 63 74 73 2e 20 59  |drawn objects. Y|
00027720  6f 75 20 64 6f 20 6e 6f  74 20 6e 65 65 64 20 69  |ou do not need i|
00027730  74 20 66 6f 72 20 64 72  61 67 67 69 6e 67 20 73  |t for dragging s|
00027740  61 76 65 20 69 63 6f 6e  73 20 61 6e 64 20 74 68  |ave icons and th|
00027750  65 20 6c 69 6b 65 2e 00  44 41 54 41 55 02 00 00  |e like..DATAU...|
00027760  44 72 61 67 5f 53 65 74  48 61 6e 64 6c 65 72 73  |Drag_SetHandlers|
00027770  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 44 72  |.Syntax:.void Dr|
00027780  61 67 5f 53 65 74 48 61  6e 64 6c 65 72 73 20 28  |ag_SetHandlers (|
00027790  3c 64 72 61 67 5f 68 61  6e 64 6c 65 72 3e 20 75  |<drag_handler> u|
000277a0  70 72 6f 63 2c 20 64 72  61 67 5f 68 61 6e 64 6c  |proc, drag_handl|
000277b0  65 72 20 63 70 72 6f 63  2c 20 76 6f 69 64 20 2a  |er cproc, void *|
000277c0  72 65 66 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |ref);.Header:.<D|
000277d0  65 73 6b 4c 69 62 3a 44  72 61 67 2e 68 3d 3e 44  |eskLib:Drag.h=>D|
000277e0  72 61 67 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |rag>..This funct|
000277f0  69 6f 6e 20 73 65 74 73  20 74 68 65 20 66 75 6e  |ion sets the fun|
00027800  63 74 69 6f 6e 73 20 77  68 69 63 68 20 77 69 6c  |ctions which wil|
00027810  6c 20 62 65 20 63 61 6c  6c 65 64 20 64 75 72 69  |l be called duri|
00027820  6e 67 20 61 6e 64 20 61  66 74 65 72 20 74 68 65  |ng and after the|
00027830  20 64 72 61 67 20 65 76  65 6e 74 2e 20 59 6f 75  | drag event. You|
00027840  20 73 68 6f 75 6c 64 20  63 61 6c 6c 20 74 68 69  | should call thi|
00027850  73 20 61 66 74 65 72 20  73 74 61 72 74 69 6e 67  |s after starting|
00027860  20 74 68 65 20 61 63 74  75 61 6c 20 64 72 61 67  | the actual drag|
00027870  2e 20 4e 6f 77 2c 20 65  76 65 72 79 20 6e 75 6c  |. Now, every nul|
00027880  6c 20 65 76 65 6e 74 2c  20 7b 2f 7d 75 70 72 6f  |l event, {/}upro|
00027890  63 7b 2f 7d 28 29 20 77  69 6c 6c 20 62 65 20 63  |c{/}() will be c|
000278a0  61 6c 6c 65 64 2e 20 57  68 65 6e 20 74 68 65 20  |alled. When the |
000278b0  64 72 61 67 20 74 65 72  6d 69 6e 61 74 65 73 2c  |drag terminates,|
000278c0  20 7b 2f 7d 63 70 72 6f  63 7b 2f 7d 28 29 20 77  | {/}cproc{/}() w|
000278d0  69 6c 6c 20 62 65 20 63  61 6c 6c 65 64 2e 20 2f  |ill be called. /|
000278e0  72 65 66 2f 20 77 69 6c  6c 20 62 65 20 70 61 73  |ref/ will be pas|
000278f0  73 65 64 20 64 69 72 65  63 74 6c 79 20 74 6f 20  |sed directly to |
00027900  62 6f 74 68 20 66 75 6e  63 74 69 6f 6e 73 2e 20  |both functions. |
00027910  45 69 74 68 65 72 20 66  75 6e 63 74 69 6f 6e 20  |Either function |
00027920  6d 61 79 20 62 65 20 3c  4e 55 4c 4c 3e 20 69 6e  |may be <NULL> in|
00027930  20 77 68 69 63 68 20 63  61 73 65 20 69 74 20 77  | which case it w|
00027940  69 6c 6c 20 6e 6f 74 20  62 65 20 75 73 65 64 2c  |ill not be used,|
00027950  20 61 6e 64 20 2f 75 70  72 6f 63 2f 20 77 69 6c  | and /uproc/ wil|
00027960  6c 20 6f 6e 6c 79 20 62  65 20 75 73 65 64 20 69  |l only be used i|
00027970  66 20 2f 75 73 65 6e 75  6c 6c 2f 20 77 61 73 20  |f /usenull/ was |
00027980  73 65 74 20 74 6f 20 3c  54 52 55 45 3e 20 77 68  |set to <TRUE> wh|
00027990  65 6e 20 63 61 6c 6c 69  6e 67 20 3c 44 72 61 67  |en calling <Drag|
000279a0  5f 49 6e 69 74 69 61 6c  69 73 65 3e 2e 00 00 00  |_Initialise>....|
000279b0  44 41 54 41 61 03 00 00  64 72 61 67 5f 74 79 70  |DATAa...drag_typ|
000279c0  65 0a 54 68 69 73 20 65  6e 75 6d 65 72 61 74 65  |e.This enumerate|
000279d0  64 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |d type is define|
000279e0  64 20 69 6e 20 3c 44 65  73 6b 4c 69 62 3a 57 69  |d in <DeskLib:Wi|
000279f0  6d 70 2e 68 3d 3e 57 69  6d 70 3e 2e 20 49 74 20  |mp.h=>Wimp>. It |
00027a00  69 73 20 75 73 65 64 20  74 6f 20 64 65 66 69 6e  |is used to defin|
00027a10  65 20 74 68 65 20 64 72  61 67 20 74 79 70 65 20  |e the drag type |
00027a20  66 6f 72 20 3c 57 69 6d  70 5f 44 72 61 67 42 6f  |for <Wimp_DragBo|
00027a30  78 3e 20 28 6e 6f 20 73  75 72 70 72 69 73 65 20  |x> (no surprise |
00027a40  74 68 65 72 65 21 29 2e  0a 0a 20 5c 7b 0a 20 20  |there!)... \{.  |
00027a50  20 64 72 61 67 5f 4d 4f  56 45 57 49 4e 44 4f 57  | drag_MOVEWINDOW|
00027a60  20 3d 20 31 2c 09 2f 2a  20 44 72 61 67 20 77 69  | = 1,./* Drag wi|
00027a70  6e 64 6f 77 20 70 6f 73  20 2a 2f 0a 20 20 20 64  |ndow pos */.   d|
00027a80  72 61 67 5f 52 45 53 49  5a 45 57 49 4e 44 4f 57  |rag_RESIZEWINDOW|
00027a90  2c 09 2f 2a 20 44 72 61  67 20 77 69 6e 64 6f 77  |,./* Drag window|
00027aa0  20 73 69 7a 65 20 2a 2f  0a 20 20 20 64 72 61 67  | size */.   drag|
00027ab0  5f 53 43 52 4f 4c 4c 58  2c 09 2f 2a 20 44 72 61  |_SCROLLX,./* Dra|
00027ac0  67 20 48 20 73 63 72 6f  6c 6c 20 2a 2f 0a 20 20  |g H scroll */.  |
00027ad0  20 64 72 61 67 5f 53 43  52 4f 4c 4c 59 2c 09 2f  | drag_SCROLLY,./|
00027ae0  2a 20 44 72 61 67 20 56  20 73 63 72 6f 6c 6c 20  |* Drag V scroll |
00027af0  2a 2f 0a 20 20 20 64 72  61 67 5f 46 49 58 45 44  |*/.   drag_FIXED|
00027b00  42 4f 58 2c 09 2f 2a 20  44 72 61 67 20 66 69 78  |BOX,./* Drag fix|
00027b10  65 64 20 73 69 7a 65 20  62 6f 78 20 2a 2f 0a 20  |ed size box */. |
00027b20  20 20 64 72 61 67 5f 52  55 42 42 45 52 42 4f 58  |  drag_RUBBERBOX|
00027b30  2c 09 2f 2a 20 44 72 61  67 20 72 75 62 62 65 72  |,./* Drag rubber|
00027b40  20 62 6f 78 20 2a 2f 0a  20 20 20 64 72 61 67 5f  | box */.   drag_|
00027b50  49 4e 56 49 53 49 42 4c  45 2c 09 2f 2a 20 44 72  |INVISIBLE,./* Dr|
00027b60  61 67 20 70 6f 69 6e 74  20 2a 2f 0a 20 20 20 64  |ag point */.   d|
00027b70  72 61 67 5f 55 53 45 52  46 49 58 45 44 42 42 4f  |rag_USERFIXEDBBO|
00027b80  58 2c 09 2f 2a 20 44 72  61 67 20 66 69 78 65 64  |X,./* Drag fixed|
00027b90  20 75 73 65 72 2d 64 72  61 77 6e 20 62 6f 78 20  | user-drawn box |
00027ba0  2a 2f 0a 20 20 20 64 72  61 67 5f 55 53 45 52 52  |*/.   drag_USERR|
00027bb0  55 42 42 45 52 42 4f 58  2c 09 2f 2a 20 44 72 61  |UBBERBOX,./* Dra|
00027bc0  67 20 72 75 62 62 65 72  20 75 73 65 72 2d 64 72  |g rubber user-dr|
00027bd0  61 77 6e 20 62 6f 78 20  2a 2f 0a 20 20 20 64 72  |awn box */.   dr|
00027be0  61 67 5f 55 53 45 52 46  49 58 45 44 4e 43 09 2f  |ag_USERFIXEDNC./|
00027bf0  2a 20 44 72 61 67 20 66  69 78 65 64 20 75 73 65  |* Drag fixed use|
00027c00  72 2d 64 72 61 77 6e 20  62 6f 78 20 2a 2f 0a 20  |r-drawn box */. |
00027c10  20 20 64 72 61 67 5f 55  53 45 52 52 55 42 42 45  |  drag_USERRUBBE|
00027c20  52 4e 43 09 2f 2a 20 44  72 61 67 20 72 75 62 62  |RNC./* Drag rubb|
00027c30  65 72 20 75 73 65 72 2d  64 72 61 77 6e 20 62 6f  |er user-drawn bo|
00027c40  78 20 2a 2f 0a 20 7d 0a  0a 54 68 65 20 27 4e 43  |x */. }..The 'NC|
00027c50  27 20 74 79 70 65 73 20  61 72 65 20 6e 6f 74 20  |' types are not |
00027c60  63 61 6e 63 65 6c 6c 65  64 20 77 68 65 6e 20 62  |cancelled when b|
00027c70  75 74 74 6f 6e 73 20 61  72 65 20 72 65 6c 65 61  |uttons are relea|
00027c80  73 65 64 2e 20 49 6e 20  61 64 64 69 74 69 6f 6e  |sed. In addition|
00027c90  2c 20 61 20 74 79 70 65  20 31 32 20 69 73 20 61  |, a type 12 is a|
00027ca0  76 61 69 6c 61 62 6c 65  20 77 68 69 63 68 20 69  |vailable which i|
00027cb0  73 20 6e 6f 74 20 64 65  66 69 6e 65 64 20 69 6e  |s not defined in|
00027cc0  20 74 68 69 73 20 74 79  70 65 2e 20 49 74 20 64  | this type. It d|
00027cd0  72 61 67 73 20 76 65 72  74 69 63 61 6c 20 61 6e  |rags vertical an|
00027ce0  64 20 68 6f 72 69 7a 6f  6e 74 61 6c 20 73 63 72  |d horizontal scr|
00027cf0  6f 6c 6c 20 62 61 72 73  20 28 62 75 74 20 6f 6e  |oll bars (but on|
00027d00  6c 79 20 69 6e 20 52 49  53 43 20 4f 53 20 33 29  |ly in RISC OS 3)|
00027d10  2e 00 00 00 44 41 54 41  b5 00 00 00 64 72 61 67  |....DATA....drag|
00027d20  5f 63 75 72 72 65 6e 74  75 73 65 72 64 61 74 61  |_currentuserdata|
00027d30  0a 54 68 69 73 20 76 61  72 69 61 62 6c 65 20 69  |.This variable i|
00027d40  73 20 64 65 63 6c 61 72  65 64 20 69 6e 20 3c 44  |s declared in <D|
00027d50  65 73 6b 4c 69 62 3a 44  72 61 67 2e 68 3d 3e 44  |eskLib:Drag.h=>D|
00027d60  72 61 67 3e 20 61 6e 64  20 63 6f 6e 74 61 69 6e  |rag> and contain|
00027d70  73 20 74 68 65 20 7b 2f  7d 76 6f 69 64 20 2a 7b  |s the {/}void *{|
00027d80  2f 7d 20 70 61 73 73 65  64 20 74 6f 20 74 68 65  |/} passed to the|
00027d90  20 63 75 72 72 65 6e 74  20 68 61 6e 64 6c 65 72  | current handler|
00027da0  20 66 75 6e 63 74 69 6f  6e 73 2c 20 61 73 20 73  | functions, as s|
00027db0  65 74 20 62 79 20 3c 44  72 61 67 5f 53 65 74 48  |et by <Drag_SetH|
00027dc0  61 6e 64 6c 65 72 73 3e  2e 00 00 00 44 41 54 41  |andlers>....DATA|
00027dd0  06 01 00 00 44 72 61 67  41 53 70 72 2e 68 0a 56  |....DragASpr.h.V|
00027de0  65 72 73 69 6f 6e 3a 20  31 2e 30 31 20 28 33 30  |ersion: 1.01 (30|
00027df0  20 41 70 72 20 31 39 39  32 29 0a 23 6c 69 6e 65  | Apr 1992).#line|
00027e00  20 0a 54 68 65 20 5c 3c  44 72 61 67 41 53 70 72  | .The \<DragASpr|
00027e10  2e 68 3e 20 68 65 61 64  65 72 20 64 65 66 69 6e  |.h> header defin|
00027e20  65 73 20 74 68 72 65 65  20 66 75 6e 63 74 69 6f  |es three functio|
00027e30  6e 73 20 77 68 69 63 68  20 61 63 63 65 73 73 20  |ns which access |
00027e40  74 68 65 20 3c 44 72 61  67 41 53 70 72 69 74 65  |the <DragASprite|
00027e50  3d 3e 53 57 49 3a 44 72  61 67 41 53 70 72 69 74  |=>SWI:DragASprit|
00027e60  65 5f 3e 20 6d 6f 64 75  6c 65 20 69 6e 63 6c 75  |e_> module inclu|
00027e70  64 65 64 20 69 6e 20 74  68 65 20 52 49 53 43 20  |ded in the RISC |
00027e80  4f 53 20 33 20 52 4f 4d  2e 0a 0a 23 69 6e 64 65  |OS 3 ROM...#inde|
00027e90  6e 74 20 35 0a 3c 44 72  61 67 41 53 70 72 69 74  |nt 5.<DragASprit|
00027ea0  65 5f 53 74 61 72 74 3e  0a 3c 44 72 61 67 41 53  |e_Start>.<DragAS|
00027eb0  70 72 69 74 65 5f 53 74  6f 70 3e 0a 3c 44 72 61  |prite_Stop>.<Dra|
00027ec0  67 41 53 70 72 69 74 65  5f 44 72 61 67 49 63 6f  |gASprite_DragIco|
00027ed0  6e 3e 00 00 44 49 52 24  70 00 00 00 70 00 00 00  |n>..DIR$p...p...|
00027ee0  44 7f 02 00 46 ff ff ff  e9 7d f3 24 9a 03 00 00  |D...F....}.$....|
00027ef0  13 00 00 00 00 00 00 00  53 74 61 72 74 00 00 00  |........Start...|
00027f00  e0 82 02 00 46 ff ff ff  a8 8d f3 24 f4 00 00 00  |....F......$....|
00027f10  13 00 00 00 00 00 00 00  53 74 6f 70 00 00 00 00  |........Stop....|
00027f20  d4 83 02 00 46 ff ff ff  a1 a3 f3 24 f8 01 00 00  |....F......$....|
00027f30  13 00 00 00 00 00 00 00  44 72 61 67 49 63 6f 6e  |........DragIcon|
00027f40  00 00 00 00 44 41 54 41  9a 03 00 00 44 72 61 67  |....DATA....Drag|
00027f50  41 53 70 72 69 74 65 5f  53 74 61 72 74 0a 53 79  |ASprite_Start.Sy|
00027f60  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00027f70  20 2a 44 72 61 67 41 53  70 72 69 74 65 5f 53 74  | *DragASprite_St|
00027f80  61 72 74 20 28 69 6e 74  20 3c 66 6c 61 67 73 3d  |art (int <flags=|
00027f90  3e 64 73 70 72 5f 66 6c  61 67 73 5f 3e 2c 20 76  |>dspr_flags_>, v|
00027fa0  6f 69 64 20 2a 73 70 72  69 74 65 61 72 65 61 2c  |oid *spritearea,|
00027fb0  20 63 68 61 72 20 2a 6e  61 6d 65 2c 20 3c 77 69  | char *name, <wi|
00027fc0  6d 70 5f 72 65 63 74 3e  20 2a 62 62 6f 78 2c 20  |mp_rect> *bbox, |
00027fd0  77 69 6d 70 5f 72 65 63  74 20 2a 70 61 72 65 6e  |wimp_rect *paren|
00027fe0  74 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |t);.Header:.<Des|
00027ff0  6b 4c 69 62 3a 44 72 61  67 41 53 70 72 2e 68 3d  |kLib:DragASpr.h=|
00028000  3e 44 72 61 67 41 53 70  72 3e 0a 0a 52 65 74 75  |>DragASpr>..Retu|
00028010  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00028020  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00028030  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00028040  66 75 6e 63 74 69 6f 6e  20 63 61 6c 6c 73 20 74  |function calls t|
00028050  68 65 20 44 72 61 67 41  53 70 72 69 74 65 5f 53  |he DragASprite_S|
00028060  74 61 72 74 20 53 57 49  20 77 69 74 68 20 74 68  |tart SWI with th|
00028070  65 20 61 72 67 75 6d 65  6e 74 73 20 70 6c 61 63  |e arguments plac|
00028080  65 64 20 69 6e 20 74 68  65 20 61 70 70 72 6f 70  |ed in the approp|
00028090  72 69 61 74 65 20 72 65  67 69 73 74 65 72 73 2e  |riate registers.|
000280a0  20 54 68 69 73 20 53 57  49 20 63 61 75 73 65 73  | This SWI causes|
000280b0  20 61 20 73 70 72 69 74  65 20 74 6f 20 62 65 20  | a sprite to be |
000280c0  64 72 61 67 67 65 64 20  62 79 20 74 68 65 20 6d  |dragged by the m|
000280d0  6f 75 73 65 2e 20 54 68  65 20 61 72 67 75 6d 65  |ouse. The argume|
000280e0  6e 74 73 20 61 72 65 20  61 73 20 66 6f 6c 6c 6f  |nts are as follo|
000280f0  77 73 3a 0a 7b 74 61 62  7d 0a 2f 73 70 72 69 74  |ws:.{tab}./sprit|
00028100  65 61 72 65 61 2f 09 69  73 20 61 20 70 6f 69 6e  |earea/.is a poin|
00028110  74 65 72 20 74 6f 20 74  68 65 20 3c 73 70 72 69  |ter to the <spri|
00028120  74 65 20 61 72 65 61 3d  3e 53 57 49 3a 6f 73 5f  |te area=>SWI:os_|
00028130  73 70 72 69 74 65 6f 70  2e 62 3e 20 68 6f 6c 64  |spriteop.b> hold|
00028140  69 6e 67 20 74 68 65 20  73 70 72 69 74 65 20 79  |ing the sprite y|
00028150  6f 75 20 77 61 6e 74 20  74 6f 20 64 72 61 67 2c  |ou want to drag,|
00028160  20 6f 72 20 30 20 66 6f  72 20 74 68 65 20 73 79  | or 0 for the sy|
00028170  73 74 65 6d 20 73 70 72  69 74 65 20 61 72 65 61  |stem sprite area|
00028180  2c 20 6f 72 20 31 20 66  6f 72 20 74 68 65 20 77  |, or 1 for the w|
00028190  69 6d 70 20 73 70 72 69  74 65 20 70 6f 6f 6c 2e  |imp sprite pool.|
000281a0  0a 2f 6e 61 6d 65 2f 09  69 73 20 61 20 70 6f 69  |./name/.is a poi|
000281b0  6e 74 65 72 20 74 6f 20  74 68 65 20 73 70 72 69  |nter to the spri|
000281c0  74 65 20 6e 61 6d 65 2e  0a 2f 62 62 6f 78 2f 09  |te name../bbox/.|
000281d0  69 73 20 61 20 70 6f 69  6e 74 65 72 20 74 6f 20  |is a pointer to |
000281e0  74 68 65 20 62 6f 75 6e  64 69 6e 67 20 62 6f 78  |the bounding box|
000281f0  20 6f 66 20 74 68 65 20  73 70 72 69 74 65 2c 20  | of the sprite, |
00028200  77 69 74 68 20 2f 70 61  72 65 6e 74 2f 20 61 73  |with /parent/ as|
00028210  20 61 20 70 6f 69 6e 74  65 72 20 74 6f 20 74 68  | a pointer to th|
00028220  65 20 62 6f 75 6e 64 69  6e 67 20 62 6f 78 20 66  |e bounding box f|
00028230  6f 72 20 74 68 65 20 77  68 6f 6c 65 20 64 72 61  |or the whole dra|
00028240  67 20 28 69 65 20 74 68  65 20 6d 6f 75 73 65 20  |g (ie the mouse |
00028250  70 6f 69 6e 74 65 72 20  6d 61 79 20 6e 6f 74 20  |pointer may not |
00028260  6d 6f 76 65 20 6f 75 74  73 69 64 65 20 74 68 69  |move outside thi|
00028270  73 20 62 6f 78 29 2e 20  2f 70 61 72 65 6e 74 2f  |s box). /parent/|
00028280  20 69 73 20 6f 6e 6c 79  20 75 73 65 64 20 69 66  | is only used if|
00028290  20 74 68 65 20 61 70 70  72 6f 70 72 69 61 74 65  | the appropriate|
000282a0  20 66 6c 61 67 20 69 73  20 73 65 74 2e 0a 0a 54  | flag is set...T|
000282b0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 6f 6e 6c  |his function onl|
000282c0  79 20 77 6f 72 6b 73 20  6f 6e 20 52 49 53 43 20  |y works on RISC |
000282d0  4f 53 20 33 20 6f 72 20  6c 61 74 65 72 2e 00 00  |OS 3 or later...|
000282e0  44 41 54 41 f4 00 00 00  44 72 61 67 41 53 70 72  |DATA....DragASpr|
000282f0  69 74 65 5f 53 74 6f 70  0a 53 79 6e 74 61 78 3a  |ite_Stop.Syntax:|
00028300  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 44 72 61  |.<os_error> *Dra|
00028310  67 41 53 70 72 69 74 65  5f 53 74 6f 70 20 28 76  |gASprite_Stop (v|
00028320  6f 69 64 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |oid);.Header:.<D|
00028330  65 73 6b 4c 69 62 3a 44  72 61 67 41 53 70 72 2e  |eskLib:DragASpr.|
00028340  68 3d 3e 44 72 61 67 41  53 70 72 3e 0a 0a 52 65  |h=>DragASpr>..Re|
00028350  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
00028360  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
00028370  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
00028380  73 20 66 75 6e 63 74 69  6f 6e 20 74 65 72 6d 69  |s function termi|
00028390  6e 61 74 65 73 20 61 6e  79 20 73 6f 6c 69 64 20  |nates any solid |
000283a0  64 72 61 67 20 62 65 67  75 6e 20 77 69 74 68 20  |drag begun with |
000283b0  3c 44 72 61 67 41 53 70  72 69 74 65 5f 53 74 61  |<DragASprite_Sta|
000283c0  72 74 3e 2e 20 52 49 53  43 20 4f 53 20 33 20 6f  |rt>. RISC OS 3 o|
000283d0  6e 6c 79 2e 44 41 54 41  f8 01 00 00 44 72 61 67  |nly.DATA....Drag|
000283e0  41 53 70 72 69 74 65 5f  44 72 61 67 49 63 6f 6e  |ASprite_DragIcon|
000283f0  0a 53 79 6e 74 61 78 3a  09 6f 73 5f 65 72 72 6f  |.Syntax:.os_erro|
00028400  72 20 2a 44 72 61 67 41  53 70 72 69 74 65 5f 44  |r *DragASprite_D|
00028410  72 61 67 49 63 6f 6e 20  28 3c 77 69 6e 64 6f 77  |ragIcon (<window|
00028420  5f 68 61 6e 64 6c 65 3e  20 68 6e 64 2c 20 3c 69  |_handle> hnd, <i|
00028430  63 6f 6e 5f 68 61 6e 64  6c 65 3e 20 69 63 6f 6e  |con_handle> icon|
00028440  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00028450  4c 69 62 3a 44 72 61 67  41 53 70 72 2e 68 3d 3e  |Lib:DragASpr.h=>|
00028460  44 72 61 67 41 53 70 72  3e 0a 0a 52 65 74 75 72  |DragASpr>..Retur|
00028470  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
00028480  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
00028490  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
000284a0  75 6e 63 74 69 6f 6e 20  69 73 20 74 68 65 20 65  |unction is the e|
000284b0  61 73 79 20 77 61 79 20  74 6f 20 75 73 65 20 44  |asy way to use D|
000284c0  72 61 67 41 53 70 72 69  74 65 2e 20 4a 75 73 74  |ragASprite. Just|
000284d0  20 63 61 6c 6c 20 69 74  20 77 69 74 68 20 61 20  | call it with a |
000284e0  77 69 6e 64 6f 77 20 68  61 6e 64 6c 65 20 61 6e  |window handle an|
000284f0  64 20 69 63 6f 6e 20 6e  75 6d 62 65 72 2c 20 61  |d icon number, a|
00028500  6e 64 20 69 74 20 77 69  6c 6c 20 63 61 6c 6c 20  |nd it will call |
00028510  3c 44 72 61 67 41 53 70  72 69 74 65 5f 53 74 61  |<DragASprite_Sta|
00028520  72 74 3e 20 66 6f 72 20  79 6f 75 20 77 69 74 68  |rt> for you with|
00028530  20 61 6c 6c 20 74 68 65  20 63 6f 72 72 65 63 74  | all the correct|
00028540  20 70 61 72 61 6d 65 74  65 72 73 2e 20 49 66 20  | parameters. If |
00028550  69 74 20 63 61 6e 6e 6f  74 20 64 6f 20 74 68 69  |it cannot do thi|
00028560  73 2c 20 69 74 20 77 69  6c 6c 20 75 73 65 20 61  |s, it will use a|
00028570  20 6e 6f 72 6d 61 6c 20  64 61 73 68 65 64 20 3c  | normal dashed <|
00028580  57 69 6d 70 5f 44 72 61  67 42 6f 78 3d 3e 53 57  |Wimp_DragBox=>SW|
00028590  49 3a 57 69 6d 70 5f 44  72 61 67 42 6f 78 3e 20  |I:Wimp_DragBox> |
000285a0  69 6e 73 74 65 61 64 2c  20 73 6f 20 69 74 20 77  |instead, so it w|
000285b0  69 6c 6c 20 77 6f 72 6b  20 6f 6e 20 52 49 53 43  |ill work on RISC|
000285c0  20 4f 53 20 32 20 61 6e  64 20 33 2e 44 41 54 41  | OS 2 and 3.DATA|
000285d0  4f 00 00 00 64 72 61 77  2e 68 0a 54 68 65 20 5c  |O...draw.h.The \|
000285e0  3c 64 72 61 77 2e 68 3e  20 68 65 61 64 65 72 20  |<draw.h> header |
000285f0  64 65 63 6c 61 72 65 73  0a 66 75 6e 63 74 69 6f  |declares.functio|
00028600  6e 73 20 66 6f 72 20 68  61 6e 64 6c 69 6e 67 20  |ns for handling |
00028610  64 72 61 77 20 66 69 6c  65 73 2e 00 44 49 52 24  |draw files..DIR$|
00028620  a0 09 00 00 a0 09 00 00  bc 8f 02 00 46 ff ff ff  |............F...|
00028630  f9 12 25 23 4b 01 00 00  13 00 00 00 00 00 00 00  |..%#K...........|
00028640  61 6c 6c 6f 63 61 74 65  00 00 00 00 08 91 02 00  |allocate........|
00028650  46 ff ff ff 16 5c 24 23  f4 01 00 00 13 00 00 00  |F....\$#........|
00028660  00 00 00 00 61 70 70 65  6e 64 5f 64 69 61 67 00  |....append_diag.|
00028670  fc 92 02 00 46 ff ff ff  45 47 27 23 93 00 00 00  |....F...EG'#....|
00028680  13 00 00 00 00 00 00 00  62 62 6f 78 74 79 70 00  |........bboxtyp.|
00028690  90 93 02 00 46 ff ff ff  27 c2 24 23 9d 00 00 00  |....F...'.$#....|
000286a0  13 00 00 00 00 00 00 00  62 6f 78 00 30 94 02 00  |........box.0...|
000286b0  46 ff ff ff 84 63 27 23  d0 00 00 00 13 00 00 00  |F....c'#........|
000286c0  00 00 00 00 63 61 70 74  79 70 00 00 00 95 02 00  |....captyp......|
000286d0  46 ff ff ff 53 3e 27 23  8e 00 00 00 13 00 00 00  |F...S>'#........|
000286e0  00 00 00 00 63 6f 6c 74  79 70 00 00 90 95 02 00  |....coltyp......|
000286f0  46 ff ff ff 27 91 24 23  5b 01 00 00 13 00 00 00  |F...'.$#[.......|
00028700  00 00 00 00 63 6f 6e 76  65 72 74 42 6f 78 00 00  |....convertBox..|
00028710  ec 96 02 00 46 ff ff ff  4a 50 26 23 a0 01 00 00  |....F...JP&#....|
00028720  13 00 00 00 00 00 00 00  63 72 65 61 74 65 5f 64  |........create_d|
00028730  69 61 67 00 8c 98 02 00  46 ff ff ff 51 a5 26 23  |iag.....F...Q.&#|
00028740  e6 01 00 00 13 00 00 00  00 00 00 00 63 72 65 61  |............crea|
00028750  74 65 4f 62 6a 65 63 74  00 00 00 00 74 9a 02 00  |teObject....t...|
00028760  46 ff ff ff 2c bc 28 23  e2 00 00 00 13 00 00 00  |F...,.(#........|
00028770  00 00 00 00 64 61 73 68  73 74 72 00 58 9b 02 00  |....dashstr.X...|
00028780  46 ff ff ff a5 b5 28 23  d3 00 00 00 13 00 00 00  |F.....(#........|
00028790  00 00 00 00 64 61 73 68  73 74 72 68 64 72 00 00  |....dashstrhdr..|
000287a0  2c 9c 02 00 46 ff ff ff  95 7b 27 23 b1 00 00 00  |,...F....{'#....|
000287b0  13 00 00 00 00 00 00 00  64 61 73 68 74 79 70 00  |........dashtyp.|
000287c0  e0 9c 02 00 46 ff ff ff  7f ae 26 23 5c 01 00 00  |....F.....&#\...|
000287d0  13 00 00 00 00 00 00 00  64 65 6c 65 74 65 4f 62  |........deleteOb|
000287e0  6a 65 63 74 73 00 00 00  3c 9e 02 00 46 ff ff ff  |jects...<...F...|
000287f0  b9 b9 24 23 31 01 00 00  13 00 00 00 00 00 00 00  |..$#1...........|
00028800  64 69 61 67 00 00 00 00  70 9f 02 00 46 ff ff ff  |diag....p...F...|
00028810  ce 60 26 23 1c 02 00 00  13 00 00 00 00 00 00 00  |.`&#............|
00028820  64 6f 4f 62 6a 65 63 74  73 00 00 00 8c a1 02 00  |doObjects.......|
00028830  46 ff ff ff 1d 3c 24 23  db 00 00 00 13 00 00 00  |F....<$#........|
00028840  00 00 00 00 64 72 61 77  54 6f 53 63 72 65 65 6e  |....drawToScreen|
00028850  00 00 00 00 68 a2 02 00  46 ff ff ff cd fc 24 23  |....h...F.....$#|
00028860  18 02 00 00 13 00 00 00  00 00 00 00 65 72 72 6f  |............erro|
00028870  72 00 00 00 80 a4 02 00  46 ff ff ff 70 24 25 23  |r.......F...p$%#|
00028880  8a 01 00 00 13 00 00 00  00 00 00 00 65 78 74 65  |............exte|
00028890  6e 64 00 00 0c a6 02 00  46 ff ff ff 98 b6 26 23  |nd......F.....&#|
000288a0  87 01 00 00 13 00 00 00  00 00 00 00 65 78 74 72  |............extr|
000288b0  61 63 74 4f 62 6a 65 63  74 00 00 00 94 a7 02 00  |actObject.......|
000288c0  46 ff ff ff 7b dd 27 23  37 01 00 00 13 00 00 00  |F...{.'#7.......|
000288d0  00 00 00 00 66 69 6c 65  68 65 61 64 65 72 00 00  |....fileheader..|
000288e0  cc a8 02 00 46 ff ff ff  3a d4 26 23 de 00 00 00  |....F...:.&#....|
000288f0  13 00 00 00 00 00 00 00  46 69 72 73 74 4f 62 6a  |........FirstObj|
00028900  65 63 74 00 ac a9 02 00  46 ff ff ff e8 11 28 23  |ect.....F.....(#|
00028910  4a 01 00 00 13 00 00 00  00 00 00 00 66 6f 6e 74  |J...........font|
00028920  6c 69 73 74 73 74 72 00  f8 aa 02 00 46 ff ff ff  |liststr.....F...|
00028930  99 f6 27 23 15 01 00 00  13 00 00 00 00 00 00 00  |..'#............|
00028940  66 6f 6e 74 6c 69 73 74  73 74 72 68 64 72 00 00  |fontliststrhdr..|
00028950  10 ac 02 00 46 ff ff ff  05 8f 27 23 98 00 00 00  |....F.....'#....|
00028960  13 00 00 00 00 00 00 00  66 6f 6e 74 72 65 66 00  |........fontref.|
00028970  a8 ac 02 00 46 ff ff ff  5a a2 27 23 ab 00 00 00  |....F...Z.'#....|
00028980  13 00 00 00 00 00 00 00  66 6f 6e 74 73 69 7a 65  |........fontsize|
00028990  00 00 00 00 54 ad 02 00  46 ff ff ff d2 32 25 23  |....T...F....2%#|
000289a0  2d 01 00 00 13 00 00 00  00 00 00 00 66 72 65 65  |-...........free|
000289b0  00 00 00 00 84 ae 02 00  46 ff ff ff 2d 14 29 23  |........F...-.)#|
000289c0  c3 00 00 00 13 00 00 00  00 00 00 00 67 72 6f 75  |............grou|
000289d0  70 6e 61 6d 65 74 79 70  00 00 00 00 48 af 02 00  |pnametyp....H...|
000289e0  46 ff ff ff 6f 1e 29 23  1a 01 00 00 13 00 00 00  |F...o.)#........|
000289f0  00 00 00 00 67 72 6f 75  73 74 72 00 64 b0 02 00  |....groustr.d...|
00028a00  46 ff ff ff 43 ca 28 23  68 01 00 00 13 00 00 00  |F...C.(#h.......|
00028a10  00 00 00 00 6a 6f 69 6e  74 73 70 65 63 00 00 00  |....jointspec...|
00028a20  cc b1 02 00 46 ff ff ff  55 54 27 23 c3 00 00 00  |....F...UT'#....|
00028a30  13 00 00 00 00 00 00 00  6a 6f 69 6e 74 79 70 00  |........jointyp.|
00028a40  90 b2 02 00 46 ff ff ff  b0 d9 26 23 d9 00 00 00  |....F.....&#....|
00028a50  13 00 00 00 00 00 00 00  4c 61 73 74 4f 62 6a 65  |........LastObje|
00028a60  63 74 00 00 6c b3 02 00  46 ff ff ff 28 cc 26 23  |ct..l...F...(.&#|
00028a70  96 00 00 00 13 00 00 00  00 00 00 00 4e 6f 4f 62  |............NoOb|
00028a80  6a 65 63 74 00 00 00 00  04 b4 02 00 46 ff ff ff  |ject........F...|
00028a90  27 c7 27 23 bd 00 00 00  13 00 00 00 00 00 00 00  |'.'#............|
00028aa0  6f 62 6a 63 6f 6f 72 64  00 00 00 00 c4 b4 02 00  |objcoord........|
00028ab0  46 ff ff ff 3a be 24 23  a2 00 00 00 13 00 00 00  |F...:.$#........|
00028ac0  00 00 00 00 6f 62 6a 65  63 74 00 00 68 b5 02 00  |....object..h...|
00028ad0  46 ff ff ff ea f0 26 23  ad 01 00 00 13 00 00 00  |F.....&#........|
00028ae0  00 00 00 00 6f 62 6a 65  63 74 54 79 70 65 00 00  |....objectType..|
00028af0  18 b7 02 00 46 ff ff ff  d0 e9 27 23 19 01 00 00  |....F.....'#....|
00028b00  13 00 00 00 00 00 00 00  6f 62 6a 68 64 72 00 00  |........objhdr..|
00028b10  34 b8 02 00 46 ff ff ff  95 4a 28 23 87 01 00 00  |4...F....J(#....|
00028b20  13 00 00 00 00 00 00 00  70 61 74 68 5f 74 61 67  |........path_tag|
00028b30  74 79 70 65 00 00 00 00  bc b9 02 00 46 ff ff ff  |type........F...|
00028b40  4a e9 28 23 aa 01 00 00  13 00 00 00 00 00 00 00  |J.(#............|
00028b50  70 61 74 68 73 74 72 00  68 bb 02 00 46 ff ff ff  |pathstr.h...F...|
00028b60  c0 d7 28 23 8b 01 00 00  13 00 00 00 00 00 00 00  |..(#............|
00028b70  70 61 74 68 73 74 72 68  64 72 00 00 f4 bc 02 00  |pathstrhdr......|
00028b80  46 ff ff ff a6 86 27 23  2f 01 00 00 13 00 00 00  |F.....'#/.......|
00028b90  00 00 00 00 70 61 74 68  73 74 79 6c 65 00 00 00  |....pathstyle...|
00028ba0  24 be 02 00 46 ff ff ff  d4 42 27 23 90 00 00 00  |$...F....B'#....|
00028bb0  13 00 00 00 00 00 00 00  70 61 74 68 77 69 64 74  |........pathwidt|
00028bc0  68 00 00 00 b4 be 02 00  46 ff ff ff 8e 83 24 23  |h.......F.....$#|
00028bd0  29 01 00 00 13 00 00 00  00 00 00 00 71 75 65 72  |)...........quer|
00028be0  79 62 6f 78 00 00 00 00  e0 bf 02 00 46 ff ff ff  |ybox........F...|
00028bf0  b3 98 24 23 1d 01 00 00  13 00 00 00 00 00 00 00  |..$#............|
00028c00  72 65 62 69 6e 64 5f 64  69 61 67 00 00 c1 02 00  |rebind_diag.....|
00028c10  46 ff ff ff e2 cb 24 23  41 01 00 00 13 00 00 00  |F.....$#A.......|
00028c20  00 00 00 00 72 65 64 72  61 77 73 74 72 00 00 00  |....redrawstr...|
00028c30  44 c2 02 00 46 ff ff ff  b5 b0 24 23 06 02 00 00  |D...F.....$#....|
00028c40  13 00 00 00 00 00 00 00  72 65 67 69 73 74 65 72  |........register|
00028c50  4d 65 6d 6f 72 79 46 75  6e 63 74 69 6f 6e 73 00  |MemoryFunctions.|
00028c60  4c c4 02 00 46 ff ff ff  bf 6c 24 23 d0 01 00 00  |L...F....l$#....|
00028c70  13 00 00 00 00 00 00 00  72 65 6e 64 65 72 5f 64  |........render_d|
00028c80  69 61 67 00 1c c6 02 00  46 ff ff ff d9 43 24 23  |iag.....F....C$#|
00028c90  dd 00 00 00 13 00 00 00  00 00 00 00 73 63 72 65  |............scre|
00028ca0  65 6e 54 6f 44 72 61 77  00 00 00 00 fc c6 02 00  |enToDraw........|
00028cb0  46 ff ff ff 0d 8e 26 23  45 01 00 00 13 00 00 00  |F.....&#E.......|
00028cc0  00 00 00 00 73 65 74 46  6f 6e 74 54 61 62 6c 65  |....setFontTable|
00028cd0  00 00 00 00 44 c8 02 00  46 ff ff ff c0 79 24 23  |....D...F....y$#|
00028ce0  1c 01 00 00 13 00 00 00  00 00 00 00 73 68 69 66  |............shif|
00028cf0  74 5f 64 69 61 67 00 00  60 c9 02 00 46 ff ff ff  |t_diag..`...F...|
00028d00  bd 38 27 23 8d 00 00 00  13 00 00 00 00 00 00 00  |.8'#............|
00028d10  73 69 7a 65 74 79 70 00  f0 c9 02 00 46 ff ff ff  |sizetyp.....F...|
00028d20  36 0d 29 23 39 01 00 00  13 00 00 00 00 00 00 00  |6.)#9...........|
00028d30  73 70 72 69 73 74 72 00  2c cb 02 00 46 ff ff ff  |spristr.,...F...|
00028d40  59 f9 28 23 1b 01 00 00  13 00 00 00 00 00 00 00  |Y.(#............|
00028d50  73 70 72 69 73 74 72 68  64 72 00 00 48 cc 02 00  |spristrhdr..H...|
00028d60  46 ff ff ff 5f bc 27 23  39 01 00 00 13 00 00 00  |F..._.'#9.......|
00028d70  00 00 00 00 74 61 67 74  79 70 00 00 84 cd 02 00  |....tagtyp......|
00028d80  46 ff ff ff 2e 53 29 23  41 01 00 00 13 00 00 00  |F....S)#A.......|
00028d90  00 00 00 00 74 65 78 74  61 72 65 61 65 6e 64 00  |....textareaend.|
00028da0  c8 ce 02 00 46 ff ff ff  81 3a 29 23 f8 00 00 00  |....F....:)#....|
00028db0  13 00 00 00 00 00 00 00  74 65 78 74 61 72 65 61  |........textarea|
00028dc0  68 64 72 00 c0 cf 02 00  46 ff ff ff 78 45 29 23  |hdr.....F...xE)#|
00028dd0  64 01 00 00 13 00 00 00  00 00 00 00 74 65 78 74  |d...........text|
00028de0  61 72 65 61 73 74 72 65  6e 64 00 00 24 d1 02 00  |areastrend..$...|
00028df0  46 ff ff ff 2b 31 29 23  19 01 00 00 13 00 00 00  |F...+1)#........|
00028e00  00 00 00 00 74 65 78 74  61 72 65 61 73 74 72 68  |....textareastrh|
00028e10  64 72 00 00 40 d2 02 00  46 ff ff ff b3 27 29 23  |dr..@...F....')#|
00028e20  f2 00 00 00 13 00 00 00  00 00 00 00 74 65 78 74  |............text|
00028e30  63 6f 6c 68 64 72 00 00  34 d3 02 00 46 ff ff ff  |colhdr..4...F...|
00028e40  8a 38 28 23 dc 01 00 00  13 00 00 00 00 00 00 00  |.8(#............|
00028e50  74 65 78 74 73 74 72 00  10 d5 02 00 46 ff ff ff  |textstr.....F...|
00028e60  9a 25 28 23 e9 01 00 00  13 00 00 00 00 00 00 00  |.%(#............|
00028e70  74 65 78 74 73 74 72 68  64 72 00 00 fc d6 02 00  |textstrhdr......|
00028e80  46 ff ff ff 16 9c 27 23  f3 00 00 00 13 00 00 00  |F.....'#........|
00028e90  00 00 00 00 74 65 78 74  73 74 79 6c 65 00 00 00  |....textstyle...|
00028ea0  f0 d7 02 00 46 ff ff ff  33 be 26 23 46 01 00 00  |....F...3.&#F...|
00028eb0  13 00 00 00 00 00 00 00  74 72 61 6e 73 6c 61 74  |........translat|
00028ec0  65 54 65 78 74 00 00 00  38 d9 02 00 46 ff ff ff  |eText...8...F...|
00028ed0  70 fc 26 23 94 01 00 00  13 00 00 00 00 00 00 00  |p.&#............|
00028ee0  74 72 61 6e 73 54 61 62  6c 65 00 00 cc da 02 00  |transTable......|
00028ef0  46 ff ff ff 90 46 25 23  1d 02 00 00 13 00 00 00  |F....F%#........|
00028f00  00 00 00 00 75 6e 6b 6e  6f 77 6e 5f 6f 62 6a 65  |....unknown_obje|
00028f10  63 74 5f 68 61 6e 64 6c  65 72 00 00 ec dc 02 00  |ct_handler......|
00028f20  46 ff ff ff 0b 4d 24 23  61 01 00 00 13 00 00 00  |F....M$#a.......|
00028f30  00 00 00 00 76 65 72 69  66 79 5f 64 69 61 67 00  |....verify_diag.|
00028f40  50 de 02 00 46 ff ff ff  16 97 26 23 9e 01 00 00  |P...F.....&#....|
00028f50  13 00 00 00 00 00 00 00  76 65 72 69 66 79 4f 62  |........verifyOb|
00028f60  6a 65 63 74 00 00 00 00  f0 df 02 00 46 ff ff ff  |ject........F...|
00028f70  04 70 27 23 ad 00 00 00  13 00 00 00 00 00 00 00  |.p'#............|
00028f80  77 69 6e 64 74 79 70 00  a0 e0 02 00 46 ff ff ff  |windtyp.....F...|
00028f90  8a a4 24 23 d0 01 00 00  13 00 00 00 00 00 00 00  |..$#............|
00028fa0  73 65 74 5f 75 6e 6b 6e  6f 77 6e 5f 6f 62 6a 65  |set_unknown_obje|
00028fb0  63 74 5f 68 61 6e 64 6c  65 72 00 00 44 41 54 41  |ct_handler..DATA|
00028fc0  4b 01 00 00 64 72 61 77  5f 61 6c 6c 6f 63 61 74  |K...draw_allocat|
00028fd0  65 0a 54 68 69 73 20 74  79 70 65 20 69 73 20 64  |e.This type is d|
00028fe0  65 66 69 6e 65 20 69 6e  20 3c 64 72 61 77 66 64  |efine in <drawfd|
00028ff0  69 61 67 2e 68 3d 3e 64  72 61 77 66 64 69 61 67  |iag.h=>drawfdiag|
00029000  3e 2e 20 49 74 20 69 73  20 61 20 66 75 6e 63 74  |>. It is a funct|
00029010  69 6f 6e 20 75 73 65 64  20 74 6f 20 61 6c 6c 6f  |ion used to allo|
00029020  63 61 74 65 20 6d 65 6d  6f 72 79 20 77 69 74 68  |cate memory with|
00029030  20 70 72 6f 74 6f 74 79  70 65 20 61 73 20 66 6f  | prototype as fo|
00029040  6c 6c 6f 77 73 3a 0a 7b  77 72 61 70 20 6f 66 66  |llows:.{wrap off|
00029050  7d 0a 7b 66 43 6f 64 65  3b 61 6c 69 67 6e 20 63  |}.{fCode;align c|
00029060  65 6e 74 72 65 7d 69 6e  74 20 6d 79 66 75 6e 63  |entre}int myfunc|
00029070  20 28 76 6f 69 64 20 2a  2a 61 6e 63 68 6f 72 2c  | (void **anchor,|
00029080  20 69 6e 74 20 6e 29 3b  7b 66 3b 61 6c 69 67 6e  | int n);{f;align|
00029090  7d 0a 7b 77 72 61 70 7d  0a 54 68 69 73 20 73 68  |}.{wrap}.This sh|
000290a0  6f 75 6c 64 20 61 6c 6c  6f 63 61 74 65 20 2f 6e  |ould allocate /n|
000290b0  2f 20 62 79 74 65 73 20  6f 66 20 73 74 6f 72 65  |/ bytes of store|
000290c0  20 61 6e 64 20 73 65 74  20 7b 2f 7d 2a 61 6e 63  | and set {/}*anc|
000290d0  68 6f 72 7b 2f 7d 20 74  6f 20 70 6f 69 6e 74 20  |hor{/} to point |
000290e0  74 6f 20 74 68 65 6d 2e  20 52 65 74 75 72 6e 20  |to them. Return |
000290f0  6e 6f 6e 2d 7a 65 72 6f  20 69 66 20 73 75 63 63  |non-zero if succ|
00029100  65 73 73 66 75 6c 2e 00  44 41 54 41 f4 01 00 00  |essful..DATA....|
00029110  64 72 61 77 5f 61 70 70  65 6e 64 5f 64 69 61 67  |draw_append_diag|
00029120  0a 53 79 6e 74 61 78 3a  09 3c 42 4f 4f 4c 3e 20  |.Syntax:.<BOOL> |
00029130  64 72 61 77 5f 61 70 70  65 6e 64 5f 64 69 61 67  |draw_append_diag|
00029140  20 28 3c 64 72 61 77 5f  64 69 61 67 3e 20 2a 64  | (<draw_diag> *d|
00029150  69 61 67 31 2c 20 64 72  61 77 5f 64 69 61 67 20  |iag1, draw_diag |
00029160  2a 64 69 61 67 32 2c 20  3c 64 72 61 77 5f 65 72  |*diag2, <draw_er|
00029170  72 6f 72 3e 20 2a 65 72  72 6f 72 29 3b 0a 48 65  |ror> *error);.He|
00029180  61 64 65 72 3a 09 3c 64  72 61 77 66 64 69 61 67  |ader:.<drawfdiag|
00029190  2e 68 3d 3e 64 72 61 77  66 64 69 61 67 3e 0a 0a  |.h=>drawfdiag>..|
000291a0  52 65 74 75 72 6e 73 3a  09 3c 54 52 55 45 3e 20  |Returns:.<TRUE> |
000291b0  69 66 20 73 75 63 63 65  73 73 66 75 6c 2e 0a 0a  |if successful...|
000291c0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 6d 65  |This function me|
000291d0  72 67 65 73 20 74 77 6f  20 64 69 61 67 72 61 6d  |rges two diagram|
000291e0  73 20 69 6e 74 6f 20 6f  6e 65 2e 20 42 6f 74 68  |s into one. Both|
000291f0  20 64 69 61 67 72 61 6d  73 20 73 68 6f 75 6c 64  | diagrams should|
00029200  20 68 61 76 65 20 62 65  65 6e 20 70 72 6f 63 65  | have been proce|
00029210  73 73 65 64 20 62 79 20  3c 64 72 61 77 5f 76 65  |ssed by <draw_ve|
00029220  72 69 66 79 5f 64 69 61  67 3e 2e 20 7b 2f 7d 64  |rify_diag>. {/}d|
00029230  69 61 67 31 7b 2f 7d 20  6d 75 73 74 20 62 65 20  |iag1{/} must be |
00029240  69 6e 20 61 20 6d 65 6d  6f 72 79 20 62 6c 6f 63  |in a memory bloc|
00029250  6b 20 6c 61 72 67 65 20  65 6e 6f 75 67 68 20 74  |k large enough t|
00029260  6f 20 63 6f 6e 74 69 6e  20 62 6f 74 68 20 64 69  |o contin both di|
00029270  61 67 72 61 6d 73 2e 20  49 74 73 20 6c 65 6e 67  |agrams. Its leng|
00029280  74 68 20 77 69 6c 6c 20  62 65 20 75 70 64 61 74  |th will be updat|
00029290  65 64 20 74 6f 20 69 74  73 20 6e 65 77 20 76 61  |ed to its new va|
000292a0  6c 75 65 20 61 6e 64 20  69 74 73 20 62 6f 75 6e  |lue and its boun|
000292b0  64 69 6e 67 20 62 6f 78  20 77 69 6c 6c 20 62 65  |ding box will be|
000292c0  20 73 65 74 20 74 6f 20  74 68 65 20 75 6e 69 6f  | set to the unio|
000292d0  6e 20 6f 66 20 74 68 65  20 62 6f 75 6e 64 69 6e  |n of the boundin|
000292e0  67 20 62 6f 78 65 73 20  6f 66 20 74 68 65 20 74  |g boxes of the t|
000292f0  77 6f 20 64 69 61 67 72  61 6d 73 2e 44 41 54 41  |wo diagrams.DATA|
00029300  93 00 00 00 64 72 61 77  5f 62 62 6f 78 74 79 70  |....draw_bboxtyp|
00029310  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
00029320  66 69 6e 65 64 20 69 6e  20 3c 64 72 61 77 66 74  |fined in <drawft|
00029330  79 70 65 73 2e 68 3d 3e  64 72 61 77 66 74 79 70  |ypes.h=>drawftyp|
00029340  65 73 3e 20 61 73 20 61  20 74 79 70 65 20 63 61  |es> as a type ca|
00029350  70 61 62 6c 65 20 6f 66  20 68 6f 6c 64 69 6e 67  |pable of holding|
00029360  20 61 20 62 6f 75 6e 64  69 6e 67 20 62 6f 78 2e  | a bounding box.|
00029370  20 49 74 20 69 73 20 64  65 66 69 6e 65 64 20 61  | It is defined a|
00029380  73 20 61 20 3c 64 72 61  77 5f 62 6f 78 3e 2e 00  |s a <draw_box>..|
00029390  44 41 54 41 9d 00 00 00  64 72 61 77 5f 62 6f 78  |DATA....draw_box|
000293a0  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
000293b0  66 69 6e 65 64 20 69 6e  20 3c 64 72 61 77 66 64  |fined in <drawfd|
000293c0  69 61 67 2e 68 3d 3e 64  72 61 77 66 64 69 61 67  |iag.h=>drawfdiag|
000293d0  3e 2e 20 49 74 20 69 73  20 61 20 62 6f 75 6e 64  |>. It is a bound|
000293e0  69 6e 67 20 62 6f 78 20  64 65 66 69 6e 65 64 20  |ing box defined |
000293f0  61 73 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |as the following|
00029400  20 73 74 72 75 63 74 75  72 65 3a 0a 0a 20 20 5c  | structure:..  \|
00029410  7b 0a 20 20 20 20 69 6e  74 20 78 30 2c 20 79 30  |{.    int x0, y0|
00029420  2c 20 78 31 2c 20 79 31  3b 0a 20 20 7d 00 00 00  |, x1, y1;.  }...|
00029430  44 41 54 41 d0 00 00 00  64 72 61 77 5f 63 61 70  |DATA....draw_cap|
00029440  74 79 70 0a 54 68 69 73  20 74 79 70 65 20 69 73  |typ.This type is|
00029450  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 64 72 61  | defined in <dra|
00029460  77 66 74 79 70 65 73 2e  68 3d 3e 64 72 61 77 66  |wftypes.h=>drawf|
00029470  74 79 70 65 73 3e 20 61  73 20 61 6e 20 65 6e 75  |types> as an enu|
00029480  6d 65 72 61 74 65 64 20  74 79 70 65 20 64 65 73  |merated type des|
00029490  63 72 69 62 69 6e 67 20  61 20 70 61 74 68 20 63  |cribing a path c|
000294a0  61 70 20 73 74 79 6c 65  3a 0a 0a 20 09 7b 0a 20  |ap style:.. .{. |
000294b0  09 20 09 63 61 70 5f 62  75 74 74 09 3d 20 30 2c  |. .cap_butt.= 0,|
000294c0  0a 20 09 20 09 63 61 70  5f 72 6f 75 6e 64 09 3d  |. . .cap_round.=|
000294d0  20 31 2c 0a 20 09 20 09  63 61 70 5f 73 71 75 61  | 1,. . .cap_squa|
000294e0  72 65 09 3d 20 32 2c 0a  20 09 20 09 63 61 70 5f  |re.= 2,. . .cap_|
000294f0  74 72 69 61 6e 67 6c 65  09 3d 20 33 0a 20 09 7d  |triangle.= 3. .}|
00029500  44 41 54 41 8e 00 00 00  64 72 61 77 5f 63 6f 6c  |DATA....draw_col|
00029510  74 79 70 0a 54 68 69 73  20 74 79 70 65 20 69 73  |typ.This type is|
00029520  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 64 72 61  | defined in <dra|
00029530  77 66 74 79 70 65 73 2e  68 3d 3e 64 72 61 77 66  |wftypes.h=>drawf|
00029540  74 79 70 65 73 3e 20 61  73 20 61 20 74 79 70 65  |types> as a type|
00029550  20 63 61 70 61 62 6c 65  20 6f 66 20 68 6f 6c 64  | capable of hold|
00029560  69 6e 67 20 61 20 63 6f  6c 6f 75 72 20 76 61 6c  |ing a colour val|
00029570  75 65 2e 20 49 74 20 69  73 20 64 65 66 69 6e 65  |ue. It is define|
00029580  64 20 61 73 20 61 6e 20  2f 69 6e 74 2f 2e 00 00  |d as an /int/...|
00029590  44 41 54 41 5b 01 00 00  64 72 61 77 5f 63 6f 6e  |DATA[...draw_con|
000295a0  76 65 72 74 42 6f 78 0a  53 79 6e 74 61 78 3a 09  |vertBox.Syntax:.|
000295b0  76 6f 69 64 20 64 72 61  77 5f 63 6f 6e 76 65 72  |void draw_conver|
000295c0  74 42 6f 78 20 28 64 72  61 77 5f 62 6f 78 20 2a  |tBox (draw_box *|
000295d0  66 72 6f 6d 2c 20 3c 64  72 61 77 5f 62 6f 78 3e  |from, <draw_box>|
000295e0  20 2a 74 6f 2c 20 3c 42  4f 4f 4c 3e 20 74 6f 53  | *to, <BOOL> toS|
000295f0  63 72 65 65 6e 29 3b 0a  48 65 61 64 65 72 3a 09  |creen);.Header:.|
00029600  3c 64 72 61 77 66 64 69  61 67 2e 68 3d 3e 64 72  |<drawfdiag.h=>dr|
00029610  61 77 66 64 69 61 67 3e  0a 0a 54 68 69 73 20 66  |awfdiag>..This f|
00029620  75 6e 63 74 69 6f 6e 20  63 6f 6e 76 65 72 74 73  |unction converts|
00029630  20 61 20 62 6f 78 20 74  6f 2f 66 72 6f 6d 20 73  | a box to/from s|
00029640  63 72 65 65 6e 20 63 6f  6f 72 64 69 6e 61 74 65  |creen coordinate|
00029650  73 2e 20 2f 66 72 6f 6d  2f 20 61 6e 64 20 2f 74  |s. /from/ and /t|
00029660  6f 2f 20 6d 61 79 20 70  6f 69 6e 74 20 74 6f 20  |o/ may point to |
00029670  74 68 65 20 73 61 6d 65  20 62 6f 78 2e 20 49 66  |the same box. If|
00029680  20 2f 74 6f 53 63 72 65  65 6e 2f 20 69 73 20 3c  | /toScreen/ is <|
00029690  54 52 55 45 3e 20 74 68  65 6e 20 63 6f 6e 76 65  |TRUE> then conve|
000296a0  72 73 69 6f 6e 20 69 73  20 66 72 6f 6d 20 64 72  |rsion is from dr|
000296b0  61 77 20 63 6f 6f 72 64  73 20 74 6f 20 73 63 72  |aw coords to scr|
000296c0  65 65 6e 20 63 6f 6f 72  64 73 20 65 6c 73 65 20  |een coords else |
000296d0  69 74 20 69 73 20 74 68  65 20 6f 74 68 65 72 20  |it is the other |
000296e0  77 61 79 20 61 72 6f 75  6e 64 2e 00 44 41 54 41  |way around..DATA|
000296f0  a0 01 00 00 64 72 61 77  5f 63 72 65 61 74 65 5f  |....draw_create_|
00029700  64 69 61 67 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |diag.Syntax:.voi|
00029710  64 20 64 72 61 77 5f 63  72 65 61 74 65 5f 64 69  |d draw_create_di|
00029720  61 67 20 28 3c 64 72 61  77 5f 64 69 61 67 3e 20  |ag (<draw_diag> |
00029730  2a 64 69 61 67 2c 20 63  68 61 72 20 2a 63 72 65  |*diag, char *cre|
00029740  61 74 6f 72 2c 20 3c 64  72 61 77 5f 62 6f 78 3e  |ator, <draw_box>|
00029750  20 62 62 6f 78 29 3b 0a  48 65 61 64 65 72 3a 09  | bbox);.Header:.|
00029760  3c 64 72 61 77 66 6f 62  6a 2e 68 3d 3e 64 72 61  |<drawfobj.h=>dra|
00029770  77 66 6f 62 6a 3e 0a 0a  54 68 69 73 20 66 75 6e  |wfobj>..This fun|
00029780  63 74 69 6f 6e 20 63 72  65 61 74 65 73 20 61 6e  |ction creates an|
00029790  20 65 6d 70 74 79 20 64  69 61 67 72 61 6d 20 28  | empty diagram (|
000297a0  69 65 20 6a 75 73 74 20  74 68 65 20 66 69 6c 65  |ie just the file|
000297b0  20 68 65 61 64 65 72 29  2c 20 77 69 74 68 20 74  | header), with t|
000297c0  68 65 20 62 6f 75 6e 64  69 6e 67 20 62 6f 78 20  |he bounding box |
000297d0  2f 62 62 6f 78 2f 2e 20  2f 64 69 61 67 2f 20 6d  |/bbox/. /diag/ m|
000297e0  75 73 74 20 70 6f 69 6e  74 20 61 74 20 73 75 66  |ust point at suf|
000297f0  66 69 63 69 65 6e 74 20  6d 65 6d 6f 72 79 20 74  |ficient memory t|
00029800  6f 20 68 6f 6c 64 20 74  68 65 20 64 69 61 67 72  |o hold the diagr|
00029810  61 6d 2e 20 54 68 65 20  66 69 72 73 74 20 31 32  |am. The first 12|
00029820  20 63 68 61 72 73 20 6f  66 20 2f 63 72 65 61 74  | chars of /creat|
00029830  6f 72 2f 20 61 72 65 20  73 74 6f 72 65 64 20 69  |or/ are stored i|
00029840  6e 20 74 68 65 20 66 69  6c 65 20 68 65 61 64 65  |n the file heade|
00029850  72 2e 20 7b 2f 7d 64 69  61 67 2d 3e 6c 65 6e 67  |r. {/}diag->leng|
00029860  74 68 7b 2f 7d 20 69 73  20 73 65 74 20 61 70 70  |th{/} is set app|
00029870  72 6f 70 72 69 61 74 65  6c 79 20 62 79 20 74 68  |ropriately by th|
00029880  69 73 20 66 75 6e 63 74  69 6f 6e 2e 44 41 54 41  |is function.DATA|
00029890  e6 01 00 00 64 72 61 77  5f 63 72 65 61 74 65 4f  |....draw_createO|
000298a0  62 6a 65 63 74 0a 53 79  6e 74 61 78 3a 09 3c 42  |bject.Syntax:.<B|
000298b0  4f 4f 4c 3e 20 64 72 61  77 5f 63 72 65 61 74 65  |OOL> draw_create|
000298c0  4f 62 6a 65 63 74 20 28  3c 64 72 61 77 5f 64 69  |Object (<draw_di|
000298d0  61 67 3e 20 2a 64 69 61  67 2c 20 3c 64 72 61 77  |ag> *diag, <draw|
000298e0  5f 6f 62 6a 65 63 74 54  79 70 65 3e 20 74 79 70  |_objectType> typ|
000298f0  65 2c 20 3c 64 72 61 77  5f 6f 62 6a 65 63 74 3e  |e, <draw_object>|
00029900  20 61 66 74 65 72 2c 20  42 4f 4f 4c 20 72 65 62  | after, BOOL reb|
00029910  69 6e 64 2c 20 64 72 61  77 5f 6f 62 6a 65 63 74  |ind, draw_object|
00029920  20 2a 6f 62 6a 2c 20 3c  64 72 61 77 5f 65 72 72  | *obj, <draw_err|
00029930  6f 72 3e 20 2a 65 72 72  6f 72 29 3b 0a 48 65 61  |or> *error);.Hea|
00029940  64 65 72 3a 09 3c 64 72  61 77 66 6f 62 6a 2e 68  |der:.<drawfobj.h|
00029950  3d 3e 64 72 61 77 66 6f  62 6a 3e 0a 0a 52 65 74  |=>drawfobj>..Ret|
00029960  75 72 6e 73 3a 09 3c 54  52 55 45 3e 20 69 66 20  |urns:.<TRUE> if |
00029970  6f 62 6a 65 63 74 20 63  72 65 61 74 65 64 20 4f  |object created O|
00029980  4b 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |K...This functio|
00029990  6e 20 63 72 65 61 74 65  73 20 61 6e 20 6f 62 6a  |n creates an obj|
000299a0  65 63 74 20 64 65 66 69  6e 65 64 20 69 6e 20 2f  |ect defined in /|
000299b0  74 79 70 65 2f 20 69 6e  20 74 68 65 20 67 69 76  |type/ in the giv|
000299c0  65 6e 20 64 69 61 67 72  61 6d 20 61 66 74 65 72  |en diagram after|
000299d0  20 74 68 65 20 6f 62 6a  65 63 74 20 69 6e 20 2f  | the object in /|
000299e0  61 66 74 65 72 2f 2e 20  49 66 20 2f 72 65 62 69  |after/. If /rebi|
000299f0  6e 64 2f 20 69 73 20 54  52 55 45 20 74 68 65 6e  |nd/ is TRUE then|
00029a00  20 74 68 65 20 64 69 61  67 72 61 6d 20 62 6f 75  | the diagram bou|
00029a10  6e 64 69 6e 67 20 62 6f  78 20 69 73 20 75 70 64  |nding box is upd|
00029a20  61 74 65 64 20 74 6f 20  69 6e 63 6c 75 64 65 20  |ated to include |
00029a30  74 68 65 20 6e 65 77 20  6f 62 6a 65 63 74 2e 20  |the new object. |
00029a40  54 68 65 20 68 61 6e 64  6c 65 20 6f 66 20 74 68  |The handle of th|
00029a50  65 20 6e 65 77 20 6f 62  6a 65 63 74 20 69 73 20  |e new object is |
00029a60  72 65 74 75 72 6e 65 64  20 69 6e 20 2f 6f 62 6a  |returned in /obj|
00029a70  2f 2e 00 00 44 41 54 41  e2 00 00 00 64 72 61 77  |/...DATA....draw|
00029a80  5f 64 61 73 68 73 74 72  0a 54 68 69 73 20 74 79  |_dashstr.This ty|
00029a90  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
00029aa0  20 3c 64 72 61 77 66 74  79 70 65 73 2e 68 3d 3e  | <drawftypes.h=>|
00029ab0  64 72 61 77 66 74 79 70  65 73 3e 20 61 73 20 61  |drawftypes> as a|
00029ac0  20 74 79 70 65 20 63 6f  6e 74 61 69 6e 69 6e 67  | type containing|
00029ad0  20 64 61 73 68 20 70 61  74 74 65 72 6e 20 64 61  | dash pattern da|
00029ae0  74 61 2e 20 49 74 20 69  73 20 64 65 66 69 6e 65  |ta. It is define|
00029af0  64 20 61 73 20 74 68 65  20 66 6f 6c 6c 6f 77 69  |d as the followi|
00029b00  6e 67 20 73 74 72 75 63  74 75 72 65 3a 0a 0a 20  |ng structure:.. |
00029b10  09 5c 7b 0a 20 09 20 09  69 6e 74 20 64 61 73 68  |.\{. . .int dash|
00029b20  73 74 61 72 74 3b 0a 20  09 20 09 69 6e 74 20 64  |start;. . .int d|
00029b30  61 73 68 63 6f 75 6e 74  3b 0a 20 09 20 09 69 6e  |ashcount;. . .in|
00029b40  74 20 64 61 73 68 65 6c  65 6d 65 6e 74 73 5b 36  |t dashelements[6|
00029b50  5d 3b 0a 20 09 7d 00 00  44 41 54 41 d3 00 00 00  |];. .}..DATA....|
00029b60  64 72 61 77 5f 64 61 73  68 73 74 72 68 64 72 0a  |draw_dashstrhdr.|
00029b70  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
00029b80  69 6e 65 64 20 69 6e 20  3c 64 72 61 77 66 74 79  |ined in <drawfty|
00029b90  70 65 73 2e 68 3d 3e 64  72 61 77 66 74 79 70 65  |pes.h=>drawftype|
00029ba0  73 3e 20 61 73 20 61 20  74 79 70 65 20 63 6f 6e  |s> as a type con|
00029bb0  74 61 69 6e 69 6e 67 20  64 61 73 68 20 70 61 74  |taining dash pat|
00029bc0  74 65 72 6e 20 64 61 74  61 20 68 65 61 64 65 72  |tern data header|
00029bd0  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
00029be0  61 73 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |as the following|
00029bf0  20 73 74 72 75 63 74 75  72 65 3a 0a 0a 20 09 5c  | structure:.. .\|
00029c00  7b 0a 20 09 20 09 69 6e  74 20 64 61 73 68 73 74  |{. . .int dashst|
00029c10  61 72 74 3b 0a 20 09 20  09 69 6e 74 20 64 61 73  |art;. . .int das|
00029c20  68 63 6f 75 6e 74 3b 0a  20 09 7d 00 44 41 54 41  |hcount;. .}.DATA|
00029c30  b1 00 00 00 64 72 61 77  5f 64 61 73 68 74 79 70  |....draw_dashtyp|
00029c40  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
00029c50  66 69 6e 65 64 20 69 6e  20 3c 64 72 61 77 66 74  |fined in <drawft|
00029c60  79 70 65 73 2e 68 3d 3e  64 72 61 77 66 74 79 70  |ypes.h=>drawftyp|
00029c70  65 73 3e 20 61 73 20 61  6e 20 65 6e 75 6d 65 72  |es> as an enumer|
00029c80  61 74 65 64 20 74 79 70  65 20 63 6f 6e 74 61 69  |ated type contai|
00029c90  6e 69 6e 67 20 61 20 64  61 73 68 20 70 61 74 74  |ning a dash patt|
00029ca0  65 72 6e 20 66 6c 61 67  3a 0a 0a 20 09 5c 7b 0a  |ern flag:.. .\{.|
00029cb0  20 09 20 09 64 61 73 68  5f 61 62 73 65 6e 74 09  | . .dash_absent.|
00029cc0  3d 20 30 2c 0a 20 09 20  09 64 61 73 68 5f 70 72  |= 0,. . .dash_pr|
00029cd0  65 73 65 6e 74 09 3d 20  31 0a 20 09 7d 00 00 00  |esent.= 1. .}...|
00029ce0  44 41 54 41 5c 01 00 00  64 72 61 77 5f 64 65 6c  |DATA\...draw_del|
00029cf0  65 74 65 4f 62 6a 65 63  74 73 0a 53 79 6e 74 61  |eteObjects.Synta|
00029d00  78 3a 09 3c 42 4f 4f 4c  3e 20 64 72 61 77 5f 64  |x:.<BOOL> draw_d|
00029d10  65 6c 65 74 65 4f 62 6a  65 63 74 73 20 28 3c 64  |eleteObjects (<d|
00029d20  72 61 77 5f 64 69 61 67  3e 20 2a 64 69 61 67 2c  |raw_diag> *diag,|
00029d30  20 3c 64 72 61 77 5f 6f  62 6a 65 63 74 3e 20 73  | <draw_object> s|
00029d40  74 61 72 74 2c 20 64 72  61 77 5f 6f 62 6a 65 63  |tart, draw_objec|
00029d50  74 20 65 6e 64 2c 20 42  4f 4f 4c 20 72 65 62 69  |t end, BOOL rebi|
00029d60  6e 64 2c 20 3c 64 72 61  77 5f 65 72 72 6f 72 3e  |nd, <draw_error>|
00029d70  20 2a 65 72 72 6f 72 29  3b 0a 48 65 61 64 65 72  | *error);.Header|
00029d80  3a 09 3c 64 72 61 77 66  6f 62 6a 2e 68 3d 3e 64  |:.<drawfobj.h=>d|
00029d90  72 61 77 66 6f 62 6a 3e  0a 0a 52 65 74 75 72 6e  |rawfobj>..Return|
00029da0  73 3a 09 3c 54 52 55 45  3e 20 69 66 20 6f 62 6a  |s:.<TRUE> if obj|
00029db0  65 63 74 73 20 64 65 6c  65 74 65 64 20 4f 4b 2e  |ects deleted OK.|
00029dc0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00029dd0  64 65 6c 65 74 65 73 20  74 68 65 20 73 70 65 63  |deletes the spec|
00029de0  69 66 69 65 64 20 72 61  6e 67 65 20 6f 66 20 6f  |ified range of o|
00029df0  62 6a 65 63 74 73 20 66  72 6f 6d 20 61 20 64 69  |bjects from a di|
00029e00  61 67 72 61 6d 2e 20 49  66 20 2f 72 65 62 69 6e  |agram. If /rebin|
00029e10  64 2f 20 69 73 20 54 52  55 45 20 74 68 65 6e 20  |d/ is TRUE then |
00029e20  74 68 65 20 62 6f 75 6e  64 69 6e 67 20 62 6f 78  |the bounding box|
00029e30  20 69 73 20 75 70 64 61  74 65 64 2e 44 41 54 41  | is updated.DATA|
00029e40  31 01 00 00 64 72 61 77  5f 64 69 61 67 0a 54 68  |1...draw_diag.Th|
00029e50  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
00029e60  65 64 20 69 6e 20 3c 64  72 61 77 66 64 69 61 67  |ed in <drawfdiag|
00029e70  2e 68 3d 3e 64 72 61 77  66 64 69 61 67 3e 2e 20  |.h=>drawfdiag>. |
00029e80  49 74 20 63 6f 6e 73 69  73 74 73 20 6f 66 20 61  |It consists of a|
00029e90  20 70 6f 69 6e 74 65 72  20 74 6f 20 74 68 65 20  | pointer to the |
00029ea0  64 61 74 61 20 61 6e 64  20 61 20 6c 65 6e 67 74  |data and a lengt|
00029eb0  68 20 66 69 65 6c 64 3a  0a 0a 20 20 5c 7b 0a 20  |h field:..  \{. |
00029ec0  20 20 20 63 68 61 72 20  2a 64 61 74 61 3b 0a 20  |   char *data;. |
00029ed0  20 20 20 69 6e 74 20 20  6c 65 6e 67 74 68 3b 0a  |   int  length;.|
00029ee0  20 20 7d 0a 0a 54 68 65  20 6c 65 6e 67 74 68 20  |  }..The length |
00029ef0  6d 75 73 74 20 62 65 20  61 6e 20 65 78 61 63 74  |must be an exact|
00029f00  20 6e 75 6d 62 65 72 20  6f 66 20 77 6f 72 64 73  | number of words|
00029f10  2c 20 61 6e 64 20 69 73  20 74 68 65 20 61 6d 6f  |, and is the amo|
00029f20  75 6e 74 20 6f 66 20 73  70 61 63 65 20 75 73 65  |unt of space use|
00029f30  64 20 69 6e 20 74 68 65  20 64 69 61 67 72 61 6d  |d in the diagram|
00029f40  2c 20 6e 6f 74 20 74 68  65 20 73 69 7a 65 20 6f  |, not the size o|
00029f50  66 20 74 68 65 20 6d 65  6d 6f 72 79 20 61 6c 6c  |f the memory all|
00029f60  6f 63 61 74 65 64 20 74  6f 20 69 74 2e 00 00 00  |ocated to it....|
00029f70  44 41 54 41 1c 02 00 00  64 72 61 77 5f 64 6f 4f  |DATA....draw_doO|
00029f80  62 6a 65 63 74 73 0a 53  79 6e 74 61 78 3a 09 3c  |bjects.Syntax:.<|
00029f90  42 4f 4f 4c 3e 20 64 72  61 77 5f 64 6f 4f 62 6a  |BOOL> draw_doObj|
00029fa0  65 63 74 73 20 28 3c 64  72 61 77 5f 64 69 61 67  |ects (<draw_diag|
00029fb0  3e 20 2a 64 69 61 67 2c  20 3c 64 72 61 77 5f 6f  |> *diag, <draw_o|
00029fc0  62 6a 65 63 74 3e 20 73  74 61 72 74 2c 20 64 72  |bject> start, dr|
00029fd0  61 77 5f 6f 62 6a 65 63  74 20 65 6e 64 2c 20 3c  |aw_object end, <|
00029fe0  64 72 61 77 5f 72 65 64  72 61 77 73 74 72 3e 20  |draw_redrawstr> |
00029ff0  2a 72 2c 20 64 6f 75 62  6c 65 20 73 63 61 6c 65  |*r, double scale|
0002a000  2c 20 3c 64 72 61 77 5f  65 72 72 6f 72 3e 20 2a  |, <draw_error> *|
0002a010  65 72 72 6f 72 29 3b 0a  48 65 61 64 65 72 3a 09  |error);.Header:.|
0002a020  3c 64 72 61 77 66 6f 62  6a 2e 68 3d 3e 64 72 61  |<drawfobj.h=>dra|
0002a030  77 66 6f 62 6a 3e 0a 0a  52 65 74 75 72 6e 73 3a  |wfobj>..Returns:|
0002a040  09 3c 54 52 55 45 3e 20  69 66 20 73 75 63 63 65  |.<TRUE> if succe|
0002a050  73 73 66 75 6c 2e 0a 0a  54 68 69 73 20 66 75 6e  |ssful...This fun|
0002a060  63 74 69 6f 6e 20 72 65  6e 64 65 72 73 20 61 20  |ction renders a |
0002a070  73 70 65 63 69 66 69 65  64 20 72 61 6e 67 65 20  |specified range |
0002a080  6f 66 20 6f 62 6a 65 63  74 73 20 66 72 6f 6d 20  |of objects from |
0002a090  61 20 64 69 61 67 72 61  6d 2e 20 2f 73 74 61 72  |a diagram. /star|
0002a0a0  74 2f 20 61 6e 64 20 2f  65 6e 64 2f 20 73 70 65  |t/ and /end/ spe|
0002a0b0  63 69 66 79 20 74 68 65  20 6f 62 6a 65 63 74 73  |cify the objects|
0002a0c0  20 74 6f 20 62 65 20 72  65 6e 64 65 72 65 64 2e  | to be rendered.|
0002a0d0  20 2f 72 2f 20 69 73 20  74 68 65 20 72 65 64 72  | /r/ is the redr|
0002a0e0  61 77 20 72 65 63 74 61  6e 67 6c 65 20 61 6e 64  |aw rectangle and|
0002a0f0  20 2f 73 63 61 6c 65 2f  20 69 73 20 74 68 65 20  | /scale/ is the |
0002a100  73 63 61 6c 65 20 66 61  63 74 6f 72 2e 20 45 72  |scale factor. Er|
0002a110  72 6f 72 73 20 61 72 65  20 72 65 74 75 72 6e 65  |rors are returne|
0002a120  64 20 69 6e 20 2f 65 72  72 6f 72 2f 2e 20 54 68  |d in /error/. Th|
0002a130  69 73 20 66 75 6e 63 74  69 6f 6e 20 69 73 20 73  |is function is s|
0002a140  69 6d 69 6c 61 72 20 74  6f 20 3c 64 72 61 77 5f  |imilar to <draw_|
0002a150  72 65 6e 64 65 72 5f 64  69 61 67 3e 2c 20 62 75  |render_diag>, bu|
0002a160  74 20 77 69 74 68 20 74  68 65 20 61 64 64 69 74  |t with the addit|
0002a170  69 6f 6e 20 6f 66 20 73  70 65 63 69 66 79 69 6e  |ion of specifyin|
0002a180  67 20 74 68 65 20 72 61  6e 67 65 2e 44 41 54 41  |g the range.DATA|
0002a190  db 00 00 00 64 72 61 77  5f 64 72 61 77 54 6f 53  |....draw_drawToS|
0002a1a0  63 72 65 65 6e 0a 53 79  6e 74 61 78 3a 09 69 6e  |creen.Syntax:.in|
0002a1b0  74 20 64 72 61 77 5f 64  72 61 77 54 6f 53 63 72  |t draw_drawToScr|
0002a1c0  65 65 6e 20 28 69 6e 74  20 69 29 3b 0a 48 65 61  |een (int i);.Hea|
0002a1d0  64 65 72 3a 09 3c 64 72  61 77 66 64 69 61 67 2e  |der:.<drawfdiag.|
0002a1e0  68 3d 3e 64 72 61 77 66  64 69 61 67 3e 0a 0a 52  |h=>drawfdiag>..R|
0002a1f0  65 74 75 72 6e 73 3a 09  2f 69 2f 20 69 6e 20 73  |eturns:./i/ in s|
0002a200  63 72 65 65 6e 20 75 6e  69 74 73 2e 0a 0a 54 68  |creen units...Th|
0002a210  69 73 20 66 75 6e 63 74  69 6f 6e 2d 6c 69 6b 65  |is function-like|
0002a220  20 6d 61 63 72 6f 20 63  6f 6e 76 65 72 74 73 20  | macro converts |
0002a230  66 72 6f 6d 20 64 72 61  77 20 75 6e 69 74 73 20  |from draw units |
0002a240  74 6f 20 73 63 72 65 65  6e 20 75 6e 69 74 73 2e  |to screen units.|
0002a250  20 49 74 20 72 65 74 75  72 6e 73 20 28 28 69 29  | It returns ((i)|
0002a260  20 3e 3e 20 38 29 2e 00  44 41 54 41 18 02 00 00  | >> 8)..DATA....|
0002a270  64 72 61 77 5f 65 72 72  6f 72 0a 54 68 69 73 20  |draw_error.This |
0002a280  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
0002a290  69 6e 20 3c 64 72 61 77  66 64 69 61 67 2e 68 3d  |in <drawfdiag.h=|
0002a2a0  3e 64 72 61 77 66 64 69  61 67 3e 2e 20 49 74 20  |>drawfdiag>. It |
0002a2b0  69 73 20 61 6e 20 65 72  72 6f 72 20 74 79 70 65  |is an error type|
0002a2c0  3a 0a 0a 23 69 6e 64 65  6e 74 20 32 0a 5c 7b 0a  |:..#indent 2.\{.|
0002a2d0  20 09 65 6e 75 6d 0a 20  09 5c 7b 0a 20 09 20 09  | .enum. .\{. . .|
0002a2e0  44 72 61 77 4f 53 45 72  72 6f 72 2c 0a 20 09 20  |DrawOSError,. . |
0002a2f0  09 44 72 61 77 4f 77 6e  45 72 72 6f 72 2c 0a 20  |.DrawOwnError,. |
0002a300  09 20 09 4e 6f 6e 65 0a  20 09 7d 20 74 79 70 65  |. .None. .} type|
0002a310  3b 0a 20 09 75 6e 69 6f  6e 0a 20 09 5c 7b 0a 20  |;. .union. .\{. |
0002a320  09 20 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 6f 73  |. .<os_error> os|
0002a330  3b 0a 20 09 20 09 73 74  72 75 63 74 0a 20 09 20  |;. . .struct. . |
0002a340  09 5c 7b 0a 20 09 20 09  20 09 69 6e 74 20 63 6f  |.\{. . . .int co|
0002a350  64 65 3b 0a 20 09 20 09  20 09 69 6e 74 20 6c 6f  |de;. . . .int lo|
0002a360  63 61 74 69 6f 6e 3b 0a  20 09 20 09 7d 20 64 72  |cation;. . .} dr|
0002a370  61 77 3b 0a 20 09 7d 20  65 72 72 3b 0a 7d 0a 23  |aw;. .} err;.}.#|
0002a380  69 6e 64 65 6e 74 0a 0a  57 68 65 72 65 20 61 20  |indent..Where a |
0002a390  72 6f 75 74 69 6e 65 20  63 61 6e 20 70 72 6f 64  |routine can prod|
0002a3a0  75 63 65 20 61 6e 20 65  72 72 6f 72 2c 20 74 68  |uce an error, th|
0002a3b0  65 20 65 72 72 6f 72 20  69 74 73 65 6c 66 20 69  |e error itself i|
0002a3c0  73 20 72 65 74 75 72 6e  65 64 20 69 6e 20 61 20  |s returned in a |
0002a3d0  75 73 65 72 20 73 74 72  75 63 74 75 72 65 20 28  |user structure (|
0002a3e0  6f 72 20 6e 6f 74 20 61  74 20 61 6c 6c 20 69 66  |or not at all if|
0002a3f0  20 3c 4e 55 4c 4c 3e 20  69 73 20 70 61 73 73 65  | <NULL> is passe|
0002a400  64 29 2e 20 54 68 65 20  65 72 72 6f 72 20 62 6c  |d). The error bl|
0002a410  6f 63 6b 20 6d 61 79 20  63 6f 6e 74 61 69 6e 20  |ock may contain |
0002a420  65 69 74 68 65 72 20 61  6e 20 4f 53 20 65 72 72  |either an OS err|
0002a430  6f 72 20 6f 72 20 61 6e  20 69 6e 74 65 72 6e 61  |or or an interna|
0002a440  6c 20 65 72 72 6f 72 2e  20 53 65 65 20 3c 64 72  |l error. See <dr|
0002a450  61 77 66 65 72 72 6f 72  2e 68 3d 3e 64 72 61 77  |awferror.h=>draw|
0002a460  66 65 72 72 6f 72 3e 20  66 6f 72 20 74 68 65 20  |ferror> for the |
0002a470  69 6e 74 65 72 6e 61 6c  20 65 72 72 6f 72 73 2e  |internal errors.|
0002a480  44 41 54 41 8a 01 00 00  64 72 61 77 5f 65 78 74  |DATA....draw_ext|
0002a490  65 6e 64 0a 54 68 69 73  20 74 79 70 65 20 69 73  |end.This type is|
0002a4a0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 64 72 61  | defined in <dra|
0002a4b0  77 66 64 69 61 67 2e 68  3d 3e 64 72 61 77 66 64  |wfdiag.h=>drawfd|
0002a4c0  69 61 67 3e 2e 20 49 74  20 69 73 20 61 20 66 75  |iag>. It is a fu|
0002a4d0  6e 63 74 69 6f 6e 20 75  73 65 64 20 74 6f 20 65  |nction used to e|
0002a4e0  78 74 65 6e 64 20 6d 65  6d 6f 72 79 20 77 69 74  |xtend memory wit|
0002a4f0  68 20 70 72 6f 74 6f 74  79 70 65 20 61 73 20 66  |h prototype as f|
0002a500  6f 6c 6c 6f 77 73 3a 0a  7b 77 72 61 70 20 6f 66  |ollows:.{wrap of|
0002a510  66 7d 0a 7b 66 43 6f 64  65 3b 61 6c 69 67 6e 20  |f}.{fCode;align |
0002a520  63 65 6e 74 72 65 7d 69  6e 74 20 6d 79 66 75 6e  |centre}int myfun|
0002a530  63 20 28 76 6f 69 64 20  2a 2a 61 6e 63 68 6f 72  |c (void **anchor|
0002a540  2c 20 69 6e 74 20 6e 29  3b 7b 66 3b 61 6c 69 67  |, int n);{f;alig|
0002a550  6e 3b 77 72 61 70 7d 0a  0a 54 68 69 73 20 73 68  |n;wrap}..This sh|
0002a560  6f 75 6c 64 20 65 78 74  65 6e 64 20 74 68 65 20  |ould extend the |
0002a570  62 6c 6f 63 6b 20 6f 66  20 6d 65 6d 6f 72 79 20  |block of memory |
0002a580  77 68 69 63 68 20 73 74  61 72 74 73 20 61 74 20  |which starts at |
0002a590  7b 2f 7d 2a 61 6e 63 68  6f 72 7b 2f 7d 20 74 6f  |{/}*anchor{/} to|
0002a5a0  20 61 20 74 6f 74 61 6c  20 73 69 7a 65 20 6f 66  | a total size of|
0002a5b0  20 2f 6e 2f 20 62 79 74  65 73 20 6f 66 20 73 74  | /n/ bytes of st|
0002a5c0  6f 72 65 20 61 6e 64 20  73 65 74 20 7b 2f 7d 2a  |ore and set {/}*|
0002a5d0  61 6e 63 68 6f 72 7b 2f  7d 20 74 6f 20 70 6f 69  |anchor{/} to poi|
0002a5e0  6e 74 20 74 6f 20 74 68  65 6d 2e 20 52 65 74 75  |nt to them. Retu|
0002a5f0  72 6e 20 6e 6f 6e 2d 7a  65 72 6f 20 69 66 20 73  |rn non-zero if s|
0002a600  75 63 63 65 73 73 66 75  6c 2e 00 00 44 41 54 41  |uccessful...DATA|
0002a610  87 01 00 00 64 72 61 77  5f 65 78 74 72 61 63 74  |....draw_extract|
0002a620  4f 62 6a 65 63 74 0a 53  79 6e 74 61 78 3a 09 3c  |Object.Syntax:.<|
0002a630  42 4f 4f 4c 3e 20 64 72  61 77 5f 65 78 74 72 61  |BOOL> draw_extra|
0002a640  63 74 4f 62 6a 65 63 74  20 28 3c 64 72 61 77 5f  |ctObject (<draw_|
0002a650  64 69 61 67 3e 20 2a 64  69 61 67 2c 20 3c 64 72  |diag> *diag, <dr|
0002a660  61 77 5f 6f 62 6a 65 63  74 3e 20 6f 62 6a 65 63  |aw_object> objec|
0002a670  74 2c 20 3c 64 72 61 77  5f 6f 62 6a 65 63 74 54  |t, <draw_objectT|
0002a680  79 70 65 3e 20 72 65 73  2c 20 3c 64 72 61 77 5f  |ype> res, <draw_|
0002a690  65 72 72 6f 72 3e 20 2a  65 72 72 29 3b 0a 48 65  |error> *err);.He|
0002a6a0  61 64 65 72 3a 09 3c 64  72 61 77 66 6f 62 6a 2e  |ader:.<drawfobj.|
0002a6b0  68 3d 3e 64 72 61 77 66  6f 62 6a 3e 0a 0a 52 65  |h=>drawfobj>..Re|
0002a6c0  74 75 72 6e 73 3a 09 3c  54 52 55 45 3e 20 69 66  |turns:.<TRUE> if|
0002a6d0  20 6f 62 6a 65 63 74 20  65 78 74 72 61 63 74 65  | object extracte|
0002a6e0  64 20 4f 4b 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |d OK...This func|
0002a6f0  74 69 6f 6e 20 65 78 74  72 61 63 74 73 20 61 6e  |tion extracts an|
0002a700  20 6f 62 6a 65 63 74 20  66 72 6f 6d 20 61 20 64  | object from a d|
0002a710  69 61 67 72 61 6d 20 69  6e 74 6f 20 61 20 73 75  |iagram into a su|
0002a720  70 70 6c 69 65 64 20 62  75 66 66 65 72 2c 20 2f  |pplied buffer, /|
0002a730  72 65 73 2f 2e 20 2f 6f  62 6a 65 63 74 2f 20 63  |res/. /object/ c|
0002a740  6f 6e 74 61 69 6e 73 20  74 68 65 20 6f 62 6a 65  |ontains the obje|
0002a750  63 74 20 74 6f 20 62 65  20 65 78 74 72 61 63 74  |ct to be extract|
0002a760  65 64 2e 20 54 68 65 20  62 75 66 66 65 72 20 66  |ed. The buffer f|
0002a770  6f 72 20 74 68 65 20 72  65 73 75 6c 74 20 6d 75  |or the result mu|
0002a780  73 74 20 62 65 20 6c 61  72 67 65 20 65 6e 6f 75  |st be large enou|
0002a790  67 68 2e 00 44 41 54 41  37 01 00 00 64 72 61 77  |gh..DATA7...draw|
0002a7a0  5f 66 69 6c 65 68 65 61  64 65 72 0a 54 68 69 73  |_fileheader.This|
0002a7b0  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
0002a7c0  20 69 6e 20 3c 64 72 61  77 66 74 79 70 65 73 2e  | in <drawftypes.|
0002a7d0  68 3d 3e 64 72 61 77 66  74 79 70 65 73 3e 20 61  |h=>drawftypes> a|
0002a7e0  73 20 61 20 74 79 70 65  20 63 61 70 61 62 6c 65  |s a type capable|
0002a7f0  20 6f 66 20 68 6f 6c 64  69 6e 67 20 61 20 66 69  | of holding a fi|
0002a800  6c 65 20 68 65 61 64 65  72 2e 20 49 74 20 69 73  |le header. It is|
0002a810  20 64 65 66 69 6e 65 64  20 61 73 20 74 68 65 20  | defined as the |
0002a820  66 6f 6c 6c 6f 77 69 6e  67 20 73 74 72 75 63 74  |following struct|
0002a830  75 72 65 3a 0a 0a 20 09  5c 7b 0a 20 09 20 09 63  |ure:.. .\{. . .c|
0002a840  68 61 72 09 74 69 74 6c  65 5b 34 5d 3b 09 2f 2a  |har.title[4];./*|
0002a850  20 22 44 72 61 77 22 20  2a 2f 0a 20 09 20 09 69  | "Draw" */. . .i|
0002a860  6e 74 09 6d 61 6a 6f 72  73 74 61 6d 70 3b 09 2f  |nt.majorstamp;./|
0002a870  2a 20 32 30 31 20 2a 2f  0a 20 09 20 09 69 6e 74  |* 201 */. . .int|
0002a880  09 6d 69 6e 6f 72 73 74  61 6d 70 3b 09 2f 2a 20  |.minorstamp;./* |
0002a890  30 20 2a 2f 0a 20 09 20  09 63 68 61 72 09 70 72  |0 */. . .char.pr|
0002a8a0  6f 67 69 64 65 6e 74 5b  31 32 5d 3b 09 0a 20 09  |ogident[12];.. .|
0002a8b0  20 09 3c 64 72 61 77 5f  62 62 6f 78 74 79 70 3e  | .<draw_bboxtyp>|
0002a8c0  09 62 62 6f 78 3b 09 0a  20 09 7d 00 44 41 54 41  |.bbox;.. .}.DATA|
0002a8d0  de 00 00 00 64 72 61 77  5f 46 69 72 73 74 4f 62  |....draw_FirstOb|
0002a8e0  6a 65 63 74 0a 54 68 69  73 20 6d 61 63 72 6f 20  |ject.This macro |
0002a8f0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 64  |is defined in <d|
0002a900  72 61 77 66 6f 62 6a 2e  68 3d 3e 64 72 61 77 66  |rawfobj.h=>drawf|
0002a910  6f 62 6a 3e 2e 20 49 74  20 69 73 20 61 20 73 79  |obj>. It is a sy|
0002a920  6d 62 6f 6c 69 63 20 63  6f 64 65 20 75 73 65 64  |mbolic code used|
0002a930  20 62 79 20 66 75 6e 63  74 69 6f 6e 73 20 74 68  | by functions th|
0002a940  61 74 20 6f 70 65 72 61  74 65 20 6f 6e 20 61 20  |at operate on a |
0002a950  72 61 6e 67 65 20 6f 66  20 6f 62 6a 65 63 74 73  |range of objects|
0002a960  20 61 6e 64 20 68 61 73  20 74 68 65 20 6d 65 61  | and has the mea|
0002a970  6e 69 6e 67 20 27 66 72  6f 6d 20 74 68 65 20 73  |ning 'from the s|
0002a980  74 61 72 74 27 2e 20 49  74 20 69 73 20 64 65 66  |tart'. It is def|
0002a990  69 6e 65 64 20 61 73 20  28 3c 64 72 61 77 5f 6f  |ined as (<draw_o|
0002a9a0  62 6a 65 63 74 3e 29 2d  31 2e 00 00 44 41 54 41  |bject>)-1...DATA|
0002a9b0  4a 01 00 00 64 72 61 77  5f 66 6f 6e 74 6c 69 73  |J...draw_fontlis|
0002a9c0  74 73 74 72 0a 54 68 69  73 20 74 79 70 65 20 69  |tstr.This type i|
0002a9d0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 64 72  |s defined in <dr|
0002a9e0  61 77 66 74 79 70 65 73  2e 68 3d 3e 64 72 61 77  |awftypes.h=>draw|
0002a9f0  66 74 79 70 65 73 3e 20  61 73 20 61 20 74 79 70  |ftypes> as a typ|
0002aa00  65 20 63 61 70 61 62 6c  65 20 6f 66 20 68 6f 6c  |e capable of hol|
0002aa10  64 69 6e 67 20 61 20 66  6f 6e 74 20 74 61 62 6c  |ding a font tabl|
0002aa20  65 20 6f 62 6a 65 63 74  2e 20 49 74 20 69 73 20  |e object. It is |
0002aa30  64 65 66 69 6e 65 64 20  61 73 20 74 68 65 20 66  |defined as the f|
0002aa40  6f 6c 6c 6f 77 69 6e 67  20 73 74 72 75 63 74 75  |ollowing structu|
0002aa50  72 65 3a 0a 7b 77 72 61  70 20 6f 66 66 7d 0a 20  |re:.{wrap off}. |
0002aa60  09 5c 7b 0a 20 09 20 09  3c 64 72 61 77 5f 74 61  |.\{. . .<draw_ta|
0002aa70  67 74 79 70 3e 20 09 74  61 67 3b 09 2f 2a 20 4f  |gtyp> .tag;./* O|
0002aa80  62 6a 65 63 74 20 74 79  70 65 20 3d 20 30 20 2a  |bject type = 0 *|
0002aa90  2f 0a 20 09 20 09 3c 64  72 61 77 5f 73 69 7a 65  |/. . .<draw_size|
0002aaa0  74 79 70 3e 09 73 69 7a  65 3b 09 2f 2a 20 4d 75  |typ>.size;./* Mu|
0002aab0  6c 74 69 70 6c 65 20 6f  66 20 34 20 2a 2f 0a 20  |ltiple of 4 */. |
0002aac0  09 20 09 3c 64 72 61 77  5f 66 6f 6e 74 72 65 66  |. .<draw_fontref|
0002aad0  3e 09 66 6f 6e 74 72 65  66 3b 09 0a 20 09 20 09  |>.fontref;.. . .|
0002aae0  63 68 61 72 09 66 6f 6e  74 6e 61 6d 65 5b 31 5d  |char.fontname[1]|
0002aaf0  3b 09 0a 20 09 7d 00 00  44 41 54 41 15 01 00 00  |;.. .}..DATA....|
0002ab00  64 72 61 77 5f 66 6f 6e  74 6c 69 73 74 73 74 72  |draw_fontliststr|
0002ab10  68 64 72 0a 54 68 69 73  20 74 79 70 65 20 69 73  |hdr.This type is|
0002ab20  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 64 72 61  | defined in <dra|
0002ab30  77 66 74 79 70 65 73 2e  68 3d 3e 64 72 61 77 66  |wftypes.h=>drawf|
0002ab40  74 79 70 65 73 3e 20 61  73 20 61 20 74 79 70 65  |types> as a type|
0002ab50  20 63 61 70 61 62 6c 65  20 6f 66 20 68 6f 6c 64  | capable of hold|
0002ab60  69 6e 67 20 61 20 66 6f  6e 74 20 74 61 62 6c 65  |ing a font table|
0002ab70  20 6f 62 6a 65 63 74 20  68 65 61 64 65 72 2e 20  | object header. |
0002ab80  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It is defined as|
0002ab90  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 73  | the following s|
0002aba0  74 72 75 63 74 75 72 65  3a 0a 0a 20 09 5c 7b 0a  |tructure:.. .\{.|
0002abb0  20 09 20 09 3c 64 72 61  77 5f 74 61 67 74 79 70  | . .<draw_tagtyp|
0002abc0  3e 09 74 61 67 3b 09 2f  2a 20 4f 62 6a 65 63 74  |>.tag;./* Object|
0002abd0  20 74 79 70 65 20 3d 20  30 20 2a 2f 0a 20 09 20  | type = 0 */. . |
0002abe0  09 3c 64 72 61 77 5f 73  69 7a 65 74 79 70 3e 09  |.<draw_sizetyp>.|
0002abf0  73 69 7a 65 3b 09 2f 2a  20 4d 75 6c 74 69 70 6c  |size;./* Multipl|
0002ac00  65 20 6f 66 20 34 20 2a  2f 0a 20 09 7d 00 00 00  |e of 4 */. .}...|
0002ac10  44 41 54 41 98 00 00 00  64 72 61 77 5f 66 6f 6e  |DATA....draw_fon|
0002ac20  74 72 65 66 0a 54 68 69  73 20 74 79 70 65 20 69  |tref.This type i|
0002ac30  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 64 72  |s defined in <dr|
0002ac40  61 77 66 74 79 70 65 73  2e 68 3d 3e 64 72 61 77  |awftypes.h=>draw|
0002ac50  66 74 79 70 65 73 3e 20  61 73 20 61 20 74 79 70  |ftypes> as a typ|
0002ac60  65 20 63 61 70 61 62 6c  65 20 6f 66 20 68 6f 6c  |e capable of hol|
0002ac70  64 69 6e 67 20 61 20 66  6f 6e 74 20 72 65 66 65  |ding a font refe|
0002ac80  72 65 6e 63 65 20 6e 75  6d 62 65 72 2e 20 49 74  |rence number. It|
0002ac90  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 20 61  | is defined as a|
0002aca0  20 2f 63 68 61 72 2f 2e  44 41 54 41 ab 00 00 00  | /char/.DATA....|
0002acb0  64 72 61 77 5f 66 6f 6e  74 73 69 7a 65 0a 54 68  |draw_fontsize.Th|
0002acc0  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
0002acd0  65 64 20 69 6e 20 3c 64  72 61 77 66 74 79 70 65  |ed in <drawftype|
0002ace0  73 2e 68 3d 3e 64 72 61  77 66 74 79 70 65 73 3e  |s.h=>drawftypes>|
0002acf0  20 61 73 20 61 20 74 79  70 65 20 63 61 70 61 62  | as a type capab|
0002ad00  6c 65 20 6f 66 20 68 6f  6c 64 69 6e 67 20 61 20  |le of holding a |
0002ad10  66 6f 6e 74 20 73 69 7a  65 20 76 61 6c 75 65 20  |font size value |
0002ad20  69 6e 20 31 2f 36 34 30  20 70 6f 69 6e 74 2e 20  |in 1/640 point. |
0002ad30  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It is defined as|
0002ad40  20 61 6e 20 2f 75 6e 73  69 67 6e 65 64 20 69 6e  | an /unsigned in|
0002ad50  74 2f 2e 00 44 41 54 41  2d 01 00 00 64 72 61 77  |t/..DATA-...draw|
0002ad60  5f 66 72 65 65 0a 54 68  69 73 20 74 79 70 65 20  |_free.This type |
0002ad70  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 64  |is defined in <d|
0002ad80  72 61 77 66 64 69 61 67  2e 68 3d 3e 64 72 61 77  |rawfdiag.h=>draw|
0002ad90  66 64 69 61 67 3e 2e 20  49 74 20 69 73 20 61 20  |fdiag>. It is a |
0002ada0  66 75 6e 63 74 69 6f 6e  20 75 73 65 64 20 74 6f  |function used to|
0002adb0  20 66 72 65 65 20 6d 65  6d 6f 72 79 20 77 69 74  | free memory wit|
0002adc0  68 20 70 72 6f 74 6f 74  79 70 65 20 61 73 20 66  |h prototype as f|
0002add0  6f 6c 6c 6f 77 73 3a 0a  7b 77 72 61 70 20 6f 66  |ollows:.{wrap of|
0002ade0  66 7d 0a 7b 66 43 6f 64  65 3b 61 6c 69 67 6e 20  |f}.{fCode;align |
0002adf0  63 65 6e 74 72 65 7d 76  6f 69 64 20 6d 79 66 75  |centre}void myfu|
0002ae00  6e 63 20 28 76 6f 69 64  20 2a 2a 61 6e 63 68 6f  |nc (void **ancho|
0002ae10  72 29 3b 7b 66 3b 61 6c  69 67 6e 3b 77 72 61 70  |r);{f;align;wrap|
0002ae20  7d 0a 0a 54 68 69 73 20  73 68 6f 75 6c 64 20 66  |}..This should f|
0002ae30  72 65 65 20 74 68 65 20  62 6c 6f 63 6b 20 6f 66  |ree the block of|
0002ae40  20 6d 65 6d 6f 72 79 20  77 68 69 63 68 20 73 74  | memory which st|
0002ae50  61 72 74 73 20 61 74 20  7b 2f 7d 2a 61 6e 63 68  |arts at {/}*anch|
0002ae60  6f 72 7b 2f 7d 20 61 6e  64 20 73 65 74 20 7b 2f  |or{/} and set {/|
0002ae70  7d 2a 61 6e 63 68 6f 72  7b 2f 7d 20 74 6f 20 30  |}*anchor{/} to 0|
0002ae80  2e 00 00 00 44 41 54 41  c3 00 00 00 64 72 61 77  |....DATA....draw|
0002ae90  5f 67 72 6f 75 70 6e 61  6d 65 74 79 70 0a 54 68  |_groupnametyp.Th|
0002aea0  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
0002aeb0  65 64 20 69 6e 20 3c 64  72 61 77 66 74 79 70 65  |ed in <drawftype|
0002aec0  73 2e 68 3d 3e 64 72 61  77 66 74 79 70 65 73 3e  |s.h=>drawftypes>|
0002aed0  20 61 73 20 61 20 74 79  70 65 20 63 61 70 61 62  | as a type capab|
0002aee0  6c 65 20 6f 66 20 68 6f  6c 64 69 6e 67 20 61 20  |le of holding a |
0002aef0  67 72 6f 75 70 20 6f 62  6a 65 63 74 20 6e 61 6d  |group object nam|
0002af00  65 2e 20 49 74 20 69 73  20 64 65 66 69 6e 65 64  |e. It is defined|
0002af10  20 61 73 20 74 68 65 20  66 6f 6c 6c 6f 77 69 6e  | as the followin|
0002af20  67 20 73 74 72 75 63 74  75 72 65 3a 0a 0a 20 20  |g structure:..  |
0002af30  5c 7b 0a 20 20 20 20 63  68 61 72 20 63 68 5b 31  |\{.    char ch[1|
0002af40  32 5d 3b 0a 20 20 7d 00  44 41 54 41 1a 01 00 00  |2];.  }.DATA....|
0002af50  64 72 61 77 5f 67 72 6f  75 73 74 72 0a 54 68 69  |draw_groustr.Thi|
0002af60  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
0002af70  64 20 69 6e 20 3c 64 72  61 77 66 74 79 70 65 73  |d in <drawftypes|
0002af80  2e 68 3d 3e 64 72 61 77  66 74 79 70 65 73 3e 20  |.h=>drawftypes> |
0002af90  61 73 20 61 20 74 79 70  65 20 63 6f 6e 74 61 69  |as a type contai|
0002afa0  6e 69 6e 67 20 61 20 67  72 6f 75 70 20 6f 62 6a  |ning a group obj|
0002afb0  65 63 74 2e 20 49 74 20  69 73 20 64 65 66 69 6e  |ect. It is defin|
0002afc0  65 64 20 61 73 20 74 68  65 20 66 6f 6c 6c 6f 77  |ed as the follow|
0002afd0  69 6e 67 20 73 74 72 75  63 74 75 72 65 3a 0a 0a  |ing structure:..|
0002afe0  20 09 5c 7b 0a 20 09 20  09 3c 64 72 61 77 5f 74  | .\{. . .<draw_t|
0002aff0  61 67 74 79 70 3e 09 74  61 67 3b 20 20 20 20 20  |agtyp>.tag;     |
0002b000  2f 2a 20 74 61 67 20 3d  3d 20 36 20 2a 2f 0a 20  |/* tag == 6 */. |
0002b010  09 20 09 3c 64 72 61 77  5f 73 69 7a 65 74 79 70  |. .<draw_sizetyp|
0002b020  3e 09 73 69 7a 65 3b 0a  20 09 20 09 3c 64 72 61  |>.size;. . .<dra|
0002b030  77 5f 62 62 6f 78 74 79  70 3e 09 62 62 6f 78 3b  |w_bboxtyp>.bbox;|
0002b040  0a 20 09 20 09 3c 64 72  61 77 5f 67 72 6f 75 70  |. . .<draw_group|
0002b050  6e 61 6d 65 74 79 70 3e  09 6e 61 6d 65 3b 0a 20  |nametyp>.name;. |
0002b060  09 7d 00 00 44 41 54 41  68 01 00 00 64 72 61 77  |.}..DATAh...draw|
0002b070  5f 6a 6f 69 6e 74 73 70  65 63 0a 54 68 69 73 20  |_jointspec.This |
0002b080  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
0002b090  69 6e 20 3c 64 72 61 77  66 74 79 70 65 73 2e 68  |in <drawftypes.h|
0002b0a0  3d 3e 64 72 61 77 66 74  79 70 65 73 3e 20 61 73  |=>drawftypes> as|
0002b0b0  20 61 20 74 79 70 65 20  63 6f 6e 74 61 69 6e 69  | a type containi|
0002b0c0  6e 67 20 70 61 74 68 20  73 74 79 6c 65 20 69 6e  |ng path style in|
0002b0d0  66 6f 72 6d 61 74 69 6f  6e 2e 20 49 74 20 69 73  |formation. It is|
0002b0e0  20 64 65 66 69 6e 65 64  20 61 73 20 74 68 65 20  | defined as the |
0002b0f0  66 6f 6c 6c 6f 77 69 6e  67 20 73 74 72 75 63 74  |following struct|
0002b100  75 72 65 3a 0a 0a 20 09  5c 7b 0a 20 09 20 09 63  |ure:.. .\{. . .c|
0002b110  68 61 72 09 6a 6f 69 6e  3b 0a 20 09 20 09 63 68  |har.join;. . .ch|
0002b120  61 72 09 65 6e 64 63 61  70 3b 0a 20 09 20 09 63  |ar.endcap;. . .c|
0002b130  68 61 72 09 73 74 61 72  74 63 61 70 3b 0a 20 09  |har.startcap;. .|
0002b140  20 09 63 68 61 72 09 72  65 73 65 72 76 65 64 3b  | .char.reserved;|
0002b150  0a 20 09 20 09 69 6e 74  09 6d 69 74 72 65 6c 69  |. . .int.mitreli|
0002b160  6d 69 74 3b 0a 20 09 20  09 73 68 6f 72 74 09 65  |mit;. . .short.e|
0002b170  6e 64 74 72 69 63 61 70  77 69 64 3b 0a 20 09 20  |ndtricapwid;. . |
0002b180  09 73 68 6f 72 74 09 65  6e 64 74 72 69 63 61 70  |.short.endtricap|
0002b190  68 65 69 3b 0a 20 09 20  09 73 68 6f 72 74 09 73  |hei;. . .short.s|
0002b1a0  74 61 72 74 74 72 69 63  61 70 77 69 64 3b 0a 20  |tarttricapwid;. |
0002b1b0  09 20 09 73 68 6f 72 74  09 73 74 61 72 74 74 72  |. .short.starttr|
0002b1c0  69 63 61 70 68 65 69 3b  0a 20 09 7d 44 41 54 41  |icaphei;. .}DATA|
0002b1d0  c3 00 00 00 64 72 61 77  5f 6a 6f 69 6e 74 79 70  |....draw_jointyp|
0002b1e0  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
0002b1f0  66 69 6e 65 64 20 69 6e  20 3c 64 72 61 77 66 74  |fined in <drawft|
0002b200  79 70 65 73 2e 68 3d 3e  64 72 61 77 66 74 79 70  |ypes.h=>drawftyp|
0002b210  65 73 3e 20 61 73 20 61  6e 20 65 6e 75 6d 65 72  |es> as an enumer|
0002b220  61 74 65 64 20 74 79 70  65 20 64 65 73 63 72 69  |ated type descri|
0002b230  62 69 6e 67 20 61 20 70  61 74 68 20 6a 6f 69 6e  |bing a path join|
0002b240  20 74 79 70 65 3a 0a 0a  20 09 5c 7b 0a 20 09 20  | type:.. .\{. . |
0002b250  09 6a 6f 69 6e 5f 6d 69  74 72 65 64 09 3d 20 30  |.join_mitred.= 0|
0002b260  2c 0a 20 09 20 09 6a 6f  69 6e 5f 72 6f 75 6e 64  |,. . .join_round|
0002b270  09 3d 20 31 2c 0a 20 09  20 09 6a 6f 69 6e 5f 62  |.= 1,. . .join_b|
0002b280  65 76 65 6c 6c 65 64 09  3d 20 32 0a 20 09 7d 00  |evelled.= 2. .}.|
0002b290  44 41 54 41 d9 00 00 00  64 72 61 77 5f 4c 61 73  |DATA....draw_Las|
0002b2a0  74 4f 62 6a 65 63 74 0a  54 68 69 73 20 6d 61 63  |tObject.This mac|
0002b2b0  72 6f 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |ro is defined in|
0002b2c0  20 3c 64 72 61 77 66 6f  62 6a 2e 68 3d 3e 64 72  | <drawfobj.h=>dr|
0002b2d0  61 77 66 6f 62 6a 3e 2e  20 49 74 20 69 73 20 61  |awfobj>. It is a|
0002b2e0  20 73 79 6d 62 6f 6c 69  63 20 63 6f 64 65 20 75  | symbolic code u|
0002b2f0  73 65 64 20 62 79 20 66  75 6e 63 74 69 6f 6e 73  |sed by functions|
0002b300  20 74 68 61 74 20 6f 70  65 72 61 74 65 20 6f 6e  | that operate on|
0002b310  20 61 20 72 61 6e 67 65  20 6f 66 20 6f 62 6a 65  | a range of obje|
0002b320  63 74 73 20 61 6e 64 20  68 61 73 20 74 68 65 20  |cts and has the |
0002b330  6d 65 61 6e 69 6e 67 20  27 74 6f 20 74 68 65 20  |meaning 'to the |
0002b340  65 6e 64 27 2e 20 49 74  20 69 73 20 64 65 66 69  |end'. It is defi|
0002b350  6e 65 64 20 61 73 20 28  3c 64 72 61 77 5f 6f 62  |ned as (<draw_ob|
0002b360  6a 65 63 74 3e 29 2d 32  2e 00 00 00 44 41 54 41  |ject>)-2....DATA|
0002b370  96 00 00 00 64 72 61 77  5f 4e 6f 4f 62 6a 65 63  |....draw_NoObjec|
0002b380  74 0a 54 68 69 73 20 6d  61 63 72 6f 20 69 73 20  |t.This macro is |
0002b390  64 65 66 69 6e 65 64 20  69 6e 20 3c 64 72 61 77  |defined in <draw|
0002b3a0  66 6f 62 6a 2e 68 3d 3e  64 72 61 77 66 6f 62 6a  |fobj.h=>drawfobj|
0002b3b0  3e 2e 20 49 74 20 69 73  20 61 20 73 79 6d 62 6f  |>. It is a symbo|
0002b3c0  6c 69 63 20 63 6f 64 65  20 66 6f 72 20 6e 6f 20  |lic code for no |
0002b3d0  6f 62 6a 65 63 74 20 61  6e 64 20 69 73 20 64 65  |object and is de|
0002b3e0  66 69 6e 65 64 20 61 73  20 7b 2f 7d 28 3c 64 72  |fined as {/}(<dr|
0002b3f0  61 77 5f 6f 62 6a 65 63  74 3e 29 20 2d 31 7b 2f  |aw_object>) -1{/|
0002b400  7d 2e 00 00 44 41 54 41  bd 00 00 00 64 72 61 77  |}...DATA....draw|
0002b410  5f 6f 62 6a 63 6f 6f 72  64 0a 54 68 69 73 20 74  |_objcoord.This t|
0002b420  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
0002b430  6e 20 3c 64 72 61 77 66  74 79 70 65 73 2e 68 3d  |n <drawftypes.h=|
0002b440  3e 64 72 61 77 66 74 79  70 65 73 3e 20 61 73 20  |>drawftypes> as |
0002b450  61 20 74 79 70 65 20 63  61 70 61 62 6c 65 20 6f  |a type capable o|
0002b460  66 20 68 6f 6c 64 69 6e  67 20 61 6e 20 6f 62 6a  |f holding an obj|
0002b470  65 63 74 20 63 6f 6f 72  64 69 6e 61 74 65 2e 20  |ect coordinate. |
0002b480  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It is defined as|
0002b490  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 73  | the following s|
0002b4a0  74 72 75 63 74 75 72 65  3a 0a 0a 20 09 5c 7b 0a  |tructure:.. .\{.|
0002b4b0  20 09 20 09 69 6e 74 20  78 2c 20 79 3b 0a 20 09  | . .int x, y;. .|
0002b4c0  7d 00 00 00 44 41 54 41  a2 00 00 00 64 72 61 77  |}...DATA....draw|
0002b4d0  5f 6f 62 6a 65 63 74 0a  54 68 69 73 20 74 79 70  |_object.This typ|
0002b4e0  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
0002b4f0  3c 64 72 61 77 66 64 69  61 67 2e 68 3d 3e 64 72  |<drawfdiag.h=>dr|
0002b500  61 77 66 64 69 61 67 3e  2e 20 49 74 20 69 73 20  |awfdiag>. It is |
0002b510  61 6e 20 6f 66 66 73 65  74 20 66 72 6f 6d 20 74  |an offset from t|
0002b520  68 65 20 73 74 61 72 74  20 6f 66 20 74 68 65 20  |he start of the |
0002b530  64 69 61 67 72 61 6d 20  74 6f 20 74 68 65 20 6f  |diagram to the o|
0002b540  62 6a 65 63 74 20 64 61  74 61 2e 20 49 74 20 69  |bject data. It i|
0002b550  73 20 64 65 66 69 6e 65  64 20 61 73 20 61 6e 20  |s defined as an |
0002b560  2f 69 6e 74 2f 2e 00 00  44 41 54 41 ad 01 00 00  |/int/...DATA....|
0002b570  64 72 61 77 5f 6f 62 6a  65 63 74 54 79 70 65 0a  |draw_objectType.|
0002b580  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
0002b590  69 6e 65 64 20 69 6e 20  3c 64 72 61 77 66 6f 62  |ined in <drawfob|
0002b5a0  6a 2e 68 3d 3e 64 72 61  77 66 6f 62 6a 3e 2e 20  |j.h=>drawfobj>. |
0002b5b0  49 74 20 69 73 0a 64 65  66 69 6e 65 64 20 61 73  |It is.defined as|
0002b5c0  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 75  | the following u|
0002b5d0  6e 69 6f 6e 2c 20 75 73  65 64 20 66 6f 72 0a 6f  |nion, used for.o|
0002b5e0  70 65 72 61 74 69 6f 6e  20 6f 6e 20 63 6f 6d 70  |peration on comp|
0002b5f0  6c 65 74 65 20 6f 62 6a  65 63 74 73 3a 0a 0a 20  |lete objects:.. |
0002b600  09 5c 7b 0a 20 09 20 09  3c 64 72 61 77 5f 6f 62  |.\{. . .<draw_ob|
0002b610  6a 68 64 72 3e 09 2a 6f  62 6a 65 63 74 3b 0a 20  |jhdr>.*object;. |
0002b620  09 20 09 3c 64 72 61 77  5f 66 69 6c 65 68 65 61  |. .<draw_filehea|
0002b630  64 65 72 3e 09 2a 66 69  6c 65 48 65 61 64 65 72  |der>.*fileHeader|
0002b640  3b 0a 20 09 20 09 3c 64  72 61 77 5f 66 6f 6e 74  |;. . .<draw_font|
0002b650  6c 69 73 74 73 74 72 3e  09 2a 66 6f 6e 74 4c 69  |liststr>.*fontLi|
0002b660  73 74 3b 0a 20 09 20 09  3c 64 72 61 77 5f 74 65  |st;. . .<draw_te|
0002b670  78 74 73 74 72 3e 09 2a  74 65 78 74 3b 0a 20 09  |xtstr>.*text;. .|
0002b680  20 09 3c 64 72 61 77 5f  70 61 74 68 73 74 72 3e  | .<draw_pathstr>|
0002b690  09 2a 70 61 74 68 3b 0a  20 09 20 09 3c 64 72 61  |.*path;. . .<dra|
0002b6a0  77 5f 73 70 72 69 73 74  72 3e 09 2a 73 70 72 69  |w_spristr>.*spri|
0002b6b0  74 65 3b 0a 20 09 20 09  3c 64 72 61 77 5f 67 72  |te;. . .<draw_gr|
0002b6c0  6f 75 73 74 72 3e 09 2a  67 72 6f 75 70 3b 0a 20  |oustr>.*group;. |
0002b6d0  09 20 09 3c 64 72 61 77  5f 74 65 78 74 61 72 65  |. .<draw_textare|
0002b6e0  61 68 64 72 3e 09 2a 74  65 78 74 61 72 65 61 3b  |ahdr>.*textarea;|
0002b6f0  0a 20 09 20 09 63 68 61  72 09 2a 62 79 74 65 70  |. . .char.*bytep|
0002b700  3b 0a 20 09 20 09 69 6e  74 09 2a 77 6f 72 64 70  |;. . .int.*wordp|
0002b710  3b 0a 20 09 7d 00 00 00  44 41 54 41 19 01 00 00  |;. .}...DATA....|
0002b720  64 72 61 77 5f 6f 62 6a  68 64 72 0a 54 68 69 73  |draw_objhdr.This|
0002b730  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
0002b740  20 69 6e 20 3c 64 72 61  77 66 74 79 70 65 73 2e  | in <drawftypes.|
0002b750  68 3d 3e 64 72 61 77 66  74 79 70 65 73 3e 20 61  |h=>drawftypes> a|
0002b760  73 20 61 20 74 79 70 65  20 63 61 70 61 62 6c 65  |s a type capable|
0002b770  20 6f 66 20 68 6f 6c 64  69 6e 67 20 61 20 6f 62  | of holding a ob|
0002b780  6a 65 63 74 20 68 65 61  64 65 72 2e 20 49 74 20  |ject header. It |
0002b790  69 73 20 64 65 66 69 6e  65 64 20 61 73 20 74 68  |is defined as th|
0002b7a0  65 20 66 6f 6c 6c 6f 77  69 6e 67 20 73 74 72 75  |e following stru|
0002b7b0  63 74 75 72 65 3a 0a 0a  20 09 5c 7b 0a 20 09 20  |cture:.. .\{. . |
0002b7c0  09 3c 64 72 61 77 5f 74  61 67 74 79 70 65 3e 09  |.<draw_tagtype>.|
0002b7d0  74 61 67 3b 09 2f 2a 20  4f 62 6a 65 63 74 20 74  |tag;./* Object t|
0002b7e0  79 70 65 20 2a 2f 0a 20  09 20 09 3c 64 72 61 77  |ype */. . .<draw|
0002b7f0  5f 73 69 7a 65 74 79 70  3e 09 73 69 7a 65 3b 09  |_sizetyp>.size;.|
0002b800  2f 2a 20 4d 75 6c 74 69  70 6c 65 20 6f 66 20 34  |/* Multiple of 4|
0002b810  20 2a 2f 0a 20 09 20 09  3c 64 72 61 77 5f 62 62  | */. . .<draw_bb|
0002b820  6f 78 74 79 70 3e 09 62  62 6f 78 3b 09 0a 20 09  |oxtyp>.bbox;.. .|
0002b830  7d 00 00 00 44 41 54 41  87 01 00 00 64 72 61 77  |}...DATA....draw|
0002b840  5f 70 61 74 68 5f 74 61  67 74 79 70 65 0a 54 68  |_path_tagtype.Th|
0002b850  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
0002b860  65 64 20 69 6e 20 3c 64  72 61 77 66 74 79 70 65  |ed in <drawftype|
0002b870  73 2e 68 3d 3e 64 72 61  77 66 74 79 70 65 73 3e  |s.h=>drawftypes>|
0002b880  20 61 73 20 61 6e 0a 65  6e 75 6d 65 72 61 74 65  | as an.enumerate|
0002b890  64 20 74 79 70 65 20 63  6f 6e 74 61 69 6e 69 6e  |d type containin|
0002b8a0  67 20 61 20 74 61 67 20  69 6e 64 65 6e 74 69 66  |g a tag indentif|
0002b8b0  69 65 72 0a 77 69 74 68  69 6e 20 61 20 70 61 74  |ier.within a pat|
0002b8c0  68 20 6f 62 6a 65 63 74  2e 20 49 74 20 69 73 20  |h object. It is |
0002b8d0  64 65 66 69 6e 65 64 20  61 73 3a 0a 0a 20 09 5c  |defined as:.. .\|
0002b8e0  7b 0a 20 09 20 09 64 72  61 77 5f 50 61 74 68 54  |{. . .draw_PathT|
0002b8f0  45 52 4d 09 3d 20 30 2c  09 2f 2a 20 65 6e 64 20  |ERM.= 0,./* end |
0002b900  6f 66 20 70 61 74 68 20  2a 2f 0a 20 09 20 09 64  |of path */. . .d|
0002b910  72 61 77 5f 50 61 74 68  4d 4f 56 45 09 3d 20 32  |raw_PathMOVE.= 2|
0002b920  2c 09 2f 2a 20 6d 6f 76  65 20 74 6f 20 28 78 2c  |,./* move to (x,|
0002b930  79 29 20 2a 2f 0a 20 09  20 09 64 72 61 77 5f 50  |y) */. . .draw_P|
0002b940  61 74 68 4c 49 4e 45 09  3d 20 38 2c 09 2f 2a 20  |athLINE.= 8,./* |
0002b950  64 72 61 77 20 74 6f 20  28 78 2c 79 29 20 2a 2f  |draw to (x,y) */|
0002b960  0a 20 09 20 09 64 72 61  77 5f 50 61 74 68 43 55  |. . .draw_PathCU|
0002b970  52 56 45 09 3d 20 36 2c  09 2f 2a 20 62 65 7a 69  |RVE.= 6,./* bezi|
0002b980  65 72 20 63 75 72 76 65  20 2a 2f 0a 20 09 20 09  |er curve */. . .|
0002b990  64 72 61 77 5f 50 61 74  68 43 4c 4f 53 45 09 3d  |draw_PathCLOSE.=|
0002b9a0  20 35 2c 09 2f 2a 20 63  6c 6f 73 65 20 73 75 62  | 5,./* close sub|
0002b9b0  70 61 74 68 20 2a 2f 0a  20 09 7d 00 44 41 54 41  |path */. .}.DATA|
0002b9c0  aa 01 00 00 64 72 61 77  5f 70 61 74 68 73 74 72  |....draw_pathstr|
0002b9d0  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
0002b9e0  66 69 6e 65 64 20 69 6e  20 3c 64 72 61 77 66 74  |fined in <drawft|
0002b9f0  79 70 65 73 2e 68 3d 3e  64 72 61 77 66 74 79 70  |ypes.h=>drawftyp|
0002ba00  65 73 3e 20 61 73 20 61  20 74 79 70 65 20 63 6f  |es> as a type co|
0002ba10  6e 74 61 69 6e 69 6e 67  20 61 20 70 61 74 68 20  |ntaining a path |
0002ba20  6f 62 6a 65 63 74 2e 20  49 74 20 69 73 20 64 65  |object. It is de|
0002ba30  66 69 6e 65 64 20 61 73  20 74 68 65 20 66 6f 6c  |fined as the fol|
0002ba40  6c 6f 77 69 6e 67 20 73  74 72 75 63 74 75 72 65  |lowing structure|
0002ba50  3a 0a 0a 20 09 5c 7b 0a  20 09 20 09 3c 64 72 61  |:.. .\{. . .<dra|
0002ba60  77 5f 74 61 67 74 79 70  3e 09 74 61 67 3b 0a 20  |w_tagtyp>.tag;. |
0002ba70  09 20 09 3c 64 72 61 77  5f 73 69 7a 65 74 79 70  |. .<draw_sizetyp|
0002ba80  3e 09 73 69 7a 65 3b 0a  20 09 20 09 3c 64 72 61  |>.size;. . .<dra|
0002ba90  77 5f 62 62 6f 78 74 79  70 3e 09 62 62 6f 78 3b  |w_bboxtyp>.bbox;|
0002baa0  0a 20 09 20 09 3c 64 72  61 77 5f 63 6f 6c 74 79  |. . .<draw_colty|
0002bab0  70 3e 09 20 66 69 6c 6c  63 6f 6c 6f 75 72 3b 0a  |p>. fillcolour;.|
0002bac0  20 09 20 09 3c 64 72 61  77 5f 63 6f 6c 74 79 70  | . .<draw_coltyp|
0002bad0  3e 09 70 61 74 68 63 6f  6c 6f 75 72 3b 0a 20 09  |>.pathcolour;. .|
0002bae0  20 09 3c 64 72 61 77 5f  70 61 74 68 77 69 64 74  | .<draw_pathwidt|
0002baf0  68 3e 09 70 61 74 68 77  69 64 74 68 3b 0a 20 09  |h>.pathwidth;. .|
0002bb00  20 09 3c 64 72 61 77 5f  70 61 74 68 73 74 79 6c  | .<draw_pathstyl|
0002bb10  65 3e 09 70 61 74 68 73  74 79 6c 65 3b 0a 20 09  |e>.pathstyle;. .|
0002bb20  20 09 3c 64 72 61 77 5f  64 61 73 68 73 74 72 3e  | .<draw_dashstr>|
0002bb30  09 64 61 74 61 3b 09 2f  2a 20 6f 70 74 69 6f 6e  |.data;./* option|
0002bb40  61 6c 20 2a 2f 0a 20 09  20 09 69 6e 74 09 50 41  |al */. . .int.PA|
0002bb50  54 48 3b 09 2f 2a 20 3f  21 3f 21 3f 21 3f 21 20  |TH;./* ?!?!?!?! |
0002bb60  2a 2f 0a 20 09 7d 00 00  44 41 54 41 8b 01 00 00  |*/. .}..DATA....|
0002bb70  64 72 61 77 5f 70 61 74  68 73 74 72 68 64 72 0a  |draw_pathstrhdr.|
0002bb80  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
0002bb90  69 6e 65 64 20 69 6e 20  3c 64 72 61 77 66 74 79  |ined in <drawfty|
0002bba0  70 65 73 2e 68 3d 3e 64  72 61 77 66 74 79 70 65  |pes.h=>drawftype|
0002bbb0  73 3e 20 61 73 20 61 20  74 79 70 65 20 63 6f 6e  |s> as a type con|
0002bbc0  74 61 69 6e 69 6e 67 20  61 20 70 61 74 68 20 6f  |taining a path o|
0002bbd0  62 6a 65 63 74 2c 20 77  69 74 68 6f 75 74 20 74  |bject, without t|
0002bbe0  68 65 20 61 63 74 75 61  6c 20 70 61 74 68 20 63  |he actual path c|
0002bbf0  6f 6d 70 6f 6e 65 6e 74  73 2e 20 49 74 20 69 73  |omponents. It is|
0002bc00  20 64 65 66 69 6e 65 64  20 61 73 20 74 68 65 20  | defined as the |
0002bc10  66 6f 6c 6c 6f 77 69 6e  67 20 73 74 72 75 63 74  |following struct|
0002bc20  75 72 65 3a 0a 0a 20 09  5c 7b 0a 20 09 20 09 3c  |ure:.. .\{. . .<|
0002bc30  64 72 61 77 5f 74 61 67  74 79 70 3e 09 74 61 67  |draw_tagtyp>.tag|
0002bc40  3b 0a 20 09 20 09 3c 64  72 61 77 5f 73 69 7a 65  |;. . .<draw_size|
0002bc50  74 79 70 3e 09 73 69 7a  65 3b 0a 20 09 20 09 3c  |typ>.size;. . .<|
0002bc60  64 72 61 77 5f 62 62 6f  78 74 79 70 3e 09 62 62  |draw_bboxtyp>.bb|
0002bc70  6f 78 3b 0a 20 09 20 09  3c 64 72 61 77 5f 63 6f  |ox;. . .<draw_co|
0002bc80  6c 74 79 70 3e 09 66 69  6c 6c 63 6f 6c 6f 75 72  |ltyp>.fillcolour|
0002bc90  3b 0a 20 09 20 09 3c 64  72 61 77 5f 63 6f 6c 74  |;. . .<draw_colt|
0002bca0  79 70 3e 09 70 61 74 68  63 6f 6c 6f 75 72 3b 0a  |yp>.pathcolour;.|
0002bcb0  20 09 20 09 3c 64 72 61  77 5f 70 61 74 68 77 69  | . .<draw_pathwi|
0002bcc0  64 74 68 3e 09 70 61 74  68 77 69 64 74 68 3b 0a  |dth>.pathwidth;.|
0002bcd0  20 09 20 09 3c 64 72 61  77 5f 70 61 74 68 73 74  | . .<draw_pathst|
0002bce0  79 6c 65 3e 09 70 61 74  68 73 74 79 6c 65 3b 0a  |yle>.pathstyle;.|
0002bcf0  20 09 7d 00 44 41 54 41  2f 01 00 00 64 72 61 77  | .}.DATA/...draw|
0002bd00  5f 70 61 74 68 73 74 79  6c 65 0a 54 68 69 73 20  |_pathstyle.This |
0002bd10  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
0002bd20  69 6e 20 3c 64 72 61 77  66 74 79 70 65 73 2e 68  |in <drawftypes.h|
0002bd30  3d 3e 64 72 61 77 66 74  79 70 65 73 3e 20 61 73  |=>drawftypes> as|
0002bd40  20 61 20 74 79 70 65 20  63 61 70 61 62 6c 65 20  | a type capable |
0002bd50  6f 66 20 68 6f 6c 64 69  6e 67 20 61 20 70 61 74  |of holding a pat|
0002bd60  68 20 73 74 79 6c 65 20  64 65 73 63 72 69 70 74  |h style descript|
0002bd70  69 6f 6e 20 77 6f 72 64  2e 20 49 74 20 69 73 20  |ion word. It is |
0002bd80  64 65 66 69 6e 65 64 20  61 73 20 74 68 65 20 66  |defined as the f|
0002bd90  6f 6c 6c 6f 77 69 6e 67  20 73 74 72 75 63 74 75  |ollowing structu|
0002bda0  72 65 3a 0a 0a 20 09 5c  7b 0a 20 09 20 09 75 6e  |re:.. .\{. . .un|
0002bdb0  73 69 67 6e 65 64 20 63  68 61 72 20 6a 6f 69 6e  |signed char join|
0002bdc0  63 61 70 77 69 6e 64 3b  0a 20 09 20 09 75 6e 73  |capwind;. . .uns|
0002bdd0  69 67 6e 65 64 20 63 68  61 72 20 72 65 73 65 72  |igned char reser|
0002bde0  76 65 64 38 3b 0a 20 09  20 09 75 6e 73 69 67 6e  |ved8;. . .unsign|
0002bdf0  65 64 20 63 68 61 72 20  74 72 69 63 61 70 77 69  |ed char tricapwi|
0002be00  64 3b 0a 20 09 20 09 75  6e 73 69 67 6e 65 64 20  |d;. . .unsigned |
0002be10  63 68 61 72 20 74 72 69  63 61 70 68 65 69 3b 0a  |char tricaphei;.|
0002be20  20 09 7d 00 44 41 54 41  90 00 00 00 64 72 61 77  | .}.DATA....draw|
0002be30  5f 70 61 74 68 77 69 64  74 68 0a 54 68 69 73 20  |_pathwidth.This |
0002be40  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
0002be50  69 6e 20 3c 64 72 61 77  66 74 79 70 65 73 2e 68  |in <drawftypes.h|
0002be60  3d 3e 64 72 61 77 66 74  79 70 65 73 3e 20 61 73  |=>drawftypes> as|
0002be70  20 61 20 74 79 70 65 20  63 61 70 61 62 6c 65 20  | a type capable |
0002be80  6f 66 20 68 6f 6c 64 69  6e 67 20 61 20 77 69 64  |of holding a wid|
0002be90  74 68 20 76 61 6c 75 65  2e 20 49 74 20 69 73 20  |th value. It is |
0002bea0  64 65 66 69 6e 65 64 20  61 73 20 61 6e 20 2f 69  |defined as an /i|
0002beb0  6e 74 2f 2e 44 41 54 41  29 01 00 00 64 72 61 77  |nt/.DATA)...draw|
0002bec0  5f 71 75 65 72 79 62 6f  78 0a 53 79 6e 74 61 78  |_querybox.Syntax|
0002bed0  3a 09 76 6f 69 64 20 64  72 61 77 5f 71 75 65 72  |:.void draw_quer|
0002bee0  79 62 6f 78 20 28 3c 64  72 61 77 5f 64 69 61 67  |ybox (<draw_diag|
0002bef0  3e 20 2a 64 69 61 67 2c  20 3c 64 72 61 77 5f 62  |> *diag, <draw_b|
0002bf00  6f 78 3e 20 2a 62 6f 78  2c 20 3c 42 4f 4f 4c 3e  |ox> *box, <BOOL>|
0002bf10  20 73 63 72 65 65 6e 55  6e 69 74 73 29 3b 0a 48  | screenUnits);.H|
0002bf20  65 61 64 65 72 3a 09 3c  64 72 61 77 66 64 69 61  |eader:.<drawfdia|
0002bf30  67 2e 68 3d 3e 64 72 61  77 66 64 69 61 67 3e 0a  |g.h=>drawfdiag>.|
0002bf40  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 66  |.This function f|
0002bf50  69 6e 64 73 20 74 68 65  20 62 6f 75 6e 64 69 6e  |inds the boundin|
0002bf60  67 20 62 6f 78 20 6f 66  20 2f 64 69 61 67 2f 20  |g box of /diag/ |
0002bf70  61 6e 64 20 72 65 74 75  72 6e 73 20 69 74 20 69  |and returns it i|
0002bf80  6e 20 2f 62 6f 78 2f 2e  20 49 66 20 2f 73 63 72  |n /box/. If /scr|
0002bf90  65 65 6e 55 6e 69 74 73  2f 20 69 73 20 3c 54 52  |eenUnits/ is <TR|
0002bfa0  55 45 3e 20 74 68 65 6e  20 74 68 65 20 62 6f 78  |UE> then the box|
0002bfb0  20 69 73 20 69 6e 20 73  63 72 65 65 6e 20 75 6e  | is in screen un|
0002bfc0  69 74 73 20 65 6c 73 65  20 69 74 20 69 73 20 69  |its else it is i|
0002bfd0  6e 20 64 72 61 77 20 75  6e 69 74 73 2e 00 00 00  |n draw units....|
0002bfe0  44 41 54 41 1d 01 00 00  64 72 61 77 5f 72 65 62  |DATA....draw_reb|
0002bff0  69 6e 64 5f 64 69 61 67  0a 53 79 6e 74 61 78 3a  |ind_diag.Syntax:|
0002c000  09 76 6f 69 64 20 64 72  61 77 5f 72 65 62 69 6e  |.void draw_rebin|
0002c010  64 5f 64 69 61 67 20 28  3c 64 72 61 77 5f 64 69  |d_diag (<draw_di|
0002c020  61 67 3e 20 2a 64 69 61  67 29 3b 0a 48 65 61 64  |ag> *diag);.Head|
0002c030  65 72 3a 09 3c 64 72 61  77 66 64 69 61 67 2e 68  |er:.<drawfdiag.h|
0002c040  3d 3e 64 72 61 77 66 64  69 61 67 3e 0a 0a 54 68  |=>drawfdiag>..Th|
0002c050  69 73 20 66 75 6e 63 74  69 6f 6e 20 66 6f 72 63  |is function forc|
0002c060  65 73 20 74 68 65 20 68  65 61 64 65 72 20 6f 66  |es the header of|
0002c070  20 61 20 64 69 61 67 72  61 6d 27 73 20 62 6f 75  | a diagram's bou|
0002c080  6e 64 69 6e 67 20 62 6f  78 20 74 6f 20 62 65 20  |nding box to be |
0002c090  65 78 61 63 74 6c 79 20  74 68 65 20 75 6e 69 6f  |exactly the unio|
0002c0a0  6e 20 6f 66 20 74 68 65  20 6f 62 6a 65 63 74 73  |n of the objects|
0002c0b0  20 69 6e 20 69 74 2e 20  54 68 65 20 64 69 61 67  | in it. The diag|
0002c0c0  72 61 6d 20 73 68 6f 75  6c 64 20 68 61 76 65 20  |ram should have |
0002c0d0  62 65 65 6e 20 70 72 6f  63 65 73 73 65 64 20 62  |been processed b|
0002c0e0  79 20 3c 64 72 61 77 5f  76 65 72 69 66 79 5f 64  |y <draw_verify_d|
0002c0f0  69 61 67 3e 28 29 20 66  69 72 73 74 2e 00 00 00  |iag>() first....|
0002c100  44 41 54 41 41 01 00 00  64 72 61 77 5f 72 65 64  |DATAA...draw_red|
0002c110  72 61 77 73 74 72 0a 54  68 69 73 20 74 79 70 65  |rawstr.This type|
0002c120  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
0002c130  64 72 61 77 66 64 69 61  67 2e 68 3d 3e 64 72 61  |drawfdiag.h=>dra|
0002c140  77 66 64 69 61 67 3e 2e  20 49 74 20 69 73 20 61  |wfdiag>. It is a|
0002c150  20 72 65 64 72 61 77 20  73 74 72 75 63 74 75 72  | redraw structur|
0002c160  65 2e 20 49 74 20 69 73  20 74 68 65 20 73 61 6d  |e. It is the sam|
0002c170  65 20 73 74 72 75 63 74  75 72 65 20 61 73 20 61  |e structure as a|
0002c180  20 3c 77 69 6d 70 5f 72  65 64 72 61 77 73 74 72  | <wimp_redrawstr|
0002c190  3e 20 61 6e 64 20 6d 61  79 20 62 65 20 63 61 73  |> and may be cas|
0002c1a0  74 20 66 72 6f 6d 20 6f  6e 65 2e 0a 0a 20 20 5c  |t from one...  \|
0002c1b0  7b 0a 20 20 20 20 69 6e  74 20 20 20 20 20 20 72  |{.    int      r|
0002c1c0  65 73 65 72 76 65 64 3b  09 0a 20 20 20 20 64 72  |eserved;..    dr|
0002c1d0  61 77 5f 62 6f 78 20 62  6f 78 3b 09 2f 2a 20 57  |aw_box box;./* W|
0002c1e0  6f 72 6b 20 61 72 65 61  20 62 6f 78 20 2a 2f 0a  |ork area box */.|
0002c1f0  20 20 20 20 69 6e 74 20  20 20 20 20 20 73 63 78  |    int      scx|
0002c200  2c 20 73 63 79 3b 09 2f  2a 20 53 63 72 6f 6c 6c  |, scy;./* Scroll|
0002c210  20 70 6f 73 20 2a 2f 0a  20 20 20 20 64 72 61 77  | pos */.    draw|
0002c220  5f 62 6f 78 20 67 3b 09  2f 2a 20 47 72 61 70 68  |_box g;./* Graph|
0002c230  69 63 73 20 77 69 6e 64  6f 77 20 2a 2f 0a 20 20  |ics window */.  |
0002c240  7d 00 00 00 44 41 54 41  06 02 00 00 64 72 61 77  |}...DATA....draw|
0002c250  5f 72 65 67 69 73 74 65  72 4d 65 6d 6f 72 79 46  |_registerMemoryF|
0002c260  75 6e 63 74 69 6f 6e 73  0a 53 79 6e 74 61 78 3a  |unctions.Syntax:|
0002c270  09 76 6f 69 64 20 64 72  61 77 5f 72 65 67 69 73  |.void draw_regis|
0002c280  74 65 72 4d 65 6d 6f 72  79 46 75 6e 63 74 69 6f  |terMemoryFunctio|
0002c290  6e 73 20 28 3c 64 72 61  77 5f 61 6c 6c 6f 63 61  |ns (<draw_alloca|
0002c2a0  74 65 3e 20 61 6c 6c 6f  63 2c 20 3c 64 72 61 77  |te> alloc, <draw|
0002c2b0  5f 65 78 74 65 6e 64 3e  20 65 78 74 65 6e 64 2c  |_extend> extend,|
0002c2c0  20 3c 64 72 61 77 5f 66  72 65 65 3e 20 66 72 65  | <draw_free> fre|
0002c2d0  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 64 72 61  |e);.Header:.<dra|
0002c2e0  77 66 64 69 61 67 2e 68  3d 3e 64 72 61 77 66 64  |wfdiag.h=>drawfd|
0002c2f0  69 61 67 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |iag>..This funct|
0002c300  69 6f 6e 20 72 65 67 69  73 74 65 72 73 20 74 68  |ion registers th|
0002c310  72 65 65 20 66 75 6e 63  74 69 6f 6e 73 20 74 6f  |ree functions to|
0002c320  20 62 65 20 75 73 65 64  20 74 6f 20 61 6c 6c 6f  | be used to allo|
0002c330  63 61 74 65 2c 20 65 78  74 65 6e 64 2c 20 61 6e  |cate, extend, an|
0002c340  64 20 66 72 65 65 20 6d  65 6d 6f 72 79 2c 20 77  |d free memory, w|
0002c350  68 65 6e 20 72 65 6e 64  65 72 69 6e 67 20 74 65  |hen rendering te|
0002c360  78 74 20 61 72 65 61 20  6f 62 6a 65 63 74 73 2e  |xt area objects.|
0002c370  20 49 66 20 74 68 69 73  20 66 75 6e 63 74 69 6f  | If this functio|
0002c380  6e 20 69 73 20 6e 6f 74  20 63 61 6c 6c 65 64 20  |n is not called |
0002c390  28 6f 72 20 69 66 20 6d  65 6d 6f 72 79 20 63 61  |(or if memory ca|
0002c3a0  6e 6e 6f 74 20 62 65 20  61 6c 6c 6f 63 61 74 65  |nnot be allocate|
0002c3b0  64 29 20 74 68 65 6e 20  72 65 6e 64 65 72 69 6e  |d) then renderin|
0002c3c0  67 20 61 20 74 65 78 74  20 61 72 65 61 20 77 69  |g a text area wi|
0002c3d0  6c 6c 20 68 61 76 65 20  6e 6f 20 65 66 66 65 63  |ll have no effec|
0002c3e0  74 2e 20 4e 6f 74 65 20  74 68 61 74 20 74 68 65  |t. Note that the|
0002c3f0  20 66 75 6e 63 74 69 6f  6e 73 20 3c 66 6c 65 78  | functions <flex|
0002c400  5f 61 6c 6c 6f 63 3e 2c  20 3c 66 6c 65 78 5f 65  |_alloc>, <flex_e|
0002c410  78 74 65 6e 64 3e 20 61  6e 64 20 3c 66 6c 65 78  |xtend> and <flex|
0002c420  5f 66 72 65 65 3e 20 63  61 6e 20 62 65 20 75 73  |_free> can be us|
0002c430  65 64 20 61 73 20 74 68  65 20 74 68 72 65 65 20  |ed as the three |
0002c440  66 75 6e 63 74 69 6f 6e  73 2e 00 00 44 41 54 41  |functions...DATA|
0002c450  d0 01 00 00 64 72 61 77  5f 72 65 6e 64 65 72 5f  |....draw_render_|
0002c460  64 69 61 67 0a 53 79 6e  74 61 78 3a 09 3c 42 4f  |diag.Syntax:.<BO|
0002c470  4f 4c 3e 20 64 72 61 77  5f 72 65 6e 64 65 72 5f  |OL> draw_render_|
0002c480  64 69 61 67 20 28 3c 64  72 61 77 5f 64 69 61 67  |diag (<draw_diag|
0002c490  3e 20 2a 64 69 61 67 2c  20 3c 64 72 61 77 5f 72  |> *diag, <draw_r|
0002c4a0  65 64 72 61 77 73 74 72  3e 20 2a 72 2c 20 64 6f  |edrawstr> *r, do|
0002c4b0  75 62 6c 65 20 73 63 61  6c 65 2c 20 3c 64 72 61  |uble scale, <dra|
0002c4c0  77 5f 65 72 72 6f 72 3e  20 2a 65 72 72 6f 72 29  |w_error> *error)|
0002c4d0  3b 0a 48 65 61 64 65 72  3a 09 3c 64 72 61 77 66  |;.Header:.<drawf|
0002c4e0  64 69 61 67 2e 68 3d 3e  64 72 61 77 66 64 69 61  |diag.h=>drawfdia|
0002c4f0  67 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 3c 54 52  |g>..Returns:.<TR|
0002c500  55 45 3e 20 69 66 20 73  75 63 63 65 73 73 66 75  |UE> if successfu|
0002c510  6c 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |l...This functio|
0002c520  6e 20 72 65 6e 64 65 72  73 20 74 68 65 20 67 69  |n renders the gi|
0002c530  76 65 6e 20 64 69 61 67  72 61 6d 20 77 69 74 68  |ven diagram with|
0002c540  20 74 68 65 20 67 69 76  65 6e 20 73 63 61 6c 65  | the given scale|
0002c550  20 66 61 63 74 6f 72 2c  20 69 6e 20 61 20 67 69  | factor, in a gi|
0002c560  76 65 6e 20 57 69 6d 70  20 72 65 64 72 61 77 20  |ven Wimp redraw |
0002c570  72 65 63 74 61 6e 67 6c  65 2e 20 54 68 65 20 64  |rectangle. The d|
0002c580  69 61 67 72 61 6d 20 6d  75 73 74 20 68 61 76 65  |iagram must have|
0002c590  20 62 65 65 6e 20 70 72  6f 63 65 73 73 65 64 20  | been processed |
0002c5a0  62 79 20 3c 64 72 61 77  5f 76 65 72 69 66 79 5f  |by <draw_verify_|
0002c5b0  64 69 61 67 3e 28 29 2e  20 56 65 72 79 20 73 6d  |diag>(). Very sm|
0002c5c0  61 6c 6c 20 61 6e 64 20  6e 65 67 61 74 69 76 65  |all and negative|
0002c5d0  20 73 63 61 6c 65 20 66  61 63 74 6f 72 73 20 77  | scale factors w|
0002c5e0  69 6c 6c 20 72 65 73 75  6c 74 20 69 6e 20 61 20  |ill result in a |
0002c5f0  72 75 6e 2d 74 69 6d 65  20 65 72 72 6f 72 2e 20  |run-time error. |
0002c600  2f 73 63 61 6c 65 2f 20  73 68 6f 75 6c 64 20 62  |/scale/ should b|
0002c610  65 20 3e 20 30 2e 30 30  30 30 39 2e 44 41 54 41  |e > 0.00009.DATA|
0002c620  dd 00 00 00 64 72 61 77  5f 73 63 72 65 65 6e 54  |....draw_screenT|
0002c630  6f 44 72 61 77 0a 53 79  6e 74 61 78 3a 09 69 6e  |oDraw.Syntax:.in|
0002c640  74 20 64 72 61 77 5f 73  63 72 65 65 6e 54 6f 44  |t draw_screenToD|
0002c650  72 61 77 20 28 69 6e 74  20 69 29 3b 0a 48 65 61  |raw (int i);.Hea|
0002c660  64 65 72 3a 09 3c 64 72  61 77 66 64 69 61 67 2e  |der:.<drawfdiag.|
0002c670  68 3d 3e 64 72 61 77 66  64 69 61 67 3e 0a 0a 52  |h=>drawfdiag>..R|
0002c680  65 74 75 72 6e 73 3a 09  2f 69 2f 20 69 6e 20 73  |eturns:./i/ in s|
0002c690  63 72 65 65 6e 20 75 6e  69 74 73 2e 0a 0a 54 68  |creen units...Th|
0002c6a0  69 73 20 66 75 6e 63 74  69 6f 6e 2d 6c 69 6b 65  |is function-like|
0002c6b0  20 6d 61 63 72 6f 20 63  6f 6e 76 65 72 74 73 20  | macro converts |
0002c6c0  66 72 6f 6d 20 73 63 72  65 65 6e 20 75 6e 69 74  |from screen unit|
0002c6d0  73 20 74 6f 20 64 72 61  77 20 75 6e 69 74 73 2e  |s to draw units.|
0002c6e0  20 49 74 20 72 65 74 75  72 6e 73 20 28 28 69 29  | It returns ((i)|
0002c6f0  20 5c 3c 5c 3c 20 38 29  2e 00 00 00 44 41 54 41  | \<\< 8)....DATA|
0002c700  45 01 00 00 64 72 61 77  5f 73 65 74 46 6f 6e 74  |E...draw_setFont|
0002c710  54 61 62 6c 65 0a 53 79  6e 74 61 78 3a 09 76 6f  |Table.Syntax:.vo|
0002c720  69 64 20 64 72 61 77 5f  73 65 74 46 6f 6e 74 54  |id draw_setFontT|
0002c730  61 62 6c 65 20 28 3c 64  72 61 77 5f 64 69 61 67  |able (<draw_diag|
0002c740  3e 20 2a 64 69 61 67 29  3b 0a 48 65 61 64 65 72  |> *diag);.Header|
0002c750  3a 09 3c 64 72 61 77 66  6f 62 6a 2e 68 3d 3e 64  |:.<drawfobj.h=>d|
0002c760  72 61 77 66 6f 62 6a 3e  0a 0a 54 68 69 73 20 66  |rawfobj>..This f|
0002c770  75 6e 63 74 69 6f 6e 20  73 63 61 6e 73 20 74 68  |unction scans th|
0002c780  65 20 67 69 76 65 6e 20  64 69 61 67 72 61 6d 20  |e given diagram |
0002c790  66 6f 72 20 61 20 66 6f  6e 74 20 74 61 62 6c 65  |for a font table|
0002c7a0  20 6f 62 6a 65 63 74 20  61 6e 64 20 72 65 63 6f  | object and reco|
0002c7b0  72 64 73 20 69 74 2e 20  49 74 20 6d 75 73 74 20  |rds it. It must |
0002c7c0  62 65 20 63 61 6c 6c 65  64 20 66 6f 72 20 3c 64  |be called for <d|
0002c7d0  72 61 77 5f 64 6f 4f 62  6a 65 63 74 73 3e 20 74  |raw_doObjects> t|
0002c7e0  6f 20 77 6f 72 6b 20 6f  6e 20 61 20 73 65 71 75  |o work on a sequ|
0002c7f0  65 6e 63 65 20 6f 66 20  6f 62 6a 65 63 74 73 20  |ence of objects |
0002c800  74 68 61 74 20 69 6e 63  6c 75 64 65 73 20 74 65  |that includes te|
0002c810  78 74 20 6f 62 6a 65 63  74 73 20 75 73 69 6e 67  |xt objects using|
0002c820  20 66 6f 6e 74 73 2c 20  62 75 74 20 6e 6f 20 66  | fonts, but no f|
0002c830  6f 6e 74 20 74 61 62 6c  65 20 6f 62 6a 65 63 74  |ont table object|
0002c840  2e 00 00 00 44 41 54 41  1c 01 00 00 64 72 61 77  |....DATA....draw|
0002c850  5f 73 68 69 66 74 5f 64  69 61 67 0a 53 79 6e 74  |_shift_diag.Synt|
0002c860  61 78 3a 09 76 6f 69 64  20 64 72 61 77 5f 73 68  |ax:.void draw_sh|
0002c870  69 66 74 5f 64 69 61 67  20 28 3c 64 72 61 77 5f  |ift_diag (<draw_|
0002c880  64 69 61 67 3e 20 2a 64  69 61 67 2c 20 69 6e 74  |diag> *diag, int|
0002c890  20 78 4d 6f 76 65 2c 20  69 6e 74 20 79 4d 6f 76  | xMove, int yMov|
0002c8a0  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 64 72 61  |e);.Header:.<dra|
0002c8b0  77 66 64 69 61 67 2e 68  3d 3e 64 72 61 77 66 64  |wfdiag.h=>drawfd|
0002c8c0  69 61 67 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |iag>..This funct|
0002c8d0  69 6f 6e 20 73 68 69 66  74 73 20 61 20 64 69 61  |ion shifts a dia|
0002c8e0  67 72 61 6d 20 62 79 20  61 20 67 69 76 65 6e 20  |gram by a given |
0002c8f0  64 69 73 74 61 6e 63 65  2e 20 41 6c 6c 20 63 6f  |distance. All co|
0002c900  6f 72 64 69 6e 61 74 65  73 20 69 6e 20 74 68 65  |ordinates in the|
0002c910  20 64 69 61 67 72 61 6d  20 61 72 65 20 6d 6f 76  | diagram are mov|
0002c920  65 64 20 62 79 20 2f 78  4d 6f 76 65 2f 20 69 6e  |ed by /xMove/ in|
0002c930  20 74 68 65 20 78 20 64  69 72 65 63 74 69 6f 6e  | the x direction|
0002c940  20 61 6e 64 20 2f 79 4d  6f 76 65 2f 20 69 6e 20  | and /yMove/ in |
0002c950  74 68 65 20 79 20 64 69  72 65 63 74 69 6f 6e 2e  |the y direction.|
0002c960  44 41 54 41 8d 00 00 00  64 72 61 77 5f 73 69 7a  |DATA....draw_siz|
0002c970  65 74 79 70 0a 54 68 69  73 20 74 79 70 65 20 69  |etyp.This type i|
0002c980  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 64 72  |s defined in <dr|
0002c990  61 77 66 74 79 70 65 73  2e 68 3d 3e 64 72 61 77  |awftypes.h=>draw|
0002c9a0  66 74 79 70 65 73 3e 20  61 73 20 61 20 74 79 70  |ftypes> as a typ|
0002c9b0  65 20 63 61 70 61 62 6c  65 20 6f 66 20 68 6f 6c  |e capable of hol|
0002c9c0  64 69 6e 67 20 61 20 73  69 7a 65 20 76 61 6c 75  |ding a size valu|
0002c9d0  65 2e 20 49 74 20 69 73  20 64 65 66 69 6e 65 64  |e. It is defined|
0002c9e0  20 61 73 20 61 6e 20 2f  69 6e 74 2f 2e 00 00 00  | as an /int/....|
0002c9f0  44 41 54 41 39 01 00 00  64 72 61 77 5f 73 70 72  |DATA9...draw_spr|
0002ca00  69 73 74 72 0a 54 68 69  73 20 74 79 70 65 20 69  |istr.This type i|
0002ca10  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 64 72  |s defined in <dr|
0002ca20  61 77 66 74 79 70 65 73  2e 68 3d 3e 64 72 61 77  |awftypes.h=>draw|
0002ca30  66 74 79 70 65 73 3e 20  61 73 20 61 20 74 79 70  |ftypes> as a typ|
0002ca40  65 20 63 6f 6e 74 61 69  6e 69 6e 67 20 61 20 73  |e containing a s|
0002ca50  70 72 69 74 65 20 6f 62  6a 65 63 74 2e 20 49 74  |prite object. It|
0002ca60  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 20 74  | is defined as t|
0002ca70  68 65 20 66 6f 6c 6c 6f  77 69 6e 67 20 73 74 72  |he following str|
0002ca80  75 63 74 75 72 65 3a 0a  0a 20 09 09 5c 7b 0a 20  |ucture:.. ..\{. |
0002ca90  09 20 09 3c 64 72 61 77  5f 74 61 67 74 79 70 3e  |. .<draw_tagtyp>|
0002caa0  09 74 61 67 3b 09 2f 2a  20 74 61 67 20 3d 3d 20  |.tag;./* tag == |
0002cab0  35 20 2a 2f 0a 20 09 20  09 3c 64 72 61 77 5f 73  |5 */. . .<draw_s|
0002cac0  69 7a 65 74 79 70 3e 09  73 69 7a 65 3b 0a 20 09  |izetyp>.size;. .|
0002cad0  20 09 3c 64 72 61 77 5f  62 62 6f 78 74 79 70 3e  | .<draw_bboxtyp>|
0002cae0  09 62 62 6f 78 3b 0a 20  09 20 09 3c 73 70 72 69  |.bbox;. . .<spri|
0002caf0  74 65 5f 68 65 61 64 65  72 3e 09 73 70 72 69 74  |te_header>.sprit|
0002cb00  65 3b 0a 20 09 20 09 69  6e 74 09 70 61 6c 65 74  |e;. . .int.palet|
0002cb10  74 65 5b 31 5d 3b 09 2f  2a 20 6f 70 74 69 6f 6e  |te[1];./* option|
0002cb20  61 6c 20 2a 2f 0a 20 09  7d 00 00 00 44 41 54 41  |al */. .}...DATA|
0002cb30  1b 01 00 00 64 72 61 77  5f 73 70 72 69 73 74 72  |....draw_spristr|
0002cb40  68 64 72 0a 54 68 69 73  20 74 79 70 65 20 69 73  |hdr.This type is|
0002cb50  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 64 72 61  | defined in <dra|
0002cb60  77 66 74 79 70 65 73 2e  68 3d 3e 64 72 61 77 66  |wftypes.h=>drawf|
0002cb70  74 79 70 65 73 3e 20 61  73 20 61 20 74 79 70 65  |types> as a type|
0002cb80  20 63 6f 6e 74 61 69 6e  69 6e 67 20 61 20 73 70  | containing a sp|
0002cb90  72 69 74 65 20 6f 62 6a  65 63 74 2c 20 77 69 74  |rite object, wit|
0002cba0  68 6f 75 74 20 74 68 65  20 61 63 74 75 61 6c 20  |hout the actual |
0002cbb0  73 70 72 69 74 65 2e 20  49 74 20 69 73 20 64 65  |sprite. It is de|
0002cbc0  66 69 6e 65 64 20 61 73  20 74 68 65 20 66 6f 6c  |fined as the fol|
0002cbd0  6c 6f 77 69 6e 67 20 73  74 72 75 63 74 75 72 65  |lowing structure|
0002cbe0  3a 0a 0a 20 09 5c 7b 0a  20 09 20 09 3c 64 72 61  |:.. .\{. . .<dra|
0002cbf0  77 5f 74 61 67 74 79 70  3e 09 74 61 67 3b 20 20  |w_tagtyp>.tag;  |
0002cc00  20 20 20 2f 2a 20 74 61  67 20 3d 3d 20 35 20 2a  |   /* tag == 5 *|
0002cc10  2f 0a 20 09 20 09 3c 64  72 61 77 5f 73 69 7a 65  |/. . .<draw_size|
0002cc20  74 79 70 3e 09 73 69 7a  65 3b 0a 20 09 20 09 3c  |typ>.size;. . .<|
0002cc30  64 72 61 77 5f 62 62 6f  78 74 79 70 3e 09 62 62  |draw_bboxtyp>.bb|
0002cc40  6f 78 3b 0a 20 09 7d 00  44 41 54 41 39 01 00 00  |ox;. .}.DATA9...|
0002cc50  64 72 61 77 5f 74 61 67  74 79 70 0a 54 68 69 73  |draw_tagtyp.This|
0002cc60  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
0002cc70  20 69 6e 20 3c 64 72 61  77 66 74 79 70 65 73 2e  | in <drawftypes.|
0002cc80  68 3d 3e 64 72 61 77 66  74 79 70 65 73 3e 20 61  |h=>drawftypes> a|
0002cc90  73 20 61 6e 0a 65 6e 75  6d 65 72 61 74 65 64 20  |s an.enumerated |
0002cca0  74 79 70 65 20 68 6f 6c  64 69 6e 67 20 6f 62 6a  |type holding obj|
0002ccb0  65 63 74 20 74 79 70 65  20 6e 75 6d 62 65 72 73  |ect type numbers|
0002ccc0  3a 0a 0a 20 09 5c 7b 0a  20 09 20 09 64 72 61 77  |:.. .\{. . .draw|
0002ccd0  5f 4f 42 4a 46 4f 4e 54  4c 49 53 54 09 3d 20 30  |_OBJFONTLIST.= 0|
0002cce0  2c 0a 20 09 20 09 64 72  61 77 5f 4f 42 4a 54 45  |,. . .draw_OBJTE|
0002ccf0  58 54 20 20 20 20 09 3d  20 31 2c 0a 20 09 20 09  |XT    .= 1,. . .|
0002cd00  64 72 61 77 5f 4f 42 4a  50 41 54 48 20 20 20 20  |draw_OBJPATH    |
0002cd10  09 3d 20 32 2c 0a 20 09  20 09 64 72 61 77 5f 4f  |.= 2,. . .draw_O|
0002cd20  42 4a 53 50 52 49 54 45  20 20 09 3d 20 33 2c 0a  |BJSPRITE  .= 3,.|
0002cd30  20 09 20 09 64 72 61 77  5f 4f 42 4a 47 52 4f 55  | . .draw_OBJGROU|
0002cd40  50 20 20 20 09 3d 20 36  2c 0a 20 09 20 09 64 72  |P   .= 6,. . .dr|
0002cd50  61 77 5f 4f 42 4a 54 45  58 54 41 52 45 41 09 3d  |aw_OBJTEXTAREA.=|
0002cd60  20 39 2c 0a 20 09 20 09  64 72 61 77 5f 4f 42 4a  | 9,. . .draw_OBJ|
0002cd70  54 45 58 54 43 4f 4c 20  09 3d 20 31 30 0a 20 09  |TEXTCOL .= 10. .|
0002cd80  7d 00 00 00 44 41 54 41  41 01 00 00 64 72 61 77  |}...DATAA...draw|
0002cd90  5f 74 65 78 74 61 72 65  61 65 6e 64 0a 54 68 69  |_textareaend.Thi|
0002cda0  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
0002cdb0  64 20 69 6e 20 3c 64 72  61 77 66 74 79 70 65 73  |d in <drawftypes|
0002cdc0  2e 68 3d 3e 64 72 61 77  66 74 79 70 65 73 3e 20  |.h=>drawftypes> |
0002cdd0  61 73 20 61 20 74 79 70  65 20 63 6f 6e 74 61 69  |as a type contai|
0002cde0  6e 69 6e 67 20 74 65 78  74 20 61 72 65 61 20 6f  |ning text area o|
0002cdf0  62 6a 65 63 74 20 64 61  74 61 2e 20 49 74 20 69  |bject data. It i|
0002ce00  73 20 64 65 66 69 6e 65  64 20 61 73 20 74 68 65  |s defined as the|
0002ce10  20 66 6f 6c 6c 6f 77 69  6e 67 20 73 74 72 75 63  | following struc|
0002ce20  74 75 72 65 3a 0a 0a 20  09 5c 7b 0a 20 09 20 09  |ture:.. .\{. . .|
0002ce30  69 6e 74 09 65 6e 64 6d  61 72 6b 3b 20 20 20 20  |int.endmark;    |
0002ce40  20 2f 2a 20 65 6e 64 6d  61 72 6b 20 3d 3d 20 30  | /* endmark == 0|
0002ce50  20 2a 2f 0a 20 09 20 09  69 6e 74 09 62 6c 61 6e  | */. . .int.blan|
0002ce60  6b 31 3b 0a 20 09 20 09  69 6e 74 09 62 6c 61 6e  |k1;. . .int.blan|
0002ce70  6b 32 3b 0a 20 09 20 09  3c 64 72 61 77 5f 63 6f  |k2;. . .<draw_co|
0002ce80  6c 74 79 70 3e 09 74 65  78 74 63 6f 6c 6f 75 72  |ltyp>.textcolour|
0002ce90  3b 0a 20 09 20 09 3c 64  72 61 77 5f 63 6f 6c 74  |;. . .<draw_colt|
0002cea0  79 70 3e 09 62 61 63 6b  63 6f 6c 6f 75 72 3b 0a  |yp>.backcolour;.|
0002ceb0  20 09 20 09 63 68 61 72  09 74 65 78 74 5b 31 5d  | . .char.text[1]|
0002cec0  3b 0a 20 09 7d 00 00 00  44 41 54 41 f8 00 00 00  |;. .}...DATA....|
0002ced0  64 72 61 77 5f 74 65 78  74 61 72 65 61 68 64 72  |draw_textareahdr|
0002cee0  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
0002cef0  66 69 6e 65 64 20 69 6e  20 3c 64 72 61 77 66 74  |fined in <drawft|
0002cf00  79 70 65 73 2e 68 3d 3e  64 72 61 77 66 74 79 70  |ypes.h=>drawftyp|
0002cf10  65 73 3e 20 61 73 20 61  20 74 79 70 65 20 63 6f  |es> as a type co|
0002cf20  6e 74 61 69 6e 69 6e 67  20 61 20 74 65 78 74 20  |ntaining a text |
0002cf30  61 72 65 61 20 6f 62 6a  65 63 74 20 68 65 61 64  |area object head|
0002cf40  65 72 2e 20 49 74 20 69  73 20 64 65 66 69 6e 65  |er. It is define|
0002cf50  64 20 61 73 20 74 68 65  20 66 6f 6c 6c 6f 77 69  |d as the followi|
0002cf60  6e 67 20 73 74 72 75 63  74 75 72 65 3a 0a 0a 20  |ng structure:.. |
0002cf70  09 5c 7b 0a 20 09 20 09  3c 64 72 61 77 5f 74 61  |.\{. . .<draw_ta|
0002cf80  67 74 79 70 3e 09 74 61  67 3b 0a 20 09 20 09 3c  |gtyp>.tag;. . .<|
0002cf90  64 72 61 77 5f 73 69 7a  65 74 79 70 3e 09 73 69  |draw_sizetyp>.si|
0002cfa0  7a 65 3b 0a 20 09 20 09  3c 64 72 61 77 5f 62 62  |ze;. . .<draw_bb|
0002cfb0  6f 78 74 79 70 3e 09 62  62 6f 78 3b 0a 20 09 7d  |oxtyp>.bbox;. .}|
0002cfc0  44 41 54 41 64 01 00 00  64 72 61 77 5f 74 65 78  |DATAd...draw_tex|
0002cfd0  74 61 72 65 61 73 74 72  65 6e 64 0a 54 68 69 73  |tareastrend.This|
0002cfe0  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
0002cff0  20 69 6e 20 3c 64 72 61  77 66 74 79 70 65 73 2e  | in <drawftypes.|
0002d000  68 3d 3e 64 72 61 77 66  74 79 70 65 73 3e 20 61  |h=>drawftypes> a|
0002d010  73 20 61 20 74 79 70 65  20 63 6f 6e 74 61 69 6e  |s a type contain|
0002d020  69 6e 67 20 74 65 78 74  20 61 72 65 61 20 6f 62  |ing text area ob|
0002d030  6a 65 63 74 20 64 61 74  61 2e 20 49 74 20 69 73  |ject data. It is|
0002d040  20 64 65 66 69 6e 65 64  20 61 73 20 74 68 65 20  | defined as the |
0002d050  66 6f 6c 6c 6f 77 69 6e  67 20 73 74 72 75 63 74  |following struct|
0002d060  75 72 65 3a 0a 0a 20 09  5c 7b 0a 20 09 20 09 69  |ure:.. .\{. . .i|
0002d070  6e 74 09 65 6e 64 6d 61  72 6b 3b 20 20 20 20 20  |nt.endmark;     |
0002d080  2f 2a 20 65 6e 64 6d 61  72 6b 20 3d 3d 20 30 20  |/* endmark == 0 |
0002d090  2a 2f 0a 20 09 20 09 69  6e 74 09 62 6c 61 6e 6b  |*/. . .int.blank|
0002d0a0  31 3b 0a 20 09 20 09 69  6e 74 09 62 6c 61 6e 6b  |1;. . .int.blank|
0002d0b0  32 3b 0a 20 09 20 09 3c  64 72 61 77 5f 63 6f 6c  |2;. . .<draw_col|
0002d0c0  74 79 70 3e 09 74 65 78  74 63 6f 6c 6f 75 72 3b  |typ>.textcolour;|
0002d0d0  0a 20 09 20 09 3c 64 72  61 77 5f 63 6f 6c 74 79  |. . .<draw_colty|
0002d0e0  70 3e 09 62 61 63 6b 63  6f 6c 6f 75 72 3b 0a 20  |p>.backcolour;. |
0002d0f0  09 7d 0a 0a 54 68 69 73  20 69 73 20 66 6f 6c 6c  |.}..This is foll|
0002d100  6f 77 65 64 20 69 6d 6d  65 64 69 61 74 65 6c 79  |owed immediately|
0002d110  20 62 79 20 74 68 65 20  74 65 78 74 20 69 74 73  | by the text its|
0002d120  65 6c 66 2e 44 41 54 41  19 01 00 00 64 72 61 77  |elf.DATA....draw|
0002d130  5f 74 65 78 74 61 72 65  61 73 74 72 68 64 72 0a  |_textareastrhdr.|
0002d140  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
0002d150  69 6e 65 64 20 69 6e 20  3c 64 72 61 77 66 74 79  |ined in <drawfty|
0002d160  70 65 73 2e 68 3d 3e 64  72 61 77 66 74 79 70 65  |pes.h=>drawftype|
0002d170  73 3e 20 61 73 20 61 20  74 79 70 65 20 63 6f 6e  |s> as a type con|
0002d180  74 61 69 6e 69 6e 67 20  61 20 74 65 78 74 20 61  |taining a text a|
0002d190  72 65 61 20 6f 62 6a 65  63 74 20 68 65 61 64 65  |rea object heade|
0002d1a0  72 2e 20 49 74 20 69 73  20 64 65 66 69 6e 65 64  |r. It is defined|
0002d1b0  20 61 73 20 74 68 65 20  66 6f 6c 6c 6f 77 69 6e  | as the followin|
0002d1c0  67 20 73 74 72 75 63 74  75 72 65 3a 0a 0a 20 09  |g structure:.. .|
0002d1d0  5c 7b 0a 20 09 20 09 3c  64 72 61 77 5f 74 61 67  |\{. . .<draw_tag|
0002d1e0  74 79 70 3e 09 74 61 67  3b 0a 20 09 20 09 3c 64  |typ>.tag;. . .<d|
0002d1f0  72 61 77 5f 73 69 7a 65  74 79 70 3e 09 73 69 7a  |raw_sizetyp>.siz|
0002d200  65 3b 0a 20 09 20 09 3c  64 72 61 77 5f 62 62 6f  |e;. . .<draw_bbo|
0002d210  78 74 79 70 3e 09 62 62  6f 78 3b 0a 20 09 20 09  |xtyp>.bbox;. . .|
0002d220  3c 64 72 61 77 5f 74 65  78 74 63 6f 6c 68 64 72  |<draw_textcolhdr|
0002d230  3e 09 63 6f 6c 75 6d 6e  3b 0a 20 09 7d 00 00 00  |>.column;. .}...|
0002d240  44 41 54 41 f2 00 00 00  64 72 61 77 5f 74 65 78  |DATA....draw_tex|
0002d250  74 63 6f 6c 68 64 72 0a  54 68 69 73 20 74 79 70  |tcolhdr.This typ|
0002d260  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
0002d270  3c 64 72 61 77 66 74 79  70 65 73 2e 68 3d 3e 64  |<drawftypes.h=>d|
0002d280  72 61 77 66 74 79 70 65  73 3e 20 61 73 20 61 20  |rawftypes> as a |
0002d290  74 79 70 65 20 63 6f 6e  74 61 69 6e 69 6e 67 20  |type containing |
0002d2a0  61 20 74 65 78 74 20 63  6f 6c 75 6d 6e 20 6f 62  |a text column ob|
0002d2b0  6a 65 63 74 2e 20 49 74  20 69 73 20 64 65 66 69  |ject. It is defi|
0002d2c0  6e 65 64 20 61 73 20 74  68 65 20 66 6f 6c 6c 6f  |ned as the follo|
0002d2d0  77 69 6e 67 20 73 74 72  75 63 74 75 72 65 3a 0a  |wing structure:.|
0002d2e0  0a 20 09 5c 7b 0a 20 09  20 09 3c 64 72 61 77 5f  |. .\{. . .<draw_|
0002d2f0  74 61 67 74 79 70 3e 09  74 61 67 3b 0a 20 09 20  |tagtyp>.tag;. . |
0002d300  09 3c 64 72 61 77 5f 73  69 7a 65 74 79 70 3e 09  |.<draw_sizetyp>.|
0002d310  73 69 7a 65 3b 0a 20 09  20 09 3c 64 72 61 77 5f  |size;. . .<draw_|
0002d320  62 62 6f 78 74 79 70 3e  09 62 62 6f 78 3b 0a 20  |bboxtyp>.bbox;. |
0002d330  09 7d 00 00 44 41 54 41  dc 01 00 00 64 72 61 77  |.}..DATA....draw|
0002d340  5f 74 65 78 74 73 74 72  0a 54 68 69 73 20 74 79  |_textstr.This ty|
0002d350  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
0002d360  20 3c 64 72 61 77 66 74  79 70 65 73 2e 68 3d 3e  | <drawftypes.h=>|
0002d370  64 72 61 77 66 74 79 70  65 73 3e 20 61 73 20 61  |drawftypes> as a|
0002d380  20 74 79 70 65 20 63 61  70 61 62 6c 65 20 6f 66  | type capable of|
0002d390  20 68 6f 6c 64 69 6e 67  20 61 20 74 65 78 74 20  | holding a text |
0002d3a0  6f 62 6a 65 63 74 2e 20  49 74 20 69 73 20 64 65  |object. It is de|
0002d3b0  66 69 6e 65 64 20 61 73  20 74 68 65 20 66 6f 6c  |fined as the fol|
0002d3c0  6c 6f 77 69 6e 67 20 73  74 72 75 63 74 75 72 65  |lowing structure|
0002d3d0  3a 0a 0a 20 09 5c 7b 0a  20 09 20 09 3c 64 72 61  |:.. .\{. . .<dra|
0002d3e0  77 5f 74 61 67 74 79 70  65 3e 09 74 61 67 3b 09  |w_tagtype>.tag;.|
0002d3f0  2f 2a 20 4f 62 6a 65 63  74 20 74 79 70 65 20 3d  |/* Object type =|
0002d400  20 31 20 2a 2f 0a 20 09  20 09 3c 64 72 61 77 5f  | 1 */. . .<draw_|
0002d410  73 69 7a 65 74 79 70 3e  09 73 69 7a 65 3b 09 2f  |sizetyp>.size;./|
0002d420  2a 20 4d 75 6c 74 69 70  6c 65 20 6f 66 20 34 20  |* Multiple of 4 |
0002d430  2a 2f 0a 20 09 20 09 3c  64 72 61 77 5f 62 62 6f  |*/. . .<draw_bbo|
0002d440  78 74 79 70 3e 09 62 62  6f 78 3b 0a 20 09 20 09  |xtyp>.bbox;. . .|
0002d450  3c 64 72 61 77 5f 63 6f  6c 74 79 70 3e 09 74 65  |<draw_coltyp>.te|
0002d460  78 74 63 6f 6c 6f 75 72  3b 0a 20 09 20 09 3c 64  |xtcolour;. . .<d|
0002d470  72 61 77 5f 63 6f 6c 74  79 70 3e 09 62 61 63 6b  |raw_coltyp>.back|
0002d480  67 72 6f 75 6e 64 3b 0a  20 09 20 09 3c 64 72 61  |ground;. . .<dra|
0002d490  77 5f 74 65 78 74 73 74  79 6c 65 3e 09 74 65 78  |w_textstyle>.tex|
0002d4a0  74 73 74 79 6c 65 3b 0a  20 09 20 09 3c 64 72 61  |tstyle;. . .<dra|
0002d4b0  77 5f 66 6f 6e 74 73 69  7a 65 3e 09 66 73 69 7a  |w_fontsize>.fsiz|
0002d4c0  65 78 3b 0a 20 09 20 09  3c 64 72 61 77 5f 66 6f  |ex;. . .<draw_fo|
0002d4d0  6e 74 73 69 7a 65 3e 09  66 73 69 7a 65 79 3b 0a  |ntsize>.fsizey;.|
0002d4e0  20 09 20 09 3c 64 72 61  77 5f 6f 62 6a 63 6f 6f  | . .<draw_objcoo|
0002d4f0  72 64 3e 09 63 6f 6f 72  64 3b 0a 20 09 20 09 63  |rd>.coord;. . .c|
0002d500  68 61 72 09 74 65 78 74  5b 31 5d 3b 0a 20 09 7d  |har.text[1];. .}|
0002d510  44 41 54 41 e9 01 00 00  64 72 61 77 5f 74 65 78  |DATA....draw_tex|
0002d520  74 73 74 72 68 64 72 0a  54 68 69 73 20 74 79 70  |tstrhdr.This typ|
0002d530  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
0002d540  3c 64 72 61 77 66 74 79  70 65 73 2e 68 3d 3e 64  |<drawftypes.h=>d|
0002d550  72 61 77 66 74 79 70 65  73 3e 20 61 73 20 61 20  |rawftypes> as a |
0002d560  74 79 70 65 20 63 61 70  61 62 6c 65 20 6f 66 20  |type capable of |
0002d570  68 6f 6c 64 69 6e 67 20  61 20 74 65 78 74 20 6f  |holding a text o|
0002d580  62 6a 65 63 74 2c 20 61  70 61 72 74 20 66 72 6f  |bject, apart fro|
0002d590  6d 20 74 68 65 20 61 63  74 75 61 6c 20 74 65 78  |m the actual tex|
0002d5a0  74 2e 20 49 74 20 69 73  20 64 65 66 69 6e 65 64  |t. It is defined|
0002d5b0  20 61 73 20 74 68 65 20  66 6f 6c 6c 6f 77 69 6e  | as the followin|
0002d5c0  67 20 73 74 72 75 63 74  75 72 65 3a 0a 0a 20 09  |g structure:.. .|
0002d5d0  5c 7b 0a 20 09 20 09 3c  64 72 61 77 5f 74 61 67  |\{. . .<draw_tag|
0002d5e0  74 79 70 65 3e 09 74 61  67 3b 09 2f 2a 20 4f 62  |type>.tag;./* Ob|
0002d5f0  6a 65 63 74 20 74 79 70  65 20 3d 20 31 20 2a 2f  |ject type = 1 */|
0002d600  0a 20 09 20 09 3c 64 72  61 77 5f 73 69 7a 65 74  |. . .<draw_sizet|
0002d610  79 70 3e 09 73 69 7a 65  3b 09 2f 2a 20 4d 75 6c  |yp>.size;./* Mul|
0002d620  74 69 70 6c 65 20 6f 66  20 34 20 2a 2f 0a 20 09  |tiple of 4 */. .|
0002d630  20 09 3c 64 72 61 77 5f  62 62 6f 78 74 79 70 3e  | .<draw_bboxtyp>|
0002d640  09 62 62 6f 78 3b 0a 20  09 20 09 3c 64 72 61 77  |.bbox;. . .<draw|
0002d650  5f 63 6f 6c 74 79 70 3e  09 74 65 78 74 63 6f 6c  |_coltyp>.textcol|
0002d660  6f 75 72 3b 0a 20 09 20  09 3c 64 72 61 77 5f 63  |our;. . .<draw_c|
0002d670  6f 6c 74 79 70 3e 09 62  61 63 6b 67 72 6f 75 6e  |oltyp>.backgroun|
0002d680  64 3b 0a 20 09 20 09 3c  64 72 61 77 5f 74 65 78  |d;. . .<draw_tex|
0002d690  74 73 74 79 6c 65 3e 09  74 65 78 74 73 74 79 6c  |tstyle>.textstyl|
0002d6a0  65 3b 0a 20 09 20 09 3c  64 72 61 77 5f 66 6f 6e  |e;. . .<draw_fon|
0002d6b0  74 73 69 7a 65 3e 09 66  73 69 7a 65 78 3b 0a 20  |tsize>.fsizex;. |
0002d6c0  09 20 09 3c 64 72 61 77  5f 66 6f 6e 74 73 69 7a  |. .<draw_fontsiz|
0002d6d0  65 3e 09 66 73 69 7a 65  79 3b 0a 20 09 20 09 3c  |e>.fsizey;. . .<|
0002d6e0  64 72 61 77 5f 6f 62 6a  63 6f 6f 72 64 3e 09 63  |draw_objcoord>.c|
0002d6f0  6f 6f 72 64 3b 0a 20 09  7d 00 00 00 44 41 54 41  |oord;. .}...DATA|
0002d700  f3 00 00 00 64 72 61 77  5f 74 65 78 74 73 74 79  |....draw_textsty|
0002d710  6c 65 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |le.This type is |
0002d720  64 65 66 69 6e 65 64 20  69 6e 20 3c 64 72 61 77  |defined in <draw|
0002d730  66 74 79 70 65 73 2e 68  3d 3e 64 72 61 77 66 74  |ftypes.h=>drawft|
0002d740  79 70 65 73 3e 20 61 73  20 61 20 74 79 70 65 20  |ypes> as a type |
0002d750  63 61 70 61 62 6c 65 20  6f 66 20 68 6f 6c 64 69  |capable of holdi|
0002d760  6e 67 20 61 20 74 65 78  74 20 73 74 79 6c 65 20  |ng a text style |
0002d770  77 6f 72 64 2e 20 49 74  20 69 73 20 64 65 66 69  |word. It is defi|
0002d780  6e 65 64 20 61 73 20 74  68 65 20 66 6f 6c 6c 6f  |ned as the follo|
0002d790  77 69 6e 67 20 73 74 72  75 63 74 75 72 65 3a 0a  |wing structure:.|
0002d7a0  0a 20 09 5c 7b 0a 20 09  20 09 3c 64 72 61 77 5f  |. .\{. . .<draw_|
0002d7b0  66 6f 6e 74 72 65 66 3e  09 66 6f 6e 74 72 65 66  |fontref>.fontref|
0002d7c0  3b 0a 20 09 20 09 63 68  61 72 09 72 65 73 65 72  |;. . .char.reser|
0002d7d0  76 65 64 38 3b 0a 20 09  20 09 73 68 6f 72 74 09  |ved8;. . .short.|
0002d7e0  72 65 73 65 72 76 65 64  31 36 3b 0a 20 09 7d 00  |reserved16;. .}.|
0002d7f0  44 41 54 41 46 01 00 00  64 72 61 77 5f 74 72 61  |DATAF...draw_tra|
0002d800  6e 73 6c 61 74 65 54 65  78 74 0a 53 79 6e 74 61  |nslateText.Synta|
0002d810  78 3a 09 76 6f 69 64 20  64 72 61 77 5f 74 72 61  |x:.void draw_tra|
0002d820  6e 73 6c 61 74 65 54 65  78 74 20 28 3c 64 72 61  |nslateText (<dra|
0002d830  77 5f 64 69 61 67 3e 20  2a 64 69 61 67 29 3b 0a  |w_diag> *diag);.|
0002d840  48 65 61 64 65 72 3a 09  3c 64 72 61 77 66 6f 62  |Header:.<drawfob|
0002d850  6a 2e 68 3d 3e 64 72 61  77 66 6f 62 6a 3e 0a 0a  |j.h=>drawfobj>..|
0002d860  52 65 74 75 72 6e 73 3a  09 3c 54 52 55 45 3e 20  |Returns:.<TRUE> |
0002d870  69 66 20 6f 62 6a 65 63  74 20 65 78 74 72 61 63  |if object extrac|
0002d880  74 65 64 20 4f 4b 2e 0a  0a 54 68 69 73 20 66 75  |ted OK...This fu|
0002d890  6e 63 74 69 6f 6e 20 75  70 64 61 74 65 73 20 61  |nction updates a|
0002d8a0  6c 6c 20 66 6f 6e 74 20  72 65 66 65 72 65 6e 63  |ll font referenc|
0002d8b0  65 20 6e 75 6d 62 65 72  73 20 66 6f 72 20 74 65  |e numbers for te|
0002d8c0  78 74 20 6f 62 6a 65 63  74 73 20 66 6f 6c 6c 6f  |xt objects follo|
0002d8d0  77 69 6e 67 20 63 72 65  61 74 69 6f 6e 20 6f 66  |wing creation of|
0002d8e0  20 61 20 66 6f 6e 74 20  74 61 62 6c 65 2e 20 49  | a font table. I|
0002d8f0  66 20 74 68 65 20 66 6f  6e 74 20 74 61 62 6c 65  |f the font table|
0002d900  20 68 61 73 20 6e 6f 74  20 62 65 65 6e 20 63 68  | has not been ch|
0002d910  61 6e 67 65 64 20 74 68  65 6e 20 74 68 69 73 20  |anged then this |
0002d920  66 75 6e 63 74 69 6f 6e  20 64 6f 65 73 20 6e 6f  |function does no|
0002d930  74 68 69 6e 67 2e 00 00  44 41 54 41 94 01 00 00  |thing...DATA....|
0002d940  64 72 61 77 5f 74 72 61  6e 73 54 61 62 6c 65 0a  |draw_transTable.|
0002d950  54 68 69 73 20 69 73 20  61 6e 20 61 72 72 61 79  |This is an array|
0002d960  20 6f 66 20 32 35 36 20  69 6e 74 65 67 65 72 73  | of 256 integers|
0002d970  2c 20 75 73 65 64 20 66  6f 72 20 66 6f 6e 74 20  |, used for font |
0002d980  74 72 61 6e 73 6c 61 74  69 6f 6e 2e 20 49 6d 6d  |translation. Imm|
0002d990  65 64 69 61 74 65 6c 79  20 61 66 74 65 72 20 61  |ediately after a|
0002d9a0  20 63 61 6c 6c 20 74 6f  20 3c 64 72 61 77 5f 63  | call to <draw_c|
0002d9b0  72 65 61 74 65 4f 62 6a  65 63 74 3e 20 77 68 65  |reateObject> whe|
0002d9c0  72 65 20 74 68 65 20 6f  62 6a 65 63 74 20 77 61  |re the object wa|
0002d9d0  73 20 61 20 66 6f 6e 74  20 74 61 62 6c 65 2c 20  |s a font table, |
0002d9e0  74 68 69 73 20 63 6f 6e  74 61 69 6e 73 20 74 68  |this contains th|
0002d9f0  65 20 6d 61 70 70 69 6e  67 20 62 65 74 77 65 65  |e mapping betwee|
0002da00  6e 20 6f 6c 64 20 61 6e  64 20 6e 65 77 20 66 6f  |n old and new fo|
0002da10  6e 74 20 72 65 66 65 72  65 6e 63 65 20 6e 75 6d  |nt reference num|
0002da20  62 65 72 73 2c 20 73 75  63 68 20 74 68 61 74 20  |bers, such that |
0002da30  64 72 61 77 5f 74 72 61  6e 73 54 61 62 6c 65 5b  |draw_transTable[|
0002da40  6f 6c 64 20 66 6f 6e 74  72 65 66 5d 20 3d 20 6e  |old fontref] = n|
0002da50  65 77 20 66 6f 6e 74 72  65 66 2e 20 3c 64 72 61  |ew fontref. <dra|
0002da60  77 5f 74 72 61 6e 73 6c  61 74 65 54 65 78 74 3e  |w_translateText>|
0002da70  20 6d 61 6b 65 73 20 75  73 65 20 6f 66 20 74 68  | makes use of th|
0002da80  69 73 20 74 61 62 6c 65  3b 20 69 74 20 69 73 20  |is table; it is |
0002da90  65 78 70 6f 72 74 65 64  20 66 6f 72 20 63 61 6c  |exported for cal|
0002daa0  6c 65 72 73 20 77 68 6f  20 6d 61 79 20 77 61 6e  |lers who may wan|
0002dab0  74 20 74 6f 20 64 6f 20  73 6f 6d 65 74 68 69 6e  |t to do somethin|
0002dac0  67 20 65 6c 61 62 6f 72  61 74 65 2e 44 41 54 41  |g elaborate.DATA|
0002dad0  1d 02 00 00 64 72 61 77  5f 75 6e 6b 6e 6f 77 6e  |....draw_unknown|
0002dae0  5f 6f 62 6a 65 63 74 5f  68 61 6e 64 6c 65 72 0a  |_object_handler.|
0002daf0  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
0002db00  69 6e 65 64 20 69 6e 20  3c 64 72 61 77 66 64 69  |ined in <drawfdi|
0002db10  61 67 2e 68 3d 3e 64 72  61 77 66 64 69 61 67 3e  |ag.h=>drawfdiag>|
0002db20  2e 20 49 74 20 69 73 20  61 20 66 75 6e 63 74 69  |. It is a functi|
0002db30  6f 6e 20 75 73 65 64 20  66 6f 72 20 68 61 6e 64  |on used for hand|
0002db40  6c 69 6e 67 20 75 6e 6b  6e 6f 77 6e 20 6f 62 6a  |ling unknown obj|
0002db50  65 63 74 73 20 77 69 74  68 20 74 68 65 20 66 6f  |ects with the fo|
0002db60  6c 6c 6f 77 69 6e 67 20  70 72 6f 74 6f 74 79 70  |llowing prototyp|
0002db70  65 3a 0a 7b 77 72 61 70  20 6f 66 66 7d 0a 7b 66  |e:.{wrap off}.{f|
0002db80  43 6f 64 65 3b 61 6c 69  67 6e 20 63 65 6e 74 72  |Code;align centr|
0002db90  65 7d 3c 42 4f 4f 4c 3e  20 6d 79 66 75 6e 63 20  |e}<BOOL> myfunc |
0002dba0  28 76 6f 69 64 20 2a 6f  62 6a 2c 20 76 6f 69 64  |(void *obj, void|
0002dbb0  20 2a 68 6e 64 2c 20 64  72 61 77 5f 65 72 72 6f  | *hnd, draw_erro|
0002dbc0  72 20 2a 65 72 72 6f 72  29 3b 7b 66 3b 61 6c 69  |r *error);{f;ali|
0002dbd0  67 6e 3b 77 72 61 70 7d  0a 0a 54 68 69 73 20 68  |gn;wrap}..This h|
0002dbe0  61 6e 64 6c 65 72 20 69  73 20 63 61 6c 6c 65 64  |andler is called|
0002dbf0  20 77 68 65 6e 65 76 65  72 20 61 6e 20 61 74 74  | whenever an att|
0002dc00  65 6d 70 74 20 69 73 20  6d 61 64 65 20 74 6f 20  |empt is made to |
0002dc10  72 65 6e 64 65 72 20 61  6e 20 75 6e 6b 6e 6f 77  |render an unknow|
0002dc20  6e 20 6f 62 6a 65 63 74  2e 20 49 74 20 69 73 20  |n object. It is |
0002dc30  70 61 73 73 65 64 20 61  20 70 6f 69 6e 74 20 74  |passed a point t|
0002dc40  6f 20 74 68 65 20 6f 62  6a 65 63 74 20 2f 6f 62  |o the object /ob|
0002dc50  6a 2f 20 61 6e 64 20 61  20 62 6c 6f 63 6b 20 74  |j/ and a block t|
0002dc60  6f 20 77 72 69 74 65 20  61 6e 20 65 72 72 6f 72  |o write an error|
0002dc70  20 73 74 61 74 75 73 20  69 6e 74 6f 2e 20 49 66  | status into. If|
0002dc80  20 61 6e 20 65 72 72 6f  72 20 6f 63 63 75 72 73  | an error occurs|
0002dc90  2c 20 74 68 65 20 68 61  6e 64 6c 65 72 20 6d 75  |, the handler mu|
0002dca0  73 74 20 72 65 74 75 72  6e 20 3c 46 41 4c 53 45  |st return <FALSE|
0002dcb0  3e 20 61 6e 64 20 73 65  74 20 75 70 20 74 68 65  |> and set up the|
0002dcc0  20 65 72 72 6f 72 20 62  6c 6f 63 6b 2c 20 65 6c  | error block, el|
0002dcd0  73 65 20 69 74 20 6d 75  73 74 20 72 65 74 75 72  |se it must retur|
0002dce0  6e 20 3c 54 52 55 45 3e  2e 00 00 00 44 41 54 41  |n <TRUE>....DATA|
0002dcf0  61 01 00 00 64 72 61 77  5f 76 65 72 69 66 79 5f  |a...draw_verify_|
0002dd00  64 69 61 67 0a 53 79 6e  74 61 78 3a 09 3c 42 4f  |diag.Syntax:.<BO|
0002dd10  4f 4c 3e 20 64 72 61 77  5f 76 65 72 69 66 79 5f  |OL> draw_verify_|
0002dd20  64 69 61 67 20 28 3c 64  72 61 77 5f 64 69 61 67  |diag (<draw_diag|
0002dd30  3e 20 2a 64 69 61 67 2c  20 3c 64 72 61 77 5f 65  |> *diag, <draw_e|
0002dd40  72 72 6f 72 3e 20 2a 65  72 72 6f 72 29 3b 0a 48  |rror> *error);.H|
0002dd50  65 61 64 65 72 3a 09 3c  64 72 61 77 66 64 69 61  |eader:.<drawfdia|
0002dd60  67 2e 68 3d 3e 64 72 61  77 66 64 69 61 67 3e 0a  |g.h=>drawfdiag>.|
0002dd70  0a 52 65 74 75 72 6e 73  3a 09 3c 54 52 55 45 3e  |.Returns:.<TRUE>|
0002dd80  20 69 66 20 64 69 61 67  72 61 6d 20 69 73 20 63  | if diagram is c|
0002dd90  6f 72 72 65 63 74 2e 0a  0a 54 68 69 73 20 66 75  |orrect...This fu|
0002dda0  6e 63 74 69 6f 6e 20 76  65 72 69 66 69 65 73 20  |nction verifies |
0002ddb0  61 20 64 69 61 67 72 61  6d 20 77 68 69 63 68 20  |a diagram which |
0002ddc0  68 61 73 20 62 65 65 6e  20 72 65 61 64 20 69 6e  |has been read in|
0002ddd0  20 66 72 6f 6d 20 66 69  6c 65 2e 20 45 61 63 68  | from file. Each|
0002dde0  20 6f 62 6a 65 63 74 20  69 6e 20 74 68 65 20 66  | object in the f|
0002ddf0  69 6c 65 20 69 73 20 63  68 65 63 6b 65 64 20 61  |ile is checked a|
0002de00  6e 64 20 74 68 65 20 66  69 72 73 74 20 65 72 72  |nd the first err|
0002de10  6f 72 20 65 6e 63 6f 75  6e 74 65 72 65 64 20 63  |or encountered c|
0002de20  61 75 73 65 73 20 72 65  74 75 72 6e 20 28 77 69  |auses return (wi|
0002de30  74 68 20 2f 65 72 72 6f  72 2f 20 73 65 74 20 61  |th /error/ set a|
0002de40  70 70 72 6f 70 72 69 61  74 65 6c 79 29 00 00 00  |ppropriately)...|
0002de50  44 41 54 41 9e 01 00 00  64 72 61 77 5f 76 65 72  |DATA....draw_ver|
0002de60  69 66 79 4f 62 6a 65 63  74 0a 53 79 6e 74 61 78  |ifyObject.Syntax|
0002de70  3a 09 3c 42 4f 4f 4c 3e  20 64 72 61 77 5f 76 65  |:.<BOOL> draw_ve|
0002de80  72 69 66 79 4f 62 6a 65  63 74 20 28 3c 64 72 61  |rifyObject (<dra|
0002de90  77 5f 64 69 61 67 3e 20  2a 64 69 61 67 2c 20 3c  |w_diag> *diag, <|
0002dea0  64 72 61 77 5f 6f 62 6a  65 63 74 3e 20 6f 62 6a  |draw_object> obj|
0002deb0  65 63 74 2c 20 69 6e 74  20 2a 73 69 7a 65 29 3b  |ect, int *size);|
0002dec0  0a 48 65 61 64 65 72 3a  09 3c 64 72 61 77 66 6f  |.Header:.<drawfo|
0002ded0  62 6a 2e 68 3d 3e 64 72  61 77 66 6f 62 6a 3e 0a  |bj.h=>drawfobj>.|
0002dee0  0a 52 65 74 75 72 6e 73  3a 09 3c 54 52 55 45 3e  |.Returns:.<TRUE>|
0002def0  20 69 66 20 6f 62 6a 65  63 74 20 66 6f 75 6e 64  | if object found|
0002df00  20 61 6e 64 20 76 65 72  69 66 69 65 64 2e 0a 0a  | and verified...|
0002df10  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 76 65  |This function ve|
0002df20  72 69 66 69 65 73 20 74  68 65 20 64 61 74 61 20  |rifies the data |
0002df30  66 6f 72 20 61 6e 20 65  78 69 73 74 69 6e 67 20  |for an existing |
0002df40  6f 62 6a 65 63 74 2e 20  54 68 69 73 20 65 6e 73  |object. This ens|
0002df50  75 72 65 73 20 74 68 61  74 20 69 74 73 20 62 6f  |ures that its bo|
0002df60  75 6e 64 69 6e 67 20 62  6f 78 20 69 73 20 63 6f  |unding box is co|
0002df70  6e 73 69 73 74 65 6e 74  20 77 69 74 68 20 74 68  |nsistent with th|
0002df80  65 20 64 61 74 61 20 69  6e 20 69 74 20 2d 20 61  |e data in it - a|
0002df90  6c 74 65 72 69 6e 67 20  69 74 20 69 66 20 6e 65  |ltering it if ne|
0002dfa0  63 65 73 73 61 72 79 2e  20 54 68 65 20 6f 62 6a  |cessary. The obj|
0002dfb0  65 63 74 27 73 20 73 69  7a 65 20 69 73 20 72 65  |ect's size is re|
0002dfc0  74 75 72 6e 65 64 20 69  6e 20 7b 2f 7d 2a 73 69  |turned in {/}*si|
0002dfd0  7a 65 7b 2f 7d 20 69 66  20 2f 73 69 7a 65 2f 20  |ze{/} if /size/ |
0002dfe0  69 73 20 6e 6f 74 20 3c  4e 55 4c 4c 3e 2e 00 00  |is not <NULL>...|
0002dff0  44 41 54 41 ad 00 00 00  64 72 61 77 5f 77 69 6e  |DATA....draw_win|
0002e000  64 74 79 70 0a 54 68 69  73 20 74 79 70 65 20 69  |dtyp.This type i|
0002e010  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 64 72  |s defined in <dr|
0002e020  61 77 66 74 79 70 65 73  2e 68 3d 3e 64 72 61 77  |awftypes.h=>draw|
0002e030  66 74 79 70 65 73 3e 20  61 73 20 61 6e 20 65 6e  |ftypes> as an en|
0002e040  75 6d 65 72 61 74 65 64  20 74 79 70 65 20 64 65  |umerated type de|
0002e050  73 63 72 69 62 69 6e 67  20 61 20 77 69 6e 64 69  |scribing a windi|
0002e060  6e 67 20 72 75 6c 65 3a  0a 0a 20 09 5c 7b 0a 20  |ng rule:.. .\{. |
0002e070  09 20 09 77 69 6e 64 5f  6e 6f 6e 7a 65 72 6f 09  |. .wind_nonzero.|
0002e080  3d 20 30 2c 0a 20 09 20  09 77 69 6e 64 5f 65 76  |= 0,. . .wind_ev|
0002e090  65 6e 6f 64 64 09 3d 20  31 0a 20 09 7d 00 00 00  |enodd.= 1. .}...|
0002e0a0  44 41 54 41 d0 01 00 00  64 72 61 77 5f 73 65 74  |DATA....draw_set|
0002e0b0  5f 75 6e 6b 6e 6f 77 6e  5f 6f 62 6a 65 63 74 5f  |_unknown_object_|
0002e0c0  68 61 6e 64 6c 65 72 0a  53 79 6e 74 61 78 3a 09  |handler.Syntax:.|
0002e0d0  3c 64 72 61 77 5f 75 6e  6b 6e 6f 77 6e 5f 6f 62  |<draw_unknown_ob|
0002e0e0  6a 65 63 74 5f 68 61 6e  64 6c 65 72 3e 20 64 72  |ject_handler> dr|
0002e0f0  61 77 5f 73 65 74 5f 75  6e 6b 6e 6f 77 6e 5f 6f  |aw_set_unknown_o|
0002e100  62 6a 65 63 74 5f 68 61  6e 64 6c 65 72 20 28 64  |bject_handler (d|
0002e110  72 61 77 5f 75 6e 6b 6e  6f 77 6e 5f 6f 62 6a 65  |raw_unknown_obje|
0002e120  63 74 5f 68 61 6e 64 6c  65 72 20 68 61 6e 64 6c  |ct_handler handl|
0002e130  65 72 2c 20 76 6f 69 64  20 2a 68 61 6e 64 6c 65  |er, void *handle|
0002e140  29 3b 0a 48 65 61 64 65  72 3a 09 3c 64 72 61 77  |);.Header:.<draw|
0002e150  66 64 69 61 67 2e 68 3d  3e 64 72 61 77 66 64 69  |fdiag.h=>drawfdi|
0002e160  61 67 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 54 68  |ag>..Returns:.Th|
0002e170  65 20 6f 6c 64 20 68 61  6e 64 6c 65 72 2e 0a 0a  |e old handler...|
0002e180  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 72 65  |This function re|
0002e190  67 69 73 74 65 72 73 20  61 20 66 75 6e 63 74 69  |gisters a functi|
0002e1a0  6f 6e 20 74 6f 20 62 65  20 63 61 6c 6c 65 64 20  |on to be called |
0002e1b0  77 68 65 6e 20 61 6e 20  61 74 74 65 6d 70 74 20  |when an attempt |
0002e1c0  69 73 20 6d 61 64 65 20  74 6f 20 72 65 6e 64 65  |is made to rende|
0002e1d0  72 20 61 6e 20 6f 62 6a  65 63 74 20 77 69 74 68  |r an object with|
0002e1e0  20 61 6e 20 6f 62 6a 65  63 74 20 74 61 67 20 77  | an object tag w|
0002e1f0  68 69 63 68 20 69 73 20  6e 6f 74 20 6b 6e 6f 77  |hich is not know|
0002e200  6e 2e 20 54 68 65 20 68  61 6e 64 6c 65 72 20 63  |n. The handler c|
0002e210  61 6e 20 62 65 20 72 65  6d 6f 76 65 64 20 62 79  |an be removed by|
0002e220  20 63 61 6c 6c 69 6e 67  20 77 69 74 68 20 30 20  | calling with 0 |
0002e230  61 73 20 61 20 70 61 72  61 6d 65 74 65 72 2e 20  |as a parameter. |
0002e240  2f 68 61 6e 64 6c 65 2f  20 69 73 20 70 61 73 73  |/handle/ is pass|
0002e250  65 64 20 64 69 72 65 63  74 20 74 6f 20 74 68 65  |ed direct to the|
0002e260  20 6f 62 6a 65 63 74 20  68 61 6e 64 6c 65 72 2e  | object handler.|
0002e270  44 41 54 41 9a 02 00 00  64 72 61 77 66 64 69 61  |DATA....drawfdia|
0002e280  67 2e 68 0a 54 68 69 73  20 68 65 61 64 65 72 20  |g.h.This header |
0002e290  64 65 61 6c 73 20 77 69  74 68 20 70 72 6f 63 65  |deals with proce|
0002e2a0  73 73 69 6e 67 20 6f 66  20 44 72 61 77 20 66 6f  |ssing of Draw fo|
0002e2b0  72 6d 61 74 20 66 69 6c  65 73 2e 20 49 74 20 63  |rmat files. It c|
0002e2c0  61 6e 20 72 65 61 64 20  69 6e 20 66 69 6c 65 73  |an read in files|
0002e2d0  20 74 6f 20 64 69 61 67  72 61 6d 73 20 61 6e 64  | to diagrams and|
0002e2e0  20 72 65 6e 64 65 72 20  74 68 65 6d 2e 0a 0a 46  | render them...F|
0002e2f0  75 6e 63 74 69 6f 6e 73  3a 0a 0a 23 49 6e 64 65  |unctions:..#Inde|
0002e300  6e 74 20 31 30 0a 23 54  61 62 6c 65 20 35 20 32  |nt 10.#Table 5 2|
0002e310  31 0a 3c 64 72 61 77 66  64 69 61 67 5f 69 6e 69  |1.<drawfdiag_ini|
0002e320  74 3e 0a 3c 64 72 61 77  5f 64 72 61 77 54 6f 53  |t>.<draw_drawToS|
0002e330  63 72 65 65 6e 3e 0a 3c  64 72 61 77 5f 73 63 72  |creen>.<draw_scr|
0002e340  65 65 6e 54 6f 44 72 61  77 3e 0a 3c 64 72 61 77  |eenToDraw>.<draw|
0002e350  5f 76 65 72 69 66 79 5f  64 69 61 67 3e 0a 3c 64  |_verify_diag>.<d|
0002e360  72 61 77 5f 61 70 70 65  6e 64 5f 64 69 61 67 3e  |raw_append_diag>|
0002e370  0a 3c 64 72 61 77 5f 72  65 6e 64 65 72 5f 64 69  |.<draw_render_di|
0002e380  61 67 3e 0a 3c 64 72 61  77 5f 73 68 69 66 74 5f  |ag>.<draw_shift_|
0002e390  64 69 61 67 3e 0a 3c 64  72 61 77 5f 71 75 65 72  |diag>.<draw_quer|
0002e3a0  79 62 6f 78 3e 0a 3c 64  72 61 77 5f 63 6f 6e 76  |ybox>.<draw_conv|
0002e3b0  65 72 74 42 6f 78 3e 0a  3c 64 72 61 77 5f 72 65  |ertBox>.<draw_re|
0002e3c0  62 69 6e 64 5f 64 69 61  67 3e 0a 23 45 6e 64 54  |bind_diag>.#EndT|
0002e3d0  61 62 6c 65 0a 0a 23 69  6e 64 65 6e 74 20 30 3b  |able..#indent 0;|
0002e3e0  61 6c 69 67 6e 20 63 65  6e 74 72 65 0a 3c 64 72  |align centre.<dr|
0002e3f0  61 77 5f 73 65 74 5f 75  6e 6b 6e 6f 77 6e 5f 6f  |aw_set_unknown_o|
0002e400  62 6a 65 63 74 5f 68 61  6e 64 6c 65 72 3e 0a 3c  |bject_handler>.<|
0002e410  64 72 61 77 5f 72 65 67  69 73 74 65 72 4d 65 6d  |draw_registerMem|
0002e420  6f 72 79 46 75 6e 63 74  69 6f 6e 73 3e 0a 0a 23  |oryFunctions>..#|
0002e430  61 6c 69 67 6e 3b 49 6e  64 65 6e 74 20 30 0a 54  |align;Indent 0.T|
0002e440  79 70 65 73 3a 0a 0a 23  69 6e 64 65 6e 74 20 31  |ypes:..#indent 1|
0002e450  35 0a 23 54 61 62 6c 65  20 34 20 32 31 0a 3c 64  |5.#Table 4 21.<d|
0002e460  72 61 77 5f 64 69 61 67  3e 0a 3c 64 72 61 77 5f  |raw_diag>.<draw_|
0002e470  6f 62 6a 65 63 74 3e 0a  3c 64 72 61 77 5f 62 6f  |object>.<draw_bo|
0002e480  78 3e 0a 3c 64 72 61 77  5f 72 65 64 72 61 77 73  |x>.<draw_redraws|
0002e490  74 72 3e 0a 3c 64 72 61  77 5f 65 72 72 6f 72 3e  |tr>.<draw_error>|
0002e4a0  0a 3c 64 72 61 77 5f 61  6c 6c 6f 63 61 74 65 3e  |.<draw_allocate>|
0002e4b0  0a 3c 64 72 61 77 5f 65  78 74 65 6e 64 3e 0a 3c  |.<draw_extend>.<|
0002e4c0  64 72 61 77 5f 66 72 65  65 3e 0a 23 45 6e 64 54  |draw_free>.#EndT|
0002e4d0  61 62 6c 65 0a 0a 23 69  6e 64 65 6e 74 20 30 3b  |able..#indent 0;|
0002e4e0  61 6c 69 67 6e 20 63 65  6e 74 72 65 0a 3c 64 72  |align centre.<dr|
0002e4f0  61 77 5f 75 6e 6b 6e 6f  77 6e 5f 6f 62 6a 65 63  |aw_unknown_objec|
0002e500  74 5f 68 61 6e 64 6c 65  72 3e 00 00 44 49 52 24  |t_handler>..DIR$|
0002e510  2c 00 00 00 2c 00 00 00  38 e5 02 00 46 ff ff ff  |,...,...8...F...|
0002e520  3e 37 24 23 b5 00 00 00  13 00 00 00 00 00 00 00  |>7$#............|
0002e530  69 6e 69 74 00 00 00 00  44 41 54 41 b5 00 00 00  |init....DATA....|
0002e540  64 72 61 77 66 64 69 61  67 5f 69 6e 69 74 0a 53  |drawfdiag_init.S|
0002e550  79 6e 74 61 78 3a 09 3c  42 4f 4f 4c 3e 20 64 72  |yntax:.<BOOL> dr|
0002e560  61 77 66 64 69 61 67 5f  69 6e 69 74 20 28 76 6f  |awfdiag_init (vo|
0002e570  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 64 72  |id);.Header:.<dr|
0002e580  61 77 66 64 69 61 67 2e  68 3d 3e 64 72 61 77 66  |awfdiag.h=>drawf|
0002e590  64 69 61 67 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |diag>..Returns:.|
0002e5a0  3c 54 52 55 45 3e 20 69  66 20 73 75 63 63 65 73  |<TRUE> if succes|
0002e5b0  73 66 75 6c 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |sful...This func|
0002e5c0  74 69 6f 6e 20 69 6e 69  74 69 61 6c 69 73 65 73  |tion initialises|
0002e5d0  20 74 68 65 20 64 69 61  67 72 61 6d 20 6c 65 76  | the diagram lev|
0002e5e0  65 6c 20 69 6e 74 65 72  66 61 63 65 2e 00 00 00  |el interface....|
0002e5f0  44 41 54 41 18 09 00 00  64 72 61 77 66 65 72 72  |DATA....drawferr|
0002e600  6f 72 2e 68 0a 54 68 69  73 20 68 65 61 64 65 72  |or.h.This header|
0002e610  20 64 65 66 69 6e 65 73  20 61 6c 6c 20 74 68 65  | defines all the|
0002e620  20 66 6f 6c 6c 6f 77 69  6e 67 20 6d 61 63 72 6f  | following macro|
0002e630  73 2c 20 77 68 69 63 68  20 65 61 63 68 20 72 65  |s, which each re|
0002e640  70 72 65 73 65 6e 74 20  61 6e 20 65 72 72 6f 72  |present an error|
0002e650  20 63 6f 64 65 2e 20 54  68 65 20 73 74 61 6e 64  | code. The stand|
0002e660  61 72 64 20 65 72 72 6f  72 20 6d 65 73 73 61 67  |ard error messag|
0002e670  65 20 66 6f 72 20 65 61  63 68 20 6f 66 20 74 68  |e for each of th|
0002e680  65 73 65 20 65 72 72 6f  72 73 20 69 73 20 61 6c  |ese errors is al|
0002e690  73 6f 20 67 69 76 65 6e  20 66 6f 72 20 79 6f 75  |so given for you|
0002e6a0  72 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 2e 0a 0a  |r information...|
0002e6b0  64 72 61 77 5f 42 61 64  4f 62 6a 65 63 74 09 42  |draw_BadObject.B|
0002e6c0  61 64 20 6f 62 6a 65 63  74 20 0a 64 72 61 77 5f  |ad object .draw_|
0002e6d0  42 61 64 4f 62 6a 65 63  74 48 61 6e 64 6c 65 09  |BadObjectHandle.|
0002e6e0  42 61 64 20 6f 62 6a 65  63 74 20 68 61 6e 64 6c  |Bad object handl|
0002e6f0  65 0a 64 72 61 77 5f 54  6f 6f 4d 61 6e 79 46 6f  |e.draw_TooManyFo|
0002e700  6e 74 73 09 54 6f 6f 20  6d 61 6e 79 20 66 6f 6e  |nts.Too many fon|
0002e710  74 20 64 65 66 69 6e 69  74 69 6f 6e 73 0a 64 72  |t definitions.dr|
0002e720  61 77 5f 42 42 6f 78 57  72 6f 6e 67 09 42 6f 75  |aw_BBoxWrong.Bou|
0002e730  6e 64 69 6e 67 20 62 6f  78 20 63 6f 6f 72 64 69  |nding box coordi|
0002e740  6e 61 74 65 73 20 61 72  65 20 69 6e 20 74 68 65  |nates are in the|
0002e750  20 77 72 6f 6e 67 20 6f  72 64 65 72 0a 64 72 61  | wrong order.dra|
0002e760  77 5f 42 61 64 43 68 61  72 61 63 74 65 72 09 42  |w_BadCharacter.B|
0002e770  61 64 20 63 68 61 72 61  63 74 65 72 20 69 6e 20  |ad character in |
0002e780  73 74 72 69 6e 67 0a 64  72 61 77 5f 4f 62 6a 65  |string.draw_Obje|
0002e790  63 74 54 6f 6f 53 6d 61  6c 6c 09 4f 62 6a 65 63  |ctTooSmall.Objec|
0002e7a0  74 20 73 69 7a 65 20 69  73 20 74 6f 6f 20 73 6d  |t size is too sm|
0002e7b0  61 6c 6c 0a 64 72 61 77  5f 4f 62 6a 65 63 74 54  |all.draw_ObjectT|
0002e7c0  6f 6f 4c 61 72 67 65 09  4f 62 6a 65 63 74 20 73  |ooLarge.Object s|
0002e7d0  69 7a 65 20 69 73 20 74  6f 6f 20 6c 61 72 67 65  |ize is too large|
0002e7e0  0a 64 72 61 77 5f 4f 62  6a 65 63 74 4e 6f 74 4d  |.draw_ObjectNotM|
0002e7f0  75 6c 74 34 09 4f 62 6a  65 63 74 20 73 69 7a 65  |ult4.Object size|
0002e800  20 69 73 20 6e 6f 74 20  61 20 6d 75 6c 74 69 70  | is not a multip|
0002e810  6c 65 20 6f 66 20 34 0a  64 72 61 77 5f 4f 62 6a  |le of 4.draw_Obj|
0002e820  65 63 74 4f 76 65 72 72  75 6e 09 4f 62 6a 65 63  |ectOverrun.Objec|
0002e830  74 20 64 61 74 61 20 69  73 20 6c 61 72 67 65 72  |t data is larger|
0002e840  20 74 68 61 6e 20 73 70  65 63 69 66 69 65 64 20  | than specified |
0002e850  73 69 7a 65 0a 64 72 61  77 5f 4d 61 6e 79 46 6f  |size.draw_ManyFo|
0002e860  6e 74 54 61 62 6c 65 73  09 54 68 65 72 65 20 69  |ntTables.There i|
0002e870  73 20 6d 6f 72 65 20 74  68 61 6e 20 6f 6e 65 20  |s more than one |
0002e880  66 6f 6e 74 20 74 61 62  6c 65 0a 64 72 61 77 5f  |font table.draw_|
0002e890  4c 61 74 65 46 6f 6e 74  54 61 62 6c 65 09 54 68  |LateFontTable.Th|
0002e8a0  65 20 66 6f 6e 74 20 74  61 62 6c 65 20 61 70 70  |e font table app|
0002e8b0  65 61 72 73 20 61 66 74  65 72 20 74 65 78 74 20  |ears after text |
0002e8c0  6f 62 6a 65 63 74 28 73  29 0a 64 72 61 77 5f 42  |object(s).draw_B|
0002e8d0  61 64 54 65 78 74 53 74  79 6c 65 09 42 61 64 20  |adTextStyle.Bad |
0002e8e0  74 65 78 74 20 73 74 79  6c 65 20 77 6f 72 64 0a  |text style word.|
0002e8f0  64 72 61 77 5f 4d 6f 76  65 4d 69 73 73 69 6e 67  |draw_MoveMissing|
0002e900  09 50 61 74 68 20 6d 75  73 74 20 73 74 61 72 74  |.Path must start|
0002e910  20 77 69 74 68 20 61 20  6d 6f 76 65 0a 64 72 61  | with a move.dra|
0002e920  77 5f 42 61 64 50 61 74  68 54 61 67 09 50 61 74  |w_BadPathTag.Pat|
0002e930  68 20 63 6f 6e 74 61 69  6e 73 20 61 6e 20 69 6e  |h contains an in|
0002e940  76 61 6c 69 64 20 74 61  67 0a 64 72 61 77 5f 4e  |valid tag.draw_N|
0002e950  6f 50 61 74 68 45 6c 65  6d 65 6e 74 73 09 50 61  |oPathElements.Pa|
0002e960  74 68 20 64 6f 65 73 20  6e 6f 74 20 63 6f 6e 74  |th does not cont|
0002e970  61 69 6e 20 61 6e 79 20  6c 69 6e 65 20 6f 72 20  |ain any line or |
0002e980  63 75 72 76 65 20 65 6c  65 6d 65 6e 74 73 0a 64  |curve elements.d|
0002e990  72 61 77 5f 50 61 74 68  45 78 74 72 61 44 61 74  |raw_PathExtraDat|
0002e9a0  61 09 54 68 65 72 65 20  69 73 20 65 78 74 72 61  |a.There is extra|
0002e9b0  20 64 61 74 61 20 70 72  65 73 65 6e 74 20 61 74  | data present at|
0002e9c0  20 74 68 65 20 65 6e 64  20 6f 66 20 61 20 70 61  | the end of a pa|
0002e9d0  74 68 20 6f 62 6a 65 63  74 0a 64 72 61 77 5f 42  |th object.draw_B|
0002e9e0  61 64 53 70 72 69 74 65  53 69 7a 65 09 54 68 65  |adSpriteSize.The|
0002e9f0  20 73 70 72 69 74 65 20  64 65 66 69 6e 69 74 69  | sprite definiti|
0002ea00  6f 6e 20 73 69 7a 65 20  69 73 20 69 6e 63 6f 6e  |on size is incon|
0002ea10  73 69 73 74 65 6e 74 20  77 69 74 68 20 74 68 65  |sistent with the|
0002ea20  20 6f 62 6a 65 63 74 20  73 69 7a 65 0a 64 72 61  | object size.dra|
0002ea30  77 5f 42 61 64 54 65 78  74 43 6f 6c 75 6d 6e 45  |w_BadTextColumnE|
0002ea40  6e 64 09 4d 69 73 73 69  6e 67 20 65 6e 64 20 6d  |nd.Missing end m|
0002ea50  61 72 6b 65 72 20 69 6e  20 74 65 78 74 20 63 6f  |arker in text co|
0002ea60  6c 75 6d 6e 73 0a 64 72  61 77 5f 43 6f 6c 75 6d  |lumns.draw_Colum|
0002ea70  6e 73 4d 69 73 6d 61 74  63 68 09 41 63 74 75 61  |nsMismatch.Actua|
0002ea80  6c 20 6e 75 6d 62 65 72  20 6f 66 20 63 6f 6c 75  |l number of colu|
0002ea90  6d 6e 73 20 69 6e 20 61  20 74 65 78 74 20 61 72  |mns in a text ar|
0002eaa0  65 61 20 6f 62 6a 65 63  74 20 64 6f 65 73 20 6e  |ea object does n|
0002eab0  6f 74 20 6d 61 74 63 68  20 73 70 65 63 69 66 69  |ot match specifi|
0002eac0  65 64 20 6e 75 6d 62 65  72 20 6f 66 20 63 6f 6c  |ed number of col|
0002ead0  75 6d 6e 73 0a 64 72 61  77 5f 4e 6f 6e 5a 65 72  |umns.draw_NonZer|
0002eae0  6f 52 65 73 65 72 76 65  64 09 4e 6f 6e 2d 7a 65  |oReserved.Non-ze|
0002eaf0  72 6f 20 72 65 73 65 72  76 65 64 20 77 6f 72 64  |ro reserved word|
0002eb00  73 20 69 6e 20 61 20 74  65 78 74 20 61 72 65 61  |s in a text area|
0002eb10  20 6f 62 6a 65 63 74 0a  64 72 61 77 5f 4e 6f 74  | object.draw_Not|
0002eb20  44 72 61 77 46 69 6c 65  09 54 68 69 73 20 69 73  |DrawFile.This is|
0002eb30  20 6e 6f 74 20 61 20 44  72 61 77 20 66 69 6c 65  | not a Draw file|
0002eb40  0a 64 72 61 77 5f 56 65  72 73 69 6f 6e 54 6f 6f  |.draw_VersionToo|
0002eb50  48 69 67 68 09 56 65 72  73 69 6f 6e 20 6e 75 6d  |High.Version num|
0002eb60  62 65 72 20 74 6f 6f 20  68 69 67 68 0a 64 72 61  |ber too high.dra|
0002eb70  77 5f 42 61 64 4f 62 6a  65 63 74 54 79 70 65 09  |w_BadObjectType.|
0002eb80  55 6e 6b 6e 6f 77 6e 20  6f 62 6a 65 63 74 20 74  |Unknown object t|
0002eb90  79 70 65 0a 64 72 61 77  5f 43 6f 72 72 75 70 74  |ype.draw_Corrupt|
0002eba0  54 65 78 74 41 72 65 61  09 43 6f 72 72 75 70 74  |TextArea.Corrupt|
0002ebb0  65 64 20 74 65 78 74 20  61 72 65 61 20 28 6d 75  |ed text area (mu|
0002ebc0  73 74 20 73 74 61 72 74  20 77 69 74 68 20 27 5c  |st start with '\|
0002ebd0  5c 21 27 29 0a 64 72 61  77 5f 54 65 78 74 41 72  |\!').draw_TextAr|
0002ebe0  65 61 56 65 72 73 69 6f  6e 09 54 65 78 74 20 61  |eaVersion.Text a|
0002ebf0  72 65 61 20 76 65 72 73  69 6f 6e 20 6e 75 6d 62  |rea version numb|
0002ec00  65 72 20 69 73 20 77 72  6f 6e 67 20 6f 72 20 6d  |er is wrong or m|
0002ec10  69 73 73 69 6e 67 0a 64  72 61 77 5f 4d 69 73 73  |issing.draw_Miss|
0002ec20  69 6e 67 4e 65 77 6c 69  6e 65 09 54 65 78 74 20  |ingNewline.Text |
0002ec30  61 72 65 61 20 6d 75 73  74 20 65 6e 64 20 77 69  |area must end wi|
0002ec40  74 68 20 61 20 6e 65 77  6c 69 6e 65 20 63 68 61  |th a newline cha|
0002ec50  72 61 63 74 65 72 0a 64  72 61 77 5f 42 61 64 41  |racter.draw_BadA|
0002ec60  6c 69 67 6e 09 54 65 78  74 20 61 72 65 61 3a 20  |lign.Text area: |
0002ec70  62 61 64 20 5c 5c 41 20  63 6f 64 65 20 28 6d 75  |bad \\A code (mu|
0002ec80  73 74 20 62 65 20 4c 2c  20 52 2c 20 43 20 6f 72  |st be L, R, C or|
0002ec90  20 44 29 0a 64 72 61 77  5f 42 61 64 54 65 72 6d  | D).draw_BadTerm|
0002eca0  69 6e 61 74 6f 72 09 54  65 78 74 20 61 72 65 61  |inator.Text area|
0002ecb0  3a 20 62 61 64 20 6e 75  6d 62 65 72 20 6f 72 20  |: bad number or |
0002ecc0  6d 69 73 73 69 6e 67 20  74 65 72 6d 69 6e 61 74  |missing terminat|
0002ecd0  6f 72 0a 64 72 61 77 5f  4d 61 6e 79 44 43 6f 6d  |or.draw_ManyDCom|
0002ece0  6d 61 6e 64 73 09 54 65  78 74 20 61 72 65 61 3a  |mands.Text area:|
0002ecf0  20 6d 6f 72 65 20 74 68  61 6e 20 6f 6e 65 20 5c  | more than one \|
0002ed00  5c 44 20 63 6f 6d 6d 61  6e 64 0a 64 72 61 77 5f  |\D command.draw_|
0002ed10  42 61 64 46 6f 6e 74 4e  75 6d 62 65 72 09 54 65  |BadFontNumber.Te|
0002ed20  78 74 20 61 72 65 61 3a  20 62 61 64 20 66 6f 6e  |xt area: bad fon|
0002ed30  74 20 6e 75 6d 62 65 72  0a 64 72 61 77 5f 55 6e  |t number.draw_Un|
0002ed40  65 78 70 65 63 74 65 64  43 68 61 72 61 63 74 65  |expectedCharacte|
0002ed50  72 20 54 65 78 74 20 61  72 65 61 3a 20 75 6e 65  |r Text area: une|
0002ed60  78 70 65 63 74 65 64 20  63 68 61 72 61 63 74 65  |xpected characte|
0002ed70  72 20 69 6e 20 5c 5c 46  20 63 6f 6d 6d 61 6e 64  |r in \\F command|
0002ed80  0a 64 72 61 77 5f 42 61  64 46 6f 6e 74 57 69 64  |.draw_BadFontWid|
0002ed90  74 68 09 54 65 78 74 20  61 72 65 61 3a 20 62 61  |th.Text area: ba|
0002eda0  64 20 6f 72 20 6d 69 73  73 69 6e 67 20 66 6f 6e  |d or missing fon|
0002edb0  74 20 77 69 64 74 68 20  69 6e 20 5c 5c 46 20 63  |t width in \\F c|
0002edc0  6f 6d 6d 61 6e 64 0a 64  72 61 77 5f 42 61 64 46  |ommand.draw_BadF|
0002edd0  6f 6e 74 53 69 7a 65 09  54 65 78 74 20 61 72 65  |ontSize.Text are|
0002ede0  61 3a 20 62 61 64 20 6f  72 20 6d 69 73 73 69 6e  |a: bad or missin|
0002edf0  67 20 66 6f 6e 74 20 73  69 7a 65 20 69 6e 20 5c  |g font size in \|
0002ee00  5c 46 20 63 6f 6d 6d 61  6e 64 0a 64 72 61 77 5f  |\F command.draw_|
0002ee10  4e 6f 6e 44 69 67 69 74  56 09 54 65 78 74 20 61  |NonDigitV.Text a|
0002ee20  72 65 61 3a 20 6e 6f 6e  2d 64 69 67 69 74 20 69  |rea: non-digit i|
0002ee30  6e 20 5c 5c 56 20 63 6f  6d 6d 61 6e 64 0a 64 72  |n \\V command.dr|
0002ee40  61 77 5f 42 61 64 45 73  63 61 70 65 09 54 65 78  |aw_BadEscape.Tex|
0002ee50  74 20 61 72 65 61 3a 20  62 61 64 20 65 73 63 61  |t area: bad esca|
0002ee60  70 65 20 73 65 71 75 65  6e 63 65 0a 64 72 61 77  |pe sequence.draw|
0002ee70  5f 46 65 77 43 6f 6c 75  6d 6e 73 09 54 65 78 74  |_FewColumns.Text|
0002ee80  20 61 72 65 61 20 6d 75  73 74 20 68 61 76 65 20  | area must have |
0002ee90  61 74 20 6c 65 61 73 74  20 6f 6e 65 20 63 6f 6c  |at least one col|
0002eea0  75 6d 6e 0a 64 72 61 77  5f 54 65 78 74 43 6f 6c  |umn.draw_TextCol|
0002eeb0  4d 65 6d 6f 72 79 09 4f  75 74 20 6f 66 20 6d 65  |Memory.Out of me|
0002eec0  6d 6f 72 79 20 77 68 65  6e 20 62 75 69 6c 64 69  |mory when buildi|
0002eed0  6e 67 20 74 65 78 74 20  61 72 65 61 20 5b 6c 6f  |ng text area [lo|
0002eee0  63 61 74 69 6f 6e 20 66  69 65 6c 64 20 69 73 20  |cation field is |
0002eef0  61 6c 77 61 79 73 20 30  20 66 6f 72 20 74 68 69  |always 0 for thi|
0002ef00  73 20 65 72 72 6f 72 5d  44 41 54 41 eb 01 00 00  |s error]DATA....|
0002ef10  64 72 61 77 66 6f 62 6a  2e 68 0a 54 68 69 73 20  |drawfobj.h.This |
0002ef20  68 65 61 64 65 72 20 64  65 63 6c 61 72 65 73 20  |header declares |
0002ef30  74 79 70 65 73 20 61 6e  64 20 66 75 6e 63 74 69  |types and functi|
0002ef40  6f 6e 73 20 66 6f 72 0a  70 72 6f 63 65 73 73 69  |ons for.processi|
0002ef50  6e 67 20 44 72 61 77 20  66 6f 72 6d 61 74 20 66  |ng Draw format f|
0002ef60  69 6c 65 73 20 61 74 20  74 68 65 20 6f 62 6a 65  |iles at the obje|
0002ef70  63 74 0a 6c 65 76 65 6c  2e 0a 0a 46 75 6e 63 74  |ct.level...Funct|
0002ef80  69 6f 6e 73 3a 0a 0a 23  49 6e 64 65 6e 74 20 32  |ions:..#Indent 2|
0002ef90  0a 23 54 61 62 6c 65 20  35 20 32 31 0a 3c 64 72  |.#Table 5 21.<dr|
0002efa0  61 77 66 6f 62 6a 5f 69  6e 69 74 3e 0a 3c 64 72  |awfobj_init>.<dr|
0002efb0  61 77 5f 63 72 65 61 74  65 5f 64 69 61 67 3e 0a  |aw_create_diag>.|
0002efc0  3c 64 72 61 77 5f 64 6f  4f 62 6a 65 63 74 73 3e  |<draw_doObjects>|
0002efd0  0a 3c 64 72 61 77 5f 73  65 74 46 6f 6e 74 54 61  |.<draw_setFontTa|
0002efe0  62 6c 65 3e 0a 3c 64 72  61 77 5f 76 65 72 69 66  |ble>.<draw_verif|
0002eff0  79 4f 62 6a 65 63 74 3e  0a 3c 64 72 61 77 5f 63  |yObject>.<draw_c|
0002f000  72 65 61 74 65 4f 62 6a  65 63 74 3e 0a 3c 64 72  |reateObject>.<dr|
0002f010  61 77 5f 64 65 6c 65 74  65 4f 62 6a 65 63 74 73  |aw_deleteObjects|
0002f020  3e 0a 3c 64 72 61 77 5f  65 78 74 72 61 63 74 4f  |>.<draw_extractO|
0002f030  62 6a 65 63 74 3e 0a 3c  64 72 61 77 5f 74 72 61  |bject>.<draw_tra|
0002f040  6e 73 6c 61 74 65 54 65  78 74 3e 0a 23 45 6e 64  |nslateText>.#End|
0002f050  54 61 62 6c 65 0a 0a 23  49 6e 64 65 6e 74 20 30  |Table..#Indent 0|
0002f060  0a 4d 61 63 72 6f 73 3a  20 20 20 20 20 20 20 20  |.Macros:        |
0002f070  20 20 20 20 20 20 20 20  20 20 54 79 70 65 73 3a  |          Types:|
0002f080  0a 0a 20 20 3c 64 72 61  77 5f 4e 6f 4f 62 6a 65  |..  <draw_NoObje|
0002f090  63 74 3e 20 20 20 20 20  3c 64 72 61 77 5f 6f 62  |ct>     <draw_ob|
0002f0a0  6a 65 63 74 54 79 70 65  3e 0a 20 20 3c 64 72 61  |jectType>.  <dra|
0002f0b0  77 5f 46 69 72 73 74 4f  62 6a 65 63 74 3e 0a 20  |w_FirstObject>. |
0002f0c0  20 3c 64 72 61 77 5f 4c  61 73 74 4f 62 6a 65 63  | <draw_LastObjec|
0002f0d0  74 3e 0a 0a 56 61 72 69  61 62 6c 65 73 3a 0a 0a  |t>..Variables:..|
0002f0e0  20 20 3c 64 72 61 77 5f  74 72 61 6e 73 54 61 62  |  <draw_transTab|
0002f0f0  6c 65 3e 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |le>.DIR$,...,...|
0002f100  20 f1 02 00 46 ff ff ff  53 44 26 23 af 00 00 00  | ...F...SD&#....|
0002f110  13 00 00 00 00 00 00 00  69 6e 69 74 00 00 00 00  |........init....|
0002f120  44 41 54 41 af 00 00 00  64 72 61 77 66 6f 62 6a  |DATA....drawfobj|
0002f130  5f 69 6e 69 74 0a 53 79  6e 74 61 78 3a 09 3c 42  |_init.Syntax:.<B|
0002f140  4f 4f 4c 3e 20 64 72 61  77 6f 62 6a 5f 69 6e 69  |OOL> drawobj_ini|
0002f150  74 20 28 76 6f 69 64 29  3b 0a 48 65 61 64 65 72  |t (void);.Header|
0002f160  3a 09 3c 64 72 61 77 66  6f 62 6a 2e 68 3d 3e 64  |:.<drawfobj.h=>d|
0002f170  72 61 77 66 6f 62 6a 3e  0a 0a 52 65 74 75 72 6e  |rawfobj>..Return|
0002f180  73 3a 09 3c 54 52 55 45  3e 20 69 66 20 73 75 63  |s:.<TRUE> if suc|
0002f190  63 65 73 73 66 75 6c 2e  0a 0a 54 68 69 73 20 66  |cessful...This f|
0002f1a0  75 6e 63 74 69 6f 6e 20  69 6e 69 74 69 61 6c 69  |unction initiali|
0002f1b0  73 65 73 20 74 68 65 20  6f 62 6a 65 63 74 20 6c  |ses the object l|
0002f1c0  65 76 65 6c 20 69 6e 74  65 72 66 61 63 65 2e 00  |evel interface..|
0002f1d0  44 41 54 41 7b 04 00 00  64 72 61 77 66 74 79 70  |DATA{...drawftyp|
0002f1e0  65 73 2e 68 0a 54 68 69  73 20 68 65 61 64 65 72  |es.h.This header|
0002f1f0  20 64 65 66 69 6e 65 73  20 74 79 70 65 73 20 75  | defines types u|
0002f200  73 65 64 20 62 79 20 74  68 65 20 6f 62 6a 65 63  |sed by the objec|
0002f210  74 20 6c 65 76 65 6c 20  69 6e 74 65 72 66 61 63  |t level interfac|
0002f220  65 20 66 6f 72 20 64 72  61 77 20 66 69 6c 65 73  |e for draw files|
0002f230  2e 20 59 6f 75 20 64 6f  20 6e 6f 74 20 6e 6f 72  |. You do not nor|
0002f240  6d 61 6c 6c 79 20 6e 65  65 64 20 74 6f 20 3c 23  |mally need to <#|
0002f250  69 6e 63 6c 75 64 65 3d  3e 69 6e 63 6c 75 64 65  |include=>include|
0002f260  3e 20 74 68 69 73 2c 20  3c 64 72 61 77 66 6f 62  |> this, <drawfob|
0002f270  6a 2e 68 3d 3e 64 72 61  77 66 6f 62 6a 3e 20 70  |j.h=>drawfobj> p|
0002f280  75 6c 6c 73 20 69 74 20  69 6e 2e 0a 0a 4d 61 63  |ulls it in...Mac|
0002f290  72 6f 73 3a 0a 0a 23 54  61 62 6c 65 20 34 20 32  |ros:..#Table 4 2|
0002f2a0  30 0a 3c 70 61 63 6b 6d  61 73 6b 5f 6a 6f 69 6e  |0.<packmask_join|
0002f2b0  3e 0a 3c 70 61 63 6b 6d  61 73 6b 5f 65 6e 64 63  |>.<packmask_endc|
0002f2c0  61 70 3e 0a 3c 70 61 63  6b 6d 61 73 6b 5f 73 74  |ap>.<packmask_st|
0002f2d0  61 72 74 63 61 70 3e 0a  3c 70 61 63 6b 6d 61 73  |artcap>.<packmas|
0002f2e0  6b 5f 77 69 6e 64 72 75  6c 65 3e 0a 3c 70 61 63  |k_windrule>.<pac|
0002f2f0  6b 6d 61 73 6b 5f 64 61  73 68 65 64 3e 0a 3c 70  |kmask_dashed>.<p|
0002f300  61 63 6b 73 68 66 74 5f  6a 6f 69 6e 3e 0a 3c 70  |ackshft_join>.<p|
0002f310  61 63 6b 73 68 66 74 5f  65 6e 64 63 61 70 3e 0a  |ackshft_endcap>.|
0002f320  3c 70 61 63 6b 73 68 66  74 5f 73 74 61 72 74 63  |<packshft_startc|
0002f330  61 70 3e 0a 3c 70 61 63  6b 73 68 66 74 5f 77 69  |ap>.<packshft_wi|
0002f340  6e 64 72 75 6c 65 3e 0a  3c 70 61 63 6b 73 68 66  |ndrule>.<packshf|
0002f350  74 5f 64 61 73 68 65 64  3e 0a 23 45 6e 64 54 61  |t_dashed>.#EndTa|
0002f360  62 6c 65 0a 0a 54 79 70  65 73 3a 0a 0a 23 54 61  |ble..Types:..#Ta|
0002f370  62 6c 65 20 31 35 20 32  30 0a 3c 64 72 61 77 5f  |ble 15 20.<draw_|
0002f380  73 69 7a 65 74 79 70 3e  0a 3c 64 72 61 77 5f 63  |sizetyp>.<draw_c|
0002f390  6f 6c 74 79 70 3e 0a 3c  64 72 61 77 5f 70 61 74  |oltyp>.<draw_pat|
0002f3a0  68 77 69 64 74 68 3e 0a  3c 64 72 61 77 5f 62 62  |hwidth>.<draw_bb|
0002f3b0  6f 78 74 79 70 3e 0a 3c  64 72 61 77 5f 6a 6f 69  |oxtyp>.<draw_joi|
0002f3c0  6e 74 79 70 3e 0a 3c 64  72 61 77 5f 63 61 70 74  |ntyp>.<draw_capt|
0002f3d0  79 70 3e 0a 3c 64 72 61  77 5f 77 69 6e 64 74 79  |yp>.<draw_windty|
0002f3e0  70 3e 0a 3c 64 72 61 77  5f 64 61 73 68 74 79 70  |p>.<draw_dashtyp|
0002f3f0  3e 0a 3c 64 72 61 77 5f  70 61 74 68 73 74 79 6c  |>.<draw_pathstyl|
0002f400  65 3e 0a 3c 64 72 61 77  5f 66 6f 6e 74 72 65 66  |e>.<draw_fontref|
0002f410  3e 0a 3c 64 72 61 77 5f  74 65 78 74 73 74 79 6c  |>.<draw_textstyl|
0002f420  65 3e 0a 3c 64 72 61 77  5f 66 6f 6e 74 73 69 7a  |e>.<draw_fontsiz|
0002f430  65 3e 0a 3c 66 6f 6e 74  72 65 63 3e 0a 3c 64 72  |e>.<fontrec>.<dr|
0002f440  61 77 5f 74 61 67 74 79  70 3e 0a 3c 64 72 61 77  |aw_tagtyp>.<draw|
0002f450  5f 6f 62 6a 63 6f 6f 72  64 3e 0a 3c 64 72 61 77  |_objcoord>.<draw|
0002f460  5f 66 69 6c 65 68 65 61  64 65 72 3e 0a 3c 64 72  |_fileheader>.<dr|
0002f470  61 77 5f 6f 62 6a 68 64  72 3e 0a 3c 64 72 61 77  |aw_objhdr>.<draw|
0002f480  5f 66 6f 6e 74 6c 69 73  74 73 74 72 68 64 72 3e  |_fontliststrhdr>|
0002f490  0a 3c 64 72 61 77 5f 66  6f 6e 74 6c 69 73 74 73  |.<draw_fontlists|
0002f4a0  74 72 3e 0a 3c 64 72 61  77 5f 74 65 78 74 73 74  |tr>.<draw_textst|
0002f4b0  72 68 64 72 3e 0a 3c 64  72 61 77 5f 74 65 78 74  |rhdr>.<draw_text|
0002f4c0  73 74 72 3e 0a 3c 64 72  61 77 5f 70 61 74 68 5f  |str>.<draw_path_|
0002f4d0  74 61 67 74 79 70 65 3e  0a 3c 50 61 74 68 5f 6d  |tagtype>.<Path_m|
0002f4e0  6f 76 65 73 74 72 3e 0a  3c 50 61 74 68 5f 6c 69  |ovestr>.<Path_li|
0002f4f0  6e 65 73 74 72 3e 0a 3c  50 61 74 68 5f 63 75 72  |nestr>.<Path_cur|
0002f500  76 65 73 74 72 3e 0a 3c  50 61 74 68 5f 63 6c 6f  |vestr>.<Path_clo|
0002f510  73 65 73 74 72 3e 0a 3c  50 61 74 68 5f 74 65 72  |sestr>.<Path_ter|
0002f520  6d 73 74 72 3e 0a 3c 4c  61 72 67 65 73 74 5f 70  |mstr>.<Largest_p|
0002f530  61 74 68 5f 73 74 72 3e  0a 3c 50 61 74 68 5f 65  |ath_str>.<Path_e|
0002f540  6c 65 70 74 72 3e 0a 3c  64 72 61 77 5f 64 61 73  |leptr>.<draw_das|
0002f550  68 73 74 72 68 64 72 3e  0a 3c 64 72 61 77 5f 64  |hstrhdr>.<draw_d|
0002f560  61 73 68 73 74 72 3e 0a  3c 64 72 61 77 5f 6a 6f  |ashstr>.<draw_jo|
0002f570  69 6e 74 73 70 65 63 3e  0a 3c 64 72 61 77 5f 70  |intspec>.<draw_p|
0002f580  61 74 68 73 74 72 68 64  72 3e 0a 3c 64 72 61 77  |athstrhdr>.<draw|
0002f590  5f 70 61 74 68 73 74 72  3e 0a 3c 64 72 61 77 5f  |_pathstr>.<draw_|
0002f5a0  73 70 72 69 73 74 72 68  64 72 3e 0a 3c 64 72 61  |spristrhdr>.<dra|
0002f5b0  77 5f 73 70 72 69 73 74  72 3e 0a 3c 64 72 61 77  |w_spristr>.<draw|
0002f5c0  5f 67 72 6f 75 70 6e 61  6d 65 74 79 70 3e 0a 3c  |_groupnametyp>.<|
0002f5d0  64 72 61 77 5f 67 72 6f  75 73 74 72 3e 0a 3c 64  |draw_groustr>.<d|
0002f5e0  72 61 77 5f 74 65 78 74  63 6f 6c 68 64 72 3e 0a  |raw_textcolhdr>.|
0002f5f0  3c 64 72 61 77 5f 74 65  78 74 61 72 65 61 73 74  |<draw_textareast|
0002f600  72 68 64 72 3e 0a 3c 64  72 61 77 5f 74 65 78 74  |rhdr>.<draw_text|
0002f610  61 72 65 61 68 64 72 3e  0a 3c 64 72 61 77 5f 74  |areahdr>.<draw_t|
0002f620  65 78 74 61 72 65 61 73  74 72 65 6e 64 3e 0a 3c  |extareastrend>.<|
0002f630  64 72 61 77 5f 74 65 78  74 61 72 65 61 65 6e 64  |draw_textareaend|
0002f640  3e 0a 23 45 6e 64 54 61  62 6c 65 00 44 41 54 41  |>.#EndTable.DATA|
0002f650  de 03 00 00 64 72 61 77  6d 6f 64 2e 68 0a 54 68  |....drawmod.h.Th|
0002f660  69 73 20 68 65 61 64 65  72 20 70 72 6f 76 69 64  |is header provid|
0002f670  65 73 20 61 6e 20 69 6e  74 65 72 66 61 63 65 20  |es an interface |
0002f680  74 6f 20 74 68 65 20 44  72 61 77 20 6d 6f 64 75  |to the Draw modu|
0002f690  6c 65 20 28 6e 6f 74 20  74 6f 20 62 65 20 63 6f  |le (not to be co|
0002f6a0  6e 66 75 73 65 64 20 77  69 74 68 20 21 44 72 61  |nfused with !Dra|
0002f6b0  77 29 2e 20 49 74 20 63  61 6c 6c 73 20 74 68 65  |w). It calls the|
0002f6c0  20 3c 44 72 61 77 20 53  57 49 73 3d 3e 53 57 49  | <Draw SWIs=>SWI|
0002f6d0  3a 44 72 61 77 5f 3e 2e  0a 0a 46 75 6e 63 74 69  |:Draw_>...Functi|
0002f6e0  6f 6e 73 3a 0a 0a 23 54  61 62 6c 65 20 35 20 32  |ons:..#Table 5 2|
0002f6f0  33 0a 3c 64 72 61 77 6d  6f 64 5f 66 69 6c 6c 3e  |3.<drawmod_fill>|
0002f700  0a 3c 64 72 61 77 6d 6f  64 5f 73 74 72 6f 6b 65  |.<drawmod_stroke|
0002f710  3e 0a 3c 64 72 61 77 6d  6f 64 5f 64 6f 5f 73 74  |>.<drawmod_do_st|
0002f720  72 6f 6b 65 70 61 74 68  3e 0a 3c 64 72 61 77 6d  |rokepath>.<drawm|
0002f730  6f 64 5f 61 73 6b 5f 73  74 72 6f 6b 65 70 61 74  |od_ask_strokepat|
0002f740  68 3e 0a 3c 64 72 61 77  6d 6f 64 5f 64 6f 5f 66  |h>.<drawmod_do_f|
0002f750  6c 61 74 74 65 6e 70 61  74 68 3e 0a 3c 64 72 61  |lattenpath>.<dra|
0002f760  77 6d 6f 64 5f 61 73 6b  5f 66 6c 61 74 74 65 6e  |wmod_ask_flatten|
0002f770  70 61 74 68 3e 0a 3c 64  72 61 77 6d 6f 64 5f 62  |path>.<drawmod_b|
0002f780  75 66 5f 74 72 61 6e 73  66 6f 72 6d 70 61 74 68  |uf_transformpath|
0002f790  3e 0a 3c 64 72 61 77 6d  6f 64 5f 69 6e 73 69 74  |>.<drawmod_insit|
0002f7a0  75 5f 74 72 61 6e 73 66  6f 72 6d 70 61 74 68 3e  |u_transformpath>|
0002f7b0  0a 3c 64 72 61 77 6d 6f  64 5f 70 72 6f 63 65 73  |.<drawmod_proces|
0002f7c0  73 70 61 74 68 3e 0a 23  65 6e 64 74 61 62 6c 65  |spath>.#endtable|
0002f7d0  0a 0a 4d 61 63 72 6f 73  3a 0a 0a 23 54 61 62 6c  |..Macros:..#Tabl|
0002f7e0  65 20 34 20 32 33 0a 3c  63 61 70 5f 62 75 74 74  |e 4 23.<cap_butt|
0002f7f0  3e 0a 3c 63 61 70 5f 72  6f 75 6e 64 3e 0a 3c 63  |>.<cap_round>.<c|
0002f800  61 70 5f 73 71 75 61 72  65 3e 0a 3c 63 61 70 5f  |ap_square>.<cap_|
0002f810  74 72 69 61 6e 67 3e 0a  3c 6a 6f 69 6e 5f 6d 69  |triang>.<join_mi|
0002f820  74 72 65 64 3e 20 0a 3c  6a 6f 69 6e 5f 72 6f 75  |tred> .<join_rou|
0002f830  6e 64 3e 20 0a 3c 6a 6f  69 6e 5f 62 65 76 65 6c  |nd> .<join_bevel|
0002f840  6c 65 64 3e 0a 23 45 6e  64 54 61 62 6c 65 0a 0a  |led>.#EndTable..|
0002f850  54 79 70 65 73 3a 0a 0a  23 54 61 62 6c 65 20 31  |Types:..#Table 1|
0002f860  30 20 32 33 0a 3c 64 72  61 77 6d 6f 64 5f 70 61  |0 23.<drawmod_pa|
0002f870  74 68 65 6c 65 6d 70 74  72 3e 0a 3c 64 72 61 77  |thelemptr>.<draw|
0002f880  6d 6f 64 5f 66 69 6c 6c  74 79 70 65 3e 20 0a 3c  |mod_filltype> .<|
0002f890  64 72 61 77 6d 6f 64 5f  63 61 70 6a 6f 69 6e 73  |drawmod_capjoins|
0002f8a0  70 65 63 3e 0a 3c 64 72  61 77 6d 6f 64 5f 64 61  |pec>.<drawmod_da|
0002f8b0  73 68 68 64 72 3e 20 0a  3c 64 72 61 77 6d 6f 64  |shhdr> .<drawmod|
0002f8c0  5f 6c 69 6e 65 3e 20 0a  3c 64 72 61 77 6d 6f 64  |_line> .<drawmod|
0002f8d0  5f 74 72 61 6e 73 6d 61  74 3e 20 0a 3c 64 72 61  |_transmat> .<dra|
0002f8e0  77 6d 6f 64 5f 62 6f 78  3e 20 0a 3c 64 72 61 77  |wmod_box> .<draw|
0002f8f0  6d 6f 64 5f 6f 70 74 69  6f 6e 73 3e 20 0a 3c 64  |mod_options> .<d|
0002f900  72 61 77 6d 6f 64 5f 62  75 66 66 65 72 3e 20 0a  |rawmod_buffer> .|
0002f910  3c 64 72 61 77 6d 6f 64  5f 74 61 67 74 79 70 65  |<drawmod_tagtype|
0002f920  3e 20 0a 3c 64 72 61 77  6d 6f 64 5f 66 69 6c 6c  |> .<drawmod_fill|
0002f930  69 6e 67 5f 6f 70 74 69  6f 6e 73 3e 20 0a 3c 64  |ing_options> .<d|
0002f940  72 61 77 6d 6f 64 5f 70  61 74 68 5f 74 61 67 74  |rawmod_path_tagt|
0002f950  79 70 65 3e 20 0a 3c 64  72 61 77 6d 6f 64 5f 70  |ype> .<drawmod_p|
0002f960  61 74 68 5f 65 6e 64 73  74 72 3e 20 0a 3c 64 72  |ath_endstr> .<dr|
0002f970  61 77 6d 6f 64 5f 70 61  74 68 5f 70 74 72 73 74  |awmod_path_ptrst|
0002f980  72 3e 20 0a 3c 64 72 61  77 6d 6f 64 5f 70 61 74  |r> .<drawmod_pat|
0002f990  68 5f 6d 6f 76 65 73 74  72 3e 20 0a 3c 64 72 61  |h_movestr> .<dra|
0002f9a0  77 6d 6f 64 5f 70 61 74  68 5f 63 6c 6f 73 65 67  |wmod_path_closeg|
0002f9b0  61 70 73 74 72 3e 20 0a  3c 64 72 61 77 6d 6f 64  |apstr> .<drawmod|
0002f9c0  5f 70 61 74 68 5f 63 6c  6f 73 65 6c 69 6e 65 73  |_path_closelines|
0002f9d0  74 72 3e 0a 3c 64 72 61  77 6d 6f 64 5f 70 61 74  |tr>.<drawmod_pat|
0002f9e0  68 5f 62 65 7a 69 65 72  73 74 72 3e 20 0a 3c 64  |h_bezierstr> .<d|
0002f9f0  72 61 77 6d 6f 64 5f 70  61 74 68 5f 67 61 70 74  |rawmod_path_gapt|
0002fa00  6f 73 74 72 3e 20 0a 3c  64 72 61 77 6d 6f 64 5f  |ostr> .<drawmod_|
0002fa10  70 61 74 68 5f 6c 69 6e  65 74 6f 73 74 72 3e 20  |path_linetostr> |
0002fa20  0a 23 45 6e 64 54 61 62  6c 65 00 00 44 49 52 24  |.#EndTable..DIR$|
0002fa30  48 04 00 00 48 04 00 00  74 fe 02 00 46 ff ff ff  |H...H...t...F...|
0002fa40  26 c6 45 23 86 01 00 00  13 00 00 00 00 00 00 00  |&.E#............|
0002fa50  61 73 6b 5f 66 6c 61 74  74 65 6e 70 61 74 68 00  |ask_flattenpath.|
0002fa60  fc ff 02 00 46 ff ff ff  2e af 45 23 d2 01 00 00  |....F.....E#....|
0002fa70  13 00 00 00 00 00 00 00  61 73 6b 5f 73 74 72 6f  |........ask_stro|
0002fa80  6b 65 70 61 74 68 00 00  d0 01 03 00 46 ff ff ff  |kepath......F...|
0002fa90  c6 89 46 23 a0 00 00 00  13 00 00 00 00 00 00 00  |..F#............|
0002faa0  62 6f 78 00 70 02 03 00  46 ff ff ff 19 d0 45 23  |box.p...F.....E#|
0002fab0  68 01 00 00 13 00 00 00  00 00 00 00 62 75 66 5f  |h...........buf_|
0002fac0  74 72 61 6e 73 66 6f 72  6d 70 61 74 68 00 00 00  |transformpath...|
0002fad0  d8 03 03 00 46 ff ff ff  d9 9f 46 23 b9 01 00 00  |....F.....F#....|
0002fae0  13 00 00 00 00 00 00 00  62 75 66 66 65 72 00 00  |........buffer..|
0002faf0  94 05 03 00 46 ff ff ff  73 70 46 23 94 01 00 00  |....F...spF#....|
0002fb00  13 00 00 00 00 00 00 00  63 61 70 6a 6f 69 6e 73  |........capjoins|
0002fb10  70 65 63 00 28 07 03 00  46 ff ff ff 80 78 46 23  |pec.(...F....xF#|
0002fb20  cd 00 00 00 13 00 00 00  00 00 00 00 64 61 73 68  |............dash|
0002fb30  68 64 72 00 f8 07 03 00  46 ff ff ff 1a bc 45 23  |hdr.....F.....E#|
0002fb40  6c 01 00 00 13 00 00 00  00 00 00 00 64 6f 5f 66  |l...........do_f|
0002fb50  6c 61 74 74 65 6e 70 61  74 68 00 00 64 09 03 00  |lattenpath..d...|
0002fb60  46 ff ff ff 93 a3 45 23  69 01 00 00 13 00 00 00  |F.....E#i.......|
0002fb70  00 00 00 00 64 6f 5f 73  74 72 6f 6b 65 70 61 74  |....do_strokepat|
0002fb80  68 00 00 00 d0 0a 03 00  46 ff ff ff 36 84 45 23  |h.......F...6.E#|
0002fb90  1d 02 00 00 13 00 00 00  00 00 00 00 66 69 6c 6c  |............fill|
0002fba0  00 00 00 00 f0 0c 03 00  46 ff ff ff bb ba 46 23  |........F.....F#|
0002fbb0  cf 01 00 00 13 00 00 00  00 00 00 00 66 69 6c 6c  |............fill|
0002fbc0  69 6e 67 5f 6f 70 74 69  6f 6e 73 00 c0 0e 03 00  |ing_options.....|
0002fbd0  46 ff ff ff 44 61 46 23  4e 02 00 00 13 00 00 00  |F...DaF#N.......|
0002fbe0  00 00 00 00 66 69 6c 6c  74 79 70 65 00 00 00 00  |....filltype....|
0002fbf0  10 11 03 00 46 ff ff ff  8c da 45 23 56 01 00 00  |....F.....E#V...|
0002fc00  13 00 00 00 00 00 00 00  69 6e 73 69 74 75 5f 74  |........insitu_t|
0002fc10  72 61 6e 73 66 6f 72 6d  70 61 74 68 00 00 00 00  |ransformpath....|
0002fc20  68 12 03 00 46 ff ff ff  f9 7d 46 23 05 01 00 00  |h...F....}F#....|
0002fc30  13 00 00 00 00 00 00 00  6c 69 6e 65 00 00 00 00  |........line....|
0002fc40  70 13 03 00 46 ff ff ff  b1 91 46 23 02 01 00 00  |p...F.....F#....|
0002fc50  13 00 00 00 00 00 00 00  6f 70 74 69 6f 6e 73 00  |........options.|
0002fc60  74 14 03 00 46 ff ff ff  e8 ff 46 23 0f 01 00 00  |t...F.....F#....|
0002fc70  13 00 00 00 00 00 00 00  70 61 74 68 5f 62 65 7a  |........path_bez|
0002fc80  69 65 72 73 74 72 00 00  84 15 03 00 46 ff ff ff  |ierstr......F...|
0002fc90  f9 ec 46 23 c3 00 00 00  13 00 00 00 00 00 00 00  |..F#............|
0002fca0  70 61 74 68 5f 63 6c 6f  73 65 67 61 70 73 74 72  |path_closegapstr|
0002fcb0  00 00 00 00 48 16 03 00  46 ff ff ff 76 f5 46 23  |....H...F...v.F#|
0002fcc0  c5 00 00 00 13 00 00 00  00 00 00 00 70 61 74 68  |............path|
0002fcd0  5f 63 6c 6f 73 65 6c 69  6e 65 73 74 72 00 00 00  |_closelinestr...|
0002fce0  10 17 03 00 46 ff ff ff  cd d4 46 23 da 00 00 00  |....F.....F#....|
0002fcf0  13 00 00 00 00 00 00 00  70 61 74 68 5f 65 6e 64  |........path_end|
0002fd00  73 74 72 00 ec 17 03 00  46 ff ff ff 9a 0c 47 23  |str.....F.....G#|
0002fd10  bd 00 00 00 13 00 00 00  00 00 00 00 70 61 74 68  |............path|
0002fd20  5f 67 61 70 74 6f 73 74  72 00 00 00 ac 18 03 00  |_gaptostr.......|
0002fd30  46 ff ff ff 0c 16 47 23  bf 00 00 00 13 00 00 00  |F.....G#........|
0002fd40  00 00 00 00 70 61 74 68  5f 6c 69 6e 65 74 6f 73  |....path_linetos|
0002fd50  74 72 00 00 6c 19 03 00  46 ff ff ff d6 e6 46 23  |tr..l...F.....F#|
0002fd60  be 00 00 00 13 00 00 00  00 00 00 00 70 61 74 68  |............path|
0002fd70  5f 6d 6f 76 65 73 74 72  00 00 00 00 2c 1a 03 00  |_movestr....,...|
0002fd80  46 ff ff ff b7 de 46 23  c7 00 00 00 13 00 00 00  |F.....F#........|
0002fd90  00 00 00 00 70 61 74 68  5f 70 74 72 73 74 72 00  |....path_ptrstr.|
0002fda0  f4 1a 03 00 46 ff ff ff  cc c6 46 23 d4 01 00 00  |....F.....F#....|
0002fdb0  13 00 00 00 00 00 00 00  70 61 74 68 5f 74 61 67  |........path_tag|
0002fdc0  74 79 70 65 00 00 00 00  c8 1c 03 00 46 ff ff ff  |type........F...|
0002fdd0  9b 38 46 23 02 02 00 00  13 00 00 00 00 00 00 00  |.8F#............|
0002fde0  70 61 74 68 65 6c 65 6d  70 74 72 00 cc 1e 03 00  |pathelemptr.....|
0002fdf0  46 ff ff ff 08 ee 45 23  a5 02 00 00 13 00 00 00  |F.....E#........|
0002fe00  00 00 00 00 70 72 6f 63  65 73 73 70 61 74 68 00  |....processpath.|
0002fe10  74 21 03 00 46 ff ff ff  9b 99 45 23 61 02 00 00  |t!..F.....E#a...|
0002fe20  13 00 00 00 00 00 00 00  73 74 72 6f 6b 65 00 00  |........stroke..|
0002fe30  d8 23 03 00 46 ff ff ff  4a ab 46 23 a3 00 00 00  |.#..F...J.F#....|
0002fe40  13 00 00 00 00 00 00 00  74 61 67 74 79 70 65 00  |........tagtype.|
0002fe50  7c 24 03 00 46 ff ff ff  24 86 46 23 ae 00 00 00  ||$..F...$.F#....|
0002fe60  13 00 00 00 00 00 00 00  74 72 61 6e 73 6d 61 74  |........transmat|
0002fe70  00 00 00 00 44 41 54 41  86 01 00 00 64 72 61 77  |....DATA....draw|
0002fe80  6d 6f 64 5f 61 73 6b 5f  66 6c 61 74 74 65 6e 70  |mod_ask_flattenp|
0002fe90  61 74 68 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |ath.Syntax:.<os_|
0002fea0  65 72 72 6f 72 3e 20 2a  64 72 61 77 6d 6f 64 5f  |error> *drawmod_|
0002feb0  61 73 6b 5f 66 6c 61 74  74 65 6e 70 61 74 68 20  |ask_flattenpath |
0002fec0  28 3c 64 72 61 77 6d 6f  64 5f 70 61 74 68 65 6c  |(<drawmod_pathel|
0002fed0  65 6d 70 74 72 3e 20 70  61 74 68 2c 20 69 6e 74  |emptr> path, int|
0002fee0  20 66 6c 61 74 6e 65 73  73 2c 20 69 6e 74 20 2a  | flatness, int *|
0002fef0  62 75 66 6c 65 6e 29 3b  0a 48 65 61 64 65 72 3a  |buflen);.Header:|
0002ff00  09 3c 64 72 61 77 6d 6f  64 2e 68 3d 3e 64 72 61  |.<drawmod.h=>dra|
0002ff10  77 6d 6f 64 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |wmod>..Returns:.|
0002ff20  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
0002ff30  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
0002ff40  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
0002ff50  69 6f 6e 20 63 6f 6e 76  65 72 74 73 20 61 6e 20  |ion converts an |
0002ff60  69 6e 70 75 74 20 70 61  74 68 20 28 69 6e 20 7b  |input path (in {|
0002ff70  2f 7d 70 61 74 68 7b 2f  7d 29 20 69 6e 74 6f 20  |/}path{/}) into |
0002ff80  61 20 66 6c 61 74 74 65  6e 65 64 20 6f 75 74 70  |a flattened outp|
0002ff90  75 74 20 70 61 74 68 2c  20 61 63 63 6f 72 64 69  |ut path, accordi|
0002ffa0  6e 67 20 74 6f 20 74 68  65 20 66 6c 61 74 6e 65  |ng to the flatne|
0002ffb0  73 73 20 28 30 20 66 6f  72 20 64 65 66 61 75 6c  |ss (0 for defaul|
0002ffc0  74 29 2e 20 49 74 20 72  65 74 75 72 6e 73 20 74  |t). It returns t|
0002ffd0  68 65 20 6c 65 6e 67 74  68 20 6f 66 20 73 75 63  |he length of suc|
0002ffe0  68 20 61 20 70 61 74 68  20 69 6e 20 7b 2f 7d 2a  |h a path in {/}*|
0002fff0  62 75 66 6c 65 6e 7b 2f  7d 2e 00 00 44 41 54 41  |buflen{/}...DATA|
00030000  d2 01 00 00 64 72 61 77  6d 6f 64 5f 61 73 6b 5f  |....drawmod_ask_|
00030010  73 74 72 6f 6b 65 70 61  74 68 0a 53 79 6e 74 61  |strokepath.Synta|
00030020  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 64  |x:.<os_error> *d|
00030030  72 61 77 6d 6f 64 5f 61  73 6b 5f 73 74 72 6f 6b  |rawmod_ask_strok|
00030040  65 70 61 74 68 20 28 3c  64 72 61 77 6d 6f 64 5f  |epath (<drawmod_|
00030050  70 61 74 68 65 6c 65 6d  70 74 72 3e 20 70 61 74  |pathelemptr> pat|
00030060  68 2c 20 3c 64 72 61 77  6d 6f 64 5f 74 72 61 6e  |h, <drawmod_tran|
00030070  73 6d 61 74 3e 20 2a 6d  61 74 72 69 78 2c 20 3c  |smat> *matrix, <|
00030080  64 72 61 77 6d 6f 64 5f  6c 69 6e 65 3e 20 2a 6c  |drawmod_line> *l|
00030090  69 6e 65 5f 73 74 79 6c  65 2c 20 69 6e 74 20 2a  |ine_style, int *|
000300a0  62 75 66 6c 65 6e 29 3b  0a 48 65 61 64 65 72 3a  |buflen);.Header:|
000300b0  09 3c 64 72 61 77 6d 6f  64 2e 68 3d 3e 64 72 61  |.<drawmod.h=>dra|
000300c0  77 6d 6f 64 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |wmod>..Returns:.|
000300d0  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000300e0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000300f0  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
00030100  69 6f 6e 20 64 6f 65 73  20 74 68 65 20 73 61 6d  |ion does the sam|
00030110  65 20 61 73 20 3c 64 72  61 77 6d 6f 64 5f 73 74  |e as <drawmod_st|
00030120  72 6f 6b 65 3e 2c 20 65  78 63 65 70 74 20 74 68  |roke>, except th|
00030130  61 74 20 6f 75 74 70 75  74 20 69 73 20 74 6f 20  |at output is to |
00030140  61 20 62 75 66 66 65 72  2e 20 54 68 69 73 20 66  |a buffer. This f|
00030150  75 6e 63 74 69 6f 6e 20  64 6f 65 73 20 6e 6f 74  |unction does not|
00030160  20 61 63 74 75 61 6c 6c  79 20 72 65 74 75 72 6e  | actually return|
00030170  20 74 68 65 20 64 61 74  61 2c 20 6a 75 73 74 20  | the data, just |
00030180  74 68 65 20 6c 65 6e 67  74 68 20 6f 66 20 69 74  |the length of it|
00030190  20 28 69 6e 20 7b 2f 7d  2a 62 75 66 6c 65 6e 7b  | (in {/}*buflen{|
000301a0  2f 7d 29 2e 20 3c 64 72  61 77 6d 6f 64 5f 64 6f  |/}). <drawmod_do|
000301b0  5f 73 74 72 6f 6b 65 70  61 74 68 3e 20 72 65 74  |_strokepath> ret|
000301c0  75 72 6e 73 20 74 68 65  20 64 61 74 61 2e 00 00  |urns the data...|
000301d0  44 41 54 41 a0 00 00 00  64 72 61 77 6d 6f 64 5f  |DATA....drawmod_|
000301e0  62 6f 78 0a 54 68 69 73  20 74 79 70 65 20 69 73  |box.This type is|
000301f0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 64 72 61  | defined in <dra|
00030200  77 6d 6f 64 2e 68 3d 3e  64 72 61 77 6d 6f 64 3e  |wmod.h=>drawmod>|
00030210  20 61 73 20 74 68 65 20  66 6f 6c 6c 6f 77 69 6e  | as the followin|
00030220  67 20 73 74 72 75 63 74  75 72 65 3a 0a 0a 20 20  |g structure:..  |
00030230  5c 7b 0a 20 20 20 20 69  6e 74 20 6c 6f 77 78 3b  |\{.    int lowx;|
00030240  0a 20 20 20 20 69 6e 74  20 6c 6f 77 59 3b 0a 20  |.    int lowY;. |
00030250  20 20 20 69 6e 74 20 68  69 67 68 58 3b 0a 20 20  |   int highX;.  |
00030260  20 20 69 6e 74 20 68 69  67 68 59 3b 0a 20 20 7d  |  int highY;.  }|
00030270  44 41 54 41 68 01 00 00  64 72 61 77 6d 6f 64 5f  |DATAh...drawmod_|
00030280  62 75 66 5f 74 72 61 6e  73 66 6f 72 6d 70 61 74  |buf_transformpat|
00030290  68 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |h.Syntax:.<os_er|
000302a0  72 6f 72 3e 20 2a 64 72  61 77 6d 6f 64 5f 62 75  |ror> *drawmod_bu|
000302b0  66 5f 74 72 61 6e 73 66  6f 72 6d 70 61 74 68 20  |f_transformpath |
000302c0  28 3c 64 72 61 77 6d 6f  64 5f 70 61 74 68 65 6c  |(<drawmod_pathel|
000302d0  65 6d 70 74 72 3e 20 70  61 74 68 2c 20 3c 64 72  |emptr> path, <dr|
000302e0  61 77 6d 6f 64 5f 62 75  66 66 65 72 3e 20 2a 62  |awmod_buffer> *b|
000302f0  75 66 66 65 72 2c 20 3c  64 72 61 77 6d 6f 64 5f  |uffer, <drawmod_|
00030300  74 72 61 6e 73 6d 61 74  3e 20 2a 6d 61 74 72 69  |transmat> *matri|
00030310  78 29 3b 0a 48 65 61 64  65 72 3a 09 3c 64 72 61  |x);.Header:.<dra|
00030320  77 6d 6f 64 2e 68 3d 3e  64 72 61 77 6d 6f 64 3e  |wmod.h=>drawmod>|
00030330  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
00030340  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
00030350  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
00030360  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 70  |.This function p|
00030370  75 74 73 20 74 68 65 20  70 61 74 68 20 69 6e 20  |uts the path in |
00030380  2f 70 61 74 68 2f 20 74  68 72 6f 75 67 74 68 20  |/path/ througth |
00030390  74 68 65 20 74 72 61 6e  73 66 6f 72 6d 61 74 69  |the transformati|
000303a0  6f 6e 20 6d 61 74 72 69  78 20 69 6e 20 2f 6d 61  |on matrix in /ma|
000303b0  74 72 69 78 2f 20 61 6e  64 20 70 6c 61 63 65 73  |trix/ and places|
000303c0  20 74 68 65 20 72 65 73  75 6c 74 20 69 6e 20 2f  | the result in /|
000303d0  62 75 66 66 65 72 2f 2e  44 41 54 41 b9 01 00 00  |buffer/.DATA....|
000303e0  64 72 61 77 6d 6f 64 5f  62 75 66 66 65 72 0a 54  |drawmod_buffer.T|
000303f0  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
00030400  6e 65 64 20 69 6e 20 3c  64 72 61 77 6d 6f 64 2e  |ned in <drawmod.|
00030410  68 3d 3e 64 72 61 77 6d  6f 64 3e 20 61 73 20 61  |h=>drawmod> as a|
00030420  20 74 79 70 65 20 63 6f  6e 74 61 69 6e 69 6e 67  | type containing|
00030430  20 61 20 70 61 74 68 20  62 75 66 66 65 72 2e 20  | a path buffer. |
00030440  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It is defined as|
00030450  3a 0a 0a 20 20 5c 7b 0a  20 20 20 20 69 6e 74 20  |:..  \{.    int |
00030460  7a 65 72 6f 77 6f 72 64  3b 0a 20 20 20 20 69 6e  |zeroword;.    in|
00030470  74 20 73 69 7a 65 77 6f  72 64 3b 0a 20 20 7d 0a  |t sizeword;.  }.|
00030480  0a 54 79 70 69 63 61 6c  6c 79 2c 20 79 6f 75 20  |.Typically, you |
00030490  77 69 6c 6c 20 61 6c 6c  6f 63 61 74 65 20 73 70  |will allocate sp|
000304a0  61 63 65 20 66 6f 72 20  79 6f 75 72 20 70 61 74  |ace for your pat|
000304b0  68 20 61 6e 64 20 74 68  65 6e 20 73 65 74 20 61  |h and then set a|
000304c0  20 76 61 72 69 61 62 6c  65 20 6f 66 20 74 79 70  | variable of typ|
000304d0  65 20 7b 2f 7d 64 72 61  77 6d 6f 64 5f 62 75 66  |e {/}drawmod_buf|
000304e0  66 65 72 20 2a 7b 2f 7d  20 74 6f 20 70 6f 69 6e  |fer *{/} to poin|
000304f0  74 20 61 74 20 69 74 2e  20 46 6f 72 20 66 75 6e  |t at it. For fun|
00030500  63 74 69 6f 6e 73 20 77  68 69 63 68 20 74 61 6b  |ctions which tak|
00030510  65 20 61 20 7b 2f 7d 64  72 61 77 6d 6f 64 5f 62  |e a {/}drawmod_b|
00030520  75 66 66 65 72 20 2a 7b  2f 7d 20 70 61 72 61 6d  |uffer *{/} param|
00030530  65 74 65 72 2c 20 2f 7a  65 72 6f 77 6f 72 64 2f  |eter, /zeroword/|
00030540  20 73 68 6f 75 6c 64 20  63 6f 6e 74 61 69 6e 20  | should contain |
00030550  30 20 61 6e 64 20 2f 73  69 7a 65 77 6f 72 64 2f  |0 and /sizeword/|
00030560  20 73 68 6f 75 6c 64 20  69 6e 64 69 63 61 74 65  | should indicate|
00030570  20 68 6f 77 20 6d 61 6e  79 20 62 79 74 65 73 20  | how many bytes |
00030580  66 6f 6c 6c 6f 77 20 69  6e 20 6d 65 6d 6f 72 79  |follow in memory|
00030590  2e 00 00 00 44 41 54 41  94 01 00 00 64 72 61 77  |....DATA....draw|
000305a0  6d 6f 64 5f 63 61 70 6a  6f 69 6e 73 70 65 63 0a  |mod_capjoinspec.|
000305b0  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
000305c0  69 6e 65 64 20 69 6e 20  3c 64 72 61 77 6d 6f 64  |ined in <drawmod|
000305d0  2e 68 3d 3e 64 72 61 77  6d 6f 64 3e 2e 20 49 74  |.h=>drawmod>. It|
000305e0  20 69 73 20 61 20 73 74  72 75 63 74 75 72 65 20  | is a structure |
000305f0  63 6f 6e 74 61 69 6e 69  6e 67 20 74 68 65 20 63  |containing the c|
00030600  61 70 73 20 61 6e 64 20  6a 6f 69 6e 20 73 74 79  |aps and join sty|
00030610  6c 65 73 2e 0a 0a 20 09  5c 7b 0a 20 09 20 09 75  |les... .\{. . .u|
00030620  6e 73 69 67 6e 65 64 20  63 68 61 72 20 6a 6f 69  |nsigned char joi|
00030630  6e 3b 0a 20 09 20 09 75  6e 73 69 67 6e 65 64 20  |n;. . .unsigned |
00030640  63 68 61 72 20 6c 65 61  64 63 61 70 3b 0a 20 09  |char leadcap;. .|
00030650  20 09 75 6e 73 69 67 6e  65 64 20 63 68 61 72 20  | .unsigned char |
00030660  74 72 61 69 6c 63 61 70  3b 0a 20 09 20 09 75 6e  |trailcap;. . .un|
00030670  73 69 67 6e 65 64 20 63  68 61 72 20 72 65 73 65  |signed char rese|
00030680  72 76 65 64 38 3b 0a 20  09 20 09 69 6e 74 20 6d  |rved8;. . .int m|
00030690  69 74 72 65 6c 69 6d 69  74 3b 0a 20 09 20 09 75  |itrelimit;. . .u|
000306a0  6e 73 69 67 6e 65 64 20  73 68 6f 72 74 20 6c 65  |nsigned short le|
000306b0  61 64 5f 74 72 69 63 61  70 5f 77 3b 0a 20 09 20  |ad_tricap_w;. . |
000306c0  09 75 6e 73 69 67 6e 65  64 20 73 68 6f 72 74 20  |.unsigned short |
000306d0  6c 65 61 66 5f 74 72 69  63 61 70 5f 68 3b 0a 20  |leaf_tricap_h;. |
000306e0  09 20 09 75 6e 73 69 67  6e 65 64 20 73 68 6f 72  |. .unsigned shor|
000306f0  74 20 74 72 61 69 6c 5f  74 72 69 63 61 70 5f 77  |t trail_tricap_w|
00030700  3b 0a 20 09 20 09 75 6e  73 69 67 6e 65 64 20 73  |;. . .unsigned s|
00030710  68 6f 72 74 20 74 72 61  69 6c 5f 74 72 69 63 61  |hort trail_trica|
00030720  70 5f 68 3b 0a 20 09 7d  44 41 54 41 cd 00 00 00  |p_h;. .}DATA....|
00030730  64 72 61 77 6d 6f 64 5f  64 61 73 68 68 64 72 0a  |drawmod_dashhdr.|
00030740  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
00030750  69 6e 65 64 20 69 6e 20  3c 64 72 61 77 6d 6f 64  |ined in <drawmod|
00030760  2e 68 3d 3e 64 72 61 77  6d 6f 64 3e 20 61 73 20  |.h=>drawmod> as |
00030770  61 20 74 79 70 65 20 63  6f 6e 74 61 69 6e 69 6e  |a type containin|
00030780  67 20 64 61 73 68 20 70  61 74 74 65 72 6e 20 64  |g dash pattern d|
00030790  61 74 61 20 68 65 61 64  65 72 2e 20 49 74 20 69  |ata header. It i|
000307a0  73 20 64 65 66 69 6e 65  64 20 61 73 20 74 68 65  |s defined as the|
000307b0  20 66 6f 6c 6c 6f 77 69  6e 67 20 73 74 72 75 63  | following struc|
000307c0  74 75 72 65 3a 0a 0a 20  20 5c 7b 0a 20 20 20 20  |ture:..  \{.    |
000307d0  69 6e 74 20 64 61 73 68  73 74 61 72 74 3b 0a 20  |int dashstart;. |
000307e0  20 20 20 69 6e 74 20 64  61 73 68 63 6f 75 6e 74  |   int dashcount|
000307f0  3b 0a 20 20 7d 00 00 00  44 41 54 41 6c 01 00 00  |;.  }...DATAl...|
00030800  64 72 61 77 6d 6f 64 5f  64 6f 5f 66 6c 61 74 74  |drawmod_do_flatt|
00030810  65 6e 70 61 74 68 0a 53  79 6e 74 61 78 3a 09 3c  |enpath.Syntax:.<|
00030820  6f 73 5f 65 72 72 6f 72  3e 20 2a 64 72 61 77 6d  |os_error> *drawm|
00030830  6f 64 5f 64 6f 5f 66 6c  61 74 74 65 6e 70 61 74  |od_do_flattenpat|
00030840  68 20 28 3c 64 72 61 77  6d 6f 64 5f 70 61 74 68  |h (<drawmod_path|
00030850  65 6c 65 6d 70 74 72 3e  20 70 61 74 68 2c 20 3c  |elemptr> path, <|
00030860  64 72 61 77 6d 6f 64 5f  62 75 66 66 65 72 3e 20  |drawmod_buffer> |
00030870  2a 62 75 66 66 65 72 2c  20 69 6e 74 20 66 6c 61  |*buffer, int fla|
00030880  74 6e 65 73 73 29 3b 0a  48 65 61 64 65 72 3a 09  |tness);.Header:.|
00030890  3c 64 72 61 77 6d 6f 64  2e 68 3d 3e 64 72 61 77  |<drawmod.h=>draw|
000308a0  6d 6f 64 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |mod>..Returns:.P|
000308b0  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
000308c0  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
000308d0  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
000308e0  6f 6e 20 63 6f 6e 76 65  72 74 73 20 61 6e 20 69  |on converts an i|
000308f0  6e 70 75 74 20 70 61 74  68 20 28 69 6e 20 7b 2f  |nput path (in {/|
00030900  7d 70 61 74 68 7b 2f 7d  29 20 69 6e 74 6f 20 61  |}path{/}) into a|
00030910  20 66 6c 61 74 74 65 6e  65 64 20 6f 75 74 70 75  | flattened outpu|
00030920  74 20 70 61 74 68 20 28  69 6e 20 7b 2f 7d 62 75  |t path (in {/}bu|
00030930  66 66 65 72 7b 2f 7d 29  2c 20 61 63 63 6f 72 64  |ffer{/}), accord|
00030940  69 6e 67 20 74 6f 20 74  68 65 20 66 6c 61 74 6e  |ing to the flatn|
00030950  65 73 73 20 28 30 20 66  6f 72 20 64 65 66 61 75  |ess (0 for defau|
00030960  6c 74 29 2e 44 41 54 41  69 01 00 00 64 72 61 77  |lt).DATAi...draw|
00030970  6d 6f 64 5f 64 6f 5f 73  74 72 6f 6b 65 70 61 74  |mod_do_strokepat|
00030980  68 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |h.Syntax:.<os_er|
00030990  72 6f 72 3e 20 2a 64 72  61 77 6d 6f 64 5f 64 6f  |ror> *drawmod_do|
000309a0  5f 73 74 72 6f 6b 65 70  61 74 68 20 28 3c 64 72  |_strokepath (<dr|
000309b0  61 77 6d 6f 64 5f 70 61  74 68 65 6c 65 6d 70 74  |awmod_pathelempt|
000309c0  72 3e 20 70 61 74 68 2c  20 3c 64 72 61 77 6d 6f  |r> path, <drawmo|
000309d0  64 5f 74 72 61 6e 73 6d  61 74 3e 20 2a 6d 61 74  |d_transmat> *mat|
000309e0  72 69 78 2c 20 3c 64 72  61 77 6d 6f 64 5f 6c 69  |rix, <drawmod_li|
000309f0  6e 65 3e 20 2a 6c 69 6e  65 5f 73 74 79 6c 65 2c  |ne> *line_style,|
00030a00  20 3c 64 72 61 77 6d 6f  64 5f 62 75 66 66 65 72  | <drawmod_buffer|
00030a10  3e 20 2a 62 75 66 66 65  72 29 3b 0a 48 65 61 64  |> *buffer);.Head|
00030a20  65 72 3a 09 3c 64 72 61  77 6d 6f 64 2e 68 3d 3e  |er:.<drawmod.h=>|
00030a30  64 72 61 77 6d 6f 64 3e  0a 0a 52 65 74 75 72 6e  |drawmod>..Return|
00030a40  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
00030a50  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
00030a60  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
00030a70  6e 63 74 69 6f 6e 20 64  6f 65 73 20 74 68 65 20  |nction does the |
00030a80  73 61 6d 65 20 61 73 20  3c 64 72 61 77 6d 6f 64  |same as <drawmod|
00030a90  5f 73 74 72 6f 6b 65 3e  2c 20 65 78 63 65 70 74  |_stroke>, except|
00030aa0  20 74 68 61 74 20 6f 75  74 70 75 74 20 69 73 20  | that output is |
00030ab0  74 6f 20 61 20 62 75 66  66 65 72 20 28 61 6e 64  |to a buffer (and|
00030ac0  20 6e 6f 74 20 66 69 6c  6c 65 64 29 2e 00 00 00  | not filled)....|
00030ad0  44 41 54 41 1d 02 00 00  64 72 61 77 6d 6f 64 5f  |DATA....drawmod_|
00030ae0  66 69 6c 6c 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |fill.Syntax:.<os|
00030af0  5f 65 72 72 6f 72 3e 20  2a 64 72 61 77 6d 6f 64  |_error> *drawmod|
00030b00  5f 66 69 6c 6c 20 28 3c  64 72 61 77 6d 6f 64 5f  |_fill (<drawmod_|
00030b10  70 61 74 68 65 6c 65 6d  70 74 72 3e 20 70 61 74  |pathelemptr> pat|
00030b20  68 2c 20 3c 64 72 61 77  6d 6f 64 5f 66 69 6c 6c  |h, <drawmod_fill|
00030b30  74 79 70 65 3e 20 66 69  6c 6c 2c 20 3c 64 72 61  |type> fill, <dra|
00030b40  77 6d 6f 64 5f 74 72 61  6e 73 6d 61 74 3e 20 2a  |wmod_transmat> *|
00030b50  6d 61 74 72 69 78 2c 20  69 6e 74 20 66 6c 61 74  |matrix, int flat|
00030b60  29 3b 0a 48 65 61 64 65  72 3a 09 3c 64 72 61 77  |);.Header:.<draw|
00030b70  6d 6f 64 2e 68 3d 3e 64  72 61 77 6d 6f 64 3e 0a  |mod.h=>drawmod>.|
00030b80  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
00030b90  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
00030ba0  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
00030bb0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 65 6d  |This function em|
00030bc0  75 6c 61 74 65 73 20 74  68 65 20 50 6f 73 74 53  |ulates the PostS|
00030bd0  63 72 69 70 74 20 27 66  69 6c 6c 27 20 6f 70 65  |cript 'fill' ope|
00030be0  72 61 74 6f 72 2e 20 49  74 20 70 65 72 66 6f 72  |rator. It perfor|
00030bf0  6d 73 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |ms the following|
00030c00  3a 0a 7b 74 61 62 7d 0a  8f 09 43 6c 6f 73 65 73  |:.{tab}...Closes|
00030c10  20 6f 70 65 6e 20 73 75  62 70 61 74 68 73 2e 0a  | open subpaths..|
00030c20  8f 09 46 6c 61 74 74 65  6e 73 20 74 68 65 20 70  |..Flattens the p|
00030c30  61 74 68 20 61 63 63 6f  72 64 69 6e 67 20 74 6f  |ath according to|
00030c40  20 74 68 65 20 66 6c 61  74 6e 65 73 73 2c 20 2f  | the flatness, /|
00030c50  66 6c 61 74 2f 2e 20 55  73 65 20 30 20 66 6f 72  |flat/. Use 0 for|
00030c60  20 64 65 66 61 75 6c 74  2e 0a 8f 09 54 72 61 6e  | default....Tran|
00030c70  73 66 6f 72 6d 73 20 70  61 74 68 20 74 6f 20 73  |sforms path to s|
00030c80  74 61 6e 64 61 72 64 20  63 6f 6f 72 64 73 2e 0a  |tandard coords..|
00030c90  8f 09 46 69 6c 6c 73 20  74 68 65 20 72 65 73 75  |..Fills the resu|
00030ca0  6c 74 61 6e 74 20 70 61  74 68 20 61 6e 64 20 6f  |ltant path and o|
00030cb0  75 74 70 75 74 73 20 74  6f 20 56 44 55 2e 0a 0a  |utputs to VDU...|
00030cc0  2f 6d 61 74 72 69 78 2f  20 6d 61 79 20 62 65 20  |/matrix/ may be |
00030cd0  30 20 74 6f 20 75 73 65  20 74 68 65 20 69 64 65  |0 to use the ide|
00030ce0  6e 74 69 74 79 20 6d 61  74 72 69 78 2e 00 00 00  |ntity matrix....|
00030cf0  44 41 54 41 cf 01 00 00  64 72 61 77 6d 6f 64 5f  |DATA....drawmod_|
00030d00  66 69 6c 6c 69 6e 67 5f  6f 70 74 69 6f 6e 73 0a  |filling_options.|
00030d10  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
00030d20  69 6e 65 64 20 69 6e 20  3c 64 72 61 77 6d 6f 64  |ined in <drawmod|
00030d30  2e 68 3d 3e 64 72 61 77  6d 6f 64 3e 20 61 73 20  |.h=>drawmod> as |
00030d40  74 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 65 6e  |the following en|
00030d50  75 6d 65 72 61 74 65 64  20 74 79 70 65 3a 0a 0a  |umerated type:..|
00030d60  20 20 5c 7b 0a 20 20 20  20 6f 70 74 69 6f 6e 5f  |  \{.    option_|
00030d70  69 6e 73 69 74 75 09 3d  20 30 2c 0a 20 20 20 20  |insitu.= 0,.    |
00030d80  6f 70 74 69 6f 6e 5f 6e  6f 72 6d 61 6c 66 69 6c  |option_normalfil|
00030d90  6c 09 3d 20 31 2c 0a 20  20 20 20 6f 70 74 69 6f  |l.= 1,.    optio|
00030da0  6e 5f 73 75 62 70 61 74  68 66 69 6c 6c 09 3d 20  |n_subpathfill.= |
00030db0  32 2c 0a 20 20 20 20 6f  70 74 69 6f 6e 5f 63 6f  |2,.    option_co|
00030dc0  75 6e 74 73 69 7a 65 09  3d 20 33 0a 20 20 7d 0a  |untsize.= 3.  }.|
00030dd0  0a 54 68 65 73 65 20 61  72 65 20 74 68 65 20 76  |.These are the v|
00030de0  61 6c 75 65 73 20 70 61  73 73 65 64 20 74 6f 20  |alues passed to |
00030df0  3c 64 72 61 77 6d 6f 64  5f 70 72 6f 63 65 73 73  |<drawmod_process|
00030e00  70 61 74 68 3e 2e 20 54  68 65 79 20 68 61 76 65  |path>. They have|
00030e10  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 6d  | the following m|
00030e20  65 61 6e 69 6e 67 3a 0a  7b 74 61 62 7d 0a 69 6e  |eaning:.{tab}.in|
00030e30  73 69 74 75 09 3a 20 4f  75 74 70 75 74 20 74 6f  |situ.: Output to|
00030e40  20 69 6e 70 75 74 20 70  61 74 68 20 62 75 66 66  | input path buff|
00030e50  65 72 0a 6e 6f 72 6d 61  6c 66 69 6c 6c 09 3a 20  |er.normalfill.: |
00030e60  46 69 6c 6c 20 70 61 74  68 20 6e 6f 72 6d 61 6c  |Fill path normal|
00030e70  6c 79 0a 73 75 62 70 61  74 68 66 69 6c 6c 09 3a  |ly.subpathfill.:|
00030e80  20 46 69 6c 6c 20 73 75  62 70 61 74 68 2d 62 79  | Fill subpath-by|
00030e90  2d 73 75 62 70 61 74 68  0a 63 6f 75 6e 74 73 69  |-subpath.countsi|
00030ea0  7a 65 09 3a 20 43 6f 75  6e 74 20 72 65 71 75 69  |ze.: Count requi|
00030eb0  72 65 64 20 62 75 66 66  65 72 20 73 69 7a 65 00  |red buffer size.|
00030ec0  44 41 54 41 4e 02 00 00  64 72 61 77 6d 6f 64 5f  |DATAN...drawmod_|
00030ed0  66 69 6c 6c 74 79 70 65  0a 54 68 69 73 20 74 79  |filltype.This ty|
00030ee0  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
00030ef0  20 3c 64 72 61 77 6d 6f  64 2e 68 3d 3e 64 72 61  | <drawmod.h=>dra|
00030f00  77 6d 6f 64 3e 2e 20 49  74 20 69 73 20 61 6e 20  |wmod>. It is an |
00030f10  65 6e 75 6d 65 72 61 74  65 64 20 74 79 70 65 20  |enumerated type |
00030f20  63 6f 6e 74 61 69 6e 69  6e 67 20 61 20 66 69 6c  |containing a fil|
00030f30  6c 20 74 79 70 65 3a 0a  0a 20 09 5c 7b 0a 20 09  |l type:.. .\{. .|
00030f40  20 09 66 69 6c 6c 5f 44  65 66 61 75 6c 74 09 3d  | .fill_Default.=|
00030f50  20 30 78 30 30 30 30 30  30 30 30 2c 0a 20 09 20  | 0x00000000,. . |
00030f60  09 66 69 6c 6c 5f 57 4e  6f 6e 7a 65 72 6f 09 3d  |.fill_WNonzero.=|
00030f70  20 30 78 30 30 30 30 30  30 30 30 2c 0a 20 09 20  | 0x00000000,. . |
00030f80  09 66 69 6c 6c 5f 57 4e  65 67 61 74 69 76 65 09  |.fill_WNegative.|
00030f90  3d 20 30 78 30 30 30 30  30 30 30 31 2c 0a 20 09  |= 0x00000001,. .|
00030fa0  20 09 66 69 6c 6c 5f 57  45 76 65 6e 6f 64 64 09  | .fill_WEvenodd.|
00030fb0  3d 20 30 78 30 30 30 30  30 30 30 32 2c 0a 20 09  |= 0x00000002,. .|
00030fc0  20 09 66 69 6c 6c 5f 57  50 6f 73 69 74 69 76 65  | .fill_WPositive|
00030fd0  09 3d 20 30 78 30 30 30  30 30 30 30 33 2c 0a 20  |.= 0x00000003,. |
00030fe0  09 20 09 66 69 6c 6c 5f  46 4e 6f 6e 62 65 78 74  |. .fill_FNonbext|
00030ff0  09 3d 20 30 78 30 30 30  30 30 30 30 34 2c 0a 20  |.= 0x00000004,. |
00031000  09 20 09 66 69 6c 6c 5f  46 42 65 78 74 09 3d 20  |. .fill_FBext.= |
00031010  30 78 30 30 30 30 30 30  30 38 2c 0a 20 09 20 09  |0x00000008,. . .|
00031020  66 69 6c 6c 5f 46 4e 6f  6e 62 69 6e 74 09 3d 20  |fill_FNonbint.= |
00031030  30 78 30 30 30 30 30 30  31 30 2c 0a 20 09 20 09  |0x00000010,. . .|
00031040  66 69 6c 6c 5f 46 42 69  6e 74 09 3d 20 30 78 30  |fill_FBint.= 0x0|
00031050  30 30 30 30 30 32 30 2c  0a 2f 2a 20 4e 65 78 74  |0000020,./* Next|
00031060  20 66 6f 75 72 20 61 72  65 20 6f 6e 6c 79 20 66  | four are only f|
00031070  6f 72 20 3c 64 72 61 77  6d 6f 64 5f 70 72 6f 63  |or <drawmod_proc|
00031080  65 73 73 70 61 74 68 3e  20 2a 2f 0a 20 09 20 09  |esspath> */. . .|
00031090  66 69 6c 6c 5f 50 43 6c  6f 73 65 09 3d 20 30 78  |fill_PClose.= 0x|
000310a0  30 38 30 30 30 30 30 30  2c 0a 20 09 20 09 66 69  |08000000,. . .fi|
000310b0  6c 6c 5f 50 46 6c 61 74  74 65 6e 09 3d 20 30 78  |ll_PFlatten.= 0x|
000310c0  31 30 30 30 30 30 30 30  2c 0a 20 09 20 09 66 69  |10000000,. . .fi|
000310d0  6c 6c 5f 50 54 68 69 63  6b 65 6e 09 3d 20 30 78  |ll_PThicken.= 0x|
000310e0  32 30 30 30 30 30 30 30  2c 0a 20 09 20 09 66 69  |20000000,. . .fi|
000310f0  6c 6c 5f 50 52 65 66 6c  61 74 74 65 6e 09 3d 20  |ll_PReflatten.= |
00031100  30 78 34 30 30 30 30 30  30 30 0a 20 09 7d 00 00  |0x40000000. .}..|
00031110  44 41 54 41 56 01 00 00  64 72 61 77 6d 6f 64 5f  |DATAV...drawmod_|
00031120  69 6e 73 69 74 75 5f 74  72 61 6e 73 66 6f 72 6d  |insitu_transform|
00031130  70 61 74 68 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |path.Syntax:.<os|
00031140  5f 65 72 72 6f 72 3e 20  2a 64 72 61 77 6d 6f 64  |_error> *drawmod|
00031150  5f 69 6e 73 69 74 75 5f  74 72 61 6e 73 66 6f 72  |_insitu_transfor|
00031160  6d 70 61 74 68 20 28 3c  64 72 61 77 6d 6f 64 5f  |mpath (<drawmod_|
00031170  70 61 74 68 65 6c 65 6d  70 74 72 3e 20 70 61 74  |pathelemptr> pat|
00031180  68 2c 20 3c 64 72 61 77  6d 6f 64 5f 74 72 61 6e  |h, <drawmod_tran|
00031190  73 6d 61 74 3e 20 2a 6d  61 74 72 69 78 29 3b 0a  |smat> *matrix);.|
000311a0  48 65 61 64 65 72 3a 09  3c 64 72 61 77 6d 6f 64  |Header:.<drawmod|
000311b0  2e 68 3d 3e 64 72 61 77  6d 6f 64 3e 0a 0a 52 65  |.h=>drawmod>..Re|
000311c0  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
000311d0  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
000311e0  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
000311f0  73 20 66 75 6e 63 74 69  6f 6e 20 70 75 74 73 20  |s function puts |
00031200  74 68 65 20 70 61 74 68  20 69 6e 20 2f 70 61 74  |the path in /pat|
00031210  68 2f 20 74 68 72 6f 75  67 68 20 74 68 65 20 74  |h/ through the t|
00031220  72 61 6e 73 66 6f 72 6d  61 74 69 6f 6e 20 6d 61  |ransformation ma|
00031230  74 72 69 78 20 69 6e 20  2f 6d 61 74 72 69 78 2f  |trix in /matrix/|
00031240  20 61 6e 64 20 70 6c 61  63 65 73 20 74 68 65 20  | and places the |
00031250  72 65 73 75 6c 74 20 62  61 63 6b 20 69 6e 20 2f  |result back in /|
00031260  70 61 74 68 2f 2e 00 00  44 41 54 41 05 01 00 00  |path/...DATA....|
00031270  64 72 61 77 6d 6f 64 5f  6c 69 6e 65 0a 54 68 69  |drawmod_line.Thi|
00031280  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
00031290  64 20 69 6e 20 3c 64 72  61 77 6d 6f 64 2e 68 3d  |d in <drawmod.h=|
000312a0  3e 64 72 61 77 6d 6f 64  3e 20 61 73 20 61 20 74  |>drawmod> as a t|
000312b0  79 70 65 20 63 6f 6e 74  61 69 6e 69 6e 67 20 6c  |ype containing l|
000312c0  69 6e 65 20 61 74 74 72  69 62 75 74 65 73 2e 20  |ine attributes. |
000312d0  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It is defined as|
000312e0  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 73  | the following s|
000312f0  74 72 75 63 74 75 72 65  3a 0a 0a 20 20 5c 7b 0a  |tructure:..  \{.|
00031300  20 20 20 20 69 6e 74 20  66 6c 61 74 6e 65 73 73  |    int flatness|
00031310  3b 0a 20 20 20 20 69 6e  74 20 74 68 69 63 6b 6e  |;.    int thickn|
00031320  65 73 73 3b 0a 20 20 20  20 3c 64 72 61 77 6d 6f  |ess;.    <drawmo|
00031330  64 5f 63 61 70 6a 6f 69  6e 73 70 65 63 3e 20 73  |d_capjoinspec> s|
00031340  70 65 63 3b 0a 20 20 20  20 3c 64 72 61 77 6d 6f  |pec;.    <drawmo|
00031350  64 5f 64 61 73 68 68 64  72 3e 20 2a 64 61 73 68  |d_dashhdr> *dash|
00031360  5f 70 61 74 74 65 72 6e  3b 0a 20 20 7d 00 00 00  |_pattern;.  }...|
00031370  44 41 54 41 02 01 00 00  64 72 61 77 6d 6f 64 5f  |DATA....drawmod_|
00031380  6f 70 74 69 6f 6e 73 0a  54 68 69 73 20 74 79 70  |options.This typ|
00031390  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
000313a0  3c 64 72 61 77 6d 6f 64  2e 68 3d 3e 64 72 61 77  |<drawmod.h=>draw|
000313b0  6d 6f 64 3e 20 61 73 20  74 68 65 20 66 6f 6c 6c  |mod> as the foll|
000313c0  6f 77 69 6e 67 20 73 74  72 75 63 74 75 72 65 3a  |owing structure:|
000313d0  0a 0a 20 20 5c 7b 0a 20  20 20 20 3c 64 72 61 77  |..  \{.    <draw|
000313e0  6d 6f 64 5f 74 61 67 74  79 70 65 3e 20 74 61 67  |mod_tagtype> tag|
000313f0  3b 0a 20 20 20 20 75 6e  69 6f 6e 0a 20 20 20 20  |;.    union.    |
00031400  5c 7b 0a 20 20 20 20 20  20 3c 64 72 61 77 6d 6f  |\{.      <drawmo|
00031410  64 5f 66 69 6c 6c 69 6e  67 5f 6f 70 74 69 6f 6e  |d_filling_option|
00031420  73 3e 20 6f 70 74 73 3b  0a 20 20 20 20 20 20 3c  |s> opts;.      <|
00031430  64 72 61 77 6d 6f 64 5f  62 6f 78 3e 20 2a 62 6f  |drawmod_box> *bo|
00031440  78 3b 0a 20 20 20 20 20  20 3c 64 72 61 77 6d 6f  |x;.      <drawmo|
00031450  64 5f 62 75 66 66 65 72  3e 20 2a 62 75 66 66 65  |d_buffer> *buffe|
00031460  72 3b 0a 20 20 20 20 7d  20 64 61 74 61 3b 0a 20  |r;.    } data;. |
00031470  20 7d 00 00 44 41 54 41  0f 01 00 00 64 72 61 77  | }..DATA....draw|
00031480  6d 6f 64 5f 70 61 74 68  5f 62 65 7a 69 65 72 73  |mod_path_beziers|
00031490  74 72 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |tr.This type is |
000314a0  64 65 66 69 6e 65 64 20  69 6e 20 3c 64 72 61 77  |defined in <draw|
000314b0  6d 6f 64 2e 68 3d 3e 64  72 61 77 6d 6f 64 3e 2e  |mod.h=>drawmod>.|
000314c0  20 49 74 20 69 73 20 61  20 73 74 72 75 63 74 75  | It is a structu|
000314d0  72 65 20 66 6f 72 20 61  20 62 65 7a 69 65 72 20  |re for a bezier |
000314e0  63 75 72 76 65 20 65 6c  65 6d 65 6e 74 3a 0a 7b  |curve element:.{|
000314f0  77 72 61 70 20 6f 66 66  7d 0a 20 20 5c 7b 0a 20  |wrap off}.  \{. |
00031500  20 20 20 3c 64 72 61 77  6d 6f 64 5f 70 61 74 68  |   <drawmod_path|
00031510  5f 74 61 67 74 79 70 65  3e 09 74 61 67 3b 09 2f  |_tagtype>.tag;./|
00031520  2a 20 3d 3d 20 36 20 2a  2f 0a 20 20 20 20 69 6e  |* == 6 */.    in|
00031530  74 09 78 31 2c 79 31 2c  78 32 2c 79 32 2c 78 33  |t.x1,y1,x2,y2,x3|
00031540  2c 79 33 3b 09 0a 20 20  7d 0a 0a 28 78 33 2c 79  |,y3;..  }..(x3,y|
00031550  33 29 20 69 73 20 74 68  65 20 65 6e 64 20 70 6f  |3) is the end po|
00031560  69 6e 74 2c 20 74 68 65  20 6f 74 68 65 72 73 20  |int, the others |
00031570  61 72 65 20 63 6f 6e 74  72 6f 6c 20 70 6f 69 6e  |are control poin|
00031580  74 73 2e 00 44 41 54 41  c3 00 00 00 64 72 61 77  |ts..DATA....draw|
00031590  6d 6f 64 5f 70 61 74 68  5f 63 6c 6f 73 65 67 61  |mod_path_closega|
000315a0  70 73 74 72 0a 54 68 69  73 20 74 79 70 65 20 69  |pstr.This type i|
000315b0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 64 72  |s defined in <dr|
000315c0  61 77 6d 6f 64 2e 68 3d  3e 64 72 61 77 6d 6f 64  |awmod.h=>drawmod|
000315d0  3e 2e 20 49 74 20 69 73  20 61 20 73 74 72 75 63  |>. It is a struc|
000315e0  74 75 72 65 20 66 6f 72  20 61 20 63 6c 6f 73 65  |ture for a close|
000315f0  20 77 69 74 68 20 67 61  70 20 65 6c 65 6d 65 6e  | with gap elemen|
00031600  74 3a 0a 7b 77 72 61 70  20 6f 66 66 7d 0a 20 20  |t:.{wrap off}.  |
00031610  5c 7b 0a 20 20 20 20 3c  64 72 61 77 6d 6f 64 5f  |\{.    <drawmod_|
00031620  70 61 74 68 5f 74 61 67  74 79 70 65 3e 20 74 61  |path_tagtype> ta|
00031630  67 3b 20 20 20 20 20 20  20 2f 2a 20 3d 3d 20 34  |g;       /* == 4|
00031640  20 2a 2f 0a 20 20 7d 00  44 41 54 41 c5 00 00 00  | */.  }.DATA....|
00031650  64 72 61 77 6d 6f 64 5f  70 61 74 68 5f 63 6c 6f  |drawmod_path_clo|
00031660  73 65 6c 69 6e 65 73 74  72 0a 54 68 69 73 20 74  |selinestr.This t|
00031670  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
00031680  6e 20 3c 64 72 61 77 6d  6f 64 2e 68 3d 3e 64 72  |n <drawmod.h=>dr|
00031690  61 77 6d 6f 64 3e 2e 20  49 74 20 69 73 20 61 20  |awmod>. It is a |
000316a0  73 74 72 75 63 74 75 72  65 20 66 6f 72 20 61 20  |structure for a |
000316b0  63 6c 6f 73 65 20 77 69  74 68 20 6c 69 6e 65 20  |close with line |
000316c0  65 6c 65 6d 65 6e 74 3a  0a 7b 77 72 61 70 20 6f  |element:.{wrap o|
000316d0  66 66 7d 0a 20 20 5c 7b  0a 20 20 20 20 3c 64 72  |ff}.  \{.    <dr|
000316e0  61 77 6d 6f 64 5f 70 61  74 68 5f 74 61 67 74 79  |awmod_path_tagty|
000316f0  70 65 3e 20 74 61 67 3b  20 20 20 20 20 20 20 2f  |pe> tag;       /|
00031700  2a 20 3d 3d 20 35 20 2a  2f 0a 20 20 7d 00 00 00  |* == 5 */.  }...|
00031710  44 41 54 41 da 00 00 00  64 72 61 77 6d 6f 64 5f  |DATA....drawmod_|
00031720  70 61 74 68 5f 65 6e 64  73 74 72 0a 54 68 69 73  |path_endstr.This|
00031730  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
00031740  20 69 6e 20 3c 64 72 61  77 6d 6f 64 2e 68 3d 3e  | in <drawmod.h=>|
00031750  64 72 61 77 6d 6f 64 3e  2e 20 49 74 20 69 73 20  |drawmod>. It is |
00031760  61 20 73 74 72 75 63 74  75 72 65 20 66 6f 72 20  |a structure for |
00031770  61 6e 20 65 6e 64 20 6f  66 20 70 61 74 68 20 65  |an end of path e|
00031780  6c 65 6d 65 6e 74 3a 0a  7b 77 72 61 70 20 6f 66  |lement:.{wrap of|
00031790  66 7d 0a 20 20 5c 7b 0a  20 20 20 20 3c 64 72 61  |f}.  \{.    <dra|
000317a0  77 6d 6f 64 5f 70 61 74  68 5f 74 61 67 74 79 70  |wmod_path_tagtyp|
000317b0  65 3e 09 74 61 67 3b 20  20 20 20 20 20 20 20 2f  |e>.tag;        /|
000317c0  2a 20 3d 3d 20 30 20 2a  2f 0a 20 20 20 20 75 6e  |* == 0 */.    un|
000317d0  73 69 67 6e 65 64 20 69  6e 74 09 62 79 74 65 73  |signed int.bytes|
000317e0  5f 66 72 65 65 3b 0a 20  20 7d 00 00 44 41 54 41  |_free;.  }..DATA|
000317f0  bd 00 00 00 64 72 61 77  6d 6f 64 5f 70 61 74 68  |....drawmod_path|
00031800  5f 67 61 70 74 6f 73 74  72 0a 54 68 69 73 20 74  |_gaptostr.This t|
00031810  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
00031820  6e 20 3c 64 72 61 77 6d  6f 64 2e 68 3d 3e 64 72  |n <drawmod.h=>dr|
00031830  61 77 6d 6f 64 3e 2e 20  49 74 20 69 73 20 61 20  |awmod>. It is a |
00031840  73 74 72 75 63 74 75 72  65 20 66 6f 72 20 61 20  |structure for a |
00031850  67 61 70 20 65 6c 65 6d  65 6e 74 3a 0a 7b 77 72  |gap element:.{wr|
00031860  61 70 20 6f 66 66 7d 0a  20 20 5c 7b 0a 20 20 20  |ap off}.  \{.   |
00031870  20 3c 64 72 61 77 6d 6f  64 5f 70 61 74 68 5f 74  | <drawmod_path_t|
00031880  61 67 74 79 70 65 3e 09  74 61 67 3b 09 2f 2a 20  |agtype>.tag;./* |
00031890  3d 3d 20 37 20 2a 2f 0a  20 20 20 20 69 6e 74 09  |== 7 */.    int.|
000318a0  78 2c 79 3b 09 0a 20 20  7d 00 00 00 44 41 54 41  |x,y;..  }...DATA|
000318b0  bf 00 00 00 64 72 61 77  6d 6f 64 5f 70 61 74 68  |....drawmod_path|
000318c0  5f 6c 69 6e 65 74 6f 73  74 72 0a 54 68 69 73 20  |_linetostr.This |
000318d0  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
000318e0  69 6e 20 3c 64 72 61 77  6d 6f 64 2e 68 3d 3e 64  |in <drawmod.h=>d|
000318f0  72 61 77 6d 6f 64 3e 2e  20 49 74 20 69 73 20 61  |rawmod>. It is a|
00031900  20 73 74 72 75 63 74 75  72 65 20 66 6f 72 20 61  | structure for a|
00031910  20 6c 69 6e 65 20 65 6c  65 6d 65 6e 74 3a 0a 7b  | line element:.{|
00031920  77 72 61 70 20 6f 66 66  7d 0a 20 20 5c 7b 0a 20  |wrap off}.  \{. |
00031930  20 20 20 3c 64 72 61 77  6d 6f 64 5f 70 61 74 68  |   <drawmod_path|
00031940  5f 74 61 67 74 79 70 65  3e 09 74 61 67 3b 09 2f  |_tagtype>.tag;./|
00031950  2a 20 3d 3d 20 38 20 2a  2f 0a 20 20 20 20 69 6e  |* == 8 */.    in|
00031960  74 09 78 2c 79 3b 09 0a  20 20 7d 00 44 41 54 41  |t.x,y;..  }.DATA|
00031970  be 00 00 00 64 72 61 77  6d 6f 64 5f 70 61 74 68  |....drawmod_path|
00031980  5f 6d 6f 76 65 73 74 72  0a 54 68 69 73 20 74 79  |_movestr.This ty|
00031990  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
000319a0  20 3c 64 72 61 77 6d 6f  64 2e 68 3d 3e 64 72 61  | <drawmod.h=>dra|
000319b0  77 6d 6f 64 3e 2e 20 49  74 20 69 73 20 61 0a 73  |wmod>. It is a.s|
000319c0  74 72 75 63 74 75 72 65  20 66 6f 72 20 61 20 6d  |tructure for a m|
000319d0  6f 76 65 20 65 6c 65 6d  65 6e 74 3a 0a 7b 77 72  |ove element:.{wr|
000319e0  61 70 20 6f 66 66 7d 0a  20 20 5c 7b 0a 20 20 20  |ap off}.  \{.   |
000319f0  20 3c 64 72 61 77 6d 6f  64 5f 70 61 74 68 5f 74  | <drawmod_path_t|
00031a00  61 67 74 79 70 65 3e 09  74 61 67 3b 09 2f 2a 20  |agtype>.tag;./* |
00031a10  3d 3d 20 32 20 2a 2f 0a  20 20 20 20 69 6e 74 09  |== 2 */.    int.|
00031a20  78 2c 20 79 3b 09 0a 20  20 7d 00 00 44 41 54 41  |x, y;..  }..DATA|
00031a30  c7 00 00 00 64 72 61 77  6d 6f 64 5f 70 61 74 68  |....drawmod_path|
00031a40  5f 70 74 72 73 74 72 0a  54 68 69 73 20 74 79 70  |_ptrstr.This typ|
00031a50  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
00031a60  3c 64 72 61 77 6d 6f 64  2e 68 3d 3e 64 72 61 77  |<drawmod.h=>draw|
00031a70  6d 6f 64 3e 2e 20 49 74  20 69 73 20 61 0a 73 74  |mod>. It is a.st|
00031a80  72 75 63 74 75 72 65 20  66 6f 72 20 61 6e 20 63  |ructure for an c|
00031a90  6f 6e 74 69 6e 75 61 74  69 6f 6e 20 65 6c 65 6d  |ontinuation elem|
00031aa0  65 6e 74 3a 0a 7b 77 72  61 70 20 6f 66 66 7d 0a  |ent:.{wrap off}.|
00031ab0  20 20 5c 7b 0a 20 20 20  20 3c 64 72 61 77 6d 6f  |  \{.    <drawmo|
00031ac0  64 5f 70 61 74 68 5f 74  61 67 74 79 70 65 3e 09  |d_path_tagtype>.|
00031ad0  74 61 67 3b 09 2f 2a 20  3d 3d 20 31 20 2a 2f 0a  |tag;./* == 1 */.|
00031ae0  20 20 20 20 76 6f 69 64  09 2a 70 74 72 3b 09 0a  |    void.*ptr;..|
00031af0  20 20 7d 00 44 41 54 41  d4 01 00 00 64 72 61 77  |  }.DATA....draw|
00031b00  6d 6f 64 5f 70 61 74 68  5f 74 61 67 74 79 70 65  |mod_path_tagtype|
00031b10  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
00031b20  66 69 6e 65 64 20 69 6e  20 3c 64 72 61 77 6d 6f  |fined in <drawmo|
00031b30  64 2e 68 3d 3e 64 72 61  77 6d 6f 64 3e 2e 20 49  |d.h=>drawmod>. I|
00031b40  74 20 69 73 20 61 6e 20  65 6e 75 6d 65 72 61 74  |t is an enumerat|
00031b50  65 64 20 74 79 70 65 20  64 65 66 69 6e 69 6e 67  |ed type defining|
00031b60  20 70 61 74 68 20 65 6c  65 6d 65 6e 74 20 74 79  | path element ty|
00031b70  70 65 73 3a 0a 0a 20 20  5c 7b 0a 20 20 20 20 70  |pes:..  \{.    p|
00031b80  61 74 68 5f 74 65 72 6d  20 20 20 20 20 09 3d 20  |ath_term     .= |
00031b90  30 2c 20 20 2f 2a 20 65  6e 64 20 6f 66 20 70 61  |0,  /* end of pa|
00031ba0  74 68 20 2a 2f 0a 20 20  20 20 70 61 74 68 5f 70  |th */.    path_p|
00031bb0  74 72 20 20 20 20 20 20  09 3d 20 31 2c 0a 20 20  |tr      .= 1,.  |
00031bc0  20 20 70 61 74 68 5f 6d  6f 76 65 5f 32 20 20 20  |  path_move_2   |
00031bd0  09 3d 20 32 2c 20 20 2f  2a 20 6e 6f 72 6d 61 6c  |.= 2,  /* normal|
00031be0  20 6d 6f 76 65 20 2a 2f  0a 20 20 20 20 70 61 74  | move */.    pat|
00031bf0  68 5f 6d 6f 76 65 5f 33  20 20 20 09 3d 20 33 2c  |h_move_3   .= 3,|
00031c00  0a 20 20 20 20 70 61 74  68 5f 63 6c 6f 73 65 67  |.    path_closeg|
00031c10  61 70 20 09 3d 20 34 2c  20 20 2f 2a 20 63 6c 6f  |ap .= 4,  /* clo|
00031c20  73 65 20 73 75 62 70 61  74 68 20 2a 2f 0a 20 20  |se subpath */.  |
00031c30  20 20 70 61 74 68 5f 63  6c 6f 73 65 6c 69 6e 65  |  path_closeline|
00031c40  09 3d 20 35 2c 20 20 2f  2a 20 63 6c 6f 73 65 20  |.= 5,  /* close |
00031c50  77 69 74 68 20 6c 69 6e  65 20 2a 2f 0a 20 20 20  |with line */.   |
00031c60  20 70 61 74 68 5f 62 65  7a 69 65 72 20 20 20 09  | path_bezier   .|
00031c70  3d 20 36 2c 20 20 2f 2a  20 62 65 7a 69 65 72 20  |= 6,  /* bezier |
00031c80  63 75 72 76 65 20 2a 2f  0a 20 20 20 20 70 61 74  |curve */.    pat|
00031c90  68 5f 67 61 70 74 6f 20  20 20 20 09 3d 20 37 2c  |h_gapto    .= 7,|
00031ca0  0a 20 20 20 20 70 61 74  68 5f 6c 69 6e 65 74 6f  |.    path_lineto|
00031cb0  20 20 20 09 3d 20 38 20  20 20 2f 2a 20 6c 69 6e  |   .= 8   /* lin|
00031cc0  65 20 2a 2f 0a 20 20 7d  44 41 54 41 02 02 00 00  |e */.  }DATA....|
00031cd0  64 72 61 77 6d 6f 64 5f  70 61 74 68 65 6c 65 6d  |drawmod_pathelem|
00031ce0  70 74 72 0a 54 68 69 73  20 74 79 70 65 20 69 73  |ptr.This type is|
00031cf0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 64 72 61  | defined in <dra|
00031d00  77 6d 6f 64 2e 68 3d 3e  64 72 61 77 6d 6f 64 3e  |wmod.h=>drawmod>|
00031d10  2e 20 49 74 20 69 73 20  61 20 75 6e 69 6f 6e 20  |. It is a union |
00031d20  63 6f 6e 74 61 69 6e 69  6e 67 20 61 20 70 6f 69  |containing a poi|
00031d30  6e 74 65 72 20 74 6f 20  61 6e 79 20 74 79 70 65  |nter to any type|
00031d40  20 6f 66 20 70 61 74 68  20 65 6c 65 6d 65 6e 74  | of path element|
00031d50  2e 0a 0a 20 09 5c 7b 0a  20 09 20 09 3c 64 72 61  |... .\{. . .<dra|
00031d60  77 6d 6f 64 5f 70 61 74  68 5f 65 6e 64 73 74 72  |wmod_path_endstr|
00031d70  3e 09 2a 65 6e 64 3b 0a  20 09 20 09 3c 64 72 61  |>.*end;. . .<dra|
00031d80  77 6d 6f 64 5f 70 61 74  68 5f 70 74 72 73 74 72  |wmod_path_ptrstr|
00031d90  3e 09 2a 70 74 72 3b 0a  20 09 20 09 3c 64 72 61  |>.*ptr;. . .<dra|
00031da0  77 6d 6f 64 5f 70 61 74  68 5f 6d 6f 76 65 73 74  |wmod_path_movest|
00031db0  72 3e 09 2a 6d 6f 76 65  32 3b 0a 20 09 20 09 3c  |r>.*move2;. . .<|
00031dc0  64 72 61 77 6d 6f 64 5f  70 61 74 68 5f 6d 6f 76  |drawmod_path_mov|
00031dd0  65 73 74 72 3e 09 2a 6d  6f 76 65 33 3b 0a 20 09  |estr>.*move3;. .|
00031de0  20 09 3c 64 72 61 77 6d  6f 64 5f 70 61 74 68 5f  | .<drawmod_path_|
00031df0  63 6c 6f 73 65 67 61 70  73 74 72 3e 09 2a 63 6c  |closegapstr>.*cl|
00031e00  6f 73 65 67 61 70 3b 0a  20 09 20 09 3c 64 72 61  |osegap;. . .<dra|
00031e10  77 6d 6f 64 5f 70 61 74  68 5f 63 6c 6f 73 65 6c  |wmod_path_closel|
00031e20  69 6e 65 73 74 72 3e 09  2a 63 6c 6f 73 65 6c 69  |inestr>.*closeli|
00031e30  6e 65 3b 0a 20 09 20 09  3c 64 72 61 77 6d 6f 64  |ne;. . .<drawmod|
00031e40  5f 70 61 74 68 5f 62 65  7a 69 65 72 73 74 72 3e  |_path_bezierstr>|
00031e50  09 2a 62 65 7a 69 65 72  3b 0a 20 09 20 09 3c 64  |.*bezier;. . .<d|
00031e60  72 61 77 6d 6f 64 5f 70  61 74 68 5f 67 61 70 74  |rawmod_path_gapt|
00031e70  6f 73 74 72 3e 09 2a 67  61 70 74 6f 3b 0a 20 09  |ostr>.*gapto;. .|
00031e80  20 09 3c 64 72 61 77 6d  6f 64 5f 70 61 74 68 5f  | .<drawmod_path_|
00031e90  6c 69 6e 65 74 6f 73 74  72 3e 09 2a 6c 69 6e 65  |linetostr>.*line|
00031ea0  74 6f 3b 0a 0a 20 09 20  09 63 68 61 72 09 2a 62  |to;.. . .char.*b|
00031eb0  79 74 65 70 3b 0a 20 09  20 09 69 6e 74 20 09 2a  |ytep;. . .int .*|
00031ec0  77 6f 72 64 70 3b 0a 20  09 7d 00 00 44 41 54 41  |wordp;. .}..DATA|
00031ed0  a5 02 00 00 64 72 61 77  6d 6f 64 5f 70 72 6f 63  |....drawmod_proc|
00031ee0  65 73 73 70 61 74 68 0a  53 79 6e 74 61 78 3a 09  |esspath.Syntax:.|
00031ef0  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 64 72 61 77  |<os_error> *draw|
00031f00  6d 6f 64 5f 70 72 6f 63  65 73 73 70 61 74 68 20  |mod_processpath |
00031f10  28 3c 64 72 61 77 6d 6f  64 5f 70 61 74 68 65 6c  |(<drawmod_pathel|
00031f20  65 6d 70 74 72 3e 20 70  61 74 68 2c 20 3c 64 72  |emptr> path, <dr|
00031f30  61 77 6d 6f 64 5f 66 69  6c 6c 74 79 70 65 3e 20  |awmod_filltype> |
00031f40  66 69 6c 6c 5f 73 74 79  6c 65 2c 20 3c 64 72 61  |fill_style, <dra|
00031f50  77 6d 6f 64 5f 74 72 61  6e 73 6d 61 74 3e 20 2a  |wmod_transmat> *|
00031f60  6d 61 74 72 69 78 2c 20  3c 64 72 61 77 6d 6f 64  |matrix, <drawmod|
00031f70  5f 6c 69 6e 65 3e 20 2a  6c 69 6e 65 5f 73 74 79  |_line> *line_sty|
00031f80  6c 65 2c 20 3c 64 72 61  77 6d 6f 64 5f 6f 70 74  |le, <drawmod_opt|
00031f90  69 6f 6e 73 3e 20 2a 6f  70 74 69 6f 6e 73 2c 20  |ions> *options, |
00031fa0  69 6e 74 20 2a 62 75 66  6c 65 6e 29 3b 0a 48 65  |int *buflen);.He|
00031fb0  61 64 65 72 3a 09 3c 64  72 61 77 6d 6f 64 2e 68  |ader:.<drawmod.h|
00031fc0  3d 3e 64 72 61 77 6d 6f  64 3e 0a 0a 52 65 74 75  |=>drawmod>..Retu|
00031fd0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00031fe0  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00031ff0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00032000  66 75 6e 63 74 69 6f 6e  20 69 73 20 74 68 65 20  |function is the |
00032010  6d 61 69 6e 20 64 72 61  77 6d 6f 64 20 66 75 6e  |main drawmod fun|
00032020  63 74 69 6f 6e 2e 20 41  6c 6c 20 6f 74 68 65 72  |ction. All other|
00032030  20 66 75 6e 63 74 69 6f  6e 73 20 63 61 6c 6c 20  | functions call |
00032040  74 68 65 20 73 61 6d 65  20 53 57 49 20 74 68 61  |the same SWI tha|
00032050  74 20 74 68 69 73 20 63  61 6c 6c 73 20 65 76 65  |t this calls eve|
00032060  6e 74 75 61 6c 6c 79 2e  20 2f 70 61 74 68 2f 20  |ntually. /path/ |
00032070  69 73 20 74 68 65 20 70  61 74 68 3b 20 2f 6d 61  |is the path; /ma|
00032080  74 72 69 78 2f 20 69 73  20 74 68 65 20 74 72 61  |trix/ is the tra|
00032090  6e 73 66 6f 72 6d 61 74  69 6f 6e 20 6d 61 74 72  |nsformation matr|
000320a0  69 78 2c 20 6f 72 20 30  20 66 6f 72 20 69 64 65  |ix, or 0 for ide|
000320b0  6e 74 69 74 79 3b 20 7b  2f 7d 6f 70 74 69 6f 6e  |ntity; {/}option|
000320c0  73 2d 3e 64 61 74 61 7b  2f 7d 20 63 61 6e 20 62  |s->data{/} can b|
000320d0  65 20 6f 6e 65 20 6f 66  20 74 68 65 20 6f 70 74  |e one of the opt|
000320e0  69 6f 6e 73 2c 20 6f 72  20 61 6e 20 6f 75 74 70  |ions, or an outp|
000320f0  75 74 20 62 75 66 66 65  72 20 70 6f 69 6e 74 65  |ut buffer pointe|
00032100  72 2c 20 6f 72 20 61 20  70 6f 69 6e 74 65 72 20  |r, or a pointer |
00032110  74 6f 20 61 20 62 75 66  66 65 72 20 66 6f 72 20  |to a buffer for |
00032120  68 6f 6c 64 69 6e 67 20  74 68 65 20 70 61 74 68  |holding the path|
00032130  27 73 20 62 6f 75 64 69  6e 67 20 62 6f 78 2e 20  |'s bouding box. |
00032140  7b 2f 7d 6f 70 74 69 6f  6e 73 2d 3e 74 61 67 7b  |{/}options->tag{|
00032150  2f 7d 20 74 61 67 73 20  74 68 65 20 75 73 65 20  |/} tags the use |
00032160  6f 66 20 65 61 63 68 20  6f 66 20 74 68 65 73 65  |of each of these|
00032170  2e 00 00 00 44 41 54 41  61 02 00 00 64 72 61 77  |....DATAa...draw|
00032180  6d 6f 64 5f 73 74 72 6f  6b 65 0a 53 79 6e 74 61  |mod_stroke.Synta|
00032190  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 64  |x:.<os_error> *d|
000321a0  72 61 77 6d 6f 64 5f 73  74 72 6f 6b 65 20 28 3c  |rawmod_stroke (<|
000321b0  64 72 61 77 6d 6f 64 5f  70 61 74 68 65 6c 65 6d  |drawmod_pathelem|
000321c0  70 74 72 3e 20 70 61 74  68 2c 20 3c 64 72 61 77  |ptr> path, <draw|
000321d0  6d 6f 64 5f 66 69 6c 6c  74 79 70 65 3e 20 66 69  |mod_filltype> fi|
000321e0  6c 6c 5f 73 74 79 6c 65  2c 20 3c 64 72 61 77 6d  |ll_style, <drawm|
000321f0  6f 64 5f 74 72 61 6e 73  6d 61 74 3e 20 2a 6d 61  |od_transmat> *ma|
00032200  74 72 69 78 2c 20 3c 64  72 61 77 6d 6f 64 5f 6c  |trix, <drawmod_l|
00032210  69 6e 65 3e 20 2a 6c 69  6e 65 5f 73 74 79 6c 65  |ine> *line_style|
00032220  29 3b 0a 48 65 61 64 65  72 3a 09 3c 64 72 61 77  |);.Header:.<draw|
00032230  6d 6f 64 2e 68 3d 3e 64  72 61 77 6d 6f 64 3e 0a  |mod.h=>drawmod>.|
00032240  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
00032250  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
00032260  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
00032270  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 65 6d  |This function em|
00032280  75 6c 61 74 65 73 20 74  68 65 20 50 6f 73 74 53  |ulates the PostS|
00032290  63 72 69 70 74 20 27 73  74 72 6f 6b 65 27 20 6f  |cript 'stroke' o|
000322a0  70 65 72 61 74 6f 72 2e  20 49 74 20 70 65 72 66  |perator. It perf|
000322b0  6f 72 6d 73 20 74 68 65  20 66 6f 6c 6c 6f 77 69  |orms the followi|
000322c0  6e 67 3a 0a 7b 74 61 62  7d 0a 8f 09 46 6c 61 74  |ng:.{tab}...Flat|
000322d0  74 65 6e 73 20 74 68 65  20 70 61 74 68 20 61 63  |tens the path ac|
000322e0  63 6f 72 64 69 6e 67 20  74 6f 20 7b 2f 7d 6c 69  |cording to {/}li|
000322f0  6e 65 5f 73 74 79 6c 65  2d 3e 66 6c 61 74 6e 65  |ne_style->flatne|
00032300  73 73 7b 2f 7d 2e 0a 8f  09 41 70 70 6c 69 65 73  |ss{/}....Applies|
00032310  20 64 61 73 68 20 70 61  74 74 65 72 6e 20 69 66  | dash pattern if|
00032320  20 7b 2f 7d 6c 69 6e 65  5f 73 74 79 6c 65 2d 3e  | {/}line_style->|
00032330  64 61 73 68 5f 70 61 74  74 65 72 6e 7b 2f 7d 21  |dash_pattern{/}!|
00032340  3d 4e 55 4c 4c 2e 0a 8f  09 54 68 69 63 6b 65 6e  |=NULL....Thicken|
00032350  73 20 74 68 65 20 70 61  74 68 2c 20 75 73 69 6e  |s the path, usin|
00032360  67 20 73 70 65 63 69 66  69 65 64 20 6a 6f 69 6e  |g specified join|
00032370  73 2f 63 61 70 73 2e 0a  8f 09 46 69 6c 6c 73 20  |s/caps....Fills |
00032380  74 68 65 20 72 65 73 75  6c 74 61 6e 74 20 70 61  |the resultant pa|
00032390  74 68 20 61 6e 64 20 6f  75 74 70 75 74 73 20 74  |th and outputs t|
000323a0  6f 20 56 44 55 2e 0a 0a  2f 6d 61 74 72 69 78 2f  |o VDU.../matrix/|
000323b0  20 6d 61 79 20 62 65 20  30 20 74 6f 20 75 73 65  | may be 0 to use|
000323c0  20 74 68 65 20 69 64 65  6e 74 69 74 79 20 6d 61  | the identity ma|
000323d0  74 72 69 78 2e 00 00 00  44 41 54 41 a3 00 00 00  |trix....DATA....|
000323e0  64 72 61 77 6d 6f 64 5f  74 61 67 74 79 70 65 0a  |drawmod_tagtype.|
000323f0  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
00032400  69 6e 65 64 20 69 6e 20  3c 64 72 61 77 6d 6f 64  |ined in <drawmod|
00032410  2e 68 3d 3e 64 72 61 77  6d 6f 64 3e 20 61 73 20  |.h=>drawmod> as |
00032420  74 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 65 6e  |the following en|
00032430  75 6d 65 72 61 74 65 64  20 74 79 70 65 3a 0a 0a  |umerated type:..|
00032440  20 20 5c 7b 0a 20 20 20  20 74 61 67 5f 66 69 6c  |  \{.    tag_fil|
00032450  6c 09 3d 20 31 2c 0a 20  20 20 20 74 61 67 5f 62  |l.= 1,.    tag_b|
00032460  6f 78 09 3d 20 32 2c 0a  20 20 20 20 74 61 67 5f  |ox.= 2,.    tag_|
00032470  62 75 66 09 3d 20 33 0a  20 20 7d 00 44 41 54 41  |buf.= 3.  }.DATA|
00032480  ae 00 00 00 64 72 61 77  6d 6f 64 5f 74 72 61 6e  |....drawmod_tran|
00032490  73 6d 61 74 0a 54 68 69  73 20 74 79 70 65 20 69  |smat.This type i|
000324a0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 64 72  |s defined in <dr|
000324b0  61 77 6d 6f 64 2e 68 3d  3e 64 72 61 77 6d 6f 64  |awmod.h=>drawmod|
000324c0  3e 20 61 73 20 61 20 74  79 70 65 20 63 6f 6e 74  |> as a type cont|
000324d0  61 69 6e 69 6e 67 20 61  20 74 72 61 6e 73 66 6f  |aining a transfo|
000324e0  72 6d 61 74 69 6f 6e 20  6d 61 74 72 69 78 2e 20  |rmation matrix. |
000324f0  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It is defined as|
00032500  20 61 6e 20 61 72 72 61  79 20 6f 66 20 73 69 78  | an array of six|
00032510  20 69 6e 74 65 67 65 72  73 20 69 65 20 7b 2f 7d  | integers ie {/}|
00032520  69 6e 74 20 5b 36 5d 7b  2f 7d 00 00 44 49 52 24  |int [6]{/}..DIR$|
00032530  2c 00 00 00 2c 00 00 00  58 25 03 00 46 fd ff ff  |,...,...X%..F...|
00032540  9a 98 b5 22 e0 01 00 00  13 00 00 00 00 00 00 00  |..."............|
00032550  66 6c 61 67 73 5f 00 00  44 41 54 41 e0 01 00 00  |flags_..DATA....|
00032560  44 72 61 67 41 53 70 72  69 74 65 20 46 6c 61 67  |DragASprite Flag|
00032570  73 0a 42 69 74 73 20 20  20 20 4d 65 61 6e 69 6e  |s.Bits    Meanin|
00032580  67 0a 30 2d 31 20 20 20  20 20 58 20 70 6f 73 69  |g.0-1     X posi|
00032590  74 69 6f 6e 20 6f 66 20  73 70 72 69 74 65 20 77  |tion of sprite w|
000325a0  69 74 68 69 6e 20 62 62  6f 78 0a 20 20 20 20 20  |ithin bbox.     |
000325b0  20 20 20 20 20 20 20 30  30 20 2d 20 6c 65 66 74  |       00 - left|
000325c0  2c 20 30 31 20 2d 20 63  65 6e 74 72 65 2c 20 31  |, 01 - centre, 1|
000325d0  30 20 2d 20 72 69 67 68  74 0a 32 2d 33 20 20 20  |0 - right.2-3   |
000325e0  20 20 59 20 70 6f 73 69  74 69 6f 6e 20 6f 66 20  |  Y position of |
000325f0  73 70 72 69 74 65 20 77  69 74 68 69 6e 20 62 62  |sprite within bb|
00032600  6f 78 0a 20 20 20 20 20  20 20 20 20 20 20 20 30  |ox.            0|
00032610  30 20 2d 20 62 6f 74 74  6f 6d 2c 20 30 31 20 2d  |0 - bottom, 01 -|
00032620  20 63 65 6e 74 72 65 2c  20 31 30 20 2d 20 74 6f  | centre, 10 - to|
00032630  70 0a 34 2d 35 20 20 20  20 20 50 61 72 65 6e 74  |p.4-5     Parent|
00032640  20 62 6f 75 6e 64 69 6e  67 20 62 6f 78 0a 20 20  | bounding box.  |
00032650  20 20 20 20 20 20 20 20  20 20 30 30 20 2d 20 73  |          00 - s|
00032660  63 72 65 65 6e 2c 20 30  31 20 2d 20 77 69 6e 64  |creen, 01 - wind|
00032670  6f 77 2c 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ow,.            |
00032680  31 30 20 2d 20 73 70 65  63 69 66 69 65 64 20 70  |10 - specified p|
00032690  61 72 65 6e 74 0a 36 20  20 20 20 20 20 20 50 61  |arent.6       Pa|
000326a0  72 65 6e 74 20 62 6f 75  6e 64 69 6e 67 20 62 6f  |rent bounding bo|
000326b0  78 20 61 70 70 6c 69 65  73 20 74 6f 0a 20 20 20  |x applies to.   |
000326c0  20 20 20 20 20 20 20 20  20 30 20 2d 20 62 62 6f  |         0 - bbo|
000326d0  78 2c 20 31 20 2d 20 70  6f 69 6e 74 65 72 0a 37  |x, 1 - pointer.7|
000326e0  20 20 20 20 20 20 20 44  72 6f 70 2d 73 68 61 64  |       Drop-shad|
000326f0  6f 77 0a 20 20 20 20 20  20 20 20 20 20 20 20 30  |ow.            0|
00032700  20 2d 20 61 62 73 65 6e  74 2c 20 31 20 2d 20 70  | - absent, 1 - p|
00032710  72 65 73 65 6e 74 0a 38  2d 33 31 20 20 20 20 52  |resent.8-31    R|
00032720  65 73 65 72 76 65 64 2c  20 73 68 6f 75 6c 64 20  |eserved, should |
00032730  62 65 20 7a 65 72 6f 2e  44 49 52 24 48 03 00 00  |be zero.DIR$H...|
00032740  48 03 00 00 80 2a 03 00  46 ff ff ff 08 6c bc 22  |H....*..F....l."|
00032750  df 00 00 00 13 00 00 00  00 00 00 00 45 44 4f 4d  |............EDOM|
00032760  00 00 00 00 60 2b 03 00  46 ff ff ff ff 98 b5 22  |....`+..F......"|
00032770  38 00 00 00 13 00 00 00  00 00 00 00 65 6c 73 65  |8...........else|
00032780  00 00 00 00 98 2b 03 00  46 fd ff ff 67 7f 84 2f  |.....+..F...g../|
00032790  2c 00 00 00 13 01 00 00  00 00 00 00 65 6c 73 65  |,...........else|
000327a0  5f 00 00 00 5c 2c 03 00  46 ff ff ff 6d 94 e5 22  |_...\,..F...m.."|
000327b0  d3 01 00 00 13 00 00 00  00 00 00 00 65 6c 73 65  |............else|
000327c0  69 66 00 00 30 2e 03 00  46 ff ff ff 0f e0 54 26  |if..0...F.....T&|
000327d0  da 01 00 00 13 00 00 00  00 00 00 00 45 6e 61 62  |............Enab|
000327e0  6c 65 44 62 75 67 00 00  0c 30 03 00 46 ff ff ff  |leDbug...0..F...|
000327f0  89 97 e5 22 6c 00 00 00  13 00 00 00 00 00 00 00  |..."l...........|
00032800  65 6e 64 69 66 00 00 00  78 30 03 00 46 ff ff ff  |endif...x0..F...|
00032810  d0 ea 54 26 95 00 00 00  13 00 00 00 00 00 00 00  |..T&............|
00032820  45 6e 76 00 10 31 03 00  46 fd ff ff cd 7f 84 2f  |Env..1..F....../|
00032830  30 00 00 00 13 01 00 00  00 00 00 00 45 6e 76 5f  |0...........Env_|
00032840  00 00 00 00 94 32 03 00  46 ff ff ff 21 97 c1 22  |.....2..F...!.."|
00032850  ef 00 00 00 13 00 00 00  00 00 00 00 45 4f 46 00  |............EOF.|
00032860  84 33 03 00 46 ff ff ff  c0 74 bc 22 ed 00 00 00  |.3..F....t."....|
00032870  13 00 00 00 00 00 00 00  45 52 41 4e 47 45 00 00  |........ERANGE..|
00032880  74 34 03 00 46 ff ff ff  9b 06 55 26 22 01 00 00  |t4..F.....U&"...|
00032890  13 00 00 00 00 00 00 00  45 72 72 00 98 35 03 00  |........Err..5..|
000328a0  46 fd ff ff 28 80 84 2f  50 00 00 00 13 01 00 00  |F...(../P.......|
000328b0  00 00 00 00 45 72 72 5f  00 00 00 00 20 39 03 00  |....Err_.... 9..|
000328c0  46 fd ff ff 67 80 84 2f  2c 00 00 00 13 01 00 00  |F...g../,.......|
000328d0  00 00 00 00 65 72 72 68  6e 64 5f 00 dc 39 03 00  |....errhnd_..9..|
000328e0  46 ff ff ff 14 7e bc 22  b7 00 00 00 13 00 00 00  |F....~."........|
000328f0  00 00 00 00 65 72 72 6e  6f 00 00 00 94 3a 03 00  |....errno....:..|
00032900  46 fd ff ff a0 80 84 2f  28 00 00 00 13 01 00 00  |F....../(.......|
00032910  00 00 00 00 65 72 72 6e  6f 5f 00 00 bc 3b 03 00  |....errno_...;..|
00032920  46 ff ff ff cb 9c f1 24  97 00 00 00 13 00 00 00  |F......$........|
00032930  00 00 00 00 45 52 52 4f  52 00 00 00 54 3c 03 00  |....ERROR...T<..|
00032940  46 fd ff ff d8 80 84 2f  48 01 00 00 13 01 00 00  |F....../H.......|
00032950  00 00 00 00 45 72 72 6f  72 5f 00 00 44 4d 03 00  |....Error_..DM..|
00032960  46 ff ff ff 74 79 bc 22  ea 00 00 00 13 00 00 00  |F...ty."........|
00032970  00 00 00 00 45 53 49 47  4e 55 4d 00 30 4e 03 00  |....ESIGNUM.0N..|
00032980  46 ff ff ff e4 dd 24 25  4b 03 00 00 13 00 00 00  |F.....$%K.......|
00032990  00 00 00 00 45 76 65 6e  74 00 00 00 7c 51 03 00  |....Event...|Q..|
000329a0  46 fd ff ff d7 81 84 2f  28 04 00 00 13 01 00 00  |F....../(.......|
000329b0  00 00 00 00 65 76 65 6e  74 5f 00 00 88 7d 03 00  |....event_...}..|
000329c0  46 ff ff ff c4 15 27 25  7d 01 00 00 13 00 00 00  |F.....'%}.......|
000329d0  00 00 00 00 45 76 65 6e  74 4d 73 67 00 00 00 00  |....EventMsg....|
000329e0  08 7f 03 00 46 fd ff ff  45 84 84 2f c0 00 00 00  |....F...E../....|
000329f0  13 01 00 00 00 00 00 00  45 76 65 6e 74 4d 73 67  |........EventMsg|
00032a00  5f 00 00 00 5c 86 03 00  46 ff ff ff 6e 8d eb 24  |_...\...F...n..$|
00032a10  dc 01 00 00 13 00 00 00  00 00 00 00 65 78 69 74  |............exit|
00032a20  00 00 00 00 38 88 03 00  46 fd ff ff d0 84 84 2f  |....8...F....../|
00032a30  4c 00 00 00 13 01 00 00  00 00 00 00 45 58 49 54  |L...........EXIT|
00032a40  5f 00 00 00 9c 8a 03 00  46 ff ff ff 8e ea bd 22  |_.......F......"|
00032a50  cf 00 00 00 13 00 00 00  00 00 00 00 65 78 70 00  |............exp.|
00032a60  6c 8b 03 00 46 ff ff ff  fc e7 e5 22 59 00 00 00  |l...F......"Y...|
00032a70  13 00 00 00 00 00 00 00  45 58 50 4f 52 54 00 00  |........EXPORT..|
00032a80  44 41 54 41 df 00 00 00  45 44 4f 4d 0a 54 68 65  |DATA....EDOM.The|
00032a90  20 6d 61 63 72 6f 20 45  44 4f 4d 20 69 73 20 64  | macro EDOM is d|
00032aa0  65 66 69 6e 65 64 20 69  6e 20 3c 65 72 72 6e 6f  |efined in <errno|
00032ab0  2e 68 3d 3e 65 72 72 6e  6f 5f 68 3e 20 61 73 20  |.h=>errno_h> as |
00032ac0  61 6e 20 69 6e 74 65 67  65 72 20 76 61 6c 75 65  |an integer value|
00032ad0  20 77 68 69 63 68 20 63  61 6e 20 62 65 20 73 74  | which can be st|
00032ae0  6f 72 65 64 20 69 6e 20  3c 65 72 72 6e 6f 3e 20  |ored in <errno> |
00032af0  74 6f 20 69 6e 64 69 63  61 74 65 20 74 68 61 74  |to indicate that|
00032b00  20 74 68 65 20 69 6e 70  75 74 20 61 72 67 75 6d  | the input argum|
00032b10  65 6e 74 73 20 66 6f 72  20 61 20 66 75 6e 63 74  |ents for a funct|
00032b20  69 6f 6e 20 61 72 65 20  6f 75 74 20 6f 66 20 61  |ion are out of a|
00032b30  20 73 75 69 74 61 62 6c  65 20 64 6f 6d 61 69 6e  | suitable domain|
00032b40  2e 20 49 6e 20 45 61 73  79 a0 43 20 69 74 20 69  |. In Easy.C it i|
00032b50  73 20 64 65 66 69 6e 65  64 20 61 73 20 31 2e 00  |s defined as 1..|
00032b60  44 41 54 41 38 00 00 00  65 6c 73 65 0a 54 68 69  |DATA8...else.Thi|
00032b70  73 20 6b 65 79 77 6f 72  64 20 69 73 20 70 61 72  |s keyword is par|
00032b80  74 20 6f 66 20 74 68 65  20 3c 69 66 3e 20 63 6f  |t of the <if> co|
00032b90  6e 73 74 72 75 63 74 2e  44 49 52 24 2c 00 00 00  |nstruct.DIR$,...|
00032ba0  2c 00 00 00 c4 2b 03 00  46 fd ff ff ee 82 e5 22  |,....+..F......"|
00032bb0  95 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
00032bc0  74 00 00 00 44 41 54 41  95 00 00 00 23 65 6c 73  |t...DATA....#els|
00032bd0  65 0a 54 68 69 73 20 64  69 72 65 63 74 69 76 65  |e.This directive|
00032be0  20 66 6f 72 6d 73 20 70  61 72 74 20 6f 66 20 74  | forms part of t|
00032bf0  68 65 20 3c 23 69 66 3d  3e 69 66 3e 2c 20 3c 23  |he <#if=>if>, <#|
00032c00  69 66 64 65 66 3d 3e 69  66 64 65 66 3e 20 61 6e  |ifdef=>ifdef> an|
00032c10  64 20 3c 23 69 66 6e 64  65 66 3d 3e 69 66 6e 64  |d <#ifndef=>ifnd|
00032c20  65 66 3e 20 63 6f 6e 73  74 72 75 63 74 73 2e 0a  |ef> constructs..|
00032c30  0a 41 6e 20 61 64 64 69  74 69 6f 6e 61 6c 20 66  |.An additional f|
00032c40  6f 72 6d 20 69 73 20 3c  23 65 6c 73 65 69 66 3d  |orm is <#elseif=|
00032c50  3e 65 6c 73 65 69 66 3e  2e 00 00 00 44 41 54 41  |>elseif>....DATA|
00032c60  d3 01 00 00 23 65 6c 73  65 69 66 0a 54 68 69 73  |....#elseif.This|
00032c70  20 64 69 72 65 63 74 69  76 65 20 63 6f 6d 62 69  | directive combi|
00032c80  6e 65 73 20 74 68 65 20  66 75 6e 63 74 69 6f 6e  |nes the function|
00032c90  61 6c 69 74 79 20 6f 66  20 3c 23 65 6c 73 65 3d  |ality of <#else=|
00032ca0  3e 65 6c 73 65 5f 3e 20  61 6e 64 20 3c 23 69 66  |>else_> and <#if|
00032cb0  3d 3e 69 66 5f 3e 2e 20  49 74 20 68 61 73 20 74  |=>if_>. It has t|
00032cc0  68 65 20 73 61 6d 65 20  66 6f 72 6d 20 61 73 20  |he same form as |
00032cd0  61 20 23 69 66 20 63 6f  6e 73 74 72 75 63 74 20  |a #if construct |
00032ce0  62 75 74 20 63 6f 6d 62  69 6e 65 73 20 74 68 69  |but combines thi|
00032cf0  73 20 77 69 74 68 20 23  65 6c 73 65 20 65 67 2e  |s with #else eg.|
00032d00  0a 0a 23 66 43 6f 64 65  0a 20 20 20 20 20 20 3c  |..#fCode.      <|
00032d10  23 69 66 6e 64 65 66 3d  3e 69 66 6e 64 65 66 3e  |#ifndef=>ifndef>|
00032d20  20 4d 41 43 52 4f 0a 20  20 20 20 20 20 5c 3c 73  | MACRO.      \<s|
00032d30  74 61 74 65 6d 65 6e 74  73 31 3e 3b 0a 20 20 20  |tatements1>;.   |
00032d40  20 20 20 23 65 6c 73 65  69 66 20 4d 41 43 52 4f  |   #elseif MACRO|
00032d50  3d 3d 31 0a 20 20 20 20  20 20 5c 3c 73 74 61 74  |==1.      \<stat|
00032d60  65 6d 65 6e 74 73 32 3e  3b 0a 20 20 20 20 20 20  |ements2>;.      |
00032d70  23 65 6c 73 65 0a 20 20  20 20 20 20 5c 3c 73 74  |#else.      \<st|
00032d80  61 74 65 6d 65 6e 74 73  33 3e 3b 0a 20 20 20 20  |atements3>;.    |
00032d90  20 20 23 65 6e 64 69 66  0a 23 66 0a 0a 49 66 20  |  #endif.#f..If |
00032da0  4d 41 43 52 4f 20 69 73  20 75 6e 64 65 66 69 6e  |MACRO is undefin|
00032db0  65 64 20 5c 3c 73 74 61  74 6d 65 6e 74 73 31 3e  |ed \<statments1>|
00032dc0  20 77 69 6c 6c 20 62 65  20 63 6f 6d 70 69 6c 65  | will be compile|
00032dd0  64 2c 20 65 6c 73 65 20  69 66 20 4d 41 43 52 4f  |d, else if MACRO|
00032de0  3d 3d 31 20 74 68 65 6e  20 5c 3c 73 74 61 74 65  |==1 then \<state|
00032df0  6d 65 6e 74 73 32 3e 20  77 69 6c 6c 20 62 65 20  |ments2> will be |
00032e00  63 6f 6d 70 69 6c 65 64  2c 20 65 6c 73 65 20 5c  |compiled, else \|
00032e10  3c 73 74 61 74 65 6d 65  6e 74 73 33 3e 20 77 69  |<statements3> wi|
00032e20  6c 6c 20 62 65 20 63 6f  6d 70 69 6c 65 64 2e 00  |ll be compiled..|
00032e30  44 41 54 41 da 01 00 00  54 69 6d 73 4c 69 62 3a  |DATA....TimsLib:|
00032e40  45 6e 61 62 6c 65 44 62  75 67 2e 68 0a 23 50 61  |EnableDbug.h.#Pa|
00032e50  72 65 6e 74 20 72 6f 5f  74 6c 69 62 5f 0a 54 68  |rent ro_tlib_.Th|
00032e60  69 73 20 68 65 61 64 65  72 20 73 68 6f 75 6c 64  |is header should|
00032e70  20 62 65 20 3c 23 69 6e  63 6c 75 64 65 3d 3e 69  | be <#include=>i|
00032e80  6e 63 6c 75 64 65 3e 64  20 69 6e 74 6f 20 61 6e  |nclude>d into an|
00032e90  79 20 73 6f 75 72 63 65  20 66 69 6c 65 20 79 6f  |y source file yo|
00032ea0  75 20 77 61 6e 74 20 74  6f 20 75 73 65 20 74 68  |u want to use th|
00032eb0  65 20 3c 4d 61 6c 6c 6f  63 44 62 75 67 3d 3e 4d  |e <MallocDbug=>M|
00032ec0  61 6c 6c 6f 63 44 62 75  67 5f 68 3e 20 66 61 63  |allocDbug_h> fac|
00032ed0  69 6c 69 74 69 65 73 2e  20 49 74 20 6d 75 73 74  |ilities. It must|
00032ee0  20 62 65 20 69 6e 63 6c  75 64 65 64 20 61 66 74  | be included aft|
00032ef0  65 72 20 61 6c 6c 20 6f  74 68 65 72 20 68 65 61  |er all other hea|
00032f00  64 65 72 20 66 69 6c 65  73 20 61 6e 64 20 64 65  |der files and de|
00032f10  66 69 6e 65 73 20 74 68  65 20 66 6f 6c 6c 6f 77  |fines the follow|
00032f20  69 6e 67 20 6d 61 63 72  6f 73 3a 0a 0a 5c 23 64  |ing macros:..\#d|
00032f30  65 66 69 6e 65 20 3c 6d  61 6c 6c 6f 63 3e 20 3c  |efine <malloc> <|
00032f40  6d 61 6c 6c 6f 63 64 62  75 67 3e 0a 5c 23 64 65  |mallocdbug>.\#de|
00032f50  66 69 6e 65 20 3c 66 72  65 65 3e 20 3c 66 72 65  |fine <free> <fre|
00032f60  65 64 62 75 67 3e 0a 5c  23 64 65 66 69 6e 65 20  |edbug>.\#define |
00032f70  3c 53 74 72 53 61 76 65  3e 20 3c 73 74 72 73 61  |<StrSave> <strsa|
00032f80  76 65 64 62 75 67 3e 0a  0a 49 74 20 68 61 73 20  |vedbug>..It has |
00032f90  6e 6f 20 65 66 66 65 63  74 20 69 66 20 74 68 65  |no effect if the|
00032fa0  20 6d 61 63 72 6f 20 7b  2a 7d 5f 44 45 42 55 47  | macro {*}_DEBUG|
00032fb0  7b 2a 7d 20 69 73 20 6e  6f 74 20 64 65 66 69 6e  |{*} is not defin|
00032fc0  65 64 2e 0a 0a 53 65 65  20 61 6c 73 6f 20 3c 54  |ed...See also <T|
00032fd0  69 6d 73 4c 69 62 3a 4d  61 6c 6c 6f 63 44 62 75  |imsLib:MallocDbu|
00032fe0  67 2e 68 3d 3e 4d 61 6c  6c 6f 63 44 62 75 67 3e  |g.h=>MallocDbug>|
00032ff0  20 61 6e 64 20 3c 54 69  6d 73 4c 69 62 3a 4c 69  | and <TimsLib:Li|
00033000  62 2e 68 3d 3e 4c 69 62  3e 2e 00 00 44 41 54 41  |b.h=>Lib>...DATA|
00033010  6c 00 00 00 23 65 6e 64  69 66 0a 54 68 69 73 20  |l...#endif.This |
00033020  64 69 72 65 63 74 69 76  65 20 6d 61 72 6b 73 20  |directive marks |
00033030  74 68 65 20 65 6e 64 20  6f 66 20 61 20 3c 23 69  |the end of a <#i|
00033040  66 3d 3e 69 66 5f 3e 2c  20 3c 23 69 66 64 65 66  |f=>if_>, <#ifdef|
00033050  3d 3e 69 66 64 65 66 3e  20 6f 72 20 3c 23 69 66  |=>ifdef> or <#if|
00033060  6e 64 65 66 3d 3e 69 66  6e 64 65 66 3e 20 63 6f  |ndef=>ifndef> co|
00033070  6e 73 74 72 75 63 74 2e  44 41 54 41 95 00 00 00  |nstruct.DATA....|
00033080  54 69 6d 73 4c 69 62 3a  45 6e 76 2e 68 0a 23 50  |TimsLib:Env.h.#P|
00033090  61 72 65 6e 74 20 72 6f  5f 74 6c 69 62 5f 0a 54  |arent ro_tlib_.T|
000330a0  68 69 73 20 68 65 61 64  65 72 20 70 72 6f 76 69  |his header provi|
000330b0  64 65 73 20 66 61 63 69  6c 69 74 69 65 73 20 66  |des facilities f|
000330c0  6f 72 20 68 61 6e 64 6c  69 6e 67 20 65 6e 76 69  |or handling envi|
000330d0  72 6f 6e 6d 65 6e 74 20  76 61 72 69 61 62 6c 65  |ronment variable|
000330e0  73 2e 0a 0a 46 75 6e 63  74 69 6f 6e 3a 0a 0a 7b  |s...Function:..{|
000330f0  61 6c 69 67 6e 20 63 65  6e 74 72 65 7d 3c 45 6e  |align centre}<En|
00033100  76 5f 52 65 61 64 56 61  72 56 61 6c 3e 00 00 00  |v_ReadVarVal>...|
00033110  44 49 52 24 30 00 00 00  30 00 00 00 40 31 03 00  |DIR$0...0...@1..|
00033120  46 ff ff ff ca f9 54 26  51 01 00 00 13 00 00 00  |F.....T&Q.......|
00033130  00 00 00 00 52 65 61 64  56 61 72 56 61 6c 00 00  |....ReadVarVal..|
00033140  44 41 54 41 51 01 00 00  45 6e 76 5f 52 65 61 64  |DATAQ...Env_Read|
00033150  56 61 72 56 61 6c 0a 53  79 6e 74 61 78 3a 09 3c  |VarVal.Syntax:.<|
00033160  42 4f 4f 4c 3e 20 45 6e  76 5f 52 65 61 64 56 61  |BOOL> Env_ReadVa|
00033170  72 56 61 6c 20 28 63 68  61 72 20 2a 76 61 72 69  |rVal (char *vari|
00033180  61 62 6c 65 2c 20 63 68  61 72 20 2a 62 75 66 2c  |able, char *buf,|
00033190  20 69 6e 74 20 62 75 66  73 69 7a 65 29 3b 0a 48  | int bufsize);.H|
000331a0  65 61 64 65 72 3a 09 3c  54 69 6d 73 4c 69 62 3a  |eader:.<TimsLib:|
000331b0  45 6e 76 2e 68 3d 3e 45  6e 76 3e 0a 0a 52 65 74  |Env.h=>Env>..Ret|
000331c0  75 72 6e 73 3a 09 3c 54  52 55 45 3e 20 69 66 20  |urns:.<TRUE> if |
000331d0  73 75 63 63 65 73 73 66  75 6c 2e 0a 0a 54 68 69  |successful...Thi|
000331e0  73 20 66 75 6e 63 74 69  6f 6e 20 72 65 61 64 73  |s function reads|
000331f0  20 74 68 65 20 76 61 6c  75 65 20 6f 66 20 74 68  | the value of th|
00033200  65 20 65 6e 76 69 72 6f  6e 6d 65 6e 74 20 76 61  |e environment va|
00033210  72 69 61 62 6c 65 20 77  68 6f 73 65 20 6e 61 6d  |riable whose nam|
00033220  65 20 69 73 20 67 69 76  65 6e 20 69 6e 20 2f 76  |e is given in /v|
00033230  61 72 69 61 62 6c 65 2f  20 61 6e 64 20 70 6c 61  |ariable/ and pla|
00033240  63 65 73 20 69 74 20 69  6e 20 2f 62 75 66 2f 2e  |ces it in /buf/.|
00033250  20 2f 62 75 66 73 69 7a  65 2f 20 69 73 20 73 69  | /bufsize/ is si|
00033260  7a 65 20 6f 66 20 2f 62  75 66 2f 2e 20 3c 4f 53  |ze of /buf/. <OS|
00033270  5f 52 65 61 64 56 61 72  56 61 6c 3e 20 64 6f 65  |_ReadVarVal> doe|
00033280  73 20 74 68 65 20 73 61  6d 65 20 74 68 69 6e 67  |s the same thing|
00033290  2e 00 00 00 44 41 54 41  ef 00 00 00 45 4f 46 0a  |....DATA....EOF.|
000332a0  23 50 61 72 65 6e 74 20  73 74 64 69 6f 0a 54 68  |#Parent stdio.Th|
000332b0  65 20 6d 61 63 72 6f 20  45 4f 46 20 69 73 20 64  |e macro EOF is d|
000332c0  65 66 69 6e 65 64 20 69  6e 20 3c 73 74 64 69 6f  |efined in <stdio|
000332d0  2e 68 3d 3e 73 74 64 69  6f 3e 20 61 73 20 61 20  |.h=>stdio> as a |
000332e0  6e 65 67 61 74 69 76 65  20 76 61 6c 75 65 20 72  |negative value r|
000332f0  65 74 75 72 6e 65 64 20  62 79 20 73 6f 6d 65 20  |eturned by some |
00033300  49 2f 4f 20 66 75 6e 63  74 69 6f 6e 73 20 69 6e  |I/O functions in|
00033310  64 69 63 61 74 69 6e 67  20 61 6e 20 65 6e 64 2d  |dicating an end-|
00033320  6f 66 2d 66 69 6c 65 20  63 6f 6e 64 69 74 69 6f  |of-file conditio|
00033330  6e 2e 20 49 6e 20 45 61  73 79 20 43 20 28 61 6e  |n. In Easy C (an|
00033340  64 20 65 76 65 72 79 20  6f 74 68 65 72 20 43 20  |d every other C |
00033350  69 6d 70 6c 65 6d 65 6e  74 61 74 69 6f 6e 20 49  |implementation I|
00033360  20 68 61 76 65 20 73 65  65 6e 21 29 20 69 74 20  | have seen!) it |
00033370  69 73 20 64 65 66 69 6e  65 64 20 61 73 20 28 2d  |is defined as (-|
00033380  31 29 2e 00 44 41 54 41  ed 00 00 00 45 52 41 4e  |1)..DATA....ERAN|
00033390  47 45 0a 54 68 65 20 6d  61 63 72 6f 20 45 52 41  |GE.The macro ERA|
000333a0  4e 47 45 20 69 73 20 64  65 66 69 6e 65 64 20 69  |NGE is defined i|
000333b0  6e 20 3c 65 72 72 6e 6f  2e 68 3d 3e 65 72 72 6e  |n <errno.h=>errn|
000333c0  6f 5f 68 3e 20 61 73 20  61 6e 20 69 6e 74 65 67  |o_h> as an integ|
000333d0  65 72 20 76 61 6c 75 65  20 77 68 69 63 68 20 63  |er value which c|
000333e0  61 6e 20 62 65 20 73 74  6f 72 65 64 20 69 6e 20  |an be stored in |
000333f0  3c 65 72 72 6e 6f 3e 20  74 6f 20 69 6e 64 69 63  |<errno> to indic|
00033400  61 74 65 20 74 68 61 74  20 74 68 65 20 72 65 73  |ate that the res|
00033410  75 6c 74 73 20 6f 66 20  61 20 66 75 6e 63 74 69  |ults of a functi|
00033420  6f 6e 20 61 72 65 20 74  6f 6f 20 62 69 67 20 74  |on are too big t|
00033430  6f 20 62 65 20 73 74 6f  72 65 64 20 69 6e 20 74  |o be stored in t|
00033440  68 65 20 72 65 74 75 72  6e 20 76 61 72 69 61 62  |he return variab|
00033450  6c 65 2e 20 49 6e 20 45  61 73 79 20 43 20 69 74  |le. In Easy C it|
00033460  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 20 32  | is defined as 2|
00033470  2e 00 00 00 44 41 54 41  22 01 00 00 54 69 6d 73  |....DATA"...Tims|
00033480  4c 69 62 3a 45 72 72 2e  68 0a 54 68 69 73 20 68  |Lib:Err.h.This h|
00033490  65 61 64 65 72 20 70 72  6f 76 69 64 65 73 20 66  |eader provides f|
000334a0  61 63 69 6c 69 74 69 65  73 20 66 6f 72 20 63 61  |acilities for ca|
000334b0  74 63 68 69 6e 67 20 65  72 72 6f 72 73 2e 0a 0a  |tching errors...|
000334c0  46 75 6e 63 74 69 6f 6e  73 3a 0a 0a 23 49 6e 64  |Functions:..#Ind|
000334d0  65 6e 74 20 38 0a 23 54  61 62 6c 65 20 31 20 31  |ent 8.#Table 1 1|
000334e0  35 0a 3c 45 72 72 5f 43  68 65 63 6b 3e 0a 3c 45  |5.<Err_Check>.<E|
000334f0  72 72 5f 43 6f 6d 70 6c  61 69 6e 3e 0a 23 45 6e  |rr_Complain>.#En|
00033500  64 54 61 62 6c 65 0a 23  69 6e 64 65 6e 74 20 30  |dTable.#indent 0|
00033510  0a 0a 54 68 65 20 66 6f  72 6d 61 74 20 6f 66 20  |..The format of |
00033520  72 65 70 6f 72 74 65 64  20 65 72 72 6f 72 73 20  |reported errors |
00033530  69 73 3a 0a 0a 7b 66 43  6f 64 65 7d 46 69 6c 65  |is:..{fCode}File|
00033540  6e 61 6d 65 2e 4c 69 6e  65 6e 75 6d 62 65 72 3a  |name.Linenumber:|
00033550  45 72 72 6f 72 20 6d 65  73 73 61 67 65 7b 66 7d  |Error message{f}|
00033560  0a 0a 54 68 69 73 20 61  6c 6c 6f 77 73 20 79 6f  |..This allows yo|
00033570  75 20 74 6f 20 66 69 6e  64 20 74 68 65 20 73 6f  |u to find the so|
00033580  75 72 63 65 20 6f 66 20  65 72 72 6f 72 73 20 65  |urce of errors e|
00033590  61 73 69 6c 79 2e 00 00  44 49 52 24 50 00 00 00  |asily...DIR$P...|
000335a0  50 00 00 00 e8 35 03 00  46 ff ff ff 04 19 55 26  |P....5..F.....U&|
000335b0  13 02 00 00 13 00 00 00  00 00 00 00 43 68 65 63  |............Chec|
000335c0  6b 00 00 00 fc 37 03 00  46 ff ff ff dc 23 55 26  |k....7..F....#U&|
000335d0  22 01 00 00 13 00 00 00  00 00 00 00 43 6f 6d 70  |"...........Comp|
000335e0  6c 61 69 6e 00 00 00 00  44 41 54 41 13 02 00 00  |lain....DATA....|
000335f0  45 72 72 5f 43 68 65 63  6b 0a 53 79 6e 74 61 78  |Err_Check.Syntax|
00033600  3a 09 3c 42 4f 4f 4c 3e  20 45 72 72 5f 43 68 65  |:.<BOOL> Err_Che|
00033610  63 6b 20 28 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ck (<os_error> *|
00033620  65 72 72 6f 72 29 3b 0a  48 65 61 64 65 72 3a 09  |error);.Header:.|
00033630  3c 54 69 6d 73 4c 69 62  3a 45 72 72 2e 68 3d 3e  |<TimsLib:Err.h=>|
00033640  45 72 72 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 3c  |Err>..Returns:.<|
00033650  54 52 55 45 3e 20 69 66  20 27 65 72 72 6f 72 27  |TRUE> if 'error'|
00033660  20 69 73 20 6e 6f 74 20  3c 4e 55 4c 4c 3e 2e 0a  | is not <NULL>..|
00033670  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 2d 6c  |.This function-l|
00033680  69 6b 65 20 6d 61 63 72  6f 20 77 69 6c 6c 20 63  |ike macro will c|
00033690  61 6c 6c 20 3c 45 72 72  5f 43 6f 6d 70 6c 61 69  |all <Err_Complai|
000336a0  6e 3e 20 77 69 74 68 20  74 68 65 20 63 75 72 72  |n> with the curr|
000336b0  65 6e 74 20 73 6f 75 72  63 65 20 66 69 6c 65 20  |ent source file |
000336c0  61 6e 64 20 6c 69 6e 65  2e 20 49 74 20 69 73 20  |and line. It is |
000336d0  69 6e 74 65 6e 64 65 64  20 74 68 61 74 20 69 74  |intended that it|
000336e0  20 77 69 6c 6c 20 62 65  20 75 73 65 64 20 74 6f  | will be used to|
000336f0  20 65 6e 63 61 70 73 75  6c 61 74 65 20 65 72 72  | encapsulate err|
00033700  6f 72 20 72 65 74 75 72  6e 69 6e 67 20 66 75 6e  |or returning fun|
00033710  63 74 69 6f 6e 73 20 61  73 20 66 6f 6c 6c 6f 77  |ctions as follow|
00033720  73 3a 0a 0a 7b 66 43 6f  64 65 3b 61 6c 69 67 6e  |s:..{fCode;align|
00033730  20 63 65 6e 74 72 65 7d  66 61 69 6c 65 64 3d 45  | centre}failed=E|
00033740  72 72 5f 43 68 65 63 6b  28 3c 6f 73 5f 63 6c 69  |rr_Check(<os_cli|
00033750  3e 28 22 4c 6f 61 64 20  42 6c 6f 62 22 29 29 3b  |>("Load Blob"));|
00033760  7b 66 3b 61 6c 69 67 6e  7d 0a 0a 49 66 20 7b 2a  |{f;align}..If {*|
00033770  7d 6f 73 5f 63 6c 69 7b  2a 7d 20 72 65 74 75 72  |}os_cli{*} retur|
00033780  6e 73 20 61 6e 20 65 72  72 6f 72 20 74 68 65 6e  |ns an error then|
00033790  20 69 74 20 77 69 6c 6c  20 62 65 20 72 65 70 6f  | it will be repo|
000337a0  72 74 65 64 20 61 6e 64  20 2f 66 61 69 6c 65 64  |rted and /failed|
000337b0  2f 20 77 69 6c 6c 20 65  71 75 61 6c 20 54 52 55  |/ will equal TRU|
000337c0  45 2c 20 65 6c 73 65 20  2f 66 61 69 6c 65 64 2f  |E, else /failed/|
000337d0  20 77 69 6c 6c 20 65 71  75 61 6c 20 3c 46 41 4c  | will equal <FAL|
000337e0  53 45 3e 20 61 6e 64 20  6e 6f 20 61 63 74 69 6f  |SE> and no actio|
000337f0  6e 20 69 73 20 74 61 6b  65 6e 2e 00 44 41 54 41  |n is taken..DATA|
00033800  22 01 00 00 45 72 72 5f  43 6f 6d 70 6c 61 69 6e  |"...Err_Complain|
00033810  0a 53 79 6e 74 61 78 3a  09 3c 42 4f 4f 4c 3e 20  |.Syntax:.<BOOL> |
00033820  45 72 72 5f 43 6f 6d 70  6c 61 69 6e 20 28 63 68  |Err_Complain (ch|
00033830  61 72 20 2a 66 69 6c 65  6e 61 6d 65 2c 20 69 6e  |ar *filename, in|
00033840  74 20 6c 69 6e 65 2c 20  3c 6f 73 5f 65 72 72 6f  |t line, <os_erro|
00033850  72 3e 20 2a 65 72 72 6f  72 29 3b 0a 48 65 61 64  |r> *error);.Head|
00033860  65 72 3a 09 3c 54 69 6d  73 4c 69 62 3a 45 72 72  |er:.<TimsLib:Err|
00033870  2e 68 3d 3e 45 72 72 3e  0a 0a 52 65 74 75 72 6e  |.h=>Err>..Return|
00033880  73 3a 09 3c 54 52 55 45  3e 20 69 66 20 2f 65 72  |s:.<TRUE> if /er|
00033890  72 6f 72 2f 20 69 73 20  6e 6f 74 20 3c 4e 55 4c  |ror/ is not <NUL|
000338a0  4c 3e 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |L>...This functi|
000338b0  6f 6e 20 77 69 6c 6c 20  72 65 70 6f 72 74 20 74  |on will report t|
000338c0  68 65 20 65 72 72 6f 72  20 69 66 20 2f 65 72 72  |he error if /err|
000338d0  6f 72 2f 20 69 73 20 6e  6f 74 20 3c 4e 55 4c 4c  |or/ is not <NULL|
000338e0  3e 2e 20 49 74 20 69 73  20 69 6e 74 65 6e 64 65  |>. It is intende|
000338f0  64 20 74 6f 20 62 65 20  63 61 6c 6c 65 64 20 62  |d to be called b|
00033900  79 20 75 73 69 6e 67 20  74 68 65 20 6d 61 63 72  |y using the macr|
00033910  6f 20 3c 45 72 72 5f 43  68 65 63 6b 3e 2e 00 00  |o <Err_Check>...|
00033920  44 49 52 24 2c 00 00 00  2c 00 00 00 4c 39 03 00  |DIR$,...,...L9..|
00033930  46 fd ff ff 62 49 c4 22  8d 00 00 00 13 00 00 00  |F...bI."........|
00033940  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00033950  8d 00 00 00 45 72 72 6f  72 20 48 61 6e 64 6c 69  |....Error Handli|
00033960  6e 67 20 46 75 6e 63 74  69 6f 6e 73 0a 23 50 61  |ng Functions.#Pa|
00033970  72 65 6e 74 20 73 74 64  69 6f 0a 54 68 65 73 65  |rent stdio.These|
00033980  20 66 75 6e 63 74 69 6f  6e 73 20 68 61 6e 64 6c  | functions handl|
00033990  65 20 66 69 6c 65 20 65  72 72 6f 72 73 2e 0a 0a  |e file errors...|
000339a0  23 54 61 62 6c 65 20 32  20 31 38 0a 3c 63 6c 65  |#Table 2 18.<cle|
000339b0  61 72 65 72 72 3e 0a 3c  66 65 6f 66 3e 0a 3c 66  |arerr>.<feof>.<f|
000339c0  65 72 72 6f 72 3e 0a 3c  70 65 72 72 6f 72 3e 0a  |error>.<perror>.|
000339d0  23 45 6e 64 54 61 62 6c  65 00 00 00 44 41 54 41  |#EndTable...DATA|
000339e0  b7 00 00 00 65 72 72 6e  6f 0a 54 68 65 20 76 61  |....errno.The va|
000339f0  72 69 61 62 6c 65 20 65  72 72 6e 6f 20 69 73 20  |riable errno is |
00033a00  64 65 63 6c 61 72 65 64  20 69 6e 20 3c 65 72 72  |declared in <err|
00033a10  6e 6f 2e 68 3d 3e 65 72  72 6e 6f 5f 68 3e 2e 20  |no.h=>errno_h>. |
00033a20  49 74 20 69 73 20 61 20  76 61 72 69 61 62 6c 65  |It is a variable|
00033a30  20 77 68 69 63 68 20 69  73 20 75 73 65 64 20 74  | which is used t|
00033a40  6f 20 73 74 6f 72 65 20  65 72 72 6f 72 20 63 6f  |o store error co|
00033a50  64 65 73 20 77 68 69 63  68 20 73 6f 6d 65 20 41  |des which some A|
00033a60  4e 53 49 20 43 20 66 75  6e 63 74 69 6f 6e 73 20  |NSI C functions |
00033a70  72 65 74 75 72 6e 2c 20  65 67 20 74 68 6f 73 65  |return, eg those|
00033a80  20 69 6e 20 3c 6d 61 74  68 2e 68 3d 3e 6d 61 74  | in <math.h=>mat|
00033a90  68 3e 2e 00 44 49 52 24  28 00 00 00 28 00 00 00  |h>..DIR$(...(...|
00033aa0  bc 3a 03 00 46 fd ff ff  3f 7a bb 22 fe 00 00 00  |.:..F...?z."....|
00033ab0  13 00 00 00 00 00 00 00  68 00 00 00 44 41 54 41  |........h...DATA|
00033ac0  fe 00 00 00 65 72 72 6e  6f 2e 68 0a 54 68 65 20  |....errno.h.The |
00033ad0  5c 3c 65 72 72 6e 6f 2e  68 5c 3e 20 68 65 61 64  |\<errno.h\> head|
00033ae0  65 72 20 64 65 63 6c 61  72 65 73 20 6f 6e 65 20  |er declares one |
00033af0  76 61 72 69 61 62 6c 65  20 61 6e 64 20 64 65 66  |variable and def|
00033b00  69 6e 65 73 20 74 68 72  65 65 20 6d 61 63 72 6f  |ines three macro|
00033b10  73 2c 20 61 6c 6c 20 6f  66 20 77 68 69 63 68 20  |s, all of which |
00033b20  61 72 65 20 75 73 65 64  20 66 6f 72 20 72 65 70  |are used for rep|
00033b30  6f 72 74 69 6e 67 20 61  6e 64 20 69 6e 74 65 72  |orting and inter|
00033b40  70 72 65 74 69 6e 67 20  65 72 72 6f 72 73 2e 0a  |preting errors..|
00033b50  0a 4d 61 63 72 6f 73 3a  0a 0a 23 49 6e 64 65 6e  |.Macros:..#Inden|
00033b60  74 20 35 0a 23 54 61 62  6c 65 20 6c 69 6e 65 73  |t 5.#Table lines|
00033b70  20 31 0a 3c 45 44 4f 4d  3e 0a 3c 45 52 41 4e 47  | 1.<EDOM>.<ERANG|
00033b80  45 3e 0a 3c 45 53 49 47  4e 55 4d 3e 0a 23 45 6e  |E>.<ESIGNUM>.#En|
00033b90  64 54 61 62 6c 65 0a 0a  23 49 6e 64 65 6e 74 20  |dTable..#Indent |
00033ba0  30 0a 56 61 72 69 61 62  6c 65 3a 0a 0a 20 20 20  |0.Variable:..   |
00033bb0  20 20 3c 65 72 72 6e 6f  3e 0a 00 00 44 41 54 41  |  <errno>...DATA|
00033bc0  97 00 00 00 45 52 52 4f  52 0a 54 68 65 20 6d 61  |....ERROR.The ma|
00033bd0  63 72 6f 20 45 52 52 4f  52 20 69 73 20 64 65 66  |cro ERROR is def|
00033be0  69 6e 65 64 20 69 6e 20  3c 44 65 73 6b 4c 69 62  |ined in <DeskLib|
00033bf0  3a 43 6f 72 65 2e 68 3d  3e 43 6f 72 65 3e 20 61  |:Core.h=>Core> a|
00033c00  73 20 61 20 76 61 6c 75  65 20 72 65 70 72 65 73  |s a value repres|
00033c10  65 6e 74 69 6e 67 20 74  68 65 20 73 74 61 74 65  |enting the state|
00033c20  20 74 68 61 74 20 61 6e  20 65 72 72 6f 72 20 65  | that an error e|
00033c30  78 69 73 74 73 2e 20 49  74 20 69 73 20 61 63 74  |xists. It is act|
00033c40  75 61 6c 6c 79 20 64 65  66 69 6e 65 64 20 61 73  |ually defined as|
00033c50  20 31 2e 00 44 49 52 24  48 01 00 00 48 01 00 00  | 1..DIR$H...H...|
00033c60  9c 3d 03 00 46 ff ff ff  e9 2b f4 24 12 02 00 00  |.=..F....+.$....|
00033c70  13 00 00 00 00 00 00 00  43 68 65 63 6b 00 00 00  |........Check...|
00033c80  b0 3f 03 00 46 ff ff ff  18 48 f4 24 d5 01 00 00  |.?..F....H.$....|
00033c90  13 00 00 00 00 00 00 00  43 68 65 63 6b 46 61 74  |........CheckFat|
00033ca0  61 6c 00 00 88 41 03 00  46 ff ff ff cf 7e 42 26  |al...A..F....~B&|
00033cb0  e7 03 00 00 13 00 00 00  00 00 00 00 66 6c 61 67  |............flag|
00033cc0  73 00 00 00 70 45 03 00  46 fd ff ff 77 b1 f4 24  |s...pE..F...w..$|
00033cd0  f0 01 00 00 13 00 00 00  00 00 00 00 68 00 00 00  |............h...|
00033ce0  60 47 03 00 46 ff ff ff  7d 54 f4 24 63 01 00 00  |`G..F...}T.$c...|
00033cf0  13 00 00 00 00 00 00 00  4f 75 74 4f 66 4d 65 6d  |........OutOfMem|
00033d00  6f 72 79 00 c4 48 03 00  46 ff ff ff 6d 01 f4 24  |ory..H..F...m..$|
00033d10  96 01 00 00 13 00 00 00  00 00 00 00 52 65 70 6f  |............Repo|
00033d20  72 74 00 00 5c 4a 03 00  46 ff ff ff 85 0e f4 24  |rt..\J..F......$|
00033d30  b7 00 00 00 13 00 00 00  00 00 00 00 52 65 70 6f  |............Repo|
00033d40  72 74 46 61 74 61 6c 00  14 4b 03 00 46 ff ff ff  |rtFatal..K..F...|
00033d50  23 e8 f3 24 5d 01 00 00  13 00 00 00 00 00 00 00  |#..$]...........|
00033d60  52 65 70 6f 72 74 49 6e  74 65 72 6e 61 6c 00 00  |ReportInternal..|
00033d70  74 4c 03 00 46 ff ff ff  1f f2 f3 24 cf 00 00 00  |tL..F......$....|
00033d80  13 00 00 00 00 00 00 00  52 65 70 6f 72 74 46 61  |........ReportFa|
00033d90  74 61 6c 49 6e 74 65 72  6e 61 6c 00 44 41 54 41  |talInternal.DATA|
00033da0  12 02 00 00 45 72 72 6f  72 5f 43 68 65 63 6b 0a  |....Error_Check.|
00033db0  53 79 6e 74 61 78 3a 09  3c 42 4f 4f 4c 3e 20 45  |Syntax:.<BOOL> E|
00033dc0  72 72 6f 72 5f 43 68 65  63 6b 20 28 3c 6f 73 5f  |rror_Check (<os_|
00033dd0  65 72 72 6f 72 3e 20 2a  65 72 72 29 3b 0a 48 65  |error> *err);.He|
00033de0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 45  |ader:.<DeskLib:E|
00033df0  72 72 6f 72 2e 68 3d 3e  45 72 72 6f 72 5f 68 3e  |rror.h=>Error_h>|
00033e00  0a 0a 52 65 74 75 72 6e  73 3a 09 3c 54 52 55 45  |..Returns:.<TRUE|
00033e10  3e 20 69 66 20 2f 65 72  72 2f 20 21 3d a0 3c 4e  |> if /err/ !=.<N|
00033e20  55 4c 4c 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |ULL>..This funct|
00033e30  69 6f 6e 20 77 69 6c 6c  20 63 61 6c 6c 20 3c 45  |ion will call <E|
00033e40  72 72 6f 72 5f 52 65 70  6f 72 74 3e 2c 20 69 66  |rror_Report>, if|
00033e50  20 2f 65 72 72 2f 20 69  73 20 6e 6f 74 20 2a 4e  | /err/ is not *N|
00033e60  55 4c 4c 2a 2e 20 49 74  20 69 73 20 69 6e 74 65  |ULL*. It is inte|
00033e70  6e 64 65 64 20 74 68 61  74 20 69 74 20 77 69 6c  |nded that it wil|
00033e80  6c 20 62 65 20 75 73 65  64 20 74 6f 20 65 6e 63  |l be used to enc|
00033e90  61 70 73 75 6c 61 74 65  20 65 72 72 6f 72 20 72  |apsulate error r|
00033ea0  65 74 75 72 6e 69 6e 67  20 66 75 6e 63 74 69 6f  |eturning functio|
00033eb0  6e 73 20 61 73 20 66 6f  6c 6c 6f 77 73 3a 0a 7b  |ns as follows:.{|
00033ec0  77 72 61 70 20 6f 66 66  7d 0a 7b 66 43 6f 64 65  |wrap off}.{fCode|
00033ed0  3b 61 6c 69 67 6e 20 63  65 6e 74 72 65 7d 66 61  |;align centre}fa|
00033ee0  69 6c 65 64 3d 45 72 72  6f 72 5f 43 68 65 63 6b  |iled=Error_Check|
00033ef0  28 3c 6f 73 5f 63 6c 69  3e 28 22 4c 6f 61 64 20  |(<os_cli>("Load |
00033f00  42 6c 6f 62 22 29 29 3b  7b 66 3b 61 6c 69 67 6e  |Blob"));{f;align|
00033f10  3b 77 72 61 70 7d 0a 0a  49 66 20 7b 2a 7d 6f 73  |;wrap}..If {*}os|
00033f20  5f 63 6c 69 7b 2a 7d 20  72 65 74 75 72 6e 73 20  |_cli{*} returns |
00033f30  61 6e 20 65 72 72 6f 72  20 74 68 65 6e 20 69 74  |an error then it|
00033f40  20 77 69 6c 6c 20 62 65  20 72 65 70 6f 72 74 65  | will be reporte|
00033f50  64 20 61 6e 64 20 2f 66  61 69 6c 65 64 2f 20 77  |d and /failed/ w|
00033f60  69 6c 6c 20 65 71 75 61  6c 20 7b 2a 7d 54 52 55  |ill equal {*}TRU|
00033f70  45 7b 2a 7d 2c 20 65 6c  73 65 20 2f 66 61 69 6c  |E{*}, else /fail|
00033f80  65 64 2f 20 77 69 6c 6c  20 65 71 75 61 6c 20 3c  |ed/ will equal <|
00033f90  46 41 4c 53 45 3e 20 61  6e 64 20 6e 6f 20 61 63  |FALSE> and no ac|
00033fa0  74 69 6f 6e 20 69 73 20  74 61 6b 65 6e 2e 00 00  |tion is taken...|
00033fb0  44 41 54 41 d5 01 00 00  45 72 72 6f 72 5f 43 68  |DATA....Error_Ch|
00033fc0  65 63 6b 46 61 74 61 6c  0a 53 79 6e 74 61 78 3a  |eckFatal.Syntax:|
00033fd0  09 76 6f 69 64 20 45 72  72 6f 72 5f 43 68 65 63  |.void Error_Chec|
00033fe0  6b 46 61 74 61 6c 20 28  3c 6f 73 5f 65 72 72 6f  |kFatal (<os_erro|
00033ff0  72 3e 20 2a 65 72 72 29  3b 0a 48 65 61 64 65 72  |r> *err);.Header|
00034000  3a 09 3c 44 65 73 6b 4c  69 62 3a 45 72 72 6f 72  |:.<DeskLib:Error|
00034010  2e 68 3d 3e 45 72 72 6f  72 5f 68 3e 0a 0a 54 68  |.h=>Error_h>..Th|
00034020  69 73 20 66 75 6e 63 74  69 6f 6e 20 77 69 6c 6c  |is function will|
00034030  20 63 61 6c 6c 20 3c 45  72 72 6f 72 5f 52 65 70  | call <Error_Rep|
00034040  6f 72 74 46 61 74 61 6c  3e 2c 20 69 66 20 2f 65  |ortFatal>, if /e|
00034050  72 72 2f 20 69 73 20 6e  6f 74 20 3c 4e 55 4c 4c  |rr/ is not <NULL|
00034060  3e 2e 20 49 74 20 69 73  20 69 6e 74 65 6e 64 65  |>. It is intende|
00034070  64 20 74 68 61 74 20 69  74 20 77 69 6c 6c 20 62  |d that it will b|
00034080  65 20 75 73 65 64 20 74  6f 20 65 6e 63 61 70 73  |e used to encaps|
00034090  75 6c 61 74 65 20 65 72  72 6f 72 20 72 65 74 75  |ulate error retu|
000340a0  72 6e 69 6e 67 20 66 75  6e 63 74 69 6f 6e 73 20  |rning functions |
000340b0  61 73 20 66 6f 6c 6c 6f  77 73 3a 0a 7b 77 72 61  |as follows:.{wra|
000340c0  70 20 6f 66 66 7d 0a 7b  66 43 6f 64 65 3b 61 6c  |p off}.{fCode;al|
000340d0  69 67 6e 20 63 65 6e 74  72 65 7d 45 72 72 6f 72  |ign centre}Error|
000340e0  5f 43 68 65 63 6b 46 61  74 61 6c 28 3c 6f 73 5f  |_CheckFatal(<os_|
000340f0  63 6c 69 3e 28 22 4c 6f  61 64 20 42 6c 6f 62 22  |cli>("Load Blob"|
00034100  29 29 3b 7b 66 3b 61 6c  69 67 6e 3b 77 72 61 70  |));{f;align;wrap|
00034110  7d 0a 0a 49 66 20 7b 2a  7d 6f 73 5f 63 6c 69 7b  |}..If {*}os_cli{|
00034120  2a 7d 20 72 65 74 75 72  6e 73 20 61 6e 20 65 72  |*} returns an er|
00034130  72 6f 72 20 74 68 65 6e  20 69 74 20 77 69 6c 6c  |ror then it will|
00034140  20 62 65 20 72 65 70 6f  72 74 65 64 20 61 6e 64  | be reported and|
00034150  20 74 68 65 20 70 72 6f  67 72 61 6d 20 77 69 6c  | the program wil|
00034160  6c 20 65 78 69 74 2c 20  65 6c 73 65 20 6e 6f 20  |l exit, else no |
00034170  61 63 74 69 6f 6e 20 77  69 6c 6c 20 62 65 20 74  |action will be t|
00034180  61 6b 65 6e 2e 00 00 00  44 41 54 41 e7 03 00 00  |aken....DATA....|
00034190  65 72 72 6f 72 5f 66 6c  61 67 73 0a 54 68 69 73  |error_flags.This|
000341a0  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
000341b0  20 69 6e 20 3c 44 65 73  6b 4c 69 62 3a 57 69 6d  | in <DeskLib:Wim|
000341c0  70 2e 68 3d 3e 57 69 6d  70 3e 2e 20 49 74 20 63  |p.h=>Wimp>. It c|
000341d0  6f 6e 74 61 69 6e 73 20  74 68 65 20 66 6c 61 67  |ontains the flag|
000341e0  73 20 6e 65 65 64 65 64  20 62 79 20 3c 57 69 6d  |s needed by <Wim|
000341f0  70 5f 52 65 70 6f 72 74  45 72 72 6f 72 3e 2c 20  |p_ReportError>, |
00034200  62 6f 74 68 20 61 73 20  61 20 76 61 6c 75 65 20  |both as a value |
00034210  61 6e 64 20 61 73 20 69  6e 64 69 76 69 64 75 61  |and as individua|
00034220  6c 20 62 69 74 73 20 66  6f 72 20 65 61 73 79 20  |l bits for easy |
00034230  73 65 74 74 69 6e 67 2e  20 49 74 20 69 73 20 64  |setting. It is d|
00034240  65 66 69 6e 65 64 20 61  73 20 74 68 65 20 66 6f  |efined as the fo|
00034250  6c 6c 6f 77 69 6e 67 20  75 6e 69 6f 6e 3a 0a 0a  |llowing union:..|
00034260  20 20 5c 7b 0a 20 20 20  20 75 6e 73 69 67 6e 65  |  \{.    unsigne|
00034270  64 20 69 6e 74 20 76 61  6c 75 65 3b 0a 20 20 20  |d int value;.   |
00034280  20 73 74 72 75 63 74 0a  20 20 20 20 5c 7b 0a 20  | struct.    \{. |
00034290  20 20 20 20 20 75 6e 73  69 67 6e 65 64 20 69 6e  |     unsigned in|
000342a0  74 20 6f 6b 09 3a 20 31  3b 0a 20 20 20 20 20 20  |t ok.: 1;.      |
000342b0  75 6e 73 69 67 6e 65 64  20 69 6e 74 20 63 61 6e  |unsigned int can|
000342c0  63 65 6c 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |cel.: 1;.      u|
000342d0  6e 73 69 67 6e 65 64 20  69 6e 74 20 68 69 67 68  |nsigned int high|
000342e0  6c 69 67 68 74 63 61 6e  63 65 6c 09 3a 20 31 3b  |lightcancel.: 1;|
000342f0  0a 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |.      unsigned |
00034300  69 6e 74 20 6e 6f 70 72  6f 6d 70 74 09 3a 20 31  |int noprompt.: 1|
00034310  3b 0a 20 20 20 20 20 20  75 6e 73 69 67 6e 65 64  |;.      unsigned|
00034320  20 69 6e 74 20 6e 6f 70  72 65 66 69 78 09 3a 20  | int noprefix.: |
00034330  31 3b 0a 20 20 20 20 20  20 75 6e 73 69 67 6e 65  |1;.      unsigne|
00034340  64 20 69 6e 74 20 6e 6f  77 61 69 74 09 3a 20 31  |d int nowait.: 1|
00034350  3b 0a 20 20 20 20 20 20  75 6e 73 69 67 6e 65 64  |;.      unsigned|
00034360  20 69 6e 74 20 63 6c 6f  73 65 62 6f 78 09 3a 20  | int closebox.: |
00034370  31 3b 0a 20 20 20 20 7d  20 64 61 74 61 3b 0a 20  |1;.    } data;. |
00034380  20 7d 0a 7b 74 61 62 7d  0a 8f 09 2f 6f 6b 2f 20  | }.{tab}.../ok/ |
00034390  61 6e 64 20 2f 63 61 6e  63 65 6c 2f 20 6d 65 61  |and /cancel/ mea|
000343a0  6e 20 70 72 6f 76 69 64  65 20 61 6e 20 4f 4b 2f  |n provide an OK/|
000343b0  43 61 6e 63 65 6c 20 62  6f 78 20 72 65 73 70 65  |Cancel box respe|
000343c0  63 74 69 76 65 6c 79 2e  0a 8f 09 2f 6e 6f 70 72  |ctively..../nopr|
000343d0  6f 6d 70 74 2f 20 6d 65  61 6e 73 20 74 68 61 74  |ompt/ means that|
000343e0  20 22 50 72 65 73 73 20  53 50 41 43 45 20 6f 72  | "Press SPACE or|
000343f0  20 63 6c 69 63 6b 20 6d  6f 75 73 65 20 74 6f 20  | click mouse to |
00034400  63 6f 6e 74 69 6e 75 65  22 20 77 69 6c 6c 20 6e  |continue" will n|
00034410  6f 74 20 61 70 70 65 61  72 2e 0a 8f 09 2f 6e 6f  |ot appear..../no|
00034420  70 72 65 66 69 78 2f 20  6d 65 61 6e 73 20 74 68  |prefix/ means th|
00034430  61 74 20 74 68 65 20 74  69 74 6c 65 20 62 61 72  |at the title bar|
00034440  20 77 69 6c 6c 20 6e 6f  74 20 63 6f 6e 74 61 69  | will not contai|
00034450  6e 20 22 45 72 72 6f 72  20 66 72 6f 6d 22 2e 0a  |n "Error from"..|
00034460  8f 09 2f 6e 6f 77 61 69  74 2f 20 6d 65 61 6e 73  |../nowait/ means|
00034470  20 74 68 61 74 20 74 68  65 20 66 75 6e 63 74 69  | that the functi|
00034480  6f 6e 20 77 69 6c 6c 20  72 65 74 75 72 6e 20 61  |on will return a|
00034490  6e 64 20 6c 65 61 76 65  20 74 68 65 20 77 69 6e  |nd leave the win|
000344a0  64 6f 77 20 6f 70 65 6e  2e 0a 8f 09 2f 63 6c 6f  |dow open..../clo|
000344b0  73 65 62 6f 78 2f 20 6d  65 61 6e 73 20 74 68 61  |sebox/ means tha|
000344c0  74 20 6f 6e 65 20 6f 66  20 74 68 65 20 62 6f 78  |t one of the box|
000344d0  65 73 20 77 69 6c 6c 20  62 65 20 73 65 6c 65 63  |es will be selec|
000344e0  74 65 64 20 28 7b 2f 7d  6f 6b 7b 2f 7d 20 6f 72  |ted ({/}ok{/} or|
000344f0  20 7b 2f 7d 63 61 6e 63  65 6c 7b 2f 7d 29 20 61  | {/}cancel{/}) a|
00034500  6e 64 20 74 68 65 20 77  69 6e 64 6f 77 20 63 6c  |nd the window cl|
00034510  6f 73 65 64 2e 0a 0a 42  69 74 20 37 2c 20 77 68  |osed...Bit 7, wh|
00034520  69 63 68 20 69 73 20 6e  6f 74 20 70 72 6f 76 69  |ich is not provi|
00034530  64 65 64 20 61 73 20 61  20 73 65 70 61 72 61 74  |ded as a separat|
00034540  65 20 76 61 72 69 61 62  6c 65 2c 20 73 69 6c 65  |e variable, sile|
00034550  6e 63 65 73 20 61 6e 79  20 62 65 65 70 20 28 52  |nces any beep (R|
00034560  49 53 43 20 4f 53 20 33  20 6f 6e 6c 79 29 2e 00  |ISC OS 3 only)..|
00034570  44 41 54 41 f0 01 00 00  45 72 72 6f 72 2e 68 0a  |DATA....Error.h.|
00034580  56 65 72 73 69 6f 6e 3a  20 31 2e 30 35 34 20 28  |Version: 1.054 (|
00034590  31 33 20 4a 75 6c 20 31  39 39 33 29 0a 23 6c 69  |13 Jul 1993).#li|
000345a0  6e 65 0a 54 68 65 20 7b  2a 7d 45 72 72 6f 72 2e  |ne.The {*}Error.|
000345b0  68 7b 2a 7d 20 68 65 61  64 65 72 20 64 65 66 69  |h{*} header defi|
000345c0  6e 65 73 20 61 20 6e 75  6d 62 65 72 20 6f 66 20  |nes a number of |
000345d0  66 75 6e 63 74 69 6f 6e  20 66 6f 72 20 72 65 70  |function for rep|
000345e0  6f 72 74 69 6e 67 20 65  72 72 6f 72 73 2e 20 54  |orting errors. T|
000345f0  68 65 73 65 20 66 75 6e  63 74 69 6f 6e 73 20 61  |hese functions a|
00034600  72 65 20 6e 6f 74 20 69  6e 63 6c 75 64 65 64 20  |re not included |
00034610  69 6e 20 74 68 65 20 44  65 73 6b 4c 69 62 20 6c  |in the DeskLib l|
00034620  69 62 72 61 72 79 2c 20  62 75 74 20 61 72 65 20  |ibrary, but are |
00034630  70 72 65 73 65 6e 74 20  69 6e 20 61 20 73 65 70  |present in a sep|
00034640  61 72 61 74 65 20 6f 62  6a 65 63 74 20 66 69 6c  |arate object fil|
00034650  65 2e 20 54 68 69 73 20  69 73 20 73 6f 20 79 6f  |e. This is so yo|
00034660  75 20 63 61 6e 20 63 68  61 6e 67 65 20 74 68 65  |u can change the|
00034670  69 72 20 61 63 74 69 6f  6e 20 77 69 74 68 6f 75  |ir action withou|
00034680  74 20 63 68 61 6e 67 69  6e 67 20 74 68 65 20 63  |t changing the c|
00034690  61 6c 6c 20 75 73 65 64  20 74 6f 20 69 6e 76 6f  |all used to invo|
000346a0  6b 65 20 74 68 65 6d 2e  0a 0a 46 75 6e 63 74 69  |ke them...Functi|
000346b0  6f 6e 73 3a 0a 0a 23 69  6e 64 65 6e 74 20 32 0a  |ons:..#indent 2.|
000346c0  23 54 61 62 6c 65 20 34  20 32 37 0a 3c 45 72 72  |#Table 4 27.<Err|
000346d0  6f 72 5f 52 65 70 6f 72  74 49 6e 74 65 72 6e 61  |or_ReportInterna|
000346e0  6c 3e 0a 3c 45 72 72 6f  72 5f 52 65 70 6f 72 74  |l>.<Error_Report|
000346f0  46 61 74 61 6c 49 6e 74  65 72 6e 61 6c 3e 0a 3c  |FatalInternal>.<|
00034700  45 72 72 6f 72 5f 52 65  70 6f 72 74 3e 0a 3c 45  |Error_Report>.<E|
00034710  72 72 6f 72 5f 52 65 70  6f 72 74 46 61 74 61 6c  |rror_ReportFatal|
00034720  3e 0a 3c 45 72 72 6f 72  5f 43 68 65 63 6b 3e 0a  |>.<Error_Check>.|
00034730  3c 45 72 72 6f 72 5f 43  68 65 63 6b 46 61 74 61  |<Error_CheckFata|
00034740  6c 3e 0a 3c 45 72 72 6f  72 5f 4f 75 74 4f 66 4d  |l>.<Error_OutOfM|
00034750  65 6d 6f 72 79 3e 0a 23  45 6e 64 54 61 62 6c 65  |emory>.#EndTable|
00034760  44 41 54 41 63 01 00 00  45 72 72 6f 72 5f 4f 75  |DATAc...Error_Ou|
00034770  74 4f 66 4d 65 6d 6f 72  79 0a 53 79 6e 74 61 78  |tOfMemory.Syntax|
00034780  3a 09 3c 42 4f 4f 4c 3e  20 45 72 72 6f 72 5f 4f  |:.<BOOL> Error_O|
00034790  75 74 4f 66 4d 65 6d 6f  72 79 20 28 42 4f 4f 4c  |utOfMemory (BOOL|
000347a0  20 66 61 74 61 6c 2c 20  63 68 61 72 20 2a 70 6c  | fatal, char *pl|
000347b0  61 63 65 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |ace);.Header:.<D|
000347c0  65 73 6b 4c 69 62 3a 45  72 72 6f 72 2e 68 3d 3e  |eskLib:Error.h=>|
000347d0  45 72 72 6f 72 5f 68 3e  0a 0a 52 65 74 75 72 6e  |Error_h>..Return|
000347e0  73 3a 09 30 20 28 3d 3d  20 3c 46 41 4c 53 45 3e  |s:.0 (== <FALSE>|
000347f0  20 3d 3d 20 3c 4e 55 4c  4c 3e 29 2e 0a 0a 54 68  | == <NULL>)...Th|
00034800  69 73 20 66 75 6e 63 74  69 6f 6e 20 72 65 70 6f  |is function repo|
00034810  72 74 73 20 61 20 6d 65  6d 6f 72 79 20 65 72 72  |rts a memory err|
00034820  6f 72 20 28 69 65 20 22  55 6e 61 62 6c 65 20 74  |or (ie "Unable t|
00034830  6f 20 63 6c 61 69 6d 20  65 6e 6f 75 67 68 20 6d  |o claim enough m|
00034840  65 6d 6f 72 79 20 66 6f  72 20 58 58 58 22 29 2c  |emory for XXX"),|
00034850  20 77 68 65 72 65 20 58  58 58 20 69 73 20 74 68  | where XXX is th|
00034860  65 20 70 6c 61 63 65 20  67 69 76 65 6e 2e 20 49  |e place given. I|
00034870  66 20 2f 66 61 74 61 6c  2f 20 69 73 20 3c 54 52  |f /fatal/ is <TR|
00034880  55 45 3e 2c 20 74 68 65  6e 20 3c 45 72 72 6f 72  |UE>, then <Error|
00034890  5f 52 65 70 6f 72 74 46  61 74 61 6c 3e 20 69 73  |_ReportFatal> is|
000348a0  20 75 73 65 64 2c 20 65  6c 73 65 20 3c 45 72 72  | used, else <Err|
000348b0  6f 72 5f 52 65 70 6f 72  74 3e 20 69 73 20 75 73  |or_Report> is us|
000348c0  65 64 2e 00 44 41 54 41  96 01 00 00 45 72 72 6f  |ed..DATA....Erro|
000348d0  72 5f 52 65 70 6f 72 74  0a 53 79 6e 74 61 78 3a  |r_Report.Syntax:|
000348e0  09 76 6f 69 64 20 45 72  72 6f 72 5f 52 65 70 6f  |.void Error_Repo|
000348f0  72 74 20 28 69 6e 74 20  65 72 72 6e 6f 2c 20 63  |rt (int errno, c|
00034900  68 61 72 20 2a 72 65 70  6f 72 74 2c 20 2e 2e 2e  |har *report, ...|
00034910  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00034920  4c 69 62 3a 45 72 72 6f  72 2e 68 3d 3e 45 72 72  |Lib:Error.h=>Err|
00034930  6f 72 5f 68 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |or_h>..This func|
00034940  74 69 6f 6e 20 72 65 70  6f 72 74 73 20 61 6e 20  |tion reports an |
00034950  65 72 72 6f 72 20 74 6f  20 74 68 65 20 75 73 65  |error to the use|
00034960  72 2c 20 75 6e 64 65 72  20 63 6f 6e 74 72 6f 6c  |r, under control|
00034970  20 6f 66 20 74 68 65 20  3c 66 6f 72 6d 61 74 20  | of the <format |
00034980  73 74 72 69 6e 67 3d 3e  70 66 6f 72 6d 5f 3e 2c  |string=>pform_>,|
00034990  20 2f 72 65 70 6f 72 74  2f 2e 20 54 68 65 20 65  | /report/. The e|
000349a0  72 72 6f 72 20 6e 75 6d  62 65 72 20 69 73 20 67  |rror number is g|
000349b0  69 76 65 6e 20 69 6e 20  2f 65 72 72 6e 6f 2f 2e  |iven in /errno/.|
000349c0  20 54 68 65 20 64 65 66  61 75 6c 74 20 69 6d 70  | The default imp|
000349d0  6c 65 6d 65 6e 74 61 74  69 6f 6e 20 63 61 6c 6c  |lementation call|
000349e0  73 20 3c 57 69 6d 70 5f  52 65 70 6f 72 74 45 72  |s <Wimp_ReportEr|
000349f0  72 6f 72 3d 3e 53 57 49  3a 57 69 6d 70 5f 52 65  |ror=>SWI:Wimp_Re|
00034a00  70 6f 72 74 45 72 72 6f  72 3e 2c 20 62 75 74 20  |portError>, but |
00034a10  79 6f 75 20 63 61 6e 20  63 68 61 6e 67 65 20 7b  |you can change {|
00034a20  2a 7d 45 72 72 6f 72 2e  63 7b 2a 7d 20 61 6e 64  |*}Error.c{*} and|
00034a30  20 72 65 63 6f 6d 70 69  6c 65 20 74 6f 20 70 72  | recompile to pr|
00034a40  6f 76 69 64 65 20 61 6e  79 20 61 63 74 69 6f 6e  |ovide any action|
00034a50  20 79 6f 75 20 77 61 6e  74 2e 00 00 44 41 54 41  | you want...DATA|
00034a60  b7 00 00 00 45 72 72 6f  72 5f 52 65 70 6f 72 74  |....Error_Report|
00034a70  46 61 74 61 6c 0a 53 79  6e 74 61 78 3a 09 76 6f  |Fatal.Syntax:.vo|
00034a80  69 64 20 45 72 72 6f 72  5f 52 65 70 6f 72 74 46  |id Error_ReportF|
00034a90  61 74 61 6c 20 28 69 6e  74 20 65 72 72 6e 6f 2c  |atal (int errno,|
00034aa0  20 63 68 61 72 20 2a 72  65 70 6f 72 74 2c 20 2e  | char *report, .|
00034ab0  2e 2e 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |..);.Header:.<De|
00034ac0  73 6b 4c 69 62 3a 45 72  72 6f 72 2e 68 3d 3e 45  |skLib:Error.h=>E|
00034ad0  72 72 6f 72 5f 68 3e 0a  0a 54 68 69 73 20 66 75  |rror_h>..This fu|
00034ae0  6e 63 74 69 6f 6e 20 63  61 6c 6c 73 20 3c 45 72  |nction calls <Er|
00034af0  72 6f 72 5f 52 65 70 6f  72 74 3e 2c 20 61 6e 64  |ror_Report>, and|
00034b00  20 74 68 65 6e 20 63 61  6c 6c 73 20 3c 65 78 69  | then calls <exi|
00034b10  74 3e 2e 00 44 41 54 41  5d 01 00 00 45 72 72 6f  |t>..DATA]...Erro|
00034b20  72 5f 52 65 70 6f 72 74  49 6e 74 65 72 6e 61 6c  |r_ReportInternal|
00034b30  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 45 72  |.Syntax:.void Er|
00034b40  72 6f 72 5f 52 65 70 6f  72 74 49 6e 74 65 72 6e  |ror_ReportIntern|
00034b50  61 6c 20 28 69 6e 74 20  65 72 72 6e 6f 2c 20 63  |al (int errno, c|
00034b60  68 61 72 20 2a 72 65 70  6f 72 74 2c 20 2e 2e 2e  |har *report, ...|
00034b70  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00034b80  4c 69 62 3a 45 72 72 6f  72 2e 68 3d 3e 45 72 72  |Lib:Error.h=>Err|
00034b90  6f 72 5f 68 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |or_h>..This func|
00034ba0  74 69 6f 6e 20 69 73 20  69 64 65 6e 74 69 63 61  |tion is identica|
00034bb0  6c 20 74 6f 20 3c 45 72  72 6f 72 5f 52 65 70 6f  |l to <Error_Repo|
00034bc0  72 74 3e 2c 20 65 78 63  65 70 74 20 69 74 20 69  |rt>, except it i|
00034bd0  73 20 75 73 65 64 20 66  6f 72 20 6d 6f 73 74 20  |s used for most |
00034be0  65 72 72 6f 72 73 20 72  65 70 6f 72 74 65 64 20  |errors reported |
00034bf0  62 79 20 44 65 73 6b 4c  69 62 2e 20 59 6f 75 20  |by DeskLib. You |
00034c00  73 68 6f 75 6c 64 20 75  73 65 20 45 72 72 6f 72  |should use Error|
00034c10  5f 52 65 70 6f 72 74 2e  20 54 68 69 73 20 63 61  |_Report. This ca|
00034c20  6c 6c 20 65 78 69 73 74  73 20 73 6f 20 79 6f 75  |ll exists so you|
00034c30  20 63 61 6e 20 74 72 65  61 74 20 69 6e 74 65 72  | can treat inter|
00034c40  6e 61 6c 20 65 72 72 6f  72 73 20 64 69 66 66 65  |nal errors diffe|
00034c50  72 65 6e 74 6c 79 20 62  79 20 63 68 61 6e 67 69  |rently by changi|
00034c60  6e 67 20 7b 2a 7d 45 72  72 6f 72 2e 63 7b 2a 7d  |ng {*}Error.c{*}|
00034c70  2e 00 00 00 44 41 54 41  cf 00 00 00 45 72 72 6f  |....DATA....Erro|
00034c80  72 5f 52 65 70 6f 72 74  46 61 74 61 6c 49 6e 74  |r_ReportFatalInt|
00034c90  65 72 6e 61 6c 0a 53 79  6e 74 61 78 3a 09 76 6f  |ernal.Syntax:.vo|
00034ca0  69 64 20 45 72 72 6f 72  5f 52 65 70 6f 72 74 46  |id Error_ReportF|
00034cb0  61 74 61 6c 49 6e 74 65  72 6e 61 6c 20 28 69 6e  |atalInternal (in|
00034cc0  74 20 65 72 72 6e 6f 2c  20 63 68 61 72 20 2a 72  |t errno, char *r|
00034cd0  65 70 6f 72 74 2c 20 2e  2e 2e 29 3b 0a 48 65 61  |eport, ...);.Hea|
00034ce0  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 45 72  |der:.<DeskLib:Er|
00034cf0  72 6f 72 2e 68 3d 3e 45  72 72 6f 72 5f 68 3e 0a  |ror.h=>Error_h>.|
00034d00  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
00034d10  61 6c 6c 73 20 3c 45 72  72 6f 72 5f 52 65 70 6f  |alls <Error_Repo|
00034d20  72 74 49 6e 74 65 72 6e  61 6c 3e 2c 20 61 6e 64  |rtInternal>, and|
00034d30  20 74 68 65 6e 20 63 61  6c 6c 73 20 3c 65 78 69  | then calls <exi|
00034d40  74 3e 2e 00 44 41 54 41  ea 00 00 00 45 53 49 47  |t>..DATA....ESIG|
00034d50  4e 55 4d 0a 54 68 65 20  6d 61 63 72 6f 20 45 53  |NUM.The macro ES|
00034d60  49 47 4e 55 4d 20 69 73  20 64 65 66 69 6e 65 64  |IGNUM is defined|
00034d70  20 69 6e 20 3c 65 72 72  6e 6f 2e 68 3d 3e 65 72  | in <errno.h=>er|
00034d80  72 6e 6f 5f 68 3e 20 61  73 20 61 6e 20 69 6e 74  |rno_h> as an int|
00034d90  65 67 65 72 20 76 61 6c  75 65 20 77 68 69 63 68  |eger value which|
00034da0  20 63 61 6e 20 62 65 20  73 74 6f 72 65 64 20 69  | can be stored i|
00034db0  6e 20 3c 65 72 72 6e 6f  3e 20 74 6f 20 69 6e 64  |n <errno> to ind|
00034dc0  69 63 61 74 65 20 74 68  61 74 20 61 6e 20 75 6e  |icate that an un|
00034dd0  72 65 63 6f 67 6e 69 73  65 64 20 73 69 67 6e 61  |recognised signa|
00034de0  6c 20 68 61 73 20 62 65  65 6e 20 63 61 75 67 68  |l has been caugh|
00034df0  74 20 62 79 20 74 68 65  20 64 65 66 61 75 6c 74  |t by the default|
00034e00  20 73 69 67 6e 61 6c 20  68 61 6e 64 6c 65 72 2e  | signal handler.|
00034e10  20 49 6e 20 45 61 73 79  20 43 20 69 74 20 69 73  | In Easy C it is|
00034e20  20 64 65 66 69 6e 65 64  20 61 73 20 33 2e 00 00  | defined as 3...|
00034e30  44 41 54 41 4b 03 00 00  44 65 73 6b 4c 69 62 3a  |DATAK...DeskLib:|
00034e40  45 76 65 6e 74 2e 68 0a  56 65 72 73 69 6f 6e 3a  |Event.h.Version:|
00034e50  20 31 2e 30 31 20 28 31  34 20 4a 75 6c 20 31 39  | 1.01 (14 Jul 19|
00034e60  39 33 29 0a 23 6c 69 6e  65 0a 54 68 69 73 20 68  |93).#line.This h|
00034e70  65 61 64 65 72 20 64 65  63 6c 61 72 65 73 20 68  |eader declares h|
00034e80  69 67 68 2d 6c 65 76 65  6c 20 66 75 6e 63 74 69  |igh-level functi|
00034e90  6f 6e 73 20 66 6f 72 20  76 65 72 79 20 65 61 73  |ons for very eas|
00034ea0  79 20 68 61 6e 64 6c 69  6e 67 20 6f 66 20 57 69  |y handling of Wi|
00034eb0  6d 70 20 65 76 65 6e 74  73 2e 0a 0a 46 75 6e 63  |mp events...Func|
00034ec0  74 69 6f 6e 73 3a 0a 0a  23 49 6e 64 65 6e 74 20  |tions:..#Indent |
00034ed0  31 30 0a 23 54 61 62 6c  65 20 34 20 32 31 0a 3c  |10.#Table 4 21.<|
00034ee0  45 76 65 6e 74 5f 49 6e  69 74 69 61 6c 69 73 65  |Event_Initialise|
00034ef0  3e 0a 3c 45 76 65 6e 74  5f 49 6e 69 74 69 61 6c  |>.<Event_Initial|
00034f00  69 73 65 33 3e 0a 3c 45  76 65 6e 74 5f 43 6c 61  |ise3>.<Event_Cla|
00034f10  69 6d 3e 0a 3c 45 76 65  6e 74 5f 52 65 6c 65 61  |im>.<Event_Relea|
00034f20  73 65 3e 0a 3c 45 76 65  6e 74 5f 52 65 6c 65 61  |se>.<Event_Relea|
00034f30  73 65 57 69 6e 64 6f 77  3e 0a 3c 45 76 65 6e 74  |seWindow>.<Event|
00034f40  5f 50 72 6f 63 65 73 73  3e 0a 3c 45 76 65 6e 74  |_Process>.<Event|
00034f50  5f 50 6f 6c 6c 3e 0a 3c  45 76 65 6e 74 5f 43 6c  |_Poll>.<Event_Cl|
00034f60  6f 73 65 44 6f 77 6e 3e  0a 23 45 6e 64 54 61 62  |oseDown>.#EndTab|
00034f70  6c 65 0a 23 49 6e 64 65  6e 74 20 30 0a 0a 54 79  |le.#Indent 0..Ty|
00034f80  70 65 3a 0a 0a 7b 61 6c  69 67 6e 20 63 65 6e 74  |pe:..{align cent|
00034f90  72 65 7d 3c 65 76 65 6e  74 5f 68 61 6e 64 6c 65  |re}<event_handle|
00034fa0  72 3e 7b 61 6c 69 67 6e  7d 0a 0a 56 61 72 69 61  |r>{align}..Varia|
00034fb0  62 6c 65 73 3a 0a 0a 23  49 6e 64 65 6e 74 20 31  |bles:..#Indent 1|
00034fc0  30 0a 23 54 61 62 6c 65  20 33 20 32 31 0a 3c 65  |0.#Table 3 21.<e|
00034fd0  76 65 6e 74 5f 6d 61 73  6b 3e 0a 3c 65 76 65 6e  |vent_mask>.<even|
00034fe0  74 5f 74 61 73 6b 68 61  6e 64 6c 65 3e 0a 3c 65  |t_taskhandle>.<e|
00034ff0  76 65 6e 74 5f 77 69 6d  70 76 65 72 73 69 6f 6e  |vent_wimpversion|
00035000  3e 0a 3c 65 76 65 6e 74  5f 74 61 73 6b 6e 61 6d  |>.<event_tasknam|
00035010  65 3e 0a 3c 65 76 65 6e  74 5f 6c 61 73 74 65 76  |e>.<event_lastev|
00035020  65 6e 74 3e 0a 23 45 6e  64 54 61 62 6c 65 0a 23  |ent>.#EndTable.#|
00035030  49 6e 64 65 6e 74 20 30  0a 0a 45 76 65 6e 74 20  |Indent 0..Event |
00035040  70 6f 6c 6c 73 20 74 68  65 20 57 69 6d 70 20 66  |polls the Wimp f|
00035050  6f 72 20 79 6f 75 2c 20  74 68 65 6e 20 70 61 73  |or you, then pas|
00035060  73 65 73 20 74 68 65 20  72 65 73 75 6c 74 69 6e  |ses the resultin|
00035070  67 20 65 76 65 6e 74 20  74 6f 20 6f 6e 65 20 6f  |g event to one o|
00035080  72 20 6d 6f 72 65 20 6f  66 20 79 6f 75 72 20 68  |r more of your h|
00035090  61 6e 64 6c 65 72 20 72  6f 75 74 69 6e 65 73 2c  |andler routines,|
000350a0  20 75 6e 74 69 6c 20 79  6f 75 20 69 6e 64 69 63  | until you indic|
000350b0  61 74 65 20 74 68 61 74  20 79 6f 75 20 68 61 76  |ate that you hav|
000350c0  65 20 70 72 6f 63 65 73  73 65 64 20 74 68 65 20  |e processed the |
000350d0  65 76 65 6e 74 2e 20 59  6f 75 20 64 6f 20 6e 6f  |event. You do no|
000350e0  74 20 6e 65 65 64 20 74  6f 20 77 6f 72 72 79 20  |t need to worry |
000350f0  61 62 6f 75 74 20 63 68  65 63 6b 69 6e 67 20 76  |about checking v|
00035100  61 6c 75 65 73 20 72 65  74 75 72 6e 65 64 20 62  |alues returned b|
00035110  79 20 57 69 6d 70 5f 50  6f 6c 6c 2c 20 6f 72 20  |y Wimp_Poll, or |
00035120  6d 61 73 6b 69 6e 67 20  6f 75 74 20 75 6e 77 61  |masking out unwa|
00035130  6e 74 65 64 20 65 76 65  6e 74 73 2e 20 44 65 66  |nted events. Def|
00035140  61 75 6c 74 20 68 61 6e  64 6c 65 72 73 20 61 72  |ault handlers ar|
00035150  65 20 70 72 6f 76 69 64  65 64 20 69 6e 20 3c 44  |e provided in <D|
00035160  65 73 6b 4c 69 62 3a 48  61 6e 64 6c 65 72 2e 68  |eskLib:Handler.h|
00035170  3d 3e 48 61 6e 64 6c 65  72 3e 2e 00 44 49 52 24  |=>Handler>..DIR$|
00035180  28 04 00 00 28 04 00 00  a4 55 03 00 46 ff ff ff  |(...(....U..F...|
00035190  b7 52 47 23 8d 00 00 00  13 00 00 00 00 00 00 00  |.RG#............|
000351a0  61 6e 79 77 69 6e 64 6f  77 73 00 00 34 56 03 00  |anywindows..4V..|
000351b0  46 ff ff ff d8 60 47 23  fd 01 00 00 13 00 00 00  |F....`G#........|
000351c0  00 00 00 00 61 74 74 61  63 68 6d 65 6e 75 00 00  |....attachmenu..|
000351d0  34 58 03 00 46 ff ff ff  25 7a 47 23 27 02 00 00  |4X..F...%zG#'...|
000351e0  13 00 00 00 00 00 00 00  61 74 74 61 63 68 6d 65  |........attachme|
000351f0  6e 75 6d 61 6b 65 72 00  5c 5a 03 00 46 ff ff ff  |numaker.\Z..F...|
00035200  76 8b 24 25 3f 03 00 00  13 00 00 00 00 00 00 00  |v.$%?...........|
00035210  43 6c 61 69 6d 00 00 00  9c 5d 03 00 46 ff ff ff  |Claim....]..F...|
00035220  fb 80 47 23 a6 00 00 00  13 00 00 00 00 00 00 00  |..G#............|
00035230  63 6c 65 61 72 5f 63 75  72 72 65 6e 74 5f 6d 65  |clear_current_me|
00035240  6e 75 00 00 44 5e 03 00  46 ff ff ff e7 b0 24 25  |nu..D^..F.....$%|
00035250  a6 00 00 00 13 00 00 00  00 00 00 00 43 6c 6f 73  |............Clos|
00035260  65 44 6f 77 6e 00 00 00  ec 5e 03 00 46 ff ff ff  |eDown....^..F...|
00035270  93 83 48 26 a6 01 00 00  13 00 00 00 00 00 00 00  |..H&............|
00035280  64 61 74 61 00 00 00 00  94 60 03 00 46 ff ff ff  |data.....`..F...|
00035290  4a 86 47 23 dd 00 00 00  13 00 00 00 00 00 00 00  |J.G#............|
000352a0  67 65 74 6d 61 73 6b 00  74 61 03 00 46 fd ff ff  |getmask.ta..F...|
000352b0  96 4d 47 23 8d 01 00 00  13 00 00 00 00 00 00 00  |.MG#............|
000352c0  68 00 00 00 04 63 03 00  46 ff ff ff 8c b9 24 25  |h....c..F.....$%|
000352d0  4d 01 00 00 13 00 00 00  00 00 00 00 68 61 6e 64  |M...........hand|
000352e0  6c 65 72 00 54 64 03 00  46 ff ff ff f5 4e 24 25  |ler.Td..F....N$%|
000352f0  15 01 00 00 13 00 00 00  00 00 00 00 49 6e 69 74  |............Init|
00035300  69 61 6c 69 73 65 00 00  6c 65 03 00 46 ff ff ff  |ialise..le..F...|
00035310  f4 5b 24 25 32 02 00 00  13 00 00 00 00 00 00 00  |.[$%2...........|
00035320  49 6e 69 74 69 61 6c 69  73 65 33 00 a0 67 03 00  |Initialise3..g..|
00035330  46 ff ff ff ec 8c 47 23  90 00 00 00 13 00 00 00  |F.....G#........|
00035340  00 00 00 00 69 73 5f 6d  65 6e 75 5f 62 65 69 6e  |....is_menu_bein|
00035350  67 5f 72 65 63 72 65 61  74 65 64 00 30 68 03 00  |g_recreated.0h..|
00035360  46 ff ff ff 14 e9 24 25  a5 00 00 00 13 00 00 00  |F.....$%........|
00035370  00 00 00 00 6c 61 73 74  65 76 65 6e 74 00 00 00  |....lastevent...|
00035380  d8 68 03 00 46 ff ff ff  86 bf 24 25 b1 00 00 00  |.h..F.....$%....|
00035390  13 00 00 00 00 00 00 00  6d 61 73 6b 00 00 00 00  |........mask....|
000353a0  8c 69 03 00 46 ff ff ff  8a be 47 23 28 01 00 00  |.i..F.....G#(...|
000353b0  13 00 00 00 00 00 00 00  6d 65 6e 75 5f 6d 61 6b  |........menu_mak|
000353c0  65 72 00 00 b4 6a 03 00  46 ff ff ff 8c b1 47 23  |er...j..F.....G#|
000353d0  68 01 00 00 13 00 00 00  00 00 00 00 6d 65 6e 75  |h...........menu|
000353e0  5f 70 72 6f 63 00 00 00  1c 6c 03 00 46 ff ff ff  |_proc....l..F...|
000353f0  ad ab 24 25 17 01 00 00  13 00 00 00 00 00 00 00  |..$%............|
00035400  50 6f 6c 6c 00 00 00 00  34 6d 03 00 46 ff ff ff  |Poll....4m..F...|
00035410  a9 8b 48 26 d3 00 00 00  13 00 00 00 00 00 00 00  |..H&............|
00035420  70 6f 6c 6c 62 6c 6f 63  6b 00 00 00 08 6e 03 00  |pollblock....n..|
00035430  46 ff ff ff e8 5c 48 26  89 04 00 00 13 00 00 00  |F....\H&........|
00035440  00 00 00 00 70 6f 6c 6c  6d 61 73 6b 00 00 00 00  |....pollmask....|
00035450  94 72 03 00 46 ff ff ff  35 9f 24 25 8f 01 00 00  |.r..F...5.$%....|
00035460  13 00 00 00 00 00 00 00  50 72 6f 63 65 73 73 00  |........Process.|
00035470  24 74 03 00 46 ff ff ff  c5 96 47 23 3b 01 00 00  |$t..F.....G#;...|
00035480  13 00 00 00 00 00 00 00  70 72 6f 63 65 73 73 5f  |........process_|
00035490  00 00 00 00 60 75 03 00  46 ff ff ff 9e 90 24 25  |....`u..F.....$%|
000354a0  48 01 00 00 13 00 00 00  00 00 00 00 52 65 6c 65  |H...........Rele|
000354b0  61 73 65 00 a8 76 03 00  46 ff ff ff 82 94 24 25  |ase..v..F.....$%|
000354c0  f1 00 00 00 13 00 00 00  00 00 00 00 52 65 6c 65  |............Rele|
000354d0  61 73 65 57 69 6e 64 6f  77 00 00 00 9c 77 03 00  |aseWindow....w..|
000354e0  46 ff ff ff 2e 9f 47 23  e4 00 00 00 13 00 00 00  |F.....G#........|
000354f0  00 00 00 00 73 65 74 6d  61 73 6b 00 80 78 03 00  |....setmask..x..|
00035500  46 ff ff ff 0b e4 24 25  7d 00 00 00 13 00 00 00  |F.....$%}.......|
00035510  00 00 00 00 74 61 73 6b  6e 61 6d 65 00 00 00 00  |....taskname....|
00035520  00 79 03 00 46 ff ff ff  97 41 48 26 d7 02 00 00  |.y..F....AH&....|
00035530  13 00 00 00 00 00 00 00  74 79 70 65 00 00 00 00  |........type....|
00035540  d8 7b 03 00 46 ff ff ff  53 a5 47 23 7f 00 00 00  |.{..F...S.G#....|
00035550  13 00 00 00 00 00 00 00  77 00 00 00 58 7c 03 00  |........w...X|..|
00035560  46 ff ff ff 22 e1 24 25  a6 00 00 00 13 00 00 00  |F...".$%........|
00035570  00 00 00 00 77 69 6d 70  76 65 72 73 69 6f 6e 00  |....wimpversion.|
00035580  00 7d 03 00 46 ff ff ff  b8 d9 24 25 86 00 00 00  |.}..F.....$%....|
00035590  13 00 00 00 00 00 00 00  74 61 73 6b 68 61 6e 64  |........taskhand|
000355a0  6c 65 00 00 44 41 54 41  8d 00 00 00 65 76 65 6e  |le..DATA....even|
000355b0  74 5f 61 6e 79 77 69 6e  64 6f 77 73 0a 53 79 6e  |t_anywindows.Syn|
000355c0  74 61 78 3a 09 3c 42 4f  4f 4c 3e 20 65 76 65 6e  |tax:.<BOOL> even|
000355d0  74 5f 61 6e 79 77 69 6e  64 6f 77 73 20 28 76 6f  |t_anywindows (vo|
000355e0  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 65 76  |id);.Header:.<ev|
000355f0  65 6e 74 2e 68 3d 3e 65  76 65 6e 74 5f 68 3e 0a  |ent.h=>event_h>.|
00035600  0a 52 65 74 75 72 6e 73  3a 09 3c 54 52 55 45 3e  |.Returns:.<TRUE>|
00035610  20 69 66 20 74 68 65 72  65 20 61 72 65 20 61 6e  | if there are an|
00035620  79 20 61 63 74 69 76 65  20 77 69 6e 64 6f 77 73  |y active windows|
00035630  2e 00 00 00 44 41 54 41  fd 01 00 00 65 76 65 6e  |....DATA....even|
00035640  74 5f 61 74 74 61 63 68  6d 65 6e 75 0a 53 79 6e  |t_attachmenu.Syn|
00035650  74 61 78 3a 09 3c 42 4f  4f 4c 3e 20 65 76 65 6e  |tax:.<BOOL> even|
00035660  74 5f 61 74 74 61 63 68  6d 65 6e 75 20 28 3c 65  |t_attachmenu (<e|
00035670  76 65 6e 74 5f 77 3e 20  77 69 6e 2c 20 3c 6d 65  |vent_w> win, <me|
00035680  6e 75 3e 20 6d 2c 20 3c  65 76 65 6e 74 5f 6d 65  |nu> m, <event_me|
00035690  6e 75 5f 70 72 6f 63 3e  20 66 6e 2c 20 76 6f 69  |nu_proc> fn, voi|
000356a0  64 20 2a 68 6e 64 29 3b  0a 48 65 61 64 65 72 3a  |d *hnd);.Header:|
000356b0  09 3c 65 76 65 6e 74 2e  68 3d 3e 65 76 65 6e 74  |.<event.h=>event|
000356c0  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 3c 54  |_h>..Returns:.<T|
000356d0  52 55 45 3e 20 69 66 20  73 75 63 63 65 73 73 66  |RUE> if successf|
000356e0  75 6c 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ul...This functi|
000356f0  6f 6e 20 61 74 74 61 63  68 65 73 20 61 20 6d 65  |on attaches a me|
00035700  6e 75 20 2f 6d 2f 20 61  6e 64 20 69 74 73 20 61  |nu /m/ and its a|
00035710  73 73 6f 63 69 61 74 65  64 20 68 61 6e 64 6c 65  |ssociated handle|
00035720  72 20 66 75 6e 63 74 69  6f 6e 20 2f 66 6e 2f 20  |r function /fn/ |
00035730  74 6f 20 61 20 77 69 6e  64 6f 77 20 2f 77 69 6e  |to a window /win|
00035740  2f 2e 20 57 68 65 6e 20  74 68 65 20 75 73 65 72  |/. When the user|
00035750  20 69 6e 76 6f 6b 65 73  20 61 20 6d 65 6e 75 20  | invokes a menu |
00035760  66 72 6f 6d 20 74 68 65  20 67 69 76 65 6e 20 77  |from the given w|
00035770  69 6e 64 6f 77 2c 20 74  68 69 73 20 6d 65 6e 75  |indow, this menu|
00035780  20 77 69 6c 6c 20 62 65  20 61 63 74 69 76 61 74  | will be activat|
00035790  65 64 2e 20 54 68 65 20  68 61 6e 64 6c 65 72 20  |ed. The handler |
000357a0  66 75 6e 63 74 69 6f 6e  20 77 69 6c 6c 20 62 65  |function will be|
000357b0  20 63 61 6c 6c 65 64 20  77 68 65 6e 20 74 68 65  | called when the|
000357c0  20 75 73 65 72 20 73 65  6c 65 63 74 73 20 61 20  | user selects a |
000357d0  6d 65 6e 75 20 65 6e 74  72 79 2e 20 41 20 63 61  |menu entry. A ca|
000357e0  6c 6c 20 77 69 74 68 20  7b 2f 7d 6d 3d 3d 30 7b  |ll with {/}m==0{|
000357f0  2f 7d 20 72 65 6d 6f 76  65 73 20 74 68 65 20 61  |/} removes the a|
00035800  74 74 61 63 68 6d 65 6e  74 2e 20 2f 68 6e 64 2f  |ttachment. /hnd/|
00035810  20 69 73 20 70 61 73 73  65 64 20 64 69 72 65 63  | is passed direc|
00035820  74 20 74 6f 20 74 68 65  20 68 61 6e 64 6c 65 72  |t to the handler|
00035830  2e 00 00 00 44 41 54 41  27 02 00 00 65 76 65 6e  |....DATA'...even|
00035840  74 5f 61 74 74 61 63 68  6d 65 6e 75 6d 61 6b 65  |t_attachmenumake|
00035850  72 0a 53 79 6e 74 61 78  3a 09 3c 42 4f 4f 4c 3e  |r.Syntax:.<BOOL>|
00035860  20 65 76 65 6e 74 5f 61  74 74 61 63 68 6d 65 6e  | event_attachmen|
00035870  75 6d 61 6b 65 72 20 28  3c 65 76 65 6e 74 5f 77  |umaker (<event_w|
00035880  3e 20 77 69 6e 2c 20 3c  65 76 65 6e 74 5f 6d 65  |> win, <event_me|
00035890  6e 75 5f 6d 61 6b 65 72  3e 20 6d 61 6b 65 2c 20  |nu_maker> make, |
000358a0  3c 65 76 65 6e 74 5f 6d  65 6e 75 5f 70 72 6f 63  |<event_menu_proc|
000358b0  3e 20 66 6e 2c 20 76 6f  69 64 20 2a 68 6e 64 29  |> fn, void *hnd)|
000358c0  3b 0a 48 65 61 64 65 72  3a 09 3c 65 76 65 6e 74  |;.Header:.<event|
000358d0  2e 68 3d 3e 65 76 65 6e  74 5f 68 3e 0a 0a 52 65  |.h=>event_h>..Re|
000358e0  74 75 72 6e 73 3a 09 3c  54 52 55 45 3e 20 69 66  |turns:.<TRUE> if|
000358f0  20 73 75 63 63 65 73 73  66 75 6c 2e 0a 0a 54 68  | successful...Th|
00035900  69 73 20 66 75 6e 63 74  69 6f 6e 20 61 74 74 61  |is function atta|
00035910  63 68 65 73 20 61 20 6d  65 6e 75 20 6d 61 6b 65  |ches a menu make|
00035920  72 20 2f 6d 61 6b 65 2f  20 61 6e 64 20 69 74 73  |r /make/ and its|
00035930  20 61 73 73 6f 63 69 61  74 65 64 20 68 61 6e 64  | associated hand|
00035940  6c 65 72 20 66 75 6e 63  74 69 6f 6e 20 2f 66 6e  |ler function /fn|
00035950  2f 20 74 6f 20 61 20 77  69 6e 64 6f 77 20 2f 77  |/ to a window /w|
00035960  69 6e 2f 2e 20 57 68 65  6e 20 74 68 65 20 75 73  |in/. When the us|
00035970  65 72 20 69 6e 76 6f 6b  65 73 20 61 20 6d 65 6e  |er invokes a men|
00035980  75 20 66 72 6f 6d 20 74  68 65 20 67 69 76 65 6e  |u from the given|
00035990  20 77 69 6e 64 6f 77 2c  20 74 68 65 20 6d 65 6e  | window, the men|
000359a0  75 20 6d 61 6b 65 72 20  77 69 6c 6c 20 62 65 20  |u maker will be |
000359b0  61 63 74 69 76 61 74 65  64 2e 20 54 68 65 20 68  |activated. The h|
000359c0  61 6e 64 6c 65 72 20 66  75 6e 63 74 69 6f 6e 20  |andler function |
000359d0  77 69 6c 6c 20 62 65 20  63 61 6c 6c 65 64 20 77  |will be called w|
000359e0  68 65 6e 20 74 68 65 20  75 73 65 72 20 73 65 6c  |hen the user sel|
000359f0  65 63 74 73 20 61 20 6d  65 6e 75 20 65 6e 74 72  |ects a menu entr|
00035a00  79 2e 20 41 20 63 61 6c  6c 20 77 69 74 68 20 7b  |y. A call with {|
00035a10  2f 7d 6d 61 6b 65 3d 3d  30 7b 2f 7d 20 72 65 6d  |/}make==0{/} rem|
00035a20  6f 76 65 73 20 74 68 65  20 61 74 74 61 63 68 6d  |oves the attachm|
00035a30  65 6e 74 2e 20 2f 68 6e  64 2f 20 69 73 20 70 61  |ent. /hnd/ is pa|
00035a40  73 73 65 64 20 64 69 72  65 63 74 20 74 6f 20 74  |ssed direct to t|
00035a50  68 65 20 68 61 6e 64 6c  65 72 2e 00 44 41 54 41  |he handler..DATA|
00035a60  3f 03 00 00 45 76 65 6e  74 5f 43 6c 61 69 6d 0a  |?...Event_Claim.|
00035a70  53 79 6e 74 61 78 3a 09  3c 42 4f 4f 4c 3e 20 45  |Syntax:.<BOOL> E|
00035a80  76 65 6e 74 5f 43 6c 61  69 6d 20 28 3c 65 76 65  |vent_Claim (<eve|
00035a90  6e 74 5f 74 79 70 65 3e  20 74 79 70 65 2c 20 3c  |nt_type> type, <|
00035aa0  77 69 6e 64 6f 77 5f 68  61 6e 64 6c 65 3e 20 77  |window_handle> w|
00035ab0  69 6e 2c 20 3c 69 63 6f  6e 5f 68 61 6e 64 6c 65  |in, <icon_handle|
00035ac0  3e 20 69 63 6f 6e 2c 20  3c 65 76 65 6e 74 5f 68  |> icon, <event_h|
00035ad0  61 6e 64 6c 65 72 3e 20  68 61 6e 64 6c 65 72 2c  |andler> handler,|
00035ae0  20 76 6f 69 64 20 2a 72  65 66 29 3b 0a 48 65 61  | void *ref);.Hea|
00035af0  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 45 76  |der:.<DeskLib:Ev|
00035b00  65 6e 74 2e 68 3d 3e 45  76 65 6e 74 3e 0a 0a 52  |ent.h=>Event>..R|
00035b10  65 74 75 72 6e 73 3a 09  54 52 55 45 20 69 66 20  |eturns:.TRUE if |
00035b20  73 75 63 63 65 73 73 66  75 6c 2e 0a 0a 54 68 69  |successful...Thi|
00035b30  73 20 66 75 6e 63 74 69  6f 6e 20 61 74 74 61 63  |s function attac|
00035b40  68 65 73 20 61 6e 20 65  76 65 6e 74 20 68 61 6e  |hes an event han|
00035b50  64 6c 65 72 20 74 6f 20  61 20 70 61 72 74 69 63  |dler to a partic|
00035b60  75 6c 61 72 20 65 76 65  6e 74 20 2f 74 79 70 65  |ular event /type|
00035b70  2f 2c 20 77 69 6e 64 6f  77 20 2f 77 69 6e 2f 2c  |/, window /win/,|
00035b80  20 61 6e 64 20 69 63 6f  6e 20 2f 69 63 6f 6e 2f  | and icon /icon/|
00035b90  2e 20 41 6e 79 20 6f 66  20 74 68 65 73 65 20 63  |. Any of these c|
00035ba0  61 6e 20 62 65 20 7b 2a  7d 65 76 65 6e 74 5f 41  |an be {*}event_A|
00035bb0  4e 59 7b 2a 7d 20 74 6f  20 62 65 20 6e 6f 6e 2d  |NY{*} to be non-|
00035bc0  73 70 65 63 69 66 69 63  2e 20 2f 68 61 6e 64 6c  |specific. /handl|
00035bd0  65 72 2f 20 69 73 20 79  6f 75 72 20 68 61 6e 64  |er/ is your hand|
00035be0  6c 65 72 20 66 75 6e 63  74 69 6f 6e 2c 20 2f 72  |ler function, /r|
00035bf0  65 66 2f 20 69 73 20 70  61 73 73 65 64 20 64 69  |ef/ is passed di|
00035c00  72 65 63 74 20 74 6f 20  74 68 65 20 68 61 6e 64  |rect to the hand|
00035c10  6c 65 72 20 69 66 20 69  74 20 69 73 20 63 61 6c  |ler if it is cal|
00035c20  6c 65 64 20 61 6e 64 20  63 61 6e 20 62 65 20 61  |led and can be a|
00035c30  6e 79 74 68 69 6e 67 20  79 6f 75 20 6c 69 6b 65  |nything you like|
00035c40  2e 0a 0a 45 76 65 6e 74  73 20 61 72 65 20 70 72  |...Events are pr|
00035c50  69 6f 72 69 74 69 73 65  64 2c 20 77 69 74 68 20  |ioritised, with |
00035c60  74 68 65 20 6d 6f 73 74  20 73 70 65 63 69 66 69  |the most specifi|
00035c70  63 20 65 76 65 6e 74 73  20 62 65 69 6e 67 20 63  |c events being c|
00035c80  61 6c 6c 65 64 20 66 69  72 73 74 20 2d 20 73 6f  |alled first - so|
00035c90  20 79 6f 75 20 63 61 6e  20 68 61 76 65 20 61 20  | you can have a |
00035ca0  67 65 6e 65 72 61 6c 20  72 6f 75 74 69 6e 65 20  |general routine |
00035cb0  68 61 6e 64 6c 69 6e 67  20 61 6c 6c 20 69 63 6f  |handling all ico|
00035cc0  6e 20 63 6c 69 63 6b 73  2c 20 61 6e 64 20 74 68  |n clicks, and th|
00035cd0  65 6e 20 73 65 76 65 72  61 6c 20 6f 6e 65 73 20  |en several ones |
00035ce0  66 6f 72 20 73 70 65 63  69 66 69 63 20 69 63 6f  |for specific ico|
00035cf0  6e 73 2c 20 77 68 69 63  68 20 77 69 6c 6c 20 62  |ns, which will b|
00035d00  65 20 63 61 6c 6c 65 64  20 66 69 72 73 74 20 69  |e called first i|
00035d10  66 20 74 68 6f 73 65 20  69 63 6f 6e 73 20 61 72  |f those icons ar|
00035d20  65 20 63 6c 69 63 6b 65  64 2e 0a 0a 4e 6f 74 65  |e clicked...Note|
00035d30  20 74 68 61 74 20 4e 75  6c 6c 5f 52 65 61 73 6f  | that Null_Reaso|
00035d40  6e 5f 43 6f 64 65 20 65  76 65 6e 74 73 20 77 69  |n_Code events wi|
00035d50  6c 6c 20 6e 6f 74 20 62  65 20 70 72 6f 63 65 73  |ll not be proces|
00035d60  73 65 64 20 75 6e 6c 65  73 73 20 79 6f 75 20 73  |sed unless you s|
00035d70  70 65 63 69 66 69 63 61  6c 6c 79 20 61 74 74 61  |pecifically atta|
00035d80  63 68 20 61 20 68 61 6e  64 6c 65 72 20 74 6f 20  |ch a handler to |
00035d90  74 68 61 74 20 65 76 65  6e 74 2e 00 44 41 54 41  |that event..DATA|
00035da0  a6 00 00 00 65 76 65 6e  74 5f 63 6c 65 61 72 5f  |....event_clear_|
00035db0  63 75 72 72 65 6e 74 5f  6d 65 6e 75 0a 53 79 6e  |current_menu.Syn|
00035dc0  74 61 78 3a 09 76 6f 69  64 20 65 76 65 6e 74 5f  |tax:.void event_|
00035dd0  63 6c 65 61 72 5f 63 75  72 72 65 6e 74 5f 6d 65  |clear_current_me|
00035de0  6e 75 20 28 76 6f 69 64  29 3b 0a 48 65 61 64 65  |nu (void);.Heade|
00035df0  72 3a 09 3c 65 76 65 6e  74 2e 68 3d 3e 65 76 65  |r:.<event.h=>eve|
00035e00  6e 74 5f 68 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |nt_h>..This func|
00035e10  74 69 6f 6e 20 63 6c 65  61 72 73 20 74 68 65 20  |tion clears the |
00035e20  63 75 72 72 65 6e 74 20  6d 65 6e 75 20 74 72 65  |current menu tre|
00035e30  65 20 66 72 6f 6d 20 74  68 65 20 73 63 72 65 65  |e from the scree|
00035e40  6e 2e 00 00 44 41 54 41  a6 00 00 00 45 76 65 6e  |n...DATA....Even|
00035e50  74 5f 43 6c 6f 73 65 44  6f 77 6e 0a 53 79 6e 74  |t_CloseDown.Synt|
00035e60  61 78 3a 09 76 6f 69 64  20 45 76 65 6e 74 5f 43  |ax:.void Event_C|
00035e70  6c 6f 73 65 44 6f 77 6e  20 28 76 6f 69 64 29 3b  |loseDown (void);|
00035e80  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
00035e90  62 3a 45 76 65 6e 74 2e  68 3d 3e 45 76 65 6e 74  |b:Event.h=>Event|
00035ea0  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
00035eb0  20 63 6c 6f 73 65 73 20  64 6f 77 6e 20 28 71 75  | closes down (qu|
00035ec0  69 74 73 29 20 74 68 65  20 61 70 70 6c 69 63 61  |its) the applica|
00035ed0  74 69 6f 6e 20 61 6e 64  20 74 68 65 20 45 76 65  |tion and the Eve|
00035ee0  6e 74 20 73 79 73 74 65  6d 2e 00 00 44 41 54 41  |nt system...DATA|
00035ef0  a6 01 00 00 65 76 65 6e  74 5f 64 61 74 61 0a 54  |....event_data.T|
00035f00  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
00035f10  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
00035f20  57 69 6d 70 2e 68 3d 3e  57 69 6d 70 3e 2e 20 49  |Wimp.h=>Wimp>. I|
00035f30  74 20 69 73 20 61 20 75  6e 69 6f 6e 20 63 6f 6e  |t is a union con|
00035f40  74 61 69 6e 69 6e 67 20  74 68 65 20 64 61 74 61  |taining the data|
00035f50  20 72 65 74 75 72 6e 65  64 20 62 79 20 3c 57 69  | returned by <Wi|
00035f60  6d 70 5f 50 6f 6c 6c 3e  2e 0a 0a 20 20 5c 7b 0a  |mp_Poll>...  \{.|
00035f70  20 20 20 20 3c 63 61 72  65 74 5f 62 6c 6f 63 6b  |    <caret_block|
00035f80  3e 09 63 61 72 65 74 3b  0a 20 20 20 20 3c 6b 65  |>.caret;.    <ke|
00035f90  79 5f 62 6c 6f 63 6b 3e  09 09 6b 65 79 3b 0a 20  |y_block>..key;. |
00035fa0  20 20 20 3c 70 6f 6c 6c  77 6f 72 64 5f 62 6c 6f  |   <pollword_blo|
00035fb0  63 6b 3e 09 70 6f 6c 6c  77 6f 72 64 3b 0a 20 20  |ck>.pollword;.  |
00035fc0  20 20 3c 77 69 6e 64 6f  77 5f 6f 70 65 6e 62 6c  |  <window_openbl|
00035fd0  6f 63 6b 3e 09 6f 70 65  6e 62 6c 6f 63 6b 3b 0a  |ock>.openblock;.|
00035fe0  20 20 20 20 3c 6d 65 73  73 61 67 65 5f 62 6c 6f  |    <message_blo|
00035ff0  63 6b 3e 09 6d 65 73 73  61 67 65 3b 0a 20 20 20  |ck>.message;.   |
00036000  20 3c 6d 6f 75 73 65 5f  62 6c 6f 63 6b 3e 09 6d  | <mouse_block>.m|
00036010  6f 75 73 65 3b 0a 20 20  20 20 3c 77 69 6d 70 5f  |ouse;.    <wimp_|
00036020  62 6f 78 3e 09 09 73 63  72 65 65 6e 72 65 63 74  |box>..screenrect|
00036030  3b 0a 20 20 20 20 69 6e  74 09 09 09 73 65 6c 65  |;.    int...sele|
00036040  63 74 69 6f 6e 5b 31 30  5d 3b 0a 20 20 20 20 3c  |ction[10];.    <|
00036050  73 63 72 6f 6c 6c 5f 72  71 3e 09 09 73 63 72 6f  |scroll_rq>..scro|
00036060  6c 6c 3b 0a 20 20 20 20  63 68 61 72 09 09 62 79  |ll;.    char..by|
00036070  74 65 73 5b 32 35 36 5d  3b 0a 20 20 20 20 69 6e  |tes[256];.    in|
00036080  74 09 09 09 77 6f 72 64  73 5b 36 34 5d 3b 0a 20  |t...words[64];. |
00036090  20 7d 00 00 44 41 54 41  dd 00 00 00 65 76 65 6e  | }..DATA....even|
000360a0  74 5f 67 65 74 6d 61 73  6b 0a 53 79 6e 74 61 78  |t_getmask.Syntax|
000360b0  3a 09 3c 77 69 6d 70 5f  65 6d 61 73 6b 3e 20 65  |:.<wimp_emask> e|
000360c0  76 65 6e 74 5f 67 65 74  6d 61 73 6b 20 28 76 6f  |vent_getmask (vo|
000360d0  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 65 76  |id);.Header:.<ev|
000360e0  65 6e 74 2e 68 3d 3e 65  76 65 6e 74 5f 68 3e 0a  |ent.h=>event_h>.|
000360f0  0a 52 65 74 75 72 6e 73  3a 09 54 68 65 20 6d 61  |.Returns:.The ma|
00036100  73 6b 20 63 75 72 72 65  6e 74 6c 79 20 62 65 69  |sk currently bei|
00036110  6e 67 20 75 73 65 64 2e  0a 0a 54 68 69 73 20 66  |ng used...This f|
00036120  75 6e 63 74 69 6f 6e 20  67 65 74 73 20 74 68 65  |unction gets the|
00036130  20 6d 61 73 6b 20 75 73  65 64 20 62 79 20 3c 77  | mask used by <w|
00036140  69 6d 70 5f 70 6f 6c 6c  3e 20 61 6e 64 20 3c 77  |imp_poll> and <w|
00036150  69 6d 70 74 5f 70 6f 6c  6c 3e 20 77 68 65 6e 20  |impt_poll> when |
00036160  70 6f 6c 6c 69 6e 67 20  74 68 65 20 57 69 6d 70  |polling the Wimp|
00036170  2e 00 00 00 44 41 54 41  8d 01 00 00 65 76 65 6e  |....DATA....even|
00036180  74 2e 68 0a 54 68 69 73  20 68 65 61 64 65 72 20  |t.h.This header |
00036190  64 65 63 6c 61 72 65 73  20 66 75 6e 63 74 69 6f  |declares functio|
000361a0  6e 73 20 66 6f 72 20 73  79 73 74 65 6d 2d 69 6e  |ns for system-in|
000361b0  64 65 70 65 6e 64 65 6e  74 20 63 65 6e 74 72 61  |dependent centra|
000361c0  6c 20 70 72 6f 63 65 73  73 69 6e 67 20 6f 66 20  |l processing of |
000361d0  77 69 6e 64 6f 77 20 73  79 73 74 65 6d 20 65 76  |window system ev|
000361e0  65 6e 74 73 2e 0a 0a 46  75 6e 63 74 69 6f 6e 73  |ents...Functions|
000361f0  3a 0a 7b 69 6e 64 65 6e  74 20 31 32 7d 0a 3c 65  |:.{indent 12}.<e|
00036200  76 65 6e 74 5f 61 6e 79  77 69 6e 64 6f 77 73 3e  |vent_anywindows>|
00036210  0a 3c 65 76 65 6e 74 5f  61 74 74 61 63 68 6d 65  |.<event_attachme|
00036220  6e 75 3e 0a 3c 65 76 65  6e 74 5f 61 74 74 61 63  |nu>.<event_attac|
00036230  68 6d 65 6e 75 6d 61 6b  65 72 3e 0a 3c 65 76 65  |hmenumaker>.<eve|
00036240  6e 74 5f 63 6c 65 61 72  5f 63 75 72 72 65 6e 74  |nt_clear_current|
00036250  5f 6d 65 6e 75 3e 0a 3c  65 76 65 6e 74 5f 67 65  |_menu>.<event_ge|
00036260  74 6d 61 73 6b 3e 0a 3c  65 76 65 6e 74 5f 69 73  |tmask>.<event_is|
00036270  5f 6d 65 6e 75 5f 62 65  69 6e 67 5f 72 65 63 72  |_menu_being_recr|
00036280  65 61 74 65 64 3e 0a 3c  65 76 65 6e 74 5f 70 72  |eated>.<event_pr|
00036290  6f 63 65 73 73 3d 3e 65  76 65 6e 74 5f 70 72 6f  |ocess=>event_pro|
000362a0  63 65 73 73 5f 3e 0a 3c  65 76 65 6e 74 5f 73 65  |cess_>.<event_se|
000362b0  74 6d 61 73 6b 3e 0a 7b  69 6e 64 65 6e 74 7d 0a  |tmask>.{indent}.|
000362c0  54 79 70 65 73 3a 0a 7b  69 6e 64 65 6e 74 20 31  |Types:.{indent 1|
000362d0  32 7d 0a 3c 65 76 65 6e  74 5f 77 3e 0a 3c 65 76  |2}.<event_w>.<ev|
000362e0  65 6e 74 5f 6d 65 6e 75  5f 70 72 6f 63 3e 0a 3c  |ent_menu_proc>.<|
000362f0  65 76 65 6e 74 5f 6d 65  6e 75 5f 6d 61 6b 65 72  |event_menu_maker|
00036300  3e 00 00 00 44 41 54 41  4d 01 00 00 65 76 65 6e  |>...DATAM...even|
00036310  74 5f 68 61 6e 64 6c 65  72 0a 54 68 69 73 20 74  |t_handler.This t|
00036320  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 3c  |ype is defined <|
00036330  44 65 73 6b 4c 69 62 3a  45 76 65 6e 74 2e 68 3d  |DeskLib:Event.h=|
00036340  3e 45 76 65 6e 74 3e 2e  20 49 74 20 69 73 20 61  |>Event>. It is a|
00036350  20 66 75 6e 63 74 69 6f  6e 20 77 68 69 63 68 20  | function which |
00036360  6d 61 79 20 62 65 20 75  73 65 64 20 74 6f 20 70  |may be used to p|
00036370  72 6f 63 65 73 73 20 65  76 65 6e 74 73 20 63 6c  |rocess events cl|
00036380  61 69 6d 65 64 20 75 73  69 6e 67 20 3c 45 76 65  |aimed using <Eve|
00036390  6e 74 5f 43 6c 61 69 6d  3e 2e 20 54 68 65 20 66  |nt_Claim>. The f|
000363a0  75 6e 63 74 69 6f 6e 20  68 61 73 20 74 68 65 20  |unction has the |
000363b0  66 6f 72 6d 3a 0a 7b 77  72 61 70 20 6f 66 66 7d  |form:.{wrap off}|
000363c0  0a 7b 66 43 6f 64 65 3b  61 6c 69 67 6e 20 63 65  |.{fCode;align ce|
000363d0  6e 74 72 65 7d 3c 42 4f  4f 4c 3e 20 2a 6d 79 66  |ntre}<BOOL> *myf|
000363e0  75 6e 63 20 28 65 76 65  6e 74 5f 70 6f 6c 6c 62  |unc (event_pollb|
000363f0  6c 6f 63 6b 20 2a 2c 20  76 6f 69 64 20 2a 29 3b  |lock *, void *);|
00036400  7b 66 3b 61 6c 69 67 6e  7d 0a 7b 77 72 61 70 7d  |{f;align}.{wrap}|
00036410  0a 41 6e 64 20 73 68 6f  75 6c 64 20 72 65 74 75  |.And should retu|
00036420  72 6e 20 3c 54 52 55 45  3e 20 69 66 20 69 74 20  |rn <TRUE> if it |
00036430  70 72 6f 63 65 73 73 65  73 20 74 68 65 20 65 76  |processes the ev|
00036440  65 6e 74 20 70 61 73 73  65 64 20 74 6f 20 69 74  |ent passed to it|
00036450  2e 00 00 00 44 41 54 41  15 01 00 00 45 76 65 6e  |....DATA....Even|
00036460  74 5f 49 6e 69 74 69 61  6c 69 73 65 0a 53 79 6e  |t_Initialise.Syn|
00036470  74 61 78 3a 09 76 6f 69  64 20 45 76 65 6e 74 5f  |tax:.void Event_|
00036480  49 6e 69 74 69 61 6c 69  73 65 20 28 63 68 61 72  |Initialise (char|
00036490  20 2a 6e 61 6d 65 29 3b  0a 48 65 61 64 65 72 3a  | *name);.Header:|
000364a0  09 3c 44 65 73 6b 4c 69  62 3a 45 76 65 6e 74 2e  |.<DeskLib:Event.|
000364b0  68 3d 3e 45 76 65 6e 74  3e 0a 0a 54 68 69 73 20  |h=>Event>..This |
000364c0  66 75 6e 63 74 69 6f 6e  20 69 6e 69 74 69 61 6c  |function initial|
000364d0  69 73 65 73 20 74 68 65  20 57 69 6d 70 20 61 6e  |ises the Wimp an|
000364e0  64 20 74 68 65 20 45 76  65 6e 74 20 73 79 73 74  |d the Event syst|
000364f0  65 6d 2e 20 2f 6e 61 6d  65 2f 20 73 68 6f 75 6c  |em. /name/ shoul|
00036500  64 20 70 6f 69 6e 74 20  74 6f 20 79 6f 75 72 20  |d point to your |
00036510  74 61 73 6b 20 6e 61 6d  65 2e 20 46 6f 72 20 52  |task name. For R|
00036520  49 53 43 20 4f 53 20 33  20 6f 6e 6c 79 20 61 70  |ISC OS 3 only ap|
00036530  70 6c 69 63 61 74 69 6f  6e 73 2c 20 3c 45 76 65  |plications, <Eve|
00036540  6e 74 5f 49 6e 69 74 69  61 6c 69 73 65 33 3e 20  |nt_Initialise3> |
00036550  73 68 6f 75 6c 64 20 62  65 20 63 61 6c 6c 65 64  |should be called|
00036560  20 69 6e 73 74 65 61 64  2e 00 00 00 44 41 54 41  | instead....DATA|
00036570  32 02 00 00 45 76 65 6e  74 5f 49 6e 69 74 69 61  |2...Event_Initia|
00036580  6c 69 73 65 33 0a 53 79  6e 74 61 78 3a 09 76 6f  |lise3.Syntax:.vo|
00036590  69 64 20 45 76 65 6e 74  5f 49 6e 69 74 69 61 6c  |id Event_Initial|
000365a0  69 73 65 33 20 28 63 68  61 72 20 2a 6e 61 6d 65  |ise3 (char *name|
000365b0  2c 20 69 6e 74 20 76 65  72 73 69 6f 6e 2c 20 69  |, int version, i|
000365c0  6e 74 20 2a 6d 65 73 73  61 67 65 73 29 3b 0a 48  |nt *messages);.H|
000365d0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
000365e0  45 76 65 6e 74 2e 68 3d  3e 45 76 65 6e 74 3e 0a  |Event.h=>Event>.|
000365f0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 69  |.This function i|
00036600  6e 69 74 69 61 6c 69 73  65 73 20 74 68 65 20 57  |nitialises the W|
00036610  69 6d 70 20 61 6e 64 20  74 68 65 20 45 76 65 6e  |imp and the Even|
00036620  74 20 73 79 73 74 65 6d  2e 20 2f 6e 61 6d 65 2f  |t system. /name/|
00036630  20 73 68 6f 75 6c 64 20  70 6f 69 6e 74 20 74 6f  | should point to|
00036640  20 79 6f 75 72 20 74 61  73 6b 20 6e 61 6d 65 2c  | your task name,|
00036650  20 2f 76 65 72 73 69 6f  6e 2f 20 74 6f 20 74 68  | /version/ to th|
00036660  65 20 57 69 6d 70 20 76  65 72 73 69 6f 6e 20 6e  |e Wimp version n|
00036670  75 6d 62 65 72 20 77 61  6e 74 65 64 20 2a 20 31  |umber wanted * 1|
00036680  30 30 2c 20 61 6e 64 20  2f 6d 65 73 73 61 67 65  |00, and /message|
00036690  73 2f 20 74 6f 20 61 20  6c 69 73 74 20 6f 66 20  |s/ to a list of |
000366a0  75 73 65 72 20 6d 65 73  73 61 67 65 20 6e 75 6d  |user message num|
000366b0  62 65 72 73 20 74 65 72  6d 69 6e 61 74 65 64 20  |bers terminated |
000366c0  62 79 20 30 2e 20 4f 6e  6c 79 20 74 68 65 73 65  |by 0. Only these|
000366d0  20 6d 65 73 73 61 67 65  73 20 77 69 6c 6c 20 62  | messages will b|
000366e0  65 20 72 65 74 75 72 6e  65 64 20 74 6f 20 79 6f  |e returned to yo|
000366f0  75 72 20 74 61 73 6b 2e  20 46 6f 72 20 61 6c 6c  |ur task. For all|
00036700  20 76 65 72 73 69 6f 6e  73 20 62 75 74 20 33 30  | versions but 30|
00036710  30 2c 20 6d 65 73 73 61  67 65 73 20 63 61 6e 20  |0, messages can |
00036720  62 65 20 3c 4e 55 4c 4c  3e 2c 20 69 6e 20 77 68  |be <NULL>, in wh|
00036730  69 63 68 20 63 61 73 65  20 79 6f 75 20 77 69 6c  |ich case you wil|
00036740  6c 20 72 65 63 65 69 76  65 20 61 6c 6c 20 6d 65  |l receive all me|
00036750  73 73 61 67 65 73 2e 0a  0a 54 68 65 20 66 75 6e  |ssages...The fun|
00036760  63 74 69 6f 6e 20 73 68  6f 75 6c 64 20 6f 6e 6c  |ction should onl|
00036770  79 20 62 65 20 75 73 65  64 20 6f 6e 20 52 49 53  |y be used on RIS|
00036780  43 20 4f 53 20 33 2c 20  77 69 74 68 20 2f 76 65  |C OS 3, with /ve|
00036790  72 73 69 6f 6e 2f 20 3e  3d 20 33 30 30 2e 00 00  |rsion/ >= 300...|
000367a0  44 41 54 41 90 00 00 00  65 76 65 6e 74 5f 69 73  |DATA....event_is|
000367b0  5f 6d 65 6e 75 5f 62 65  69 6e 67 5f 72 65 63 72  |_menu_being_recr|
000367c0  65 61 74 65 64 0a 53 79  6e 74 61 78 3a 09 3c 42  |eated.Syntax:.<B|
000367d0  4f 4f 4c 3e 20 65 76 65  6e 74 5f 69 73 5f 6d 65  |OOL> event_is_me|
000367e0  6e 75 5f 62 65 69 6e 67  5f 72 65 63 72 65 61 74  |nu_being_recreat|
000367f0  65 64 20 28 76 6f 69 64  29 3b 0a 48 65 61 64 65  |ed (void);.Heade|
00036800  72 3a 09 3c 65 76 65 6e  74 2e 68 3d 3e 65 76 65  |r:.<event.h=>eve|
00036810  6e 74 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |nt_h>..Returns:.|
00036820  3c 54 52 55 45 3e 20 69  66 20 69 74 20 69 73 2e  |<TRUE> if it is.|
00036830  44 41 54 41 a5 00 00 00  65 76 65 6e 74 5f 6c 61  |DATA....event_la|
00036840  73 74 65 76 65 6e 74 0a  54 68 69 73 20 76 61 72  |stevent.This var|
00036850  69 61 62 6c 65 20 69 73  20 64 65 66 69 6e 65 64  |iable is defined|
00036860  20 69 6e 20 3c 44 65 73  6b 4c 69 62 3a 45 76 65  | in <DeskLib:Eve|
00036870  6e 74 2e 68 3d 3e 45 76  65 6e 74 3e 2e 20 49 74  |nt.h=>Event>. It|
00036880  20 69 73 20 61 6e 20 3c  65 76 65 6e 74 5f 70 6f  | is an <event_po|
00036890  6c 6c 62 6c 6f 63 6b 3e  20 63 6f 6e 74 61 69 6e  |llblock> contain|
000368a0  69 6e 67 20 74 68 65 20  6c 61 73 74 20 57 69 6d  |ing the last Wim|
000368b0  70 20 65 76 65 6e 74 20  72 65 63 65 69 76 65 64  |p event received|
000368c0  20 62 79 20 74 68 65 20  45 76 65 6e 74 20 73 79  | by the Event sy|
000368d0  73 74 65 6d 2e 00 00 00  44 41 54 41 b1 00 00 00  |stem....DATA....|
000368e0  65 76 65 6e 74 5f 6d 61  73 6b 0a 54 68 69 73 20  |event_mask.This |
000368f0  76 61 72 69 61 62 6c 65  20 69 73 20 64 65 66 69  |variable is defi|
00036900  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
00036910  45 76 65 6e 74 2e 68 3d  3e 45 76 65 6e 74 3e 2e  |Event.h=>Event>.|
00036920  20 49 74 20 69 73 20 75  73 65 64 20 74 6f 20 68  | It is used to h|
00036930  6f 6c 64 20 74 68 65 20  6d 61 73 6b 20 77 68 69  |old the mask whi|
00036940  63 68 20 74 68 65 20 45  76 65 6e 74 20 73 79 73  |ch the Event sys|
00036950  74 65 6d 20 75 73 65 64  20 66 6f 72 20 3c 57 69  |tem used for <Wi|
00036960  6d 70 5f 50 6f 6c 6c 3e  2e 20 49 74 20 69 73 20  |mp_Poll>. It is |
00036970  6f 66 20 74 79 70 65 20  3c 65 76 65 6e 74 5f 70  |of type <event_p|
00036980  6f 6c 6c 6d 61 73 6b 3e  2e 00 00 00 44 41 54 41  |ollmask>....DATA|
00036990  28 01 00 00 65 76 65 6e  74 5f 6d 65 6e 75 5f 6d  |(...event_menu_m|
000369a0  61 6b 65 72 0a 54 68 69  73 20 74 79 70 65 20 69  |aker.This type i|
000369b0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 65 76  |s defined in <ev|
000369c0  65 6e 74 2e 68 3d 3e 65  76 65 6e 74 5f 68 3e 2e  |ent.h=>event_h>.|
000369d0  20 49 74 20 69 73 20 61  20 66 75 6e 63 74 69 6f  | It is a functio|
000369e0  6e 20 63 61 6c 6c 65 64  20 77 68 65 6e 20 74 68  |n called when th|
000369f0  65 20 75 73 65 72 20 77  61 6e 74 73 20 61 20 6d  |e user wants a m|
00036a00  65 6e 75 20 63 72 65 61  74 69 6e 67 2e 20 54 68  |enu creating. Th|
00036a10  65 20 66 75 6e 63 74 69  6f 6e 20 69 73 20 6f 66  |e function is of|
00036a20  20 74 68 65 20 66 6f 72  6d 3a 0a 7b 77 72 61 70  | the form:.{wrap|
00036a30  20 6f 66 66 7d 0a 7b 66  43 6f 64 65 3b 61 6c 69  | off}.{fCode;ali|
00036a40  67 6e 20 63 65 6e 74 72  65 7d 3c 6d 65 6e 75 3e  |gn centre}<menu>|
00036a50  20 6d 79 66 75 6e 63 20  28 76 6f 69 64 20 2a 68  | myfunc (void *h|
00036a60  61 6e 64 6c 65 29 3b 7b  66 3b 61 6c 69 67 6e 3b  |andle);{f;align;|
00036a70  77 72 61 70 7d 0a 0a 54  68 65 20 66 75 6e 63 74  |wrap}..The funct|
00036a80  69 6f 6e 20 73 68 6f 75  6c 64 20 63 72 65 61 74  |ion should creat|
00036a90  65 20 61 20 6d 65 6e 75  20 61 6e 64 20 72 65 74  |e a menu and ret|
00036aa0  75 72 6e 20 69 74 73 20  6d 65 6e 75 20 68 61 6e  |urn its menu han|
00036ab0  64 6c 65 2e 44 41 54 41  68 01 00 00 65 76 65 6e  |dle.DATAh...even|
00036ac0  74 5f 6d 65 6e 75 5f 70  72 6f 63 0a 54 68 69 73  |t_menu_proc.This|
00036ad0  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
00036ae0  20 69 6e 20 3c 65 76 65  6e 74 2e 68 3d 3e 65 76  | in <event.h=>ev|
00036af0  65 6e 74 5f 68 3e 2e 20  49 74 20 69 73 20 61 20  |ent_h>. It is a |
00036b00  66 75 6e 63 74 69 6f 6e  20 63 61 6c 6c 65 64 20  |function called |
00036b10  77 68 65 6e 20 74 68 65  20 75 73 65 72 20 73 65  |when the user se|
00036b20  6c 65 63 74 73 20 61 20  6d 65 6e 75 20 65 6e 74  |lects a menu ent|
00036b30  72 79 2e 20 54 68 65 20  66 75 6e 63 74 69 6f 6e  |ry. The function|
00036b40  20 69 73 20 6f 66 20 74  68 65 20 66 6f 72 6d 3a  | is of the form:|
00036b50  0a 7b 77 72 61 70 20 6f  66 66 7d 0a 7b 66 43 6f  |.{wrap off}.{fCo|
00036b60  64 65 3b 61 6c 69 67 6e  20 63 65 6e 74 72 65 7d  |de;align centre}|
00036b70  76 6f 69 64 20 6d 79 66  75 6e 63 20 28 76 6f 69  |void myfunc (voi|
00036b80  64 20 2a 68 61 6e 64 6c  65 2c 20 63 68 61 72 20  |d *handle, char |
00036b90  2a 68 69 74 29 3b 7b 66  3b 61 6c 69 67 6e 7d 0a  |*hit);{f;align}.|
00036ba0  7b 77 72 61 70 7d 0a 2f  68 69 74 2f 20 69 73 20  |{wrap}./hit/ is |
00036bb0  61 20 73 74 72 69 6e 67  20 63 6f 6e 74 61 69 6e  |a string contain|
00036bc0  69 6e 67 20 61 20 63 68  61 72 61 63 74 65 72 20  |ing a character |
00036bd0  66 6f 72 20 65 61 63 68  20 6c 65 76 65 6c 20 6f  |for each level o|
00036be0  66 20 6e 65 73 74 69 6e  67 20 69 6e 20 61 20 68  |f nesting in a h|
00036bf0  69 65 72 61 72 63 68 69  63 61 6c 20 6d 65 6e 75  |ierarchical menu|
00036c00  20 73 74 72 75 63 74 75  72 65 2c 20 74 65 72 6d  | structure, term|
00036c10  69 6e 61 74 65 64 20 62  79 20 30 2e 44 41 54 41  |inated by 0.DATA|
00036c20  17 01 00 00 45 76 65 6e  74 5f 50 6f 6c 6c 0a 53  |....Event_Poll.S|
00036c30  79 6e 74 61 78 3a 09 76  6f 69 64 20 45 76 65 6e  |yntax:.void Even|
00036c40  74 5f 50 6f 6c 6c 20 28  76 6f 69 64 29 3b 0a 48  |t_Poll (void);.H|
00036c50  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00036c60  45 76 65 6e 74 2e 68 3d  3e 45 76 65 6e 74 3e 0a  |Event.h=>Event>.|
00036c70  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 73  |.This function s|
00036c80  68 6f 75 6c 64 20 62 65  20 63 61 6c 6c 65 64 20  |hould be called |
00036c90  72 65 70 65 61 74 65 64  6c 79 20 6f 6e 63 65 20  |repeatedly once |
00036ca0  79 6f 75 72 20 74 61 73  6b 20 69 73 20 66 75 6c  |your task is ful|
00036cb0  6c 79 20 69 6e 69 74 69  61 6c 69 73 65 64 2e 20  |ly initialised. |
00036cc0  49 74 20 63 61 6c 6c 73  20 3c 57 69 6d 70 5f 50  |It calls <Wimp_P|
00036cd0  6f 6c 6c 3e 20 61 6e 64  20 74 68 65 6e 20 3c 45  |oll> and then <E|
00036ce0  76 65 6e 74 5f 50 72 6f  63 65 73 73 3e 20 66 6f  |vent_Process> fo|
00036cf0  72 20 79 6f 75 2e 20 55  73 65 20 61 73 20 69 6e  |r you. Use as in|
00036d00  3a 0a 0a 7b 66 43 6f 64  65 3b 61 6c 69 67 6e 20  |:..{fCode;align |
00036d10  63 65 6e 74 72 65 7d 77  68 69 6c 65 20 28 3c 54  |centre}while (<T|
00036d20  52 55 45 3e 29 20 45 76  65 6e 74 5f 50 6f 6c 6c  |RUE>) Event_Poll|
00036d30  28 29 3b 00 44 41 54 41  d3 00 00 00 65 76 65 6e  |();.DATA....even|
00036d40  74 5f 70 6f 6c 6c 62 6c  6f 63 6b 0a 54 68 69 73  |t_pollblock.This|
00036d50  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
00036d60  20 69 6e 20 3c 44 65 73  6b 4c 69 62 3a 57 69 6d  | in <DeskLib:Wim|
00036d70  70 2e 68 3d 3e 57 69 6d  70 3e 2e 20 49 74 20 69  |p.h=>Wimp>. It i|
00036d80  73 20 61 20 73 74 72 75  63 74 75 72 65 20 63 6f  |s a structure co|
00036d90  6e 74 61 69 6e 69 6e 67  20 62 6f 74 68 20 74 68  |ntaining both th|
00036da0  65 20 72 65 61 73 6f 6e  20 63 6f 64 65 20 61 6e  |e reason code an|
00036db0  64 20 64 61 74 61 20 72  65 74 75 72 6e 65 64 20  |d data returned |
00036dc0  62 79 20 3c 57 69 6d 70  5f 50 6f 6c 6c 3e 2e 0a  |by <Wimp_Poll>..|
00036dd0  0a 20 20 5c 7b 0a 20 20  20 20 3c 65 76 65 6e 74  |.  \{.    <event|
00036de0  5f 74 79 70 65 3e 09 74  79 70 65 3b 0a 20 20 20  |_type>.type;.   |
00036df0  20 3c 65 76 65 6e 74 5f  64 61 74 61 3e 09 64 61  | <event_data>.da|
00036e00  74 61 3b 0a 20 20 7d 00  44 41 54 41 89 04 00 00  |ta;.  }.DATA....|
00036e10  65 76 65 6e 74 5f 70 6f  6c 6c 6d 61 73 6b 0a 54  |event_pollmask.T|
00036e20  68 69 73 20 69 73 20 61  20 75 6e 69 6f 6e 20 64  |his is a union d|
00036e30  65 66 69 6e 65 64 20 62  79 20 3c 44 65 73 6b 4c  |efined by <DeskL|
00036e40  69 62 3a 57 69 6d 70 2e  68 3d 3e 57 69 6d 70 3e  |ib:Wimp.h=>Wimp>|
00036e50  20 75 73 65 64 20 66 6f  72 20 6d 61 73 6b 69 6e  | used for maskin|
00036e60  67 20 6f 75 74 20 63 65  72 74 61 69 6e 20 72 65  |g out certain re|
00036e70  61 73 6f 6e 20 63 6f 64  65 73 20 77 68 65 6e 20  |ason codes when |
00036e80  63 61 6c 6c 69 6e 67 20  3c 57 69 6d 70 5f 50 6f  |calling <Wimp_Po|
00036e90  6c 6c 3e 2e 20 49 74 20  61 6c 6c 6f 77 73 20 61  |ll>. It allows a|
00036ea0  63 63 65 73 73 20 74 6f  20 74 68 65 20 6d 61 73  |ccess to the mas|
00036eb0  6b 20 61 73 20 69 6e 64  69 76 69 64 75 61 6c 20  |k as individual |
00036ec0  62 69 74 73 20 61 6e 64  20 61 73 20 61 20 76 61  |bits and as a va|
00036ed0  6c 75 65 2e 0a 0a 20 20  5c 7b 0a 20 20 20 20 75  |lue...  \{.    u|
00036ee0  6e 73 69 67 6e 65 64 20  69 6e 74 20 76 61 6c 75  |nsigned int valu|
00036ef0  65 3b 0a 20 20 20 20 73  74 72 75 63 74 0a 20 20  |e;.    struct.  |
00036f00  20 20 5c 7b 0a 20 20 20  20 20 20 75 6e 73 69 67  |  \{.      unsig|
00036f10  6e 65 64 20 69 6e 74 20  6e 75 6c 6c 09 3a 20 31  |ned int null.: 1|
00036f20  3b 0a 20 20 20 20 20 20  75 6e 73 69 67 6e 65 64  |;.      unsigned|
00036f30  20 69 6e 74 20 72 65 64  72 61 77 09 3a 20 31 3b  | int redraw.: 1;|
00036f40  0a 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |.      unsigned |
00036f50  69 6e 74 20 6f 70 65 6e  09 3a 20 31 3b 0a 20 20  |int open.: 1;.  |
00036f60  20 20 20 20 75 6e 73 69  67 6e 65 64 20 69 6e 74  |    unsigned int|
00036f70  20 63 6c 6f 73 65 09 3a  20 31 3b 0a 20 20 20 20  | close.: 1;.    |
00036f80  20 20 75 6e 73 69 67 6e  65 64 20 69 6e 74 20 70  |  unsigned int p|
00036f90  74 72 6c 65 61 76 65 09  3a 20 31 3b 0a 20 20 20  |trleave.: 1;.   |
00036fa0  20 20 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |   unsigned int |
00036fb0  70 74 72 65 6e 74 65 72  09 3a 20 31 3b 0a 20 20  |ptrenter.: 1;.  |
00036fc0  20 20 20 20 75 6e 73 69  67 6e 65 64 20 69 6e 74  |    unsigned int|
00036fd0  20 63 6c 69 63 6b 09 3a  20 31 3b 0a 20 20 20 20  | click.: 1;.    |
00036fe0  20 20 75 6e 73 69 67 6e  65 64 20 69 6e 74 20 75  |  unsigned int u|
00036ff0  73 65 72 64 72 61 67 09  3a 20 31 3b 0a 20 20 20  |serdrag.: 1;.   |
00037000  20 20 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |   unsigned int |
00037010  6b 65 79 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |key.: 1;.      u|
00037020  6e 73 69 67 6e 65 64 20  69 6e 74 20 6d 65 6e 75  |nsigned int menu|
00037030  09 3a 20 31 3b 0a 20 20  20 20 20 20 75 6e 73 69  |.: 1;.      unsi|
00037040  67 6e 65 64 20 69 6e 74  20 73 63 72 6f 6c 6c 09  |gned int scroll.|
00037050  3a 20 31 3b 0a 20 20 20  20 20 20 75 6e 73 69 67  |: 1;.      unsig|
00037060  6e 65 64 20 69 6e 74 20  6c 6f 73 65 63 61 72 65  |ned int losecare|
00037070  74 09 3a 20 31 3b 0a 20  20 20 20 20 20 75 6e 73  |t.: 1;.      uns|
00037080  69 67 6e 65 64 20 69 6e  74 20 67 61 69 6e 63 61  |igned int gainca|
00037090  72 65 74 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |ret.: 1;.      u|
000370a0  6e 73 69 67 6e 65 64 20  69 6e 74 20 6e 6f 6e 7a  |nsigned int nonz|
000370b0  65 72 6f 70 6f 6c 6c 77  6f 72 64 09 3a 20 31 3b  |eropollword.: 1;|
000370c0  0a 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |.      unsigned |
000370d0  69 6e 74 20 64 75 6d 6d  79 31 34 09 3a 20 31 3b  |int dummy14.: 1;|
000370e0  0a 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |.      unsigned |
000370f0  69 6e 74 20 64 75 6d 6d  79 31 35 09 3a 20 31 3b  |int dummy15.: 1;|
00037100  0a 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |.      unsigned |
00037110  69 6e 74 20 64 75 6d 6d  79 31 36 09 3a 20 31 3b  |int dummy16.: 1;|
00037120  0a 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |.      unsigned |
00037130  69 6e 74 20 75 73 65 72  6d 65 73 73 61 67 65 09  |int usermessage.|
00037140  3a 20 31 3b 0a 20 20 20  20 20 20 75 6e 73 69 67  |: 1;.      unsig|
00037150  6e 65 64 20 69 6e 74 20  75 73 65 72 6d 65 73 73  |ned int usermess|
00037160  61 67 65 72 65 63 6f 72  64 65 64 09 3a 20 31 3b  |agerecorded.: 1;|
00037170  0a 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |.      unsigned |
00037180  69 6e 74 20 75 73 65 72  6d 65 73 73 61 67 65 61  |int usermessagea|
00037190  63 6b 09 3a 20 31 3b 0a  20 20 20 20 20 20 75 6e  |ck.: 1;.      un|
000371a0  73 69 67 6e 65 64 20 69  6e 74 20 64 75 6d 6d 79  |signed int dummy|
000371b0  32 30 09 3a 20 31 3b 0a  20 20 20 20 20 20 75 6e  |20.: 1;.      un|
000371c0  73 69 67 6e 65 64 20 69  6e 74 20 64 75 6d 6d 79  |signed int dummy|
000371d0  32 31 09 3a 20 31 3b 0a  20 20 20 20 20 20 75 6e  |21.: 1;.      un|
000371e0  73 69 67 6e 65 64 20 69  6e 74 20 72 33 69 73 70  |signed int r3isp|
000371f0  6f 6c 6c 77 6f 72 64 70  74 72 09 3a 20 31 3b 0a  |ollwordptr.: 1;.|
00037200  20 20 20 20 20 20 75 6e  73 69 67 6e 65 64 20 69  |      unsigned i|
00037210  6e 74 20 68 69 67 68 70  72 69 6f 72 69 74 79 70  |nt highpriorityp|
00037220  6f 6c 6c 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |oll.: 1;.      u|
00037230  6e 73 69 67 6e 65 64 20  69 6e 74 20 6b 65 65 70  |nsigned int keep|
00037240  66 70 72 65 67 69 73 74  65 72 73 09 3a 20 31 3b  |fpregisters.: 1;|
00037250  0a 20 20 20 20 7d 20 64  61 74 61 3b 0a 20 20 7d  |.    } data;.  }|
00037260  0a 0a 54 6f 20 6d 61 73  6b 20 6f 75 74 20 61 6e  |..To mask out an|
00037270  20 65 76 65 6e 74 20 73  65 74 20 74 68 65 20 63  | event set the c|
00037280  6f 72 72 65 73 70 6f 6e  64 69 6e 67 20 62 69 74  |orresponding bit|
00037290  2e 00 00 00 44 41 54 41  8f 01 00 00 45 76 65 6e  |....DATA....Even|
000372a0  74 5f 50 72 6f 63 65 73  73 0a 53 79 6e 74 61 78  |t_Process.Syntax|
000372b0  3a 09 76 6f 69 64 20 45  76 65 6e 74 5f 50 72 6f  |:.void Event_Pro|
000372c0  63 65 73 73 20 28 3c 65  76 65 6e 74 5f 70 6f 6c  |cess (<event_pol|
000372d0  6c 62 6c 6f 63 6b 3e 20  2a 65 76 65 6e 74 29 3b  |lblock> *event);|
000372e0  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
000372f0  62 3a 45 76 65 6e 74 2e  68 3d 3e 45 76 65 6e 74  |b:Event.h=>Event|
00037300  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
00037310  20 70 72 6f 63 65 73 73  65 73 20 61 6e 20 65 76  | processes an ev|
00037320  65 6e 74 2c 20 77 68 6f  73 65 20 64 61 74 61 20  |ent, whose data |
00037330  69 73 20 69 6e 20 2f 65  76 65 6e 74 2f 2e 20 49  |is in /event/. I|
00037340  74 20 6f 66 66 65 72 73  20 69 6e 20 74 75 72 6e  |t offers in turn|
00037350  20 74 6f 20 74 68 65 20  68 61 6e 64 6c 65 72 73  | to the handlers|
00037360  20 63 75 72 72 65 6e 74  6c 79 20 61 74 74 61 63  | currently attac|
00037370  68 65 64 2c 20 75 6e 74  69 6c 20 6f 6e 65 20 6f  |hed, until one o|
00037380  66 20 74 68 65 6d 20 72  65 74 75 72 6e 73 20 3c  |f them returns <|
00037390  54 52 55 45 3e 2e 20 4e  6f 74 65 20 74 68 61 74  |TRUE>. Note that|
000373a0  20 3c 45 76 65 6e 74 5f  50 6f 6c 6c 3e 20 63 61  | <Event_Poll> ca|
000373b0  6c 6c 73 20 3c 57 69 6d  70 5f 50 6f 6c 6c 3e 20  |lls <Wimp_Poll> |
000373c0  61 6e 64 20 45 76 65 6e  74 5f 50 72 6f 63 65 73  |and Event_Proces|
000373d0  73 20 61 75 74 6f 6d 61  74 69 63 61 6c 6c 79 2e  |s automatically.|
000373e0  0a 0a 53 65 65 20 61 6c  73 6f 20 74 68 65 20 44  |..See also the D|
000373f0  65 73 6b 74 6f 70 20 43  20 66 75 6e 63 74 69 6f  |esktop C functio|
00037400  6e 2c 20 3c 65 76 65 6e  74 5f 70 72 6f 63 65 73  |n, <event_proces|
00037410  73 3d 3e 65 76 65 6e 74  5f 70 72 6f 63 65 73 73  |s=>event_process|
00037420  5f 3e 2e 00 44 41 54 41  3b 01 00 00 65 76 65 6e  |_>..DATA;...even|
00037430  74 5f 70 72 6f 63 65 73  73 0a 53 79 6e 74 61 78  |t_process.Syntax|
00037440  3a 09 76 6f 69 64 20 65  76 65 6e 74 5f 70 72 6f  |:.void event_pro|
00037450  63 65 73 73 20 28 76 6f  69 64 29 3b 0a 48 65 61  |cess (void);.Hea|
00037460  64 65 72 3a 09 3c 65 76  65 6e 74 2e 68 3d 3e 65  |der:.<event.h=>e|
00037470  76 65 6e 74 5f 68 3e 0a  0a 54 68 69 73 20 66 75  |vent_h>..This fu|
00037480  6e 63 74 69 6f 6e 20 70  72 6f 63 65 73 73 65 73  |nction processes|
00037490  20 6f 6e 65 20 65 76 65  6e 74 2e 20 49 66 20 74  | one event. If t|
000374a0  68 65 20 6e 75 6d 62 65  72 20 6f 66 20 63 75 72  |he number of cur|
000374b0  72 65 6e 74 20 61 63 74  69 76 65 20 77 69 6e 64  |rent active wind|
000374c0  6f 77 73 20 69 73 20 30  20 74 68 65 6e 20 74 68  |ows is 0 then th|
000374d0  65 20 70 72 6f 67 72 61  6d 20 65 78 69 74 73 2e  |e program exits.|
000374e0  20 4f 6e 65 20 65 76 65  6e 74 20 69 73 20 70 6f  | One event is po|
000374f0  6c 6c 65 64 20 61 6e 64  20 70 72 6f 63 65 73 73  |lled and process|
00037500  65 64 20 28 69 65 20 70  61 73 73 65 64 20 6f 6e  |ed (ie passed on|
00037510  20 74 6f 20 74 68 65 20  3c 77 69 6e 3e 20 6d 6f  | to the <win> mo|
00037520  64 75 6c 65 29 2e 20 54  79 70 69 63 61 6c 6c 79  |dule). Typically|
00037530  20 74 68 69 73 20 69 73  20 63 61 6c 6c 65 64 20  | this is called |
00037540  69 6e 20 61 20 6c 6f 6f  70 20 69 6e 20 74 68 65  |in a loop in the|
00037550  20 6d 61 69 6e 20 66 75  6e 63 74 69 6f 6e 2e 00  | main function..|
00037560  44 41 54 41 48 01 00 00  45 76 65 6e 74 5f 52 65  |DATAH...Event_Re|
00037570  6c 65 61 73 65 0a 53 79  6e 74 61 78 3a 09 3c 42  |lease.Syntax:.<B|
00037580  4f 4f 4c 3e 20 45 76 65  6e 74 5f 52 65 6c 65 61  |OOL> Event_Relea|
00037590  73 65 20 28 3c 65 76 65  6e 74 5f 74 79 70 65 3e  |se (<event_type>|
000375a0  20 74 79 70 65 2c 20 3c  77 69 6e 64 6f 77 5f 68  | type, <window_h|
000375b0  61 6e 64 6c 65 3e 20 77  69 6e 2c 20 3c 69 63 6f  |andle> win, <ico|
000375c0  6e 5f 68 61 6e 64 6c 65  3e 20 69 63 6f 6e 2c 20  |n_handle> icon, |
000375d0  3c 65 76 65 6e 74 5f 68  61 6e 64 6c 65 72 3e 20  |<event_handler> |
000375e0  68 61 6e 64 6c 65 72 2c  20 76 6f 69 64 20 2a 72  |handler, void *r|
000375f0  65 66 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |ef);.Header:.<De|
00037600  73 6b 4c 69 62 3a 45 76  65 6e 74 2e 68 3d 3e 45  |skLib:Event.h=>E|
00037610  76 65 6e 74 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |vent>..Returns:.|
00037620  3c 54 52 55 45 3e 20 69  66 20 73 75 63 63 65 73  |<TRUE> if succes|
00037630  73 66 75 6c 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |sful...This func|
00037640  74 69 6f 6e 20 72 65 6c  65 61 73 65 73 20 61 6e  |tion releases an|
00037650  20 65 76 65 6e 74 20 68  61 6e 64 6c 65 72 2e 20  | event handler. |
00037660  59 6f 75 20 73 68 6f 75  6c 64 20 63 61 6c 6c 20  |You should call |
00037670  74 68 69 73 20 77 69 74  68 20 74 68 65 20 73 61  |this with the sa|
00037680  6d 65 20 70 61 72 61 6d  65 74 65 72 73 20 61 73  |me parameters as|
00037690  20 75 73 65 64 20 66 6f  72 20 3c 45 76 65 6e 74  | used for <Event|
000376a0  5f 43 6c 61 69 6d 3e 2e  44 41 54 41 f1 00 00 00  |_Claim>.DATA....|
000376b0  45 76 65 6e 74 5f 52 65  6c 65 61 73 65 57 69 6e  |Event_ReleaseWin|
000376c0  64 6f 77 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |dow.Syntax:.void|
000376d0  20 45 76 65 6e 74 5f 52  65 6c 65 61 73 65 57 69  | Event_ReleaseWi|
000376e0  6e 64 6f 77 20 28 3c 77  69 6e 64 6f 77 5f 68 61  |ndow (<window_ha|
000376f0  6e 64 6c 65 3e 20 77 69  6e 29 3b 0a 48 65 61 64  |ndle> win);.Head|
00037700  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 45 76 65  |er:.<DeskLib:Eve|
00037710  6e 74 2e 68 3d 3e 45 76  65 6e 74 3e 0a 0a 54 68  |nt.h=>Event>..Th|
00037720  69 73 20 66 75 6e 63 74  69 6f 6e 20 72 65 6c 65  |is function rele|
00037730  61 73 65 73 20 61 6c 6c  20 68 61 6e 64 6c 65 72  |ases all handler|
00037740  73 20 61 74 74 61 63 68  65 64 20 74 6f 20 61 20  |s attached to a |
00037750  73 70 65 63 69 66 69 63  20 77 69 6e 64 6f 77 2e  |specific window.|
00037760  20 4e 6f 74 65 20 74 68  61 74 20 74 68 69 73 20  | Note that this |
00037770  69 73 20 64 6f 6e 65 20  61 75 74 6f 6d 61 74 69  |is done automati|
00037780  63 61 6c 6c 79 20 62 79  20 3c 57 69 6e 64 6f 77  |cally by <Window|
00037790  5f 44 65 6c 65 74 65 3e  2e 00 00 00 44 41 54 41  |_Delete>....DATA|
000377a0  e4 00 00 00 65 76 65 6e  74 5f 73 65 74 6d 61 73  |....event_setmas|
000377b0  6b 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 65  |k.Syntax:.void e|
000377c0  76 65 6e 74 5f 73 65 74  6d 61 73 6b 20 28 3c 77  |vent_setmask (<w|
000377d0  69 6d 70 5f 65 6d 61 73  6b 3e 20 6d 61 73 6b 29  |imp_emask> mask)|
000377e0  3b 0a 48 65 61 64 65 72  3a 09 3c 65 76 65 6e 74  |;.Header:.<event|
000377f0  2e 68 3d 3e 65 76 65 6e  74 5f 68 3e 0a 0a 54 68  |.h=>event_h>..Th|
00037800  69 73 20 66 75 6e 63 74  69 6f 6e 20 73 65 74 73  |is function sets|
00037810  20 74 68 65 20 6d 61 73  6b 20 75 73 65 64 20 62  | the mask used b|
00037820  79 20 3c 77 69 6d 70 5f  70 6f 6c 6c 3e 20 61 6e  |y <wimp_poll> an|
00037830  64 20 3c 77 69 6d 70 74  5f 70 6f 6c 6c 3e 20 77  |d <wimpt_poll> w|
00037840  68 65 6e 20 70 6f 6c 6c  69 6e 67 20 74 68 65 20  |hen polling the |
00037850  57 69 6d 70 2e 20 54 68  65 20 64 65 66 61 75 6c  |Wimp. The defaul|
00037860  74 20 69 73 20 74 6f 20  69 67 6e 6f 72 65 20 6e  |t is to ignore n|
00037870  75 6c 6c 20 65 76 65 6e  74 73 20 6f 6e 6c 79 2e  |ull events only.|
00037880  44 41 54 41 7d 00 00 00  65 76 65 6e 74 5f 74 61  |DATA}...event_ta|
00037890  73 6b 6e 61 6d 65 0a 54  68 69 73 20 76 61 72 69  |skname.This vari|
000378a0  61 62 6c 65 20 69 73 20  64 65 66 69 6e 65 64 20  |able is defined |
000378b0  69 6e 20 3c 44 65 73 6b  4c 69 62 3a 45 76 65 6e  |in <DeskLib:Even|
000378c0  74 2e 68 3d 3e 45 76 65  6e 74 3e 2e 20 49 74 20  |t.h=>Event>. It |
000378d0  69 73 20 61 20 73 74 72  69 6e 67 20 63 6f 6e 74  |is a string cont|
000378e0  61 69 6e 69 6e 67 20 79  6f 75 72 20 61 70 70 6c  |aining your appl|
000378f0  69 63 61 74 69 6f 6e 20  6e 61 6d 65 2e 00 00 00  |ication name....|
00037900  44 41 54 41 d7 02 00 00  65 76 65 6e 74 5f 74 79  |DATA....event_ty|
00037910  70 65 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |pe.This type is |
00037920  64 65 66 69 6e 65 64 20  69 6e 20 3c 44 65 73 6b  |defined in <Desk|
00037930  4c 69 62 3a 57 69 6d 70  2e 68 3d 3e 57 69 6d 70  |Lib:Wimp.h=>Wimp|
00037940  3e 2e 20 49 74 20 69 73  20 61 6e 20 65 6e 75 6d  |>. It is an enum|
00037950  65 72 61 74 65 64 20 74  79 70 65 20 67 69 76 69  |erated type givi|
00037960  6e 67 20 74 68 65 20 72  65 61 73 6f 6e 20 63 6f  |ng the reason co|
00037970  64 65 73 20 72 65 74 75  72 6e 65 64 20 62 79 20  |des returned by |
00037980  3c 57 69 6d 70 5f 50 6f  6c 6c 3e 2e 0a 0a 20 20  |<Wimp_Poll>...  |
00037990  5c 7b 0a 20 20 20 20 65  76 65 6e 74 5f 41 4e 59  |\{.    event_ANY|
000379a0  09 3d 20 2d 39 39 2c 20  20 0a 20 20 20 20 65 76  |.= -99,  .    ev|
000379b0  65 6e 74 5f 4e 55 4c 4c  09 3d 20 30 2c 0a 20 20  |ent_NULL.= 0,.  |
000379c0  20 20 65 76 65 6e 74 5f  52 45 44 52 41 57 2c 0a  |  event_REDRAW,.|
000379d0  20 20 20 20 65 76 65 6e  74 5f 4f 50 45 4e 2c 0a  |    event_OPEN,.|
000379e0  20 20 20 20 65 76 65 6e  74 5f 43 4c 4f 53 45 2c  |    event_CLOSE,|
000379f0  0a 20 20 20 20 65 76 65  6e 74 5f 50 54 52 4c 45  |.    event_PTRLE|
00037a00  41 56 45 2c 0a 20 20 20  20 65 76 65 6e 74 5f 50  |AVE,.    event_P|
00037a10  54 52 45 4e 54 45 52 2c  0a 20 20 20 20 65 76 65  |TRENTER,.    eve|
00037a20  6e 74 5f 43 4c 49 43 4b  09 3d 20 36 2c 0a 20 20  |nt_CLICK.= 6,.  |
00037a30  20 20 65 76 65 6e 74 5f  42 55 54 54 4f 4e 09 3d  |  event_BUTTON.=|
00037a40  20 36 2c 0a 20 20 20 20  65 76 65 6e 74 5f 55 53  | 6,.    event_US|
00037a50  45 52 44 52 41 47 2c 0a  20 20 20 20 65 76 65 6e  |ERDRAG,.    even|
00037a60  74 5f 4b 45 59 2c 0a 20  20 20 20 65 76 65 6e 74  |t_KEY,.    event|
00037a70  5f 4d 45 4e 55 2c 0a 20  20 20 20 65 76 65 6e 74  |_MENU,.    event|
00037a80  5f 53 43 52 4f 4c 4c 2c  0a 20 20 20 20 65 76 65  |_SCROLL,.    eve|
00037a90  6e 74 5f 4c 4f 53 45 43  41 52 45 54 2c 0a 20 20  |nt_LOSECARET,.  |
00037aa0  20 20 65 76 65 6e 74 5f  47 41 49 4e 43 41 52 45  |  event_GAINCARE|
00037ab0  54 2c 0a 20 20 20 20 65  76 65 6e 74 5f 4e 4f 4e  |T,.    event_NON|
00037ac0  5a 45 52 4f 50 4f 4c 4c  57 4f 52 44 2c 0a 20 20  |ZEROPOLLWORD,.  |
00037ad0  20 20 65 76 65 6e 74 5f  55 53 45 52 4d 45 53 53  |  event_USERMESS|
00037ae0  41 47 45 09 3d 20 31 37  2c 0a 20 20 20 20 65 76  |AGE.= 17,.    ev|
00037af0  65 6e 74 5f 53 45 4e 44  09 3d 20 31 37 2c 0a 20  |ent_SEND.= 17,. |
00037b00  20 20 20 65 76 65 6e 74  5f 55 53 45 52 4d 45 53  |   event_USERMES|
00037b10  53 41 47 45 52 45 43 4f  52 44 45 44 09 3d 20 31  |SAGERECORDED.= 1|
00037b20  38 2c 0a 20 20 20 20 65  76 65 6e 74 5f 53 45 4e  |8,.    event_SEN|
00037b30  44 57 41 4e 54 41 43 4b  09 3d 20 31 38 2c 0a 20  |DWANTACK.= 18,. |
00037b40  20 20 20 65 76 65 6e 74  5f 55 53 45 52 4d 45 53  |   event_USERMES|
00037b50  53 41 47 45 41 43 4b 09  3d 20 31 39 2c 0a 20 20  |SAGEACK.= 19,.  |
00037b60  20 20 65 76 65 6e 74 5f  41 43 4b 09 3d 20 31 39  |  event_ACK.= 19|
00037b70  0a 20 20 7d 0a 0a 7b 2a  7d 65 76 65 6e 74 5f 41  |.  }..{*}event_A|
00037b80  4e 59 7b 2a 7d 20 69 73  20 75 73 65 64 20 62 79  |NY{*} is used by|
00037b90  20 73 6f 6d 65 20 44 65  73 6b 4c 69 62 20 66 75  | some DeskLib fu|
00037ba0  6e 63 74 69 6f 6e 73 20  74 6f 20 69 6e 64 69 63  |nctions to indic|
00037bb0  61 74 65 20 6d 61 74 63  68 69 6e 67 20 61 6e 79  |ate matching any|
00037bc0  20 65 76 65 6e 74 2f 77  69 6e 64 6f 77 2f 69 63  | event/window/ic|
00037bd0  6f 6e 20 65 74 63 2e 00  44 41 54 41 7f 00 00 00  |on etc..DATA....|
00037be0  65 76 65 6e 74 5f 77 0a  54 68 69 73 20 74 79 70  |event_w.This typ|
00037bf0  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
00037c00  3c 65 76 65 6e 74 2e 68  3d 3e 65 76 65 6e 74 5f  |<event.h=>event_|
00037c10  68 3e 2e 20 49 74 20 69  73 20 61 20 74 79 70 65  |h>. It is a type|
00037c20  20 63 6f 6e 74 61 69 6e  69 6e 67 20 61 20 77 69  | containing a wi|
00037c30  6e 64 6f 77 20 68 61 6e  64 6c 65 20 61 6e 64 20  |ndow handle and |
00037c40  69 73 20 64 65 66 69 6e  65 64 20 61 73 20 61 6e  |is defined as an|
00037c50  20 2f 69 6e 74 2f 2e 00  44 41 54 41 a6 00 00 00  | /int/..DATA....|
00037c60  65 76 65 6e 74 5f 77 69  6d 70 76 65 72 73 69 6f  |event_wimpversio|
00037c70  6e 0a 54 68 69 73 20 76  61 72 69 61 62 6c 65 20  |n.This variable |
00037c80  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 44  |is defined in <D|
00037c90  65 73 6b 4c 69 62 3a 45  76 65 6e 74 2e 68 3d 3e  |eskLib:Event.h=>|
00037ca0  45 76 65 6e 74 3e 2e 20  49 74 20 69 73 20 75 73  |Event>. It is us|
00037cb0  65 64 20 74 6f 20 68 6f  6c 64 20 74 68 65 20 63  |ed to hold the c|
00037cc0  75 72 72 65 6e 74 20 57  69 6d 70 20 76 65 72 73  |urrent Wimp vers|
00037cd0  69 6f 6e 20 6d 75 6c 74  69 70 6c 69 65 64 20 62  |ion multiplied b|
00037ce0  79 20 31 30 30 20 65 67  20 33 31 31 20 66 6f 72  |y 100 eg 311 for|
00037cf0  20 52 49 53 43 20 4f 53  20 33 2e 31 31 2e 00 00  | RISC OS 3.11...|
00037d00  44 41 54 41 86 00 00 00  65 76 65 6e 74 5f 74 61  |DATA....event_ta|
00037d10  73 6b 68 61 6e 64 6c 65  0a 54 68 69 73 20 76 61  |skhandle.This va|
00037d20  72 69 61 62 6c 65 20 69  73 20 64 65 66 69 6e 65  |riable is define|
00037d30  64 20 69 6e 20 3c 44 65  73 6b 4c 69 62 3a 45 76  |d in <DeskLib:Ev|
00037d40  65 6e 74 2e 68 3d 3e 45  76 65 6e 74 3e 2e 20 49  |ent.h=>Event>. I|
00037d50  74 0a 69 73 20 75 73 65  64 20 74 6f 20 68 6f 6c  |t.is used to hol|
00037d60  64 20 74 68 65 20 74 61  73 6b 20 68 61 6e 64 6c  |d the task handl|
00037d70  65 20 6f 66 20 79 6f 75  72 0a 61 70 70 6c 69 63  |e of your.applic|
00037d80  61 74 69 6f 6e 2e 00 00  44 41 54 41 7d 01 00 00  |ation...DATA}...|
00037d90  44 65 73 6b 4c 69 62 3a  45 76 65 6e 74 4d 73 67  |DeskLib:EventMsg|
00037da0  2e 68 0a 56 65 72 73 69  6f 6e 3a 20 31 2e 30 30  |.h.Version: 1.00|
00037db0  20 28 31 36 20 4d 61 72  20 31 39 39 32 29 0a 23  | (16 Mar 1992).#|
00037dc0  6c 69 6e 65 0a 54 68 69  73 20 68 65 61 64 65 72  |line.This header|
00037dd0  20 69 73 20 61 6e 20 61  64 64 2d 6f 6e 20 66 6f  | is an add-on fo|
00037de0  72 20 3c 44 65 73 6b 4c  69 62 3a 45 76 65 6e 74  |r <DeskLib:Event|
00037df0  2e 68 3d 3e 45 76 65 6e  74 3e 2e 20 49 74 20 61  |.h=>Event>. It a|
00037e00  64 64 73 20 66 75 6e 63  74 69 6f 6e 73 20 74 6f  |dds functions to|
00037e10  20 70 72 6f 76 69 64 65  20 61 20 62 65 74 74 65  | provide a bette|
00037e20  72 20 77 61 79 20 6f 66  20 68 61 6e 64 6c 69 6e  |r way of handlin|
00037e30  67 20 3c 55 73 65 72 20  4d 65 73 73 61 67 65 73  |g <User Messages|
00037e40  3d 3e 53 57 49 3a 77 69  6d 70 5f 73 65 6e 64 6d  |=>SWI:wimp_sendm|
00037e50  65 73 73 61 67 65 2e 31  3e 20 28 72 65 61 73 6f  |essage.1> (reaso|
00037e60  6e 20 63 6f 64 65 73 20  31 37 2d 31 39 29 2e 0a  |n codes 17-19)..|
00037e70  0a 46 75 6e 63 74 69 6f  6e 73 3a 0a 0a 23 74 61  |.Functions:..#ta|
00037e80  62 6c 65 20 63 6f 6c 75  6d 6e 73 20 32 0a 3c 45  |ble columns 2.<E|
00037e90  76 65 6e 74 4d 73 67 5f  49 6e 69 74 69 61 6c 69  |ventMsg_Initiali|
00037ea0  73 65 3e 0a 3c 45 76 65  6e 74 4d 73 67 5f 43 6c  |se>.<EventMsg_Cl|
00037eb0  61 69 6d 3e 0a 3c 45 76  65 6e 74 4d 73 67 5f 52  |aim>.<EventMsg_R|
00037ec0  65 6c 65 61 73 65 3e 0a  3c 45 76 65 6e 74 4d 73  |elease>.<EventMs|
00037ed0  67 5f 52 65 6c 65 61 73  65 57 69 6e 64 6f 77 20  |g_ReleaseWindow |
00037ee0  3e 0a 3c 45 76 65 6e 74  4d 73 67 5f 52 65 6c 65  |>.<EventMsg_Rele|
00037ef0  61 73 65 4d 65 73 73 61  67 65 3e 0a 23 65 6e 64  |aseMessage>.#end|
00037f00  74 61 62 6c 65 00 00 00  44 49 52 24 c0 00 00 00  |table...DIR$....|
00037f10  c0 00 00 00 c8 7f 03 00  46 ff ff ff dc 36 25 25  |........F....6%%|
00037f20  29 02 00 00 13 00 00 00  00 00 00 00 43 6c 61 69  |)...........Clai|
00037f30  6d 00 00 00 f4 81 03 00  46 ff ff ff 0e 27 25 25  |m.......F....'%%|
00037f40  9b 00 00 00 13 00 00 00  00 00 00 00 49 6e 69 74  |............Init|
00037f50  69 61 6c 69 73 65 00 00  90 82 03 00 46 ff ff ff  |ialise......F...|
00037f60  23 4c 25 25 9b 01 00 00  13 00 00 00 00 00 00 00  |#L%%............|
00037f70  52 65 6c 65 61 73 65 00  2c 84 03 00 46 ff ff ff  |Release.,...F...|
00037f80  74 5e 25 25 19 01 00 00  13 00 00 00 00 00 00 00  |t^%%............|
00037f90  52 65 6c 65 61 73 65 4d  65 73 73 61 67 65 00 00  |ReleaseMessage..|
00037fa0  48 85 03 00 46 ff ff ff  1a 56 25 25 12 01 00 00  |H...F....V%%....|
00037fb0  13 00 00 00 00 00 00 00  52 65 6c 65 61 73 65 57  |........ReleaseW|
00037fc0  69 6e 64 6f 77 00 00 00  44 41 54 41 29 02 00 00  |indow...DATA)...|
00037fd0  45 76 65 6e 74 4d 73 67  5f 43 6c 61 69 6d 0a 53  |EventMsg_Claim.S|
00037fe0  79 6e 74 61 78 3a 09 3c  42 4f 4f 4c 3e 20 45 76  |yntax:.<BOOL> Ev|
00037ff0  65 6e 74 4d 73 67 5f 43  6c 61 69 6d 20 28 3c 6d  |entMsg_Claim (<m|
00038000  65 73 73 61 67 65 5f 61  63 74 69 6f 6e 3e 20 74  |essage_action> t|
00038010  79 70 65 2c 20 3c 77 69  6e 64 6f 77 5f 68 61 6e  |ype, <window_han|
00038020  64 6c 65 3e 20 77 69 6e  2c 20 3c 65 76 65 6e 74  |dle> win, <event|
00038030  5f 68 61 6e 64 6c 65 72  3e 20 68 61 6e 64 6c 65  |_handler> handle|
00038040  72 2c 20 76 6f 69 64 20  2a 72 65 66 29 3b 0a 48  |r, void *ref);.H|
00038050  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00038060  45 76 65 6e 74 4d 73 67  2e 68 3d 3e 45 76 65 6e  |EventMsg.h=>Even|
00038070  74 4d 73 67 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |tMsg>..Returns:.|
00038080  3c 54 52 55 45 3e 20 69  66 20 73 75 63 63 65 73  |<TRUE> if succes|
00038090  73 66 75 6c 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |sful...This func|
000380a0  74 69 6f 6e 20 61 74 74  61 63 68 65 73 20 61 6e  |tion attaches an|
000380b0  20 6d 65 73 73 61 67 65  20 68 61 6e 64 6c 65 72  | message handler|
000380c0  20 74 6f 20 61 20 70 61  72 74 69 63 75 6c 61 72  | to a particular|
000380d0  20 6d 65 73 73 61 67 65  20 2f 74 79 70 65 2f 20  | message /type/ |
000380e0  61 6e 64 20 77 69 6e 64  6f 77 20 2f 77 69 6e 2f  |and window /win/|
000380f0  2e 20 45 69 74 68 65 72  20 6f 66 20 74 68 65 73  |. Either of thes|
00038100  65 20 63 61 6e 20 62 65  20 7b 2a 7d 65 76 65 6e  |e can be {*}even|
00038110  74 5f 41 4e 59 7b 2a 7d  20 74 6f 20 62 65 20 6e  |t_ANY{*} to be n|
00038120  6f 6e 2d 20 73 70 65 63  69 66 69 63 2e 20 2f 68  |on- specific. /h|
00038130  61 6e 64 6c 65 72 2f 20  69 73 20 79 6f 75 72 20  |andler/ is your |
00038140  68 61 6e 64 6c 65 72 20  66 75 6e 63 74 69 6f 6e  |handler function|
00038150  2c 20 2f 72 65 66 2f 20  69 73 20 70 61 73 73 65  |, /ref/ is passe|
00038160  64 20 64 69 72 65 63 74  20 74 6f 20 74 68 65 20  |d direct to the |
00038170  68 61 6e 64 6c 65 72 20  69 66 20 69 74 20 69 73  |handler if it is|
00038180  20 63 61 6c 6c 65 64 20  61 6e 64 20 63 61 6e 20  | called and can |
00038190  62 65 20 61 6e 79 74 68  69 6e 67 20 79 6f 75 20  |be anything you |
000381a0  6c 69 6b 65 2e 0a 0a 45  76 65 6e 73 20 61 72 65  |like...Evens are|
000381b0  20 70 72 69 6f 72 69 74  69 73 65 64 2c 20 77 69  | prioritised, wi|
000381c0  74 68 20 74 68 6f 73 65  20 66 6f 72 20 73 70 65  |th those for spe|
000381d0  63 69 66 69 63 20 77 69  6e 64 6f 77 73 20 62 65  |cific windows be|
000381e0  69 6e 67 20 63 61 6c 6c  65 64 20 66 69 72 73 74  |ing called first|
000381f0  2e 00 00 00 44 41 54 41  9b 00 00 00 45 76 65 6e  |....DATA....Even|
00038200  74 4d 73 67 5f 49 6e 69  74 69 61 6c 69 73 65 0a  |tMsg_Initialise.|
00038210  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 45 76 65  |Syntax:.void Eve|
00038220  6e 74 4d 73 67 5f 49 6e  69 74 69 61 6c 69 73 65  |ntMsg_Initialise|
00038230  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
00038240  09 3c 44 65 73 6b 4c 69  62 3a 45 76 65 6e 74 4d  |.<DeskLib:EventM|
00038250  73 67 2e 68 3d 3e 45 76  65 6e 74 4d 73 67 3e 0a  |sg.h=>EventMsg>.|
00038260  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 69  |.This function i|
00038270  6e 69 74 69 61 6c 69 73  65 73 20 74 68 65 20 45  |nitialises the E|
00038280  76 65 6e 74 4d 73 67 20  73 79 73 74 65 6d 2e 00  |ventMsg system..|
00038290  44 41 54 41 9b 01 00 00  45 76 65 6e 74 4d 73 67  |DATA....EventMsg|
000382a0  5f 52 65 6c 65 61 73 65  0a 53 79 6e 74 61 78 3a  |_Release.Syntax:|
000382b0  09 3c 42 4f 4f 4c 3e 20  45 76 65 6e 74 4d 73 67  |.<BOOL> EventMsg|
000382c0  5f 52 65 6c 65 61 73 65  20 28 3c 6d 65 73 73 61  |_Release (<messa|
000382d0  67 65 5f 61 63 74 69 6f  6e 3e 20 74 79 70 65 2c  |ge_action> type,|
000382e0  20 3c 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 3e  | <window_handle>|
000382f0  20 77 69 6e 2c 20 3c 65  76 65 6e 74 5f 68 61 6e  | win, <event_han|
00038300  64 6c 65 72 3e 20 68 61  6e 64 6c 65 72 29 3b 0a  |dler> handler);.|
00038310  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
00038320  3a 45 76 65 6e 74 4d 73  67 2e 68 3d 3e 45 76 65  |:EventMsg.h=>Eve|
00038330  6e 74 4d 73 67 3e 0a 0a  52 65 74 75 72 6e 73 3a  |ntMsg>..Returns:|
00038340  09 3c 54 52 55 45 3e 20  69 66 20 73 75 63 63 65  |.<TRUE> if succe|
00038350  73 73 66 75 6c 2e 0a 0a  54 68 69 73 20 66 75 6e  |ssful...This fun|
00038360  63 74 69 6f 6e 20 72 65  6c 65 61 73 65 73 20 61  |ction releases a|
00038370  20 6d 65 73 73 61 67 65  20 68 61 6e 64 6c 65 72  | message handler|
00038380  2e 20 49 66 20 2f 74 79  70 65 2f 20 69 73 20 7b  |. If /type/ is {|
00038390  2a 7d 65 76 65 6e 74 5f  41 4e 59 7b 2a 7d 20 74  |*}event_ANY{*} t|
000383a0  68 65 6e 20 6f 6e 6c 79  20 6e 6f 6e 2d 6d 65 73  |hen only non-mes|
000383b0  73 61 67 65 2d 73 70 65  63 69 66 69 63 20 68 61  |sage-specific ha|
000383c0  6e 64 6c 65 72 73 20 6d  61 79 20 62 65 20 72 65  |ndlers may be re|
000383d0  6c 65 61 73 65 64 2e 20  49 66 20 2f 77 69 6e 2f  |leased. If /win/|
000383e0  20 69 73 20 7b 2a 7d 65  76 65 6e 74 5f 41 4e 59  | is {*}event_ANY|
000383f0  7b 2a 7d 20 74 68 65 6e  20 6f 6e 6c 79 20 6e 6f  |{*} then only no|
00038400  6e 2d 77 69 6e 64 6f 77  2d 73 70 65 63 69 66 69  |n-window-specifi|
00038410  63 20 68 61 6e 64 6c 65  72 73 20 6d 61 79 20 62  |c handlers may b|
00038420  65 20 72 65 6c 65 61 73  65 64 2e 00 44 41 54 41  |e released..DATA|
00038430  19 01 00 00 45 76 65 6e  74 4d 73 67 5f 52 65 6c  |....EventMsg_Rel|
00038440  65 61 73 65 4d 65 73 73  61 67 65 0a 53 79 6e 74  |easeMessage.Synt|
00038450  61 78 3a 09 69 6e 74 20  45 76 65 6e 74 4d 73 67  |ax:.int EventMsg|
00038460  5f 52 65 6c 65 61 73 65  4d 65 73 73 61 67 65 20  |_ReleaseMessage |
00038470  28 3c 6d 65 73 73 61 67  65 5f 61 63 74 69 6f 6e  |(<message_action|
00038480  3e 20 74 79 70 65 29 3b  0a 48 65 61 64 65 72 3a  |> type);.Header:|
00038490  09 3c 44 65 73 6b 4c 69  62 3a 45 76 65 6e 74 4d  |.<DeskLib:EventM|
000384a0  73 67 2e 68 3d 3e 45 76  65 6e 74 4d 73 67 3e 0a  |sg.h=>EventMsg>.|
000384b0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
000384c0  65 6c 65 61 73 65 73 20  61 6c 6c 20 6d 65 73 73  |eleases all mess|
000384d0  61 67 65 20 68 61 6e 64  6c 65 72 73 20 66 6f 72  |age handlers for|
000384e0  20 74 68 65 20 67 69 76  65 6e 20 6d 65 73 73 61  | the given messa|
000384f0  67 65 2e 20 49 66 20 2f  74 79 70 65 2f 20 69 73  |ge. If /type/ is|
00038500  20 7b 2a 7d 65 76 65 6e  74 5f 41 4e 59 7b 2a 7d  | {*}event_ANY{*}|
00038510  20 74 68 65 6e 20 61 6c  6c 20 6e 6f 6e 2d 6d 65  | then all non-me|
00038520  73 73 61 67 65 2d 73 70  65 63 69 66 69 63 20 68  |ssage-specific h|
00038530  61 6e 64 6c 65 72 73 20  61 72 65 20 72 65 6c 65  |andlers are rele|
00038540  61 73 65 64 2e 00 00 00  44 41 54 41 12 01 00 00  |ased....DATA....|
00038550  45 76 65 6e 74 4d 73 67  5f 52 65 6c 65 61 73 65  |EventMsg_Release|
00038560  57 69 6e 64 6f 77 0a 53  79 6e 74 61 78 3a 09 69  |Window.Syntax:.i|
00038570  6e 74 20 45 76 65 6e 74  4d 73 67 5f 52 65 6c 65  |nt EventMsg_Rele|
00038580  61 73 65 57 69 6e 64 6f  77 20 28 3c 77 69 6e 64  |aseWindow (<wind|
00038590  6f 77 5f 68 61 6e 64 6c  65 3e 20 77 69 6e 29 3b  |ow_handle> win);|
000385a0  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
000385b0  62 3a 45 76 65 6e 74 4d  73 67 2e 68 3d 3e 45 76  |b:EventMsg.h=>Ev|
000385c0  65 6e 74 4d 73 67 3e 0a  0a 54 68 69 73 20 66 75  |entMsg>..This fu|
000385d0  6e 63 74 69 6f 6e 20 72  65 6c 65 61 73 65 73 20  |nction releases |
000385e0  61 6c 6c 20 6d 65 73 73  61 67 65 20 68 61 6e 64  |all message hand|
000385f0  6c 65 72 73 20 66 6f 72  20 74 68 65 20 67 69 76  |lers for the giv|
00038600  65 6e 20 77 69 6e 64 6f  77 2e 20 49 66 20 2f 77  |en window. If /w|
00038610  69 6e 2f 20 69 73 20 7b  2a 7d 65 76 65 6e 74 5f  |in/ is {*}event_|
00038620  41 4e 59 7b 2a 7d 20 74  68 65 6e 20 61 6c 6c 20  |ANY{*} then all |
00038630  6e 6f 6e 2d 77 69 6e 64  6f 77 2d 73 70 65 63 69  |non-window-speci|
00038640  66 69 63 20 68 61 6e 64  6c 65 72 73 20 61 72 65  |fic handlers are|
00038650  20 72 65 6c 65 61 73 65  64 2e 00 00 44 41 54 41  | released...DATA|
00038660  dc 01 00 00 65 78 69 74  0a 53 79 6e 74 61 78 3a  |....exit.Syntax:|
00038670  09 76 6f 69 64 20 65 78  69 74 20 28 69 6e 74 20  |.void exit (int |
00038680  73 74 61 74 75 73 29 3b  0a 48 65 61 64 65 72 3a  |status);.Header:|
00038690  09 3c 73 74 64 6c 69 62  2e 68 3d 3e 73 74 64 6c  |.<stdlib.h=>stdl|
000386a0  69 62 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ib>..This functi|
000386b0  6f 6e 20 63 61 75 73 65  73 20 74 68 65 20 70 72  |on causes the pr|
000386c0  6f 67 72 61 6d 20 74 6f  20 74 65 72 6d 69 6e 61  |ogram to termina|
000386d0  74 65 20 6e 6f 72 6d 61  6c 6c 79 2c 20 72 65 74  |te normally, ret|
000386e0  75 72 6e 69 6e 67 20 73  74 61 74 75 73 20 74 6f  |urning status to|
000386f0  20 74 68 65 20 68 6f 73  74 20 65 6e 76 69 72 6f  | the host enviro|
00038700  6e 6d 65 6e 74 2e 20 53  74 61 74 75 73 20 73 68  |nment. Status sh|
00038710  6f 75 6c 64 20 62 65 20  7a 65 72 6f 20 28 3c 45  |ould be zero (<E|
00038720  58 49 54 5f 53 55 43 43  45 53 53 3e 29 2c 20 6f  |XIT_SUCCESS>), o|
00038730  72 20 3c 45 58 49 54 5f  46 41 49 4c 55 52 45 3e  |r <EXIT_FAILURE>|
00038740  2e 20 54 68 69 73 20 69  73 20 77 68 61 74 20 74  |. This is what t|
00038750  68 65 20 66 75 6e 63 74  69 6f 6e 20 64 6f 65 73  |he function does|
00038760  3a 0a 7b 74 61 62 7d 0a  8f 09 43 61 6c 6c 73 20  |:.{tab}...Calls |
00038770  66 75 6e 63 74 69 6f 6e  73 20 72 65 67 69 73 74  |functions regist|
00038780  65 72 65 64 20 77 69 74  68 20 3c 61 74 65 78 69  |ered with <atexi|
00038790  74 3e 2c 20 69 6e 20 72  65 76 65 72 73 65 20 6f  |t>, in reverse o|
000387a0  72 64 65 72 20 6f 66 20  72 65 67 69 73 74 72 61  |rder of registra|
000387b0  74 69 6f 6e 20 28 6c 61  73 74 20 66 69 72 73 74  |tion (last first|
000387c0  29 2e 0a 8f 09 46 6c 75  73 68 65 73 20 61 6e 64  |)....Flushes and|
000387d0  20 63 6c 6f 73 65 73 20  61 6c 6c 20 6f 70 65 6e  | closes all open|
000387e0  20 73 74 72 65 61 6d 73  2e 0a 8f 09 52 65 6d 6f  | streams....Remo|
000387f0  76 65 73 20 61 6c 6c 20  66 69 6c 65 73 20 63 72  |ves all files cr|
00038800  65 61 74 65 64 20 77 69  74 68 20 3c 74 6d 70 66  |eated with <tmpf|
00038810  69 6c 65 3e 2e 0a 8f 09  52 65 74 75 72 6e 73 20  |ile>....Returns |
00038820  74 6f 20 74 68 65 20 68  6f 73 74 20 65 6e 76 69  |to the host envi|
00038830  72 6f 6e 6d 65 6e 74 2e  44 49 52 24 4c 00 00 00  |ronment.DIR$L...|
00038840  4c 00 00 00 84 88 03 00  46 ff ff ff 9a ab dd 22  |L.......F......"|
00038850  0c 01 00 00 13 00 00 00  00 00 00 00 46 41 49 4c  |............FAIL|
00038860  55 52 45 00 90 89 03 00  46 ff ff ff b8 a0 dd 22  |URE.....F......"|
00038870  0a 01 00 00 13 00 00 00  00 00 00 00 53 55 43 43  |............SUCC|
00038880  45 53 53 00 44 41 54 41  0c 01 00 00 45 58 49 54  |ESS.DATA....EXIT|
00038890  5f 46 41 49 4c 55 52 45  0a 54 68 65 20 6d 61 63  |_FAILURE.The mac|
000388a0  72 6f 20 7b 2f 7d 45 58  49 54 5f 46 41 49 4c 55  |ro {/}EXIT_FAILU|
000388b0  52 45 7b 2f 7d 20 69 73  20 64 65 66 69 6e 65 64  |RE{/} is defined|
000388c0  20 69 6e 20 3c 73 74 64  6c 69 62 2e 68 3d 3e 73  | in <stdlib.h=>s|
000388d0  74 64 6c 69 62 3e 20 61  73 20 61 20 76 61 6c 75  |tdlib> as a valu|
000388e0  65 20 77 68 69 63 68 20  6d 61 79 20 62 65 20 70  |e which may be p|
000388f0  61 73 73 65 64 20 74 6f  20 74 68 65 20 3c 65 78  |assed to the <ex|
00038900  69 74 3e 20 66 75 6e 63  74 69 6f 6e 20 74 6f 20  |it> function to |
00038910  69 6e 64 69 63 61 74 65  20 74 68 61 74 20 74 68  |indicate that th|
00038920  65 20 70 72 6f 67 72 61  6d 20 68 61 73 20 62 65  |e program has be|
00038930  65 6e 20 75 6e 73 75 63  63 65 73 73 66 75 6c 2e  |en unsuccessful.|
00038940  20 49 6e 20 45 61 73 79  20 43 20 28 61 6e 64 20  | In Easy C (and |
00038950  65 76 65 72 79 20 6f 74  68 65 72 20 43 20 63 6f  |every other C co|
00038960  6d 70 69 6c 65 72 20 49  20 68 61 76 65 20 75 73  |mpiler I have us|
00038970  65 64 29 20 69 74 20 69  73 20 61 63 74 75 61 6c  |ed) it is actual|
00038980  6c 79 20 64 65 66 69 6e  65 64 20 61 73 20 31 2e  |ly defined as 1.|
00038990  44 41 54 41 0a 01 00 00  45 58 49 54 5f 53 55 43  |DATA....EXIT_SUC|
000389a0  43 45 53 53 0a 54 68 65  20 6d 61 63 72 6f 20 7b  |CESS.The macro {|
000389b0  2f 7d 45 58 49 54 5f 53  55 43 43 45 53 53 7b 2f  |/}EXIT_SUCCESS{/|
000389c0  7d 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |} is defined in |
000389d0  3c 73 74 64 6c 69 62 2e  68 3d 3e 73 74 64 6c 69  |<stdlib.h=>stdli|
000389e0  62 3e 20 61 73 20 61 20  76 61 6c 75 65 20 77 68  |b> as a value wh|
000389f0  69 63 68 20 6d 61 79 20  62 65 20 70 61 73 73 65  |ich may be passe|
00038a00  64 20 74 6f 20 74 68 65  20 3c 65 78 69 74 3e 20  |d to the <exit> |
00038a10  66 75 6e 63 74 69 6f 6e  20 74 6f 20 69 6e 64 69  |function to indi|
00038a20  63 61 74 65 20 74 68 61  74 20 74 68 65 20 70 72  |cate that the pr|
00038a30  6f 67 72 61 6d 20 68 61  73 20 62 65 65 6e 20 73  |ogram has been s|
00038a40  75 63 63 65 73 73 66 75  6c 2e 20 49 6e 20 45 61  |uccessful. In Ea|
00038a50  73 79 20 43 20 28 61 6e  64 20 65 76 65 72 79 20  |sy C (and every |
00038a60  6f 74 68 65 72 20 43 20  63 6f 6d 70 69 6c 65 72  |other C compiler|
00038a70  20 49 20 68 61 76 65 20  75 73 65 64 29 20 69 74  | I have used) it|
00038a80  20 69 73 20 61 63 74 75  61 6c 6c 79 20 64 65 66  | is actually def|
00038a90  69 6e 65 64 20 61 73 20  30 2e 00 00 44 41 54 41  |ined as 0...DATA|
00038aa0  cf 00 00 00 65 78 70 0a  53 79 6e 74 61 78 3a 09  |....exp.Syntax:.|
00038ab0  64 6f 75 62 6c 65 20 65  78 70 20 28 64 6f 75 62  |double exp (doub|
00038ac0  6c 65 20 78 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |le x);.Header:.<|
00038ad0  6d 61 74 68 2e 68 3d 3e  6d 61 74 68 3e 0a 0a 52  |math.h=>math>..R|
00038ae0  65 74 75 72 6e 73 3a 09  54 68 65 20 65 78 70 6f  |eturns:.The expo|
00038af0  6e 65 6e 74 69 61 6c 20  6f 66 20 78 2e 0a 0a 54  |nential of x...T|
00038b00  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 74  |his function ret|
00038b10  75 72 6e 73 20 65 20 74  6f 20 74 68 65 20 70 6f  |urns e to the po|
00038b20  77 65 72 20 6f 66 20 78  2c 20 77 68 65 72 65 20  |wer of x, where |
00038b30  65 20 3d 20 65 78 70 28  31 29 20 3d 20 32 2e 37  |e = exp(1) = 2.7|
00038b40  31 38 32 38 31 38 33 8c  20 2e 20 41 6e 20 65 72  |1828183. . An er|
00038b50  72 6f 72 20 6f 63 63 75  72 73 20 69 66 20 78 20  |ror occurs if x |
00038b60  69 73 20 74 6f 6f 20 62  69 67 2e 00 44 41 54 41  |is too big..DATA|
00038b70  59 00 00 00 45 58 50 4f  52 54 20 3c 6c 61 62 65  |Y...EXPORT <labe|
00038b80  6c 3e 0a 54 68 69 73 20  61 6c 6c 6f 77 73 20 6f  |l>.This allows o|
00038b90  6e 65 20 6f 66 20 79 6f  75 72 20 6c 61 62 65 6c  |ne of your label|
00038ba0  73 20 74 6f 20 62 65 20  3c 49 4d 50 4f 52 54 3e  |s to be <IMPORT>|
00038bb0  65 64 20 69 6e 74 6f 20  61 6e 6f 74 68 65 72 20  |ed into another |
00038bc0  66 69 6c 65 2e 00 00 00  44 49 52 24 e0 06 00 00  |file....DIR$....|
00038bd0  e0 06 00 00 a8 92 03 00  46 ff ff ff b7 5a be 22  |........F....Z."|
00038be0  e8 00 00 00 13 00 00 00  00 00 00 00 66 61 62 73  |............fabs|
00038bf0  00 00 00 00 90 93 03 00  46 ff ff ff ac 8a b3 24  |........F......$|
00038c00  c5 00 00 00 13 00 00 00  00 00 00 00 46 41 4c 53  |............FALS|
00038c10  45 00 00 00 58 94 03 00  46 ff ff ff bf a5 c1 22  |E...X...F......"|
00038c20  8a 01 00 00 13 00 00 00  00 00 00 00 66 63 6c 6f  |............fclo|
00038c30  73 65 00 00 e4 95 03 00  46 ff ff ff 68 51 c4 22  |se......F...hQ."|
00038c40  c3 00 00 00 13 00 00 00  00 00 00 00 66 65 6f 66  |............feof|
00038c50  00 00 00 00 a8 96 03 00  46 ff ff ff 23 55 c4 22  |........F...#U."|
00038c60  ad 00 00 00 13 00 00 00  00 00 00 00 66 65 72 72  |............ferr|
00038c70  6f 72 00 00 58 97 03 00  46 ff ff ff f6 a0 c1 22  |or..X...F......"|
00038c80  67 01 00 00 13 00 00 00  00 00 00 00 66 66 6c 75  |g...........fflu|
00038c90  73 68 00 00 c0 98 03 00  46 ff ff ff fb 62 c2 22  |sh......F....b."|
00038ca0  e6 00 00 00 13 00 00 00  00 00 00 00 66 67 65 74  |............fget|
00038cb0  63 00 00 00 a8 99 03 00  46 ff ff ff 1b 0f c2 22  |c.......F......"|
00038cc0  5a 01 00 00 13 00 00 00  00 00 00 00 66 67 65 74  |Z...........fget|
00038cd0  70 6f 73 00 04 9b 03 00  46 ff ff ff 58 71 c2 22  |pos.....F...Xq."|
00038ce0  f1 01 00 00 13 00 00 00  00 00 00 00 66 67 65 74  |............fget|
00038cf0  73 00 00 00 f8 9c 03 00  46 ff ff ff 39 b5 c4 22  |s.......F...9.."|
00038d00  23 01 00 00 13 00 00 00  00 00 00 00 46 49 4c 45  |#...........FILE|
00038d10  00 00 00 00 1c 9e 03 00  46 fd ff ff 1c 86 84 2f  |........F....../|
00038d20  04 04 00 00 13 01 00 00  00 00 00 00 66 69 6c 65  |............file|
00038d30  5f 00 00 00 ac cc 03 00  46 fd ff ff 6f 88 84 2f  |_.......F...o../|
00038d40  2c 00 00 00 13 01 00 00  00 00 00 00 66 69 6c 65  |,...........file|
00038d50  68 6e 64 5f 00 00 00 00  bc cd 03 00 46 ff ff ff  |hnd_........F...|
00038d60  e9 f4 47 23 31 01 00 00  13 00 00 00 00 00 00 00  |..G#1...........|
00038d70  66 69 6c 65 69 63 6f 6e  00 00 00 00 f0 ce 03 00  |fileicon........|
00038d80  46 fd ff ff ad 88 84 2f  28 00 00 00 13 01 00 00  |F....../(.......|
00038d90  00 00 00 00 46 69 6c 65  49 63 6f 6e 5f 00 00 00  |....FileIcon_...|
00038da0  58 d0 03 00 46 fd ff ff  d4 88 84 2f 28 00 00 00  |X...F....../(...|
00038db0  13 01 00 00 00 00 00 00  46 49 4c 45 4e 41 4d 45  |........FILENAME|
00038dc0  5f 00 00 00 a0 d1 03 00  46 fd ff ff f9 88 84 2f  |_.......F....../|
00038dd0  2c 00 00 00 13 01 00 00  00 00 00 00 66 69 6c 65  |,...........file|
00038de0  6f 70 5f 00 60 d2 03 00  46 fd ff ff 1d 89 84 2f  |op_.`...F....../|
00038df0  2c 00 00 00 13 01 00 00  00 00 00 00 46 69 6c 65  |,...........File|
00038e00  72 41 63 74 69 6f 6e 5f  00 00 00 00 dc d2 03 00  |rAction_........|
00038e10  46 ff ff ff 5e e7 27 25  09 01 00 00 13 00 00 00  |F...^.'%........|
00038e20  00 00 00 00 46 49 4c 45  54 59 50 45 00 00 00 00  |....FILETYPE....|
00038e30  e8 d3 03 00 46 fd ff ff  4d 89 84 2f 2c 00 00 00  |....F...M../,...|
00038e40  13 01 00 00 00 00 00 00  66 69 6c 65 74 79 70 65  |........filetype|
00038e50  5f 00 00 00 38 d9 03 00  46 ff ff ff f8 e0 28 25  |_...8...F.....(%|
00038e60  45 01 00 00 13 00 00 00  00 00 00 00 46 69 6c 74  |E...........Filt|
00038e70  65 72 00 00 80 da 03 00  46 fd ff ff 8f 89 84 2f  |er......F....../|
00038e80  e0 00 00 00 13 01 00 00  00 00 00 00 46 69 6c 74  |............Filt|
00038e90  65 72 5f 00 24 e1 03 00  46 ff ff ff d5 1a 48 23  |er_.$...F.....H#|
00038ea0  70 01 00 00 13 00 00 00  00 00 00 00 66 6c 65 78  |p...........flex|
00038eb0  00 00 00 00 94 e2 03 00  46 fd ff ff 20 8a 84 2f  |........F... ../|
00038ec0  30 01 00 00 13 01 00 00  00 00 00 00 66 6c 65 78  |0...........flex|
00038ed0  5f 00 00 00 14 ed 03 00  46 ff ff ff 3c 92 bb 22  |_.......F...<.."|
00038ee0  27 02 00 00 13 00 00 00  00 00 00 00 66 6c 6f 61  |'...........floa|
00038ef0  74 00 00 00 3c ef 03 00  46 ff ff ff 6f 78 be 22  |t...<...F...ox."|
00038f00  a7 01 00 00 13 00 00 00  00 00 00 00 66 6c 6f 6f  |............floo|
00038f10  72 00 00 00 e4 f0 03 00  46 fd ff ff fb 8a 84 2f  |r.......F....../|
00038f20  6c 01 00 00 13 01 00 00  00 00 00 00 46 4c 54 5f  |l...........FLT_|
00038f30  00 00 00 00 1c f7 03 00  46 ff ff ff 2a 7f be 22  |........F...*.."|
00038f40  2b 01 00 00 13 00 00 00  00 00 00 00 66 6d 6f 64  |+...........fmod|
00038f50  00 00 00 00 48 f8 03 00  46 ff ff ff f6 2a 29 25  |....H...F....*)%|
00038f60  f5 02 00 00 13 00 00 00  00 00 00 00 46 6f 6e 74  |............Font|
00038f70  00 00 00 00 40 fb 03 00  46 fd ff ff 08 8c 84 2f  |....@...F....../|
00038f80  40 08 00 00 13 01 00 00  00 00 00 00 66 6f 6e 74  |@...........font|
00038f90  5f 00 00 00 10 5b 04 00  46 ff ff ff b4 7e ab 24  |_....[..F....~.$|
00038fa0  11 01 00 00 13 00 00 00  00 00 00 00 66 6f 6e 74  |............font|
00038fb0  6c 69 73 74 00 00 00 00  24 5c 04 00 46 fd ff ff  |list....$\..F...|
00038fc0  c4 90 84 2f 9c 00 00 00  13 01 00 00 00 00 00 00  |.../............|
00038fd0  66 6f 6e 74 6c 69 73 74  5f 00 00 00 50 6d 04 00  |fontlist_...Pm..|
00038fe0  46 ff ff ff 55 b1 27 23  20 01 00 00 13 00 00 00  |F...U.'# .......|
00038ff0  00 00 00 00 66 6f 6e 74  72 65 63 00 70 6e 04 00  |....fontrec.pn..|
00039000  46 ff ff ff ce 1b ad 24  a5 01 00 00 13 00 00 00  |F......$........|
00039010  00 00 00 00 66 6f 6e 74  73 65 6c 65 63 74 00 00  |....fontselect..|
00039020  18 70 04 00 46 fd ff ff  5f 91 84 2f 40 01 00 00  |.p..F..._../@...|
00039030  13 01 00 00 00 00 00 00  66 6f 6e 74 73 65 6c 65  |........fontsele|
00039040  63 74 5f 00 94 79 04 00  46 ff ff ff 8d ae c1 22  |ct_..y..F......"|
00039050  23 01 00 00 13 00 00 00  00 00 00 00 66 6f 70 65  |#...........fope|
00039060  6e 00 00 00 b8 7a 04 00  46 fd ff ff 27 92 84 2f  |n....z..F...'../|
00039070  28 00 00 00 13 01 00 00  00 00 00 00 46 4f 50 45  |(...........FOPE|
00039080  4e 5f 00 00 d8 7b 04 00  46 ff ff ff 77 2e e4 22  |N_...{..F...w.."|
00039090  29 04 00 00 13 00 00 00  00 00 00 00 66 6f 72 00  |)...........for.|
000390a0  04 80 04 00 46 fd ff ff  60 92 84 2f 2c 00 00 00  |....F...`../,...|
000390b0  13 01 00 00 00 00 00 00  66 6f 72 6d 69 6f 5f 00  |........formio_.|
000390c0  1c 81 04 00 46 fd ff ff  83 92 84 2f 28 00 00 00  |....F....../(...|
000390d0  13 01 00 00 00 00 00 00  66 70 6f 73 5f 00 00 00  |........fpos_...|
000390e0  e4 81 04 00 46 ff ff ff  fa b6 27 25 7d 01 00 00  |....F.....'%}...|
000390f0  13 00 00 00 00 00 00 00  66 70 72 69 6e 74 66 00  |........fprintf.|
00039100  64 83 04 00 46 ff ff ff  58 7a c2 22 c1 00 00 00  |d...F...Xz."....|
00039110  13 00 00 00 00 00 00 00  66 70 75 74 63 00 00 00  |........fputc...|
00039120  28 84 04 00 46 ff ff ff  36 80 c2 22 ed 00 00 00  |(...F...6.."....|
00039130  13 00 00 00 00 00 00 00  66 70 75 74 73 00 00 00  |........fputs...|
00039140  18 85 04 00 46 ff ff ff  cf 36 c4 22 33 01 00 00  |....F....6."3...|
00039150  13 00 00 00 00 00 00 00  66 72 65 61 64 00 00 00  |........fread...|
00039160  4c 86 04 00 46 ff ff ff  6a 0a dd 22 db 00 00 00  |L...F...j.."....|
00039170  13 00 00 00 00 00 00 00  66 72 65 65 00 00 00 00  |........free....|
00039180  28 87 04 00 46 ff ff ff  de e3 56 26 7e 01 00 00  |(...F.....V&~...|
00039190  13 00 00 00 00 00 00 00  46 72 65 65 44 62 75 67  |........FreeDbug|
000391a0  00 00 00 00 a8 88 04 00  46 ff ff ff 0c a4 b0 24  |........F......$|
000391b0  19 01 00 00 13 00 00 00  00 00 00 00 66 72 65 65  |............free|
000391c0  70 72 6f 63 00 00 00 00  c4 89 04 00 46 ff ff ff  |proc........F...|
000391d0  02 bc c1 22 ad 01 00 00  13 00 00 00 00 00 00 00  |..."............|
000391e0  66 72 65 6f 70 65 6e 00  74 8b 04 00 46 ff ff ff  |freopen.t...F...|
000391f0  03 fb bd 22 46 01 00 00  13 00 00 00 00 00 00 00  |..."F...........|
00039200  66 72 65 78 70 00 00 00  bc 8c 04 00 46 ff ff ff  |frexp.......F...|
00039210  15 06 c4 22 c1 01 00 00  13 00 00 00 00 00 00 00  |..."............|
00039220  66 73 63 61 6e 66 00 00  80 8e 04 00 46 ff ff ff  |fscanf......F...|
00039230  ad 2d c2 22 06 02 00 00  13 00 00 00 00 00 00 00  |.-."............|
00039240  66 73 65 65 6b 00 00 00  88 90 04 00 46 ff ff ff  |fseek.......F...|
00039250  3f 19 c2 22 64 01 00 00  13 00 00 00 00 00 00 00  |?.."d...........|
00039260  66 73 65 74 70 6f 73 00  ec 91 04 00 46 ff ff ff  |fsetpos.....F...|
00039270  eb 47 c2 22 97 01 00 00  13 00 00 00 00 00 00 00  |.G."............|
00039280  66 74 65 6c 6c 00 00 00  96 da 0c 00 46 ff ff ff  |ftell.......F...|
00039290  a3 06 2f 31 2a 01 00 00  13 00 00 00 00 00 00 00  |../1*...........|
000392a0  66 77 72 69 74 65 00 00  44 41 54 41 e8 00 00 00  |fwrite..DATA....|
000392b0  66 61 62 73 0a 53 79 6e  74 61 78 3a 09 64 6f 75  |fabs.Syntax:.dou|
000392c0  62 6c 65 20 66 61 62 73  20 28 64 6f 75 62 6c 65  |ble fabs (double|
000392d0  20 78 29 3b 0a 48 65 61  64 65 72 3a 09 3c 6d 61  | x);.Header:.<ma|
000392e0  74 68 2e 68 3d 3e 6d 61  74 68 3e 0a 0a 52 65 74  |th.h=>math>..Ret|
000392f0  75 72 6e 73 3a 09 54 68  65 20 61 62 73 6f 6c 75  |urns:.The absolu|
00039300  74 65 20 76 61 6c 75 65  20 6f 66 20 78 2e 0a 0a  |te value of x...|
00039310  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 72 65  |This function re|
00039320  74 75 72 6e 73 20 74 68  65 20 61 62 73 6f 6c 75  |turns the absolu|
00039330  74 65 20 76 61 6c 75 65  20 6f 66 20 78 20 69 65  |te value of x ie|
00039340  20 74 68 65 20 6d 61 67  6e 69 74 75 64 65 20 6f  | the magnitude o|
00039350  66 20 78 2e 20 54 68 69  73 20 69 73 20 61 6c 77  |f x. This is alw|
00039360  61 79 73 20 70 6f 73 69  74 69 76 65 2c 20 73 6f  |ays positive, so|
00039370  20 69 66 20 78 20 3d 20  2d 35 2e 33 20 74 68 65  | if x = -5.3 the|
00039380  6e 20 66 61 62 73 28 78  29 20 3d 20 35 2e 33 2e  |n fabs(x) = 5.3.|
00039390  44 41 54 41 c5 00 00 00  46 41 4c 53 45 0a 54 68  |DATA....FALSE.Th|
000393a0  65 20 6d 61 63 72 6f 20  46 41 4c 53 45 20 69 73  |e macro FALSE is|
000393b0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 44 65 73  | defined in <Des|
000393c0  6b 4c 69 62 3a 43 6f 72  65 2e 68 3d 3e 43 6f 72  |kLib:Core.h=>Cor|
000393d0  65 3e 20 3c 54 69 6d 73  4c 69 62 3a 43 6f 72 65  |e> <TimsLib:Core|
000393e0  2e 68 3d 3e 43 6f 72 65  5f 54 4c 3e 20 61 6e 64  |.h=>Core_TL> and|
000393f0  20 3c 6f 73 2e 68 3d 3e  6f 73 3e 20 28 45 61 73  | <os.h=>os> (Eas|
00039400  79 20 43 29 20 61 73 20  61 20 76 61 6c 75 65 20  |y C) as a value |
00039410  72 65 70 72 65 73 65 6e  74 69 6e 67 20 74 68 65  |representing the|
00039420  20 6c 6f 67 69 63 61 6c  20 73 74 61 74 65 20 6f  | logical state o|
00039430  66 20 46 61 6c 73 65 2e  20 49 74 20 69 73 20 61  |f False. It is a|
00039440  63 74 75 61 6c 6c 79 20  64 65 66 69 6e 65 64 20  |ctually defined |
00039450  61 73 20 30 2e 00 00 00  44 41 54 41 8a 01 00 00  |as 0....DATA....|
00039460  66 63 6c 6f 73 65 0a 53  79 6e 74 61 78 3a 09 69  |fclose.Syntax:.i|
00039470  6e 74 20 66 63 6c 6f 73  65 20 28 3c 46 49 4c 45  |nt fclose (<FILE|
00039480  3e 20 2a 73 74 72 65 61  6d 29 3b 0a 48 65 61 64  |> *stream);.Head|
00039490  65 72 3a 09 3c 73 74 64  69 6f 2e 68 3d 3e 73 74  |er:.<stdio.h=>st|
000394a0  64 69 6f 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 5a  |dio>..Returns:.Z|
000394b0  65 72 6f 20 69 66 20 74  68 65 20 66 69 6c 65 20  |ero if the file |
000394c0  69 73 20 63 6c 6f 73 65  64 2c 20 3c 45 4f 46 3e  |is closed, <EOF>|
000394d0  20 69 66 20 69 74 20 69  73 20 6e 6f 74 2e 0a 0a  | if it is not...|
000394e0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 63 6c  |This function cl|
000394f0  6f 73 65 73 20 74 68 65  20 66 69 6c 65 20 73 74  |oses the file st|
00039500  72 65 61 6d 20 70 6f 69  6e 74 65 64 20 74 6f 20  |ream pointed to |
00039510  62 79 20 2f 73 74 72 65  61 6d 2f 2e 20 54 68 65  |by /stream/. The|
00039520  20 73 74 72 65 61 6d 20  69 73 20 6e 6f 77 20 69  | stream is now i|
00039530  6e 76 61 6c 69 64 2e 20  41 6e 79 20 64 61 74 61  |nvalid. Any data|
00039540  20 63 75 72 72 65 6e 74  6c 79 20 62 75 66 66 65  | currently buffe|
00039550  72 65 64 20 74 6f 20 62  65 20 77 72 69 74 74 65  |red to be writte|
00039560  6e 20 6f 75 74 20 77 69  6c 6c 20 62 65 20 77 72  |n out will be wr|
00039570  69 74 74 65 6e 20 6f 75  74 20 62 65 66 6f 72 65  |itten out before|
00039580  20 63 6c 6f 73 75 72 65  2e 20 49 66 20 74 68 65  | closure. If the|
00039590  20 62 75 66 66 65 72 20  77 61 73 20 61 6c 6c 6f  | buffer was allo|
000395a0  63 61 74 65 64 20 61 75  74 6f 6d 61 74 69 63 61  |cated automatica|
000395b0  6c 6c 79 20 28 74 68 65  20 75 73 75 61 6c 20 63  |lly (the usual c|
000395c0  61 73 65 29 2c 20 74 68  65 20 6d 65 6d 6f 72 79  |ase), the memory|
000395d0  20 77 69 6c 6c 20 62 65  20 72 65 6c 65 61 73 65  | will be release|
000395e0  64 2e 00 00 44 41 54 41  c3 00 00 00 66 65 6f 66  |d...DATA....feof|
000395f0  0a 53 79 6e 74 61 78 3a  09 69 6e 74 20 66 65 6f  |.Syntax:.int feo|
00039600  66 20 28 46 49 4c 45 20  2a 73 74 72 65 61 6d 29  |f (FILE *stream)|
00039610  3b 0a 48 65 61 64 65 72  3a 09 3c 73 74 64 69 6f  |;.Header:.<stdio|
00039620  2e 68 3d 3e 73 74 64 69  6f 3e 0a 0a 52 65 74 75  |.h=>stdio>..Retu|
00039630  72 6e 73 3a 09 5a 65 72  6f 20 69 66 20 6e 6f 74  |rns:.Zero if not|
00039640  20 61 74 20 65 6e 64 2d  6f 66 2d 66 69 6c 65 2e  | at end-of-file.|
00039650  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 73  |..This functions|
00039660  20 74 65 73 74 73 20 74  6f 20 73 65 65 20 69 66  | tests to see if|
00039670  20 74 68 65 20 65 6e 64  20 6f 66 20 74 68 65 20  | the end of the |
00039680  73 70 65 63 69 66 69 65  64 20 66 69 6c 65 20 73  |specified file s|
00039690  74 72 65 61 6d 20 68 61  73 20 62 65 65 6e 20 72  |tream has been r|
000396a0  65 61 63 68 65 64 2e 00  44 41 54 41 ad 00 00 00  |eached..DATA....|
000396b0  66 65 72 72 6f 72 0a 53  79 6e 74 61 78 3a 09 69  |ferror.Syntax:.i|
000396c0  6e 74 20 66 65 72 72 6f  72 20 28 46 49 4c 45 20  |nt ferror (FILE |
000396d0  2a 73 74 72 65 61 6d 29  3b 0a 48 65 61 64 65 72  |*stream);.Header|
000396e0  3a 09 3c 73 74 64 69 6f  2e 68 3d 3e 73 74 64 69  |:.<stdio.h=>stdi|
000396f0  6f 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 5a 65 72  |o>..Returns:.Zer|
00039700  6f 20 69 66 20 74 68 65  72 65 20 69 73 20 6e 6f  |o if there is no|
00039710  20 65 72 72 6f 72 2e 0a  0a 54 68 69 73 20 66 75  | error...This fu|
00039720  6e 63 74 69 6f 6e 20 74  65 73 74 73 20 74 68 65  |nction tests the|
00039730  20 65 72 72 6f 72 20 66  6c 61 67 20 66 6f 72 20  | error flag for |
00039740  74 68 65 20 73 70 65 63  69 66 69 65 64 20 73 74  |the specified st|
00039750  72 65 61 6d 2e 00 00 00  44 41 54 41 67 01 00 00  |ream....DATAg...|
00039760  66 66 6c 75 73 68 0a 53  79 6e 74 61 78 3a 09 69  |fflush.Syntax:.i|
00039770  6e 74 20 66 66 6c 75 73  68 20 28 3c 46 49 4c 45  |nt fflush (<FILE|
00039780  3e 20 2a 73 74 72 65 61  6d 29 3b 0a 48 65 61 64  |> *stream);.Head|
00039790  65 72 3a 09 3c 73 74 64  69 6f 2e 68 3d 3e 73 74  |er:.<stdio.h=>st|
000397a0  64 69 6f 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 3c  |dio>..Returns:.<|
000397b0  45 4f 46 3e 20 69 66 20  61 6e 79 20 64 61 74 61  |EOF> if any data|
000397c0  20 69 73 20 77 72 69 74  74 65 6e 20 6f 75 74 2c  | is written out,|
000397d0  20 6f 72 20 7a 65 72 6f  20 69 66 20 6e 6f 74 2e  | or zero if not.|
000397e0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000397f0  63 61 75 73 65 73 20 61  6e 79 20 62 75 66 66 65  |causes any buffe|
00039800  72 65 64 20 6f 75 74 70  75 74 20 64 61 74 61 20  |red output data |
00039810  74 6f 20 62 65 20 77 72  69 74 74 65 6e 20 74 6f  |to be written to|
00039820  20 74 68 65 20 66 69 6c  65 20 70 6f 69 6e 74 65  | the file pointe|
00039830  64 20 74 6f 20 62 79 20  2f 73 74 72 65 61 6d 2f  |d to by /stream/|
00039840  2c 20 62 75 74 20 6f 6e  6c 79 20 69 66 20 74 68  |, but only if th|
00039850  65 20 6c 61 73 74 20 6f  70 65 72 61 74 69 6f 6e  |e last operation|
00039860  20 6f 6e 20 74 68 65 20  66 69 6c 65 20 77 61 73  | on the file was|
00039870  20 6e 6f 74 20 69 6e 70  75 74 2e 20 49 66 20 2f  | not input. If /|
00039880  73 74 72 65 61 6d 2f 20  69 73 20 61 20 6e 75 6c  |stream/ is a nul|
00039890  6c 20 70 6f 69 6e 74 65  72 2c 20 66 6c 75 73 68  |l pointer, flush|
000398a0  69 6e 67 20 6f 63 63 75  72 73 20 6f 6e 20 61 6c  |ing occurs on al|
000398b0  6c 20 6f 70 65 6e 20 73  74 72 65 61 6d 73 2e 00  |l open streams..|
000398c0  44 41 54 41 e6 00 00 00  66 67 65 74 63 0a 53 79  |DATA....fgetc.Sy|
000398d0  6e 74 61 78 3a 09 69 6e  74 20 66 67 65 74 63 20  |ntax:.int fgetc |
000398e0  28 3c 46 49 4c 45 3e 20  2a 73 74 72 65 61 6d 29  |(<FILE> *stream)|
000398f0  3b 0a 48 65 61 64 65 72  3a 09 3c 73 74 64 69 6f  |;.Header:.<stdio|
00039900  2e 68 3d 3e 73 74 64 69  6f 3e 0a 0a 52 65 74 75  |.h=>stdio>..Retu|
00039910  72 6e 73 3a 09 43 68 61  72 61 63 74 65 72 20 72  |rns:.Character r|
00039920  65 61 64 2c 20 6f 72 20  3c 45 4f 46 3e 20 66 6f  |ead, or <EOF> fo|
00039930  72 20 61 6e 20 65 72 72  6f 72 2e 0a 0a 54 68 69  |r an error...Thi|
00039940  73 20 66 75 6e 63 74 69  6f 6e 20 72 65 61 64 73  |s function reads|
00039950  20 61 20 73 69 6e 67 6c  65 20 63 68 61 72 61 63  | a single charac|
00039960  74 65 72 20 66 72 6f 6d  20 74 68 65 20 73 74 72  |ter from the str|
00039970  65 61 6d 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |eam pointed to b|
00039980  79 20 2f 73 74 72 65 61  6d 2f 20 61 6e 64 20 72  |y /stream/ and r|
00039990  65 74 75 72 6e 73 20 69  74 20 61 73 20 61 6e 20  |eturns it as an |
000399a0  2f 69 6e 74 2f 2e 00 00  44 41 54 41 5a 01 00 00  |/int/...DATAZ...|
000399b0  66 67 65 74 70 6f 73 0a  53 79 6e 74 61 78 3a 09  |fgetpos.Syntax:.|
000399c0  69 6e 74 20 66 67 65 74  70 6f 73 20 28 3c 46 49  |int fgetpos (<FI|
000399d0  4c 45 3e 20 2a 73 74 72  65 61 6d 2c 20 3c 66 70  |LE> *stream, <fp|
000399e0  6f 73 5f 74 3e 20 2a 70  6f 73 29 3b 0a 48 65 61  |os_t> *pos);.Hea|
000399f0  64 65 72 3a 09 3c 73 74  64 69 6f 2e 68 3d 3e 73  |der:.<stdio.h=>s|
00039a00  74 64 69 6f 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |tdio>..Returns:.|
00039a10  5a 65 72 6f 20 69 66 20  73 75 63 63 65 73 73 66  |Zero if successf|
00039a20  75 6c 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ul...This functi|
00039a30  6f 6e 20 73 74 6f 72 65  73 20 74 68 65 20 66 69  |on stores the fi|
00039a40  6c 65 20 70 6f 69 6e 74  65 72 2c 20 66 6f 72 20  |le pointer, for |
00039a50  74 68 65 20 66 69 6c 65  20 70 6f 69 6e 74 65 64  |the file pointed|
00039a60  20 74 6f 20 62 79 20 2f  73 74 72 65 61 6d 2f 2c  | to by /stream/,|
00039a70  20 69 6e 20 2f 70 6f 73  2f 2e 20 54 68 65 20 76  | in /pos/. The v|
00039a80  61 6c 75 65 20 73 74 6f  72 65 64 20 69 73 20 6e  |alue stored is n|
00039a90  6f 74 20 69 6e 20 61 6e  79 20 73 70 65 63 69 66  |ot in any specif|
00039aa0  69 63 20 66 6f 72 6d 61  74 20 28 73 6f 20 64 6f  |ic format (so do|
00039ab0  6e 27 74 20 74 72 79 20  74 6f 20 75 73 65 20 69  |n't try to use i|
00039ac0  74 2c 20 66 6f 6c 6b 73  21 29 2e 20 49 66 20 74  |t, folks!). If t|
00039ad0  68 65 72 65 20 69 73 20  61 6e 20 65 72 72 6f 72  |here is an error|
00039ae0  2c 20 74 68 65 20 72 65  61 73 6f 6e 20 69 73 20  |, the reason is |
00039af0  73 74 6f 72 65 64 20 69  6e 20 3c 65 72 72 6e 6f  |stored in <errno|
00039b00  3e 2e 00 00 44 41 54 41  f1 01 00 00 66 67 65 74  |>...DATA....fget|
00039b10  73 0a 53 79 6e 74 61 78  3a 09 63 68 61 72 20 2a  |s.Syntax:.char *|
00039b20  66 67 65 74 73 20 28 63  68 61 72 20 2a 73 74 72  |fgets (char *str|
00039b30  2c 20 69 6e 74 20 6e 2c  20 3c 46 49 4c 45 3e 20  |, int n, <FILE> |
00039b40  2a 73 74 72 65 61 6d 29  3b 0a 48 65 61 64 65 72  |*stream);.Header|
00039b50  3a 09 3c 73 74 64 69 6f  2e 68 3d 3e 73 74 64 69  |:.<stdio.h=>stdi|
00039b60  6f 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |o>..Returns:.Poi|
00039b70  6e 74 65 72 20 74 6f 20  73 74 72 69 6e 67 20 72  |nter to string r|
00039b80  65 61 64 2c 20 6f 72 20  61 20 6e 75 6c 6c 20 70  |ead, or a null p|
00039b90  6f 69 6e 74 65 72 20 69  66 20 74 68 65 72 65 20  |ointer if there |
00039ba0  69 73 20 61 6e 20 65 72  72 6f 72 2e 0a 0a 54 68  |is an error...Th|
00039bb0  69 73 20 66 75 6e 63 74  69 6f 6e 20 72 65 61 64  |is function read|
00039bc0  73 20 61 20 73 74 72 69  6e 67 20 6f 66 20 63 68  |s a string of ch|
00039bd0  61 72 61 63 74 65 72 73  20 66 72 6f 6d 20 74 68  |aracters from th|
00039be0  65 20 73 74 72 65 61 6d  20 69 6e 74 6f 20 74 68  |e stream into th|
00039bf0  65 20 63 68 61 72 61 63  74 65 72 20 61 72 72 61  |e character arra|
00039c00  79 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 79 20  |y pointed to by |
00039c10  2f 73 74 72 2f 2e 20 41  20 6d 61 78 69 6d 75 6d  |/str/. A maximum|
00039c20  20 6f 66 20 28 6e 2d 31  29 20 63 68 61 72 61 63  | of (n-1) charac|
00039c30  74 65 72 73 20 77 69 6c  6c 20 62 65 20 72 65 61  |ters will be rea|
00039c40  64 20 61 6e 64 20 69 6e  20 61 6e 79 20 63 61 73  |d and in any cas|
00039c50  65 20 72 65 61 64 69 6e  67 20 77 69 6c 6c 20 74  |e reading will t|
00039c60  65 72 6d 69 6e 61 74 65  20 61 74 20 61 20 6e 65  |erminate at a ne|
00039c70  77 6c 69 6e 65 20 63 68  61 72 61 63 74 65 72 20  |wline character |
00039c80  6f 72 20 65 6e 64 2d 6f  66 2d 66 69 6c 65 2e 0a  |or end-of-file..|
00039c90  0a 49 66 20 74 68 65 72  65 20 69 73 20 61 6e 20  |.If there is an |
00039ca0  65 72 72 6f 72 2c 20 61  20 6e 75 6c 6c 20 70 6f  |error, a null po|
00039cb0  69 6e 74 65 72 20 77 69  6c 6c 20 62 65 20 72 65  |inter will be re|
00039cc0  74 75 72 6e 65 64 20 62  75 74 20 74 68 65 20 61  |turned but the a|
00039cd0  72 72 61 79 20 63 6f 6e  74 65 6e 74 73 20 6d 61  |rray contents ma|
00039ce0  79 20 73 74 69 6c 6c 20  68 61 76 65 20 63 68 61  |y still have cha|
00039cf0  6e 67 65 64 2e 00 00 00  44 41 54 41 23 01 00 00  |nged....DATA#...|
00039d00  46 49 4c 45 0a 54 68 65  20 74 79 70 65 20 7b 2f  |FILE.The type {/|
00039d10  7d 46 49 4c 45 7b 2f 7d  20 69 73 20 64 65 66 69  |}FILE{/} is defi|
00039d20  6e 65 64 20 69 6e 20 3c  73 74 64 69 6f 2e 68 3d  |ned in <stdio.h=|
00039d30  3e 73 74 64 69 6f 3e 20  61 73 20 61 6e 20 6f 62  |>stdio> as an ob|
00039d40  6a 65 63 74 20 68 6f 6c  64 69 6e 67 20 61 6c 6c  |ject holding all|
00039d50  20 6e 65 63 65 73 73 61  72 79 20 69 6e 66 6f 72  | necessary infor|
00039d60  6d 61 74 69 6f 6e 20 61  62 6f 75 74 20 61 6e 20  |mation about an |
00039d70  6f 70 65 6e 20 66 69 6c  65 2e 20 49 6e 20 45 61  |open file. In Ea|
00039d80  73 79 20 43 20 69 74 20  69 73 20 64 65 66 69 6e  |sy C it is defin|
00039d90  65 64 20 61 73 20 74 68  65 20 66 6f 6c 6c 6f 77  |ed as the follow|
00039da0  69 6e 67 20 73 74 72 75  63 74 75 72 65 3a 0a 0a  |ing structure:..|
00039db0  5c 7b 0a 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |\{.    unsigned |
00039dc0  63 68 61 72 20 2a 5f 70  74 72 3b 0a 20 20 20 20  |char *_ptr;.    |
00039dd0  69 6e 74 20 5f 69 63 6e  74 3b 0a 20 20 20 20 69  |int _icnt;.    i|
00039de0  6e 74 20 5f 6f 63 6e 74  3b 0a 20 20 20 20 69 6e  |nt _ocnt;.    in|
00039df0  74 20 5f 66 6c 61 67 3b  0a 20 20 20 20 69 6e 74  |t _flag;.    int|
00039e00  20 3a 33 32 2c 3a 33 32  2c 3a 33 32 2c 3a 33 32  | :32,:32,:32,:32|
00039e10  2c 3a 33 32 2c 3a 33 32  3b 0a 7d 00 44 49 52 24  |,:32,:32;.}.DIR$|
00039e20  04 04 00 00 04 04 00 00  20 a2 03 00 46 ff ff ff  |........ ...F...|
00039e30  ff f6 25 25 5e 01 00 00  13 00 00 00 00 00 00 00  |..%%^...........|
00039e40  61 63 63 65 73 73 00 00  80 a3 03 00 46 ff ff ff  |access......F...|
00039e50  ed 12 26 25 49 01 00 00  13 00 00 00 00 00 00 00  |..&%I...........|
00039e60  43 6c 6f 73 65 00 00 00  cc a4 03 00 46 ff ff ff  |Close.......F...|
00039e70  41 b4 25 25 61 01 00 00  13 00 00 00 00 00 00 00  |A.%%a...........|
00039e80  44 65 6c 65 74 65 00 00  30 a6 03 00 46 ff ff ff  |Delete..0...F...|
00039e90  da 18 26 25 d8 00 00 00  13 00 00 00 00 00 00 00  |..&%............|
00039ea0  45 4f 46 00 08 a7 03 00  46 ff ff ff ef c2 25 25  |EOF.....F.....%%|
00039eb0  01 01 00 00 13 00 00 00  00 00 00 00 45 78 69 73  |............Exis|
00039ec0  74 73 00 00 0c a8 03 00  46 ff ff ff 5d b9 26 25  |ts......F...].&%|
00039ed0  80 01 00 00 13 00 00 00  00 00 00 00 47 65 74 4c  |............GetL|
00039ee0  65 6e 67 74 68 00 00 00  8c a9 03 00 46 ff ff ff  |ength.......F...|
00039ef0  d2 a8 26 25 f7 00 00 00  13 00 00 00 00 00 00 00  |..&%............|
00039f00  47 65 74 54 79 70 65 00  84 aa 03 00 46 fd ff ff  |GetType.....F...|
00039f10  b3 8f 27 25 6b 03 00 00  13 00 00 00 00 00 00 00  |..'%k...........|
00039f20  68 00 00 00 f0 ad 03 00  46 ff ff ff de ca 25 25  |h.......F.....%%|
00039f30  87 00 00 00 13 00 00 00  00 00 00 00 68 61 6e 64  |............hand|
00039f40  6c 65 00 00 78 ae 03 00  46 ff ff ff c9 33 27 25  |le..x...F....3'%|
00039f50  b6 00 00 00 13 00 00 00  00 00 00 00 49 73 44 69  |............IsDi|
00039f60  72 65 63 74 6f 72 79 00  30 af 03 00 46 ff ff ff  |rectory.0...F...|
00039f70  3a 9d 25 25 77 01 00 00  13 00 00 00 00 00 00 00  |:.%%w...........|
00039f80  6c 61 73 74 65 72 72 6f  72 00 00 00 a8 b0 03 00  |lasterror.......|
00039f90  46 ff ff ff 37 46 27 25  54 01 00 00 13 00 00 00  |F...7F'%T.......|
00039fa0  00 00 00 00 4c 6f 61 64  54 6f 00 00 fc b1 03 00  |....LoadTo......|
00039fb0  46 fd ff ff 70 37 c1 22  dd 03 00 00 13 00 00 00  |F...p7."........|
00039fc0  00 00 00 00 6d 6f 64 65  5f 00 00 00 dc b5 03 00  |....mode_.......|
00039fd0  46 ff ff ff dd 05 26 25  71 01 00 00 13 00 00 00  |F.....&%q.......|
00039fe0  00 00 00 00 4f 70 65 6e  00 00 00 00 50 b7 03 00  |....Open....P...|
00039ff0  46 ff ff ff c7 c7 25 25  8d 00 00 00 13 00 00 00  |F.....%%........|
0003a000  00 00 00 00 70 6f 73 69  74 69 6f 6e 00 00 00 00  |....position....|
0003a010  e0 b7 03 00 46 ff ff ff  b9 67 26 25 d0 01 00 00  |....F....g&%....|
0003a020  13 00 00 00 00 00 00 00  52 65 61 64 33 32 00 00  |........Read32..|
0003a030  b0 b9 03 00 46 ff ff ff  b6 7d 26 25 36 01 00 00  |....F....}&%6...|
0003a040  13 00 00 00 00 00 00 00  52 65 61 64 33 32 52 00  |........Read32R.|
0003a050  e8 ba 03 00 46 ff ff ff  70 50 26 25 99 01 00 00  |....F...pP&%....|
0003a060  13 00 00 00 00 00 00 00  52 65 61 64 38 00 00 00  |........Read8...|
0003a070  84 bc 03 00 46 ff ff ff  4a 36 26 25 3c 01 00 00  |....F...J6&%<...|
0003a080  13 00 00 00 00 00 00 00  52 65 61 64 42 79 74 65  |........ReadByte|
0003a090  73 00 00 00 c0 bd 03 00  46 ff ff ff 73 e5 25 25  |s.......F...s.%%|
0003a0a0  cc 00 00 00 13 00 00 00  00 00 00 00 52 45 41 44  |............READ|
0003a0b0  45 52 52 4f 52 00 00 00  8c be 03 00 46 ff ff ff  |ERROR.......F...|
0003a0c0  26 27 26 25 6a 01 00 00  13 00 00 00 00 00 00 00  |&'&%j...........|
0003a0d0  52 65 74 75 72 6e 50 6f  73 00 00 00 f8 bf 03 00  |ReturnPos.......|
0003a0e0  46 ff ff ff fe 1d 26 25  fd 00 00 00 13 00 00 00  |F.....&%........|
0003a0f0  00 00 00 00 53 65 65 6b  00 00 00 00 f8 c0 03 00  |....Seek........|
0003a100  46 ff ff ff 95 95 26 25  16 01 00 00 13 00 00 00  |F.....&%........|
0003a110  00 00 00 00 53 65 74 54  79 70 65 00 10 c2 03 00  |....SetType.....|
0003a120  46 ff ff ff 8d bd 25 25  49 01 00 00 13 00 00 00  |F.....%%I.......|
0003a130  00 00 00 00 53 69 7a 65  00 00 00 00 5c c3 03 00  |....Size....\...|
0003a140  46 fd ff ff 23 37 55 26  5a 01 00 00 13 00 00 00  |F...#7U&Z.......|
0003a150  00 00 00 00 54 4c 00 00  b8 c4 03 00 46 ff ff ff  |....TL......F...|
0003a160  f9 5b 26 25 6e 01 00 00  13 00 00 00 00 00 00 00  |.[&%n...........|
0003a170  57 72 69 74 65 33 32 00  28 c6 03 00 46 ff ff ff  |Write32.(...F...|
0003a180  7c 87 26 25 57 01 00 00  13 00 00 00 00 00 00 00  ||.&%W...........|
0003a190  57 72 69 74 65 33 32 52  00 00 00 00 80 c7 03 00  |Write32R........|
0003a1a0  46 ff ff ff 4c 41 26 25  55 01 00 00 13 00 00 00  |F...LA&%U.......|
0003a1b0  00 00 00 00 57 72 69 74  65 38 00 00 d8 c8 03 00  |....Write8......|
0003a1c0  46 ff ff ff 12 2f 26 25  48 01 00 00 13 00 00 00  |F..../&%H.......|
0003a1d0  00 00 00 00 57 72 69 74  65 42 79 74 65 73 00 00  |....WriteBytes..|
0003a1e0  20 ca 03 00 46 ff ff ff  1a 7c 27 25 e0 00 00 00  | ...F....|'%....|
0003a1f0  13 00 00 00 00 00 00 00  44 61 74 65 00 00 00 00  |........Date....|
0003a200  00 cb 03 00 46 ff ff ff  67 d0 27 25 a9 01 00 00  |....F...g.'%....|
0003a210  13 00 00 00 00 00 00 00  70 72 69 6e 74 66 00 00  |........printf..|
0003a220  44 41 54 41 5e 01 00 00  66 69 6c 65 5f 61 63 63  |DATA^...file_acc|
0003a230  65 73 73 0a 54 68 65 20  74 79 70 65 20 7b 2a 7d  |ess.The type {*}|
0003a240  66 69 6c 65 5f 61 63 63  65 73 73 7b 2a 7d 20 69  |file_access{*} i|
0003a250  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 44 65  |s defined in <De|
0003a260  73 6b 4c 69 62 3a 46 69  6c 65 2e 68 3d 3e 46 69  |skLib:File.h=>Fi|
0003a270  6c 65 5f 68 3e 20 61 73  20 61 6e 20 65 6e 75 6d  |le_h> as an enum|
0003a280  65 72 61 74 65 64 20 74  79 70 65 20 77 68 69 63  |erated type whic|
0003a290  68 20 64 65 66 69 6e 65  73 20 74 68 65 20 6d 6f  |h defines the mo|
0003a2a0  64 65 20 69 6e 20 77 68  69 63 68 20 61 20 66 69  |de in which a fi|
0003a2b0  6c 65 20 73 68 6f 75 6c  64 20 62 65 20 6f 70 65  |le should be ope|
0003a2c0  6e 65 64 2e 20 54 68 65  20 70 6f 73 73 69 62 6c  |ned. The possibl|
0003a2d0  65 20 76 61 6c 75 65 73  20 61 72 65 20 66 69 6c  |e values are fil|
0003a2e0  65 5f 52 45 41 44 2c 20  66 69 6c 65 5f 57 52 49  |e_READ, file_WRI|
0003a2f0  54 45 2c 20 6f 72 20 66  69 6c 65 5f 41 50 50 45  |TE, or file_APPE|
0003a300  4e 44 3b 20 74 68 65 79  20 61 72 65 20 64 65 66  |ND; they are def|
0003a310  69 6e 65 64 20 61 73 20  66 6f 6c 6c 6f 77 73 3a  |ined as follows:|
0003a320  0a 0a 20 20 20 20 5c 7b  0a 20 20 20 20 20 20 20  |..    \{.       |
0003a330  20 66 69 6c 65 5f 52 45  41 44 09 3d 20 30 78 34  | file_READ.= 0x4|
0003a340  30 2c 0a 20 20 20 20 20  20 20 20 66 69 6c 65 5f  |0,.        file_|
0003a350  57 52 49 54 45 09 3d 20  30 78 38 30 2c 0a 20 20  |WRITE.= 0x80,.  |
0003a360  20 20 20 20 20 20 66 69  6c 65 5f 41 50 50 45 4e  |      file_APPEN|
0003a370  44 09 3d 20 30 78 43 30  0a 20 20 20 20 7d 00 00  |D.= 0xC0.    }..|
0003a380  44 41 54 41 49 01 00 00  46 69 6c 65 5f 43 6c 6f  |DATAI...File_Clo|
0003a390  73 65 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |se.Syntax:.<os_e|
0003a3a0  72 72 6f 72 3e 20 2a 46  69 6c 65 5f 43 6c 6f 73  |rror> *File_Clos|
0003a3b0  65 20 28 3c 66 69 6c 65  5f 68 61 6e 64 6c 65 3e  |e (<file_handle>|
0003a3c0  20 68 6e 64 29 3b 0a 48  65 61 64 65 72 3a 09 3c  | hnd);.Header:.<|
0003a3d0  44 65 73 6b 4c 69 62 3a  46 69 6c 65 2e 68 3d 3e  |DeskLib:File.h=>|
0003a3e0  46 69 6c 65 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |File_h>..Returns|
0003a3f0  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
0003a400  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
0003a410  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
0003a420  63 74 69 6f 6e 20 63 6c  6f 73 65 73 20 74 68 65  |ction closes the|
0003a430  20 66 69 6c 65 20 73 74  72 65 61 6d 20 77 68 6f  | file stream who|
0003a440  73 65 20 68 61 6e 64 6c  65 20 69 73 20 67 69 76  |se handle is giv|
0003a450  65 6e 20 69 6e 20 2f 68  6e 64 2f 2e 20 54 68 65  |en in /hnd/. The|
0003a460  20 73 74 72 65 61 6d 20  69 73 20 6e 6f 77 20 69  | stream is now i|
0003a470  6e 76 61 6c 69 64 2e 20  41 6e 79 20 64 61 74 61  |nvalid. Any data|
0003a480  20 63 75 72 72 65 6e 74  6c 79 20 62 75 66 66 65  | currently buffe|
0003a490  72 65 64 20 74 6f 20 62  65 20 77 72 69 74 74 65  |red to be writte|
0003a4a0  6e 20 6f 75 74 20 77 69  6c 6c 20 62 65 20 77 72  |n out will be wr|
0003a4b0  69 74 74 65 6e 20 6f 75  74 20 62 65 66 6f 72 65  |itten out before|
0003a4c0  20 63 6c 6f 73 75 72 65  2e 00 00 00 44 41 54 41  | closure....DATA|
0003a4d0  61 01 00 00 46 69 6c 65  5f 44 65 6c 65 74 65 0a  |a...File_Delete.|
0003a4e0  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
0003a4f0  72 3e 20 2a 46 69 6c 65  5f 44 65 6c 65 74 65 20  |r> *File_Delete |
0003a500  28 63 68 61 72 20 2a 66  69 6c 65 6e 61 6d 65 29  |(char *filename)|
0003a510  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
0003a520  69 62 3a 46 69 6c 65 2e  68 3d 3e 46 69 6c 65 5f  |ib:File.h=>File_|
0003a530  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |h>..Returns:.Poi|
0003a540  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
0003a550  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
0003a560  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
0003a570  20 61 74 74 65 6d 70 74  73 20 74 6f 20 72 65 6d  | attempts to rem|
0003a580  6f 76 65 20 74 68 65 20  66 69 6c 65 20 77 68 6f  |ove the file who|
0003a590  73 65 20 6e 61 6d 65 20  69 73 20 63 6f 6e 74 61  |se name is conta|
0003a5a0  69 6e 65 64 20 69 6e 20  2f 66 69 6c 65 6e 61 6d  |ined in /filenam|
0003a5b0  65 2f 2e 20 54 68 69 73  20 69 73 20 65 71 75 69  |e/. This is equi|
0003a5c0  76 61 6c 65 6e 74 20 74  6f 20 2a 44 65 6c 65 74  |valent to *Delet|
0003a5d0  65 20 6f 72 20 3c 4f 53  5f 46 69 6c 65 20 36 3d  |e or <OS_File 6=|
0003a5e0  3e 53 57 49 3a 6f 73 5f  66 69 6c 65 36 3e 2e 20  |>SWI:os_file6>. |
0003a5f0  49 66 20 74 68 65 20 66  69 6c 65 20 69 73 20 6f  |If the file is o|
0003a600  70 65 6e 2c 20 74 68 65  20 66 75 6e 63 74 69 6f  |pen, the functio|
0003a610  6e 20 77 69 6c 6c 20 61  6c 6d 6f 73 74 20 63 65  |n will almost ce|
0003a620  72 74 61 69 6e 6c 79 20  66 61 69 6c 2e 00 00 00  |rtainly fail....|
0003a630  44 41 54 41 d8 00 00 00  46 69 6c 65 5f 45 4f 46  |DATA....File_EOF|
0003a640  0a 53 79 6e 74 61 78 3a  09 3c 42 4f 4f 4c 3e 20  |.Syntax:.<BOOL> |
0003a650  46 69 6c 65 5f 45 4f 46  20 28 3c 66 69 6c 65 5f  |File_EOF (<file_|
0003a660  68 61 6e 64 6c 65 3e 20  68 6e 64 29 3b 0a 48 65  |handle> hnd);.He|
0003a670  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 46  |ader:.<DeskLib:F|
0003a680  69 6c 65 2e 68 3d 3e 46  69 6c 65 5f 68 3e 0a 0a  |ile.h=>File_h>..|
0003a690  52 65 74 75 72 6e 73 3a  09 3c 54 52 55 45 3e 20  |Returns:.<TRUE> |
0003a6a0  69 66 20 61 74 20 65 6e  64 2d 6f 66 2d 66 69 6c  |if at end-of-fil|
0003a6b0  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
0003a6c0  6e 20 74 65 73 74 73 20  74 6f 20 73 65 65 20 69  |n tests to see i|
0003a6d0  66 20 74 68 65 20 65 6e  64 20 6f 66 20 74 68 65  |f the end of the|
0003a6e0  20 73 70 65 63 69 66 69  65 64 20 66 69 6c 65 20  | specified file |
0003a6f0  73 74 72 65 61 6d 20 68  61 73 20 62 65 65 6e 20  |stream has been |
0003a700  72 65 61 63 68 65 64 2e  44 41 54 41 01 01 00 00  |reached.DATA....|
0003a710  46 69 6c 65 5f 45 78 69  73 74 73 0a 53 79 6e 74  |File_Exists.Synt|
0003a720  61 78 3a 09 3c 42 4f 4f  4c 3e 20 46 69 6c 65 5f  |ax:.<BOOL> File_|
0003a730  45 78 69 73 74 73 20 28  63 68 61 72 20 2a 66 69  |Exists (char *fi|
0003a740  6c 65 6e 61 6d 65 29 3b  0a 48 65 61 64 65 72 3a  |lename);.Header:|
0003a750  09 3c 44 65 73 6b 4c 69  62 3a 46 69 6c 65 2e 68  |.<DeskLib:File.h|
0003a760  3d 3e 46 69 6c 65 5f 68  3e 0a 0a 52 65 74 75 72  |=>File_h>..Retur|
0003a770  6e 73 3a 09 3c 54 52 55  45 3e 20 69 66 20 74 68  |ns:.<TRUE> if th|
0003a780  65 20 66 69 6c 65 20 65  78 69 73 74 73 2e 0a 0a  |e file exists...|
0003a790  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 63 68  |This function ch|
0003a7a0  65 63 6b 73 20 69 66 20  74 68 65 20 66 69 6c 65  |ecks if the file|
0003a7b0  20 77 68 6f 73 65 20 66  69 6c 65 6e 61 6d 65 20  | whose filename |
0003a7c0  69 73 20 67 69 76 65 6e  20 65 78 69 73 74 73 2e  |is given exists.|
0003a7d0  20 49 74 20 64 6f 65 73  20 74 68 69 73 20 62 79  | It does this by|
0003a7e0  20 61 74 74 65 6d 70 74  69 6e 67 20 74 6f 20 6f  | attempting to o|
0003a7f0  70 65 6e 20 74 68 65 20  66 69 6c 65 20 66 6f 72  |pen the file for|
0003a800  20 72 65 61 64 69 6e 67  2e 00 00 00 44 41 54 41  | reading....DATA|
0003a810  80 01 00 00 46 69 6c 65  5f 47 65 74 4c 65 6e 67  |....File_GetLeng|
0003a820  74 68 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |th.Syntax:.<os_e|
0003a830  72 72 6f 72 3e 20 2a 46  69 6c 65 5f 47 65 74 4c  |rror> *File_GetL|
0003a840  65 6e 67 74 68 20 28 63  68 61 72 20 2a 66 69 6c  |ength (char *fil|
0003a850  65 6e 61 6d 65 2c 20 69  6e 74 20 2a 73 69 7a 65  |ename, int *size|
0003a860  5f 70 74 72 29 3b 0a 48  65 61 64 65 72 73 3a 09  |_ptr);.Headers:.|
0003a870  3c 54 69 6d 73 4c 69 62  3a 46 69 6c 65 2e 68 3d  |<TimsLib:File.h=|
0003a880  3e 46 69 6c 65 5f 54 4c  3e 0a 09 3c 44 65 73 6b  |>File_TL>..<Desk|
0003a890  4c 69 62 3a 46 69 6c 65  2e 68 3d 3e 46 69 6c 65  |Lib:File.h=>File|
0003a8a0  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |_h>..Returns:.Po|
0003a8b0  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
0003a8c0  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
0003a8d0  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
0003a8e0  6e 20 72 65 61 64 73 20  74 68 65 20 6c 65 6e 67  |n reads the leng|
0003a8f0  74 68 20 6f 66 20 74 68  65 20 66 69 6c 65 20 2f  |th of the file /|
0003a900  66 69 6c 65 6e 61 6d 65  2f 20 69 6e 20 62 79 74  |filename/ in byt|
0003a910  65 73 20 61 6e 64 20 72  65 74 75 72 6e 73 20 69  |es and returns i|
0003a920  74 20 69 6e 20 7b 2f 7d  2a 73 69 7a 65 5f 70 74  |t in {/}*size_pt|
0003a930  72 7b 2f 7d 2e 20 49 74  20 69 73 20 61 63 74 75  |r{/}. It is actu|
0003a940  61 6c 6c 79 20 64 65 66  69 6e 65 64 20 61 73 20  |ally defined as |
0003a950  61 20 66 75 6e 63 74 69  6f 6e 2d 6c 69 6b 65 20  |a function-like |
0003a960  6d 61 63 72 6f 20 63 61  6c 6c 69 6e 67 20 53 57  |macro calling SW|
0003a970  49 20 3c 4f 53 5f 46 69  6c 65 20 35 3d 3e 53 57  |I <OS_File 5=>SW|
0003a980  49 3a 6f 73 5f 66 69 6c  65 35 3e 2e 44 41 54 41  |I:os_file5>.DATA|
0003a990  f7 00 00 00 46 69 6c 65  5f 47 65 74 54 79 70 65  |....File_GetType|
0003a9a0  0a 53 79 6e 74 61 78 3a  09 69 6e 74 20 46 69 6c  |.Syntax:.int Fil|
0003a9b0  65 5f 47 65 74 54 79 70  65 20 28 63 68 61 72 20  |e_GetType (char |
0003a9c0  2a 66 69 6c 65 6e 61 6d  65 29 3b 0a 48 65 61 64  |*filename);.Head|
0003a9d0  65 72 3a 09 3c 54 69 6d  73 4c 69 62 3a 46 69 6c  |er:.<TimsLib:Fil|
0003a9e0  65 2e 68 3d 3e 46 69 6c  65 5f 54 4c 3e 0a 09 3c  |e.h=>File_TL>..<|
0003a9f0  44 65 73 6b 4c 69 62 3a  46 69 6c 65 2e 68 3d 3e  |DeskLib:File.h=>|
0003aa00  46 69 6c 65 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |File_h>..Returns|
0003aa10  3a 09 46 69 6c 65 20 74  79 70 65 20 6f 66 20 66  |:.File type of f|
0003aa20  69 6c 65 2c 20 6f 72 20  2d 31 20 66 6f 72 20 65  |ile, or -1 for e|
0003aa30  72 72 6f 72 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |rror...This func|
0003aa40  74 69 6f 6e 20 72 65 61  64 73 20 74 68 65 20 3c  |tion reads the <|
0003aa50  66 69 6c 65 20 74 79 70  65 3d 3e 46 69 6c 65 54  |file type=>FileT|
0003aa60  79 70 65 73 3a 21 52 6f  6f 74 3e 20 6f 66 20 74  |ypes:!Root> of t|
0003aa70  68 65 20 66 69 6c 65 20  2f 66 69 6c 65 6e 61 6d  |he file /filenam|
0003aa80  65 2f 2e 00 44 41 54 41  6b 03 00 00 44 65 73 6b  |e/..DATAk...Desk|
0003aa90  4c 69 62 3a 46 69 6c 65  2e 68 0a 56 65 72 73 69  |Lib:File.h.Versi|
0003aaa0  6f 6e 3a 20 31 2e 30 33  20 28 32 36 20 4a 75 6e  |on: 1.03 (26 Jun|
0003aab0  20 31 39 39 34 29 0a 23  6c 69 6e 65 0a 54 68 65  | 1994).#line.The|
0003aac0  20 7b 2a 7d 46 69 6c 65  2e 68 7b 2a 7d 20 68 65  | {*}File.h{*} he|
0003aad0  61 64 65 72 20 64 65 66  69 6e 65 73 20 61 20 6e  |ader defines a n|
0003aae0  75 6d 62 65 72 20 6f 66  20 66 75 6e 63 74 69 6f  |umber of functio|
0003aaf0  6e 73 20 61 6e 64 20 74  79 70 65 73 20 66 6f 72  |ns and types for|
0003ab00  20 68 61 6e 64 6c 69 6e  67 20 66 69 6c 65 73 2e  | handling files.|
0003ab10  20 54 68 65 73 65 20 66  75 6e 63 74 69 6f 6e 73  | These functions|
0003ab20  20 61 72 65 20 6d 75 63  68 20 66 61 73 74 65 72  | are much faster|
0003ab30  20 74 68 61 6e 20 74 68  6f 73 65 20 69 6e 20 3c  | than those in <|
0003ab40  73 74 64 69 6f 2e 68 3d  3e 73 74 64 69 6f 3e 2c  |stdio.h=>stdio>,|
0003ab50  20 61 6e 64 20 75 73 65  20 52 49 53 43 20 4f 53  | and use RISC OS|
0003ab60  20 66 69 6c 65 20 68 61  6e 64 6c 65 73 2e 0a 0a  | file handles...|
0003ab70  46 75 6e 63 74 69 6f 6e  73 3a 0a 0a 23 69 6e 64  |Functions:..#ind|
0003ab80  65 6e 74 20 36 0a 23 54  61 62 6c 65 20 63 6f 6c  |ent 6.#Table col|
0003ab90  75 6d 6e 73 20 33 0a 3c  46 69 6c 65 5f 43 6c 6f  |umns 3.<File_Clo|
0003aba0  73 65 3e 0a 3c 46 69 6c  65 5f 44 65 6c 65 74 65  |se>.<File_Delete|
0003abb0  3e 0a 3c 46 69 6c 65 5f  45 4f 46 3e 0a 3c 46 69  |>.<File_EOF>.<Fi|
0003abc0  6c 65 5f 45 78 69 73 74  73 3e 0a 3c 46 69 6c 65  |le_Exists>.<File|
0003abd0  5f 4f 70 65 6e 3e 0a 3c  46 69 6c 65 5f 52 65 61  |_Open>.<File_Rea|
0003abe0  64 38 3e 0a 3c 46 69 6c  65 5f 52 65 61 64 33 32  |d8>.<File_Read32|
0003abf0  3e 0a 3c 46 69 6c 65 5f  52 65 61 64 33 32 52 3e  |>.<File_Read32R>|
0003ac00  0a 3c 46 69 6c 65 5f 52  65 61 64 42 79 74 65 73  |.<File_ReadBytes|
0003ac10  3e 0a 3c 46 69 6c 65 5f  52 65 74 75 72 6e 50 6f  |>.<File_ReturnPo|
0003ac20  73 3e 0a 3c 46 69 6c 65  5f 53 65 65 6b 3e 0a 3c  |s>.<File_Seek>.<|
0003ac30  46 69 6c 65 5f 53 69 7a  65 3e 0a 3c 46 69 6c 65  |File_Size>.<File|
0003ac40  5f 57 72 69 74 65 38 3e  0a 3c 46 69 6c 65 5f 57  |_Write8>.<File_W|
0003ac50  72 69 74 65 33 32 3e 0a  3c 46 69 6c 65 5f 57 72  |rite32>.<File_Wr|
0003ac60  69 74 65 33 32 52 3e 0a  3c 46 69 6c 65 5f 57 72  |ite32R>.<File_Wr|
0003ac70  69 74 65 42 79 74 65 73  3e 0a 3c 46 69 6c 65 5f  |iteBytes>.<File_|
0003ac80  53 65 74 54 79 70 65 3e  0a 3c 46 69 6c 65 5f 47  |SetType>.<File_G|
0003ac90  65 74 54 79 70 65 3e 0a  3c 46 69 6c 65 5f 47 65  |etType>.<File_Ge|
0003aca0  74 4c 65 6e 67 74 68 3e  0a 3c 46 69 6c 65 5f 4c  |tLength>.<File_L|
0003acb0  6f 61 64 54 6f 3e 0a 3c  46 69 6c 65 5f 49 73 44  |oadTo>.<File_IsD|
0003acc0  69 72 65 63 74 6f 72 79  3e 0a 3c 46 69 6c 65 5f  |irectory>.<File_|
0003acd0  44 61 74 65 3e 0a 3c 46  69 6c 65 5f 70 72 69 6e  |Date>.<File_prin|
0003ace0  74 66 3e 0a 23 45 6e 64  54 61 62 6c 65 0a 0a 23  |tf>.#EndTable..#|
0003acf0  49 6e 64 65 6e 74 20 30  0a 4d 61 63 72 6f 73 3a  |Indent 0.Macros:|
0003ad00  0a 0a 23 69 6e 64 65 6e  74 20 39 0a 23 54 61 62  |..#indent 9.#Tab|
0003ad10  6c 65 20 32 20 32 30 0a  3c 66 69 6c 65 5f 52 45  |le 2 20.<file_RE|
0003ad20  41 44 45 52 52 4f 52 3e  0a 3c 46 49 4c 45 54 59  |ADERROR>.<FILETY|
0003ad30  50 45 3e 0a 3c 46 69 6c  65 74 79 70 65 20 4d 61  |PE>.<Filetype Ma|
0003ad40  63 72 6f 73 3d 3e 66 69  6c 65 74 79 70 65 5f 3e  |cros=>filetype_>|
0003ad50  0a 23 45 6e 64 54 61 62  6c 65 0a 23 49 6e 64 65  |.#EndTable.#Inde|
0003ad60  6e 74 20 30 0a 0a 54 79  70 65 73 3a 0a 0a 23 69  |nt 0..Types:..#i|
0003ad70  6e 64 65 6e 74 20 31 34  0a 23 54 61 62 6c 65 20  |ndent 14.#Table |
0003ad80  32 20 32 30 0a 3c 66 69  6c 65 5f 70 6f 73 69 74  |2 20.<file_posit|
0003ad90  69 6f 6e 3e 0a 3c 66 69  6c 65 5f 68 61 6e 64 6c  |ion>.<file_handl|
0003ada0  65 3e 0a 3c 66 69 6c 65  5f 61 63 63 65 73 73 3e  |e>.<file_access>|
0003adb0  0a 23 45 6e 64 54 61 62  6c 65 0a 0a 23 49 6e 64  |.#EndTable..#Ind|
0003adc0  65 6e 74 20 30 0a 56 61  72 69 61 62 6c 65 3a 0a  |ent 0.Variable:.|
0003add0  0a 7b 61 6c 69 67 6e 20  63 65 6e 74 72 65 7d 3c  |.{align centre}<|
0003ade0  66 69 6c 65 5f 6c 61 73  74 65 72 72 6f 72 3e 00  |file_lasterror>.|
0003adf0  44 41 54 41 87 00 00 00  66 69 6c 65 5f 68 61 6e  |DATA....file_han|
0003ae00  64 6c 65 0a 54 68 65 20  74 79 70 65 20 66 69 6c  |dle.The type fil|
0003ae10  65 5f 68 61 6e 64 6c 65  20 69 73 20 64 65 66 69  |e_handle is defi|
0003ae20  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
0003ae30  46 69 6c 65 2e 68 3d 3e  46 69 6c 65 5f 68 3e 20  |File.h=>File_h> |
0003ae40  61 73 20 61 20 74 79 70  65 20 63 61 70 61 62 6c  |as a type capabl|
0003ae50  65 20 6f 66 20 68 6f 6c  64 69 6e 67 20 61 20 68  |e of holding a h|
0003ae60  61 6e 64 6c 65 20 66 6f  72 20 61 6e 20 6f 70 65  |andle for an ope|
0003ae70  6e 20 66 69 6c 65 2e 00  44 41 54 41 b6 00 00 00  |n file..DATA....|
0003ae80  46 69 6c 65 5f 49 73 44  69 72 65 63 74 6f 72 79  |File_IsDirectory|
0003ae90  0a 53 79 6e 74 61 78 3a  09 3c 42 4f 4f 4c 3e 20  |.Syntax:.<BOOL> |
0003aea0  46 69 6c 65 5f 49 73 44  69 72 65 63 74 6f 72 79  |File_IsDirectory|
0003aeb0  20 28 63 68 61 72 20 2a  70 61 74 68 6e 61 6d 65  | (char *pathname|
0003aec0  29 3b 0a 48 65 61 64 65  72 73 3a 09 3c 54 69 6d  |);.Headers:.<Tim|
0003aed0  73 4c 69 62 3a 46 69 6c  65 2e 68 3d 3e 46 69 6c  |sLib:File.h=>Fil|
0003aee0  65 5f 54 4c 3e 0a 09 3c  44 65 73 6b 4c 69 62 3a  |e_TL>..<DeskLib:|
0003aef0  46 69 6c 65 2e 68 3d 3e  46 69 6c 65 5f 68 3e 0a  |File.h=>File_h>.|
0003af00  0a 52 65 74 75 72 6e 73  3a 09 3c 54 52 55 45 3e  |.Returns:.<TRUE>|
0003af10  20 69 66 20 2f 70 61 74  68 6e 61 6d 65 2f 20 69  | if /pathname/ i|
0003af20  73 20 61 20 64 69 72 65  63 74 6f 72 79 2e 00 00  |s a directory...|
0003af30  44 41 54 41 77 01 00 00  66 69 6c 65 5f 6c 61 73  |DATAw...file_las|
0003af40  74 65 72 72 6f 72 0a 54  68 65 20 76 61 72 69 61  |terror.The varia|
0003af50  62 6c 65 20 66 69 6c 65  5f 6c 61 73 74 65 72 72  |ble file_lasterr|
0003af60  6f 72 20 69 73 20 64 65  63 6c 61 72 65 64 20 69  |or is declared i|
0003af70  6e 20 3c 44 65 73 6b 4c  69 62 3a 46 69 6c 65 2e  |n <DeskLib:File.|
0003af80  68 3d 3e 46 69 6c 65 5f  68 3e 2e 20 49 74 20 69  |h=>File_h>. It i|
0003af90  73 20 6f 66 20 74 79 70  65 20 3c 6f 73 5f 65 72  |s of type <os_er|
0003afa0  72 6f 72 3e 20 2a 2e 20  49 74 20 69 73 20 75 73  |ror> *. It is us|
0003afb0  65 64 20 74 6f 20 72 65  74 75 72 6e 20 65 72 72  |ed to return err|
0003afc0  6f 72 73 20 66 72 6f 6d  20 74 68 65 20 66 6f 6c  |ors from the fol|
0003afd0  6c 6f 77 69 6e 67 20 66  75 6e 63 74 69 6f 6e 73  |lowing functions|
0003afe0  3a 0a 0a 23 74 61 62 6c  65 20 63 6f 6c 75 6d 6e  |:..#table column|
0003aff0  73 20 33 0a 3c 46 69 6c  65 5f 4f 70 65 6e 3e 20  |s 3.<File_Open> |
0003b000  20 20 20 0a 3c 46 69 6c  65 5f 52 65 61 64 38 3e  |   .<File_Read8>|
0003b010  20 20 20 20 0a 3c 46 69  6c 65 5f 57 72 69 74 65  |    .<File_Write|
0003b020  38 3e 20 20 20 20 0a 3c  46 69 6c 65 5f 53 65 65  |8>    .<File_See|
0003b030  6b 3e 20 20 0a 3c 46 69  6c 65 5f 43 6c 6f 73 65  |k>  .<File_Close|
0003b040  3e 0a 3c 46 69 6c 65 5f  52 65 61 64 33 32 3e 0a  |>.<File_Read32>.|
0003b050  3c 46 69 6c 65 5f 57 72  69 74 65 33 32 3e 0a 3c  |<File_Write32>.<|
0003b060  46 69 6c 65 5f 52 65 74  75 72 6e 50 6f 73 3e 0a  |File_ReturnPos>.|
0003b070  3c 46 69 6c 65 5f 45 4f  46 3e 0a 3c 46 69 6c 65  |<File_EOF>.<File|
0003b080  5f 52 65 61 64 42 79 74  65 73 3e 0a 3c 46 69 6c  |_ReadBytes>.<Fil|
0003b090  65 5f 57 72 69 74 65 42  79 74 65 73 3e 0a 23 65  |e_WriteBytes>.#e|
0003b0a0  6e 64 74 61 62 6c 65 00  44 41 54 41 54 01 00 00  |ndtable.DATAT...|
0003b0b0  46 69 6c 65 5f 4c 6f 61  64 54 6f 0a 53 79 6e 74  |File_LoadTo.Synt|
0003b0c0  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
0003b0d0  46 69 6c 65 5f 4c 6f 61  64 54 6f 20 28 63 68 61  |File_LoadTo (cha|
0003b0e0  72 20 2a 66 69 6c 65 6e  61 6d 65 2c 20 76 6f 69  |r *filename, voi|
0003b0f0  64 20 2a 61 64 64 72 65  73 73 2c 20 69 6e 74 20  |d *address, int |
0003b100  2a 73 69 7a 65 29 3b 0a  48 65 61 64 65 72 3a 09  |*size);.Header:.|
0003b110  3c 44 65 73 6b 4c 69 62  3a 46 69 6c 65 2e 68 3d  |<DeskLib:File.h=|
0003b120  3e 46 69 6c 65 5f 68 3e  0a 0a 52 65 74 75 72 6e  |>File_h>..Return|
0003b130  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
0003b140  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
0003b150  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
0003b160  6e 63 74 69 6f 6e 73 20  6c 6f 61 64 73 20 74 68  |nctions loads th|
0003b170  65 20 66 69 6c 65 20 77  68 6f 73 65 20 66 69 6c  |e file whose fil|
0003b180  65 6e 61 6d 65 20 69 73  20 67 69 76 65 6e 20 69  |ename is given i|
0003b190  6e 74 6f 20 6d 65 6d 6f  72 79 20 61 74 20 74 68  |nto memory at th|
0003b1a0  65 20 61 64 64 72 65 73  73 20 73 70 65 63 69 66  |e address specif|
0003b1b0  69 65 64 2e 20 49 66 20  2f 73 69 7a 65 2f 20 69  |ied. If /size/ i|
0003b1c0  73 20 6e 6f 74 20 3c 4e  55 4c 4c 3e 2c 20 74 68  |s not <NULL>, th|
0003b1d0  65 6e 20 74 68 65 20 73  69 7a 65 20 77 69 6c 6c  |en the size will|
0003b1e0  20 62 65 20 72 65 74 75  72 6e 65 64 20 69 6e 20  | be returned in |
0003b1f0  7b 2f 7d 2a 73 69 7a 65  7b 2f 7d 2e 44 41 54 41  |{/}*size{/}.DATA|
0003b200  dd 03 00 00 46 69 6c 65  20 4d 6f 64 65 73 0a 54  |....File Modes.T|
0003b210  68 65 20 6d 6f 64 65 20  70 61 72 61 6d 65 74 65  |he mode paramete|
0003b220  72 20 69 73 20 61 20 73  74 72 69 6e 67 20 73 70  |r is a string sp|
0003b230  65 63 69 66 79 69 6e 67  20 74 68 65 20 6d 6f 64  |ecifying the mod|
0003b240  65 73 20 69 6e 20 77 68  69 63 68 20 74 68 65 20  |es in which the |
0003b250  66 69 6c 65 20 69 73 20  74 6f 20 62 65 20 6f 70  |file is to be op|
0003b260  65 6e 65 64 2e 20 54 68  65 72 65 20 61 72 65 20  |ened. There are |
0003b270  74 68 72 65 65 20 62 61  73 69 63 20 6d 6f 64 65  |three basic mode|
0003b280  73 20 61 73 20 66 6f 6c  6c 6f 77 73 3a 0a 0a 23  |s as follows:..#|
0003b290  69 6e 64 65 6e 74 20 32  0a 2a 72 2a 09 46 69 6c  |indent 2.*r*.Fil|
0003b2a0  65 20 69 73 20 6f 70 65  6e 65 64 20 66 6f 72 20  |e is opened for |
0003b2b0  72 65 61 64 69 6e 67 2e  20 54 68 65 20 66 69 6c  |reading. The fil|
0003b2c0  65 20 6d 75 73 74 20 61  6c 72 65 61 64 79 20 65  |e must already e|
0003b2d0  78 69 73 74 2e 0a 2a 77  2a 09 46 69 6c 65 20 69  |xist..*w*.File i|
0003b2e0  73 20 6f 70 65 6e 65 64  20 66 6f 72 20 77 72 69  |s opened for wri|
0003b2f0  74 69 6e 67 2e 20 49 66  20 74 68 65 20 66 69 6c  |ting. If the fil|
0003b300  65 20 65 78 69 73 74 73  20 74 68 65 6e 20 69 74  |e exists then it|
0003b310  20 77 69 6c 6c 20 62 65  20 64 65 6c 65 74 65 64  | will be deleted|
0003b320  20 66 69 72 73 74 2e 0a  2a 61 2a 09 46 69 6c 65  | first..*a*.File|
0003b330  20 69 73 20 6f 70 65 6e  65 64 20 66 6f 72 20 61  | is opened for a|
0003b340  70 70 65 6e 64 69 6e 67  2e 20 41 6c 6c 20 77 72  |ppending. All wr|
0003b350  69 74 69 6e 67 20 74 61  6b 65 73 20 70 6c 61 63  |iting takes plac|
0003b360  65 20 61 74 20 74 68 65  20 65 6e 64 20 6f 66 20  |e at the end of |
0003b370  74 68 65 20 66 69 6c 65  2e 0a 23 69 6e 64 65 6e  |the file..#inden|
0003b380  74 0a 0a 54 68 65 6e 20  74 68 65 72 65 20 61 72  |t..Then there ar|
0003b390  65 20 74 68 65 20 74 77  6f 20 71 75 61 6c 69 66  |e the two qualif|
0003b3a0  69 65 72 73 2c 20 62 20  28 62 69 6e 61 72 79 29  |iers, b (binary)|
0003b3b0  20 61 6e 64 20 2b 20 28  75 70 64 61 74 65 29 2e  | and + (update).|
0003b3c0  0a 0a 23 69 6e 64 65 6e  74 20 32 0a 2a 62 2a 09  |..#indent 2.*b*.|
0003b3d0  4e 6f 72 6d 61 6c 6c 79  20 66 69 6c 65 73 20 61  |Normally files a|
0003b3e0  72 65 20 6f 70 65 6e 65  64 20 69 6e 20 94 74 65  |re opened in .te|
0003b3f0  78 74 20 6d 6f 64 65 95  20 74 68 69 73 20 6d 65  |xt mode. this me|
0003b400  61 6e 73 20 74 68 61 74  20 77 68 61 74 20 79 6f  |ans that what yo|
0003b410  75 20 73 65 6e 64 20 6f  75 74 20 6d 61 79 20 6e  |u send out may n|
0003b420  6f 74 20 62 65 20 77 68  61 74 20 69 73 20 70 72  |ot be what is pr|
0003b430  65 73 65 6e 74 20 69 6e  20 74 68 65 20 66 69 6c  |esent in the fil|
0003b440  65 2e 20 53 69 6d 69 6c  61 72 6c 79 2c 20 77 68  |e. Similarly, wh|
0003b450  61 74 20 79 6f 75 20 72  65 61 64 20 6d 61 79 20  |at you read may |
0003b460  6e 6f 74 20 62 65 20 77  68 61 74 20 69 73 20 69  |not be what is i|
0003b470  6e 20 74 68 65 20 66 69  6c 65 20 28 43 52 2f 4c  |n the file (CR/L|
0003b480  46 20 63 6f 6d 62 69 6e  61 74 69 6f 6e 73 20 61  |F combinations a|
0003b490  72 65 20 63 6f 6e 76 65  72 74 65 64 20 74 6f 20  |re converted to |
0003b4a0  4c 46 29 2e 20 57 68 61  74 27 73 20 77 72 69 74  |LF). What's writ|
0003b4b0  74 65 6e 20 6f 75 74 20  61 6e 64 20 77 68 61 74  |ten out and what|
0003b4c0  27 73 20 72 65 61 64 20  69 6e 20 77 69 6c 6c 20  |'s read in will |
0003b4d0  62 65 20 74 68 65 20 73  61 6d 65 2e 20 42 69 6e  |be the same. Bin|
0003b4e0  61 72 79 20 6d 6f 64 65  20 6d 65 61 6e 73 20 74  |ary mode means t|
0003b4f0  68 61 74 20 77 68 61 74  20 79 6f 75 20 72 65 61  |hat what you rea|
0003b500  64 2f 77 72 69 74 65 20  69 73 20 65 78 61 63 74  |d/write is exact|
0003b510  6c 79 20 77 68 61 74 20  69 73 20 69 6e 20 74 68  |ly what is in th|
0003b520  65 20 66 69 6c 65 2e 0a  7b 2a 7d 2b 7b 2a 7d 09  |e file..{*}+{*}.|
0003b530  54 68 69 73 20 61 6c 6c  6f 77 73 20 74 68 65 20  |This allows the |
0003b540  66 69 6c 65 20 74 6f 20  62 65 20 75 70 64 61 74  |file to be updat|
0003b550  65 64 20 28 69 65 20 72  65 61 64 20 61 6e 64 20  |ed (ie read and |
0003b560  77 72 69 74 65 20 61 6c  6c 6f 77 65 64 29 2e 0a  |write allowed)..|
0003b570  23 69 6e 64 65 6e 74 0a  0a 54 68 65 20 6d 6f 73  |#indent..The mos|
0003b580  74 20 75 73 65 66 75 6c  20 6f 70 74 69 6f 6e 73  |t useful options|
0003b590  20 61 72 65 20 70 72 6f  62 61 62 6c 79 20 94 77  | are probably .w|
0003b5a0  62 95 20 66 6f 72 20 77  72 69 74 69 6e 67 2c 20  |b. for writing, |
0003b5b0  94 72 62 95 20 66 6f 72  20 72 65 61 64 69 6e 67  |.rb. for reading|
0003b5c0  2c 20 61 6e 64 20 94 72  62 2b 95 20 66 6f 72 20  |, and .rb+. for |
0003b5d0  75 70 64 61 74 69 6e 67  2e 00 00 00 44 41 54 41  |updating....DATA|
0003b5e0  71 01 00 00 46 69 6c 65  5f 4f 70 65 6e 0a 53 79  |q...File_Open.Sy|
0003b5f0  6e 74 61 78 3a 09 3c 66  69 6c 65 5f 68 61 6e 64  |ntax:.<file_hand|
0003b600  6c 65 3e 20 46 69 6c 65  5f 4f 70 65 6e 20 28 63  |le> File_Open (c|
0003b610  68 61 72 20 2a 66 69 6c  65 6e 61 6d 65 2c 20 3c  |har *filename, <|
0003b620  66 69 6c 65 5f 61 63 63  65 73 73 3e 20 61 63 63  |file_access> acc|
0003b630  65 73 73 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |ess);.Header:.<D|
0003b640  65 73 6b 4c 69 62 3a 46  69 6c 65 2e 68 3d 3e 46  |eskLib:File.h=>F|
0003b650  69 6c 65 5f 68 3e 0a 0a  52 65 74 75 72 6e 73 3a  |ile_h>..Returns:|
0003b660  09 48 61 6e 64 6c 65 20  6f 66 20 74 68 65 20 66  |.Handle of the f|
0003b670  69 6c 65 20 73 74 72 65  61 6d 2c 20 6f 72 20 3c  |ile stream, or <|
0003b680  4e 55 4c 4c 3e 2e 0a 0a  54 68 69 73 20 66 75 6e  |NULL>...This fun|
0003b690  63 74 69 6f 6e 20 61 74  74 65 6d 70 74 73 20 74  |ction attempts t|
0003b6a0  6f 20 6f 70 65 6e 20 74  68 65 20 66 69 6c 65 20  |o open the file |
0003b6b0  73 70 65 63 69 66 69 65  64 20 69 6e 20 2f 66 69  |specified in /fi|
0003b6c0  6c 65 6e 61 6d 65 2f 20  66 6f 72 20 72 61 6e 64  |lename/ for rand|
0003b6d0  6f 6d 20 61 63 63 65 73  73 20 61 63 63 6f 72 64  |om access accord|
0003b6e0  69 6e 67 20 74 6f 20 2f  61 63 63 65 73 73 2f 2e  |ing to /access/.|
0003b6f0  0a 0a 49 66 20 74 68 65  20 66 75 6e 63 74 69 6f  |..If the functio|
0003b700  6e 20 66 61 69 6c 73 2c  20 69 74 20 72 65 74 75  |n fails, it retu|
0003b710  72 6e 73 20 4e 55 4c 4c  20 61 6e 64 20 74 68 65  |rns NULL and the|
0003b720  20 65 72 72 6f 72 20 63  61 6e 20 62 65 20 6f 62  | error can be ob|
0003b730  74 61 69 6e 65 64 20 66  72 6f 6d 20 3c 66 69 6c  |tained from <fil|
0003b740  65 5f 6c 61 73 74 65 72  72 6f 72 3e 2e 00 00 00  |e_lasterror>....|
0003b750  44 41 54 41 8d 00 00 00  66 69 6c 65 5f 70 6f 73  |DATA....file_pos|
0003b760  69 74 69 6f 6e 0a 54 68  65 20 74 79 70 65 20 66  |ition.The type f|
0003b770  69 6c 65 5f 70 6f 73 69  74 69 6f 6e 20 69 73 20  |ile_position is |
0003b780  64 65 66 69 6e 65 64 20  69 6e 20 3c 44 65 73 6b  |defined in <Desk|
0003b790  4c 69 62 3a 46 69 6c 65  2e 68 3d 3e 46 69 6c 65  |Lib:File.h=>File|
0003b7a0  5f 68 3e 20 61 73 20 61  20 74 79 70 65 20 73 75  |_h> as a type su|
0003b7b0  69 74 61 62 6c 65 20 66  6f 72 20 68 6f 6c 64 69  |itable for holdi|
0003b7c0  6e 67 20 61 20 73 65 71  75 65 6e 74 69 61 6c 20  |ng a sequential |
0003b7d0  66 69 6c 65 20 70 6f 69  6e 74 65 72 2e 00 00 00  |file pointer....|
0003b7e0  44 41 54 41 d0 01 00 00  46 69 6c 65 5f 52 65 61  |DATA....File_Rea|
0003b7f0  64 33 32 0a 53 79 6e 74  61 78 3a 09 69 6e 74 20  |d32.Syntax:.int |
0003b800  46 69 6c 65 5f 52 65 61  64 33 32 20 28 3c 66 69  |File_Read32 (<fi|
0003b810  6c 65 5f 68 61 6e 64 6c  65 3e 20 68 6e 64 29 3b  |le_handle> hnd);|
0003b820  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
0003b830  62 3a 46 69 6c 65 2e 68  3d 3e 46 69 6c 65 5f 68  |b:File.h=>File_h|
0003b840  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 3c 66 69 6c  |>..Returns:.<fil|
0003b850  65 5f 52 45 41 44 45 52  52 4f 52 3e 20 69 66 20  |e_READERROR> if |
0003b860  66 61 69 6c 65 64 2e 0a  0a 54 68 69 73 20 66 75  |failed...This fu|
0003b870  6e 63 74 69 6f 6e 20 72  65 61 64 73 20 61 20 33  |nction reads a 3|
0003b880  32 2d 62 69 74 20 76 61  6c 75 65 20 28 77 6f 72  |2-bit value (wor|
0003b890  64 2f 69 6e 74 2f 6c 6f  6e 67 29 20 66 72 6f 6d  |d/int/long) from|
0003b8a0  20 74 68 65 20 66 69 6c  65 20 77 68 6f 73 65 20  | the file whose |
0003b8b0  68 61 6e 64 6c 65 20 69  73 20 67 69 76 65 6e 2e  |handle is given.|
0003b8c0  20 49 66 20 61 6e 20 65  72 72 6f 72 20 6f 63 63  | If an error occ|
0003b8d0  75 72 73 2c 20 66 69 6c  65 5f 52 45 41 44 45 52  |urs, file_READER|
0003b8e0  52 4f 52 20 69 73 20 72  65 74 75 72 6e 65 64 20  |ROR is returned |
0003b8f0  61 6e 64 20 74 68 65 20  65 72 72 6f 72 20 63 61  |and the error ca|
0003b900  6e 20 62 65 20 6f 62 74  61 69 6e 65 64 20 66 72  |n be obtained fr|
0003b910  6f 6d 20 3c 66 69 6c 65  5f 6c 61 73 74 65 72 72  |om <file_lasterr|
0003b920  6f 72 3e 2e 20 54 68 65  20 76 61 6c 75 65 20 69  |or>. The value i|
0003b930  73 20 73 74 6f 72 65 64  20 77 69 74 68 20 4c 53  |s stored with LS|
0003b940  42 20 66 69 72 73 74 2e  0a 0a 54 68 69 73 20 66  |B first...This f|
0003b950  75 6e 63 74 69 6f 6e 20  63 61 6e 20 61 6c 73 6f  |unction can also|
0003b960  20 62 65 20 63 61 6c 6c  65 64 20 77 69 74 68 20  | be called with |
0003b970  7b 2a 7d 46 69 6c 65 5f  52 65 61 64 57 6f 72 64  |{*}File_ReadWord|
0003b980  7b 2a 7d 2c 20 7b 2a 7d  46 69 6c 65 5f 52 65 61  |{*}, {*}File_Rea|
0003b990  64 49 6e 74 7b 2a 7d 20  61 6e 64 20 7b 2a 7d 46  |dInt{*} and {*}F|
0003b9a0  69 6c 65 5f 52 65 61 64  4c 6f 6e 67 7b 2a 7d 2e  |ile_ReadLong{*}.|
0003b9b0  44 41 54 41 36 01 00 00  46 69 6c 65 5f 52 65 61  |DATA6...File_Rea|
0003b9c0  64 33 32 52 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |d32R.Syntax:.int|
0003b9d0  20 46 69 6c 65 5f 52 65  61 64 33 32 52 20 28 3c  | File_Read32R (<|
0003b9e0  66 69 6c 65 5f 68 61 6e  64 6c 65 3e 20 68 6e 64  |file_handle> hnd|
0003b9f0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
0003ba00  4c 69 62 3a 46 69 6c 65  2e 68 3d 3e 46 69 6c 65  |Lib:File.h=>File|
0003ba10  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 3c 66  |_h>..Returns:.<f|
0003ba20  69 6c 65 5f 52 45 41 44  45 52 52 4f 52 3e 20 69  |ile_READERROR> i|
0003ba30  66 20 66 61 69 6c 65 64  2e 0a 0a 54 68 69 73 20  |f failed...This |
0003ba40  66 75 6e 63 74 69 6f 6e  20 69 73 20 69 64 65 6e  |function is iden|
0003ba50  74 69 63 61 6c 20 74 6f  20 3c 46 69 6c 65 5f 52  |tical to <File_R|
0003ba60  65 61 64 33 32 3e 2c 20  62 75 74 20 72 65 61 64  |ead32>, but read|
0003ba70  73 20 74 68 65 20 62 79  74 65 73 20 4d 53 42 20  |s the bytes MSB |
0003ba80  66 69 72 73 74 2e 20 49  74 20 63 61 6e 20 61 6c  |first. It can al|
0003ba90  73 6f 20 62 65 20 63 61  6c 6c 65 64 20 77 69 74  |so be called wit|
0003baa0  68 20 7b 2a 7d 46 69 6c  65 5f 52 65 61 64 57 6f  |h {*}File_ReadWo|
0003bab0  72 64 52 7b 2a 7d 2c 20  7b 2a 7d 46 69 6c 65 5f  |rdR{*}, {*}File_|
0003bac0  52 65 61 64 49 6e 74 52  7b 2a 7d 2c 20 61 6e 64  |ReadIntR{*}, and|
0003bad0  20 7b 2a 7d 46 69 6c 65  5f 52 65 61 64 4c 6f 6e  | {*}File_ReadLon|
0003bae0  67 52 7b 2a 7d 2e 00 00  44 41 54 41 99 01 00 00  |gR{*}...DATA....|
0003baf0  46 69 6c 65 5f 52 65 61  64 38 0a 53 79 6e 74 61  |File_Read8.Synta|
0003bb00  78 3a 09 69 6e 74 20 46  69 6c 65 5f 52 65 61 64  |x:.int File_Read|
0003bb10  38 20 28 3c 66 69 6c 65  5f 68 61 6e 64 6c 65 3e  |8 (<file_handle>|
0003bb20  20 68 6e 64 29 3b 0a 48  65 61 64 65 72 3a 09 3c  | hnd);.Header:.<|
0003bb30  44 65 73 6b 4c 69 62 3a  46 69 6c 65 2e 68 3d 3e  |DeskLib:File.h=>|
0003bb40  46 69 6c 65 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |File_h>..Returns|
0003bb50  3a 09 3c 66 69 6c 65 5f  52 45 41 44 45 52 52 4f  |:.<file_READERRO|
0003bb60  52 3e 20 69 66 20 66 61  69 6c 65 64 2e 0a 0a 54  |R> if failed...T|
0003bb70  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 61  |his function rea|
0003bb80  64 73 20 61 6e 20 38 2d  62 69 74 20 76 61 6c 75  |ds an 8-bit valu|
0003bb90  65 20 28 62 79 74 65 2f  63 68 61 72 29 20 66 72  |e (byte/char) fr|
0003bba0  6f 6d 20 74 68 65 20 66  69 6c 65 20 77 68 6f 73  |om the file whos|
0003bbb0  65 20 68 61 6e 64 6c 65  20 69 73 20 67 69 76 65  |e handle is give|
0003bbc0  6e 20 69 6e 20 68 6e 64  2e 20 49 66 20 61 6e 20  |n in hnd. If an |
0003bbd0  65 72 72 6f 72 20 6f 63  63 75 72 73 2c 20 66 69  |error occurs, fi|
0003bbe0  6c 65 5f 52 45 41 44 45  52 52 4f 52 20 69 73 20  |le_READERROR is |
0003bbf0  72 65 74 75 72 6e 65 64  20 61 6e 64 20 74 68 65  |returned and the|
0003bc00  20 65 72 72 6f 72 20 63  61 6e 20 62 65 20 6f 62  | error can be ob|
0003bc10  74 61 69 6e 65 64 20 66  72 6f 6d 20 3c 66 69 6c  |tained from <fil|
0003bc20  65 5f 6c 61 73 74 65 72  72 6f 72 3e 2e 0a 0a 54  |e_lasterror>...T|
0003bc30  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 61 6e  |his function can|
0003bc40  20 61 6c 73 6f 20 62 65  20 63 61 6c 6c 65 64 20  | also be called |
0003bc50  77 69 74 68 20 7b 2a 7d  46 69 6c 65 5f 52 65 61  |with {*}File_Rea|
0003bc60  64 42 79 74 65 7b 2a 7d  20 61 6e 64 20 7b 2a 7d  |dByte{*} and {*}|
0003bc70  46 69 6c 65 5f 52 65 61  64 43 68 61 72 7b 2a 7d  |File_ReadChar{*}|
0003bc80  2e 00 00 00 44 41 54 41  3c 01 00 00 46 69 6c 65  |....DATA<...File|
0003bc90  5f 52 65 61 64 42 79 74  65 73 0a 53 79 6e 74 61  |_ReadBytes.Synta|
0003bca0  78 3a 09 69 6e 74 20 46  69 6c 65 5f 52 65 61 64  |x:.int File_Read|
0003bcb0  42 79 74 65 73 20 28 3c  66 69 6c 65 5f 68 61 6e  |Bytes (<file_han|
0003bcc0  64 6c 65 3e 20 68 6e 64  2c 20 76 6f 69 64 20 2a  |dle> hnd, void *|
0003bcd0  62 75 66 66 65 72 2c 20  69 6e 74 20 6e 62 79 74  |buffer, int nbyt|
0003bce0  65 73 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |es);.Header:.<De|
0003bcf0  73 6b 4c 69 62 3a 46 69  6c 65 2e 68 3d 3e 46 69  |skLib:File.h=>Fi|
0003bd00  6c 65 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |le_h>..Returns:.|
0003bd10  4e 75 6d 62 65 72 20 6f  66 20 62 79 74 65 73 20  |Number of bytes |
0003bd20  4e 4f 54 20 73 75 63 63  65 73 73 66 75 6c 6c 79  |NOT successfully|
0003bd30  20 72 65 61 64 2e 0a 0a  54 68 69 73 20 66 75 6e  | read...This fun|
0003bd40  63 74 69 6f 6e 20 72 65  61 64 73 20 74 68 65 20  |ction reads the |
0003bd50  67 69 76 65 6e 20 6e 75  6d 62 65 72 20 6f 66 20  |given number of |
0003bd60  62 79 74 65 73 20 6f 66  20 64 61 74 61 20 66 72  |bytes of data fr|
0003bd70  6f 6d 20 74 68 65 20 66  69 6c 65 20 77 68 6f 73  |om the file whos|
0003bd80  65 20 68 61 6e 64 6c 65  20 69 73 20 67 69 76 65  |e handle is give|
0003bd90  6e 2c 20 69 6e 74 6f 20  74 68 65 20 61 72 65 61  |n, into the area|
0003bda0  20 6f 66 20 6d 65 6d 6f  72 79 20 70 6f 69 6e 74  | of memory point|
0003bdb0  65 64 20 74 6f 20 62 79  20 62 75 66 66 65 72 2e  |ed to by buffer.|
0003bdc0  44 41 54 41 cc 00 00 00  66 69 6c 65 5f 52 45 41  |DATA....file_REA|
0003bdd0  44 45 52 52 4f 52 0a 54  68 65 20 6d 61 63 72 6f  |DERROR.The macro|
0003bde0  20 66 69 6c 65 5f 52 45  41 44 45 52 52 4f 52 20  | file_READERROR |
0003bdf0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 44  |is defined in <D|
0003be00  65 73 6b 4c 69 62 3a 46  69 6c 65 2e 68 3d 3e 46  |eskLib:File.h=>F|
0003be10  69 6c 65 5f 68 3e 20 61  73 20 61 20 76 61 6c 75  |ile_h> as a valu|
0003be20  65 20 69 6e 64 69 63 61  74 69 6e 67 20 74 68 61  |e indicating tha|
0003be30  74 20 61 6e 20 65 72 72  6f 72 20 68 61 73 20 6f  |t an error has o|
0003be40  63 63 75 72 65 64 2e 20  49 74 20 69 73 20 72 65  |ccured. It is re|
0003be50  74 75 72 6e 65 64 20 62  79 20 73 65 76 65 72 61  |turned by severa|
0003be60  6c 20 66 75 6e 63 74 69  6f 6e 73 2e 20 49 74 20  |l functions. It |
0003be70  69 73 20 61 63 74 75 61  6c 6c 79 20 64 65 66 69  |is actually defi|
0003be80  6e 65 64 20 61 73 20 28  2d 31 29 2e 44 41 54 41  |ned as (-1).DATA|
0003be90  6a 01 00 00 46 69 6c 65  5f 52 65 74 75 72 6e 50  |j...File_ReturnP|
0003bea0  6f 73 0a 53 79 6e 74 61  78 3a 09 3c 66 69 6c 65  |os.Syntax:.<file|
0003beb0  5f 70 6f 73 69 74 69 6f  6e 3e 20 46 69 6c 65 5f  |_position> File_|
0003bec0  52 65 74 75 72 6e 50 6f  73 20 28 3c 66 69 6c 65  |ReturnPos (<file|
0003bed0  5f 68 61 6e 64 6c 65 3e  20 68 6e 64 29 3b 0a 48  |_handle> hnd);.H|
0003bee0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
0003bef0  46 69 6c 65 2e 68 3d 3e  46 69 6c 65 5f 68 3e 0a  |File.h=>File_h>.|
0003bf00  0a 52 65 74 75 72 6e 73  3a 09 46 69 6c 65 20 70  |.Returns:.File p|
0003bf10  6f 69 6e 74 65 72 20 66  6f 72 20 73 74 72 65 61  |ointer for strea|
0003bf20  6d 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |m...This functio|
0003bf30  6e 20 72 65 61 64 73 20  74 68 65 20 66 69 6c 65  |n reads the file|
0003bf40  20 70 6f 73 69 74 69 6f  6e 20 69 6e 64 69 63 61  | position indica|
0003bf50  74 6f 72 20 66 6f 72 20  74 68 65 20 66 69 6c 65  |tor for the file|
0003bf60  20 77 68 6f 73 65 20 68  61 6e 64 6c 65 20 69 73  | whose handle is|
0003bf70  20 67 69 76 65 6e 20 69  6e 20 2f 68 6e 64 2f 2e  | given in /hnd/.|
0003bf80  20 54 68 69 73 20 69 73  20 74 68 65 20 6e 75 6d  | This is the num|
0003bf90  62 65 72 20 6f 66 20 63  68 61 72 61 63 74 65 72  |ber of character|
0003bfa0  73 20 66 72 6f 6d 20 74  68 65 20 62 65 67 69 6e  |s from the begin|
0003bfb0  6e 69 6e 67 20 6f 66 20  74 68 65 20 66 69 6c 65  |ning of the file|
0003bfc0  2e 20 49 66 20 61 6e 20  65 72 72 6f 72 20 6f 63  |. If an error oc|
0003bfd0  63 75 72 73 20 69 74 20  69 73 20 73 74 6f 72 65  |curs it is store|
0003bfe0  64 20 69 6e 20 3c 66 69  6c 65 5f 6c 61 73 74 65  |d in <file_laste|
0003bff0  72 72 6f 72 3e 2e 00 00  44 41 54 41 fd 00 00 00  |rror>...DATA....|
0003c000  46 69 6c 65 5f 53 65 65  6b 0a 53 79 6e 74 61 78  |File_Seek.Syntax|
0003c010  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 46 69  |:.<os_error> *Fi|
0003c020  6c 65 5f 53 65 65 6b 20  28 3c 66 69 6c 65 5f 68  |le_Seek (<file_h|
0003c030  61 6e 64 6c 65 3e 20 68  6e 64 2c 20 3c 66 69 6c  |andle> hnd, <fil|
0003c040  65 5f 70 6f 73 69 74 69  6f 6e 3e 20 70 6f 73 29  |e_position> pos)|
0003c050  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
0003c060  69 62 3a 46 69 6c 65 2e  68 3d 3e 46 69 6c 65 5f  |ib:File.h=>File_|
0003c070  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |h>..Returns:.Poi|
0003c080  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
0003c090  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
0003c0a0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
0003c0b0  20 73 65 74 73 20 74 68  65 20 66 69 6c 65 20 70  | sets the file p|
0003c0c0  6f 73 69 74 69 6f 6e 20  69 6e 64 69 63 61 74 6f  |osition indicato|
0003c0d0  72 20 66 6f 72 20 74 68  65 20 66 69 6c 65 20 77  |r for the file w|
0003c0e0  68 6f 73 65 20 68 61 6e  64 6c 65 20 69 73 20 67  |hose handle is g|
0003c0f0  69 76 65 6e 2e 00 00 00  44 41 54 41 16 01 00 00  |iven....DATA....|
0003c100  46 69 6c 65 5f 53 65 74  54 79 70 65 0a 53 79 6e  |File_SetType.Syn|
0003c110  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
0003c120  2a 46 69 6c 65 5f 53 65  74 54 79 70 65 20 28 63  |*File_SetType (c|
0003c130  68 61 72 20 2a 66 69 6c  65 6e 61 6d 65 2c 20 69  |har *filename, i|
0003c140  6e 74 20 74 79 70 65 29  3b 0a 48 65 61 64 65 72  |nt type);.Header|
0003c150  3a 09 3c 54 69 6d 73 4c  69 62 3a 46 69 6c 65 2e  |:.<TimsLib:File.|
0003c160  68 3d 3e 46 69 6c 65 5f  54 4c 3e 0a 09 3c 44 65  |h=>File_TL>..<De|
0003c170  73 6b 4c 69 62 3a 46 69  6c 65 2e 68 3d 3e 46 69  |skLib:File.h=>Fi|
0003c180  6c 65 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |le_h>..Returns:.|
0003c190  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
0003c1a0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
0003c1b0  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
0003c1c0  69 6f 6e 20 63 68 61 6e  67 65 73 20 74 68 65 20  |ion changes the |
0003c1d0  3c 66 69 6c 65 20 74 79  70 65 3d 3e 46 69 6c 65  |<file type=>File|
0003c1e0  54 79 70 65 73 3a 21 52  6f 6f 74 3e 20 6f 66 20  |Types:!Root> of |
0003c1f0  74 68 65 20 66 69 6c 65  20 2f 66 69 6c 65 6e 61  |the file /filena|
0003c200  6d 65 2f 20 74 6f 20 2f  74 79 70 65 2f 2e 00 00  |me/ to /type/...|
0003c210  44 41 54 41 49 01 00 00  46 69 6c 65 5f 53 69 7a  |DATAI...File_Siz|
0003c220  65 0a 53 79 6e 74 61 78  3a 09 69 6e 74 20 46 69  |e.Syntax:.int Fi|
0003c230  6c 65 5f 53 69 7a 65 20  28 63 68 61 72 20 2a 66  |le_Size (char *f|
0003c240  69 6c 65 6e 61 6d 65 29  3b 0a 48 65 61 64 65 72  |ilename);.Header|
0003c250  3a 09 3c 44 65 73 6b 4c  69 62 3a 46 69 6c 65 2e  |:.<DeskLib:File.|
0003c260  68 3d 3e 46 69 6c 65 3e  0a 0a 52 65 74 75 72 6e  |h=>File>..Return|
0003c270  73 3a 09 53 69 7a 65 20  6f 66 20 74 68 65 20 66  |s:.Size of the f|
0003c280  69 6c 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |ile...This funct|
0003c290  69 6f 6e 20 72 65 61 64  73 20 74 68 65 20 73 69  |ion reads the si|
0003c2a0  7a 65 20 69 6e 20 62 79  74 65 73 20 6f 66 20 74  |ze in bytes of t|
0003c2b0  68 65 20 66 69 6c 65 20  77 68 6f 73 65 20 66 69  |he file whose fi|
0003c2c0  6c 65 6e 61 6d 65 20 69  73 20 67 69 76 65 6e 2e  |lename is given.|
0003c2d0  20 41 20 72 65 74 75 72  6e 20 76 61 6c 75 65 20  | A return value |
0003c2e0  6f 66 20 30 20 6d 65 61  6e 73 20 74 68 61 74 20  |of 0 means that |
0003c2f0  74 68 65 20 66 69 6c 65  20 69 73 20 6f 66 20 6c  |the file is of l|
0003c300  65 6e 67 74 68 20 30 2c  20 6f 72 20 61 6e 20 65  |ength 0, or an e|
0003c310  72 72 6f 72 20 6f 63 63  75 72 65 64 2e 20 49 66  |rror occured. If|
0003c320  20 61 6e 20 65 72 72 6f  72 20 6f 63 63 75 72 65  | an error occure|
0003c330  64 2c 20 69 74 20 63 61  6e 20 62 65 20 66 6f 75  |d, it can be fou|
0003c340  6e 64 20 66 72 6f 6d 20  3c 66 69 6c 65 5f 6c 61  |nd from <file_la|
0003c350  73 74 65 72 72 6f 72 3e  2e 00 00 00 44 41 54 41  |sterror>....DATA|
0003c360  5a 01 00 00 54 69 6d 73  4c 69 62 3a 46 69 6c 65  |Z...TimsLib:File|
0003c370  2e 68 0a 23 50 61 72 65  6e 74 20 72 6f 5f 74 6c  |.h.#Parent ro_tl|
0003c380  69 62 5f 0a 54 68 69 73  20 68 65 61 64 65 72 20  |ib_.This header |
0003c390  69 73 20 61 6e 20 65 78  74 65 6e 73 69 6f 6e 20  |is an extension |
0003c3a0  74 6f 20 3c 44 65 73 6b  4c 69 62 3a 46 69 6c 65  |to <DeskLib:File|
0003c3b0  2e 68 3d 3e 46 69 6c 65  5f 68 3e 2e 0a 0a 46 75  |.h=>File_h>...Fu|
0003c3c0  6e 63 74 69 6f 6e 73 3a  0a 0a 23 69 6e 64 65 6e  |nctions:..#inden|
0003c3d0  74 20 35 0a 23 54 61 62  6c 65 20 33 20 31 38 0a  |t 5.#Table 3 18.|
0003c3e0  3c 46 69 6c 65 5f 53 65  74 54 79 70 65 3e 0a 3c  |<File_SetType>.<|
0003c3f0  46 69 6c 65 5f 47 65 74  54 79 70 65 3e 0a 3c 46  |File_GetType>.<F|
0003c400  69 6c 65 5f 47 65 74 4c  65 6e 67 74 68 3e 0a 3c  |ile_GetLength>.<|
0003c410  52 65 61 64 45 6e 74 72  69 65 73 3e 0a 3c 46 69  |ReadEntries>.<Fi|
0003c420  6c 65 5f 49 73 44 69 72  65 63 74 6f 72 79 3e 0a  |le_IsDirectory>.|
0003c430  23 45 6e 64 54 61 62 6c  65 0a 23 69 6e 64 65 6e  |#EndTable.#inden|
0003c440  74 20 30 0a 0a 4d 61 63  72 6f 73 3a 0a 0a 23 69  |t 0..Macros:..#i|
0003c450  6e 64 65 6e 74 20 35 0a  23 54 61 62 6c 65 20 31  |ndent 5.#Table 1|
0003c460  20 31 38 0a 3c 4d 41 58  5f 50 41 54 48 5f 4c 45  | 18.<MAX_PATH_LE|
0003c470  4e 3e 0a 3c 46 49 4c 45  54 59 50 45 3e 0a 23 45  |N>.<FILETYPE>.#E|
0003c480  6e 64 54 61 62 6c 65 0a  23 69 6e 64 65 6e 74 20  |ndTable.#indent |
0003c490  30 0a 0a 54 79 70 65 73  3a 0a 0a 7b 61 6c 69 67  |0..Types:..{alig|
0003c4a0  6e 20 63 65 6e 74 72 65  7d 3c 6f 62 6a 65 63 74  |n centre}<object|
0003c4b0  5f 69 6e 66 6f 3e 00 00  44 41 54 41 6e 01 00 00  |_info>..DATAn...|
0003c4c0  46 69 6c 65 5f 57 72 69  74 65 33 32 0a 53 79 6e  |File_Write32.Syn|
0003c4d0  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
0003c4e0  2a 46 69 6c 65 5f 57 72  69 74 65 33 32 20 28 3c  |*File_Write32 (<|
0003c4f0  66 69 6c 65 5f 68 61 6e  64 6c 65 3e 20 68 6e 64  |file_handle> hnd|
0003c500  2c 20 69 6e 74 20 77 6f  72 64 29 3b 0a 48 65 61  |, int word);.Hea|
0003c510  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 46 69  |der:.<DeskLib:Fi|
0003c520  6c 65 2e 68 3d 3e 46 69  6c 65 5f 68 3e 0a 0a 52  |le.h=>File_h>..R|
0003c530  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
0003c540  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
0003c550  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
0003c560  69 73 20 66 75 6e 63 74  69 6f 6e 20 77 72 69 74  |is function writ|
0003c570  65 73 20 61 20 33 32 2d  62 69 74 20 76 61 6c 75  |es a 32-bit valu|
0003c580  65 20 28 77 6f 72 64 2f  69 6e 74 2f 6c 6f 6e 67  |e (word/int/long|
0003c590  29 20 74 6f 20 74 68 65  20 66 69 6c 65 20 77 68  |) to the file wh|
0003c5a0  6f 73 65 20 68 61 6e 64  6c 65 20 69 73 20 67 69  |ose handle is gi|
0003c5b0  76 65 6e 20 69 6e 20 68  6e 64 2e 0a 0a 54 68 69  |ven in hnd...Thi|
0003c5c0  73 20 66 75 6e 63 74 69  6f 6e 20 63 61 6e 20 61  |s function can a|
0003c5d0  6c 73 6f 20 62 65 20 63  61 6c 6c 65 64 20 77 69  |lso be called wi|
0003c5e0  74 68 20 7b 2a 7d 46 69  6c 65 5f 57 72 69 74 65  |th {*}File_Write|
0003c5f0  57 6f 72 64 7b 2a 7d 2c  20 7b 2a 7d 46 69 6c 65  |Word{*}, {*}File|
0003c600  5f 57 72 69 74 65 49 6e  74 7b 2a 7d 20 61 6e 64  |_WriteInt{*} and|
0003c610  20 7b 2a 7d 46 69 6c 65  5f 57 72 69 74 65 4c 6f  | {*}File_WriteLo|
0003c620  6e 67 7b 2a 7d 2e 00 00  44 41 54 41 57 01 00 00  |ng{*}...DATAW...|
0003c630  46 69 6c 65 5f 57 72 69  74 65 33 32 52 0a 53 79  |File_Write32R.Sy|
0003c640  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
0003c650  20 2a 46 69 6c 65 5f 57  72 69 74 65 33 32 52 20  | *File_Write32R |
0003c660  28 3c 66 69 6c 65 5f 68  61 6e 64 6c 65 3e 20 68  |(<file_handle> h|
0003c670  6e 64 2c 20 69 6e 74 20  77 6f 72 64 29 3b 0a 48  |nd, int word);.H|
0003c680  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
0003c690  46 69 6c 65 2e 68 3d 3e  46 69 6c 65 5f 68 3e 0a  |File.h=>File_h>.|
0003c6a0  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
0003c6b0  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
0003c6c0  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
0003c6d0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 69 73  |This function is|
0003c6e0  20 69 64 65 6e 74 69 63  61 6c 20 74 6f 20 3c 46  | identical to <F|
0003c6f0  69 6c 65 5f 57 72 69 74  65 33 32 3e 2c 20 62 75  |ile_Write32>, bu|
0003c700  74 20 77 72 69 74 65 73  20 74 68 65 20 62 79 74  |t writes the byt|
0003c710  65 73 20 4d 53 42 20 66  69 72 73 74 2e 20 49 74  |es MSB first. It|
0003c720  20 63 61 6e 20 61 6c 73  6f 20 62 65 20 63 61 6c  | can also be cal|
0003c730  6c 65 64 20 77 69 74 68  20 7b 2a 7d 46 69 6c 65  |led with {*}File|
0003c740  5f 57 72 69 74 65 57 6f  72 64 52 7b 2a 7d 2c 20  |_WriteWordR{*}, |
0003c750  7b 2a 7d 46 69 6c 65 5f  57 72 69 74 65 49 6e 74  |{*}File_WriteInt|
0003c760  52 7b 2a 7d 20 61 6e 64  20 7b 2a 7d 46 69 6c 65  |R{*} and {*}File|
0003c770  5f 57 72 69 74 65 4c 6f  6e 67 52 7b 2a 7d 2e 00  |_WriteLongR{*}..|
0003c780  44 41 54 41 55 01 00 00  46 69 6c 65 5f 57 72 69  |DATAU...File_Wri|
0003c790  74 65 38 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |te8.Syntax:.<os_|
0003c7a0  65 72 72 6f 72 3e 20 2a  46 69 6c 65 5f 57 72 69  |error> *File_Wri|
0003c7b0  74 65 38 20 28 3c 66 69  6c 65 5f 68 61 6e 64 6c  |te8 (<file_handl|
0003c7c0  65 3e 20 68 6e 64 2c 20  69 6e 74 20 62 79 74 65  |e> hnd, int byte|
0003c7d0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
0003c7e0  4c 69 62 3a 46 69 6c 65  2e 68 3d 3e 46 69 6c 65  |Lib:File.h=>File|
0003c7f0  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |_h>..Returns:.Po|
0003c800  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
0003c810  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
0003c820  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
0003c830  6e 20 77 72 69 74 65 73  20 61 6e 20 38 2d 62 69  |n writes an 8-bi|
0003c840  74 20 76 61 6c 75 65 20  28 62 79 74 65 2f 63 68  |t value (byte/ch|
0003c850  61 72 29 20 74 6f 20 74  68 65 20 66 69 6c 65 20  |ar) to the file |
0003c860  77 68 6f 73 65 20 68 61  6e 64 6c 65 20 69 73 20  |whose handle is |
0003c870  67 69 76 65 6e 20 69 6e  20 2f 68 6e 64 2f 2e 0a  |given in /hnd/..|
0003c880  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
0003c890  61 6e 20 61 6c 73 6f 20  62 65 20 63 61 6c 6c 65  |an also be calle|
0003c8a0  64 20 77 69 74 68 20 7b  2a 7d 46 69 6c 65 5f 57  |d with {*}File_W|
0003c8b0  72 69 74 65 42 79 74 65  7b 2a 7d 20 61 6e 64 20  |riteByte{*} and |
0003c8c0  7b 2a 7d 46 69 6c 65 5f  57 72 69 74 65 43 68 61  |{*}File_WriteCha|
0003c8d0  72 7b 2a 7d 2e 00 00 00  44 41 54 41 48 01 00 00  |r{*}....DATAH...|
0003c8e0  46 69 6c 65 5f 57 72 69  74 65 42 79 74 65 73 0a  |File_WriteBytes.|
0003c8f0  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
0003c900  72 3e 20 2a 46 69 6c 65  5f 57 72 69 74 65 42 79  |r> *File_WriteBy|
0003c910  74 65 73 20 28 3c 66 69  6c 65 5f 68 61 6e 64 6c  |tes (<file_handl|
0003c920  65 3e 20 68 61 6e 64 6c  65 2c 20 76 6f 69 64 20  |e> handle, void |
0003c930  2a 62 75 66 66 65 72 2c  20 69 6e 74 20 6e 62 79  |*buffer, int nby|
0003c940  74 65 73 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |tes);.Header:.<D|
0003c950  65 73 6b 4c 69 62 3a 46  69 6c 65 2e 68 3d 3e 46  |eskLib:File.h=>F|
0003c960  69 6c 65 5f 68 3e 0a 0a  52 65 74 75 72 6e 73 3a  |ile_h>..Returns:|
0003c970  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
0003c980  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
0003c990  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
0003c9a0  74 69 6f 6e 20 77 72 69  74 65 73 20 74 68 65 20  |tion writes the |
0003c9b0  67 69 76 65 6e 20 6e 75  6d 62 65 72 20 6f 66 20  |given number of |
0003c9c0  62 79 74 65 73 20 6f 66  20 64 61 74 61 20 69 6e  |bytes of data in|
0003c9d0  74 6f 20 74 68 65 20 66  69 6c 65 20 77 68 6f 73  |to the file whos|
0003c9e0  65 20 68 61 6e 64 6c 65  20 69 73 20 67 69 76 65  |e handle is give|
0003c9f0  6e 2c 20 66 72 6f 6d 20  74 68 65 20 61 72 65 61  |n, from the area|
0003ca00  20 6f 66 20 6d 65 6d 6f  72 79 20 70 6f 69 6e 74  | of memory point|
0003ca10  65 64 20 74 6f 20 62 79  20 62 75 66 66 65 72 2e  |ed to by buffer.|
0003ca20  44 41 54 41 e0 00 00 00  46 69 6c 65 5f 44 61 74  |DATA....File_Dat|
0003ca30  65 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 46  |e.Syntax:.void F|
0003ca40  69 6c 65 5f 44 61 74 65  20 28 63 68 61 72 20 2a  |ile_Date (char *|
0003ca50  66 69 6c 65 6e 61 6d 65  2c 20 63 68 61 72 20 2a  |filename, char *|
0003ca60  66 69 76 65 62 79 74 65  64 61 74 65 29 3b 0a 48  |fivebytedate);.H|
0003ca70  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
0003ca80  46 69 6c 65 2e 68 3d 3e  66 69 6c 65 5f 68 3e 0a  |File.h=>file_h>.|
0003ca90  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
0003caa0  65 61 64 73 20 74 68 65  20 64 61 74 65 73 74 61  |eads the datesta|
0003cab0  6d 70 20 6f 66 20 74 68  65 20 66 69 6c 65 20 2f  |mp of the file /|
0003cac0  66 69 6c 65 6e 61 6d 65  2f 20 69 6e 74 6f 20 74  |filename/ into t|
0003cad0  68 65 20 66 69 76 65 20  62 79 74 65 20 62 6c 6f  |he five byte blo|
0003cae0  63 6b 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |ck pointed to by|
0003caf0  20 2f 66 69 76 65 62 79  74 65 64 61 74 61 2f 2e  | /fivebytedata/.|
0003cb00  44 41 54 41 a9 01 00 00  46 69 6c 65 5f 70 72 69  |DATA....File_pri|
0003cb10  6e 74 66 0a 53 79 6e 74  61 78 3a 09 69 6e 74 20  |ntf.Syntax:.int |
0003cb20  46 69 6c 65 5f 70 72 69  6e 74 66 20 28 3c 66 69  |File_printf (<fi|
0003cb30  6c 65 5f 68 61 6e 64 6c  65 3e 20 66 2c 20 63 68  |le_handle> f, ch|
0003cb40  61 72 20 2a 66 6f 72 6d  61 74 2c 20 2e 2e 2e 29  |ar *format, ...)|
0003cb50  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
0003cb60  69 62 3a 46 69 6c 65 2e  68 3d 3e 46 69 6c 65 5f  |ib:File.h=>File_|
0003cb70  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 54 68 65  |h>..Returns:.The|
0003cb80  20 6e 75 6d 62 65 72 20  6f 66 20 63 68 61 72 61  | number of chara|
0003cb90  63 74 65 72 73 20 77 72  69 74 74 65 6e 2c 20 6f  |cters written, o|
0003cba0  72 20 61 20 6e 65 67 61  74 69 76 65 20 76 61 6c  |r a negative val|
0003cbb0  75 65 20 69 66 20 74 68  65 72 65 20 77 61 73 20  |ue if there was |
0003cbc0  61 6e 20 65 72 72 6f 72  2e 0a 0a 54 68 69 73 20  |an error...This |
0003cbd0  66 75 6e 63 74 69 6f 6e  20 77 72 69 74 65 73 20  |function writes |
0003cbe0  6f 75 74 70 75 74 20 74  6f 20 74 68 65 20 66 69  |output to the fi|
0003cbf0  6c 65 20 2f 66 2f 20 75  6e 64 65 72 20 63 6f 6e  |le /f/ under con|
0003cc00  74 72 6f 6c 20 6f 66 20  74 68 65 20 3c 66 6f 72  |trol of the <for|
0003cc10  6d 61 74 20 73 74 72 69  6e 67 3d 3e 70 66 6f 72  |mat string=>pfor|
0003cc20  6d 5f 3e 2e 20 49 74 20  69 73 20 65 71 75 69 76  |m_>. It is equiv|
0003cc30  61 6c 65 6e 74 20 74 6f  20 3c 66 70 72 69 6e 74  |alent to <fprint|
0003cc40  66 3e 28 29 20 62 75 74  20 75 73 69 6e 67 20 61  |f>() but using a|
0003cc50  20 52 49 53 43 20 4f 53  20 66 69 6c 65 20 68 61  | RISC OS file ha|
0003cc60  6e 64 6c 65 2e 0a 0a 53  74 72 69 6e 67 20 6d 75  |ndle...String mu|
0003cc70  73 74 20 6e 6f 74 20 62  65 20 6c 6f 6e 67 65 72  |st not be longer|
0003cc80  20 74 68 61 6e 20 35 31  32 20 63 68 61 72 61 63  | than 512 charac|
0003cc90  74 65 72 73 20 61 66 74  65 72 20 73 75 62 73 74  |ters after subst|
0003cca0  69 74 75 74 69 6f 6e 73  2e 00 00 00 44 49 52 24  |itutions....DIR$|
0003ccb0  2c 00 00 00 2c 00 00 00  d8 cc 03 00 46 fd ff ff  |,...,.......F...|
0003ccc0  e8 68 c1 22 e4 00 00 00  13 00 00 00 00 00 00 00  |.h."............|
0003ccd0  21 52 6f 6f 74 00 00 00  44 41 54 41 e4 00 00 00  |!Root...DATA....|
0003cce0  46 69 6c 65 20 48 61 6e  64 6c 69 6e 67 20 46 75  |File Handling Fu|
0003ccf0  6e 63 74 69 6f 6e 73 0a  23 50 61 72 65 6e 74 20  |nctions.#Parent |
0003cd00  73 74 64 69 6f 0a 54 68  65 73 65 20 66 75 6e 63  |stdio.These func|
0003cd10  74 69 6f 6e 73 20 64 65  61 6c 20 77 69 74 68 20  |tions deal with |
0003cd20  6d 61 6e 69 70 75 6c 61  74 69 6e 67 20 72 61 6e  |manipulating ran|
0003cd30  64 6f 6d 20 61 63 63 65  73 73 20 66 69 6c 65 73  |dom access files|
0003cd40  2e 0a 0a 23 54 61 62 6c  65 20 34 20 31 36 0a 3c  |...#Table 4 16.<|
0003cd50  66 63 6c 6f 73 65 3e 0a  3c 66 66 6c 75 73 68 3e  |fclose>.<fflush>|
0003cd60  0a 3c 66 6f 70 65 6e 3e  0a 3c 66 72 65 6f 70 65  |.<fopen>.<freope|
0003cd70  6e 3e 0a 3c 73 65 74 62  75 66 3e 0a 3c 73 65 74  |n>.<setbuf>.<set|
0003cd80  76 62 75 66 3e 0a 3c 66  67 65 74 70 6f 73 3e 0a  |vbuf>.<fgetpos>.|
0003cd90  3c 66 73 65 74 70 6f 73  3e 0a 3c 66 73 65 65 6b  |<fsetpos>.<fseek|
0003cda0  3e 0a 3c 66 74 65 6c 6c  3e 0a 3c 72 65 77 69 6e  |>.<ftell>.<rewin|
0003cdb0  64 3e 0a 23 45 6e 64 54  61 62 6c 65 44 41 54 41  |d>.#EndTableDATA|
0003cdc0  31 01 00 00 66 69 6c 65  69 63 6f 6e 2e 68 0a 54  |1...fileicon.h.T|
0003cdd0  68 69 73 20 68 65 61 64  65 72 20 64 65 63 6c 61  |his header decla|
0003cde0  72 65 73 20 6a 75 73 74  20 6f 6e 65 20 66 75 6e  |res just one fun|
0003cdf0  63 74 69 6f 6e 3a 0a 0a  53 79 6e 74 61 78 3a 09  |ction:..Syntax:.|
0003ce00  76 6f 69 64 20 66 69 6c  65 69 63 6f 6e 20 28 3c  |void fileicon (<|
0003ce10  77 69 6d 70 5f 77 3e 20  77 69 6e 2c 20 3c 77 69  |wimp_w> win, <wi|
0003ce20  6d 70 5f 69 3e 20 69 63  6f 6e 2c 20 69 6e 74 20  |mp_i> icon, int |
0003ce30  66 69 6c 65 74 79 70 65  29 3b 0a 0a 54 68 69 73  |filetype);..This|
0003ce40  20 66 75 6e 63 74 69 6f  6e 20 63 68 61 6e 67 65  | function change|
0003ce50  73 20 74 68 65 20 67 69  76 65 6e 20 69 63 6f 6e  |s the given icon|
0003ce60  20 74 6f 20 64 69 73 70  6c 61 79 20 74 68 65 20  | to display the |
0003ce70  66 69 6c 65 20 69 63 6f  6e 20 66 6f 72 20 74 68  |file icon for th|
0003ce80  65 20 67 69 76 65 6e 20  66 69 6c 65 74 79 70 65  |e given filetype|
0003ce90  2c 20 75 73 69 6e 67 20  22 66 69 6c 65 5f 78 78  |, using "file_xx|
0003cea0  78 22 20 66 6f 72 20 75  6e 6b 6e 6f 77 6e 20 74  |x" for unknown t|
0003ceb0  79 70 65 73 2e 0a 0a 53  65 65 20 61 6c 73 6f 20  |ypes...See also |
0003cec0  74 68 65 20 54 69 6d 73  4c 69 62 20 66 75 6e 63  |the TimsLib func|
0003ced0  74 69 6f 6e 2c 20 3c 46  69 6c 65 49 63 6f 6e 3d  |tion, <FileIcon=|
0003cee0  3e 46 69 6c 65 49 63 6f  6e 5f 68 3e 2e 00 00 00  |>FileIcon_h>....|
0003cef0  44 49 52 24 28 00 00 00  28 00 00 00 18 cf 03 00  |DIR$(...(.......|
0003cf00  46 fd ff ff 0c 64 55 26  3e 01 00 00 13 00 00 00  |F....dU&>.......|
0003cf10  00 00 00 00 68 00 00 00  44 41 54 41 3e 01 00 00  |....h...DATA>...|
0003cf20  54 69 6d 73 4c 69 62 3a  46 69 6c 65 49 63 6f 6e  |TimsLib:FileIcon|
0003cf30  2e 68 0a 54 68 69 73 20  68 65 61 64 65 72 20 70  |.h.This header p|
0003cf40  72 6f 76 69 64 65 73 20  6a 75 73 74 20 6f 6e 65  |rovides just one|
0003cf50  20 66 75 6e 63 74 69 6f  6e 3a 0a 0a 53 79 6e 74  | function:..Synt|
0003cf60  61 78 3a 09 76 6f 69 64  20 46 69 6c 65 49 63 6f  |ax:.void FileIco|
0003cf70  6e 20 28 3c 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |n (<window_handl|
0003cf80  65 3e 20 77 69 6e 2c 20  3c 69 63 6f 6e 5f 68 61  |e> win, <icon_ha|
0003cf90  6e 64 6c 65 3e 20 69 63  6f 6e 2c 20 69 6e 74 20  |ndle> icon, int |
0003cfa0  66 69 6c 65 74 79 70 65  29 3b 0a 0a 54 68 69 73  |filetype);..This|
0003cfb0  20 66 75 6e 63 74 69 6f  6e 20 63 68 61 6e 67 65  | function change|
0003cfc0  73 20 74 68 65 20 69 63  6f 6e 20 73 70 65 63 69  |s the icon speci|
0003cfd0  66 69 65 64 20 28 77 68  69 63 68 20 6d 75 73 74  |fied (which must|
0003cfe0  20 62 65 20 61 6e 20 69  6e 64 69 72 65 63 74 65  | be an indirecte|
0003cff0  64 20 74 65 78 74 2d 6f  6e 6c 79 20 69 63 6f 6e  |d text-only icon|
0003d000  29 20 74 6f 20 61 6e 20  69 6e 64 69 72 65 63 74  |) to an indirect|
0003d010  65 64 20 73 70 72 69 74  65 2d 6f 6e 6c 79 20 69  |ed sprite-only i|
0003d020  63 6f 6e 20 77 69 74 68  20 61 20 73 70 72 69 74  |con with a sprit|
0003d030  65 20 72 65 70 72 65 73  65 6e 74 69 6e 67 20 74  |e representing t|
0003d040  68 65 20 66 69 6c 65 74  79 70 65 20 73 70 65 63  |he filetype spec|
0003d050  69 66 69 65 64 2e 00 00  44 49 52 24 28 00 00 00  |ified...DIR$(...|
0003d060  28 00 00 00 80 d0 03 00  46 ff ff ff 74 8d c4 22  |(.......F...t.."|
0003d070  20 01 00 00 13 00 00 00  00 00 00 00 4d 41 58 00  | ...........MAX.|
0003d080  44 41 54 41 20 01 00 00  46 49 4c 45 4e 41 4d 45  |DATA ...FILENAME|
0003d090  5f 4d 41 58 0a 23 50 61  72 65 6e 74 20 73 74 64  |_MAX.#Parent std|
0003d0a0  69 6f 0a 54 68 65 20 6d  61 63 72 6f 20 46 49 4c  |io.The macro FIL|
0003d0b0  45 4e 41 4d 45 5f 4d 41  58 20 69 73 20 64 65 66  |ENAME_MAX is def|
0003d0c0  69 6e 65 64 20 69 6e 20  3c 73 74 64 69 6f 2e 68  |ined in <stdio.h|
0003d0d0  3d 3e 73 74 64 69 6f 3e  20 61 73 20 74 68 65 20  |=>stdio> as the |
0003d0e0  6c 65 6e 67 74 68 20 6f  66 20 74 68 65 20 6c 6f  |length of the lo|
0003d0f0  6e 67 65 73 74 20 66 69  6c 65 6e 61 6d 65 20 74  |ngest filename t|
0003d100  68 61 74 20 63 61 6e 20  62 65 20 68 61 6e 64 6c  |hat can be handl|
0003d110  65 64 20 62 79 20 74 68  65 20 66 69 6c 65 20 49  |ed by the file I|
0003d120  2f 4f 20 66 75 6e 63 74  69 6f 6e 73 2e 20 49 74  |/O functions. It|
0003d130  20 69 73 20 69 6e 74 65  6e 64 65 64 20 74 6f 20  | is intended to |
0003d140  62 65 20 75 73 65 64 20  61 73 20 74 68 65 20 73  |be used as the s|
0003d150  75 62 73 63 72 69 70 74  20 66 6f 72 20 61 20 63  |ubscript for a c|
0003d160  68 61 72 20 61 72 72 61  79 20 75 73 65 64 20 74  |har array used t|
0003d170  6f 20 68 6f 6c 64 20 66  69 6c 65 6e 61 6d 65 73  |o hold filenames|
0003d180  2e 20 49 6e 20 45 61 73  79 a0 43 20 69 74 20 69  |. In Easy.C it i|
0003d190  73 20 64 65 66 69 6e 65  64 20 61 73 20 38 30 2e  |s defined as 80.|
0003d1a0  44 49 52 24 2c 00 00 00  2c 00 00 00 cc d1 03 00  |DIR$,...,.......|
0003d1b0  46 fd ff ff 7b 9c c0 22  92 00 00 00 13 00 00 00  |F...{.."........|
0003d1c0  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
0003d1d0  92 00 00 00 46 69 6c 65  20 4f 70 65 72 61 74 69  |....File Operati|
0003d1e0  6f 6e 20 46 75 6e 63 74  69 6f 6e 73 0a 23 50 61  |on Functions.#Pa|
0003d1f0  72 65 6e 74 20 73 74 64  69 6f 0a 54 68 65 73 65  |rent stdio.These|
0003d200  20 66 75 6e 63 74 69 6f  6e 73 20 6f 70 65 72 61  | functions opera|
0003d210  74 65 20 6f 6e 20 77 68  6f 6c 65 20 66 69 6c 65  |te on whole file|
0003d220  73 3a 0a 0a 23 54 61 62  6c 65 20 32 20 31 38 0a  |s:..#Table 2 18.|
0003d230  3c 72 65 6d 6f 76 65 3e  0a 3c 72 65 6e 61 6d 65  |<remove>.<rename|
0003d240  3e 0a 3c 74 6d 70 66 69  6c 65 3e 0a 3c 74 6d 70  |>.<tmpfile>.<tmp|
0003d250  6e 61 6d 3e 0a 23 45 6e  64 54 61 62 6c 65 00 00  |nam>.#EndTable..|
0003d260  44 49 52 24 2c 00 00 00  2c 00 00 00 8c d2 03 00  |DIR$,...,.......|
0003d270  46 fd ff ff 0a a9 b5 22  4d 00 00 00 13 00 00 00  |F......"M.......|
0003d280  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
0003d290  4d 00 00 00 46 69 6c 65  72 41 63 74 69 6f 6e 0a  |M...FilerAction.|
0003d2a0  53 65 6e 64 53 65 6c 65  63 74 65 64 44 69 72 65  |SendSelectedDire|
0003d2b0  63 74 6f 72 79 0a 53 65  6e 64 53 65 6c 65 63 74  |ctory.SendSelect|
0003d2c0  65 64 46 69 6c 65 0a 53  65 6e 64 53 74 61 72 74  |edFile.SendStart|
0003d2d0  4f 70 65 72 61 74 69 6f  6e 00 00 00 44 41 54 41  |Operation...DATA|
0003d2e0  09 01 00 00 46 49 4c 45  54 59 50 45 0a 54 68 69  |....FILETYPE.Thi|
0003d2f0  73 20 69 73 20 61 20 66  75 6e 63 74 69 6f 6e 2d  |s is a function-|
0003d300  6c 69 6b 65 20 6d 61 63  72 6f 20 64 65 66 69 6e  |like macro defin|
0003d310  65 64 20 69 6e 20 3c 54  69 6d 73 4c 69 62 3a 46  |ed in <TimsLib:F|
0003d320  69 6c 65 2e 68 3d 3e 46  69 6c 65 5f 54 4c 3e 20  |ile.h=>File_TL> |
0003d330  61 6e 64 20 3c 44 65 73  6b 4c 69 62 3a 46 69 6c  |and <DeskLib:Fil|
0003d340  65 2e 68 3d 3e 46 69 6c  65 5f 68 3e 2e 20 49 74  |e.h=>File_h>. It|
0003d350  20 73 69 6d 70 6c 79 20  72 65 74 75 72 6e 73 20  | simply returns |
0003d360  61 20 66 69 6c 65 74 79  70 65 20 66 72 6f 6d 20  |a filetype from |
0003d370  61 20 6c 6f 61 64 20 61  64 64 72 65 73 73 2e 20  |a load address. |
0003d380  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It is defined as|
0003d390  3a 0a 7b 77 72 61 70 20  6f 66 66 7d 0a 7b 66 43  |:.{wrap off}.{fC|
0003d3a0  6f 64 65 3b 61 6c 69 67  6e 20 63 65 6e 74 72 65  |ode;align centre|
0003d3b0  7d 3c 23 64 65 66 69 6e  65 3d 3e 64 65 66 69 6e  |}<#define=>defin|
0003d3c0  65 3e 20 46 49 4c 45 54  59 50 45 28 78 29 20 28  |e> FILETYPE(x) (|
0003d3d0  28 28 78 29 20 26 20 30  78 46 46 46 30 30 29 20  |((x) & 0xFFF00) |
0003d3e0  3e 3e 20 38 29 00 00 00  44 49 52 24 2c 00 00 00  |>> 8)...DIR$,...|
0003d3f0  2c 00 00 00 14 d4 03 00  46 fd ff ff 4a a9 28 25  |,.......F...J.(%|
0003d400  23 05 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |#...........!Roo|
0003d410  74 00 00 00 44 41 54 41  23 05 00 00 46 69 6c 65  |t...DATA#...File|
0003d420  20 74 79 70 65 73 0a 54  68 65 72 65 20 61 72 65  | types.There are|
0003d430  20 6d 61 63 72 6f 73 20  64 65 66 69 6e 65 64 20  | macros defined |
0003d440  66 6f 72 20 6d 61 6e 79  20 6f 66 20 74 68 65 20  |for many of the |
0003d450  63 6f 6d 6d 6f 6e 20 66  69 6c 65 20 74 79 70 65  |common file type|
0003d460  73 20 69 6e 20 3c 44 65  73 6b 4c 69 62 3a 46 69  |s in <DeskLib:Fi|
0003d470  6c 65 2e 68 3d 3e 46 69  6c 65 5f 68 3e 2e 20 54  |le.h=>File_h>. T|
0003d480  68 65 20 6d 61 63 72 6f  73 20 61 72 65 3a 0a 0a  |he macros are:..|
0003d490  66 69 6c 65 74 79 70 65  5f 41 49 4d 09 09 30 78  |filetype_AIM..0x|
0003d4a0  30 30 34 09 66 69 6c 65  74 79 70 65 5f 44 45 56  |004.filetype_DEV|
0003d4b0  49 43 45 09 09 30 78 46  43 43 0a 66 69 6c 65 74  |ICE..0xFCC.filet|
0003d4c0  79 70 65 5f 43 4c 45 41  52 09 09 30 78 36 39 30  |ype_CLEAR..0x690|
0003d4d0  09 66 69 6c 65 74 79 70  65 5f 43 41 43 48 45 09  |.filetype_CACHE.|
0003d4e0  09 30 78 46 43 46 0a 66  69 6c 65 74 79 70 65 5f  |.0xFCF.filetype_|
0003d4f0  44 45 47 41 53 09 09 30  78 36 39 31 09 66 69 6c  |DEGAS..0x691.fil|
0003d500  65 74 79 70 65 5f 50 43  45 4d 43 4f 4e 46 09 30  |etype_PCEMCONF.0|
0003d510  78 46 44 30 0a 66 69 6c  65 74 79 70 65 5f 49 4d  |xFD0.filetype_IM|
0003d520  47 09 09 30 78 36 39 32  09 66 69 6c 65 74 79 70  |G..0x692.filetyp|
0003d530  65 5f 44 45 42 49 4d 41  47 45 09 30 78 46 44 33  |e_DEBIMAGE.0xFD3|
0003d540  0a 66 69 6c 65 74 79 70  65 5f 41 4d 49 47 41 49  |.filetype_AMIGAI|
0003d550  46 46 09 30 78 36 39 33  09 66 69 6c 65 74 79 70  |FF.0x693.filetyp|
0003d560  65 5f 54 41 53 4b 45 58  45 43 09 30 78 46 44 36  |e_TASKEXEC.0xFD6|
0003d570  0a 66 69 6c 65 74 79 70  65 5f 4d 41 43 50 41 49  |.filetype_MACPAI|
0003d580  4e 54 09 30 78 36 39 34  09 66 69 6c 65 74 79 70  |NT.0x694.filetyp|
0003d590  65 5f 54 41 53 4b 4f 42  45 59 09 30 78 46 44 37  |e_TASKOBEY.0xFD7|
0003d5a0  0a 66 69 6c 65 74 79 70  65 5f 47 49 46 09 09 30  |.filetype_GIF..0|
0003d5b0  78 36 39 35 09 66 69 6c  65 74 79 70 65 5f 4d 41  |x695.filetype_MA|
0003d5c0  4b 45 46 49 4c 45 09 30  78 46 45 31 0a 66 69 6c  |KEFILE.0xFE1.fil|
0003d5d0  65 74 79 70 65 5f 50 43  58 09 09 30 78 36 39 37  |etype_PCX..0x697|
0003d5e0  09 66 69 6c 65 74 79 70  65 5f 44 4f 53 09 09 30  |.filetype_DOS..0|
0003d5f0  78 46 45 34 0a 66 69 6c  65 74 79 70 65 5f 51 52  |xFE4.filetype_QR|
0003d600  54 09 09 30 78 36 39 38  09 66 69 6c 65 74 79 70  |T..0x698.filetyp|
0003d610  65 5f 44 45 53 4b 54 4f  50 09 30 78 46 45 41 0a  |e_DESKTOP.0xFEA.|
0003d620  66 69 6c 65 74 79 70 65  5f 4d 54 56 09 09 30 78  |filetype_MTV..0x|
0003d630  36 39 39 09 66 69 6c 65  74 79 70 65 5f 4f 42 45  |699.filetype_OBE|
0003d640  59 09 09 30 78 46 45 42  0a 66 69 6c 65 74 79 70  |Y..0xFEB.filetyp|
0003d650  65 5f 43 41 44 53 4f 46  54 09 30 78 36 39 41 09  |e_CADSOFT.0x69A.|
0003d660  66 69 6c 65 74 79 70 65  5f 54 45 4d 50 4c 41 54  |filetype_TEMPLAT|
0003d670  45 09 30 78 46 45 43 0a  66 69 6c 65 74 79 70 65  |E.0xFEC.filetype|
0003d680  5f 49 52 4c 41 4d 09 09  30 78 36 39 42 09 66 69  |_IRLAM..0x69B.fi|
0003d690  6c 65 74 79 70 65 5f 50  41 4c 45 54 54 45 09 30  |letype_PALETTE.0|
0003d6a0  78 46 45 44 0a 66 69 6c  65 74 79 70 65 5f 42 4d  |xFED.filetype_BM|
0003d6b0  50 09 09 30 78 36 39 43  09 66 69 6c 65 74 79 70  |P..0x69C.filetyp|
0003d6c0  65 5f 54 49 46 46 09 09  30 78 46 46 30 0a 66 69  |e_TIFF..0xFF0.fi|
0003d6d0  6c 65 74 79 70 65 5f 54  41 52 47 41 09 09 30 78  |letype_TARGA..0x|
0003d6e0  36 39 44 09 66 69 6c 65  74 79 70 65 5f 43 4f 4e  |69D.filetype_CON|
0003d6f0  46 49 47 09 09 30 78 46  46 32 0a 66 69 6c 65 74  |FIG..0xFF2.filet|
0003d700  79 70 65 5f 50 42 4d 50  6c 75 73 09 30 78 36 39  |ype_PBMPlus.0x69|
0003d710  45 09 66 69 6c 65 74 79  70 65 5f 50 52 49 4e 54  |E.filetype_PRINT|
0003d720  4f 55 54 09 30 78 46 46  34 0a 66 69 6c 65 74 79  |OUT.0xFF4.filety|
0003d730  70 65 5f 5a 56 44 41 09  09 30 78 36 39 46 09 66  |pe_ZVDA..0x69F.f|
0003d740  69 6c 65 74 79 70 65 5f  50 4f 53 43 52 49 50 54  |iletype_POSCRIPT|
0003d750  09 30 78 46 46 35 0a 66  69 6c 65 74 79 70 65 5f  |.0xFF5.filetype_|
0003d760  41 4c 41 52 4d 53 09 09  30 78 41 45 39 09 66 69  |ALARMS..0xAE9.fi|
0003d770  6c 65 74 79 70 65 5f 46  4f 4e 54 09 09 30 78 46  |letype_FONT..0xF|
0003d780  46 36 0a 66 69 6c 65 74  79 70 65 5f 44 52 41 57  |F6.filetype_DRAW|
0003d790  46 49 4c 45 09 30 78 41  46 46 09 66 69 6c 65 74  |FILE.0xAFF.filet|
0003d7a0  79 70 65 5f 42 42 43 46  4f 4e 54 09 30 78 46 46  |ype_BBCFONT.0xFF|
0003d7b0  37 0a 66 69 6c 65 74 79  70 65 5f 42 42 43 52 4f  |7.filetype_BBCRO|
0003d7c0  4d 09 09 30 78 42 42 43  09 66 69 6c 65 74 79 70  |M..0xBBC.filetyp|
0003d7d0  65 5f 41 42 53 4f 4c 55  54 45 09 30 78 46 46 38  |e_ABSOLUTE.0xFF8|
0003d7e0  0a 66 69 6c 65 74 79 70  65 5f 41 55 44 49 4f 57  |.filetype_AUDIOW|
0003d7f0  52 4b 09 30 78 42 44 36  09 66 69 6c 65 74 79 70  |RK.0xBD6.filetyp|
0003d800  65 5f 53 50 52 49 54 45  09 09 30 78 46 46 39 0a  |e_SPRITE..0xFF9.|
0003d810  66 69 6c 65 74 79 70 65  5f 52 45 4e 44 50 49 43  |filetype_RENDPIC|
0003d820  09 30 78 44 35 38 09 66  69 6c 65 74 79 70 65 5f  |.0xD58.filetype_|
0003d830  4d 4f 44 55 4c 45 09 09  30 78 46 46 41 0a 66 69  |MODULE..0xFFA.fi|
0003d840  6c 65 74 79 70 65 5f 41  52 43 48 49 56 45 09 30  |letype_ARCHIVE.0|
0003d850  78 44 44 43 09 66 69 6c  65 74 79 70 65 5f 42 41  |xDDC.filetype_BA|
0003d860  53 49 43 09 09 30 78 46  46 42 0a 66 69 6c 65 74  |SIC..0xFFB.filet|
0003d870  79 70 65 5f 50 52 4f 41  52 54 09 09 30 78 44 45  |ype_PROART..0xDE|
0003d880  32 09 66 69 6c 65 74 79  70 65 5f 55 54 49 4c 49  |2.filetype_UTILI|
0003d890  54 59 09 30 78 46 46 43  0a 66 69 6c 65 74 79 70  |TY.0xFFC.filetyp|
0003d8a0  65 5f 50 49 43 54 55 52  45 09 30 78 44 46 41 09  |e_PICTURE.0xDFA.|
0003d8b0  66 69 6c 65 74 79 70 65  5f 44 41 54 41 09 09 30  |filetype_DATA..0|
0003d8c0  78 46 46 44 0a 66 69 6c  65 74 79 70 65 5f 50 52  |xFFD.filetype_PR|
0003d8d0  4e 54 44 45 46 4e 09 30  78 46 43 36 09 66 69 6c  |NTDEFN.0xFC6.fil|
0003d8e0  65 74 79 70 65 5f 43 4f  4d 4d 41 4e 44 09 30 78  |etype_COMMAND.0x|
0003d8f0  46 46 45 0a 66 69 6c 65  74 79 70 65 5f 44 4f 53  |FFE.filetype_DOS|
0003d900  44 49 53 43 09 30 78 46  43 38 09 66 69 6c 65 74  |DISC.0xFC8.filet|
0003d910  79 70 65 5f 54 45 58 54  09 09 30 78 46 46 46 0a  |ype_TEXT..0xFFF.|
0003d920  66 69 6c 65 74 79 70 65  5f 53 55 4e 52 41 53 54  |filetype_SUNRAST|
0003d930  52 09 30 78 46 43 39 00  44 41 54 41 45 01 00 00  |R.0xFC9.DATAE...|
0003d940  44 65 73 6b 4c 69 62 3a  46 69 6c 74 65 72 2e 68  |DeskLib:Filter.h|
0003d950  0a 56 65 72 73 69 6f 6e  3a 20 31 2e 30 31 20 28  |.Version: 1.01 (|
0003d960  32 32 20 4f 63 74 20 31  39 39 34 29 0a 23 6c 69  |22 Oct 1994).#li|
0003d970  6e 65 0a 54 68 69 73 20  68 65 61 64 65 72 20 64  |ne.This header d|
0003d980  65 63 6c 61 72 65 73 20  66 75 6e 63 74 69 6f 6e  |eclares function|
0003d990  73 20 66 6f 72 20 74 68  65 20 52 49 53 43 a0 4f  |s for the RISC.O|
0003d9a0  53 a0 33 20 46 69 6c 74  65 72 20 4d 61 6e 61 67  |S.3 Filter Manag|
0003d9b0  65 72 2e 0a 0a 46 75 6e  63 74 69 6f 6e 73 3a 0a  |er...Functions:.|
0003d9c0  0a 23 74 61 62 6c 65 20  63 6f 6c 75 6d 6e 73 20  |.#table columns |
0003d9d0  32 0a 3c 46 69 6c 74 65  72 5f 52 65 67 69 73 74  |2.<Filter_Regist|
0003d9e0  65 72 50 72 65 46 69 6c  74 65 72 3e 0a 3c 46 69  |erPreFilter>.<Fi|
0003d9f0  6c 74 65 72 5f 52 65 67  69 73 74 65 72 50 6f 73  |lter_RegisterPos|
0003da00  74 46 69 6c 74 65 72 3e  0a 3c 46 69 6c 74 65 72  |tFilter>.<Filter|
0003da10  5f 44 65 52 65 67 69 73  74 65 72 50 72 65 46 69  |_DeRegisterPreFi|
0003da20  6c 74 65 72 3e 0a 3c 46  69 6c 74 65 72 5f 44 65  |lter>.<Filter_De|
0003da30  52 65 67 69 73 74 65 72  50 6f 73 74 46 69 6c 74  |RegisterPostFilt|
0003da40  65 72 3e 0a 23 65 6e 64  74 61 62 6c 65 0a 0a 23  |er>.#endtable..#|
0003da50  69 6e 64 65 6e 74 20 30  0a 54 79 70 65 3a 0a 7b  |indent 0.Type:.{|
0003da60  61 6c 69 67 6e 20 63 65  6e 74 72 65 7d 3c 66 69  |align centre}<fi|
0003da70  6c 74 65 72 5f 68 61 6e  64 6c 65 72 3e 00 00 00  |lter_handler>...|
0003da80  44 49 52 24 e0 00 00 00  e0 00 00 00 60 db 03 00  |DIR$........`...|
0003da90  46 ff ff ff 02 04 29 25  fe 00 00 00 13 00 00 00  |F.....)%........|
0003daa0  00 00 00 00 44 65 52 65  67 69 73 74 65 72 50 6f  |....DeRegisterPo|
0003dab0  73 74 46 69 6c 74 65 72  00 00 00 00 60 dc 03 00  |stFilter....`...|
0003dac0  46 ff ff ff 6b fd 28 25  fa 00 00 00 13 00 00 00  |F...k.(%........|
0003dad0  00 00 00 00 44 65 52 65  67 69 73 74 65 72 50 72  |....DeRegisterPr|
0003dae0  65 46 69 6c 74 65 72 00  5c dd 03 00 46 ff ff ff  |eFilter.\...F...|
0003daf0  a2 e9 28 25 ec 00 00 00  13 00 00 00 00 00 00 00  |..(%............|
0003db00  68 61 6e 64 6c 65 72 00  48 de 03 00 46 ff ff ff  |handler.H...F...|
0003db10  eb f7 28 25 85 01 00 00  13 00 00 00 00 00 00 00  |..(%............|
0003db20  52 65 67 69 73 74 65 72  50 6f 73 74 46 69 6c 74  |RegisterPostFilt|
0003db30  65 72 00 00 d0 df 03 00  46 ff ff ff d9 f1 28 25  |er......F.....(%|
0003db40  54 01 00 00 13 00 00 00  00 00 00 00 52 65 67 69  |T...........Regi|
0003db50  73 74 65 72 50 72 65 46  69 6c 74 65 72 00 00 00  |sterPreFilter...|
0003db60  44 41 54 41 fe 00 00 00  46 69 6c 74 65 72 5f 44  |DATA....Filter_D|
0003db70  65 52 65 67 69 73 74 65  72 50 6f 73 74 46 69 6c  |eRegisterPostFil|
0003db80  74 65 72 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |ter.Syntax:.void|
0003db90  20 46 69 6c 74 65 72 5f  44 65 52 65 67 69 73 74  | Filter_DeRegist|
0003dba0  65 72 50 6f 73 74 46 69  6c 74 65 72 20 28 63 68  |erPostFilter (ch|
0003dbb0  61 72 20 2a 66 69 6c 74  65 72 6e 61 6d 65 2c 20  |ar *filtername, |
0003dbc0  3c 66 69 6c 74 65 72 5f  68 61 6e 64 6c 65 72 3e  |<filter_handler>|
0003dbd0  20 68 61 6e 64 6c 65 72  2c 20 69 6e 74 20 52 31  | handler, int R1|
0003dbe0  32 2c 20 3c 74 61 73 6b  5f 68 61 6e 64 6c 65 3e  |2, <task_handle>|
0003dbf0  20 74 61 73 6b 29 3b 0a  48 65 61 64 65 72 3a 09  | task);.Header:.|
0003dc00  3c 44 65 73 6b 4c 69 62  3a 46 69 6c 74 65 72 2e  |<DeskLib:Filter.|
0003dc10  68 3d 3e 46 69 6c 74 65  72 3e 0a 0a 54 68 69 73  |h=>Filter>..This|
0003dc20  20 66 75 6e 63 74 69 6f  6e 20 72 65 6d 6f 76 65  | function remove|
0003dc30  73 20 61 20 70 6f 73 74  2d 66 69 6c 74 65 72 20  |s a post-filter |
0003dc40  66 72 6f 6d 20 74 68 65  20 6c 69 73 74 20 6f 66  |from the list of|
0003dc50  20 70 6f 73 74 2d 66 69  6c 74 65 72 73 2e 00 00  | post-filters...|
0003dc60  44 41 54 41 fa 00 00 00  46 69 6c 74 65 72 5f 44  |DATA....Filter_D|
0003dc70  65 52 65 67 69 73 74 65  72 50 72 65 46 69 6c 74  |eRegisterPreFilt|
0003dc80  65 72 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |er.Syntax:.void |
0003dc90  46 69 6c 74 65 72 5f 44  65 52 65 67 69 73 74 65  |Filter_DeRegiste|
0003dca0  72 50 72 65 46 69 6c 74  65 72 20 28 63 68 61 72  |rPreFilter (char|
0003dcb0  20 2a 66 69 6c 74 65 72  6e 61 6d 65 2c 20 3c 66  | *filtername, <f|
0003dcc0  69 6c 74 65 72 5f 68 61  6e 64 6c 65 72 3e 20 68  |ilter_handler> h|
0003dcd0  61 6e 64 6c 65 72 2c 20  69 6e 74 20 52 31 32 2c  |andler, int R12,|
0003dce0  20 3c 74 61 73 6b 5f 68  61 6e 64 6c 65 3e 20 74  | <task_handle> t|
0003dcf0  61 73 6b 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |ask);.Header:.<D|
0003dd00  65 73 6b 4c 69 62 3a 46  69 6c 74 65 72 2e 68 3d  |eskLib:Filter.h=|
0003dd10  3e 46 69 6c 74 65 72 3e  0a 0a 54 68 69 73 20 66  |>Filter>..This f|
0003dd20  75 6e 63 74 69 6f 6e 20  72 65 6d 6f 76 65 73 20  |unction removes |
0003dd30  61 20 70 72 65 2d 66 69  6c 74 65 72 20 66 72 6f  |a pre-filter fro|
0003dd40  6d 20 74 68 65 20 6c 69  73 74 20 6f 66 20 70 72  |m the list of pr|
0003dd50  65 2d 66 69 6c 74 65 72  73 2e 00 00 44 41 54 41  |e-filters...DATA|
0003dd60  ec 00 00 00 66 69 6c 74  65 72 5f 68 61 6e 64 6c  |....filter_handl|
0003dd70  65 72 0a 54 68 65 20 74  79 70 65 20 7b 2a 7d 66  |er.The type {*}f|
0003dd80  69 6c 74 65 72 5f 68 61  6e 64 6c 65 72 7b 2a 7d  |ilter_handler{*}|
0003dd90  20 69 73 20 64 65 66 69  6e 65 64 20 62 79 20 3c  | is defined by <|
0003dda0  44 65 73 6b 4c 69 62 3a  46 69 6c 74 65 72 2e 68  |DeskLib:Filter.h|
0003ddb0  3d 3e 46 69 6c 74 65 72  3e 20 61 73 20 61 20 66  |=>Filter> as a f|
0003ddc0  75 6e 63 74 69 6f 6e 20  74 79 70 65 2e 20 46 75  |unction type. Fu|
0003ddd0  6e 63 74 69 6f 6e 73 20  73 68 6f 75 6c 64 20 62  |nctions should b|
0003dde0  65 20 6f 66 20 74 68 65  20 66 6f 72 6d 3a 0a 7b  |e of the form:.{|
0003ddf0  77 72 61 70 20 6f 66 66  7d 0a 7b 66 43 6f 64 65  |wrap off}.{fCode|
0003de00  3b 61 6c 69 67 6e 20 63  65 6e 74 72 65 7d 69 6e  |;align centre}in|
0003de10  74 20 6d 79 66 75 6e 63  28 69 6e 74 20 65 76 65  |t myfunc(int eve|
0003de20  6e 74 2c 20 3c 65 76 65  6e 74 5f 70 6f 6c 6c 62  |nt, <event_pollb|
0003de30  6c 6f 63 6b 3e 20 2a 65  76 65 6e 74 2c 20 69 6e  |lock> *event, in|
0003de40  74 20 74 61 73 6b 29 3b  44 41 54 41 85 01 00 00  |t task);DATA....|
0003de50  46 69 6c 74 65 72 5f 52  65 67 69 73 74 65 72 50  |Filter_RegisterP|
0003de60  6f 73 74 46 69 6c 74 65  72 0a 53 79 6e 74 61 78  |ostFilter.Syntax|
0003de70  3a 09 76 6f 69 64 20 46  69 6c 74 65 72 5f 52 65  |:.void Filter_Re|
0003de80  67 69 73 74 65 72 50 6f  73 74 46 69 6c 74 65 72  |gisterPostFilter|
0003de90  20 28 63 68 61 72 20 2a  66 69 6c 74 65 72 6e 61  | (char *filterna|
0003dea0  6d 65 2c 20 3c 66 69 6c  74 65 72 5f 68 61 6e 64  |me, <filter_hand|
0003deb0  6c 65 72 3e 20 68 61 6e  64 6c 65 72 2c 20 69 6e  |ler> handler, in|
0003dec0  74 20 52 31 32 2c 20 3c  74 61 73 6b 5f 68 61 6e  |t R12, <task_han|
0003ded0  64 6c 65 3e 20 74 61 73  6b 2c 20 69 6e 74 20 65  |dle> task, int e|
0003dee0  76 65 6e 74 6d 61 73 6b  29 3b 0a 48 65 61 64 65  |ventmask);.Heade|
0003def0  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 46 69 6c 74  |r:.<DeskLib:Filt|
0003df00  65 72 2e 68 3d 3e 46 69  6c 74 65 72 3e 0a 0a 54  |er.h=>Filter>..T|
0003df10  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 67  |his function reg|
0003df20  69 73 74 65 72 73 20 61  20 70 6f 73 74 2d 66 69  |isters a post-fi|
0003df30  6c 74 65 72 20 72 6f 75  74 69 6e 65 2c 20 77 68  |lter routine, wh|
0003df40  69 63 68 20 77 69 6c 6c  20 62 65 20 63 61 6c 6c  |ich will be call|
0003df50  65 64 20 77 68 65 6e 65  76 65 72 20 74 68 65 20  |ed whenever the |
0003df60  57 69 6d 70 20 69 73 20  61 62 6f 75 74 20 74 6f  |Wimp is about to|
0003df70  20 72 65 74 75 72 6e 20  66 72 6f 6d 20 57 69 6d  | return from Wim|
0003df80  70 5f 50 6f 6c 6c 20 74  6f 20 74 68 65 20 73 70  |p_Poll to the sp|
0003df90  65 63 69 66 69 65 64 20  74 61 73 6b 2e 20 49 66  |ecified task. If|
0003dfa0  20 2f 74 61 73 6b 2f 20  69 73 20 7a 65 72 6f 2c  | /task/ is zero,|
0003dfb0  20 74 68 65 6e 20 61 6c  6c 20 74 61 73 6b 73 20  | then all tasks |
0003dfc0  61 72 65 20 61 66 66 65  63 74 65 64 2e 00 00 00  |are affected....|
0003dfd0  44 41 54 41 54 01 00 00  46 69 6c 74 65 72 5f 52  |DATAT...Filter_R|
0003dfe0  65 67 69 73 74 65 72 50  72 65 46 69 6c 74 65 72  |egisterPreFilter|
0003dff0  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 46 69  |.Syntax:.void Fi|
0003e000  6c 74 65 72 5f 52 65 67  69 73 74 65 72 50 72 65  |lter_RegisterPre|
0003e010  46 69 6c 74 65 72 20 28  63 68 61 72 20 2a 66 69  |Filter (char *fi|
0003e020  6c 74 65 72 6e 61 6d 65  2c 20 3c 66 69 6c 74 65  |ltername, <filte|
0003e030  72 5f 68 61 6e 64 6c 65  72 3e 20 68 61 6e 64 6c  |r_handler> handl|
0003e040  65 72 2c 20 69 6e 74 20  52 31 32 2c 20 3c 74 61  |er, int R12, <ta|
0003e050  73 6b 5f 68 61 6e 64 6c  65 3e 20 74 61 73 6b 29  |sk_handle> task)|
0003e060  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
0003e070  69 62 3a 46 69 6c 74 65  72 2e 68 3d 3e 46 69 6c  |ib:Filter.h=>Fil|
0003e080  74 65 72 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |ter>..This funct|
0003e090  69 6f 6e 20 72 65 67 69  73 74 65 72 73 20 61 20  |ion registers a |
0003e0a0  70 72 65 2d 66 69 6c 74  65 72 20 72 6f 75 74 69  |pre-filter routi|
0003e0b0  6e 65 2c 20 77 68 69 63  68 20 77 69 6c 6c 20 62  |ne, which will b|
0003e0c0  65 20 63 61 6c 6c 65 64  20 77 68 65 6e 65 76 65  |e called wheneve|
0003e0d0  72 20 74 68 65 20 73 70  65 63 69 66 69 65 64 20  |r the specified |
0003e0e0  74 61 73 6b 20 70 6f 6c  6c 73 20 74 68 65 20 57  |task polls the W|
0003e0f0  69 6d 70 2e 20 49 66 20  2f 74 61 73 6b 2f 20 69  |imp. If /task/ i|
0003e100  73 20 7a 65 72 6f 2c 20  74 68 65 6e 20 61 6c 6c  |s zero, then all|
0003e110  20 74 61 73 6b 73 20 61  72 65 20 61 66 66 65 63  | tasks are affec|
0003e120  74 65 64 2e 44 41 54 41  70 01 00 00 66 6c 65 78  |ted.DATAp...flex|
0003e130  2e 68 0a 54 68 69 73 20  68 65 61 64 65 72 20 70  |.h.This header p|
0003e140  72 6f 76 69 64 65 73 20  6d 65 6d 6f 72 79 20 61  |rovides memory a|
0003e150  6c 6c 6f 63 61 74 69 6f  6e 20 66 6f 72 20 69 6e  |llocation for in|
0003e160  74 65 72 61 63 74 69 76  65 20 70 72 6f 67 72 61  |teractive progra|
0003e170  6d 73 20 72 65 71 75 69  72 69 6e 67 20 6c 61 72  |ms requiring lar|
0003e180  67 65 20 63 68 75 6e 6b  73 20 6f 66 20 73 74 6f  |ge chunks of sto|
0003e190  72 65 2e 20 53 75 63 68  20 70 72 6f 67 72 61 6d  |re. Such program|
0003e1a0  73 20 6d 75 73 74 20 72  65 73 70 6f 6e 64 20 74  |s must respond t|
0003e1b0  6f 20 6d 65 6d 6f 72 79  20 66 75 6c 6c 20 65 72  |o memory full er|
0003e1c0  72 6f 72 73 2e 0a 0a 46  75 6e 63 74 69 6f 6e 73  |rors...Functions|
0003e1d0  3a 0a 0a 23 49 6e 64 65  6e 74 20 35 0a 23 54 61  |:..#Indent 5.#Ta|
0003e1e0  62 6c 65 20 63 6f 6c 75  6d 6e 73 20 33 0a 3c 66  |ble columns 3.<f|
0003e1f0  6c 65 78 5f 69 6e 69 74  3e 0a 3c 66 6c 65 78 5f  |lex_init>.<flex_|
0003e200  61 6c 6c 6f 63 3e 0a 3c  66 6c 65 78 5f 66 72 65  |alloc>.<flex_fre|
0003e210  65 3e 0a 3c 66 6c 65 78  5f 73 69 7a 65 3e 0a 3c  |e>.<flex_size>.<|
0003e220  66 6c 65 78 5f 65 78 74  65 6e 64 3e 0a 3c 66 6c  |flex_extend>.<fl|
0003e230  65 78 5f 6d 69 64 65 78  74 65 6e 64 3e 0a 3c 66  |ex_midextend>.<f|
0003e240  6c 65 78 5f 62 75 64 67  65 3e 0a 3c 66 6c 65 78  |lex_budge>.<flex|
0003e250  5f 64 6f 6e 74 5f 62 75  64 67 65 3e 0a 23 45 6e  |_dont_budge>.#En|
0003e260  64 54 61 62 6c 65 0a 0a  23 62 65 6c 6f 77 3b 49  |dTable..#below;I|
0003e270  6e 64 65 6e 74 20 30 0a  54 79 70 65 73 3a 0a 7b  |ndent 0.Types:.{|
0003e280  69 6e 64 65 6e 74 20 35  7d 0a 3c 66 6c 65 78 5f  |indent 5}.<flex_|
0003e290  70 74 72 3e 44 49 52 24  30 01 00 00 30 01 00 00  |ptr>DIR$0...0...|
0003e2a0  c4 e3 03 00 46 ff ff ff  4f 2d 48 23 9c 01 00 00  |....F...O-H#....|
0003e2b0  13 00 00 00 00 00 00 00  61 6c 6c 6f 63 00 00 00  |........alloc...|
0003e2c0  60 e5 03 00 46 ff ff ff  f0 67 48 23 5f 01 00 00  |`...F....gH#_...|
0003e2d0  13 00 00 00 00 00 00 00  62 75 64 67 65 00 00 00  |........budge...|
0003e2e0  c0 e6 03 00 46 ff ff ff  c3 7e 48 23 48 01 00 00  |....F....~H#H...|
0003e2f0  13 00 00 00 00 00 00 00  64 6f 6e 74 5f 62 75 64  |........dont_bud|
0003e300  67 65 00 00 08 e8 03 00  46 ff ff ff a4 43 48 23  |ge......F....CH#|
0003e310  e5 00 00 00 13 00 00 00  00 00 00 00 65 78 74 65  |............exte|
0003e320  6e 64 00 00 f0 e8 03 00  46 ff ff ff 37 3a 48 23  |nd......F...7:H#|
0003e330  ab 00 00 00 13 00 00 00  00 00 00 00 66 72 65 65  |............free|
0003e340  00 00 00 00 9c e9 03 00  46 ff ff ff 33 23 48 23  |........F...3#H#|
0003e350  a5 00 00 00 13 00 00 00  00 00 00 00 69 6e 69 74  |............init|
0003e360  00 00 00 00 44 ea 03 00  46 ff ff ff b0 5b 48 23  |....D...F....[H#|
0003e370  4e 01 00 00 13 00 00 00  00 00 00 00 6d 69 64 65  |N...........mide|
0003e380  78 74 65 6e 64 00 00 00  94 eb 03 00 46 ff ff ff  |xtend.......F...|
0003e390  33 87 48 23 c6 00 00 00  13 00 00 00 00 00 00 00  |3.H#............|
0003e3a0  70 74 72 00 5c ec 03 00  46 ff ff ff c8 3d 48 23  |ptr.\...F....=H#|
0003e3b0  b5 00 00 00 13 00 00 00  00 00 00 00 73 69 7a 65  |............size|
0003e3c0  00 00 00 00 44 41 54 41  9c 01 00 00 66 6c 65 78  |....DATA....flex|
0003e3d0  5f 61 6c 6c 6f 63 0a 53  79 6e 74 61 78 3a 09 69  |_alloc.Syntax:.i|
0003e3e0  6e 74 20 66 6c 65 78 5f  61 6c 6c 6f 63 28 3c 66  |nt flex_alloc(<f|
0003e3f0  6c 65 78 5f 70 74 72 3e  20 61 6e 63 68 6f 72 2c  |lex_ptr> anchor,|
0003e400  20 69 6e 74 20 6e 29 3b  0a 48 65 61 64 65 72 3a  | int n);.Header:|
0003e410  09 3c 66 6c 65 78 2e 68  3d 3e 66 6c 65 78 3e 0a  |.<flex.h=>flex>.|
0003e420  0a 52 65 74 75 72 6e 73  3a 09 30 20 66 6f 72 20  |.Returns:.0 for |
0003e430  66 61 69 6c 75 72 65 2c  20 31 20 66 6f 72 20 73  |failure, 1 for s|
0003e440  75 63 63 65 73 73 2e 0a  0a 54 68 69 73 20 66 75  |uccess...This fu|
0003e450  6e 63 74 69 6f 6e 20 61  6c 6c 6f 63 61 74 65 73  |nction allocates|
0003e460  20 2f 6e 2f 20 62 79 74  65 73 20 6f 66 20 73 74  | /n/ bytes of st|
0003e470  6f 72 65 2c 20 6f 62 74  61 69 6e 65 64 20 66 72  |ore, obtained fr|
0003e480  6f 6d 20 74 68 65 20 57  69 6d 70 20 66 72 65 65  |om the Wimp free|
0003e490  20 70 6f 6f 6c 20 61 6e  64 20 73 74 6f 72 65 73  | pool and stores|
0003e4a0  20 69 74 73 20 61 64 64  72 65 73 73 20 69 6e 20  | its address in |
0003e4b0  74 68 65 20 76 61 72 69  61 62 6c 65 20 70 6f 69  |the variable poi|
0003e4c0  6e 74 65 64 20 74 6f 20  62 79 20 2f 61 6e 63 68  |nted to by /anch|
0003e4d0  6f 72 2f 2e 20 54 68 65  20 61 6c 6c 6f 63 61 74  |or/. The allocat|
0003e4e0  65 64 20 73 74 6f 72 65  20 6d 75 73 74 20 62 65  |ed store must be|
0003e4f0  20 61 63 63 65 73 73 65  64 20 74 68 72 6f 75 67  | accessed throug|
0003e500  68 20 74 68 69 73 20 61  6e 63 68 6f 72 20 65 67  |h this anchor eg|
0003e510  20 61 73 20 28 2a 61 6e  63 68 6f 72 29 5b 30 5d  | as (*anchor)[0]|
0003e520  20 65 74 63 2e 20 73 69  6e 63 65 20 74 68 65 20  | etc. since the |
0003e530  61 6e 63 68 6f 72 20 6d  61 79 20 62 65 20 61 6c  |anchor may be al|
0003e540  74 65 72 65 64 20 61 73  20 6d 65 6d 6f 72 79 20  |tered as memory |
0003e550  69 73 20 6d 6f 76 65 64  20 61 72 6f 75 6e 64 2e  |is moved around.|
0003e560  44 41 54 41 5f 01 00 00  66 6c 65 78 5f 62 75 64  |DATA_...flex_bud|
0003e570  67 65 0a 53 79 6e 74 61  78 3a 09 69 6e 74 20 66  |ge.Syntax:.int f|
0003e580  6c 65 78 5f 62 75 64 67  65 20 28 69 6e 74 20 6e  |lex_budge (int n|
0003e590  2c 20 76 6f 69 64 20 2a  2a 61 29 3b 0a 48 65 61  |, void **a);.Hea|
0003e5a0  64 65 72 3a 09 3c 66 6c  65 78 2e 68 3d 3e 66 6c  |der:.<flex.h=>fl|
0003e5b0  65 78 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 41 6d  |ex>..Returns:.Am|
0003e5c0  6f 75 6e 74 20 6f 66 20  73 74 6f 72 65 20 61 63  |ount of store ac|
0003e5d0  71 75 69 72 65 64 2e 0a  0a 54 68 69 73 20 66 75  |quired...This fu|
0003e5e0  6e 63 74 69 6f 6e 20 69  73 20 6e 6f 74 20 74 6f  |nction is not to|
0003e5f0  20 62 65 20 63 61 6c 6c  65 64 20 64 69 72 65 63  | be called direc|
0003e600  74 6c 79 2e 20 49 74 20  73 68 6f 75 6c 64 20 62  |tly. It should b|
0003e610  65 20 72 65 67 69 73 74  65 72 65 64 20 75 73 69  |e registered usi|
0003e620  6e 67 20 74 68 65 20 66  75 6e 63 74 69 6f 6e 20  |ng the function |
0003e630  3c 5f 6b 65 72 6e 65 6c  5f 72 65 67 69 73 74 65  |<_kernel_registe|
0003e640  72 5f 73 6c 6f 74 65 78  74 65 6e 64 3e 2e 20 49  |r_slotextend>. I|
0003e650  74 20 77 69 6c 6c 20 61  6c 6c 6f 77 20 74 68 65  |t will allow the|
0003e660  20 66 6c 65 78 20 73 74  6f 72 65 20 74 6f 20 62  | flex store to b|
0003e670  65 20 6d 6f 76 65 64 20  69 66 20 6d 6f 72 65 20  |e moved if more |
0003e680  68 65 61 70 20 73 74 6f  72 61 67 65 20 69 73 20  |heap storage is |
0003e690  6e 65 65 64 65 64 2e 20  54 68 65 20 64 65 66 61  |needed. The defa|
0003e6a0  75 6c 74 20 73 74 61 74  65 20 69 73 20 3c 66 6c  |ult state is <fl|
0003e6b0  65 78 5f 64 6f 6e 74 5f  62 75 64 67 65 3e 2e 00  |ex_dont_budge>..|
0003e6c0  44 41 54 41 48 01 00 00  66 6c 65 78 5f 64 6f 6e  |DATAH...flex_don|
0003e6d0  74 5f 62 75 64 67 65 0a  53 79 6e 74 61 78 3a 09  |t_budge.Syntax:.|
0003e6e0  69 6e 74 20 66 6c 65 78  5f 64 6f 6e 74 5f 62 75  |int flex_dont_bu|
0003e6f0  64 67 65 20 28 69 6e 74  20 6e 2c 20 76 6f 69 64  |dge (int n, void|
0003e700  20 2a 2a 61 29 3b 0a 48  65 61 64 65 72 3a 09 3c  | **a);.Header:.<|
0003e710  66 6c 65 78 2e 68 3d 3e  66 6c 65 78 3e 0a 0a 52  |flex.h=>flex>..R|
0003e720  65 74 75 72 6e 73 3a 09  30 0a 0a 54 68 69 73 20  |eturns:.0..This |
0003e730  66 75 6e 63 74 69 6f 6e  20 69 73 20 6e 6f 74 20  |function is not |
0003e740  74 6f 20 62 65 20 63 61  6c 6c 65 64 20 64 69 72  |to be called dir|
0003e750  65 63 74 6c 79 2e 20 49  74 20 73 68 6f 75 6c 64  |ectly. It should|
0003e760  20 62 65 20 72 65 67 69  73 74 65 72 65 64 20 75  | be registered u|
0003e770  73 69 6e 67 20 74 68 65  20 66 75 6e 63 74 69 6f  |sing the functio|
0003e780  6e 20 3c 5f 6b 65 72 6e  65 6c 5f 72 65 67 69 73  |n <_kernel_regis|
0003e790  74 65 72 5f 73 6c 6f 74  65 78 74 65 6e 64 3e 2e  |ter_slotextend>.|
0003e7a0  20 49 74 20 77 69 6c 6c  20 6e 6f 74 20 61 6c 6c  | It will not all|
0003e7b0  6f 77 20 74 68 65 20 66  6c 65 78 20 73 74 6f 72  |ow the flex stor|
0003e7c0  65 20 74 6f 20 62 65 20  6d 6f 76 65 64 20 69 66  |e to be moved if|
0003e7d0  20 6d 6f 72 65 20 68 65  61 70 20 73 74 6f 72 61  | more heap stora|
0003e7e0  67 65 20 69 73 20 6e 65  65 64 65 64 2e 20 54 68  |ge is needed. Th|
0003e7f0  69 73 20 69 73 20 74 68  65 20 64 65 66 61 75 6c  |is is the defaul|
0003e800  74 20 73 74 61 74 65 2e  44 41 54 41 e5 00 00 00  |t state.DATA....|
0003e810  66 6c 65 78 5f 65 78 74  65 6e 64 0a 53 79 6e 74  |flex_extend.Synt|
0003e820  61 78 3a 09 69 6e 74 20  66 6c 65 78 5f 65 78 74  |ax:.int flex_ext|
0003e830  65 6e 64 20 28 3c 66 6c  65 78 5f 70 74 72 3e 20  |end (<flex_ptr> |
0003e840  61 6e 63 68 6f 72 2c 20  69 6e 74 20 6e 65 77 73  |anchor, int news|
0003e850  69 7a 65 29 3b 0a 48 65  61 64 65 72 3a 09 3c 66  |ize);.Header:.<f|
0003e860  6c 65 78 2e 68 3d 3e 66  6c 65 78 3e 0a 0a 52 65  |lex.h=>flex>..Re|
0003e870  74 75 72 6e 73 3a 09 30  20 66 6f 72 20 66 61 69  |turns:.0 for fai|
0003e880  6c 65 64 2c 20 31 20 66  6f 72 20 4f 4b 2e 0a 0a  |led, 1 for OK...|
0003e890  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 61 6c  |This function al|
0003e8a0  74 65 72 73 20 74 68 65  20 73 69 7a 65 20 6f 66  |ters the size of|
0003e8b0  20 74 68 65 20 6d 65 6d  6f 72 79 20 62 6c 6f 63  | the memory bloc|
0003e8c0  6b 2c 20 77 68 6f 73 65  20 61 6e 63 68 6f 72 20  |k, whose anchor |
0003e8d0  69 73 20 67 69 76 65 6e  2c 20 74 6f 20 2f 6e 65  |is given, to /ne|
0003e8e0  77 73 69 7a 65 2f 20 62  79 74 65 73 2e 00 00 00  |wsize/ bytes....|
0003e8f0  44 41 54 41 ab 00 00 00  66 6c 65 78 5f 66 72 65  |DATA....flex_fre|
0003e900  65 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 66  |e.Syntax:.void f|
0003e910  6c 65 78 5f 66 72 65 65  20 28 3c 66 6c 65 78 5f  |lex_free (<flex_|
0003e920  70 74 72 3e 20 61 6e 63  68 6f 72 29 3b 0a 48 65  |ptr> anchor);.He|
0003e930  61 64 65 72 3a 09 3c 66  6c 65 78 2e 68 3d 3e 66  |ader:.<flex.h=>f|
0003e940  6c 65 78 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |lex>..This funct|
0003e950  69 6f 6e 20 66 72 65 65  73 20 74 68 65 20 6d 65  |ion frees the me|
0003e960  6d 6f 72 79 20 77 68 6f  73 65 20 61 6e 63 68 6f  |mory whose ancho|
0003e970  72 20 69 73 20 67 69 76  65 6e 2e 20 7b 2f 7d 2a  |r is given. {/}*|
0003e980  61 6e 63 68 6f 72 7b 2f  7d 20 77 69 6c 6c 20 62  |anchor{/} will b|
0003e990  65 20 73 65 74 20 74 6f  20 30 2e 00 44 41 54 41  |e set to 0..DATA|
0003e9a0  a5 00 00 00 66 6c 65 78  5f 69 6e 69 74 0a 53 79  |....flex_init.Sy|
0003e9b0  6e 74 61 78 3a 09 76 6f  69 64 20 66 6c 65 78 5f  |ntax:.void flex_|
0003e9c0  69 6e 69 74 20 28 76 6f  69 64 29 3b 0a 48 65 61  |init (void);.Hea|
0003e9d0  64 65 72 3a 09 3c 66 6c  65 78 2e 68 3d 3e 66 6c  |der:.<flex.h=>fl|
0003e9e0  65 78 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ex>..This functi|
0003e9f0  6f 6e 20 69 6e 69 74 69  61 6c 69 73 65 73 20 74  |on initialises t|
0003ea00  68 65 20 66 6c 65 78 20  73 74 6f 72 65 2e 20 49  |he flex store. I|
0003ea10  74 20 6d 75 73 74 20 62  65 20 63 61 6c 6c 65 64  |t must be called|
0003ea20  20 62 65 66 6f 72 65 20  61 6e 79 20 6f 74 68 65  | before any othe|
0003ea30  72 20 66 6c 65 78 20 66  75 6e 63 74 69 6f 6e 73  |r flex functions|
0003ea40  2e 00 00 00 44 41 54 41  4e 01 00 00 66 6c 65 78  |....DATAN...flex|
0003ea50  5f 6d 69 64 65 78 74 65  6e 64 0a 53 79 6e 74 61  |_midextend.Synta|
0003ea60  78 3a 09 69 6e 74 20 66  6c 65 78 5f 6d 69 64 65  |x:.int flex_mide|
0003ea70  78 74 65 6e 64 20 28 3c  66 6c 65 78 5f 70 74 72  |xtend (<flex_ptr|
0003ea80  3e 20 61 6e 63 68 6f 72  2c 20 69 6e 74 20 61 74  |> anchor, int at|
0003ea90  2c 20 69 6e 74 20 62 79  29 3b 0a 48 65 61 64 65  |, int by);.Heade|
0003eaa0  72 3a 09 3c 66 6c 65 78  2e 68 3d 3e 66 6c 65 78  |r:.<flex.h=>flex|
0003eab0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 30 20 66 6f  |>..Returns:.0 fo|
0003eac0  72 20 66 61 69 6c 65 64  2c 20 31 20 66 6f 72 20  |r failed, 1 for |
0003ead0  4f 4b 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |OK...This functi|
0003eae0  6f 6e 20 61 6c 74 65 72  73 20 74 68 65 20 73 69  |on alters the si|
0003eaf0  7a 65 20 6f 66 20 74 68  65 20 6d 65 6d 6f 72 79  |ze of the memory|
0003eb00  20 62 6c 6f 63 6b 20 77  68 6f 73 65 20 61 6e 63  | block whose anc|
0003eb10  68 6f 72 20 69 73 20 67  69 76 65 6e 2e 20 49 66  |hor is given. If|
0003eb20  20 2f 62 79 2f 20 69 73  20 70 6f 73 69 74 69 76  | /by/ is positiv|
0003eb30  65 20 74 68 65 6e 20 2f  62 79 2f 20 62 79 74 65  |e then /by/ byte|
0003eb40  73 20 61 72 65 20 69 6e  73 65 72 74 65 64 20 61  |s are inserted a|
0003eb50  74 20 6f 66 66 73 65 74  20 2f 61 74 2f 2c 20 65  |t offset /at/, e|
0003eb60  6c 73 65 20 7b 2f 7d 2d  62 79 7b 2f 7d 20 62 79  |lse {/}-by{/} by|
0003eb70  74 65 73 20 61 72 65 20  64 65 6c 65 74 65 64 20  |tes are deleted |
0003eb80  62 65 6c 6f 77 20 6f 66  66 73 65 74 20 2f 61 74  |below offset /at|
0003eb90  2f 2e 00 00 44 41 54 41  c6 00 00 00 66 6c 65 78  |/...DATA....flex|
0003eba0  5f 70 74 72 0a 54 68 69  73 20 74 79 70 65 20 69  |_ptr.This type i|
0003ebb0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 66 6c  |s defined in <fl|
0003ebc0  65 78 2e 68 3d 3e 66 6c  65 78 3e 20 61 73 20 61  |ex.h=>flex> as a|
0003ebd0  20 74 79 70 65 20 63 61  70 61 62 6c 65 20 6f 66  | type capable of|
0003ebe0  20 68 6f 6c 64 69 6e 67  20 61 20 70 6f 69 6e 74  | holding a point|
0003ebf0  65 72 20 74 6f 20 61 20  70 6f 69 6e 74 65 72 20  |er to a pointer |
0003ec00  74 6f 20 61 20 62 6c 6f  63 6b 20 6f 66 20 6d 65  |to a block of me|
0003ec10  6d 6f 72 79 20 61 6c 6c  6f 63 61 74 65 64 20 62  |mory allocated b|
0003ec20  79 20 3c 66 6c 65 78 5f  61 6c 6c 6f 63 3e 2e 20  |y <flex_alloc>. |
0003ec30  49 74 20 69 73 20 61 63  74 75 61 6c 6c 79 20 64  |It is actually d|
0003ec40  65 66 69 6e 65 64 20 61  73 20 61 20 7b 2f 7d 76  |efined as a {/}v|
0003ec50  6f 69 64 20 2a 2a 7b 2f  7d 2e 00 00 44 41 54 41  |oid **{/}...DATA|
0003ec60  b5 00 00 00 66 6c 65 78  5f 73 69 7a 65 0a 53 79  |....flex_size.Sy|
0003ec70  6e 74 61 78 3a 09 69 6e  74 20 66 6c 65 78 5f 73  |ntax:.int flex_s|
0003ec80  69 7a 65 20 28 3c 66 6c  65 78 5f 70 74 72 3e 20  |ize (<flex_ptr> |
0003ec90  61 6e 63 68 6f 72 29 3b  0a 48 65 61 64 65 72 3a  |anchor);.Header:|
0003eca0  09 3c 66 6c 65 78 2e 68  3d 3e 66 6c 65 78 3e 0a  |.<flex.h=>flex>.|
0003ecb0  0a 52 65 74 75 72 6e 73  3a 09 53 69 7a 65 20 69  |.Returns:.Size i|
0003ecc0  6e 20 62 79 74 65 73 2c  0a 0a 54 68 69 73 20 66  |n bytes,..This f|
0003ecd0  75 6e 63 74 69 6f 6e 20  66 69 6e 64 73 20 74 68  |unction finds th|
0003ece0  65 20 73 69 7a 65 20 6f  66 20 74 68 65 20 6d 65  |e size of the me|
0003ecf0  6d 6f 72 79 20 62 6c 6f  63 6b 20 77 68 6f 73 65  |mory block whose|
0003ed00  20 61 6e 63 68 6f 72 20  69 73 20 67 69 76 65 6e  | anchor is given|
0003ed10  2e 00 00 00 44 41 54 41  27 02 00 00 66 6c 6f 61  |....DATA'...floa|
0003ed20  74 2e 68 0a 54 68 65 20  5c 3c 66 6c 6f 61 74 2e  |t.h.The \<float.|
0003ed30  68 3e 20 68 65 61 64 65  72 20 64 65 63 6c 61 72  |h> header declar|
0003ed40  65 73 20 6d 61 6e 79 20  6d 61 63 72 6f 73 20 77  |es many macros w|
0003ed50  68 69 63 68 20 67 69 76  65 20 69 6e 66 6f 72 6d  |hich give inform|
0003ed60  61 74 69 6f 6e 20 61 62  6f 75 74 20 74 68 65 20  |ation about the |
0003ed70  6c 69 6d 69 74 73 20 6f  66 20 66 6c 6f 61 74 69  |limits of floati|
0003ed80  6e 67 20 70 6f 69 6e 74  20 76 61 72 69 61 62 6c  |ng point variabl|
0003ed90  65 73 2e 0a 0a 23 54 61  62 6c 65 20 31 30 20 31  |es...#Table 10 1|
0003eda0  36 0a 3c 46 4c 54 5f 52  4f 55 4e 44 53 3e 0a 3c  |6.<FLT_ROUNDS>.<|
0003edb0  46 4c 54 5f 52 41 44 49  58 3e 0a 3c 46 4c 54 5f  |FLT_RADIX>.<FLT_|
0003edc0  4d 41 4e 54 5f 44 49 47  3e 0a 3c 44 42 4c 5f 4d  |MANT_DIG>.<DBL_M|
0003edd0  41 4e 54 5f 44 49 47 3e  0a 3c 4c 44 42 4c 5f 4d  |ANT_DIG>.<LDBL_M|
0003ede0  41 4e 54 5f 44 49 47 3e  20 20 20 0a 3c 46 4c 54  |ANT_DIG>   .<FLT|
0003edf0  5f 44 49 47 3e 0a 3c 44  42 4c 5f 44 49 47 3e 0a  |_DIG>.<DBL_DIG>.|
0003ee00  3c 4c 44 42 4c 5f 44 49  47 3e 0a 3c 46 4c 54 5f  |<LDBL_DIG>.<FLT_|
0003ee10  4d 49 4e 5f 45 58 50 3e  0a 3c 44 42 4c 5f 4d 49  |MIN_EXP>.<DBL_MI|
0003ee20  4e 5f 45 58 50 3e 0a 3c  4c 44 42 4c 5f 4d 49 4e  |N_EXP>.<LDBL_MIN|
0003ee30  5f 45 58 50 3e 0a 3c 46  4c 54 5f 4d 49 4e 5f 31  |_EXP>.<FLT_MIN_1|
0003ee40  30 5f 45 58 50 3e 0a 3c  44 42 4c 5f 4d 49 4e 5f  |0_EXP>.<DBL_MIN_|
0003ee50  31 30 5f 45 58 50 3e 0a  3c 4c 44 42 4c 5f 4d 49  |10_EXP>.<LDBL_MI|
0003ee60  4e 5f 31 30 5f 45 58 50  3e 0a 3c 46 4c 54 5f 4d  |N_10_EXP>.<FLT_M|
0003ee70  41 58 5f 45 58 50 3e 0a  3c 44 42 4c 5f 4d 41 58  |AX_EXP>.<DBL_MAX|
0003ee80  5f 45 58 50 3e 0a 3c 4c  44 42 4c 5f 4d 41 58 5f  |_EXP>.<LDBL_MAX_|
0003ee90  45 58 50 3e 0a 3c 46 4c  54 5f 4d 41 58 5f 31 30  |EXP>.<FLT_MAX_10|
0003eea0  5f 45 58 50 3e 0a 3c 44  42 4c 5f 4d 41 58 5f 31  |_EXP>.<DBL_MAX_1|
0003eeb0  30 5f 45 58 50 3e 0a 3c  4c 44 42 4c 5f 4d 41 58  |0_EXP>.<LDBL_MAX|
0003eec0  5f 31 30 5f 45 58 50 3e  0a 3c 46 4c 54 5f 4d 41  |_10_EXP>.<FLT_MA|
0003eed0  58 3e 0a 3c 44 42 4c 5f  4d 41 58 3e 0a 3c 4c 44  |X>.<DBL_MAX>.<LD|
0003eee0  42 4c 5f 4d 41 58 3e 0a  3c 46 4c 54 5f 45 50 53  |BL_MAX>.<FLT_EPS|
0003eef0  49 4c 4f 4e 3e 0a 3c 44  42 4c 5f 45 50 53 49 4c  |ILON>.<DBL_EPSIL|
0003ef00  4f 4e 3e 0a 3c 4c 44 42  4c 5f 45 50 53 49 4c 4f  |ON>.<LDBL_EPSILO|
0003ef10  4e 3e 0a 3c 46 4c 54 5f  4d 49 4e 3e 0a 3c 44 42  |N>.<FLT_MIN>.<DB|
0003ef20  4c 5f 4d 49 4e 3e 0a 3c  4c 44 42 4c 5f 4d 49 4e  |L_MIN>.<LDBL_MIN|
0003ef30  3e 0a 23 45 6e 64 54 61  62 6c 65 00 44 41 54 41  |>.#EndTable.DATA|
0003ef40  a7 01 00 00 66 6c 6f 6f  72 0a 53 79 6e 74 61 78  |....floor.Syntax|
0003ef50  3a 09 64 6f 75 62 6c 65  20 9f 6f 6f 72 20 28 64  |:.double .oor (d|
0003ef60  6f 75 62 6c 65 20 78 29  3b 0a 48 65 61 64 65 72  |ouble x);.Header|
0003ef70  3a 09 3c 6d 61 74 68 2e  68 3d 3e 6d 61 74 68 3e  |:.<math.h=>math>|
0003ef80  0a 0a 52 65 74 75 72 6e  73 3a 09 54 68 65 20 73  |..Returns:.The s|
0003ef90  6d 61 6c 6c 65 73 74 20  69 6e 74 65 67 65 72 20  |mallest integer |
0003efa0  65 71 75 61 6c 20 74 6f  20 6f 72 20 6c 65 73 73  |equal to or less|
0003efb0  20 74 68 61 6e 20 78 2e  0a 0a 54 68 69 73 20 66  | than x...This f|
0003efc0  75 6e 63 74 69 6f 6e 20  63 61 6c 63 75 6c 61 74  |unction calculat|
0003efd0  65 73 20 74 68 65 20 90  9f 6f 6f 72 91 20 6f 66  |es the ..oor. of|
0003efe0  20 74 68 65 20 67 69 76  65 6e 20 76 61 6c 75 65  | the given value|
0003eff0  2e 20 54 68 69 73 20 69  73 20 74 68 65 20 73 6d  |. This is the sm|
0003f000  61 6c 6c 65 73 74 20 69  6e 74 65 67 65 72 20 6e  |allest integer n|
0003f010  6f 74 20 67 72 65 61 74  65 72 20 74 68 61 6e 20  |ot greater than |
0003f020  78 2e 20 42 61 73 69 63  61 6c 6c 79 2c 20 69 66  |x. Basically, if|
0003f030  20 78 20 69 73 20 61 6e  20 69 6e 74 65 67 65 72  | x is an integer|
0003f040  20 76 61 6c 75 65 20 74  68 65 6e 20 74 68 65 20  | value then the |
0003f050  66 75 6e 63 74 69 6f 6e  20 72 65 74 75 72 6e 73  |function returns|
0003f060  20 78 2c 20 6f 74 68 65  72 77 69 73 65 20 69 74  | x, otherwise it|
0003f070  20 72 65 74 75 72 6e 73  20 74 68 65 20 6e 65 78  | returns the nex|
0003f080  74 20 6c 6f 77 65 73 74  20 69 6e 74 65 67 65 72  |t lowest integer|
0003f090  2e 20 4e 6f 74 65 20 74  68 61 74 20 74 68 65 20  |. Note that the |
0003f0a0  72 65 73 75 6c 74 20 69  73 20 72 65 74 75 72 6e  |result is return|
0003f0b0  65 64 20 61 73 20 61 20  64 6f 75 62 6c 65 2c 20  |ed as a double, |
0003f0c0  65 76 65 6e 20 74 68 6f  75 67 68 20 69 74 20 69  |even though it i|
0003f0d0  73 20 61 6e 20 69 6e 74  65 67 65 72 20 76 61 6c  |s an integer val|
0003f0e0  75 65 2e 00 44 49 52 24  6c 01 00 00 6c 01 00 00  |ue..DIR$l...l...|
0003f0f0  50 f2 03 00 46 ff ff ff  1a aa b5 22 3a 00 00 00  |P...F......":...|
0003f100  13 00 00 00 00 00 00 00  44 49 47 00 8c f2 03 00  |........DIG.....|
0003f110  46 ff ff ff 22 aa b5 22  3e 00 00 00 13 00 00 00  |F..."..">.......|
0003f120  00 00 00 00 45 50 53 49  4c 4f 4e 00 cc f2 03 00  |....EPSILON.....|
0003f130  46 ff ff ff 3a 89 bc 22  8c 00 00 00 13 00 00 00  |F...:.."........|
0003f140  00 00 00 00 4d 41 4e 54  5f 44 49 47 00 00 00 00  |....MANT_DIG....|
0003f150  58 f3 03 00 46 ff ff ff  80 c4 bc 22 90 00 00 00  |X...F......"....|
0003f160  13 00 00 00 00 00 00 00  4d 41 58 00 e8 f3 03 00  |........MAX.....|
0003f170  46 ff ff ff 73 b8 bc 22  8f 00 00 00 13 00 00 00  |F...s.."........|
0003f180  00 00 00 00 4d 41 58 5f  31 30 5f 45 58 50 00 00  |....MAX_10_EXP..|
0003f190  78 f4 03 00 46 ff ff ff  3a ae bc 22 84 00 00 00  |x...F...:.."....|
0003f1a0  13 00 00 00 00 00 00 00  4d 41 58 5f 45 58 50 00  |........MAX_EXP.|
0003f1b0  fc f4 03 00 46 ff ff ff  67 d4 bc 22 90 00 00 00  |....F...g.."....|
0003f1c0  13 00 00 00 00 00 00 00  4d 49 4e 00 8c f5 03 00  |........MIN.....|
0003f1d0  46 ff ff ff 3a a4 bc 22  8f 00 00 00 13 00 00 00  |F...:.."........|
0003f1e0  00 00 00 00 4d 49 4e 5f  31 30 5f 45 58 50 00 00  |....MIN_10_EXP..|
0003f1f0  1c f6 03 00 46 ff ff ff  4a 99 bc 22 84 00 00 00  |....F...J.."....|
0003f200  13 00 00 00 00 00 00 00  4d 49 4e 5f 45 58 50 00  |........MIN_EXP.|
0003f210  a0 f6 03 00 46 ff ff ff  ad ab b5 22 3c 00 00 00  |....F......"<...|
0003f220  13 00 00 00 00 00 00 00  52 41 44 49 58 00 00 00  |........RADIX...|
0003f230  dc f6 03 00 46 ff ff ff  b5 ab b5 22 3d 00 00 00  |....F......"=...|
0003f240  13 00 00 00 00 00 00 00  52 4f 55 4e 44 53 00 00  |........ROUNDS..|
0003f250  44 41 54 41 3a 00 00 00  46 4c 54 5f 44 49 47 0a  |DATA:...FLT_DIG.|
0003f260  54 68 69 73 20 6d 61 63  72 6f 20 69 73 20 64 65  |This macro is de|
0003f270  66 69 6e 65 64 20 69 6e  20 3c 66 6c 6f 61 74 2e  |fined in <float.|
0003f280  68 3d 3e 66 6c 6f 61 74  3e 2e 00 00 44 41 54 41  |h=>float>...DATA|
0003f290  3e 00 00 00 46 4c 54 5f  45 50 53 49 4c 4f 4e 0a  |>...FLT_EPSILON.|
0003f2a0  54 68 69 73 20 6d 61 63  72 6f 20 69 73 20 64 65  |This macro is de|
0003f2b0  66 69 6e 65 64 20 69 6e  20 3c 66 6c 6f 61 74 2e  |fined in <float.|
0003f2c0  68 3d 3e 66 6c 6f 61 74  3e 2e 00 00 44 41 54 41  |h=>float>...DATA|
0003f2d0  8c 00 00 00 46 4c 54 5f  4d 41 4e 54 5f 44 49 47  |....FLT_MANT_DIG|
0003f2e0  0a 54 68 69 73 20 6d 61  63 72 6f 20 69 73 20 64  |.This macro is d|
0003f2f0  65 66 69 6e 65 64 20 69  6e 20 3c 66 6c 6f 61 74  |efined in <float|
0003f300  2e 68 3d 3e 66 6c 6f 61  74 3e 2e 20 49 74 20 67  |.h=>float>. It g|
0003f310  69 76 65 73 20 74 68 65  20 6e 75 6d 62 65 72 20  |ives the number |
0003f320  6f 66 20 64 69 67 69 74  73 20 69 6e 20 74 68 65  |of digits in the|
0003f330  20 6d 61 6e 74 69 73 73  61 20 6f 66 20 61 20 76  | mantissa of a v|
0003f340  61 72 69 61 62 6c 65 20  6f 66 20 74 79 70 65 20  |ariable of type |
0003f350  27 66 6c 6f 61 74 27 2e  44 41 54 41 90 00 00 00  |'float'.DATA....|
0003f360  46 4c 54 5f 4d 41 58 0a  54 68 69 73 20 6d 61 63  |FLT_MAX.This mac|
0003f370  72 6f 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |ro is defined in|
0003f380  20 3c 66 6c 6f 61 74 2e  68 3d 3e 66 6c 6f 61 74  | <float.h=>float|
0003f390  3e 2e 20 49 74 20 67 69  76 65 73 20 74 68 65 20  |>. It gives the |
0003f3a0  6d 61 78 69 6d 75 6d 20  70 6f 73 69 74 69 76 65  |maximum positive|
0003f3b0  20 76 61 6c 75 65 20 74  68 61 74 20 63 61 6e 20  | value that can |
0003f3c0  62 65 20 73 74 6f 72 65  64 20 69 6e 20 61 20 76  |be stored in a v|
0003f3d0  61 72 69 61 62 6c 65 20  6f 66 20 74 79 70 65 20  |ariable of type |
0003f3e0  27 66 6c 6f 61 74 27 2e  44 41 54 41 8f 00 00 00  |'float'.DATA....|
0003f3f0  46 4c 54 5f 4d 41 58 5f  31 30 5f 45 58 50 0a 54  |FLT_MAX_10_EXP.T|
0003f400  68 69 73 20 6d 61 63 72  6f 20 69 73 20 64 65 66  |his macro is def|
0003f410  69 6e 65 64 20 69 6e 20  3c 66 6c 6f 61 74 2e 68  |ined in <float.h|
0003f420  3d 3e 66 6c 6f 61 74 3e  2e 20 49 74 20 67 69 76  |=>float>. It giv|
0003f430  65 73 20 74 68 65 20 6d  61 78 69 6d 75 6d 20 62  |es the maximum b|
0003f440  61 73 65 20 31 30 20 65  78 70 6f 6e 65 6e 74 20  |ase 10 exponent |
0003f450  61 20 76 61 72 69 61 62  6c 65 20 6f 66 20 74 79  |a variable of ty|
0003f460  70 65 20 27 66 6c 6f 61  74 27 20 63 61 6e 20 63  |pe 'float' can c|
0003f470  6f 6e 74 61 69 6e 2e 00  44 41 54 41 84 00 00 00  |ontain..DATA....|
0003f480  46 4c 54 5f 4d 41 58 5f  45 58 50 0a 54 68 69 73  |FLT_MAX_EXP.This|
0003f490  20 6d 61 63 72 6f 20 69  73 20 64 65 66 69 6e 65  | macro is define|
0003f4a0  64 20 69 6e 20 3c 66 6c  6f 61 74 2e 68 3d 3e 66  |d in <float.h=>f|
0003f4b0  6c 6f 61 74 3e 2e 20 49  74 20 67 69 76 65 73 20  |loat>. It gives |
0003f4c0  74 68 65 20 6d 61 78 69  6d 75 6d 20 65 78 70 6f  |the maximum expo|
0003f4d0  6e 65 6e 74 20 61 20 76  61 72 69 61 62 6c 65 20  |nent a variable |
0003f4e0  6f 66 20 74 79 70 65 20  27 66 6c 6f 61 74 27 20  |of type 'float' |
0003f4f0  63 61 6e 20 63 6f 6e 74  61 69 6e 2e 44 41 54 41  |can contain.DATA|
0003f500  90 00 00 00 46 4c 54 5f  4d 49 4e 0a 54 68 69 73  |....FLT_MIN.This|
0003f510  20 6d 61 63 72 6f 20 69  73 20 64 65 66 69 6e 65  | macro is define|
0003f520  64 20 69 6e 20 3c 66 6c  6f 61 74 2e 68 3d 3e 66  |d in <float.h=>f|
0003f530  6c 6f 61 74 3e 2e 20 49  74 20 67 69 76 65 73 20  |loat>. It gives |
0003f540  74 68 65 20 6d 69 6e 69  6d 75 6d 20 70 6f 73 69  |the minimum posi|
0003f550  74 69 76 65 20 76 61 6c  75 65 20 74 68 61 74 20  |tive value that |
0003f560  63 61 6e 20 62 65 20 73  74 6f 72 65 64 20 69 6e  |can be stored in|
0003f570  20 61 20 76 61 72 69 61  62 6c 65 20 6f 66 20 74  | a variable of t|
0003f580  79 70 65 20 27 66 6c 6f  61 74 27 2e 44 41 54 41  |ype 'float'.DATA|
0003f590  8f 00 00 00 46 4c 54 5f  4d 49 4e 5f 31 30 5f 45  |....FLT_MIN_10_E|
0003f5a0  58 50 0a 54 68 69 73 20  6d 61 63 72 6f 20 69 73  |XP.This macro is|
0003f5b0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 66 6c 6f  | defined in <flo|
0003f5c0  61 74 2e 68 3d 3e 66 6c  6f 61 74 3e 2e 20 49 74  |at.h=>float>. It|
0003f5d0  20 67 69 76 65 73 20 74  68 65 20 6d 69 6e 69 6d  | gives the minim|
0003f5e0  75 6d 20 62 61 73 65 20  31 30 20 65 78 70 6f 6e  |um base 10 expon|
0003f5f0  65 6e 74 20 61 20 76 61  72 69 61 62 6c 65 20 6f  |ent a variable o|
0003f600  66 20 74 79 70 65 20 27  66 6c 6f 61 74 27 20 63  |f type 'float' c|
0003f610  61 6e 20 63 6f 6e 74 61  69 6e 2e 00 44 41 54 41  |an contain..DATA|
0003f620  84 00 00 00 46 4c 54 5f  4d 49 4e 5f 45 58 50 0a  |....FLT_MIN_EXP.|
0003f630  54 68 69 73 20 6d 61 63  72 6f 20 69 73 20 64 65  |This macro is de|
0003f640  66 69 6e 65 64 20 69 6e  20 3c 66 6c 6f 61 74 2e  |fined in <float.|
0003f650  68 3d 3e 66 6c 6f 61 74  3e 2e 20 49 74 20 67 69  |h=>float>. It gi|
0003f660  76 65 73 20 74 68 65 20  6d 69 6e 69 6d 75 6d 20  |ves the minimum |
0003f670  65 78 70 6f 6e 65 6e 74  20 61 20 76 61 72 69 61  |exponent a varia|
0003f680  62 6c 65 20 6f 66 20 74  79 70 65 20 27 66 6c 6f  |ble of type 'flo|
0003f690  61 74 27 20 63 61 6e 20  63 6f 6e 74 61 69 6e 2e  |at' can contain.|
0003f6a0  44 41 54 41 3c 00 00 00  46 4c 54 5f 52 41 44 49  |DATA<...FLT_RADI|
0003f6b0  58 0a 54 68 69 73 20 6d  61 63 72 6f 20 69 73 20  |X.This macro is |
0003f6c0  64 65 66 69 6e 65 64 20  69 6e 20 3c 66 6c 6f 61  |defined in <floa|
0003f6d0  74 2e 68 3d 3e 66 6c 6f  61 74 3e 2e 44 41 54 41  |t.h=>float>.DATA|
0003f6e0  3d 00 00 00 46 4c 54 5f  52 4f 55 4e 44 53 0a 54  |=...FLT_ROUNDS.T|
0003f6f0  68 69 73 20 6d 61 63 72  6f 20 69 73 20 64 65 66  |his macro is def|
0003f700  69 6e 65 64 20 69 6e 20  3c 66 6c 6f 61 74 2e 68  |ined in <float.h|
0003f710  3d 3e 66 6c 6f 61 74 3e  2e 00 00 00 44 41 54 41  |=>float>....DATA|
0003f720  2b 01 00 00 66 6d 6f 64  0a 53 79 6e 74 61 78 3a  |+...fmod.Syntax:|
0003f730  09 64 6f 75 62 6c 65 20  66 6d 6f 64 20 28 64 6f  |.double fmod (do|
0003f740  75 62 6c 65 20 78 2c 20  64 6f 75 62 6c 65 20 79  |uble x, double y|
0003f750  29 3b 0a 48 65 61 64 65  72 3a 09 3c 6d 61 74 68  |);.Header:.<math|
0003f760  2e 68 3d 3e 6d 61 74 68  3e 0a 0a 52 65 74 75 72  |.h=>math>..Retur|
0003f770  6e 73 3a 09 54 68 65 20  72 65 6d 61 69 6e 64 65  |ns:.The remainde|
0003f780  72 20 6f 66 20 78 2f 79  2e 0a 0a 54 68 69 73 20  |r of x/y...This |
0003f790  66 75 6e 63 74 69 6f 6e  20 63 61 6c 63 75 6c 61  |function calcula|
0003f7a0  74 65 73 20 74 68 65 20  66 6c 6f 61 74 69 6e 67  |tes the floating|
0003f7b0  20 70 6f 69 6e 74 20 72  65 6d 61 69 6e 64 65 72  | point remainder|
0003f7c0  20 6f 66 20 78 2f 79 2e  20 46 6f 72 6d 61 6c 6c  | of x/y. Formall|
0003f7d0  79 20 74 68 69 73 20 69  73 20 64 65 66 69 6e 65  |y this is define|
0003f7e0  64 20 61 73 20 78 a0 2d  20 28 69 20 2a 20 79 29  |d as x.- (i * y)|
0003f7f0  2c 20 77 68 65 72 65 20  69 20 69 73 20 61 6e 20  |, where i is an |
0003f800  69 6e 74 65 67 65 72 20  73 75 63 68 20 74 68 61  |integer such tha|
0003f810  74 20 74 68 65 20 72 65  73 75 6c 74 20 68 61 73  |t the result has|
0003f820  20 74 68 65 20 73 61 6d  65 20 73 69 67 6e 20 61  | the same sign a|
0003f830  73 20 78 20 61 6e 64 20  69 73 20 6c 65 73 73 20  |s x and is less |
0003f840  74 68 61 6e 20 79 2e 00  44 41 54 41 f5 02 00 00  |than y..DATA....|
0003f850  44 65 73 6b 4c 69 62 3a  46 6f 6e 74 2e 68 0a 56  |DeskLib:Font.h.V|
0003f860  65 72 73 69 6f 6e 3a 20  31 2e 30 31 20 28 32 32  |ersion: 1.01 (22|
0003f870  20 4d 61 79 20 31 39 39  32 29 0a 23 6c 69 6e 65  | May 1992).#line|
0003f880  0a 54 68 69 73 20 68 65  61 64 65 72 20 64 65 63  |.This header dec|
0003f890  6c 61 72 65 73 20 66 75  6e 63 74 69 6f 6e 73 20  |lares functions |
0003f8a0  61 6e 64 20 74 79 70 65  73 20 66 6f 72 20 63 61  |and types for ca|
0003f8b0  6c 6c 69 6e 67 20 74 68  65 20 46 6f 6e 74 20 4d  |lling the Font M|
0003f8c0  61 6e 61 67 65 72 2e 0a  0a 46 75 6e 63 74 69 6f  |anager...Functio|
0003f8d0  6e 73 3a 0a 0a 23 69 6e  64 65 6e 74 20 34 0a 23  |ns:..#indent 4.#|
0003f8e0  54 61 62 6c 65 20 31 32  20 32 32 0a 3c 46 6f 6e  |Table 12 22.<Fon|
0003f8f0  74 5f 43 61 63 68 65 41  64 64 72 3e 0a 3c 46 6f  |t_CacheAddr>.<Fo|
0003f900  6e 74 5f 43 61 72 65 74  3e 0a 3c 46 6f 6e 74 5f  |nt_Caret>.<Font_|
0003f910  43 68 61 72 42 42 6f 78  3e 0a 3c 46 6f 6e 74 5f  |CharBBox>.<Font_|
0003f920  43 6f 6e 76 65 72 74 74  6f 4f 53 3e 0a 3c 46 6f  |ConverttoOS>.<Fo|
0003f930  6e 74 5f 43 6f 6e 76 65  72 74 74 6f 70 6f 69 6e  |nt_Converttopoin|
0003f940  74 73 3e 0a 3c 46 6f 6e  74 5f 43 75 72 72 65 6e  |ts>.<Font_Curren|
0003f950  74 46 6f 6e 74 3e 0a 3c  46 6f 6e 74 5f 46 69 6e  |tFont>.<Font_Fin|
0003f960  64 43 61 72 65 74 3e 0a  3c 46 6f 6e 74 5f 46 69  |dCaret>.<Font_Fi|
0003f970  6e 64 43 61 72 65 74 4a  3e 0a 3c 46 6f 6e 74 5f  |ndCaretJ>.<Font_|
0003f980  46 69 6e 64 46 6f 6e 74  3e 0a 3c 46 6f 6e 74 5f  |FindFont>.<Font_|
0003f990  46 75 74 75 72 65 46 6f  6e 74 3e 0a 3c 46 6f 6e  |FutureFont>.<Fon|
0003f9a0  74 5f 4c 69 73 74 46 6f  6e 74 73 3e 0a 3c 46 6f  |t_ListFonts>.<Fo|
0003f9b0  6e 74 5f 4c 6f 73 65 41  6c 6c 46 6f 6e 74 73 3e  |nt_LoseAllFonts>|
0003f9c0  0a 3c 46 6f 6e 74 5f 4c  6f 73 65 46 6f 6e 74 3e  |.<Font_LoseFont>|
0003f9d0  0a 3c 46 6f 6e 74 5f 50  61 69 6e 74 3e 0a 3c 46  |.<Font_Paint>.<F|
0003f9e0  6f 6e 74 5f 52 65 61 64  44 65 66 6e 3e 0a 3c 46  |ont_ReadDefn>.<F|
0003f9f0  6f 6e 74 5f 52 65 61 64  49 6e 66 6f 3e 0a 3c 46  |ont_ReadInfo>.<F|
0003fa00  6f 6e 74 5f 52 65 61 64  53 63 61 6c 65 46 61 63  |ont_ReadScaleFac|
0003fa10  74 6f 72 3e 0a 3c 46 6f  6e 74 5f 52 65 61 64 54  |tor>.<Font_ReadT|
0003fa20  68 72 65 73 68 6f 6c 64  73 3e 0a 3c 46 6f 6e 74  |hresholds>.<Font|
0003fa30  5f 53 65 74 46 6f 6e 74  3e 0a 3c 46 6f 6e 74 5f  |_SetFont>.<Font_|
0003fa40  53 65 74 46 6f 6e 74 43  6f 6c 6f 75 72 73 3e 0a  |SetFontColours>.|
0003fa50  3c 46 6f 6e 74 5f 53 65  74 50 61 6c 65 74 74 65  |<Font_SetPalette|
0003fa60  3e 0a 3c 46 6f 6e 74 5f  53 65 74 54 68 72 65 73  |>.<Font_SetThres|
0003fa70  68 6f 6c 64 73 3e 0a 3c  46 6f 6e 74 5f 53 74 72  |holds>.<Font_Str|
0003fa80  69 6e 67 42 42 6f 78 3e  0a 3c 46 6f 6e 74 5f 53  |ingBBox>.<Font_S|
0003fa90  74 72 69 6e 67 57 69 64  74 68 3e 0a 23 45 6e 64  |tringWidth>.#End|
0003faa0  54 61 62 6c 65 0a 23 69  6e 64 65 6e 74 0a 0a 54  |Table.#indent..T|
0003fab0  79 70 65 73 3a 0a 0a 23  69 6e 64 65 6e 74 20 35  |ypes:..#indent 5|
0003fac0  0a 23 54 61 62 6c 65 20  63 6f 6c 75 6d 6e 73 20  |.#Table columns |
0003fad0  33 0a 3c 66 6f 6e 74 5f  68 61 6e 64 6c 65 3e 0a  |3.<font_handle>.|
0003fae0  3c 66 6f 6e 74 5f 64 65  66 6e 3e 0a 3c 66 6f 6e  |<font_defn>.<fon|
0003faf0  74 5f 69 6e 66 6f 3e 0a  3c 66 6f 6e 74 5f 73 74  |t_info>.<font_st|
0003fb00  72 69 6e 67 3e 0a 3c 66  6f 6e 74 5f 63 6f 6c 6f  |ring>.<font_colo|
0003fb10  75 72 73 3e 0a 3c 66 6f  6e 74 5f 73 74 61 74 65  |urs>.<font_state|
0003fb20  3e 0a 3c 66 6f 6e 74 5f  74 68 72 65 73 68 6f 6c  |>.<font_threshol|
0003fb30  64 73 3e 0a 23 45 6e 64  54 61 62 6c 65 00 00 00  |ds>.#EndTable...|
0003fb40  44 49 52 24 40 08 00 00  40 08 00 00 80 03 04 00  |DIR$@...@.......|
0003fb50  46 fd ff ff 14 fe aa 24  7c 00 00 00 13 00 00 00  |F......$|.......|
0003fb60  00 00 00 00 21 52 6f 6f  74 00 00 00 fc 03 04 00  |....!Root.......|
0003fb70  46 ff ff ff 86 d5 ac 24  98 00 00 00 13 00 00 00  |F......$........|
0003fb80  00 00 00 00 5f 74 72 65  65 00 00 00 94 04 04 00  |...._tree.......|
0003fb90  46 ff ff ff 22 90 5a 24  b7 00 00 00 13 00 00 00  |F...".Z$........|
0003fba0  00 00 00 00 41 42 53 00  4c 05 04 00 46 ff ff ff  |....ABS.L...F...|
0003fbb0  85 6a ab 24 99 00 00 00  13 00 00 00 00 00 00 00  |.j.$............|
0003fbc0  61 63 74 69 6f 6e 5f 6f  6e 5f 62 69 74 6d 61 70  |action_on_bitmap|
0003fbd0  00 00 00 00 e8 05 04 00  46 ff ff ff 82 93 48 26  |........F.....H&|
0003fbe0  3a 01 00 00 13 00 00 00  00 00 00 00 61 72 72 61  |:...........arra|
0003fbf0  79 00 00 00 24 07 04 00  46 ff ff ff b3 08 ab 24  |y...$...F......$|
0003fc00  5f 00 00 00 13 00 00 00  00 00 00 00 42 6c 75 65  |_...........Blue|
0003fc10  47 75 6e 00 84 07 04 00  46 ff ff ff 15 47 29 25  |Gun.....F....G)%|
0003fc20  8d 01 00 00 13 00 00 00  00 00 00 00 43 61 63 68  |............Cach|
0003fc30  65 41 64 64 72 00 00 00  14 09 04 00 46 ff ff ff  |eAddr.......F...|
0003fc40  67 d2 48 23 8d 01 00 00  13 00 00 00 00 00 00 00  |g.H#............|
0003fc50  63 61 63 68 65 61 64 64  72 65 73 73 00 00 00 00  |cacheaddress....|
0003fc60  a4 0a 04 00 46 ff ff ff  07 ef 48 23 a7 01 00 00  |....F.....H#....|
0003fc70  13 00 00 00 00 00 00 00  43 61 72 65 74 00 00 00  |........Caret...|
0003fc80  4c 0c 04 00 46 ff ff ff  bb 10 49 23 38 02 00 00  |L...F.....I#8...|
0003fc90  13 00 00 00 00 00 00 00  43 68 61 72 42 42 6f 78  |........CharBBox|
0003fca0  00 00 00 00 84 0e 04 00  46 ff ff ff 63 32 2a 25  |........F...c2*%|
0003fcb0  9f 00 00 00 13 00 00 00  00 00 00 00 63 6f 6c 6f  |............colo|
0003fcc0  75 72 73 00 24 0f 04 00  46 ff ff ff 00 2c 49 23  |urs.$...F....,I#|
0003fcd0  f4 01 00 00 13 00 00 00  00 00 00 00 43 6f 6e 76  |............Conv|
0003fce0  65 72 74 74 6f 4f 53 00  18 11 04 00 46 ff ff ff  |erttoOS.....F...|
0003fcf0  5a 3f 49 23 08 02 00 00  13 00 00 00 00 00 00 00  |Z?I#............|
0003fd00  43 6f 6e 76 65 72 74 74  6f 70 6f 69 6e 74 73 00  |Converttopoints.|
0003fd10  20 13 04 00 46 ff ff ff  cf 48 49 23 db 00 00 00  | ...F....HI#....|
0003fd20  13 00 00 00 00 00 00 00  63 75 72 72 65 6e 74 00  |........current.|
0003fd30  fc 13 04 00 46 ff ff ff  d0 51 29 25 e9 00 00 00  |....F....Q)%....|
0003fd40  13 00 00 00 00 00 00 00  43 75 72 72 65 6e 74 46  |........CurrentF|
0003fd50  6f 6e 74 00 e8 14 04 00  46 ff ff ff 9e 22 ab 24  |ont.....F....".$|
0003fd60  1d 01 00 00 13 00 00 00  00 00 00 00 64 65 66 00  |............def.|
0003fd70  08 16 04 00 46 ff ff ff  d2 2b 2a 25 48 01 00 00  |....F....+*%H...|
0003fd80  13 00 00 00 00 00 00 00  64 65 66 6e 00 00 00 00  |........defn....|
0003fd90  50 17 04 00 46 ff ff ff  bd 59 49 23 fd 01 00 00  |P...F....YI#....|
0003fda0  13 00 00 00 00 00 00 00  66 69 6e 64 00 00 00 00  |........find....|
0003fdb0  50 19 04 00 46 ff ff ff  d7 73 49 23 8c 02 00 00  |P...F....sI#....|
0003fdc0  13 00 00 00 00 00 00 00  46 69 6e 64 43 61 72 65  |........FindCare|
0003fdd0  74 00 00 00 dc 1b 04 00  46 ff ff ff 40 84 49 23  |t.......F...@.I#|
0003fde0  67 01 00 00 13 00 00 00  00 00 00 00 46 69 6e 64  |g...........Find|
0003fdf0  43 61 72 65 74 4a 00 00  44 1d 04 00 46 ff ff ff  |CaretJ..D...F...|
0003fe00  ea 63 29 25 f5 01 00 00  13 00 00 00 00 00 00 00  |.c)%............|
0003fe10  46 69 6e 64 46 6f 6e 74  00 00 00 00 3c 1f 04 00  |FindFont....<...|
0003fe20  46 ff ff ff 38 8e 49 23  10 01 00 00 13 00 00 00  |F...8.I#........|
0003fe30  00 00 00 00 66 75 74 75  72 65 00 00 4c 20 04 00  |....future..L ..|
0003fe40  46 ff ff ff 93 6b 29 25  21 01 00 00 13 00 00 00  |F....k)%!.......|
0003fe50  00 00 00 00 46 75 74 75  72 65 46 6f 6e 74 00 00  |....FutureFont..|
0003fe60  70 21 04 00 46 ff ff ff  c4 0d ab 24 61 00 00 00  |p!..F......$a...|
0003fe70  13 00 00 00 00 00 00 00  47 72 65 65 6e 47 75 6e  |........GreenGun|
0003fe80  00 00 00 00 d4 21 04 00  46 fd ff ff 8b ad 48 23  |.....!..F.....H#|
0003fe90  67 03 00 00 13 00 00 00  00 00 00 00 68 00 00 00  |g...........h...|
0003fea0  3c 25 04 00 46 ff ff ff  72 22 2a 25 89 00 00 00  |<%..F...r"*%....|
0003feb0  13 00 00 00 00 00 00 00  68 61 6e 64 6c 65 00 00  |........handle..|
0003fec0  c8 25 04 00 46 ff ff ff  86 3c ab 24 d8 00 00 00  |.%..F....<.$....|
0003fed0  13 00 00 00 00 00 00 00  69 6e 66 6f 00 00 00 00  |........info....|
0003fee0  a0 26 04 00 46 ff ff ff  78 87 5a 24 b6 00 00 00  |.&..F...x.Z$....|
0003fef0  13 00 00 00 00 00 00 00  4a 55 53 54 49 46 59 00  |........JUSTIFY.|
0003ff00  58 27 04 00 46 ff ff ff  64 a6 49 23 24 02 00 00  |X'..F...d.I#$...|
0003ff10  13 00 00 00 00 00 00 00  6c 69 73 74 00 00 00 00  |........list....|
0003ff20  7c 29 04 00 46 ff ff ff  b1 91 29 25 34 02 00 00  ||)..F.....)%4...|
0003ff30  13 00 00 00 00 00 00 00  4c 69 73 74 46 6f 6e 74  |........ListFont|
0003ff40  73 00 00 00 b0 2b 04 00  46 ff ff ff cf af 49 23  |s....+..F.....I#|
0003ff50  de 00 00 00 13 00 00 00  00 00 00 00 6c 6f 73 65  |............lose|
0003ff60  00 00 00 00 90 2c 04 00  46 ff ff ff bf 9e 29 25  |.....,..F.....)%|
0003ff70  f1 00 00 00 13 00 00 00  00 00 00 00 4c 6f 73 65  |............Lose|
0003ff80  41 6c 6c 46 6f 6e 74 73  00 00 00 00 84 2d 04 00  |AllFonts.....-..|
0003ff90  46 ff ff ff 80 a2 29 25  ef 00 00 00 13 00 00 00  |F.....)%........|
0003ffa0  00 00 00 00 4c 6f 73 65  46 6f 6e 74 00 00 00 00  |....LoseFont....|
0003ffb0  74 2e 04 00 46 ff ff ff  75 95 5a 24 b6 00 00 00  |t...F...u.Z$....|
0003ffc0  13 00 00 00 00 00 00 00  4f 53 43 4f 4f 52 44 53  |........OSCOORDS|
0003ffd0  00 00 00 00 2c 2f 04 00  46 ff ff ff 85 b6 49 23  |....,/..F.....I#|
0003ffe0  ea 00 00 00 13 00 00 00  00 00 00 00 6f 75 74 70  |............outp|
0003fff0  75 74 5f 73 69 7a 65 00  18 30 04 00 46 ff ff ff  |ut_size..0..F...|
00040000  09 c1 49 23 e5 01 00 00  13 00 00 00 00 00 00 00  |..I#............|
00040010  6f 75 74 70 75 74 5f 74  6f 5f 62 75 66 66 65 72  |output_to_buffer|
00040020  00 00 00 00 00 32 04 00  46 ff ff ff d3 3b 59 24  |.....2..F....;Y$|
00040030  79 02 00 00 13 00 00 00  00 00 00 00 6f 75 74 70  |y...........outp|
00040040  75 74 5f 74 6f 5f 6e 75  6c 6c 00 00 7c 34 04 00  |ut_to_null..|4..|
00040050  46 ff ff ff 20 45 59 24  e8 00 00 00 13 00 00 00  |F... EY$........|
00040060  00 00 00 00 6f 75 74 70  75 74 5f 74 6f 5f 73 63  |....output_to_sc|
00040070  72 65 65 6e 00 00 00 00  64 35 04 00 46 ff ff ff  |reen....d5..F...|
00040080  2e 79 f2 2b 7d 03 00 00  13 00 00 00 00 00 00 00  |.y.+}...........|
00040090  50 61 69 6e 74 00 00 00  e4 38 04 00 46 ff ff ff  |Paint....8..F...|
000400a0  07 9b 59 24 0c 02 00 00  13 00 00 00 00 00 00 00  |..Y$............|
000400b0  72 65 61 64 64 65 66 00  f0 3a 04 00 46 ff ff ff  |readdef..:..F...|
000400c0  35 d2 29 25 9f 02 00 00  13 00 00 00 00 00 00 00  |5.)%............|
000400d0  52 65 61 64 44 65 66 6e  00 00 00 00 90 3d 04 00  |ReadDefn.....=..|
000400e0  46 ff ff ff 00 ae 59 24  1a 02 00 00 13 00 00 00  |F.....Y$........|
000400f0  00 00 00 00 52 65 61 64  49 6e 66 6f 00 00 00 00  |....ReadInfo....|
00040100  ac 3f 04 00 46 ff ff ff  2b c4 59 24 5e 01 00 00  |.?..F...+.Y$^...|
00040110  13 00 00 00 00 00 00 00  52 65 61 64 53 63 61 6c  |........ReadScal|
00040120  65 46 61 63 74 6f 72 00  0c 41 04 00 46 ff ff ff  |eFactor..A..F...|
00040130  27 ce 59 24 6c 01 00 00  13 00 00 00 00 00 00 00  |'.Y$l...........|
00040140  52 65 61 64 54 68 72 65  73 68 6f 6c 64 73 00 00  |ReadThresholds..|
00040150  78 42 04 00 46 ff ff ff  94 11 ab 24 5d 00 00 00  |xB..F......$]...|
00040160  13 00 00 00 00 00 00 00  52 65 64 47 75 6e 00 00  |........RedGun..|
00040170  d8 42 04 00 46 ff ff ff  77 8b 5a 24 b4 00 00 00  |.B..F...w.Z$....|
00040180  13 00 00 00 00 00 00 00  52 55 42 4f 55 54 00 00  |........RUBOUT..|
00040190  8c 43 04 00 46 ff ff ff  1a ff 59 24 31 02 00 00  |.C..F.....Y$1...|
000401a0  13 00 00 00 00 00 00 00  73 65 74 63 6f 6c 6f 75  |........setcolou|
000401b0  72 00 00 00 c0 45 04 00  46 ff ff ff 83 0b 5a 24  |r....E..F.....Z$|
000401c0  57 01 00 00 13 00 00 00  00 00 00 00 53 65 74 46  |W...........SetF|
000401d0  6f 6e 74 00 18 47 04 00  46 ff ff ff 04 f6 29 25  |ont..G..F.....)%|
000401e0  4c 02 00 00 13 00 00 00  00 00 00 00 53 65 74 46  |L...........SetF|
000401f0  6f 6e 74 43 6f 6c 6f 75  72 73 00 00 64 49 04 00  |ontColours..dI..|
00040200  46 ff ff ff 4a 26 5a 24  98 02 00 00 13 00 00 00  |F...J&Z$........|
00040210  00 00 00 00 53 65 74 50  61 6c 65 74 74 65 00 00  |....SetPalette..|
00040220  fc 4b 04 00 46 ff ff ff  2c 41 5a 24 db 00 00 00  |.K..F...,AZ$....|
00040230  13 00 00 00 00 00 00 00  73 65 74 73 63 61 6c 65  |........setscale|
00040240  66 61 63 74 6f 72 00 00  d8 4c 04 00 46 ff ff ff  |factor...L..F...|
00040250  e5 4c 5a 24 59 01 00 00  13 00 00 00 00 00 00 00  |.LZ$Y...........|
00040260  53 65 74 54 68 72 65 73  68 6f 6c 64 73 00 00 00  |SetThresholds...|
00040270  34 4e 04 00 46 ff ff ff  39 5c ab 24 c3 01 00 00  |4N..F...9\.$....|
00040280  13 00 00 00 00 00 00 00  73 74 61 74 65 00 00 00  |........state...|
00040290  f8 4f 04 00 46 ff ff ff  22 47 ab 24 2d 01 00 00  |.O..F..."G.$-...|
000402a0  13 00 00 00 00 00 00 00  73 74 72 69 6e 67 00 00  |........string..|
000402b0  28 51 04 00 46 ff ff ff  78 5d 5a 24 7c 01 00 00  |(Q..F...x]Z$|...|
000402c0  13 00 00 00 00 00 00 00  53 74 72 69 6e 67 42 42  |........StringBB|
000402d0  6f 78 00 00 a4 52 04 00  46 ff ff ff 83 14 2a 25  |ox...R..F.....*%|
000402e0  da 02 00 00 13 00 00 00  00 00 00 00 53 74 72 69  |............Stri|
000402f0  6e 67 57 69 64 74 68 00  80 55 04 00 46 ff ff ff  |ngWidth..U..F...|
00040300  32 7e 5a 24 c3 02 00 00  13 00 00 00 00 00 00 00  |2~Z$............|
00040310  73 74 72 77 69 64 74 68  00 00 00 00 44 58 04 00  |strwidth....DX..|
00040320  46 ff ff ff f5 65 ab 24  a8 00 00 00 13 00 00 00  |F....e.$........|
00040330  00 00 00 00 74 68 72 65  73 68 6f 6c 64 00 00 00  |....threshold...|
00040340  ec 58 04 00 46 ff ff ff  99 37 2a 25 af 00 00 00  |.X..F....7*%....|
00040350  13 00 00 00 00 00 00 00  74 68 72 65 73 68 6f 6c  |........threshol|
00040360  64 73 00 00 9c 59 04 00  46 ff ff ff c1 68 55 26  |ds...Y..F....hU&|
00040370  73 01 00 00 13 00 00 00  00 00 00 00 54 4c 00 00  |s...........TL..|
00040380  44 41 54 41 7c 00 00 00  66 6f 6e 74 0a 54 68 69  |DATA|...font.Thi|
00040390  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
000403a0  64 20 69 6e 20 3c 66 6f  6e 74 2e 68 3d 3e 66 6f  |d in <font.h=>fo|
000403b0  6e 74 5f 68 3e 2e 20 49  74 20 69 73 20 75 73 65  |nt_h>. It is use|
000403c0  64 20 74 6f 20 68 6f 6c  64 20 61 20 66 6f 6e 74  |d to hold a font|
000403d0  20 68 61 6e 64 6c 65 2e  20 49 74 20 69 73 20 61  | handle. It is a|
000403e0  63 74 75 61 6c 6c 79 20  64 65 66 69 6e 65 64 20  |ctually defined |
000403f0  61 73 20 61 6e 20 2f 69  6e 74 2f 2e 44 41 54 41  |as an /int/.DATA|
00040400  98 00 00 00 66 6f 6e 74  5f 5f 74 72 65 65 0a 54  |....font__tree.T|
00040410  68 69 73 20 76 61 72 69  61 62 6c 65 20 69 73 20  |his variable is |
00040420  64 65 63 6c 61 72 65 64  20 69 6e 20 3c 66 6f 6e  |declared in <fon|
00040430  74 6c 69 73 74 2e 68 3d  3e 66 6f 6e 74 6c 69 73  |tlist.h=>fontlis|
00040440  74 3e 2e 20 49 74 20 69  73 20 61 20 70 6f 69 6e  |t>. It is a poin|
00040450  74 65 72 20 74 6f 20 74  68 65 20 66 6f 6e 74 20  |ter to the font |
00040460  74 72 65 65 20 75 73 65  64 20 62 79 20 74 68 65  |tree used by the|
00040470  20 66 75 6e 63 74 69 6f  6e 20 3c 66 6f 6e 74 6c  | function <fontl|
00040480  69 73 74 5f 6c 69 73 74  5f 61 6c 6c 5f 66 6f 6e  |ist_list_all_fon|
00040490  74 73 3e 2e 44 41 54 41  b7 00 00 00 66 6f 6e 74  |ts>.DATA....font|
000404a0  5f 41 42 53 0a 54 68 69  73 20 6d 61 63 72 6f 20  |_ABS.This macro |
000404b0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 66  |is defined in <f|
000404c0  6f 6e 74 2e 68 3d 3e 66  6f 6e 74 5f 68 3e 2e 20  |ont.h=>font_h>. |
000404d0  49 74 20 69 73 20 74 68  65 20 76 61 6c 75 65 20  |It is the value |
000404e0  6f 66 20 74 68 65 20 62  69 74 20 75 73 65 64 20  |of the bit used |
000404f0  74 6f 20 69 6e 64 69 63  61 74 65 20 69 6e 20 74  |to indicate in t|
00040500  68 65 20 70 61 69 6e 74  20 6f 70 74 69 6f 6e 73  |he paint options|
00040510  20 74 68 61 74 20 61 62  73 6f 6c 75 74 65 20 63  | that absolute c|
00040520  6f 6f 72 64 69 6e 61 74  65 73 20 61 72 65 20 75  |oordinates are u|
00040530  73 65 64 2e 20 49 74 20  69 73 20 64 65 66 69 6e  |sed. It is defin|
00040540  65 64 20 61 73 20 30 78  30 34 2e 00 44 41 54 41  |ed as 0x04..DATA|
00040550  99 00 00 00 66 6f 6e 74  5f 61 63 74 69 6f 6e 5f  |....font_action_|
00040560  6f 6e 5f 62 69 74 6d 61  70 0a 54 68 69 73 20 65  |on_bitmap.This e|
00040570  6e 75 6d 65 72 61 74 65  64 20 74 79 70 65 20 69  |numerated type i|
00040580  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 66 6f  |s defined in <fo|
00040590  6e 74 2e 68 3d 3e 66 6f  6e 74 5f 68 3e 20 61 73  |nt.h=>font_h> as|
000405a0  20 66 6f 6c 6c 6f 77 73  3a 0a 0a 20 20 5c 7b 0a  | follows:..  \{.|
000405b0  20 20 20 20 66 6f 6e 74  5f 43 4f 4e 56 45 52 54  |    font_CONVERT|
000405c0  2c 0a 20 20 20 20 66 6f  6e 74 5f 49 47 4e 4f 52  |,.    font_IGNOR|
000405d0  45 2c 0a 20 20 20 20 66  6f 6e 74 5f 45 52 52 4f  |E,.    font_ERRO|
000405e0  52 0a 20 20 7d 00 00 00  44 41 54 41 3a 01 00 00  |R.  }...DATA:...|
000405f0  66 6f 6e 74 5f 61 72 72  61 79 0a 54 68 69 73 20  |font_array.This |
00040600  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
00040610  69 6e 20 3c 44 65 73 6b  4c 69 62 3a 57 69 6d 70  |in <DeskLib:Wimp|
00040620  2e 68 3d 3e 57 69 6d 70  3e 20 61 73 20 61 20 74  |.h=>Wimp> as a t|
00040630  79 70 65 20 68 6f 6c 64  69 6e 67 20 61 20 66 6f  |ype holding a fo|
00040640  6e 74 20 61 72 72 61 79  20 75 73 65 64 20 77 68  |nt array used wh|
00040650  65 6e 20 6c 6f 61 64 69  6e 67 20 74 65 6d 70 6c  |en loading templ|
00040660  61 74 65 73 2e 20 49 74  20 69 73 20 64 65 66 69  |ates. It is defi|
00040670  6e 65 64 20 61 73 20 74  68 65 20 66 6f 6c 6c 6f  |ned as the follo|
00040680  77 69 6e 67 20 73 74 72  75 63 74 75 72 65 3a 0a  |wing structure:.|
00040690  0a 20 20 5c 7b 0a 20 20  20 20 63 68 61 72 20 66  |.  \{.    char f|
000406a0  6f 6e 74 73 5b 32 35 36  5d 3b 0a 20 20 7d 0a 0a  |onts[256];.  }..|
000406b0  54 68 65 20 61 72 72 61  79 20 63 6f 6e 74 61 69  |The array contai|
000406c0  6e 73 20 61 20 63 6f 75  6e 74 2c 20 66 6f 72 20  |ns a count, for |
000406d0  65 61 63 68 20 66 6f 6e  74 20 68 61 6e 64 6c 65  |each font handle|
000406e0  20 28 30 2d 32 35 35 29  20 6f 66 20 68 6f 77 20  | (0-255) of how |
000406f0  6d 61 6e 79 20 74 69 6d  65 73 20 69 74 20 68 61  |many times it ha|
00040700  73 20 62 65 65 6e 20 66  6f 75 6e 64 20 77 69 74  |s been found wit|
00040710  68 20 3c 46 6f 6e 74 5f  46 69 6e 64 46 6f 6e 74  |h <Font_FindFont|
00040720  3e 2e 00 00 44 41 54 41  5f 00 00 00 66 6f 6e 74  |>...DATA_...font|
00040730  5f 42 6c 75 65 47 75 6e  0a 54 68 65 20 6d 61 63  |_BlueGun.The mac|
00040740  72 6f 20 7b 2a 7d 66 6f  6e 74 5f 42 6c 75 65 47  |ro {*}font_BlueG|
00040750  75 6e 7b 2a 7d 20 69 73  20 64 65 66 69 6e 65 64  |un{*} is defined|
00040760  20 69 6e 20 3c 66 6f 6e  74 2e 68 3d 3e 66 6f 6e  | in <font.h=>fon|
00040770  74 5f 68 3e 20 61 73 20  30 78 30 31 30 30 30 30  |t_h> as 0x010000|
00040780  30 30 2e 00 44 41 54 41  8d 01 00 00 46 6f 6e 74  |00..DATA....Font|
00040790  5f 43 61 63 68 65 41 64  64 72 0a 53 79 6e 74 61  |_CacheAddr.Synta|
000407a0  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 46  |x:.<os_error> *F|
000407b0  6f 6e 74 5f 43 61 63 68  65 41 64 64 72 20 28 69  |ont_CacheAddr (i|
000407c0  6e 74 20 2a 76 65 72 73  69 6f 6e 2c 20 69 6e 74  |nt *version, int|
000407d0  20 2a 63 61 63 68 65 75  73 65 64 2c 20 69 6e 74  | *cacheused, int|
000407e0  20 2a 63 61 63 68 65 73  69 7a 65 29 3b 0a 48 65  | *cachesize);.He|
000407f0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 46  |ader:.<DeskLib:F|
00040800  6f 6e 74 2e 68 3d 3e 46  6f 6e 74 3e 0a 0a 52 65  |ont.h=>Font>..Re|
00040810  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
00040820  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
00040830  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
00040840  73 20 66 75 6e 63 74 69  6f 6e 20 66 69 6e 64 73  |s function finds|
00040850  20 74 68 65 20 76 65 72  73 69 6f 6e 20 6e 75 6d  | the version num|
00040860  62 65 72 2c 20 66 6f 6e  74 20 63 61 63 68 65 20  |ber, font cache |
00040870  73 69 7a 65 20 61 6e 64  20 61 6d 6f 75 6e 74 20  |size and amount |
00040880  75 73 65 64 2e 20 54 68  65 20 76 61 6c 75 65 73  |used. The values|
00040890  20 61 72 65 20 72 65 74  75 72 6e 65 64 20 69 6e  | are returned in|
000408a0  20 74 68 65 20 69 6e 74  65 67 65 72 73 20 77 68  | the integers wh|
000408b0  6f 73 65 20 70 6f 69 6e  74 65 72 73 20 61 72 65  |ose pointers are|
000408c0  20 67 69 76 65 6e 2e 20  2f 76 65 72 73 69 6f 6e  | given. /version|
000408d0  2f 20 69 73 20 67 69 76  65 6e 20 6d 75 6c 74 69  |/ is given multi|
000408e0  70 6c 69 65 64 20 62 79  20 31 30 30 2c 20 73 6f  |plied by 100, so|
000408f0  20 76 65 72 73 69 6f 6e  20 32 2e 34 32 20 69 73  | version 2.42 is|
00040900  20 72 65 74 75 72 6e 65  64 20 61 73 20 32 34 32  | returned as 242|
00040910  2e 00 00 00 44 41 54 41  8d 01 00 00 66 6f 6e 74  |....DATA....font|
00040920  5f 63 61 63 68 65 61 64  64 72 65 73 73 0a 53 79  |_cacheaddress.Sy|
00040930  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00040940  20 2a 66 6f 6e 74 5f 63  61 63 68 65 61 64 64 72  | *font_cacheaddr|
00040950  65 73 73 20 28 69 6e 74  20 2a 76 65 72 73 69 6f  |ess (int *versio|
00040960  6e 2c 20 69 6e 74 20 2a  63 61 63 68 65 75 73 65  |n, int *cacheuse|
00040970  64 2c 20 69 6e 74 20 2a  63 61 63 68 65 73 69 7a  |d, int *cachesiz|
00040980  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 66 6f 6e  |e);.Header:.<fon|
00040990  74 2e 68 3d 3e 66 6f 6e  74 5f 68 3e 0a 0a 52 65  |t.h=>font_h>..Re|
000409a0  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
000409b0  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
000409c0  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
000409d0  73 20 66 75 6e 63 74 69  6f 6e 20 66 69 6e 64 73  |s function finds|
000409e0  20 74 68 65 20 76 65 72  73 69 6f 6e 20 6e 75 6d  | the version num|
000409f0  62 65 72 2c 20 66 6f 6e  74 20 63 61 63 68 65 20  |ber, font cache |
00040a00  73 69 7a 65 20 61 6e 64  20 61 6d 6f 75 6e 74 20  |size and amount |
00040a10  75 73 65 64 2e 20 54 68  65 20 76 61 6c 75 65 73  |used. The values|
00040a20  20 61 72 65 20 72 65 74  75 72 6e 65 64 20 69 6e  | are returned in|
00040a30  20 74 68 65 20 69 6e 74  65 67 65 72 73 20 77 68  | the integers wh|
00040a40  6f 73 65 20 70 6f 69 6e  74 65 72 73 20 61 72 65  |ose pointers are|
00040a50  20 67 69 76 65 6e 2e 20  2f 76 65 72 73 69 6f 6e  | given. /version|
00040a60  2f 20 69 73 20 67 69 76  65 6e 20 6d 75 6c 74 69  |/ is given multi|
00040a70  70 6c 69 65 64 20 62 79  20 31 30 30 2c 20 73 6f  |plied by 100, so|
00040a80  20 76 65 72 73 69 6f 6e  20 32 2e 34 32 20 69 73  | version 2.42 is|
00040a90  20 72 65 74 75 72 6e 65  64 20 61 73 20 32 34 32  | returned as 242|
00040aa0  2e 00 00 00 44 41 54 41  a7 01 00 00 46 6f 6e 74  |....DATA....Font|
00040ab0  5f 43 61 72 65 74 2f 66  6f 6e 74 5f 63 61 72 65  |_Caret/font_care|
00040ac0  74 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |t.Syntax:.<os_er|
00040ad0  72 6f 72 3e 20 2a 46 6f  6e 74 5f 43 61 72 65 74  |ror> *Font_Caret|
00040ae0  20 28 69 6e 74 20 63 6f  6c 2c 20 69 6e 74 20 68  | (int col, int h|
00040af0  65 69 67 68 74 2c 20 69  6e 74 20 66 6c 61 67 73  |eight, int flags|
00040b00  2c 20 69 6e 74 20 78 2c  20 69 6e 74 20 79 29 3b  |, int x, int y);|
00040b10  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
00040b20  62 3a 46 6f 6e 74 2e 68  3d 3e 46 6f 6e 74 3e 0a  |b:Font.h=>Font>.|
00040b30  09 3c 66 6f 6e 74 2e 68  3d 3e 66 6f 6e 74 5f 68  |.<font.h=>font_h|
00040b40  3e 20 28 44 65 73 6b 74  6f 70 20 43 29 0a 0a 52  |> (Desktop C)..R|
00040b50  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
00040b60  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
00040b70  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
00040b80  69 73 20 66 75 6e 63 74  69 6f 6e 20 69 73 20 63  |is function is c|
00040b90  61 6c 6c 65 64 20 7b 2a  7d 66 6f 6e 74 5f 63 61  |alled {*}font_ca|
00040ba0  72 65 74 7b 2a 7d 20 69  6e 20 44 65 73 6b 74 6f  |ret{*} in Deskto|
00040bb0  70 20 43 2e 0a 0a 53 65  74 73 20 74 68 65 20 63  |p C...Sets the c|
00040bc0  6f 6c 6f 75 72 2c 20 68  65 69 67 68 74 20 28 69  |olour, height (i|
00040bd0  6e 20 4f 53 20 63 6f 6f  72 64 69 6e 61 74 65 73  |n OS coordinates|
00040be0  29 20 61 6e 64 20 70 6f  73 69 74 69 6f 6e 20 6f  |) and position o|
00040bf0  66 20 74 68 65 20 63 61  72 65 74 2e 20 49 66 20  |f the caret. If |
00040c00  62 69 74 20 34 20 6f 66  20 2f 66 6c 61 67 73 2f  |bit 4 of /flags/|
00040c10  20 69 73 20 73 65 74 2c  20 74 68 65 6e 20 28 78  | is set, then (x|
00040c20  2c 79 29 20 69 73 20 69  6e 20 6d 69 6c 6c 69 70  |,y) is in millip|
00040c30  6f 69 6e 74 73 2c 20 65  6c 73 65 20 69 74 20 69  |oints, else it i|
00040c40  73 20 4f 53 20 75 6e 69  74 73 2e 00 44 41 54 41  |s OS units..DATA|
00040c50  38 02 00 00 46 6f 6e 74  5f 43 68 61 72 42 42 6f  |8...Font_CharBBo|
00040c60  78 2f 66 6f 6e 74 5f 63  68 61 72 62 62 6f 78 0a  |x/font_charbbox.|
00040c70  53 79 6e 74 61 78 3a 09  28 44 65 73 6b 4c 69 62  |Syntax:.(DeskLib|
00040c80  29 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 46 6f  |).<os_error> *Fo|
00040c90  6e 74 5f 43 68 61 72 42  42 6f 78 20 28 3c 66 6f  |nt_CharBBox (<fo|
00040ca0  6e 74 5f 68 61 6e 64 6c  65 3e 20 66 2c 20 63 68  |nt_handle> f, ch|
00040cb0  61 72 20 63 2c 20 69 6e  74 20 66 6c 61 67 73 2c  |ar c, int flags,|
00040cc0  20 3c 66 6f 6e 74 5f 69  6e 66 6f 3e 20 2a 69 6e  | <font_info> *in|
00040cd0  66 6f 29 3b 0a 09 28 44  65 73 6b 74 6f 70 20 43  |fo);..(Desktop C|
00040ce0  29 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 66 6f  |).<os_error> *fo|
00040cf0  6e 74 5f 63 68 61 72 62  62 6f 78 20 28 3c 66 6f  |nt_charbbox (<fo|
00040d00  6e 74 3d 3e 66 6f 6e 74  5f 3e 20 66 2c 20 63 68  |nt=>font_> f, ch|
00040d10  61 72 20 63 2c 20 69 6e  74 20 66 6c 61 67 73 2c  |ar c, int flags,|
00040d20  20 3c 66 6f 6e 74 5f 69  6e 66 6f 3e 20 2a 69 6e  | <font_info> *in|
00040d30  66 6f 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |fo);.Header:.<De|
00040d40  73 6b 4c 69 62 3a 46 6f  6e 74 2e 68 3d 3e 46 6f  |skLib:Font.h=>Fo|
00040d50  6e 74 3e 0a 09 3c 66 6f  6e 74 2e 68 3d 3e 66 6f  |nt>..<font.h=>fo|
00040d60  6e 74 5f 68 3e 20 28 44  65 73 6b 74 6f 70 20 43  |nt_h> (Desktop C|
00040d70  29 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |)..Returns:.Poin|
00040d80  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
00040d90  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
00040da0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00040db0  67 65 74 73 20 74 68 65  20 62 6f 75 6e 64 69 6e  |gets the boundin|
00040dc0  67 20 62 6f 78 20 6f 66  20 61 20 63 68 61 72 61  |g box of a chara|
00040dd0  63 74 65 72 20 69 6e 74  6f 20 2f 69 6e 66 6f 2f  |cter into /info/|
00040de0  2e 20 4f 6e 20 65 6e 74  72 79 2c 20 2f 66 2f 20  |. On entry, /f/ |
00040df0  63 6f 6e 74 61 69 6e 73  20 74 68 65 20 66 6f 6e  |contains the fon|
00040e00  74 20 68 61 6e 64 6c 65  2c 20 2f 63 2f 20 74 68  |t handle, /c/ th|
00040e10  65 20 63 68 61 72 61 63  74 65 72 20 74 6f 20 62  |e character to b|
00040e20  65 20 63 68 65 63 6b 65  64 20 61 6e 64 20 69 66  |e checked and if|
00040e30  20 2f 66 6c 61 67 73 2f  20 62 69 74 20 34 20 69  | /flags/ bit 4 i|
00040e40  73 20 73 65 74 20 74 68  65 20 63 6f 6f 72 64 69  |s set the coordi|
00040e50  6e 61 74 65 73 20 61 72  65 20 69 6e 20 4f 53 20  |nates are in OS |
00040e60  75 6e 69 74 73 2c 20 65  6c 73 65 20 74 68 65 79  |units, else they|
00040e70  20 61 72 65 20 69 6e 20  6d 69 6c 6c 69 70 6f 69  | are in millipoi|
00040e80  6e 74 73 2e 44 41 54 41  9f 00 00 00 66 6f 6e 74  |nts.DATA....font|
00040e90  5f 63 6f 6c 6f 75 72 73  0a 54 68 69 73 20 74 79  |_colours.This ty|
00040ea0  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
00040eb0  20 3c 44 65 73 6b 4c 69  62 3a 46 6f 6e 74 2e 68  | <DeskLib:Font.h|
00040ec0  3d 3e 46 6f 6e 74 3e 2e  20 49 74 20 69 73 20 61  |=>Font>. It is a|
00040ed0  20 73 74 72 75 63 74 75  72 65 20 75 73 65 64 20  | structure used |
00040ee0  66 6f 72 20 68 6f 6c 64  69 6e 67 20 66 6f 6e 74  |for holding font|
00040ef0  20 63 6f 6c 6f 75 72 73  3a 0a 0a 20 20 5c 7b 0a  | colours:..  \{.|
00040f00  20 20 20 20 69 6e 74 20  62 61 63 6b 67 72 6f 75  |    int backgrou|
00040f10  6e 64 2c 20 66 6f 72 65  67 72 6f 75 6e 64 3b 0a  |nd, foreground;.|
00040f20  20 20 7d 00 44 41 54 41  f4 01 00 00 46 6f 6e 74  |  }.DATA....Font|
00040f30  5f 43 6f 6e 76 65 72 74  74 6f 4f 53 2f 66 6f 6e  |_ConverttoOS/fon|
00040f40  74 5f 63 6f 6e 76 65 72  74 74 6f 6f 73 0a 53 79  |t_converttoos.Sy|
00040f50  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00040f60  20 2a 46 6f 6e 74 5f 43  6f 6e 76 65 72 74 74 6f  | *Font_Convertto|
00040f70  4f 53 20 28 69 6e 74 20  78 2c 20 69 6e 74 20 79  |OS (int x, int y|
00040f80  2c 20 69 6e 74 20 2a 78  6f 75 74 2c 20 69 6e 74  |, int *xout, int|
00040f90  20 2a 79 6f 75 74 29 3b  0a 48 65 61 64 65 72 3a  | *yout);.Header:|
00040fa0  09 3c 44 65 73 6b 4c 69  62 3a 46 6f 6e 74 2e 68  |.<DeskLib:Font.h|
00040fb0  3d 3e 46 6f 6e 74 3e 0a  09 3c 66 6f 6e 74 2e 68  |=>Font>..<font.h|
00040fc0  3d 3e 66 6f 6e 74 5f 68  3e 20 28 44 65 73 6b 74  |=>font_h> (Deskt|
00040fd0  6f 70 20 43 29 0a 0a 52  65 74 75 72 6e 73 3a 09  |op C)..Returns:.|
00040fe0  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
00040ff0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
00041000  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
00041010  69 6f 6e 20 63 6f 6e 76  65 72 74 73 20 69 6e 74  |ion converts int|
00041020  65 72 6e 61 6c 20 63 6f  6f 72 64 69 6e 61 74 65  |ernal coordinate|
00041030  73 20 28 78 2c 79 29 20  69 6e 20 6d 69 6c 6c 69  |s (x,y) in milli|
00041040  70 6f 69 6e 74 73 2c 20  74 6f 20 4f 53 20 75 6e  |points, to OS un|
00041050  69 74 73 20 28 75 73 69  6e 67 20 74 68 65 20 63  |its (using the c|
00041060  75 72 72 65 6e 74 20 73  63 61 6c 65 20 66 61 63  |urrent scale fac|
00041070  74 6f 72 29 20 61 6e 64  20 70 6c 61 63 65 73 20  |tor) and places |
00041080  74 68 65 20 72 65 73 75  6c 74 20 69 6e 20 28 2a  |the result in (*|
00041090  78 6f 75 74 2c 2a 79 6f  75 74 29 2e 0a 0a 54 68  |xout,*yout)...Th|
000410a0  69 73 20 66 75 6e 63 74  69 6f 6e 20 6d 61 79 20  |is function may |
000410b0  61 6c 73 6f 20 62 65 20  61 63 63 65 73 73 65 64  |also be accessed|
000410c0  20 61 73 20 7b 2a 7d 46  6f 6e 74 5f 43 6f 6e 76  | as {*}Font_Conv|
000410d0  65 72 74 54 6f 4f 53 7b  2a 7d 20 69 6e 20 44 65  |ertToOS{*} in De|
000410e0  73 6b 4c 69 62 2e 20 49  74 20 69 73 20 63 61 6c  |skLib. It is cal|
000410f0  6c 65 64 20 7b 2a 7d 66  6f 6e 74 5f 63 6f 6e 76  |led {*}font_conv|
00041100  65 72 74 74 6f 6f 73 7b  2a 7d 20 69 6e 20 44 65  |erttoos{*} in De|
00041110  73 6b 74 6f 70 20 43 2e  44 41 54 41 08 02 00 00  |sktop C.DATA....|
00041120  46 6f 6e 74 5f 43 6f 6e  76 65 72 74 74 6f 70 6f  |Font_Converttopo|
00041130  69 6e 74 73 2f 66 6f 6e  74 5f 63 6f 6e 76 65 72  |ints/font_conver|
00041140  74 74 6f 70 6f 69 6e 74  73 0a 53 79 6e 74 61 78  |ttopoints.Syntax|
00041150  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 46 6f  |:.<os_error> *Fo|
00041160  6e 74 5f 43 6f 6e 76 65  72 74 74 6f 70 6f 69 6e  |nt_Converttopoin|
00041170  74 73 20 28 69 6e 74 20  78 2c 20 69 6e 74 20 79  |ts (int x, int y|
00041180  2c 20 69 6e 74 20 2a 78  6f 75 74 2c 20 69 6e 74  |, int *xout, int|
00041190  20 2a 79 6f 75 74 29 3b  0a 48 65 61 64 65 72 3a  | *yout);.Header:|
000411a0  09 3c 44 65 73 6b 4c 69  62 3a 46 6f 6e 74 2e 68  |.<DeskLib:Font.h|
000411b0  3d 3e 46 6f 6e 74 3e 0a  09 3c 66 6f 6e 74 2e 68  |=>Font>..<font.h|
000411c0  3d 3e 66 6f 6e 74 5f 68  3e 20 28 44 65 73 6b 74  |=>font_h> (Deskt|
000411d0  6f 70 20 43 29 0a 0a 52  65 74 75 72 6e 73 3a 09  |op C)..Returns:.|
000411e0  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000411f0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
00041200  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
00041210  69 6f 6e 20 63 6f 6e 76  65 72 74 73 20 4f 53 20  |ion converts OS |
00041220  75 6e 69 74 73 20 28 78  2c 79 29 2c 20 74 6f 20  |units (x,y), to |
00041230  69 6e 74 65 72 6e 61 6c  20 63 6f 6f 72 64 69 6e  |internal coordin|
00041240  61 74 65 73 20 69 6e 20  6d 69 6c 6c 69 70 6f 69  |ates in millipoi|
00041250  6e 74 73 20 28 75 73 69  6e 67 20 74 68 65 20 63  |nts (using the c|
00041260  75 72 72 65 6e 74 20 73  63 61 6c 65 20 66 61 63  |urrent scale fac|
00041270  74 6f 72 29 20 61 6e 64  20 70 6c 61 63 65 73 20  |tor) and places |
00041280  74 68 65 20 72 65 73 75  6c 74 20 69 6e 20 28 2a  |the result in (*|
00041290  78 6f 75 74 2c 2a 79 6f  75 74 29 2e 0a 0a 54 68  |xout,*yout)...Th|
000412a0  69 73 20 66 75 6e 63 74  69 6f 6e 20 6d 61 79 20  |is function may |
000412b0  61 6c 73 6f 20 62 65 20  61 63 63 65 73 73 65 64  |also be accessed|
000412c0  20 61 73 20 7b 2a 7d 46  6f 6e 74 5f 43 6f 6e 76  | as {*}Font_Conv|
000412d0  65 72 74 54 6f 50 6f 69  6e 74 73 7b 2a 7d 20 69  |ertToPoints{*} i|
000412e0  6e 20 44 65 73 6b 4c 69  62 2e 20 49 74 20 69 73  |n DeskLib. It is|
000412f0  20 63 61 6c 6c 65 64 20  7b 2a 7d 66 6f 6e 74 5f  | called {*}font_|
00041300  63 6f 6e 76 65 72 74 74  6f 70 6f 69 6e 74 73 7b  |converttopoints{|
00041310  2a 7d 20 69 6e 20 44 65  73 6b 74 6f 70 20 43 2e  |*} in Desktop C.|
00041320  44 41 54 41 db 00 00 00  66 6f 6e 74 5f 63 75 72  |DATA....font_cur|
00041330  72 65 6e 74 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |rent.Syntax:.<os|
00041340  5f 65 72 72 6f 72 3e 20  2a 66 6f 6e 74 5f 63 75  |_error> *font_cu|
00041350  72 72 65 6e 74 20 28 3c  66 6f 6e 74 5f 73 74 61  |rrent (<font_sta|
00041360  74 65 3e 20 2a 73 74 61  74 65 29 3b 0a 48 65 61  |te> *state);.Hea|
00041370  64 65 72 3a 09 3c 66 6f  6e 74 2e 68 3d 3e 66 6f  |der:.<font.h=>fo|
00041380  6e 74 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |nt_h>..Returns:.|
00041390  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000413a0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000413b0  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
000413c0  69 6f 6e 20 72 65 61 64  73 20 74 68 65 20 63 75  |ion reads the cu|
000413d0  72 72 65 6e 74 20 66 6f  6e 74 20 68 61 6e 64 6c  |rrent font handl|
000413e0  65 20 61 6e 64 20 63 6f  6c 6f 75 72 73 20 69 6e  |e and colours in|
000413f0  74 6f 20 2f 73 74 61 74  65 2f 2e 00 44 41 54 41  |to /state/..DATA|
00041400  e9 00 00 00 46 6f 6e 74  5f 43 75 72 72 65 6e 74  |....Font_Current|
00041410  46 6f 6e 74 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |Font.Syntax:.<os|
00041420  5f 65 72 72 6f 72 3e 20  2a 46 6f 6e 74 5f 43 75  |_error> *Font_Cu|
00041430  72 72 65 6e 74 46 6f 6e  74 20 28 3c 66 6f 6e 74  |rrentFont (<font|
00041440  5f 73 74 61 74 65 3e 20  2a 73 74 61 74 65 29 3b  |_state> *state);|
00041450  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
00041460  62 3a 46 6f 6e 74 2e 68  3d 3e 46 6f 6e 74 3e 0a  |b:Font.h=>Font>.|
00041470  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
00041480  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
00041490  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
000414a0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 72 65  |This function re|
000414b0  61 64 73 20 74 68 65 20  63 75 72 72 65 6e 74 20  |ads the current |
000414c0  66 6f 6e 74 20 68 61 6e  64 6c 65 20 61 6e 64 20  |font handle and |
000414d0  63 6f 6c 6f 75 72 73 20  69 6e 74 6f 20 2f 73 74  |colours into /st|
000414e0  61 74 65 2f 2e 00 00 00  44 41 54 41 1d 01 00 00  |ate/....DATA....|
000414f0  66 6f 6e 74 5f 64 65 66  0a 54 68 69 73 20 74 79  |font_def.This ty|
00041500  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
00041510  20 3c 66 6f 6e 74 2e 68  3d 3e 66 6f 6e 74 5f 68  | <font.h=>font_h|
00041520  3e 2e 20 49 74 20 69 73  20 61 20 73 74 72 75 63  |>. It is a struc|
00041530  74 75 72 65 20 75 73 65  64 20 66 6f 72 20 68 6f  |ture used for ho|
00041540  6c 64 69 6e 67 20 69 6e  66 6f 72 6d 61 74 69 6f  |lding informatio|
00041550  6e 20 61 62 6f 75 74 20  61 20 66 6f 6e 74 3a 0a  |n about a font:.|
00041560  0a 09 5c 7b 0a 09 20 09  63 68 61 72 20 6e 61 6d  |..\{.. .char nam|
00041570  65 5b 31 36 5d 3b 0a 09  20 09 69 6e 74 20 78 73  |e[16];.. .int xs|
00041580  69 7a 65 2c 20 79 73 69  7a 65 2c 20 78 72 65 73  |ize, ysize, xres|
00041590  2c 20 79 72 65 73 3b 0a  09 20 09 69 6e 74 20 75  |, yres;.. .int u|
000415a0  73 61 67 65 2c 20 61 67  65 3b 0a 09 7d 0a 0a 2f  |sage, age;..}../|
000415b0  78 73 69 7a 65 2f 20 61  6e 64 20 2f 79 73 69 7a  |xsize/ and /ysiz|
000415c0  65 2f 20 61 72 65 20 69  6e 20 31 2f 31 36 74 68  |e/ are in 1/16th|
000415d0  73 20 6f 66 20 61 20 70  6f 69 6e 74 2e 0a 2f 78  |s of a point../x|
000415e0  72 65 73 2f 20 61 6e 64  20 2f 79 72 65 73 2f 20  |res/ and /yres/ |
000415f0  61 72 65 20 69 6e 20 64  6f 74 73 20 70 65 72 20  |are in dots per |
00041600  69 6e 63 68 2e 00 00 00  44 41 54 41 48 01 00 00  |inch....DATAH...|
00041610  66 6f 6e 74 5f 64 65 66  6e 0a 54 68 69 73 20 74  |font_defn.This t|
00041620  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
00041630  6e 20 3c 44 65 73 6b 4c  69 62 3a 46 6f 6e 74 2e  |n <DeskLib:Font.|
00041640  68 3d 3e 46 6f 6e 74 3e  2e 20 49 74 20 69 73 20  |h=>Font>. It is |
00041650  61 20 73 74 72 75 63 74  75 72 65 20 75 73 65 64  |a structure used|
00041660  20 66 6f 72 20 68 6f 6c  64 69 6e 67 20 69 6e 66  | for holding inf|
00041670  6f 72 6d 61 74 69 6f 6e  20 61 62 6f 75 74 20 61  |ormation about a|
00041680  20 66 6f 6e 74 3a 0a 0a  20 20 5c 7b 0a 20 20 20  | font:..  \{.   |
00041690  20 63 68 61 72 20 6e 61  6d 65 5b 31 32 38 5d 3b  | char name[128];|
000416a0  20 20 20 2f 2a 20 4d 61  79 20 62 65 20 43 52 20  |   /* May be CR |
000416b0  74 65 72 6d 69 6e 61 74  65 64 20 2a 2f 0a 20 20  |terminated */.  |
000416c0  20 20 69 6e 74 20 78 73  69 7a 65 2c 20 79 73 69  |  int xsize, ysi|
000416d0  7a 65 2c 20 78 72 65 73  2c 20 79 72 65 73 3b 0a  |ze, xres, yres;.|
000416e0  20 20 20 20 69 6e 74 20  61 67 65 2c 20 75 73 61  |    int age, usa|
000416f0  67 65 3b 0a 20 20 7d 0a  0a 2f 78 73 69 7a 65 2f  |ge;.  }../xsize/|
00041700  20 61 6e 64 20 2f 79 73  69 7a 65 2f 27 20 61 72  | and /ysize/' ar|
00041710  65 20 69 6e 20 31 2f 31  36 74 68 73 20 6f 66 20  |e in 1/16ths of |
00041720  61 20 70 6f 69 6e 74 2e  0a 2f 78 72 65 73 2f 20  |a point../xres/ |
00041730  61 6e 64 20 2f 79 72 65  73 2f 20 61 72 65 20 69  |and /yres/ are i|
00041740  6e 20 64 6f 74 73 20 70  65 72 20 69 6e 63 68 2e  |n dots per inch.|
00041750  44 41 54 41 fd 01 00 00  66 6f 6e 74 5f 66 69 6e  |DATA....font_fin|
00041760  64 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |d.Syntax:.<os_er|
00041770  72 6f 72 3e 20 2a 66 6f  6e 74 5f 66 69 6e 64 20  |ror> *font_find |
00041780  28 63 68 61 72 20 2a 6e  61 6d 65 2c 20 69 6e 74  |(char *name, int|
00041790  20 78 73 69 7a 65 2c 20  69 6e 74 20 79 73 69 7a  | xsize, int ysiz|
000417a0  65 2c 20 69 6e 74 20 78  72 65 73 2c 20 69 6e 74  |e, int xres, int|
000417b0  20 79 72 65 73 2c 20 3c  66 6f 6e 74 3d 3e 66 6f  | yres, <font=>fo|
000417c0  6e 74 5f 3e 20 2a 68 61  6e 64 6c 65 29 3b 0a 48  |nt_> *handle);.H|
000417d0  65 61 64 65 72 3a 09 3c  66 6f 6e 74 2e 68 3d 3e  |eader:.<font.h=>|
000417e0  66 6f 6e 74 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |font_h>..Returns|
000417f0  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
00041800  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
00041810  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
00041820  63 74 69 6f 6e 20 72 65  74 75 72 6e 73 20 61 20  |ction returns a |
00041830  68 61 6e 64 6c 65 20 28  69 6e 20 7b 2f 7d 2a 68  |handle (in {/}*h|
00041840  61 6e 64 6c 65 7b 2f 7d  29 20 74 6f 20 61 20 66  |andle{/}) to a f|
00041850  6f 6e 74 20 77 68 6f 73  65 20 69 64 65 6e 74 69  |ont whose identi|
00041860  66 69 65 72 2c 20 70 6f  69 6e 74 20 73 69 7a 65  |fier, point size|
00041870  2c 20 61 6e 64 20 73 63  72 65 65 6e 20 72 65 73  |, and screen res|
00041880  6f 6c 75 74 69 6f 6e 20  61 72 65 20 67 69 76 65  |olution are give|
00041890  6e 20 28 69 6e 20 7b 2f  7d 6e 61 6d 65 7b 2f 7d  |n (in {/}name{/}|
000418a0  2c 20 7b 2f 7d 78 73 69  7a 65 7b 2f 7d 2c 20 7b  |, {/}xsize{/}, {|
000418b0  2f 7d 79 73 69 7a 65 7b  2f 7d 2c 20 7b 2f 7d 78  |/}ysize{/}, {/}x|
000418c0  72 65 73 7b 2f 7d 20 61  6e 64 20 7b 2f 7d 79 72  |res{/} and {/}yr|
000418d0  65 73 7b 2f 7d 29 2e 20  49 74 20 61 6c 73 6f 20  |es{/}). It also |
000418e0  73 65 74 73 20 69 74 20  61 73 20 74 68 65 20 63  |sets it as the c|
000418f0  75 72 72 65 6e 74 20 66  6f 6e 74 20 66 6f 72 20  |urrent font for |
00041900  75 73 65 20 62 79 20 3c  66 6f 6e 74 5f 70 61 69  |use by <font_pai|
00041910  6e 74 3e 20 65 74 63 2e  0a 0a 57 68 65 6e 20 79  |nt> etc...When y|
00041920  6f 75 20 6e 6f 20 6c 6f  6e 67 65 72 20 6e 65 65  |ou no longer nee|
00041930  64 20 74 68 65 20 66 6f  6e 74 2c 20 63 61 6c 6c  |d the font, call|
00041940  20 3c 66 6f 6e 74 5f 6c  6f 73 65 3e 2e 00 00 00  | <font_lose>....|
00041950  44 41 54 41 8c 02 00 00  46 6f 6e 74 5f 46 69 6e  |DATA....Font_Fin|
00041960  64 43 61 72 65 74 2f 66  6f 6e 74 5f 66 69 6e 64  |dCaret/font_find|
00041970  63 61 72 65 74 0a 53 79  6e 74 61 78 3a 09 3c 6f  |caret.Syntax:.<o|
00041980  73 5f 65 72 72 6f 72 3e  20 2a 46 6f 6e 74 5f 46  |s_error> *Font_F|
00041990  69 6e 64 43 61 72 65 74  20 28 3c 66 6f 6e 74 5f  |indCaret (<font_|
000419a0  73 74 72 69 6e 67 3e 20  2a 73 74 72 69 6e 67 29  |string> *string)|
000419b0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000419c0  69 62 3a 46 6f 6e 74 2e  68 3d 3e 46 6f 6e 74 3e  |ib:Font.h=>Font>|
000419d0  0a 09 3c 66 6f 6e 74 2e  68 3d 3e 66 6f 6e 74 5f  |..<font.h=>font_|
000419e0  68 3e 20 28 44 65 73 6b  74 6f 70 20 43 29 0a 0a  |h> (Desktop C)..|
000419f0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00041a00  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00041a10  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 43  |ULL> if none...C|
00041a20  61 6c 6c 65 64 20 7b 2a  7d 66 6f 6e 74 5f 66 69  |alled {*}font_fi|
00041a30  6e 64 63 61 72 65 74 7b  2a 7d 20 69 6e 20 44 65  |ndcaret{*} in De|
00041a40  73 6b 74 6f 70 20 43 2e  0a 0a 4f 6e 20 65 6e 74  |sktop C...On ent|
00041a50  72 79 2c 20 7b 2f 7d 73  74 72 69 6e 67 2d 3e 73  |ry, {/}string->s|
00041a60  7b 2f 7d 20 63 6f 6e 74  61 69 6e 73 20 61 20 73  |{/} contains a s|
00041a70  74 72 69 6e 67 20 61 6e  64 20 28 73 74 72 69 6e  |tring and (strin|
00041a80  67 2d 3e 78 2c 73 74 72  69 6e 67 2d 3e 79 29 20  |g->x,string->y) |
00041a90  63 6f 6e 74 61 69 6e 73  20 74 68 65 20 6f 66 66  |contains the off|
00041aa0  73 65 74 20 69 6e 20 6d  69 6c 6c 69 70 6f 69 6e  |set in millipoin|
00041ab0  74 73 2e 20 54 68 69 73  20 66 75 6e 63 74 69 6f  |ts. This functio|
00041ac0  6e 20 66 69 6e 64 73 20  74 68 65 20 63 68 61 72  |n finds the char|
00041ad0  61 63 74 65 72 20 6e 65  61 72 65 73 74 20 74 6f  |acter nearest to|
00041ae0  20 74 68 65 20 67 69 76  65 6e 20 6f 66 66 73 65  | the given offse|
00041af0  74 20 61 6e 64 20 72 65  74 75 72 6e 73 20 69 6e  |t and returns in|
00041b00  66 6f 20 61 62 6f 75 74  20 69 74 20 69 6e 20 74  |fo about it in t|
00041b10  68 65 20 2f 73 74 72 69  6e 67 2f 20 62 6c 6f 63  |he /string/ bloc|
00041b20  6b 3a 0a 0a 7b 2f 7d 73  74 72 69 6e 67 2d 3e 74  |k:..{/}string->t|
00041b30  65 72 6d 7b 2f 7d 20 63  6f 6e 74 61 69 6e 73 20  |erm{/} contains |
00041b40  74 68 65 20 69 6e 64 65  78 20 69 6e 74 6f 20 74  |the index into t|
00041b50  68 65 20 73 74 72 69 6e  67 2c 20 7b 2f 7d 73 74  |he string, {/}st|
00041b60  72 69 6e 67 2d 3e 73 70  6c 69 74 7b 2f 7d 20 67  |ring->split{/} g|
00041b70  69 76 65 73 20 74 68 65  20 6e 75 6d 62 65 72 20  |ives the number |
00041b80  6f 66 20 70 72 69 6e 74  61 62 6c 65 20 63 68 61  |of printable cha|
00041b90  72 61 63 74 65 72 73 20  62 65 66 6f 72 65 20 74  |racters before t|
00041ba0  68 61 74 20 70 6f 69 6e  74 2c 20 61 6e 64 20 7b  |hat point, and {|
00041bb0  2f 7d 73 74 72 69 6e 67  2d 3e 73 7b 2f 7d 20 6e  |/}string->s{/} n|
00041bc0  6f 77 20 70 6f 69 6e 74  73 20 74 6f 20 74 68 61  |ow points to tha|
00041bd0  74 20 63 68 61 72 61 63  74 65 72 2e 44 41 54 41  |t character.DATA|
00041be0  67 01 00 00 46 6f 6e 74  5f 46 69 6e 64 43 61 72  |g...Font_FindCar|
00041bf0  65 74 4a 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |etJ.Syntax:.<os_|
00041c00  65 72 72 6f 72 3e 20 2a  46 6f 6e 74 5f 46 69 6e  |error> *Font_Fin|
00041c10  64 43 61 72 65 74 4a 20  28 3c 66 6f 6e 74 5f 73  |dCaretJ (<font_s|
00041c20  74 72 69 6e 67 3e 20 2a  73 74 72 2c 20 69 6e 74  |tring> *str, int|
00041c30  20 78 6f 66 66 2c 20 69  6e 74 20 79 6f 66 66 29  | xoff, int yoff)|
00041c40  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
00041c50  69 62 3a 46 6f 6e 74 2e  68 3d 3e 46 6f 6e 74 3e  |ib:Font.h=>Font>|
00041c60  0a 09 3c 66 6f 6e 74 2e  68 3d 3e 66 6f 6e 74 5f  |..<font.h=>font_|
00041c70  68 3e 20 28 44 65 73 6b  74 6f 70 20 43 29 0a 0a  |h> (Desktop C)..|
00041c80  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00041c90  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00041ca0  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00041cb0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 69 73 20  |his function is |
00041cc0  73 69 6d 69 6c 61 72 20  74 6f 20 3c 46 6f 6e 74  |similar to <Font|
00041cd0  5f 46 69 6e 64 43 61 72  65 74 3e 2c 20 62 75 74  |_FindCaret>, but|
00041ce0  20 2f 78 6f 66 66 2f 20  61 6e 64 20 2f 79 6f 66  | /xoff/ and /yof|
00041cf0  66 2f 20 63 6f 6e 74 61  69 6e 73 20 6a 75 73 74  |f/ contains just|
00041d00  69 66 69 63 61 74 69 6f  6e 20 6f 66 66 73 65 74  |ification offset|
00041d10  73 2e 20 49 74 20 69 73  20 63 61 6c 6c 65 64 20  |s. It is called |
00041d20  7b 2a 7d 66 6f 6e 74 5f  66 69 6e 64 63 61 72 65  |{*}font_findcare|
00041d30  74 6a 7b 2a 7d 20 69 6e  20 44 65 73 6b 74 6f 70  |tj{*} in Desktop|
00041d40  20 43 2e 00 44 41 54 41  f5 01 00 00 46 6f 6e 74  | C..DATA....Font|
00041d50  5f 46 69 6e 64 46 6f 6e  74 0a 53 79 6e 74 61 78  |_FindFont.Syntax|
00041d60  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 46 6f  |:.<os_error> *Fo|
00041d70  6e 74 5f 46 69 6e 64 46  6f 6e 74 20 28 3c 66 6f  |nt_FindFont (<fo|
00041d80  6e 74 5f 68 61 6e 64 6c  65 3e 20 2a 66 6f 6e 74  |nt_handle> *font|
00041d90  2c 20 63 68 61 72 20 2a  6e 61 6d 65 2c 20 69 6e  |, char *name, in|
00041da0  74 20 78 73 69 7a 65 2c  20 69 6e 74 20 79 73 69  |t xsize, int ysi|
00041db0  7a 65 2c 20 69 6e 74 20  78 72 65 73 2c 20 69 6e  |ze, int xres, in|
00041dc0  74 20 79 72 65 73 29 3b  0a 48 65 61 64 65 72 3a  |t yres);.Header:|
00041dd0  09 3c 44 65 73 6b 4c 69  62 3a 46 6f 6e 74 2e 68  |.<DeskLib:Font.h|
00041de0  3d 3e 46 6f 6e 74 3e 0a  0a 52 65 74 75 72 6e 73  |=>Font>..Returns|
00041df0  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
00041e00  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
00041e10  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
00041e20  63 74 69 6f 6e 20 72 65  74 75 72 6e 73 20 61 20  |ction returns a |
00041e30  68 61 6e 64 6c 65 20 28  69 6e 20 7b 2f 7d 2a 66  |handle (in {/}*f|
00041e40  6f 6e 74 7b 2f 7d 29 20  74 6f 20 61 20 66 6f 6e  |ont{/}) to a fon|
00041e50  74 20 77 68 6f 73 65 20  69 64 65 6e 74 69 66 69  |t whose identifi|
00041e60  65 72 2c 20 70 6f 69 6e  74 20 73 69 7a 65 2c 20  |er, point size, |
00041e70  61 6e 64 20 73 63 72 65  65 6e 20 72 65 73 6f 6c  |and screen resol|
00041e80  75 74 69 6f 6e 20 61 72  65 20 67 69 76 65 6e 20  |ution are given |
00041e90  69 6e 20 2f 6e 61 6d 65  2f 2c 20 2f 78 73 69 7a  |in /name/, /xsiz|
00041ea0  65 2f 2c 20 2f 79 73 69  7a 65 2f 2c 20 2f 78 72  |e/, /ysize/, /xr|
00041eb0  65 73 2f 20 61 6e 64 20  2f 79 72 65 73 2f 2e 20  |es/ and /yres/. |
00041ec0  49 74 20 61 6c 73 6f 20  73 65 74 73 20 69 74 20  |It also sets it |
00041ed0  61 73 20 74 68 65 20 63  75 72 72 65 6e 74 20 66  |as the current f|
00041ee0  6f 6e 74 20 66 6f 72 20  75 73 65 20 62 79 20 3c  |ont for use by <|
00041ef0  46 6f 6e 74 5f 50 61 69  6e 74 3e 20 65 74 63 2e  |Font_Paint> etc.|
00041f00  0a 0a 57 68 65 6e 20 79  6f 75 20 6e 6f 20 6c 6f  |..When you no lo|
00041f10  6e 67 65 72 20 6e 65 65  64 20 74 68 65 20 66 6f  |nger need the fo|
00041f20  6e 74 2c 20 63 61 6c 6c  20 3c 46 6f 6e 74 5f 4c  |nt, call <Font_L|
00041f30  6f 73 65 46 6f 6e 74 3e  2e 00 00 00 44 41 54 41  |oseFont>....DATA|
00041f40  10 01 00 00 66 6f 6e 74  5f 66 75 74 75 72 65 0a  |....font_future.|
00041f50  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
00041f60  72 3e 20 2a 66 6f 6e 74  5f 66 75 74 75 72 65 20  |r> *font_future |
00041f70  28 3c 66 6f 6e 74 5f 73  74 61 74 65 3e 20 2a 73  |(<font_state> *s|
00041f80  74 61 74 65 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |tate);.Header:.<|
00041f90  66 6f 6e 74 2e 68 3d 3e  66 6f 6e 74 5f 68 3e 0a  |font.h=>font_h>.|
00041fa0  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
00041fb0  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
00041fc0  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
00041fd0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 72 65  |This function re|
00041fe0  61 64 73 20 77 68 61 74  20 74 68 65 20 73 74 61  |ads what the sta|
00041ff0  74 65 20 61 66 74 65 72  20 74 68 65 20 6e 65 78  |te after the nex|
00042000  74 20 63 61 6c 6c 20 74  6f 20 3c 66 6f 6e 74 5f  |t call to <font_|
00042010  70 61 69 6e 74 3e 20 77  6f 75 6c 64 20 62 65 2e  |paint> would be.|
00042020  20 59 6f 75 20 6d 75 73  74 20 66 69 72 73 74 20  | You must first |
00042030  68 61 76 65 20 63 61 6c  6c 65 64 20 3c 66 6f 6e  |have called <fon|
00042040  74 5f 73 74 72 77 69 64  74 68 3e 2e 44 41 54 41  |t_strwidth>.DATA|
00042050  21 01 00 00 46 6f 6e 74  5f 46 75 74 75 72 65 46  |!...Font_FutureF|
00042060  6f 6e 74 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |ont.Syntax:.<os_|
00042070  65 72 72 6f 72 3e 20 2a  46 6f 6e 74 5f 46 75 74  |error> *Font_Fut|
00042080  75 72 65 46 6f 6e 74 20  28 3c 66 6f 6e 74 5f 73  |ureFont (<font_s|
00042090  74 61 74 65 3e 20 2a 73  74 61 74 65 29 3b 0a 48  |tate> *state);.H|
000420a0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
000420b0  46 6f 6e 74 2e 68 3d 3e  46 6f 6e 74 3e 0a 0a 52  |Font.h=>Font>..R|
000420c0  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
000420d0  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
000420e0  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
000420f0  69 73 20 66 75 6e 63 74  69 6f 6e 20 72 65 61 64  |is function read|
00042100  73 20 77 68 61 74 20 74  68 65 20 73 74 61 74 65  |s what the state|
00042110  20 61 66 74 65 72 20 74  68 65 20 6e 65 78 74 20  | after the next |
00042120  63 61 6c 6c 20 74 6f 20  3c 46 6f 6e 74 5f 50 61  |call to <Font_Pa|
00042130  69 6e 74 3e 20 77 6f 75  6c 64 20 62 65 2e 20 59  |int> would be. Y|
00042140  6f 75 20 6d 75 73 74 20  66 69 72 73 74 20 68 61  |ou must first ha|
00042150  76 65 20 63 61 6c 6c 65  64 20 3c 46 6f 6e 74 5f  |ve called <Font_|
00042160  53 74 72 69 6e 67 57 69  64 74 68 3e 2e 00 00 00  |StringWidth>....|
00042170  44 41 54 41 61 00 00 00  66 6f 6e 74 5f 47 72 65  |DATAa...font_Gre|
00042180  65 6e 47 75 6e 0a 54 68  65 20 6d 61 63 72 6f 20  |enGun.The macro |
00042190  7b 2a 7d 66 6f 6e 74 5f  47 72 65 65 6e 47 75 6e  |{*}font_GreenGun|
000421a0  7b 2a 7d 20 69 73 20 64  65 66 69 6e 65 64 20 69  |{*} is defined i|
000421b0  6e 20 3c 66 6f 6e 74 2e  68 3d 3e 66 6f 6e 74 5f  |n <font.h=>font_|
000421c0  68 3e 20 61 73 20 30 78  30 30 30 31 30 30 30 30  |h> as 0x00010000|
000421d0  2e 00 00 00 44 41 54 41  67 03 00 00 66 6f 6e 74  |....DATAg...font|
000421e0  2e 68 0a 54 68 69 73 20  68 65 61 64 65 72 20 64  |.h.This header d|
000421f0  65 63 6c 61 72 65 73 20  66 75 6e 63 74 69 6f 6e  |eclares function|
00042200  73 20 61 6c 6c 6f 77 69  6e 67 20 61 63 63 65 73  |s allowing acces|
00042210  73 0a 74 6f 20 74 68 65  20 52 49 53 43 20 4f 53  |s.to the RISC OS|
00042220  20 66 6f 6e 74 20 66 61  63 69 6c 69 74 69 65 73  | font facilities|
00042230  2e 0a 0a 46 75 6e 63 74  69 6f 6e 73 3a 0a 0a 23  |...Functions:..#|
00042240  74 61 62 6c 65 20 31 34  20 32 34 0a 3c 66 6f 6e  |table 14 24.<fon|
00042250  74 5f 63 61 63 68 65 61  64 64 72 65 73 73 3e 0a  |t_cacheaddress>.|
00042260  3c 66 6f 6e 74 5f 63 61  72 65 74 3e 0a 3c 66 6f  |<font_caret>.<fo|
00042270  6e 74 5f 63 68 61 72 62  62 6f 78 3e 0a 3c 66 6f  |nt_charbbox>.<fo|
00042280  6e 74 5f 63 6f 6e 76 65  72 74 74 6f 6f 73 3e 0a  |nt_converttoos>.|
00042290  3c 66 6f 6e 74 5f 63 6f  6e 76 65 72 74 74 6f 70  |<font_converttop|
000422a0  6f 69 6e 74 73 3e 0a 3c  66 6f 6e 74 5f 63 75 72  |oints>.<font_cur|
000422b0  72 65 6e 74 3e 0a 3c 66  6f 6e 74 5f 66 69 6e 64  |rent>.<font_find|
000422c0  3e 0a 3c 66 6f 6e 74 5f  66 69 6e 64 63 61 72 65  |>.<font_findcare|
000422d0  74 3e 0a 3c 66 6f 6e 74  5f 66 69 6e 64 63 61 72  |t>.<font_findcar|
000422e0  65 74 6a 3e 0a 3c 66 6f  6e 74 5f 66 75 74 75 72  |etj>.<font_futur|
000422f0  65 3e 0a 3c 66 6f 6e 74  5f 6c 69 73 74 3e 0a 3c  |e>.<font_list>.<|
00042300  66 6f 6e 74 5f 6c 6f 73  65 3e 0a 3c 66 6f 6e 74  |font_lose>.<font|
00042310  5f 6f 75 74 70 75 74 5f  73 69 7a 65 3e 0a 3c 66  |_output_size>.<f|
00042320  6f 6e 74 5f 6f 75 74 70  75 74 5f 74 6f 5f 62 75  |ont_output_to_bu|
00042330  66 66 65 72 3e 0a 3c 66  6f 6e 74 5f 6f 75 74 70  |ffer>.<font_outp|
00042340  75 74 5f 74 6f 5f 6e 75  6c 6c 3e 0a 3c 66 6f 6e  |ut_to_null>.<fon|
00042350  74 5f 6f 75 74 70 75 74  5f 74 6f 5f 73 63 72 65  |t_output_to_scre|
00042360  65 6e 3e 0a 3c 66 6f 6e  74 5f 70 61 69 6e 74 3e  |en>.<font_paint>|
00042370  0a 3c 66 6f 6e 74 5f 72  65 61 64 64 65 66 3e 0a  |.<font_readdef>.|
00042380  3c 66 6f 6e 74 5f 72 65  61 64 69 6e 66 6f 3e 0a  |<font_readinfo>.|
00042390  3c 66 6f 6e 74 5f 72 65  61 64 73 63 61 6c 65 66  |<font_readscalef|
000423a0  61 63 74 6f 72 3e 0a 3c  66 6f 6e 74 5f 72 65 61  |actor>.<font_rea|
000423b0  64 74 68 72 65 73 68 6f  6c 64 73 3e 0a 3c 66 6f  |dthresholds>.<fo|
000423c0  6e 74 5f 73 65 74 63 6f  6c 6f 75 72 3e 0a 3c 66  |nt_setcolour>.<f|
000423d0  6f 6e 74 5f 73 65 74 66  6f 6e 74 3e 0a 3c 66 6f  |ont_setfont>.<fo|
000423e0  6e 74 5f 73 65 74 70 61  6c 65 74 74 65 3e 0a 3c  |nt_setpalette>.<|
000423f0  66 6f 6e 74 5f 73 65 74  73 63 61 6c 65 66 61 63  |font_setscalefac|
00042400  74 6f 72 3e 0a 3c 66 6f  6e 74 5f 73 65 74 74 68  |tor>.<font_setth|
00042410  72 65 73 68 6f 6c 64 73  3e 0a 3c 66 6f 6e 74 5f  |resholds>.<font_|
00042420  73 74 72 69 6e 67 62 62  6f 78 3e 0a 3c 66 6f 6e  |stringbbox>.<fon|
00042430  74 5f 73 74 72 77 69 64  74 68 3e 0a 23 65 6e 64  |t_strwidth>.#end|
00042440  54 61 62 6c 65 0a 0a 23  54 61 62 6c 65 20 39 20  |Table..#Table 9 |
00042450  32 34 0a 4d 61 63 72 6f  73 3a 0a 0a 3c 66 6f 6e  |24.Macros:..<fon|
00042460  74 5f 4a 55 53 54 49 46  59 3e 0a 3c 66 6f 6e 74  |t_JUSTIFY>.<font|
00042470  5f 52 55 42 4f 55 54 3e  0a 3c 66 6f 6e 74 5f 41  |_RUBOUT>.<font_A|
00042480  42 53 3e 0a 3c 66 6f 6e  74 5f 4f 53 43 4f 4f 52  |BS>.<font_OSCOOR|
00042490  44 53 3e 0a 3c 66 6f 6e  74 5f 42 6c 75 65 47 75  |DS>.<font_BlueGu|
000424a0  6e 3e 0a 3c 66 6f 6e 74  5f 47 72 65 65 6e 47 75  |n>.<font_GreenGu|
000424b0  6e 3e 0a 3c 66 6f 6e 74  5f 52 65 64 47 75 6e 3e  |n>.<font_RedGun>|
000424c0  0a 54 79 70 65 73 3a 0a  0a 3c 66 6f 6e 74 3d 3e  |.Types:..<font=>|
000424d0  66 6f 6e 74 5f 3e 0a 3c  66 6f 6e 74 5f 64 65 66  |font_>.<font_def|
000424e0  3e 0a 3c 66 6f 6e 74 5f  69 6e 66 6f 3e 0a 3c 66  |>.<font_info>.<f|
000424f0  6f 6e 74 5f 73 74 72 69  6e 67 3e 0a 3c 66 6f 6e  |ont_string>.<fon|
00042500  74 5f 73 74 61 74 65 3e  0a 3c 66 6f 6e 74 5f 74  |t_state>.<font_t|
00042510  68 72 65 73 68 6f 6c 64  3e 0a 3c 66 6f 6e 74 5f  |hreshold>.<font_|
00042520  61 63 74 69 6f 6e 5f 6f  6e 5f 62 69 74 6d 61 70  |action_on_bitmap|
00042530  3e 0a 23 45 6e 64 54 61  62 6c 65 00 44 41 54 41  |>.#EndTable.DATA|
00042540  89 00 00 00 66 6f 6e 74  5f 68 61 6e 64 6c 65 0a  |....font_handle.|
00042550  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
00042560  69 6e 65 64 20 69 6e 20  3c 44 65 73 6b 4c 69 62  |ined in <DeskLib|
00042570  3a 46 6f 6e 74 2e 68 3d  3e 46 6f 6e 74 3e 2e 20  |:Font.h=>Font>. |
00042580  49 74 20 69 73 20 75 73  65 64 20 74 6f 20 68 6f  |It is used to ho|
00042590  6c 64 20 61 20 66 6f 6e  74 20 68 61 6e 64 6c 65  |ld a font handle|
000425a0  2e 20 49 74 20 69 73 20  61 63 74 75 61 6c 6c 79  |. It is actually|
000425b0  20 64 65 66 69 6e 65 64  20 61 73 20 61 6e 20 2f  | defined as an /|
000425c0  69 6e 74 2f 2e 00 00 00  44 41 54 41 d8 00 00 00  |int/....DATA....|
000425d0  66 6f 6e 74 5f 69 6e 66  6f 0a 54 68 69 73 20 74  |font_info.This t|
000425e0  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
000425f0  6e 20 3c 44 65 73 6b 4c  69 62 3a 46 6f 6e 74 2e  |n <DeskLib:Font.|
00042600  68 3d 3e 46 6f 6e 74 3e  20 61 6e 64 20 3c 66 6f  |h=>Font> and <fo|
00042610  6e 74 2e 68 3d 3e 66 6f  6e 74 5f 68 3e 20 28 44  |nt.h=>font_h> (D|
00042620  65 73 6b 74 6f 70 20 43  29 2e 20 49 74 20 69 73  |esktop C). It is|
00042630  20 61 20 73 74 72 75 63  74 75 72 65 20 75 73 65  | a structure use|
00042640  64 20 66 6f 72 20 68 6f  6c 64 69 6e 67 20 69 6e  |d for holding in|
00042650  66 6f 72 6d 61 74 69 6f  6e 20 61 62 6f 75 74 20  |formation about |
00042660  61 20 66 6f 6e 74 27 73  20 62 6f 75 6e 64 69 6e  |a font's boundin|
00042670  67 20 62 6f 78 3a 0a 0a  20 20 5c 7b 0a 20 20 20  |g box:..  \{.   |
00042680  20 69 6e 74 20 6d 69 6e  78 2c 20 6d 69 6e 79 2c  | int minx, miny,|
00042690  20 6d 61 78 78 2c 20 6d  61 78 79 3b 0a 20 20 7d  | maxx, maxy;.  }|
000426a0  44 41 54 41 b6 00 00 00  66 6f 6e 74 5f 4a 55 53  |DATA....font_JUS|
000426b0  54 49 46 59 0a 54 68 69  73 20 6d 61 63 72 6f 20  |TIFY.This macro |
000426c0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 66  |is defined in <f|
000426d0  6f 6e 74 2e 68 3d 3e 66  6f 6e 74 5f 68 3e 2e 20  |ont.h=>font_h>. |
000426e0  49 74 20 69 73 20 74 68  65 20 76 61 6c 75 65 20  |It is the value |
000426f0  6f 66 20 74 68 65 20 62  69 74 20 75 73 65 64 20  |of the bit used |
00042700  74 6f 20 69 6e 64 69 63  61 74 65 20 69 6e 20 74  |to indicate in t|
00042710  68 65 20 70 61 69 6e 74  20 6f 70 74 69 6f 6e 73  |he paint options|
00042720  20 74 68 61 74 20 74 65  78 74 20 73 68 6f 75 6c  | that text shoul|
00042730  64 20 62 65 20 6a 75 73  74 69 66 69 65 64 2e 20  |d be justified. |
00042740  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It is defined as|
00042750  20 30 78 30 31 2e 00 00  44 41 54 41 24 02 00 00  | 0x01...DATA$...|
00042760  66 6f 6e 74 5f 6c 69 73  74 0a 53 79 6e 74 61 78  |font_list.Syntax|
00042770  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 66 6f  |:.<os_error> *fo|
00042780  6e 74 5f 6c 69 73 74 20  28 63 68 61 72 20 2a 6e  |nt_list (char *n|
00042790  61 6d 65 2c 20 69 6e 74  20 2a 63 6f 75 6e 74 29  |ame, int *count)|
000427a0  3b 0a 48 65 61 64 65 72  3a 09 3c 66 6f 6e 74 2e  |;.Header:.<font.|
000427b0  68 3d 3e 66 6f 6e 74 5f  68 3e 0a 0a 52 65 74 75  |h=>font_h>..Retu|
000427c0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000427d0  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
000427e0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
000427f0  66 75 6e 63 74 69 6f 6e  20 63 61 6c 6c 73 20 74  |function calls t|
00042800  68 65 20 3c 53 57 49 20  46 6f 6e 74 5f 4c 69 73  |he <SWI Font_Lis|
00042810  74 46 6f 6e 74 73 3d 3e  53 57 49 3a 46 6f 6e 74  |tFonts=>SWI:Font|
00042820  5f 4c 69 73 74 46 6f 6e  74 73 3e 20 28 69 6e 20  |_ListFonts> (in |
00042830  52 49 53 43 20 4f 53 20  32 20 6d 6f 64 65 29 2e  |RISC OS 2 mode).|
00042840  20 2f 6e 61 6d 65 2f 20  73 68 6f 75 6c 64 20 70  | /name/ should p|
00042850  6f 69 6e 74 20 74 6f 20  61 20 62 75 66 66 65 72  |oint to a buffer|
00042860  20 66 6f 72 20 74 68 65  20 66 6f 6e 74 20 6e 61  | for the font na|
00042870  6d 65 2c 20 61 6e 64 20  7b 2f 7d 2a 63 6f 75 6e  |me, and {/}*coun|
00042880  74 7b 2f 7d 20 73 68 6f  75 6c 64 20 69 6e 69 74  |t{/} should init|
00042890  69 61 6c 6c 79 20 63 6f  6e 74 61 69 6e 20 30 2e  |ially contain 0.|
000428a0  20 41 66 74 65 72 20 65  61 63 68 20 63 61 6c 6c  | After each call|
000428b0  2c 20 61 20 66 6f 6e 74  20 6e 61 6d 65 20 77 69  |, a font name wi|
000428c0  6c 6c 20 62 65 20 72 65  74 75 72 6e 65 64 20 69  |ll be returned i|
000428d0  6e 20 2f 6e 61 6d 65 2f  20 61 6e 64 20 7b 2f 7d  |n /name/ and {/}|
000428e0  2a 63 6f 75 6e 74 7b 2f  7d 20 77 69 6c 6c 20 62  |*count{/} will b|
000428f0  65 20 69 6e 63 72 65 6d  65 6e 74 65 64 3b 20 73  |e incremented; s|
00042900  6f 20 62 79 20 73 75 63  63 65 73 73 69 76 65 20  |o by successive |
00042910  63 61 6c 6c 73 20 61 20  63 6f 6d 70 6c 65 74 65  |calls a complete|
00042920  20 66 6f 6e 74 20 6c 69  73 74 20 63 61 6e 20 62  | font list can b|
00042930  65 20 62 75 69 6c 74 20  75 70 2e 20 7b 2f 7d 2a  |e built up. {/}*|
00042940  63 6f 75 6e 74 7b 2f 7d  20 63 6f 6e 74 61 69 6e  |count{/} contain|
00042950  73 20 2d 31 20 61 66 74  65 72 20 74 68 65 20 6c  |s -1 after the l|
00042960  61 73 74 20 66 6f 6e 74  20 6e 61 6d 65 20 68 61  |ast font name ha|
00042970  73 20 62 65 65 6e 20 72  65 61 64 2e 44 41 54 41  |s been read.DATA|
00042980  34 02 00 00 46 6f 6e 74  5f 4c 69 73 74 46 6f 6e  |4...Font_ListFon|
00042990  74 73 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |ts.Syntax:.<os_e|
000429a0  72 72 6f 72 3e 20 2a 46  6f 6e 74 5f 4c 69 73 74  |rror> *Font_List|
000429b0  46 6f 6e 74 73 20 28 63  68 61 72 20 2a 6e 61 6d  |Fonts (char *nam|
000429c0  65 2c 20 69 6e 74 20 2a  63 6f 75 6e 74 29 3b 0a  |e, int *count);.|
000429d0  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
000429e0  3a 46 6f 6e 74 2e 68 3d  3e 46 6f 6e 74 3e 0a 0a  |:Font.h=>Font>..|
000429f0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00042a00  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00042a10  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00042a20  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 61 6c  |his function cal|
00042a30  6c 73 20 74 68 65 20 53  57 49 20 3c 46 6f 6e 74  |ls the SWI <Font|
00042a40  5f 4c 69 73 74 46 6f 6e  74 73 3d 3e 53 57 49 3a  |_ListFonts=>SWI:|
00042a50  46 6f 6e 74 5f 4c 69 73  74 46 6f 6e 74 73 3e 20  |Font_ListFonts> |
00042a60  28 69 6e 20 52 49 53 43  20 4f 53 20 32 20 6d 6f  |(in RISC OS 2 mo|
00042a70  64 65 29 2e 20 2f 6e 61  6d 65 2f 20 73 68 6f 75  |de). /name/ shou|
00042a80  6c 64 20 70 6f 69 6e 74  20 74 6f 20 61 20 62 75  |ld point to a bu|
00042a90  66 66 65 72 20 66 6f 72  20 74 68 65 20 66 6f 6e  |ffer for the fon|
00042aa0  74 20 6e 61 6d 65 2c 20  61 6e 64 20 7b 2f 7d 2a  |t name, and {/}*|
00042ab0  63 6f 75 6e 74 7b 2f 7d  20 73 68 6f 75 6c 64 20  |count{/} should |
00042ac0  69 6e 69 74 69 61 6c 6c  79 20 63 6f 6e 74 61 69  |initially contai|
00042ad0  6e 20 30 2e 20 41 66 74  65 72 20 65 61 63 68 20  |n 0. After each |
00042ae0  63 61 6c 6c 2c 20 61 20  66 6f 6e 74 20 6e 61 6d  |call, a font nam|
00042af0  65 20 77 69 6c 6c 20 62  65 20 72 65 74 75 72 6e  |e will be return|
00042b00  65 64 20 69 6e 20 2f 6e  61 6d 65 2f 20 61 6e 64  |ed in /name/ and|
00042b10  20 7b 2f 7d 2a 63 6f 75  6e 74 7b 2f 7d 20 77 69  | {/}*count{/} wi|
00042b20  6c 6c 20 62 65 20 69 6e  63 72 65 6d 65 6e 74 65  |ll be incremente|
00042b30  64 3b 20 73 6f 20 62 79  20 73 75 63 63 65 73 73  |d; so by success|
00042b40  69 76 65 20 63 61 6c 6c  73 20 61 20 63 6f 6d 70  |ive calls a comp|
00042b50  6c 65 74 65 20 66 6f 6e  74 20 6c 69 73 74 20 63  |lete font list c|
00042b60  61 6e 20 62 65 20 62 75  69 6c 74 20 75 70 2e 20  |an be built up. |
00042b70  7b 2f 7d 2a 63 6f 75 6e  74 7b 2f 7d 20 63 6f 6e  |{/}*count{/} con|
00042b80  74 61 69 6e 73 20 2d 31  20 61 66 74 65 72 20 74  |tains -1 after t|
00042b90  68 65 20 6c 61 73 74 20  66 6f 6e 74 20 6e 61 6d  |he last font nam|
00042ba0  65 20 68 61 73 20 62 65  65 6e 20 72 65 61 64 2e  |e has been read.|
00042bb0  44 41 54 41 de 00 00 00  66 6f 6e 74 5f 6c 6f 73  |DATA....font_los|
00042bc0  65 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |e.Syntax:.<os_er|
00042bd0  72 6f 72 3e 20 2a 66 6f  6e 74 5f 6c 6f 73 65 20  |ror> *font_lose |
00042be0  28 3c 66 6f 6e 74 3d 3e  66 6f 6e 74 5f 3e 20 66  |(<font=>font_> f|
00042bf0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 66 6f 6e 74  |);.Header:.<font|
00042c00  2e 68 3d 3e 66 6f 6e 74  5f 68 3e 0a 0a 52 65 74  |.h=>font_h>..Ret|
00042c10  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
00042c20  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
00042c30  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
00042c40  20 66 75 6e 63 74 69 6f  6e 20 74 65 6c 6c 73 20  | function tells |
00042c50  74 68 65 20 46 6f 6e 74  20 4d 61 6e 61 67 65 72  |the Font Manager|
00042c60  20 74 68 61 74 20 61 20  70 61 72 74 69 63 75 6c  | that a particul|
00042c70  61 72 20 66 6f 6e 74 20  69 73 20 6e 6f 20 6c 6f  |ar font is no lo|
00042c80  6e 67 65 72 20 72 65 71  75 69 72 65 64 2e 00 00  |nger required...|
00042c90  44 41 54 41 f1 00 00 00  46 6f 6e 74 5f 4c 6f 73  |DATA....Font_Los|
00042ca0  65 41 6c 6c 46 6f 6e 74  73 0a 53 79 6e 74 61 78  |eAllFonts.Syntax|
00042cb0  3a 09 76 6f 69 64 20 46  6f 6e 74 5f 4c 6f 73 65  |:.void Font_Lose|
00042cc0  41 6c 6c 46 6f 6e 74 73  20 28 3c 66 6f 6e 74 5f  |AllFonts (<font_|
00042cd0  61 72 72 61 79 3e 20 2a  66 6f 6e 74 73 29 3b 0a  |array> *fonts);.|
00042ce0  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
00042cf0  3a 46 6f 6e 74 2e 68 3d  3e 46 6f 6e 74 3e 0a 0a  |:Font.h=>Font>..|
00042d00  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00042d10  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00042d20  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00042d30  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 61 6c  |his function cal|
00042d40  6c 73 20 3c 46 6f 6e 74  5f 4c 6f 73 65 46 6f 6e  |ls <Font_LoseFon|
00042d50  74 3e 20 66 6f 72 20 61  6c 6c 20 66 6f 6e 74 73  |t> for all fonts|
00042d60  20 69 6e 20 74 68 65 20  66 6f 6e 74 20 75 73 61  | in the font usa|
00042d70  67 65 20 61 72 72 61 79  20 2f 66 6f 6e 74 73 2f  |ge array /fonts/|
00042d80  2e 00 00 00 44 41 54 41  ef 00 00 00 46 6f 6e 74  |....DATA....Font|
00042d90  5f 4c 6f 73 65 46 6f 6e  74 0a 53 79 6e 74 61 78  |_LoseFont.Syntax|
00042da0  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 46 6f  |:.<os_error> *Fo|
00042db0  6e 74 5f 4c 6f 73 65 46  6f 6e 74 20 28 3c 66 6f  |nt_LoseFont (<fo|
00042dc0  6e 74 5f 68 61 6e 64 6c  65 3e 20 66 6f 6e 74 29  |nt_handle> font)|
00042dd0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
00042de0  69 62 3a 46 6f 6e 74 2e  68 3d 3e 46 6f 6e 74 3e  |ib:Font.h=>Font>|
00042df0  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
00042e00  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
00042e10  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
00042e20  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 74  |.This function t|
00042e30  65 6c 6c 73 20 74 68 65  20 46 6f 6e 74 20 4d 61  |ells the Font Ma|
00042e40  6e 61 67 65 72 20 74 68  61 74 20 61 20 70 61 72  |nager that a par|
00042e50  74 69 63 75 6c 61 72 20  66 6f 6e 74 20 69 73 20  |ticular font is |
00042e60  6e 6f 20 6c 6f 6e 67 65  72 20 72 65 71 75 69 72  |no longer requir|
00042e70  65 64 2e 00 44 41 54 41  b6 00 00 00 66 6f 6e 74  |ed..DATA....font|
00042e80  5f 4f 53 43 4f 4f 52 44  53 0a 54 68 69 73 20 6d  |_OSCOORDS.This m|
00042e90  61 63 72 6f 20 69 73 20  64 65 66 69 6e 65 64 20  |acro is defined |
00042ea0  69 6e 20 3c 66 6f 6e 74  2e 68 3d 3e 66 6f 6e 74  |in <font.h=>font|
00042eb0  5f 68 3e 2e 20 49 74 20  69 73 20 74 68 65 20 76  |_h>. It is the v|
00042ec0  61 6c 75 65 20 6f 66 20  74 68 65 20 62 69 74 20  |alue of the bit |
00042ed0  75 73 65 64 20 74 6f 20  69 6e 64 69 63 61 74 65  |used to indicate|
00042ee0  20 69 6e 20 74 68 65 20  70 61 69 6e 74 20 6f 70  | in the paint op|
00042ef0  74 69 6f 6e 73 20 74 68  61 74 20 4f 53 20 63 6f  |tions that OS co|
00042f00  6f 72 64 69 6e 61 74 65  73 20 61 72 65 20 75 73  |ordinates are us|
00042f10  65 64 2e 20 49 74 20 69  73 20 64 65 66 69 6e 65  |ed. It is define|
00042f20  64 20 61 73 20 30 78 31  30 2e 00 00 44 41 54 41  |d as 0x10...DATA|
00042f30  ea 00 00 00 66 6f 6e 74  5f 6f 75 74 70 75 74 5f  |....font_output_|
00042f40  73 69 7a 65 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |size.Syntax:.<os|
00042f50  5f 65 72 72 6f 72 3e 20  2a 66 6f 6e 74 5f 6f 75  |_error> *font_ou|
00042f60  74 70 75 74 5f 73 69 7a  65 20 28 3c 73 69 7a 65  |tput_size (<size|
00042f70  5f 74 3e 20 2a 73 69 7a  65 5f 70 74 72 29 3b 0a  |_t> *size_ptr);.|
00042f80  48 65 61 64 65 72 3a 09  3c 66 6f 6e 74 2e 68 3d  |Header:.<font.h=|
00042f90  3e 66 6f 6e 74 5f 68 3e  0a 0a 52 65 74 75 72 6e  |>font_h>..Return|
00042fa0  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
00042fb0  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
00042fc0  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 63 61  |f none...This ca|
00042fd0  75 73 65 73 20 72 65 74  75 72 6e 73 20 74 68 65  |uses returns the|
00042fe0  20 73 69 7a 65 20 6f 66  20 44 72 61 77 20 66 69  | size of Draw fi|
00042ff0  6c 65 20 70 72 6f 64 75  63 65 64 20 73 6f 20 66  |le produced so f|
00043000  61 72 20 69 6e 20 7b 2f  7d 2a 73 69 7a 65 5f 70  |ar in {/}*size_p|
00043010  74 72 7b 2f 7d 2e 00 00  44 41 54 41 e5 01 00 00  |tr{/}...DATA....|
00043020  66 6f 6e 74 5f 6f 75 74  70 75 74 5f 74 6f 5f 62  |font_output_to_b|
00043030  75 66 66 65 72 0a 53 79  6e 74 61 78 3a 09 3c 6f  |uffer.Syntax:.<o|
00043040  73 5f 65 72 72 6f 72 3e  20 2a 66 6f 6e 74 5f 6f  |s_error> *font_o|
00043050  75 74 70 75 74 5f 74 6f  5f 62 75 66 66 65 72 20  |utput_to_buffer |
00043060  28 3c 64 72 61 77 6d 6f  64 5f 62 75 66 66 65 72  |(<drawmod_buffer|
00043070  3e 20 2a 62 75 66 66 5f  70 74 72 2c 20 3c 42 4f  |> *buff_ptr, <BO|
00043080  4f 4c 3e 20 61 64 64 5f  68 69 6e 74 73 2c 20 42  |OL> add_hints, B|
00043090  4f 4f 4c 20 6f 75 74 70  75 74 5f 73 6b 65 6c 65  |OOL output_skele|
000430a0  74 6f 6e 2c 20 3c 66 6f  6e 74 5f 61 63 74 69 6f  |ton, <font_actio|
000430b0  6e 5f 6f 6e 5f 62 69 74  6d 61 70 3e 20 61 63 74  |n_on_bitmap> act|
000430c0  69 6f 6e 29 3b 0a 48 65  61 64 65 72 3a 09 3c 66  |ion);.Header:.<f|
000430d0  6f 6e 74 2e 68 3d 3e 66  6f 6e 74 5f 68 3e 0a 0a  |ont.h=>font_h>..|
000430e0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
000430f0  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00043100  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00043110  68 69 73 20 63 61 75 73  65 73 20 66 75 72 74 68  |his causes furth|
00043120  65 72 20 63 61 6c 6c 73  20 74 6f 20 3c 66 6f 6e  |er calls to <fon|
00043130  74 5f 70 61 69 6e 74 3e  20 74 6f 20 62 65 20 6f  |t_paint> to be o|
00043140  75 74 70 75 74 20 74 6f  20 74 68 65 20 62 75 66  |utput to the buf|
00043150  66 65 72 2c 20 61 73 20  69 66 20 74 68 65 79 20  |fer, as if they |
00043160  77 65 72 65 20 61 20 64  72 61 77 20 70 61 74 68  |were a draw path|
00043170  2e 20 49 66 20 7b 2f 7d  61 64 64 5f 68 69 6e 74  |. If {/}add_hint|
00043180  73 7b 2f 7d 20 69 73 20  3c 54 52 55 45 3e 20 74  |s{/} is <TRUE> t|
00043190  68 65 6e 20 68 69 6e 74  73 20 61 72 65 20 61 64  |hen hints are ad|
000431a0  64 65 64 2c 20 69 66 20  7b 2f 7d 6f 75 74 70 75  |ded, if {/}outpu|
000431b0  74 5f 73 6b 65 6c 65 74  6f 6e 7b 2f 7d 20 69 73  |t_skeleton{/} is|
000431c0  20 54 52 55 45 20 74 68  65 6e 20 73 6f 6d 65 74  | TRUE then somet|
000431d0  68 69 6e 67 20 65 6c 73  65 20 68 61 70 70 65 6e  |hing else happen|
000431e0  73 20 28 62 75 74 20 69  74 27 73 20 6e 6f 74 20  |s (but it's not |
000431f0  69 6e 20 74 68 65 20 50  52 4d 21 29 2e 00 00 00  |in the PRM!)....|
00043200  44 41 54 41 79 02 00 00  66 6f 6e 74 5f 6f 75 74  |DATAy...font_out|
00043210  70 75 74 5f 74 6f 5f 6e  75 6c 6c 0a 53 79 6e 74  |put_to_null.Synt|
00043220  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
00043230  66 6f 6e 74 5f 6f 75 74  70 75 74 5f 74 6f 5f 6e  |font_output_to_n|
00043240  75 6c 6c 20 28 3c 42 4f  4f 4c 3e 20 61 64 64 5f  |ull (<BOOL> add_|
00043250  68 69 6e 74 73 2c 20 42  4f 4f 4c 20 6f 75 74 70  |hints, BOOL outp|
00043260  75 74 5f 73 6b 65 6c 65  74 6f 6e 2c 20 3c 66 6f  |ut_skeleton, <fo|
00043270  6e 74 5f 61 63 74 69 6f  6e 5f 6f 6e 5f 62 69 74  |nt_action_on_bit|
00043280  6d 61 70 3e 20 61 63 74  69 6f 6e 29 3b 0a 48 65  |map> action);.He|
00043290  61 64 65 72 3a 09 3c 66  6f 6e 74 2e 68 3d 3e 66  |ader:.<font.h=>f|
000432a0  6f 6e 74 5f 68 3e 0a 0a  52 65 74 75 72 6e 73 3a  |ont_h>..Returns:|
000432b0  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
000432c0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
000432d0  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 63 61 75 73  |none...This caus|
000432e0  65 73 20 66 75 72 74 68  65 72 20 63 61 6c 6c 73  |es further calls|
000432f0  20 74 6f 20 3c 66 6f 6e  74 5f 70 61 69 6e 74 3e  | to <font_paint>|
00043300  20 74 6f 20 62 65 20 6f  75 74 70 75 74 20 74 6f  | to be output to|
00043310  20 6e 6f 77 68 65 72 65  20 61 74 20 61 6c 6c 2c  | nowhere at all,|
00043320  20 61 73 20 69 66 20 74  68 65 79 20 77 65 72 65  | as if they were|
00043330  20 61 20 64 72 61 77 20  70 61 74 68 2e 20 53 75  | a draw path. Su|
00043340  62 73 65 71 75 65 6e 74  6c 79 20 63 61 6c 6c 69  |bsequently calli|
00043350  6e 67 20 74 68 65 20 66  75 6e 63 74 69 6f 6e 20  |ng the function |
00043360  3c 66 6f 6e 74 5f 6f 75  74 70 75 74 5f 73 69 7a  |<font_output_siz|
00043370  65 3e 20 77 69 6c 6c 20  72 65 74 75 72 6e 20 74  |e> will return t|
00043380  68 65 20 61 6d 6f 75 6e  74 20 6f 66 20 62 75 66  |he amount of buf|
00043390  66 65 72 20 73 70 61 63  65 20 75 73 65 64 20 28  |fer space used (|
000433a0  73 6f 20 79 6f 75 20 63  61 6e 20 64 6f 20 69 74  |so you can do it|
000433b0  20 66 6f 72 20 72 65 61  6c 20 77 69 74 68 20 74  | for real with t|
000433c0  68 65 20 63 6f 72 72 65  63 74 20 62 75 66 66 65  |he correct buffe|
000433d0  72 20 73 69 7a 65 29 2e  20 49 66 20 7b 2f 7d 61  |r size). If {/}a|
000433e0  64 64 5f 68 69 6e 74 73  7b 2f 7d 20 69 73 20 3c  |dd_hints{/} is <|
000433f0  54 52 55 45 3e 20 74 68  65 6e 20 73 70 61 63 65  |TRUE> then space|
00043400  20 69 73 20 61 6c 6c 6f  63 61 74 65 64 20 66 6f  | is allocated fo|
00043410  72 20 68 69 6e 74 73 20  61 73 20 77 65 6c 6c 2c  |r hints as well,|
00043420  20 69 66 20 7b 2f 7d 6f  75 74 70 75 74 5f 73 6b  | if {/}output_sk|
00043430  65 6c 65 74 6f 6e 7b 2f  7d 20 69 73 20 54 52 55  |eleton{/} is TRU|
00043440  45 20 74 68 65 6e 20 73  6f 6d 65 74 68 69 6e 67  |E then something|
00043450  20 65 6c 73 65 20 68 61  70 70 65 6e 73 20 28 62  | else happens (b|
00043460  75 74 20 69 74 27 73 20  6e 6f 74 20 69 6e 20 74  |ut it's not in t|
00043470  68 65 20 50 52 4d 21 29  2e 00 00 00 44 41 54 41  |he PRM!)....DATA|
00043480  e8 00 00 00 66 6f 6e 74  5f 6f 75 74 70 75 74 5f  |....font_output_|
00043490  74 6f 5f 73 63 72 65 65  6e 0a 53 79 6e 74 61 78  |to_screen.Syntax|
000434a0  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 66 6f  |:.<os_error> *fo|
000434b0  6e 74 5f 6f 75 74 70 75  74 5f 74 6f 5f 73 63 72  |nt_output_to_scr|
000434c0  65 65 6e 20 28 76 6f 69  64 29 3b 0a 48 65 61 64  |een (void);.Head|
000434d0  65 72 3a 09 3c 66 6f 6e  74 2e 68 3d 3e 66 6f 6e  |er:.<font.h=>fon|
000434e0  74 5f 68 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |t_h>..Returns:.P|
000434f0  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
00043500  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
00043510  6e 65 2e 0a 0a 54 68 69  73 20 63 61 75 73 65 73  |ne...This causes|
00043520  20 66 75 72 74 68 65 72  20 63 61 6c 6c 73 20 74  | further calls t|
00043530  6f 20 3c 66 6f 6e 74 5f  70 61 69 6e 74 3e 20 74  |o <font_paint> t|
00043540  6f 20 62 65 20 6f 75 74  70 75 74 20 74 6f 20 74  |o be output to t|
00043550  68 65 20 73 63 72 65 65  6e 20 61 73 20 6e 6f 72  |he screen as nor|
00043560  6d 61 6c 2e 44 41 54 41  7d 03 00 00 46 6f 6e 74  |mal.DATA}...Font|
00043570  5f 50 61 69 6e 74 2f 66  6f 6e 74 5f 70 61 69 6e  |_Paint/font_pain|
00043580  74 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |t.Syntax:.<os_er|
00043590  72 6f 72 3e 20 2a 46 6f  6e 74 5f 50 61 69 6e 74  |ror> *Font_Paint|
000435a0  20 28 63 68 61 72 20 2a  73 74 72 2c 20 69 6e 74  | (char *str, int|
000435b0  20 3c 6f 70 74 69 6f 6e  73 3d 3e 53 57 49 3a 66  | <options=>SWI:f|
000435c0  6f 6e 74 5f 70 61 69 6e  74 30 3e 2c 20 69 6e 74  |ont_paint0>, int|
000435d0  20 78 2c 20 69 6e 74 20  79 29 3b 0a 48 65 61 64  | x, int y);.Head|
000435e0  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 46 6f 6e  |er:.<DeskLib:Fon|
000435f0  74 2e 68 3d 3e 46 6f 6e  74 3e 0a 09 3c 66 6f 6e  |t.h=>Font>..<fon|
00043600  74 2e 68 3d 3e 66 6f 6e  74 5f 68 3e 20 28 44 65  |t.h=>font_h> (De|
00043610  73 6b 74 6f 70 20 43 29  0a 0a 52 65 74 75 72 6e  |sktop C)..Return|
00043620  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
00043630  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
00043640  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
00043650  6e 63 74 69 6f 6e 20 69  73 20 63 61 6c 6c 65 64  |nction is called|
00043660  20 7b 2a 7d 66 6f 6e 74  5f 70 61 69 6e 74 7b 2a  | {*}font_paint{*|
00043670  7d 20 69 6e 20 44 65 73  6b 74 6f 70 20 43 2e 0a  |} in Desktop C..|
00043680  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 77  |.This function w|
00043690  72 69 74 65 73 20 61 20  73 74 72 69 6e 67 20 74  |rites a string t|
000436a0  6f 20 74 68 65 20 73 63  72 65 65 6e 20 28 69 6e  |o the screen (in|
000436b0  20 74 68 65 20 52 49 53  43 20 4f 53 20 32 20 77  | the RISC OS 2 w|
000436c0  61 79 29 20 75 73 69 6e  67 20 74 68 65 20 63 75  |ay) using the cu|
000436d0  72 72 65 6e 74 6c 79 20  73 65 6c 65 63 74 65 64  |rrently selected|
000436e0  20 66 6f 6e 74 20 28 73  65 6c 65 63 74 20 77 69  | font (select wi|
000436f0  74 68 20 3c 46 6f 6e 74  5f 53 65 74 46 6f 6e 74  |th <Font_SetFont|
00043700  3e 29 2c 20 61 74 20 70  6f 73 69 74 69 6f 6e 20  |>), at position |
00043710  28 78 2c 79 29 2e 20 43  65 72 74 61 69 6e 20 63  |(x,y). Certain c|
00043720  6f 6e 74 72 6f 6c 20 63  68 61 72 61 63 74 65 72  |ontrol character|
00043730  73 20 69 6e 20 2f 73 74  72 2f 20 68 61 76 65 20  |s in /str/ have |
00043740  61 6e 20 65 66 66 65 63  74 20 61 73 20 66 6f 6c  |an effect as fol|
00043750  6c 6f 77 73 3a 0a 0a 23  69 6e 64 65 6e 74 20 31  |lows:..#indent 1|
00043760  3b 74 61 62 0a 20 39 2c  6c 6f 77 2c 6d 69 64 64  |;tab. 9,low,midd|
00043770  6c 65 2c 68 69 67 68 09  4d 6f 76 65 20 48 20 70  |le,high.Move H p|
00043780  6f 73 69 74 69 6f 6e 0a  31 31 2c 6c 6f 77 2c 6d  |osition.11,low,m|
00043790  69 64 64 6c 65 2c 68 69  67 68 09 4d 6f 76 65 20  |iddle,high.Move |
000437a0  56 20 70 6f 73 69 74 69  6f 6e 0a 31 37 2c 63 6f  |V position.17,co|
000437b0  6c 6f 75 72 09 43 68 61  6e 67 65 20 63 6f 6c 6f  |lour.Change colo|
000437c0  75 72 0a 31 38 2c 62 61  63 6b 2c 66 6f 72 65 2c  |ur.18,back,fore,|
000437d0  6f 66 66 73 65 74 09 43  68 61 6e 67 65 20 63 6f  |offset.Change co|
000437e0  6c 6f 75 72 73 0a 32 35  2c 70 6f 73 2c 74 68 69  |lours.25,pos,thi|
000437f0  63 6b 6e 65 73 73 09 55  6e 64 65 72 6c 69 6e 65  |ckness.Underline|
00043800  20 6f 6e 2f 6f 66 66 0a  32 36 2c 66 6f 6e 74 68  | on/off.26,fonth|
00043810  61 6e 64 6c 65 09 43 68  61 6e 67 65 20 66 6f 6e  |andle.Change fon|
00043820  74 0a 0a 39 20 61 6e 64  20 31 31 20 68 61 76 65  |t..9 and 11 have|
00043830  20 74 68 72 65 65 2d 62  79 74 65 20 76 61 6c 75  | three-byte valu|
00043840  65 73 2c 20 69 6e 20 6d  69 6c 6c 69 70 6f 69 6e  |es, in millipoin|
00043850  74 73 2e 0a 31 37 20 63  68 61 6e 67 65 73 20 6a  |ts..17 changes j|
00043860  75 73 74 20 6f 6e 65 20  63 6f 6c 6f 75 72 20 28  |ust one colour (|
00043870  61 73 20 3c 56 44 55 20  31 37 3d 3e 56 44 55 2e  |as <VDU 17=>VDU.|
00043880  31 37 3e 29 2e 0a 31 38  20 63 68 61 6e 67 65 73  |17>)..18 changes|
00043890  20 62 6f 74 68 20 63 6f  6c 6f 75 72 73 20 61 6e  | both colours an|
000438a0  64 20 61 6e 74 69 2d 61  6c 69 61 73 69 6e 67 2e  |d anti-aliasing.|
000438b0  0a 32 35 20 2d 20 70 6f  73 20 61 6e 64 20 74 68  |.25 - pos and th|
000438c0  69 63 6b 6e 65 73 73 20  69 6e 20 31 2f 32 35 36  |ickness in 1/256|
000438d0  74 68 73 20 6f 66 20 66  6f 6e 74 20 73 69 7a 65  |ths of font size|
000438e0  2e 00 00 00 44 41 54 41  0c 02 00 00 66 6f 6e 74  |....DATA....font|
000438f0  5f 72 65 61 64 64 65 66  0a 53 79 6e 74 61 78 3a  |_readdef.Syntax:|
00043900  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 66 6f 6e  |.<os_error> *fon|
00043910  74 5f 72 65 61 64 64 65  66 20 28 3c 66 6f 6e 74  |t_readdef (<font|
00043920  3d 3e 66 6f 6e 74 5f 3e  20 66 2c 20 3c 66 6f 6e  |=>font_> f, <fon|
00043930  74 5f 64 65 66 3e 20 2a  64 65 66 6e 29 3b 0a 48  |t_def> *defn);.H|
00043940  65 61 64 65 72 3a 09 3c  66 6f 6e 74 2e 68 3d 3e  |eader:.<font.h=>|
00043950  66 6f 6e 74 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |font_h>..Returns|
00043960  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
00043970  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
00043980  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
00043990  63 74 69 6f 6e 20 72 65  74 75 72 6e 73 20 61 20  |ction returns a |
000439a0  6e 75 6d 62 65 72 20 6f  66 20 64 65 74 61 69 6c  |number of detail|
000439b0  73 20 61 62 6f 75 74 20  61 20 66 6f 6e 74 2e 20  |s about a font. |
000439c0  2f 66 2f 20 63 6f 6e 74  61 69 6e 73 20 74 68 65  |/f/ contains the|
000439d0  20 66 6f 6e 74 20 68 61  6e 64 6c 65 2e 20 4f 6e  | font handle. On|
000439e0  20 65 78 69 74 2c 20 7b  2f 7d 64 65 66 6e 2d 3e  | exit, {/}defn->|
000439f0  6e 61 6d 65 7b 2f 7d 20  63 6f 6e 74 61 69 6e 73  |name{/} contains|
00043a00  20 74 68 65 20 66 6f 6e  74 20 6e 61 6d 65 2c 20  | the font name, |
00043a10  7b 2f 7d 64 65 66 6e 2d  3e 75 73 61 67 65 7b 2f  |{/}defn->usage{/|
00043a20  7d 20 67 69 76 65 73 20  74 68 65 20 6e 75 6d 62  |} gives the numb|
00043a30  65 72 20 6f 66 20 74 69  6d 65 73 20 74 68 61 74  |er of times that|
00043a40  20 3c 66 6f 6e 74 5f 66  69 6e 64 3e 20 68 61 73  | <font_find> has|
00043a50  20 66 6f 75 6e 64 20 74  68 65 20 66 6f 6e 74 2c  | found the font,|
00043a60  20 6d 69 6e 75 73 20 74  68 65 20 6e 75 6d 62 65  | minus the numbe|
00043a70  72 20 6f 66 20 74 69 6d  65 73 20 74 68 61 74 20  |r of times that |
00043a80  3c 66 6f 6e 74 5f 6c 6f  73 65 3e 20 68 61 73 20  |<font_lose> has |
00043a90  62 65 65 6e 20 75 73 65  64 20 6f 6e 20 69 74 2e  |been used on it.|
00043aa0  20 7b 2f 7d 64 65 66 6e  2d 3e 61 67 65 7b 2f 7d  | {/}defn->age{/}|
00043ab0  20 69 73 20 74 68 65 20  6e 75 6d 62 65 72 20 6f  | is the number o|
00043ac0  66 20 66 6f 6e 74 20 61  63 63 65 73 65 73 20 6d  |f font acceses m|
00043ad0  61 64 65 20 73 69 6e 63  65 20 74 68 69 73 20 6f  |ade since this o|
00043ae0  6e 65 20 77 61 73 20 61  63 63 65 73 73 65 64 2e  |ne was accessed.|
00043af0  44 41 54 41 9f 02 00 00  46 6f 6e 74 5f 52 65 61  |DATA....Font_Rea|
00043b00  64 44 65 66 6e 0a 53 79  6e 74 61 78 3a 09 3c 6f  |dDefn.Syntax:.<o|
00043b10  73 5f 65 72 72 6f 72 3e  20 2a 46 6f 6e 74 5f 52  |s_error> *Font_R|
00043b20  65 61 64 44 65 66 6e 20  28 3c 66 6f 6e 74 5f 68  |eadDefn (<font_h|
00043b30  61 6e 64 6c 65 3e 20 66  6f 6e 74 2c 20 3c 66 6f  |andle> font, <fo|
00043b40  6e 74 5f 64 65 66 6e 3e  20 2a 64 65 66 6e 29 3b  |nt_defn> *defn);|
00043b50  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
00043b60  62 3a 46 6f 6e 74 2e 68  3d 3e 46 6f 6e 74 3e 0a  |b:Font.h=>Font>.|
00043b70  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
00043b80  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
00043b90  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
00043ba0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 72 65  |This function re|
00043bb0  74 75 72 6e 73 20 61 20  6e 75 6d 62 65 72 20 6f  |turns a number o|
00043bc0  66 20 64 65 74 61 69 6c  73 20 61 62 6f 75 74 20  |f details about |
00043bd0  61 20 66 6f 6e 74 2e 20  2f 66 6f 6e 74 2f 20 63  |a font. /font/ c|
00043be0  6f 6e 74 61 69 6e 73 20  74 68 65 20 66 6f 6e 74  |ontains the font|
00043bf0  20 68 61 6e 64 6c 65 2e  20 4f 6e 20 65 78 69 74  | handle. On exit|
00043c00  2c 20 7b 2f 7d 64 65 66  6e 2d 3e 6e 61 6d 65 7b  |, {/}defn->name{|
00043c10  2f 7d 20 63 6f 6e 74 61  69 6e 73 20 74 68 65 20  |/} contains the |
00043c20  66 6f 6e 74 20 6e 61 6d  65 2c 20 7b 2f 7d 64 65  |font name, {/}de|
00043c30  66 6e 2d 3e 75 73 61 67  65 7b 2f 7d 20 67 69 76  |fn->usage{/} giv|
00043c40  65 73 20 74 68 65 20 6e  75 6d 62 65 72 20 6f 66  |es the number of|
00043c50  20 74 69 6d 65 73 20 74  68 61 74 20 3c 46 6f 6e  | times that <Fon|
00043c60  74 5f 46 69 6e 64 46 6f  6e 74 3e 20 68 61 73 20  |t_FindFont> has |
00043c70  66 6f 75 6e 64 20 74 68  65 20 66 6f 6e 74 2c 20  |found the font, |
00043c80  6d 69 6e 75 73 20 74 68  65 20 6e 75 6d 62 65 72  |minus the number|
00043c90  20 6f 66 20 74 69 6d 65  20 74 68 61 74 20 3c 46  | of time that <F|
00043ca0  6f 6e 74 5f 4c 6f 73 65  46 6f 6e 74 3e 20 68 61  |ont_LoseFont> ha|
00043cb0  73 20 62 65 65 6e 20 75  73 65 64 20 6f 6e 20 69  |s been used on i|
00043cc0  74 2e 20 7b 2f 7d 64 65  66 6e 2d 3e 61 67 65 7b  |t. {/}defn->age{|
00043cd0  2f 7d 20 69 73 20 74 68  65 20 6e 75 6d 62 65 72  |/} is the number|
00043ce0  20 6f 66 20 66 6f 6e 74  20 61 63 63 65 73 73 65  | of font accesse|
00043cf0  73 20 6d 61 64 65 20 73  69 6e 63 65 20 74 68 69  |s made since thi|
00043d00  73 20 6f 6e 65 20 77 61  73 20 61 63 63 65 73 73  |s one was access|
00043d10  65 64 2e 0a 0a 4e 6f 74  65 20 74 68 61 74 20 74  |ed...Note that t|
00043d20  68 65 20 66 6f 6e 74 20  6e 61 6d 65 20 72 65 74  |he font name ret|
00043d30  75 72 6e 65 64 20 62 79  20 74 68 69 73 20 66 75  |urned by this fu|
00043d40  6e 63 74 69 6f 6e 20 69  73 20 43 52 2d 74 65 72  |nction is CR-ter|
00043d50  6d 69 6e 61 74 65 64 2c  20 73 6f 20 75 73 65 20  |minated, so use |
00043d60  74 68 65 20 3c 44 65 73  6b 4c 69 62 3a 53 74 72  |the <DeskLib:Str|
00043d70  3d 3e 53 74 72 5f 44 4c  3e 20 66 75 6e 63 74 69  |=>Str_DL> functi|
00043d80  6f 6e 73 20 74 6f 20 72  65 61 64 20 69 74 2e 00  |ons to read it..|
00043d90  44 41 54 41 1a 02 00 00  46 6f 6e 74 5f 52 65 61  |DATA....Font_Rea|
00043da0  64 49 6e 66 6f 2f 66 6f  6e 74 5f 72 65 61 64 69  |dInfo/font_readi|
00043db0  6e 66 6f 0a 53 79 6e 74  61 78 3a 09 28 44 65 73  |nfo.Syntax:.(Des|
00043dc0  6b 4c 69 62 29 09 3c 6f  73 5f 65 72 72 6f 72 3e  |kLib).<os_error>|
00043dd0  20 2a 46 6f 6e 74 5f 52  65 61 64 49 6e 66 6f 20  | *Font_ReadInfo |
00043de0  28 3c 66 6f 6e 74 5f 68  61 6e 64 6c 65 3e 20 66  |(<font_handle> f|
00043df0  6f 6e 74 2c 20 3c 66 6f  6e 74 5f 69 6e 66 6f 3e  |ont, <font_info>|
00043e00  20 2a 69 6e 66 6f 29 3b  0a 09 28 44 65 73 6b 74  | *info);..(Deskt|
00043e10  6f 70 20 43 29 09 3c 6f  73 5f 65 72 72 6f 72 3e  |op C).<os_error>|
00043e20  20 2a 66 6f 6e 74 5f 72  65 61 64 69 6e 66 6f 20  | *font_readinfo |
00043e30  28 3c 66 6f 6e 74 3d 3e  66 6f 6e 74 5f 3e 20 66  |(<font=>font_> f|
00043e40  2c 20 3c 66 6f 6e 74 5f  69 6e 66 6f 3e 20 2a 69  |, <font_info> *i|
00043e50  6e 66 6f 29 3b 0a 0a 48  65 61 64 65 72 3a 09 3c  |nfo);..Header:.<|
00043e60  44 65 73 6b 4c 69 62 3a  46 6f 6e 74 2e 68 3d 3e  |DeskLib:Font.h=>|
00043e70  46 6f 6e 74 3e 0a 09 3c  66 6f 6e 74 2e 68 3d 3e  |Font>..<font.h=>|
00043e80  66 6f 6e 74 5f 68 3e 20  28 44 65 73 6b 74 6f 70  |font_h> (Desktop|
00043e90  20 43 29 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  | C)..Returns:.Po|
00043ea0  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
00043eb0  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
00043ec0  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
00043ed0  6e 20 72 65 74 75 72 6e  73 20 74 68 65 20 62 6f  |n returns the bo|
00043ee0  75 6e 64 69 6e 67 20 62  6f 78 20 69 6e 20 4f 53  |unding box in OS|
00043ef0  20 75 6e 69 74 73 20 6f  66 20 74 68 65 20 66 6f  | units of the fo|
00043f00  6e 74 20 77 68 6f 73 65  20 68 61 6e 64 6c 65 20  |nt whose handle |
00043f10  69 73 20 67 69 76 65 6e  20 69 6e 20 2f 66 6f 6e  |is given in /fon|
00043f20  74 2f 2e 20 54 68 65 20  62 6f 75 6e 64 69 6e 67  |t/. The bounding|
00043f30  20 62 6f 78 20 69 73 20  74 68 65 20 6d 69 6e 69  | box is the mini|
00043f40  6d 61 6c 20 61 72 65 61  20 63 6f 76 65 72 69 6e  |mal area coverin|
00043f50  67 20 65 76 65 72 79 20  63 68 61 72 61 63 74 65  |g every characte|
00043f60  72 20 69 6e 20 74 68 65  20 66 6f 6e 74 2e 20 59  |r in the font. Y|
00043f70  6f 75 20 73 68 6f 75 6c  64 20 75 73 65 20 3c 46  |ou should use <F|
00043f80  6f 6e 74 5f 43 68 61 72  42 42 6f 78 3e 20 69 6e  |ont_CharBBox> in|
00043f90  20 70 72 65 66 65 72 65  6e 63 65 2c 20 73 6f 20  | preference, so |
00043fa0  41 63 6f 72 6e 20 73 61  79 2e 00 00 44 41 54 41  |Acorn say...DATA|
00043fb0  5e 01 00 00 46 6f 6e 74  5f 52 65 61 64 53 63 61  |^...Font_ReadSca|
00043fc0  6c 65 46 61 63 74 6f 72  0a 53 79 6e 74 61 78 3a  |leFactor.Syntax:|
00043fd0  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 46 6f 6e  |.<os_error> *Fon|
00043fe0  74 5f 52 65 61 64 53 63  61 6c 65 46 61 63 74 6f  |t_ReadScaleFacto|
00043ff0  72 20 28 69 6e 74 20 2a  78 73 63 61 6c 65 2c 20  |r (int *xscale, |
00044000  69 6e 74 20 2a 79 73 63  61 6c 65 29 3b 0a 48 65  |int *yscale);.He|
00044010  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 46  |ader:.<DeskLib:F|
00044020  6f 6e 74 2e 68 3d 3e 46  6f 6e 74 3e 20 3c 66 6f  |ont.h=>Font> <fo|
00044030  6e 74 2e 68 3d 3e 66 6f  6e 74 5f 68 3e 20 28 44  |nt.h=>font_h> (D|
00044040  65 73 6b 74 6f 70 20 43  29 0a 0a 52 65 74 75 72  |esktop C)..Retur|
00044050  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
00044060  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
00044070  69 66 20 6e 6f 6e 65 2e  0a 0a 43 61 6c 6c 65 64  |if none...Called|
00044080  20 7b 2a 7d 66 6f 6e 74  5f 72 65 61 64 73 63 61  | {*}font_readsca|
00044090  6c 65 66 61 63 74 6f 72  7b 2a 7d 20 69 6e 20 44  |lefactor{*} in D|
000440a0  65 73 6b 74 6f 70 20 43  2e 0a 0a 54 68 69 73 20  |esktop C...This |
000440b0  66 75 6e 63 74 69 6f 6e  20 72 65 61 64 73 20 74  |function reads t|
000440c0  68 65 20 63 75 72 72 65  6e 74 20 73 63 61 6c 65  |he current scale|
000440d0  20 66 61 63 74 6f 72 73  20 69 6e 20 6d 69 6c 6c  | factors in mill|
000440e0  69 70 6f 69 6e 74 73 2f  4f 53 20 75 6e 69 74 2e  |ipoints/OS unit.|
000440f0  20 54 68 65 20 64 65 66  61 75 6c 74 20 76 61 6c  | The default val|
00044100  75 65 20 69 73 20 34 30  30 2e 00 00 44 41 54 41  |ue is 400...DATA|
00044110  6c 01 00 00 46 6f 6e 74  5f 52 65 61 64 54 68 72  |l...Font_ReadThr|
00044120  65 73 68 6f 6c 64 73 0a  53 79 6e 74 61 78 3a 09  |esholds.Syntax:.|
00044130  28 44 65 73 6b 4c 69 62  29 09 3c 6f 73 5f 65 72  |(DeskLib).<os_er|
00044140  72 6f 72 3e 20 2a 46 6f  6e 74 5f 52 65 61 64 54  |ror> *Font_ReadT|
00044150  68 72 65 73 68 6f 6c 64  73 20 28 3c 66 6f 6e 74  |hresholds (<font|
00044160  5f 74 68 72 65 73 68 6f  6c 64 73 3e 20 2a 74 29  |_thresholds> *t)|
00044170  3b 0a 09 28 44 65 73 6b  74 6f 70 20 43 29 09 3c  |;..(Desktop C).<|
00044180  6f 73 5f 65 72 72 6f 72  3e 20 2a 66 6f 6e 74 5f  |os_error> *font_|
00044190  72 65 61 64 74 68 72 65  73 68 6f 6c 64 73 20 28  |readthresholds (|
000441a0  3c 66 6f 6e 74 5f 74 68  72 65 73 68 6f 6c 64 3e  |<font_threshold>|
000441b0  20 2a 74 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  | *t);.Header:.<D|
000441c0  65 73 6b 4c 69 62 3a 46  6f 6e 74 2e 68 3d 3e 46  |eskLib:Font.h=>F|
000441d0  6f 6e 74 3e 0a 09 3c 66  6f 6e 74 2e 68 3d 3e 66  |ont>..<font.h=>f|
000441e0  6f 6e 74 5f 68 3e 20 28  44 65 73 6b 74 6f 70 20  |ont_h> (Desktop |
000441f0  43 29 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |C)..Returns:.Poi|
00044200  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
00044210  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
00044220  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00044230  20 72 65 61 64 73 20 74  68 65 20 6c 69 73 74 20  | reads the list |
00044240  6f 66 20 74 68 72 65 73  68 6f 6c 64 20 76 61 6c  |of threshold val|
00044250  75 65 73 20 66 6f 72 20  70 61 69 6e 74 69 6e 67  |ues for painting|
00044260  20 61 6e 64 20 73 74 6f  72 65 73 20 74 68 65 6d  | and stores them|
00044270  20 69 6e 20 2f 74 2f 2e  44 41 54 41 5d 00 00 00  | in /t/.DATA]...|
00044280  66 6f 6e 74 5f 52 65 64  47 75 6e 0a 54 68 65 20  |font_RedGun.The |
00044290  6d 61 63 72 6f 20 7b 2a  7d 66 6f 6e 74 5f 52 65  |macro {*}font_Re|
000442a0  64 47 75 6e 7b 2a 7d 20  69 73 20 64 65 66 69 6e  |dGun{*} is defin|
000442b0  65 64 20 69 6e 20 3c 66  6f 6e 74 2e 68 3d 3e 66  |ed in <font.h=>f|
000442c0  6f 6e 74 5f 68 3e 20 61  73 20 30 78 30 30 30 30  |ont_h> as 0x0000|
000442d0  30 31 30 30 2e 00 00 00  44 41 54 41 b4 00 00 00  |0100....DATA....|
000442e0  66 6f 6e 74 5f 52 55 42  4f 55 54 0a 54 68 69 73  |font_RUBOUT.This|
000442f0  20 6d 61 63 72 6f 20 69  73 20 64 65 66 69 6e 65  | macro is define|
00044300  64 20 69 6e 20 3c 66 6f  6e 74 2e 68 3d 3e 66 6f  |d in <font.h=>fo|
00044310  6e 74 5f 68 3e 2e 20 49  74 20 69 73 20 74 68 65  |nt_h>. It is the|
00044320  20 76 61 6c 75 65 20 6f  66 20 74 68 65 20 62 69  | value of the bi|
00044330  74 20 75 73 65 64 20 74  6f 20 69 6e 64 69 63 61  |t used to indica|
00044340  74 65 20 69 6e 20 74 68  65 20 70 61 69 6e 74 20  |te in the paint |
00044350  6f 70 74 69 6f 6e 73 20  74 68 61 74 20 61 20 72  |options that a r|
00044360  75 62 2d 6f 75 74 20 62  6f 78 20 69 73 20 6e 65  |ub-out box is ne|
00044370  65 64 65 64 2e 20 49 74  20 69 73 20 64 65 66 69  |eded. It is defi|
00044380  6e 65 64 20 61 73 20 30  78 30 32 2e 44 41 54 41  |ned as 0x02.DATA|
00044390  31 02 00 00 66 6f 6e 74  5f 73 65 74 63 6f 6c 6f  |1...font_setcolo|
000443a0  75 72 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |ur.Syntax:.<os_e|
000443b0  72 72 6f 72 3e 20 2a 66  6f 6e 74 5f 73 65 74 63  |rror> *font_setc|
000443c0  6f 6c 6f 75 72 20 28 3c  66 6f 6e 74 3d 3e 66 6f  |olour (<font=>fo|
000443d0  6e 74 5f 3e 20 66 2c 20  69 6e 74 20 62 61 63 6b  |nt_> f, int back|
000443e0  2c 20 69 6e 74 20 66 6f  72 65 2c 20 69 6e 74 20  |, int fore, int |
000443f0  6f 66 66 73 65 74 29 3b  0a 48 65 61 64 65 72 3a  |offset);.Header:|
00044400  09 3c 66 6f 6e 74 2e 68  3d 3e 66 6f 6e 74 5f 68  |.<font.h=>font_h|
00044410  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
00044420  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
00044430  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
00044440  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00044450  73 65 74 73 20 74 68 65  20 63 75 72 72 65 6e 74  |sets the current|
00044460  20 66 6f 6e 74 20 63 6f  6c 6f 75 72 73 20 28 61  | font colours (a|
00044470  6e 64 20 66 6f 6e 74 20  69 66 20 7b 2f 7d 66 21  |nd font if {/}f!|
00044480  3d 30 7b 2f 7d 29 2e 20  54 68 65 20 63 6f 6c 6f  |=0{/}). The colo|
00044490  75 72 73 20 66 6f 72 20  2f 62 61 63 6b 2f 20 61  |urs for /back/ a|
000444a0  6e 64 20 2f 66 6f 72 65  2f 20 61 72 65 20 6c 6f  |nd /fore/ are lo|
000444b0  67 69 63 61 6c 20 63 6f  6c 6f 75 72 73 2e 20 2f  |gical colours. /|
000444c0  6f 66 66 73 65 74 2f 20  73 65 74 73 20 74 68 65  |offset/ sets the|
000444d0  20 6f 66 66 73 65 74 20  66 72 6f 6d 20 2f 66 6f  | offset from /fo|
000444e0  72 65 2f 20 74 6f 20 74  68 65 20 5f 72 65 61 6c  |re/ to the _real|
000444f0  5f 20 66 6f 72 65 67 72  6f 75 6e 64 20 63 6f 6c  |_ foreground col|
00044500  6f 75 72 2e 20 56 61 6c  75 65 73 20 62 65 74 77  |our. Values betw|
00044510  65 65 6e 20 2f 66 6f 72  65 2f 20 61 6e 64 20 7b  |een /fore/ and {|
00044520  2f 7d 66 6f 72 65 2b 6f  66 66 73 65 74 7b 2f 7d  |/}fore+offset{/}|
00044530  20 61 72 65 20 75 73 65  64 20 66 6f 72 20 61 6e  | are used for an|
00044540  74 69 2d 61 6c 69 61 73  69 6e 67 2e 0a 0a 65 67  |ti-aliasing...eg|
00044550  20 54 6f 20 68 61 76 65  20 63 6f 6c 6f 75 72 20  | To have colour |
00044560  30 20 61 73 20 62 61 63  6b 67 72 6f 75 6e 64 2c  |0 as background,|
00044570  20 61 6e 64 20 75 73 65  20 31 2d 37 20 66 6f 72  | and use 1-7 for|
00044580  20 61 6e 74 69 2d 61 6c  69 61 73 69 6e 67 3a 0a  | anti-aliasing:.|
00044590  0a 7b 66 43 6f 64 65 3b  61 6c 69 67 6e 20 63 65  |.{fCode;align ce|
000445a0  6e 74 72 65 7d 66 6f 6e  74 5f 73 65 74 63 6f 6c  |ntre}font_setcol|
000445b0  6f 75 72 28 30 2c 30 2c  31 2c 36 29 3b 00 00 00  |our(0,0,1,6);...|
000445c0  44 41 54 41 57 01 00 00  46 6f 6e 74 5f 53 65 74  |DATAW...Font_Set|
000445d0  46 6f 6e 74 2f 66 6f 6e  74 5f 73 65 74 66 6f 6e  |Font/font_setfon|
000445e0  74 0a 53 79 6e 74 61 78  3a 09 28 44 65 73 6b 4c  |t.Syntax:.(DeskL|
000445f0  69 62 29 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ib).<os_error> *|
00044600  46 6f 6e 74 5f 53 65 74  46 6f 6e 74 20 28 3c 66  |Font_SetFont (<f|
00044610  6f 6e 74 5f 68 61 6e 64  6c 65 3e 20 66 6f 6e 74  |ont_handle> font|
00044620  29 3b 0a 09 28 44 65 73  6b 74 6f 70 20 43 29 09  |);..(Desktop C).|
00044630  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 66 6f 6e 74  |<os_error> *font|
00044640  5f 73 65 74 66 6f 6e 74  20 28 3c 66 6f 6e 74 3d  |_setfont (<font=|
00044650  3e 66 6f 6e 74 5f 3e 20  66 29 3b 0a 48 65 61 64  |>font_> f);.Head|
00044660  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 46 6f 6e  |er:.<DeskLib:Fon|
00044670  74 2e 68 3d 3e 46 6f 6e  74 3e 0a 09 3c 66 6f 6e  |t.h=>Font>..<fon|
00044680  74 2e 68 3d 3e 66 6f 6e  74 5f 68 3e 20 28 44 65  |t.h=>font_h> (De|
00044690  73 6b 74 6f 70 20 43 29  0a 0a 52 65 74 75 72 6e  |sktop C)..Return|
000446a0  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000446b0  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000446c0  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000446d0  6e 63 74 69 6f 6e 20 73  65 74 73 20 75 70 20 74  |nction sets up t|
000446e0  68 65 20 66 6f 6e 74 20  74 6f 20 62 65 20 75 73  |he font to be us|
000446f0  65 64 20 62 79 20 66 75  74 75 72 65 20 63 61 6c  |ed by future cal|
00044700  6c 73 20 74 6f 20 74 68  65 20 46 6f 6e 74 20 4d  |ls to the Font M|
00044710  61 6e 61 67 65 72 2e 00  44 41 54 41 4c 02 00 00  |anager..DATAL...|
00044720  46 6f 6e 74 5f 53 65 74  46 6f 6e 74 43 6f 6c 6f  |Font_SetFontColo|
00044730  75 72 73 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |urs.Syntax:.<os_|
00044740  65 72 72 6f 72 3e 20 2a  46 6f 6e 74 5f 53 65 74  |error> *Font_Set|
00044750  46 6f 6e 74 43 6f 6c 6f  75 72 73 20 28 3c 66 6f  |FontColours (<fo|
00044760  6e 74 5f 68 61 6e 64 6c  65 3e 20 66 6f 6e 74 2c  |nt_handle> font,|
00044770  20 69 6e 74 20 62 61 63  6b 2c 20 69 6e 74 20 66  | int back, int f|
00044780  6f 72 65 2c 20 69 6e 74  20 6f 66 66 73 65 74 29  |ore, int offset)|
00044790  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000447a0  69 62 3a 46 6f 6e 74 2e  68 3d 3e 46 6f 6e 74 3e  |ib:Font.h=>Font>|
000447b0  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
000447c0  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
000447d0  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
000447e0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 73  |.This function s|
000447f0  65 74 73 20 74 68 65 20  63 75 72 72 65 6e 74 20  |ets the current |
00044800  66 6f 6e 74 20 63 6f 6c  6f 75 72 73 20 28 61 6e  |font colours (an|
00044810  64 20 66 6f 6e 74 20 69  66 20 7b 2f 7d 66 6f 6e  |d font if {/}fon|
00044820  74 7b 2f 7d 21 3d 30 29  2e 20 54 68 65 20 63 6f  |t{/}!=0). The co|
00044830  6c 6f 75 72 73 20 66 6f  72 20 2f 62 61 63 6b 2f  |lours for /back/|
00044840  20 61 6e 64 20 2f 66 6f  72 65 2f 20 61 72 65 20  | and /fore/ are |
00044850  6c 6f 67 69 63 61 6c 20  63 6f 6c 6f 75 72 73 2e  |logical colours.|
00044860  20 2f 6f 66 66 73 65 74  2f 20 73 65 74 73 20 74  | /offset/ sets t|
00044870  68 65 20 6f 66 66 73 65  74 20 66 72 6f 6d 20 2f  |he offset from /|
00044880  66 6f 72 65 2f 20 74 6f  20 74 68 65 20 5f 72 65  |fore/ to the _re|
00044890  61 6c 5f 20 66 6f 72 65  67 72 6f 75 6e 64 20 63  |al_ foreground c|
000448a0  6f 6c 6f 75 72 2e 20 56  61 6c 75 65 73 20 62 65  |olour. Values be|
000448b0  74 77 65 65 6e 20 2f 66  6f 72 65 2f 20 61 6e 64  |tween /fore/ and|
000448c0  20 7b 2f 7d 66 6f 72 65  2b 6f 66 66 73 65 74 7b  | {/}fore+offset{|
000448d0  2f 7d 20 61 72 65 20 75  73 65 64 20 66 6f 72 20  |/} are used for |
000448e0  61 6e 74 69 2d 61 6c 69  61 73 69 6e 67 2e 0a 0a  |anti-aliasing...|
000448f0  65 67 20 54 6f 20 68 61  76 65 20 63 6f 6c 6f 75  |eg To have colou|
00044900  72 20 30 20 61 73 20 62  61 63 6b 67 72 6f 75 6e  |r 0 as backgroun|
00044910  64 2c 20 61 6e 64 20 75  73 65 20 31 2d 37 20 66  |d, and use 1-7 f|
00044920  6f 72 20 61 6e 74 69 2d  61 6c 69 61 73 69 6e 67  |or anti-aliasing|
00044930  3a 0a 0a 7b 66 43 6f 64  65 3b 61 6c 69 67 6e 20  |:..{fCode;align |
00044940  63 65 6e 74 72 65 7d 46  6f 6e 74 5f 53 65 74 46  |centre}Font_SetF|
00044950  6f 6e 74 43 6f 6c 6f 75  72 73 28 30 2c 30 2c 31  |ontColours(0,0,1|
00044960  2c 36 29 3b 44 41 54 41  98 02 00 00 46 6f 6e 74  |,6);DATA....Font|
00044970  5f 53 65 74 50 61 6c 65  74 74 65 2f 66 6f 6e 74  |_SetPalette/font|
00044980  5f 73 65 74 70 61 6c 65  74 74 65 0a 53 79 6e 74  |_setpalette.Synt|
00044990  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
000449a0  46 6f 6e 74 5f 53 65 74  50 61 6c 65 74 74 65 20  |Font_SetPalette |
000449b0  28 69 6e 74 20 6c 62 61  63 6b 2c 20 69 6e 74 20  |(int lback, int |
000449c0  6c 66 6f 72 65 2c 20 69  6e 74 20 6f 66 66 73 65  |lfore, int offse|
000449d0  74 2c 20 69 6e 74 20 70  62 61 63 6b 2c 20 69 6e  |t, int pback, in|
000449e0  74 20 70 66 6f 72 65 29  3b 0a 48 65 61 64 65 72  |t pfore);.Header|
000449f0  3a 09 3c 44 65 73 6b 4c  69 62 3a 46 6f 6e 74 2e  |:.<DeskLib:Font.|
00044a00  68 3d 3e 46 6f 6e 74 3e  0a 09 3c 66 6f 6e 74 2e  |h=>Font>..<font.|
00044a10  68 3d 3e 66 6f 6e 74 5f  68 3e 20 28 44 65 73 6b  |h=>font_h> (Desk|
00044a20  74 6f 70 20 43 29 0a 0a  52 65 74 75 72 6e 73 3a  |top C)..Returns:|
00044a30  20 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  | Pointer to erro|
00044a40  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
00044a50  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 69 73 20 63  |none...This is c|
00044a60  61 6c 6c 65 64 20 7b 2a  7d 66 6f 6e 74 5f 73 65  |alled {*}font_se|
00044a70  74 70 61 6c 65 74 74 65  7b 2a 7d 20 69 6e 20 44  |tpalette{*} in D|
00044a80  65 73 6b 74 6f 70 20 43  2e 0a 0a 54 68 69 73 20  |esktop C...This |
00044a90  66 75 6e 63 74 69 6f 6e  20 73 65 74 73 20 74 68  |function sets th|
00044aa0  65 20 61 6e 74 69 2d 61  6c 69 61 73 20 70 61 6c  |e anti-alias pal|
00044ab0  65 74 74 65 2e 20 49 74  20 73 68 6f 75 6c 64 20  |ette. It should |
00044ac0  6e 6f 74 20 62 65 20 75  73 65 64 20 77 69 74 68  |not be used with|
00044ad0  69 6e 20 74 68 65 20 44  65 73 6b 74 6f 70 2e 20  |in the Desktop. |
00044ae0  54 68 65 20 66 69 72 73  74 20 74 68 72 65 65 20  |The first three |
00044af0  70 61 72 61 6d 65 74 65  72 73 20 61 72 65 20 74  |parameters are t|
00044b00  68 6f 73 65 20 75 73 65  64 20 69 6e 20 3c 46 6f  |hose used in <Fo|
00044b10  6e 74 5f 53 65 74 46 6f  6e 74 43 6f 6c 6f 75 72  |nt_SetFontColour|
00044b20  73 3e 2f 3c 66 6f 6e 74  5f 73 65 74 63 6f 6c 6f  |s>/<font_setcolo|
00044b30  75 72 3e 2e 20 2f 70 62  61 63 6b 2f 20 61 6e 64  |ur>. /pback/ and|
00044b40  20 2f 70 66 6f 72 65 2f  20 61 72 65 20 77 6f 72  | /pfore/ are wor|
00044b50  64 73 20 69 6e 20 74 68  65 20 66 6f 72 6d 20 30  |ds in the form 0|
00044b60  78 42 42 47 47 52 52 30  30 20 73 65 74 74 69 6e  |xBBGGRR00 settin|
00044b70  67 20 74 68 65 20 70 68  79 73 69 63 61 6c 20 62  |g the physical b|
00044b80  61 63 6b 67 72 6f 75 6e  64 20 61 6e 64 20 66 6f  |ackground and fo|
00044b90  72 65 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 73  |reground colours|
00044ba0  2e 20 54 68 65 20 70 61  6c 65 74 74 65 20 65 6e  |. The palette en|
00044bb0  74 72 69 65 73 20 73 70  65 63 69 66 69 65 64 20  |tries specified |
00044bc0  61 72 65 20 61 6c 74 65  72 65 64 20 74 6f 20 63  |are altered to c|
00044bd0  6f 6e 74 61 69 6e 20 61  20 73 75 69 74 61 62 6c  |ontain a suitabl|
00044be0  65 20 70 61 6c 65 74 74  65 20 66 6f 72 20 61 6e  |e palette for an|
00044bf0  74 69 2d 61 6c 69 61 73  69 6e 67 2e 44 41 54 41  |ti-aliasing.DATA|
00044c00  db 00 00 00 66 6f 6e 74  5f 73 65 74 73 63 61 6c  |....font_setscal|
00044c10  65 66 61 63 74 6f 72 0a  53 79 6e 74 61 78 3a 09  |efactor.Syntax:.|
00044c20  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 66 6f 6e 74  |<os_error> *font|
00044c30  5f 73 65 74 73 63 61 6c  65 66 61 63 74 6f 72 20  |_setscalefactor |
00044c40  28 69 6e 74 20 78 2c 20  69 6e 74 20 79 29 3b 0a  |(int x, int y);.|
00044c50  48 65 61 64 65 72 3a 09  3c 66 6f 6e 74 2e 68 3d  |Header:.<font.h=|
00044c60  3e 66 6f 6e 74 5f 68 3e  0a 0a 52 65 74 75 72 6e  |>font_h>..Return|
00044c70  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
00044c80  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
00044c90  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
00044ca0  6e 63 74 69 6f 6e 20 73  65 74 73 20 74 68 65 20  |nction sets the |
00044cb0  73 63 61 6c 65 20 66 61  63 74 6f 72 73 20 75 73  |scale factors us|
00044cc0  65 64 20 62 79 20 74 68  65 20 66 6f 6e 74 20 6d  |ed by the font m|
00044cd0  61 6e 61 67 65 72 2e 00  44 41 54 41 59 01 00 00  |anager..DATAY...|
00044ce0  46 6f 6e 74 5f 53 65 74  54 68 72 65 73 68 6f 6c  |Font_SetThreshol|
00044cf0  64 73 0a 53 79 6e 74 61  78 3a 09 28 44 65 73 6b  |ds.Syntax:.(Desk|
00044d00  4c 69 62 29 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |Lib).<os_error> |
00044d10  2a 46 6f 6e 74 5f 53 65  74 54 68 72 65 73 68 6f  |*Font_SetThresho|
00044d20  6c 64 73 20 28 3c 66 6f  6e 74 5f 74 68 72 65 73  |lds (<font_thres|
00044d30  68 6f 6c 64 73 3e 20 2a  74 29 3b 0a 09 28 44 65  |holds> *t);..(De|
00044d40  73 6b 74 6f 70 20 43 09  3c 6f 73 5f 65 72 72 6f  |sktop C.<os_erro|
00044d50  72 3e 20 2a 66 6f 6e 74  5f 73 65 74 74 68 72 65  |r> *font_setthre|
00044d60  73 68 6f 6c 64 73 20 28  3c 66 6f 6e 74 5f 74 68  |sholds (<font_th|
00044d70  72 65 73 68 6f 6c 64 3e  20 2a 74 29 3b 0a 48 65  |reshold> *t);.He|
00044d80  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 46  |ader:.<DeskLib:F|
00044d90  6f 6e 74 2e 68 3d 3e 46  6f 6e 74 3e 0a 09 3c 66  |ont.h=>Font>..<f|
00044da0  6f 6e 74 2e 68 3d 3e 66  6f 6e 74 5f 68 3e 20 28  |ont.h=>font_h> (|
00044db0  44 65 73 6b 74 6f 70 20  43 29 0a 0a 52 65 74 75  |Desktop C)..Retu|
00044dc0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00044dd0  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00044de0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00044df0  66 75 6e 63 74 69 6f 6e  20 73 65 74 73 20 74 68  |function sets th|
00044e00  65 20 6c 69 73 74 20 6f  66 20 74 68 72 65 73 68  |e list of thresh|
00044e10  6f 6c 64 20 76 61 6c 75  65 73 20 66 6f 72 20 70  |old values for p|
00044e20  61 69 6e 74 69 6e 67 20  66 72 6f 6d 20 2f 74 2f  |ainting from /t/|
00044e30  2e 00 00 00 44 41 54 41  c3 01 00 00 66 6f 6e 74  |....DATA....font|
00044e40  5f 73 74 61 74 65 0a 54  68 69 73 20 74 79 70 65  |_state.This type|
00044e50  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
00044e60  44 65 73 6b 4c 69 62 3a  46 6f 6e 74 2e 68 3d 3e  |DeskLib:Font.h=>|
00044e70  46 6f 6e 74 3e 20 61 6e  64 20 3c 66 6f 6e 74 2e  |Font> and <font.|
00044e80  68 3d 3e 66 6f 6e 74 5f  68 3e 20 28 44 65 73 6b  |h=>font_h> (Desk|
00044e90  74 6f 70 20 43 29 2e 20  49 74 20 69 73 20 61 20  |top C). It is a |
00044ea0  73 74 72 75 63 74 75 72  65 20 75 73 65 64 20 66  |structure used f|
00044eb0  6f 72 20 68 6f 6c 64 69  6e 67 20 66 6f 6e 74 20  |or holding font |
00044ec0  69 6e 66 6f 72 6d 61 74  69 6f 6e 2e 20 49 74 20  |information. It |
00044ed0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 44 65  |is defined in De|
00044ee0  73 6b 4c 69 62 20 61 73  3a 0a 0a 20 20 5c 7b 0a  |skLib as:..  \{.|
00044ef0  20 20 20 20 3c 66 6f 6e  74 5f 68 61 6e 64 6c 65  |    <font_handle|
00044f00  3e 09 66 6f 6e 74 3b 09  0a 20 20 20 20 3c 66 6f  |>.font;..    <fo|
00044f10  6e 74 5f 63 6f 6c 6f 75  72 73 3e 09 63 6f 6c 6f  |nt_colours>.colo|
00044f20  75 72 3b 09 0a 20 20 20  20 69 6e 74 09 6f 66 66  |ur;..    int.off|
00044f30  73 65 74 3b 09 2f 2a 20  61 6e 74 69 2d 61 6c 69  |set;./* anti-ali|
00044f40  61 73 20 2a 2f 0a 20 20  7d 0a 0a 61 6e 64 20 69  |as */.  }..and i|
00044f50  6e 20 44 65 73 6b 74 6f  70 20 43 20 61 73 3a 0a  |n Desktop C as:.|
00044f60  7b 74 61 62 7d 0a 20 20  5c 7b 0a 20 20 20 20 3c  |{tab}.  \{.    <|
00044f70  66 6f 6e 74 3d 3e 66 6f  6e 74 5f 3e 09 66 3b 0a  |font=>font_>.f;.|
00044f80  20 20 20 20 69 6e 74 09  62 61 63 6b 5f 63 6f 6c  |    int.back_col|
00044f90  6f 75 72 3b 0a 20 20 20  20 69 6e 74 09 66 6f 72  |our;.    int.for|
00044fa0  65 5f 63 6f 6c 6f 75 72  3b 0a 20 20 20 20 69 6e  |e_colour;.    in|
00044fb0  74 09 6f 66 66 73 65 74  3b 0a 20 20 7d 0a 0a 53  |t.offset;.  }..S|
00044fc0  65 65 20 3c 46 6f 6e 74  5f 53 65 74 46 6f 6e 74  |ee <Font_SetFont|
00044fd0  43 6f 6c 6f 75 72 73 3e  20 66 6f 72 20 61 20 64  |Colours> for a d|
00044fe0  65 73 63 72 69 70 74 69  6f 6e 20 6f 66 20 2f 6f  |escription of /o|
00044ff0  66 66 73 65 74 2f 2e 00  44 41 54 41 2d 01 00 00  |ffset/..DATA-...|
00045000  66 6f 6e 74 5f 73 74 72  69 6e 67 0a 54 68 69 73  |font_string.This|
00045010  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
00045020  20 69 6e 20 3c 44 65 73  6b 4c 69 62 3a 46 6f 6e  | in <DeskLib:Fon|
00045030  74 2e 68 3d 3e 46 6f 6e  74 3e 20 61 6e 64 20 3c  |t.h=>Font> and <|
00045040  66 6f 6e 74 2e 68 3d 3e  66 6f 6e 74 5f 68 3e 20  |font.h=>font_h> |
00045050  28 44 65 73 6b 74 6f 70  20 43 29 2e 20 49 74 20  |(Desktop C). It |
00045060  69 73 20 61 20 73 74 72  75 63 74 75 72 65 20 75  |is a structure u|
00045070  73 65 64 20 66 6f 72 20  68 6f 6c 64 69 6e 67 20  |sed for holding |
00045080  61 20 66 6f 6e 74 20 73  74 72 69 6e 67 20 61 6e  |a font string an|
00045090  64 20 63 61 72 65 74 20  69 6e 66 6f 72 6d 61 74  |d caret informat|
000450a0  69 6f 6e 3a 0a 0a 20 20  5c 7b 0a 20 20 20 20 63  |ion:..  \{.    c|
000450b0  68 61 72 20 2a 73 3b 09  2f 2a 20 73 74 72 69 6e  |har *s;./* strin|
000450c0  67 20 2a 2f 0a 20 20 20  20 69 6e 74 20 78 3b 09  |g */.    int x;.|
000450d0  2f 2a 20 69 6e 20 6d 69  6c 6c 69 70 6f 69 6e 74  |/* in millipoint|
000450e0  73 20 2a 2f 0a 20 20 20  20 69 6e 74 20 79 3b 09  |s */.    int y;.|
000450f0  0a 20 20 20 20 69 6e 74  20 73 70 6c 69 74 3b 09  |.    int split;.|
00045100  0a 20 20 20 20 69 6e 74  20 74 65 72 6d 3b 09 2f  |.    int term;./|
00045110  2a 20 69 6e 64 65 78 20  69 6e 74 6f 20 73 20 2a  |* index into s *|
00045120  2f 0a 20 20 7d 00 00 00  44 41 54 41 7c 01 00 00  |/.  }...DATA|...|
00045130  46 6f 6e 74 5f 53 74 72  69 6e 67 42 42 6f 78 2f  |Font_StringBBox/|
00045140  66 6f 6e 74 5f 73 74 72  69 6e 67 62 62 6f 78 0a  |font_stringbbox.|
00045150  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
00045160  72 3e 20 2a 46 6f 6e 74  5f 53 74 72 69 6e 67 42  |r> *Font_StringB|
00045170  42 6f 78 20 28 63 68 61  72 20 2a 73 74 72 2c 20  |Box (char *str, |
00045180  3c 66 6f 6e 74 5f 69 6e  66 6f 3e 20 2a 69 6e 66  |<font_info> *inf|
00045190  6f 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |o);.Header:.<Des|
000451a0  6b 4c 69 62 3a 46 6f 6e  74 2e 68 3d 3e 46 6f 6e  |kLib:Font.h=>Fon|
000451b0  74 3e 0a 09 3c 66 6f 6e  74 2e 68 3d 3e 66 6f 6e  |t>..<font.h=>fon|
000451c0  74 5f 68 3e 20 28 44 65  73 6b 74 6f 70 20 43 29  |t_h> (Desktop C)|
000451d0  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
000451e0  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
000451f0  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
00045200  0a 43 61 6c 6c 65 64 20  7b 2a 7d 66 6f 6e 74 5f  |.Called {*}font_|
00045210  73 74 72 69 6e 67 62 62  6f 78 7b 2a 7d 20 69 6e  |stringbbox{*} in|
00045220  20 44 65 73 6b 74 6f 70  20 43 2e 0a 0a 54 68 69  | Desktop C...Thi|
00045230  73 20 66 75 6e 63 74 69  6f 6e 20 67 65 74 73 20  |s function gets |
00045240  74 68 65 20 62 6f 75 6e  64 69 6e 67 20 62 6f 78  |the bounding box|
00045250  20 6f 66 20 2f 73 74 72  2f 20 69 6e 74 6f 20 2f  | of /str/ into /|
00045260  69 6e 66 6f 2f 2e 20 54  68 65 20 73 74 72 69 6e  |info/. The strin|
00045270  67 20 63 61 6e 20 63 6f  6e 74 61 69 6e 20 3c 46  |g can contain <F|
00045280  6f 6e 74 5f 50 61 69 6e  74 3e 20 73 74 79 6c 65  |ont_Paint> style|
00045290  20 63 6f 6e 74 72 6f 6c  20 73 65 71 75 65 6e 63  | control sequenc|
000452a0  65 73 2e 2e 44 41 54 41  da 02 00 00 46 6f 6e 74  |es..DATA....Font|
000452b0  5f 53 74 72 69 6e 67 57  69 64 74 68 0a 53 79 6e  |_StringWidth.Syn|
000452c0  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
000452d0  2a 46 6f 6e 74 5f 53 74  72 69 6e 67 57 69 64 74  |*Font_StringWidt|
000452e0  68 20 28 3c 66 6f 6e 74  5f 73 74 72 69 6e 67 3e  |h (<font_string>|
000452f0  20 2a 73 74 72 69 6e 67  29 3b 0a 48 65 61 64 65  | *string);.Heade|
00045300  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 46 6f 6e 74  |r:.<DeskLib:Font|
00045310  2e 68 3d 3e 46 6f 6e 74  3e 0a 0a 52 65 74 75 72  |.h=>Font>..Retur|
00045320  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
00045330  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
00045340  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
00045350  75 6e 63 74 69 6f 6e 20  63 61 6c 63 75 6c 61 74  |unction calculat|
00045360  65 73 20 68 6f 77 20 77  69 64 65 20 61 20 73 74  |es how wide a st|
00045370  72 69 6e 67 20 77 6f 75  6c 64 20 62 65 20 75 6e  |ring would be un|
00045380  64 65 72 20 6c 69 6d 69  74 73 2e 20 7b 2f 7d 28  |der limits. {/}(|
00045390  73 74 72 69 6e 67 2d 3e  78 2c 73 74 72 69 6e 67  |string->x,string|
000453a0  2d 3e 79 29 7b 2f 7d 20  63 6f 6e 74 61 69 6e 73  |->y){/} contains|
000453b0  20 74 68 65 20 6d 61 78  69 6d 75 6d 20 77 69 64  | the maximum wid|
000453c0  74 68 20 61 6e 64 20 68  65 69 67 68 74 2e 20 7b  |th and height. {|
000453d0  2f 7d 73 74 72 69 6e 67  2d 3e 73 70 6c 69 74 7b  |/}string->split{|
000453e0  2f 7d 20 63 6f 6e 74 61  69 6e 73 20 74 68 65 20  |/} contains the |
000453f0  63 68 61 72 61 63 74 65  72 20 61 74 20 77 68 69  |character at whi|
00045400  63 68 20 74 6f 20 73 70  6c 69 74 20 74 68 65 20  |ch to split the |
00045410  73 74 72 69 6e 67 20 28  65 67 20 33 32 29 2e 20  |string (eg 32). |
00045420  7b 2f 7d 73 74 72 69 6e  67 2d 3e 74 65 72 6d 7b  |{/}string->term{|
00045430  2f 7d 20 63 6f 6e 74 61  69 6e 73 20 74 68 65 20  |/} contains the |
00045440  69 6e 64 65 78 20 6f 66  20 74 68 65 20 74 65 72  |index of the ter|
00045450  6d 69 6e 61 74 6f 72 2e  0a 0a 4f 6e 20 65 78 69  |minator...On exi|
00045460  74 2c 20 7b 2f 7d 28 73  74 72 69 6e 67 2d 3e 78  |t, {/}(string->x|
00045470  2c 20 73 74 72 69 6e 67  2d 3e 79 29 7b 2f 7d 20  |, string->y){/} |
00045480  63 6f 6e 74 61 69 6e 73  20 74 68 65 20 78 20 6f  |contains the x o|
00045490  66 66 73 65 74 20 61 66  74 65 72 20 70 72 69 6e  |ffset after prin|
000454a0  74 69 6e 67 20 74 68 65  20 73 74 72 69 6e 67 2e  |ting the string.|
000454b0  20 7b 2f 7d 73 74 72 69  6e 67 2d 3e 73 70 6c 69  | {/}string->spli|
000454c0  74 7b 2f 7d 20 63 6f 6e  74 61 69 6e 73 20 74 68  |t{/} contains th|
000454d0  65 20 6e 75 6d 62 65 72  20 6f 66 20 73 70 6c 69  |e number of spli|
000454e0  74 20 63 68 61 72 61 63  74 65 72 73 2c 20 61 6e  |t characters, an|
000454f0  64 20 7b 2f 7d 73 74 72  69 6e 67 2d 3e 73 7b 2f  |d {/}string->s{/|
00045500  7d 20 61 6e 64 20 7b 2f  7d 73 74 72 69 6e 67 2d  |} and {/}string-|
00045510  3e 69 6e 64 65 78 7b 2f  7d 20 61 72 65 20 75 70  |>index{/} are up|
00045520  64 61 74 65 64 20 74 6f  20 70 6f 69 6e 74 20 61  |dated to point a|
00045530  74 20 74 68 65 20 74 65  72 6d 69 6e 61 74 69 6e  |t the terminatin|
00045540  67 20 70 6f 73 69 74 69  6f 6e 2e 0a 0a 43 6f 6e  |g position...Con|
00045550  74 72 6f 6c 20 73 65 71  75 65 6e 63 65 73 20 61  |trol sequences a|
00045560  73 20 69 6e 20 3c 46 6f  6e 74 5f 50 61 69 6e 74  |s in <Font_Paint|
00045570  3e 20 6d 61 79 20 62 65  20 75 73 65 64 2e 00 00  |> may be used...|
00045580  44 41 54 41 c3 02 00 00  66 6f 6e 74 5f 73 74 72  |DATA....font_str|
00045590  77 69 64 74 68 0a 53 79  6e 74 61 78 3a 09 3c 6f  |width.Syntax:.<o|
000455a0  73 5f 65 72 72 6f 72 3e  20 2a 66 6f 6e 74 5f 73  |s_error> *font_s|
000455b0  74 72 77 69 64 74 68 20  28 3c 66 6f 6e 74 5f 73  |trwidth (<font_s|
000455c0  74 72 69 6e 67 3e 20 2a  73 74 72 69 6e 67 29 3b  |tring> *string);|
000455d0  0a 48 65 61 64 65 72 3a  09 3c 66 6f 6e 74 2e 68  |.Header:.<font.h|
000455e0  3d 3e 66 6f 6e 74 5f 68  3e 0a 0a 52 65 74 75 72  |=>font_h>..Retur|
000455f0  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
00045600  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
00045610  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
00045620  75 6e 63 74 69 6f 6e 20  63 61 6c 63 75 6c 61 74  |unction calculat|
00045630  65 73 20 68 6f 77 20 77  69 64 65 20 61 20 73 74  |es how wide a st|
00045640  72 69 6e 67 20 77 6f 75  6c 64 20 62 65 20 75 6e  |ring would be un|
00045650  64 65 72 20 6c 69 6d 69  74 73 2e 20 28 73 74 72  |der limits. (str|
00045660  69 6e 67 2d 3e 78 2c 73  74 72 69 6e 67 2d 3e 79  |ing->x,string->y|
00045670  29 20 63 6f 6e 74 61 69  6e 73 20 74 68 65 20 6d  |) contains the m|
00045680  61 78 69 6d 75 6d 20 77  69 64 74 68 20 61 6e 64  |aximum width and|
00045690  20 68 65 69 67 68 74 2e  20 7b 2f 7d 73 74 72 69  | height. {/}stri|
000456a0  6e 67 2d 3e 73 70 6c 69  74 7b 2f 7d 20 63 6f 6e  |ng->split{/} con|
000456b0  74 61 69 6e 73 20 74 68  65 20 63 68 61 72 61 63  |tains the charac|
000456c0  74 65 72 20 61 74 20 77  68 69 63 68 20 74 6f 20  |ter at which to |
000456d0  73 70 6c 69 74 20 74 68  65 20 73 74 72 69 6e 67  |split the string|
000456e0  20 28 65 67 20 33 32 29  2e 20 7b 2f 7d 73 74 72  | (eg 32). {/}str|
000456f0  69 6e 67 2d 3e 74 65 72  6d 7b 2f 7d 20 63 6f 6e  |ing->term{/} con|
00045700  74 61 69 6e 73 20 74 68  65 20 69 6e 64 65 78 20  |tains the index |
00045710  6f 66 20 74 68 65 20 74  65 72 6d 69 6e 61 74 69  |of the terminati|
00045720  6f 6e 2e 0a 0a 4f 6e 20  65 78 69 74 2c 20 28 73  |on...On exit, (s|
00045730  74 72 69 6e 67 2d 3e 78  2c 20 73 74 72 69 6e 67  |tring->x, string|
00045740  2d 3e 79 29 20 63 6f 6e  74 61 69 6e 73 20 74 68  |->y) contains th|
00045750  65 20 78 20 6f 66 66 73  65 74 20 61 66 74 65 72  |e x offset after|
00045760  20 70 72 69 6e 74 69 6e  67 20 74 68 65 20 73 74  | printing the st|
00045770  72 69 6e 67 2e 20 7b 2f  7d 73 74 72 69 6e 67 2d  |ring. {/}string-|
00045780  3e 73 70 6c 69 74 7b 2f  7d 20 63 6f 6e 74 61 69  |>split{/} contai|
00045790  6e 73 20 74 68 65 20 6e  75 6d 62 65 72 20 6f 66  |ns the number of|
000457a0  20 73 70 6c 69 74 20 63  68 61 72 61 63 74 65 72  | split character|
000457b0  73 2c 20 61 6e 64 20 7b  2f 7d 73 74 72 69 6e 67  |s, and {/}string|
000457c0  2d 3e 73 7b 2f 7d 20 61  6e 64 20 7b 2f 7d 73 74  |->s{/} and {/}st|
000457d0  72 69 6e 67 2d 3e 69 6e  64 65 78 7b 2f 7d 20 61  |ring->index{/} a|
000457e0  72 65 20 75 70 64 61 74  65 64 20 74 6f 20 70 6f  |re updated to po|
000457f0  69 6e 74 20 61 74 20 74  68 65 20 74 65 72 6d 69  |int at the termi|
00045800  6e 61 74 69 6e 67 20 70  6f 73 69 74 69 6f 6e 2e  |nating position.|
00045810  0a 0a 43 6f 6e 74 72 6f  6c 20 73 65 71 75 65 6e  |..Control sequen|
00045820  63 65 73 20 61 73 20 69  6e 20 3c 66 6f 6e 74 5f  |ces as in <font_|
00045830  70 61 69 6e 74 3e 20 6d  61 79 20 62 65 20 75 73  |paint> may be us|
00045840  65 64 2e 00 44 41 54 41  a8 00 00 00 66 6f 6e 74  |ed..DATA....font|
00045850  5f 74 68 72 65 73 68 6f  6c 64 0a 54 68 69 73 20  |_threshold.This |
00045860  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
00045870  69 6e 20 3c 66 6f 6e 74  2e 68 3d 3e 66 6f 6e 74  |in <font.h=>font|
00045880  5f 68 3e 2e 20 49 74 20  69 73 20 61 20 73 74 72  |_h>. It is a str|
00045890  75 63 74 75 72 65 20 75  73 65 64 20 66 6f 72 20  |ucture used for |
000458a0  68 6f 6c 64 69 6e 67 20  66 6f 6e 74 20 74 68 72  |holding font thr|
000458b0  65 73 68 6f 6c 64 73 3a  0a 0a 20 20 5c 7b 0a 20  |esholds:..  \{. |
000458c0  20 20 20 63 68 61 72 20  6f 66 66 73 65 74 3b 0a  |   char offset;.|
000458d0  20 20 20 20 63 68 61 72  20 74 68 72 65 73 68 6f  |    char thresho|
000458e0  6c 64 73 5b 31 35 5d 3b  0a 20 20 7d 44 41 54 41  |lds[15];.  }DATA|
000458f0  af 00 00 00 66 6f 6e 74  5f 74 68 72 65 73 68 6f  |....font_thresho|
00045900  6c 64 73 0a 54 68 69 73  20 74 79 70 65 20 69 73  |lds.This type is|
00045910  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 44 65 73  | defined in <Des|
00045920  6b 4c 69 62 3a 46 6f 6e  74 2e 68 3d 3e 46 6f 6e  |kLib:Font.h=>Fon|
00045930  74 3e 2e 20 49 74 20 69  73 20 61 20 73 74 72 75  |t>. It is a stru|
00045940  63 74 75 72 65 20 75 73  65 64 20 66 6f 72 20 68  |cture used for h|
00045950  6f 6c 64 69 6e 67 20 66  6f 6e 74 20 74 68 72 65  |olding font thre|
00045960  73 68 6f 6c 64 73 3a 0a  0a 20 20 5c 7b 0a 20 20  |sholds:..  \{.  |
00045970  20 20 63 68 61 72 20 6f  66 66 73 65 74 3b 0a 20  |  char offset;. |
00045980  20 20 20 63 68 61 72 20  74 68 72 65 73 68 6f 6c  |   char threshol|
00045990  64 73 5b 31 35 5d 3b 0a  20 20 7d 00 44 41 54 41  |ds[15];.  }.DATA|
000459a0  73 01 00 00 54 69 6d 73  4c 69 62 3a 46 6f 6e 74  |s...TimsLib:Font|
000459b0  2e 68 0a 54 68 69 73 20  68 65 61 64 65 72 20 64  |.h.This header d|
000459c0  65 63 6c 61 72 65 73 20  6e 6f 20 66 75 6e 63 74  |eclares no funct|
000459d0  69 6f 6e 73 2c 20 76 61  72 69 61 62 6c 65 73 2c  |ions, variables,|
000459e0  20 6d 61 63 72 6f 73 20  6f 72 20 74 79 70 65 73  | macros or types|
000459f0  2e 20 49 6e 73 74 65 61  64 2c 20 69 74 20 3c 23  |. Instead, it <#|
00045a00  75 6e 64 65 66 3d 3e 75  6e 64 65 66 3e 73 20 74  |undef=>undef>s t|
00045a10  68 65 20 46 6f 6e 74 5f  2e 2e 2e 6d 61 63 72 6f  |he Font_...macro|
00045a20  73 20 64 65 66 69 6e 65  64 20 62 79 20 44 65 73  |s defined by Des|
00045a30  6b 74 6f 70 20 43 27 73  20 3c 73 77 69 73 2e 68  |ktop C's <swis.h|
00045a40  3d 3e 73 77 69 73 3e 2c  20 61 6e 64 20 74 68 65  |=>swis>, and the|
00045a50  6e 20 23 69 6e 63 6c 75  64 65 73 20 22 3c 44 65  |n #includes "<De|
00045a60  73 6b 4c 69 62 3a 46 6f  6e 74 2e 68 3d 3e 46 6f  |skLib:Font.h=>Fo|
00045a70  6e 74 3e 22 2e 20 54 68  69 73 20 61 76 6f 69 64  |nt>". This avoid|
00045a80  73 20 63 6c 61 73 68 65  73 20 62 65 74 77 65 65  |s clashes betwee|
00045a90  6e 20 74 68 65 20 46 6f  6e 74 5f 2e 2e 2e 20 6e  |n the Font_... n|
00045aa0  61 6d 65 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |ames defined in |
00045ab0  62 6f 74 68 20 68 65 61  64 65 72 73 2e 0a 0a 42  |both headers...B|
00045ac0  61 73 69 63 61 6c 6c 79  2c 20 69 66 20 79 6f 75  |asically, if you|
00045ad0  20 61 72 65 20 75 73 69  6e 67 20 73 77 69 73 2e  | are using swis.|
00045ae0  68 2c 20 74 68 65 6e 20  69 6e 63 6c 75 64 65 20  |h, then include |
00045af0  74 68 69 73 20 69 6e 73  74 65 61 64 20 6f 66 20  |this instead of |
00045b00  44 65 73 6b 4c 69 62 3a  46 6f 6e 74 2e 68 2e 00  |DeskLib:Font.h..|
00045b10  44 41 54 41 11 01 00 00  66 6f 6e 74 6c 69 73 74  |DATA....fontlist|
00045b20  2e 68 0a 54 68 69 73 20  68 65 61 64 65 72 20 64  |.h.This header d|
00045b30  65 63 6c 61 72 65 73 20  66 75 6e 63 74 69 6f 6e  |eclares function|
00045b40  73 20 66 6f 72 20 63 72  65 61 74 69 6e 67 20 6c  |s for creating l|
00045b50  69 6e 6b 65 64 20 6c 69  73 74 73 20 6f 66 20 61  |inked lists of a|
00045b60  6c 6c 20 74 68 65 20 61  76 61 69 6c 61 62 6c 65  |ll the available|
00045b70  20 66 6f 6e 74 73 2e 0a  0a 46 75 6e 63 74 69 6f  | fonts...Functio|
00045b80  6e 73 3a 0a 7b 61 6c 69  67 6e 20 63 65 6e 74 72  |ns:.{align centr|
00045b90  65 7d 0a 3c 66 6f 6e 74  6c 69 73 74 5f 6c 69 73  |e}.<fontlist_lis|
00045ba0  74 5f 61 6c 6c 5f 66 6f  6e 74 73 3e 0a 3c 66 6f  |t_all_fonts>.<fo|
00045bb0  6e 74 6c 69 73 74 5f 66  72 65 65 5f 66 6f 6e 74  |ntlist_free_font|
00045bc0  5f 74 72 65 65 3e 0a 7b  61 6c 69 67 6e 7d 0a 54  |_tree>.{align}.T|
00045bd0  79 70 65 3a 0a 7b 61 6c  69 67 6e 20 63 65 6e 74  |ype:.{align cent|
00045be0  72 65 7d 0a 3c 66 6f 6e  74 6c 69 73 74 5f 6e 6f  |re}.<fontlist_no|
00045bf0  64 65 3e 0a 7b 61 6c 69  67 6e 7d 0a 56 61 72 69  |de>.{align}.Vari|
00045c00  61 62 6c 65 3a 0a 7b 61  6c 69 67 6e 20 63 65 6e  |able:.{align cen|
00045c10  74 72 65 7d 0a 3c 66 6f  6e 74 5f 5f 74 72 65 65  |tre}.<font__tree|
00045c20  3e 00 00 00 44 49 52 24  9c 00 00 00 9c 00 00 00  |>...DIR$........|
00045c30  c0 5c 04 00 46 ff ff ff  66 90 ab 24 c2 00 00 00  |.\..F...f..$....|
00045c40  13 00 00 00 00 00 00 00  66 72 65 65 5f 66 6f 6e  |........free_fon|
00045c50  74 5f 74 72 65 65 00 00  84 5d 04 00 46 ff ff ff  |t_tree...]..F...|
00045c60  36 8a ab 24 17 01 00 00  13 00 00 00 00 00 00 00  |6..$............|
00045c70  6c 69 73 74 5f 61 6c 6c  5f 66 6f 6e 74 73 00 00  |list_all_fonts..|
00045c80  9c 5e 04 00 46 ff ff ff  0b c3 ac 24 06 03 00 00  |.^..F......$....|
00045c90  13 00 00 00 00 00 00 00  6e 6f 64 65 00 00 00 00  |........node....|
00045ca0  a4 61 04 00 46 ff fa ff  b8 94 ac 24 ac 0b 00 00  |.a..F......$....|
00045cb0  13 00 00 00 00 00 00 00  53 74 72 75 63 74 44 00  |........StructD.|
00045cc0  44 41 54 41 c2 00 00 00  66 6f 6e 74 6c 69 73 74  |DATA....fontlist|
00045cd0  5f 66 72 65 65 5f 66 6f  6e 74 5f 74 72 65 65 0a  |_free_font_tree.|
00045ce0  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 66 6f 6e  |Syntax:.void fon|
00045cf0  74 6c 69 73 74 5f 66 72  65 65 5f 66 6f 6e 74 5f  |tlist_free_font_|
00045d00  74 72 65 65 20 28 3c 66  6f 6e 74 6c 69 73 74 5f  |tree (<fontlist_|
00045d10  6e 6f 64 65 3e 20 2a 66  6f 6e 74 5f 74 72 65 65  |node> *font_tree|
00045d20  29 3b 0a 48 65 61 64 65  72 3a 09 3c 66 6f 6e 74  |);.Header:.<font|
00045d30  6c 69 73 74 2e 68 3d 3e  66 6f 6e 74 6c 69 73 74  |list.h=>fontlist|
00045d40  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
00045d50  20 72 65 63 75 72 73 69  76 65 6c 79 20 66 72 65  | recursively fre|
00045d60  65 73 20 74 68 65 20 6d  65 6d 6f 72 79 20 75 73  |es the memory us|
00045d70  65 64 20 62 79 20 61 20  66 6f 6e 74 20 74 72 65  |ed by a font tre|
00045d80  65 2e 00 00 44 41 54 41  17 01 00 00 66 6f 6e 74  |e...DATA....font|
00045d90  6c 69 73 74 5f 6c 69 73  74 5f 61 6c 6c 5f 66 6f  |list_list_all_fo|
00045da0  6e 74 73 0a 53 79 6e 74  61 78 3a 09 3c 66 6f 6e  |nts.Syntax:.<fon|
00045db0  74 6c 69 73 74 5f 6e 6f  64 65 3e 20 2a 66 6f 6e  |tlist_node> *fon|
00045dc0  74 6c 69 73 74 5f 6c 69  73 74 5f 61 6c 6c 5f 66  |tlist_list_all_f|
00045dd0  6f 6e 74 73 20 28 3c 42  4f 4f 4c 3e 20 73 79 73  |onts (<BOOL> sys|
00045de0  74 65 6d 29 3b 0a 48 65  61 64 65 72 3a 09 3c 66  |tem);.Header:.<f|
00045df0  6f 6e 74 6c 69 73 74 2e  68 3d 3e 66 6f 6e 74 6c  |ontlist.h=>fontl|
00045e00  69 73 74 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |ist>..Returns:.P|
00045e10  6f 69 6e 74 65 72 20 74  6f 20 73 74 61 72 74 20  |ointer to start |
00045e20  6f 66 20 66 6f 6e 74 20  74 72 65 65 2e 0a 0a 54  |of font tree...T|
00045e30  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 61  |his function rea|
00045e40  64 73 20 69 6e 20 74 68  65 20 66 6f 6e 74 20 6c  |ds in the font l|
00045e50  69 73 74 20 69 6e 74 6f  20 61 20 66 6f 6e 74 20  |ist into a font |
00045e60  74 72 65 65 2e 20 49 66  20 2f 73 79 73 74 65 6d  |tree. If /system|
00045e70  2f 20 69 73 20 3c 54 52  55 45 3e 20 74 68 65 6e  |/ is <TRUE> then|
00045e80  20 69 74 20 69 6e 63 6c  75 64 65 73 20 2a 53 79  | it includes *Sy|
00045e90  73 74 65 6d 20 66 6f 6e  74 2a 2e 00 44 41 54 41  |stem font*..DATA|
00045ea0  06 03 00 00 66 6f 6e 74  6c 69 73 74 5f 6e 6f 64  |....fontlist_nod|
00045eb0  65 0a 54 68 69 73 20 74  79 70 65 20 69 73 20 64  |e.This type is d|
00045ec0  65 66 69 6e 65 64 20 69  6e 20 3c 66 6f 6e 74 6c  |efined in <fontl|
00045ed0  69 73 74 2e 68 3d 3e 66  6f 6e 74 6c 69 73 74 3e  |ist.h=>fontlist>|
00045ee0  2e 20 49 74 20 63 6f 6e  74 61 69 6e 73 20 61 20  |. It contains a |
00045ef0  73 69 6e 67 6c 65 20 70  61 72 74 20 6f 66 20 61  |single part of a|
00045f00  20 66 6f 6e 74 20 74 72  65 65 2e 20 49 74 20 69  | font tree. It i|
00045f10  73 20 64 65 66 69 6e 65  64 20 61 73 20 74 68 65  |s defined as the|
00045f20  20 66 6f 6c 6c 6f 77 69  6e 67 20 73 74 72 75 63  | following struc|
00045f30  74 75 72 65 3a 0a 0a 20  20 20 20 5c 7b 0a 20 20  |ture:..    \{.  |
00045f40  20 20 20 20 63 68 61 72  09 6e 61 6d 65 5b 34 30  |    char.name[40|
00045f50  5d 3b 0a 20 20 20 20 20  20 66 6f 6e 74 6c 69 73  |];.      fontlis|
00045f60  74 5f 6e 6f 64 65 09 2a  73 6f 6e 3b 0a 20 20 20  |t_node.*son;.   |
00045f70  20 20 20 66 6f 6e 74 6c  69 73 74 5f 6e 6f 64 65  |   fontlist_node|
00045f80  09 2a 62 72 6f 74 68 65  72 3b 0a 20 20 20 20 20  |.*brother;.     |
00045f90  20 69 6e 74 09 66 6c 61  67 3b 0a 20 20 20 20 7d  | int.flag;.    }|
00045fa0  0a 0a 2f 73 6f 6e 2f 20  70 6f 69 6e 74 73 20 74  |../son/ points t|
00045fb0  6f 20 74 68 65 20 73 6f  6e 20 6f 66 20 74 68 69  |o the son of thi|
00045fc0  73 20 6e 6f 64 65 20 65  67 20 74 68 65 20 73 6f  |s node eg the so|
00045fd0  6e 20 6f 66 20 2a 54 72  69 6e 69 74 79 2a 20 69  |n of *Trinity* i|
00045fe0  73 20 2a 4d 65 64 69 75  6d 2a 2e 0a 0a 2f 62 72  |s *Medium*.../br|
00045ff0  6f 74 68 65 72 2f 20 70  6f 69 6e 74 73 20 74 68  |other/ points th|
00046000  65 20 62 72 6f 74 68 65  72 20 6f 66 20 74 68 69  |e brother of thi|
00046010  73 20 6e 6f 64 65 20 65  67 20 74 68 65 20 62 72  |s node eg the br|
00046020  6f 74 68 65 72 20 6f 66  20 2a 54 72 69 6e 69 74  |other of *Trinit|
00046030  79 2a 20 6d 69 67 68 74  20 62 65 20 2a 43 6f 72  |y* might be *Cor|
00046040  70 75 73 2a 2c 20 74 68  65 20 62 72 6f 74 68 65  |pus*, the brothe|
00046050  72 20 6f 66 20 2a 4d 65  64 69 75 6d 2a 20 6d 69  |r of *Medium* mi|
00046060  67 68 74 20 62 65 20 2a  42 6f 6c 64 2a 2e 0a 0a  |ght be *Bold*...|
00046070  49 66 20 2f 66 6c 61 67  2f 20 69 73 20 54 52 55  |If /flag/ is TRU|
00046080  45 2c 20 74 68 65 6e 20  74 68 69 73 20 69 73 20  |E, then this is |
00046090  61 20 76 61 6c 69 64 20  66 6f 6e 74 2e 20 54 68  |a valid font. Th|
000460a0  69 73 20 77 6f 75 6c 64  20 62 65 20 73 65 74 20  |is would be set |
000460b0  66 6f 72 20 2a 4d 65 64  69 75 6d 2a 20 62 75 74  |for *Medium* but|
000460c0  20 6e 6f 74 20 2a 54 72  69 6e 69 74 79 2a 2e 20  | not *Trinity*. |
000460d0  54 68 65 20 66 6f 6e 74  20 6e 61 6d 65 20 69 73  |The font name is|
000460e0  20 66 6f 75 6e 64 20 62  79 20 61 64 64 69 6e 67  | found by adding|
000460f0  20 74 68 65 20 6e 61 6d  65 73 20 66 72 6f 6d 20  | the names from |
00046100  74 68 65 20 66 69 72 73  74 20 6e 6f 64 65 20 74  |the first node t|
00046110  6f 20 74 68 69 73 20 6f  6e 65 20 65 67 20 7b 2a  |o this one eg {*|
00046120  7d 54 72 69 6e 69 74 79  2e 4d 65 64 69 75 6d 7b  |}Trinity.Medium{|
00046130  2a 7d 2e 0a 0a 41 20 74  79 70 69 63 61 6c 20 66  |*}...A typical f|
00046140  6f 6e 74 20 73 74 72 75  63 74 75 72 65 20 6d 69  |ont structure mi|
00046150  67 68 74 20 62 65 3a 0a  0a 23 64 72 61 77 20 63  |ght be:..#draw c|
00046160  2c 66 20 66 6f 6e 74 6c  69 73 74 5f 53 74 72 75  |,f fontlist_Stru|
00046170  63 74 44 0a 0a 23 62 65  6c 6f 77 0a 54 68 69 73  |ctD..#below.This|
00046180  20 69 73 20 74 68 65 20  73 74 72 75 63 74 75 72  | is the structur|
00046190  65 20 64 65 73 63 72 69  62 65 64 20 61 62 6f 76  |e described abov|
000461a0  65 2e 00 00 44 41 54 41  ac 0b 00 00 44 72 61 77  |e...DATA....Draw|
000461b0  c9 00 00 00 00 00 00 00  44 72 61 77 20 20 20 20  |........Draw    |
000461c0  20 20 20 20 10 88 00 00  c0 8c 00 00 40 7c 02 00  |    ........@|..|
000461d0  10 c4 01 00 00 00 00 00  34 00 00 00 01 48 6f 6d  |........4....Hom|
000461e0  65 72 74 6f 6e 2e 4d 65  64 69 75 6d 00 03 48 6f  |erton.Medium..Ho|
000461f0  6d 65 72 74 6f 6e 2e 4d  65 64 69 75 6d 2e 4f 62  |merton.Medium.Ob|
00046200  6c 69 71 75 65 00 00 00  0b 00 00 00 58 00 00 00  |lique.......X...|
00046210  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00046220  00 05 00 00 00 01 00 00  00 00 f0 3f 00 00 00 00  |...........?....|
00046230  02 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00  |................|
00046240  00 00 00 00 01 00 00 00  01 00 00 00 01 00 00 00  |................|
00046250  00 00 00 00 01 00 00 00  80 00 00 00 88 13 00 00  |................|
00046260  06 00 00 00 f0 0a 00 00  10 88 00 00 c0 8c 00 00  |................|
00046270  40 7c 02 00 10 c4 01 00  20 20 20 20 20 20 20 20  |@|......        |
00046280  20 20 20 20 01 00 00 00  3c 00 00 00 b0 cd 00 00  |    ....<.......|
00046290  90 b1 01 00 70 0f 01 00  50 c3 01 00 00 00 00 00  |....p...P.......|
000462a0  00 ff ff ff 03 00 00 00  00 1e 00 00 00 1e 00 00  |................|
000462b0  70 cd 00 00 90 b2 01 00  73 6f 6e 73 00 00 00 00  |p.......sons....|
000462c0  01 00 00 00 40 00 00 00  10 88 00 00 90 8b 01 00  |....@...........|
000462d0  50 f7 00 00 10 a3 01 00  00 00 00 00 00 ff ff ff  |P...............|
000462e0  03 00 00 00 00 1e 00 00  00 1e 00 00 90 86 00 00  |................|
000462f0  90 8c 01 00 62 72 6f 74  68 65 72 73 00 00 00 00  |....brothers....|
00046300  01 00 00 00 3c 00 00 00  e0 d4 00 00 60 5b 01 00  |....<.......`[..|
00046310  e0 25 01 00 e0 78 01 00  00 00 00 00 00 ff ff ff  |.%...x..........|
00046320  01 00 00 00 00 1e 00 00  00 1e 00 00 a0 d4 00 00  |................|
00046330  60 62 01 00 54 72 69 6e  69 74 79 00 01 00 00 00  |`b..Trinity.....|
00046340  3c 00 00 00 a0 d5 00 00  a0 cd 00 00 60 34 01 00  |<...........`4..|
00046350  a0 eb 00 00 00 00 00 00  00 ff ff ff 01 00 00 00  |................|
00046360  00 1e 00 00 00 1e 00 00  a0 d4 00 00 a0 d4 00 00  |................|
00046370  43 6f 72 70 75 73 00 00  01 00 00 00 3c 00 00 00  |Corpus......<...|
00046380  10 88 01 00 60 61 01 00  90 ee 01 00 e0 78 01 00  |....`a.......x..|
00046390  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
000463a0  00 1e 00 00 d0 85 01 00  60 62 01 00 4d 65 64 69  |........`b..Medi|
000463b0  75 6d 00 00 01 00 00 00  3c 00 00 00 10 88 01 00  |um......<.......|
000463c0  a0 d3 00 00 90 ee 01 00  20 eb 00 00 00 00 00 00  |........ .......|
000463d0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
000463e0  d0 85 01 00 a0 d4 00 00  4d 65 64 69 75 6d 00 00  |........Medium..|
000463f0  01 00 00 00 3c 00 00 00  10 88 01 00 80 1a 01 00  |....<...........|
00046400  90 c0 01 00 00 32 01 00  00 00 00 00 00 ff ff ff  |.....2..........|
00046410  01 00 00 00 00 1e 00 00  00 1e 00 00 d0 85 01 00  |................|
00046420  80 1b 01 00 42 6f 6c 64  00 00 00 00 01 00 00 00  |....Bold........|
00046430  3c 00 00 00 10 88 01 00  c0 8c 00 00 90 c0 01 00  |<...............|
00046440  40 a4 00 00 00 00 00 00  00 ff ff ff 01 00 00 00  |@...............|
00046450  00 1e 00 00 00 1e 00 00  d0 85 01 00 c0 8d 00 00  |................|
00046460  42 6f 6c 64 00 00 00 00  01 00 00 00 3c 00 00 00  |Bold........<...|
00046470  40 41 02 00 60 61 01 00  40 7c 02 00 e0 78 01 00  |@A..`a..@|...x..|
00046480  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
00046490  00 1e 00 00 00 3f 02 00  60 62 01 00 49 74 61 6c  |.....?..`b..Ital|
000464a0  69 63 00 00 01 00 00 00  3c 00 00 00 40 41 02 00  |ic......<...@A..|
000464b0  80 1a 01 00 40 7c 02 00  00 32 01 00 00 00 00 00  |....@|...2......|
000464c0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
000464d0  00 3f 02 00 80 1b 01 00  49 74 61 6c 69 63 00 00  |.?......Italic..|
000464e0  06 00 00 00 f0 00 00 00  c0 13 01 00 0d b3 01 00  |................|
000464f0  3a 4d 01 00 10 c4 01 00  20 20 20 20 20 20 20 20  |:M......        |
00046500  20 20 20 20 02 00 00 00  60 00 00 00 38 3c 01 00  |    ....`...8<..|
00046510  0d b3 01 00 3a 4d 01 00  10 c4 01 00 00 00 00 00  |....:M..........|
00046520  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046530  38 3c 01 00 10 c4 01 00  08 00 00 00 38 3c 01 00  |8<..........8<..|
00046540  0d b3 01 00 08 00 00 00  3a 4d 01 00 8e bb 01 00  |........:M......|
00046550  08 00 00 00 38 3c 01 00  10 c4 01 00 05 00 00 00  |....8<..........|
00046560  00 00 00 00 02 00 00 00  6c 00 00 00 c0 13 01 00  |........l.......|
00046570  fa b7 01 00 92 3c 01 00  c8 be 01 00 00 00 00 00  |.....<..........|
00046580  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046590  c0 13 01 00 c8 be 01 00  08 00 00 00 92 3c 01 00  |.............<..|
000465a0  c8 be 01 00 08 00 00 00  92 3c 01 00 fa b7 01 00  |.........<......|
000465b0  08 00 00 00 c0 13 01 00  fa b7 01 00 08 00 00 00  |................|
000465c0  c0 13 01 00 c8 be 01 00  05 00 00 00 00 00 00 00  |................|
000465d0  06 00 00 00 f0 00 00 00  e8 8a 00 00 dd 4a 01 00  |.............J..|
000465e0  ea 9b 00 00 58 84 01 00  20 20 20 20 20 20 20 20  |....X...        |
000465f0  20 20 20 20 02 00 00 00  60 00 00 00 e8 8a 00 00  |    ....`.......|
00046600  dd 4a 01 00 ea 9b 00 00  df 5b 01 00 00 00 00 00  |.J.......[......|
00046610  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046620  ea 9b 00 00 df 5b 01 00  08 00 00 00 e8 8a 00 00  |.....[..........|
00046630  df 5b 01 00 08 00 00 00  69 93 00 00 dd 4a 01 00  |.[......i....J..|
00046640  08 00 00 00 ea 9b 00 00  df 5b 01 00 05 00 00 00  |.........[......|
00046650  00 00 00 00 02 00 00 00  6c 00 00 00 d4 8f 00 00  |........l.......|
00046660  84 5b 01 00 a3 96 00 00  58 84 01 00 00 00 00 00  |.[......X.......|
00046670  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046680  a2 96 00 00 58 84 01 00  08 00 00 00 a3 96 00 00  |....X...........|
00046690  85 5b 01 00 08 00 00 00  d5 8f 00 00 84 5b 01 00  |.[...........[..|
000466a0  08 00 00 00 d4 8f 00 00  57 84 01 00 08 00 00 00  |........W.......|
000466b0  a2 96 00 00 58 84 01 00  05 00 00 00 00 00 00 00  |....X...........|
000466c0  06 00 00 00 f0 00 00 00  f0 3e 01 00 cd 64 01 00  |.........>...d..|
000466d0  6a 78 01 00 d0 75 01 00  20 20 20 20 20 20 20 20  |jx...u..        |
000466e0  20 20 20 20 02 00 00 00  60 00 00 00 68 67 01 00  |    ....`...hg..|
000466f0  cd 64 01 00 6a 78 01 00  d0 75 01 00 00 00 00 00  |.d..jx...u......|
00046700  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046710  68 67 01 00 d0 75 01 00  08 00 00 00 68 67 01 00  |hg...u......hg..|
00046720  cd 64 01 00 08 00 00 00  6a 78 01 00 4e 6d 01 00  |.d......jx..Nm..|
00046730  08 00 00 00 68 67 01 00  d0 75 01 00 05 00 00 00  |....hg...u......|
00046740  00 00 00 00 02 00 00 00  6c 00 00 00 f0 3e 01 00  |........l....>..|
00046750  ba 69 01 00 c2 67 01 00  88 70 01 00 00 00 00 00  |.i...g...p......|
00046760  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046770  f0 3e 01 00 88 70 01 00  08 00 00 00 c2 67 01 00  |.>...p.......g..|
00046780  88 70 01 00 08 00 00 00  c2 67 01 00 ba 69 01 00  |.p.......g...i..|
00046790  08 00 00 00 f0 3e 01 00  ba 69 01 00 08 00 00 00  |.....>...i......|
000467a0  f0 3e 01 00 88 70 01 00  05 00 00 00 00 00 00 00  |.>...p..........|
000467b0  06 00 00 00 f0 00 00 00  f0 3e 01 00 0d d7 00 00  |.........>......|
000467c0  6a 78 01 00 10 e8 00 00  20 20 20 20 20 20 20 20  |jx......        |
000467d0  20 20 20 20 02 00 00 00  60 00 00 00 68 67 01 00  |    ....`...hg..|
000467e0  0d d7 00 00 6a 78 01 00  10 e8 00 00 00 00 00 00  |....jx..........|
000467f0  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046800  68 67 01 00 10 e8 00 00  08 00 00 00 68 67 01 00  |hg..........hg..|
00046810  0d d7 00 00 08 00 00 00  6a 78 01 00 8e df 00 00  |........jx......|
00046820  08 00 00 00 68 67 01 00  10 e8 00 00 05 00 00 00  |....hg..........|
00046830  00 00 00 00 02 00 00 00  6c 00 00 00 f0 3e 01 00  |........l....>..|
00046840  fa db 00 00 c2 67 01 00  c8 e2 00 00 00 00 00 00  |.....g..........|
00046850  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046860  f0 3e 01 00 c8 e2 00 00  08 00 00 00 c2 67 01 00  |.>...........g..|
00046870  c8 e2 00 00 08 00 00 00  c2 67 01 00 fa db 00 00  |.........g......|
00046880  08 00 00 00 f0 3e 01 00  fa db 00 00 08 00 00 00  |.....>..........|
00046890  f0 3e 01 00 c8 e2 00 00  05 00 00 00 00 00 00 00  |.>..............|
000468a0  06 00 00 00 f0 00 00 00  20 f8 01 00 cd 64 01 00  |........ ....d..|
000468b0  9a 31 02 00 d0 75 01 00  20 20 20 20 20 20 20 20  |.1...u..        |
000468c0  20 20 20 20 02 00 00 00  60 00 00 00 98 20 02 00  |    ....`.... ..|
000468d0  cd 64 01 00 9a 31 02 00  d0 75 01 00 00 00 00 00  |.d...1...u......|
000468e0  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
000468f0  98 20 02 00 d0 75 01 00  08 00 00 00 98 20 02 00  |. ...u....... ..|
00046900  cd 64 01 00 08 00 00 00  9a 31 02 00 4e 6d 01 00  |.d.......1..Nm..|
00046910  08 00 00 00 98 20 02 00  d0 75 01 00 05 00 00 00  |..... ...u......|
00046920  00 00 00 00 02 00 00 00  6c 00 00 00 20 f8 01 00  |........l... ...|
00046930  ba 69 01 00 f2 20 02 00  88 70 01 00 00 00 00 00  |.i... ...p......|
00046940  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046950  20 f8 01 00 88 70 01 00  08 00 00 00 f2 20 02 00  | ....p....... ..|
00046960  88 70 01 00 08 00 00 00  f2 20 02 00 ba 69 01 00  |.p....... ...i..|
00046970  08 00 00 00 20 f8 01 00  ba 69 01 00 08 00 00 00  |.... ....i......|
00046980  20 f8 01 00 88 70 01 00  05 00 00 00 00 00 00 00  | ....p..........|
00046990  06 00 00 00 f0 00 00 00  20 f8 01 00 ed 1d 01 00  |........ .......|
000469a0  9a 31 02 00 f0 2e 01 00  20 20 20 20 20 20 20 20  |.1......        |
000469b0  20 20 20 20 02 00 00 00  60 00 00 00 98 20 02 00  |    ....`.... ..|
000469c0  ed 1d 01 00 9a 31 02 00  f0 2e 01 00 00 00 00 00  |.....1..........|
000469d0  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
000469e0  98 20 02 00 f0 2e 01 00  08 00 00 00 98 20 02 00  |. ........... ..|
000469f0  ed 1d 01 00 08 00 00 00  9a 31 02 00 6e 26 01 00  |.........1..n&..|
00046a00  08 00 00 00 98 20 02 00  f0 2e 01 00 05 00 00 00  |..... ..........|
00046a10  00 00 00 00 02 00 00 00  6c 00 00 00 20 f8 01 00  |........l... ...|
00046a20  da 22 01 00 f2 20 02 00  a8 29 01 00 00 00 00 00  |."... ...)......|
00046a30  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046a40  20 f8 01 00 a8 29 01 00  08 00 00 00 f2 20 02 00  | ....)....... ..|
00046a50  a8 29 01 00 08 00 00 00  f2 20 02 00 da 22 01 00  |.)....... ..."..|
00046a60  08 00 00 00 20 f8 01 00  da 22 01 00 08 00 00 00  |.... ...."......|
00046a70  20 f8 01 00 a8 29 01 00  05 00 00 00 00 00 00 00  | ....)..........|
00046a80  06 00 00 00 f0 00 00 00  f8 82 01 00 6b 36 01 00  |............k6..|
00046a90  2c 8d 01 00 e8 58 01 00  20 20 20 20 20 20 20 20  |,....X..        |
00046aa0  20 20 20 20 02 00 00 00  60 00 00 00 f8 82 01 00  |    ....`.......|
00046ab0  6b 36 01 00 2c 8d 01 00  9f 40 01 00 00 00 00 00  |k6..,....@......|
00046ac0  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046ad0  2c 8d 01 00 9f 40 01 00  08 00 00 00 f8 82 01 00  |,....@..........|
00046ae0  9f 40 01 00 08 00 00 00  12 88 01 00 6b 36 01 00  |.@..........k6..|
00046af0  08 00 00 00 2c 8d 01 00  9f 40 01 00 05 00 00 00  |....,....@......|
00046b00  00 00 00 00 02 00 00 00  6c 00 00 00 ec 85 01 00  |........l.......|
00046b10  68 40 01 00 01 8a 01 00  e8 58 01 00 00 00 00 00  |h@.......X......|
00046b20  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046b30  01 8a 01 00 e8 58 01 00  08 00 00 00 01 8a 01 00  |.....X..........|
00046b40  69 40 01 00 08 00 00 00  ec 85 01 00 68 40 01 00  |i@..........h@..|
00046b50  08 00 00 00 ec 85 01 00  e7 58 01 00 08 00 00 00  |.........X......|
00046b60  01 8a 01 00 e8 58 01 00  05 00 00 00 00 00 00 00  |.....X..........|
00046b70  06 00 00 00 f0 00 00 00  f8 82 01 00 ab a8 00 00  |................|
00046b80  2c 8d 01 00 28 cb 00 00  20 20 20 20 20 20 20 20  |,...(...        |
00046b90  20 20 20 20 02 00 00 00  60 00 00 00 f8 82 01 00  |    ....`.......|
00046ba0  ab a8 00 00 2c 8d 01 00  df b2 00 00 00 00 00 00  |....,...........|
00046bb0  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046bc0  2c 8d 01 00 df b2 00 00  08 00 00 00 f8 82 01 00  |,...............|
00046bd0  df b2 00 00 08 00 00 00  12 88 01 00 ab a8 00 00  |................|
00046be0  08 00 00 00 2c 8d 01 00  df b2 00 00 05 00 00 00  |....,...........|
00046bf0  00 00 00 00 02 00 00 00  6c 00 00 00 ec 85 01 00  |........l.......|
00046c00  a8 b2 00 00 01 8a 01 00  28 cb 00 00 00 00 00 00  |........(.......|
00046c10  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046c20  01 8a 01 00 28 cb 00 00  08 00 00 00 01 8a 01 00  |....(...........|
00046c30  a9 b2 00 00 08 00 00 00  ec 85 01 00 a8 b2 00 00  |................|
00046c40  08 00 00 00 ec 85 01 00  27 cb 00 00 08 00 00 00  |........'.......|
00046c50  01 8a 01 00 28 cb 00 00  05 00 00 00 00 00 00 00  |....(...........|
00046c60  06 00 00 00 f0 00 00 00  c8 d1 00 00 fd 03 01 00  |................|
00046c70  ca e2 00 00 78 3d 01 00  20 20 20 20 20 20 20 20  |....x=..        |
00046c80  20 20 20 20 02 00 00 00  60 00 00 00 c8 d1 00 00  |    ....`.......|
00046c90  fd 03 01 00 ca e2 00 00  ff 14 01 00 00 00 00 00  |................|
00046ca0  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046cb0  ca e2 00 00 ff 14 01 00  08 00 00 00 c8 d1 00 00  |................|
00046cc0  ff 14 01 00 08 00 00 00  49 da 00 00 fd 03 01 00  |........I.......|
00046cd0  08 00 00 00 ca e2 00 00  ff 14 01 00 05 00 00 00  |................|
00046ce0  00 00 00 00 02 00 00 00  6c 00 00 00 b4 d6 00 00  |........l.......|
00046cf0  a4 14 01 00 83 dd 00 00  78 3d 01 00 00 00 00 00  |........x=......|
00046d00  00 00 00 00 00 00 00 00  42 00 10 20 02 00 00 00  |........B.. ....|
00046d10  82 dd 00 00 78 3d 01 00  08 00 00 00 83 dd 00 00  |....x=..........|
00046d20  a5 14 01 00 08 00 00 00  b5 d6 00 00 a4 14 01 00  |................|
00046d30  08 00 00 00 b4 d6 00 00  77 3d 01 00 08 00 00 00  |........w=......|
00046d40  82 dd 00 00 78 3d 01 00  05 00 00 00 00 00 00 00  |....x=..........|
00046d50  44 41 54 41 20 01 00 00  66 6f 6e 74 72 65 63 0a  |DATA ...fontrec.|
00046d60  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
00046d70  69 6e 65 64 20 69 6e 20  3c 64 72 61 77 66 74 79  |ined in <drawfty|
00046d80  70 65 73 2e 68 3d 3e 64  72 61 77 66 74 79 70 65  |pes.h=>drawftype|
00046d90  73 3e 20 61 73 20 61 20  74 79 70 65 20 63 61 70  |s> as a type cap|
00046da0  61 62 6c 65 20 6f 66 20  68 6f 6c 64 69 6e 67 20  |able of holding |
00046db0  61 20 66 6f 6e 74 20 72  65 63 6f 72 64 20 28 49  |a font record (I|
00046dc0  20 74 68 69 6e 6b 29 2e  20 49 74 20 69 73 20 64  | think). It is d|
00046dd0  65 66 69 6e 65 64 20 61  73 20 74 68 65 20 66 6f  |efined as the fo|
00046de0  6c 6c 6f 77 69 6e 67 20  73 74 72 75 63 74 75 72  |llowing structur|
00046df0  65 3a 0a 0a 20 09 5c 7b  0a 20 09 20 09 69 6e 74  |e:.. .\{. . .int|
00046e00  09 74 79 70 65 66 61 63  65 3b 0a 20 09 20 09 69  |.typeface;. . .i|
00046e10  6e 74 09 74 79 70 65 73  69 7a 65 78 3b 0a 20 09  |nt.typesizex;. .|
00046e20  20 09 69 6e 74 09 74 79  70 65 73 69 7a 65 79 3b  | .int.typesizey;|
00046e30  0a 20 09 20 09 3c 64 72  61 77 5f 63 6f 6c 74 79  |. . .<draw_colty|
00046e40  70 3e 09 74 65 78 74 63  6f 6c 6f 75 72 3b 0a 20  |p>.textcolour;. |
00046e50  09 20 09 3c 64 72 61 77  5f 63 6f 6c 74 79 70 3e  |. .<draw_coltyp>|
00046e60  09 62 61 63 6b 67 72 6f  75 6e 64 3b 0a 20 09 7d  |.background;. .}|
00046e70  44 41 54 41 a5 01 00 00  66 6f 6e 74 73 65 6c 65  |DATA....fontsele|
00046e80  63 74 2e 68 0a 54 68 69  73 20 68 65 61 64 65 72  |ct.h.This header|
00046e90  20 70 72 6f 76 69 64 65  73 20 61 20 63 6f 6e 73  | provides a cons|
00046ea0  69 73 74 65 6e 74 20 69  6e 74 65 72 66 61 63 65  |istent interface|
00046eb0  20 74 6f 20 66 6f 6e 74  20 63 68 6f 6f 73 69 6e  | to font choosin|
00046ec0  67 2e 0a 0a 46 75 6e 63  74 69 6f 6e 73 3a 0a 0a  |g...Functions:..|
00046ed0  23 69 6e 64 65 6e 74 20  33 3b 74 61 62 6c 65 20  |#indent 3;table |
00046ee0  63 6f 6c 75 6d 6e 73 20  32 0a 3c 66 6f 6e 74 73  |columns 2.<fonts|
00046ef0  65 6c 65 63 74 5f 69 6e  69 74 3e 0a 3c 66 6f 6e  |elect_init>.<fon|
00046f00  74 73 65 6c 65 63 74 5f  63 6c 6f 73 65 64 6f 77  |tselect_closedow|
00046f10  6e 3e 0a 3c 66 6f 6e 74  73 65 6c 65 63 74 5f 63  |n>.<fontselect_c|
00046f20  6c 6f 73 65 77 69 6e 64  6f 77 73 3e 0a 3c 66 6f  |losewindows>.<fo|
00046f30  6e 74 73 65 6c 65 63 74  5f 73 65 6c 65 63 74 6f  |ntselect_selecto|
00046f40  72 3e 0a 3c 66 6f 6e 74  73 65 6c 65 63 74 5f 61  |r>.<fontselect_a|
00046f50  74 74 61 63 68 5f 6d 65  6e 75 3e 0a 23 65 6e 64  |ttach_menu>.#end|
00046f60  74 61 62 6c 65 3b 62 65  6c 6f 77 0a 7b 69 6e 64  |table;below.{ind|
00046f70  65 6e 74 7d 0a 4d 61 63  72 6f 73 3a 0a 0a 23 69  |ent}.Macros:..#i|
00046f80  6e 64 65 6e 74 20 34 3b  74 61 62 6c 65 20 63 6f  |ndent 4;table co|
00046f90  6c 75 6d 6e 73 20 32 0a  3c 66 6f 6e 74 73 65 6c  |lumns 2.<fontsel|
00046fa0  65 63 74 5f 52 45 4f 50  45 4e 3e 0a 3c 66 6f 6e  |ect_REOPEN>.<fon|
00046fb0  74 73 65 6c 65 63 74 5f  53 45 54 54 49 54 4c 45  |tselect_SETTITLE|
00046fc0  3e 0a 3c 66 6f 6e 74 73  65 6c 65 63 74 5f 53 45  |>.<fontselect_SE|
00046fd0  54 46 4f 4e 54 3e 0a 23  65 6e 64 74 61 62 6c 65  |TFONT>.#endtable|
00046fe0  3b 62 65 6c 6f 77 0a 7b  69 6e 64 65 6e 74 7d 0a  |;below.{indent}.|
00046ff0  54 79 70 65 73 3a 0a 7b  61 6c 69 67 6e 20 63 65  |Types:.{align ce|
00047000  6e 74 72 65 7d 0a 3c 66  6f 6e 74 73 65 6c 65 63  |ntre}.<fontselec|
00047010  74 5f 66 6e 3e 00 00 00  44 49 52 24 40 01 00 00  |t_fn>...DIR$@...|
00047020  40 01 00 00 58 71 04 00  46 ff ff ff 1b 49 ad 24  |@...Xq..F....I.$|
00047030  4d 01 00 00 13 00 00 00  00 00 00 00 61 74 74 61  |M...........atta|
00047040  63 68 5f 6d 65 6e 75 00  a8 72 04 00 46 ff ff ff  |ch_menu..r..F...|
00047050  4c 26 ad 24 cd 00 00 00  13 00 00 00 00 00 00 00  |L&.$............|
00047060  63 6c 6f 73 65 64 6f 77  6e 00 00 00 78 73 04 00  |closedown...xs..|
00047070  46 ff ff ff 9c 29 ad 24  bc 00 00 00 13 00 00 00  |F....).$........|
00047080  00 00 00 00 63 6c 6f 73  65 77 69 6e 64 6f 77 73  |....closewindows|
00047090  00 00 00 00 34 74 04 00  46 ff ff ff fd 5e ad 24  |....4t..F....^.$|
000470a0  1a 01 00 00 13 00 00 00  00 00 00 00 66 6e 00 00  |............fn..|
000470b0  50 75 04 00 46 ff ff ff  a8 22 ad 24 ce 00 00 00  |Pu..F....".$....|
000470c0  13 00 00 00 00 00 00 00  69 6e 69 74 00 00 00 00  |........init....|
000470d0  20 76 04 00 46 ff ff ff  3d 4e ad 24 66 00 00 00  | v..F...=N.$f...|
000470e0  13 00 00 00 00 00 00 00  52 45 4f 50 45 4e 00 00  |........REOPEN..|
000470f0  88 76 04 00 46 ff ff ff  62 34 ad 24 3c 02 00 00  |.v..F...b4.$<...|
00047100  13 00 00 00 00 00 00 00  73 65 6c 65 63 74 6f 72  |........selector|
00047110  00 00 00 00 c4 78 04 00  46 ff ff ff 88 52 ad 24  |.....x..F....R.$|
00047120  67 00 00 00 13 00 00 00  00 00 00 00 53 45 54 46  |g...........SETF|
00047130  4f 4e 54 00 2c 79 04 00  46 ff ff ff 4e 50 ad 24  |ONT.,y..F...NP.$|
00047140  68 00 00 00 13 00 00 00  00 00 00 00 53 45 54 54  |h...........SETT|
00047150  49 54 4c 45 00 00 00 00  44 41 54 41 4d 01 00 00  |ITLE....DATAM...|
00047160  66 6f 6e 74 73 65 6c 65  63 74 5f 61 74 74 61 63  |fontselect_attac|
00047170  68 5f 6d 65 6e 75 0a 53  79 6e 74 61 78 3a 09 3c  |h_menu.Syntax:.<|
00047180  42 4f 4f 4c 3e 20 66 6f  6e 74 73 65 6c 65 63 74  |BOOL> fontselect|
00047190  5f 61 74 74 61 63 68 5f  6d 65 6e 75 20 28 3c 6d  |_attach_menu (<m|
000471a0  65 6e 75 3e 20 6d 6e 2c  20 3c 65 76 65 6e 74 5f  |enu> mn, <event_|
000471b0  6d 65 6e 75 5f 70 72 6f  63 3e 20 70 72 6f 63 65  |menu_proc> proce|
000471c0  73 73 2c 20 76 6f 69 64  20 2a 68 61 6e 64 6c 65  |ss, void *handle|
000471d0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 66 6f 6e 74  |);.Header:.<font|
000471e0  73 65 6c 65 63 74 2e 68  3d 3e 66 6f 6e 74 73 65  |select.h=>fontse|
000471f0  6c 65 63 74 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |lect>..Returns:.|
00047200  3c 54 52 55 45 3e 20 69  66 20 73 75 63 63 65 73  |<TRUE> if succes|
00047210  73 66 75 6c 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |sful...This func|
00047220  74 69 6f 6e 20 61 74 74  61 63 68 65 73 20 61 20  |tion attaches a |
00047230  6d 65 6e 75 20 2f 6d 6e  2f 20 74 6f 20 61 6c 6c  |menu /mn/ to all|
00047240  20 66 6f 75 72 20 66 6f  6e 74 20 73 65 6c 65 63  | four font selec|
00047250  74 6f 72 20 77 69 6e 64  6f 77 73 2e 20 2f 70 72  |tor windows. /pr|
00047260  6f 63 65 73 73 2f 20 69  73 20 63 61 6c 6c 65 64  |ocess/ is called|
00047270  20 74 6f 20 68 61 6e 64  6c 65 20 6d 65 6e 75 20  | to handle menu |
00047280  73 65 6c 65 63 74 69 6f  6e 73 20 77 69 74 68 20  |selections with |
00047290  74 68 65 20 73 70 65 63  69 66 69 65 64 20 68 61  |the specified ha|
000472a0  6e 64 6c 65 2e 00 00 00  44 41 54 41 cd 00 00 00  |ndle....DATA....|
000472b0  66 6f 6e 74 73 65 6c 65  63 74 5f 63 6c 6f 73 65  |fontselect_close|
000472c0  64 6f 77 6e 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |down.Syntax:.voi|
000472d0  64 20 66 6f 6e 74 73 65  6c 65 63 74 5f 63 6c 6f  |d fontselect_clo|
000472e0  73 65 64 6f 77 6e 20 28  76 6f 69 64 29 3b 0a 48  |sedown (void);.H|
000472f0  65 61 64 65 72 3a 09 3c  66 6f 6e 74 73 65 6c 65  |eader:.<fontsele|
00047300  63 74 2e 68 3d 3e 66 6f  6e 74 73 65 6c 65 63 74  |ct.h=>fontselect|
00047310  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
00047320  20 63 6c 6f 73 65 73 20  74 68 65 20 66 6f 6e 74  | closes the font|
00047330  20 73 65 6c 65 63 74 6f  72 20 77 69 6e 64 6f 77  | selector window|
00047340  73 20 61 6e 64 20 66 72  65 65 73 20 61 6c 6c 20  |s and frees all |
00047350  6d 65 6d 6f 72 79 20 75  73 65 64 20 62 79 20 74  |memory used by t|
00047360  68 65 20 66 6f 6e 74 73  65 6c 65 63 74 20 73 79  |he fontselect sy|
00047370  73 74 65 6d 2e 00 00 00  44 41 54 41 bc 00 00 00  |stem....DATA....|
00047380  66 6f 6e 74 73 65 6c 65  63 74 5f 63 6c 6f 73 65  |fontselect_close|
00047390  77 69 6e 64 6f 77 73 0a  53 79 6e 74 61 78 3a 09  |windows.Syntax:.|
000473a0  76 6f 69 64 20 66 6f 6e  74 73 65 6c 65 63 74 5f  |void fontselect_|
000473b0  63 6c 6f 73 65 77 69 6e  64 6f 77 73 20 28 76 6f  |closewindows (vo|
000473c0  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 66 6f  |id);.Header:.<fo|
000473d0  6e 74 73 65 6c 65 63 74  2e 68 3d 3e 66 6f 6e 74  |ntselect.h=>font|
000473e0  73 65 6c 65 63 74 3e 0a  0a 54 68 69 73 20 66 75  |select>..This fu|
000473f0  6e 63 74 69 6f 6e 20 63  6c 6f 73 65 73 20 74 68  |nction closes th|
00047400  65 20 66 6f 6e 74 20 73  65 6c 65 63 74 6f 72 20  |e font selector |
00047410  77 69 6e 64 6f 77 73 20  61 6e 64 20 75 6e 61 74  |windows and unat|
00047420  74 61 63 68 65 73 20 61  6e 79 20 68 61 6e 64 6c  |taches any handl|
00047430  65 72 73 2e 44 41 54 41  1a 01 00 00 66 6f 6e 74  |ers.DATA....font|
00047440  73 65 6c 65 63 74 5f 66  6e 0a 54 68 69 73 20 74  |select_fn.This t|
00047450  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
00047460  6e 20 3c 66 6f 6e 74 73  65 6c 65 63 74 2e 68 3d  |n <fontselect.h=|
00047470  3e 66 6f 6e 74 73 65 6c  65 63 74 3e 2e 20 49 74  |>fontselect>. It|
00047480  20 64 6f 65 73 20 6e 6f  74 20 73 65 65 6d 20 74  | does not seem t|
00047490  6f 20 62 65 20 64 6f 63  75 6d 65 6e 74 65 64 20  |o be documented |
000474a0  61 6e 64 20 49 20 77 6f  6e 64 65 72 20 69 66 20  |and I wonder if |
000474b0  41 63 6f 72 6e 20 6b 6e  6f 77 20 77 68 61 74 20  |Acorn know what |
000474c0  69 74 27 73 20 75 73 65  64 20 66 6f 72 3f 20 49  |it's used for? I|
000474d0  74 20 69 73 20 61 20 66  75 6e 63 74 69 6f 6e 20  |t is a function |
000474e0  6f 66 20 74 68 65 20 66  6f 72 6d 3a 0a 0a 7b 66  |of the form:..{f|
000474f0  43 6f 64 65 3b 61 6c 69  67 6e 20 63 65 6e 74 72  |Code;align centr|
00047500  65 7d 3c 42 4f 4f 4c 3e  20 6d 79 66 75 6e 63 20  |e}<BOOL> myfunc |
00047510  28 63 68 61 72 20 2a 6e  61 6d 65 2c 20 64 6f 75  |(char *name, dou|
00047520  62 6c 65 20 77 69 64 74  68 2c 20 64 6f 75 62 6c  |ble width, doubl|
00047530  65 20 68 65 69 67 68 74  2c 20 3c 77 69 6d 70 5f  |e height, <wimp_|
00047540  65 76 65 6e 74 73 74 72  3e 20 2a 65 29 3b 00 00  |eventstr> *e);..|
00047550  44 41 54 41 ce 00 00 00  66 6f 6e 74 73 65 6c 65  |DATA....fontsele|
00047560  63 74 5f 69 6e 69 74 0a  53 79 6e 74 61 78 3a 09  |ct_init.Syntax:.|
00047570  69 6e 74 20 66 6f 6e 74  73 65 6c 65 63 74 5f 69  |int fontselect_i|
00047580  6e 69 74 20 28 76 6f 69  64 29 3b 0a 48 65 61 64  |nit (void);.Head|
00047590  65 72 3a 09 3c 66 6f 6e  74 73 65 6c 65 63 74 2e  |er:.<fontselect.|
000475a0  68 3d 3e 66 6f 6e 74 73  65 6c 65 63 74 3e 0a 0a  |h=>fontselect>..|
000475b0  52 65 74 75 72 6e 73 3a  09 3c 54 52 55 45 3e 20  |Returns:.<TRUE> |
000475c0  69 66 20 73 75 63 63 65  73 73 66 75 6c 2e 0a 0a  |if successful...|
000475d0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 72 65  |This function re|
000475e0  61 64 73 20 69 6e 20 74  68 65 20 66 6f 6e 74 20  |ads in the font |
000475f0  6c 69 73 74 20 61 6e 64  20 69 6e 69 74 69 61 6c  |list and initial|
00047600  69 73 65 73 20 74 68 65  20 66 6f 6e 74 20 73 65  |ises the font se|
00047610  6c 65 63 74 6f 72 20 77  69 6e 64 6f 77 2e 00 00  |lector window...|
00047620  44 41 54 41 66 00 00 00  66 6f 6e 74 73 65 6c 65  |DATAf...fontsele|
00047630  63 74 5f 52 45 4f 50 45  4e 0a 54 68 69 73 20 6d  |ct_REOPEN.This m|
00047640  61 63 72 6f 20 69 73 20  64 65 66 69 6e 65 64 20  |acro is defined |
00047650  69 6e 20 3c 66 6f 6e 74  73 65 6c 65 63 74 2e 68  |in <fontselect.h|
00047660  3d 3e 66 6f 6e 74 73 65  6c 65 63 74 3e 2e 20 49  |=>fontselect>. I|
00047670  74 20 69 73 20 64 65 66  69 6e 65 64 20 61 73 20  |t is defined as |
00047680  30 78 30 30 31 2e 00 00  44 41 54 41 3c 02 00 00  |0x001...DATA<...|
00047690  66 6f 6e 74 73 65 6c 65  63 74 5f 73 65 6c 65 63  |fontselect_selec|
000476a0  74 6f 72 0a 53 79 6e 74  61 78 3a 09 69 6e 74 20  |tor.Syntax:.int |
000476b0  66 6f 6e 74 73 65 6c 65  63 74 5f 73 65 6c 65 63  |fontselect_selec|
000476c0  74 6f 72 20 28 63 68 61  72 20 2a 74 69 74 6c 65  |tor (char *title|
000476d0  2c 20 69 6e 74 20 66 6c  61 67 73 2c 20 63 68 61  |, int flags, cha|
000476e0  72 20 2a 6e 61 6d 65 2c  20 64 6f 75 62 6c 65 20  |r *name, double |
000476f0  77 69 64 74 68 2c 20 64  6f 75 62 6c 65 20 68 65  |width, double he|
00047700  69 67 68 74 2c 20 3c 66  6f 6e 74 73 65 6c 65 63  |ight, <fontselec|
00047710  74 5f 66 6e 3e 20 75 6b  5f 69 63 6f 6e 29 3b 0a  |t_fn> uk_icon);.|
00047720  48 65 61 64 65 72 3a 09  3c 66 6f 6e 74 73 65 6c  |Header:.<fontsel|
00047730  65 63 74 2e 68 3d 3e 66  6f 6e 74 73 65 6c 65 63  |ect.h=>fontselec|
00047740  74 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 57 69 6e  |t>..Returns:.Win|
00047750  64 6f 77 20 68 61 6e 64  6c 65 2c 20 6f 72 20 30  |dow handle, or 0|
00047760  20 69 66 20 75 6e 73 75  63 63 65 73 73 66 75 6c  | if unsuccessful|
00047770  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00047780  20 6f 70 65 6e 73 20 6f  72 20 72 65 6f 70 65 6e  | opens or reopen|
00047790  73 20 74 68 65 20 66 6f  6e 74 20 63 68 6f 6f 73  |s the font choos|
000477a0  65 72 20 77 69 6e 64 6f  77 2e 0a 0a 46 6c 61 67  |er window...Flag|
000477b0  73 3a 7b 74 61 62 7d 0a  8f 09 49 66 20 3c 66 6f  |s:{tab}...If <fo|
000477c0  6e 74 73 65 6c 65 63 74  5f 53 45 54 46 4f 4e 54  |ntselect_SETFONT|
000477d0  3e 20 69 73 20 73 65 74  20 74 68 65 6e 20 74 68  |> is set then th|
000477e0  65 20 66 6f 6e 74 20 6e  61 6d 65 2c 20 77 69 64  |e font name, wid|
000477f0  74 68 20 61 6e 64 20 68  65 69 67 68 74 20 61 72  |th and height ar|
00047800  65 20 73 65 74 20 61 70  70 72 6f 70 72 69 61 74  |e set appropriat|
00047810  65 6c 79 2e 0a 8f 09 49  66 20 3c 66 6f 6e 74 73  |ely....If <fonts|
00047820  65 6c 65 63 74 5f 53 45  54 54 49 54 4c 45 3e 20  |elect_SETTITLE> |
00047830  69 73 20 73 65 74 20 74  68 65 6e 20 74 68 65 20  |is set then the |
00047840  74 69 74 6c 65 20 69 73  20 73 65 74 20 61 70 70  |title is set app|
00047850  72 6f 70 72 69 61 74 65  6c 79 2e 0a 8f 09 49 66  |ropriately....If|
00047860  20 3c 66 6f 6e 74 73 65  6c 65 63 74 5f 52 45 4f  | <fontselect_REO|
00047870  50 45 4e 3e 20 69 73 20  73 65 74 20 74 68 65 6e  |PEN> is set then|
00047880  20 74 68 65 20 77 69 6e  64 6f 77 20 77 69 6c 6c  | the window will|
00047890  20 6f 6e 6c 79 20 6f 70  65 6e 20 69 66 20 69 74  | only open if it|
000478a0  20 61 6c 72 65 61 64 79  20 69 73 20 6f 70 65 6e  | already is open|
000478b0  20 28 75 73 65 20 66 6f  72 20 75 70 64 61 74 69  | (use for updati|
000478c0  6e 67 29 2e 44 41 54 41  67 00 00 00 66 6f 6e 74  |ng).DATAg...font|
000478d0  73 65 6c 65 63 74 5f 53  45 54 46 4f 4e 54 0a 54  |select_SETFONT.T|
000478e0  68 69 73 20 6d 61 63 72  6f 20 69 73 20 64 65 66  |his macro is def|
000478f0  69 6e 65 64 20 69 6e 20  3c 66 6f 6e 74 73 65 6c  |ined in <fontsel|
00047900  65 63 74 2e 68 3d 3e 66  6f 6e 74 73 65 6c 65 63  |ect.h=>fontselec|
00047910  74 3e 2e 20 49 74 20 69  73 20 64 65 66 69 6e 65  |t>. It is define|
00047920  64 20 61 73 20 30 78 30  30 34 2e 00 44 41 54 41  |d as 0x004..DATA|
00047930  68 00 00 00 66 6f 6e 74  73 65 6c 65 63 74 5f 53  |h...fontselect_S|
00047940  45 54 54 49 54 4c 45 0a  54 68 69 73 20 6d 61 63  |ETTITLE.This mac|
00047950  72 6f 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |ro is defined in|
00047960  20 3c 66 6f 6e 74 73 65  6c 65 63 74 2e 68 3d 3e  | <fontselect.h=>|
00047970  66 6f 6e 74 73 65 6c 65  63 74 3e 2e 20 49 74 20  |fontselect>. It |
00047980  69 73 20 64 65 66 69 6e  65 64 20 61 73 20 30 78  |is defined as 0x|
00047990  30 30 32 2e 44 41 54 41  23 01 00 00 66 6f 70 65  |002.DATA#...fope|
000479a0  6e 0a 53 79 6e 74 61 78  3a 09 3c 46 49 4c 45 3e  |n.Syntax:.<FILE>|
000479b0  20 2a 66 6f 70 65 6e 20  28 63 68 61 72 20 2a 66  | *fopen (char *f|
000479c0  69 6c 65 6e 61 6d 65 2c  20 63 68 61 72 20 2a 6d  |ilename, char *m|
000479d0  6f 64 65 29 3b 0a 48 65  61 64 65 72 3a 09 3c 73  |ode);.Header:.<s|
000479e0  74 64 69 6f 2e 68 3d 3e  73 74 64 69 6f 3e 0a 0a  |tdio.h=>stdio>..|
000479f0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00047a00  20 74 6f 20 74 68 65 20  73 74 72 65 61 6d 2c 20  | to the stream, |
00047a10  6f 72 20 61 20 6e 75 6c  6c 20 70 6f 69 6e 74 65  |or a null pointe|
00047a20  72 20 69 66 20 74 68 65  20 66 69 6c 65 20 63 61  |r if the file ca|
00047a30  6e 6e 6f 74 20 62 65 20  6f 70 65 6e 65 64 2e 0a  |nnot be opened..|
00047a40  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 61  |.This function a|
00047a50  74 74 65 6d 70 74 73 20  74 6f 20 6f 70 65 6e 20  |ttempts to open |
00047a60  74 68 65 20 66 69 6c 65  20 73 70 65 63 69 66 69  |the file specifi|
00047a70  65 64 20 69 6e 20 2f 66  69 6c 65 6e 61 6d 65 2f  |ed in /filename/|
00047a80  20 66 6f 72 20 72 61 6e  64 6f 6d 20 61 63 63 65  | for random acce|
00047a90  73 73 20 61 63 63 6f 72  64 69 6e 67 20 74 6f 20  |ss according to |
00047aa0  74 68 65 20 3c 6d 6f 64  65 3d 3e 66 69 6c 65 5f  |the <mode=>file_|
00047ab0  6d 6f 64 65 5f 3e 2e 00  44 49 52 24 28 00 00 00  |mode_>..DIR$(...|
00047ac0  28 00 00 00 e0 7a 04 00  46 ff ff ff bb 7e c4 22  |(....z..F....~."|
00047ad0  f8 00 00 00 13 00 00 00  00 00 00 00 4d 41 58 00  |............MAX.|
00047ae0  44 41 54 41 f8 00 00 00  46 4f 50 45 4e 5f 4d 41  |DATA....FOPEN_MA|
00047af0  58 0a 23 50 61 72 65 6e  74 20 73 74 64 69 6f 0a  |X.#Parent stdio.|
00047b00  54 68 65 20 6d 61 63 72  6f 20 46 4f 50 45 4e 5f  |The macro FOPEN_|
00047b10  4d 41 58 20 69 73 20 64  65 66 69 6e 65 64 20 69  |MAX is defined i|
00047b20  6e 20 3c 73 74 64 69 6f  2e 68 3d 3e 73 74 64 69  |n <stdio.h=>stdi|
00047b30  6f 3e 20 61 73 20 74 68  65 20 6e 75 6d 62 65 72  |o> as the number|
00047b40  20 6f 66 20 66 69 6c 65  73 20 74 68 61 74 20 63  | of files that c|
00047b50  61 6e 20 62 65 20 6f 70  65 6e 65 64 20 73 69 6d  |an be opened sim|
00047b60  75 6c 74 61 6e 65 6f 75  73 6c 79 2e 20 49 74 20  |ultaneously. It |
00047b70  6d 61 79 20 62 65 20 70  6f 73 73 69 62 6c 65 20  |may be possible |
00047b80  74 6f 20 6f 70 65 6e 20  6d 6f 72 65 20 66 69 6c  |to open more fil|
00047b90  65 73 20 74 68 61 6e 20  74 68 69 73 20 6e 75 6d  |es than this num|
00047ba0  62 65 72 2c 20 62 75 74  20 64 61 74 61 20 6d 61  |ber, but data ma|
00047bb0  79 20 62 65 20 6c 6f 73  74 2e 20 49 6e 20 45 61  |y be lost. In Ea|
00047bc0  73 79 a0 43 20 69 74 20  69 73 20 64 65 66 69 6e  |sy.C it is defin|
00047bd0  65 64 20 61 73 20 38 2e  44 41 54 41 29 04 00 00  |ed as 8.DATA)...|
00047be0  66 6f 72 0a 54 68 69 73  20 63 6f 6d 6d 61 6e 64  |for.This command|
00047bf0  20 64 65 66 69 6e 65 73  20 61 6e 20 69 6e 74 65  | defines an inte|
00047c00  72 61 74 69 76 65 20 6c  6f 6f 70 2e 20 49 74 20  |rative loop. It |
00047c10  68 61 73 20 74 68 65 20  67 65 6e 65 72 61 6c 20  |has the general |
00047c20  66 6f 72 6d 3a 0a 0a 7b  66 43 6f 64 65 3b 61 6c  |form:..{fCode;al|
00047c30  69 67 6e 20 63 65 6e 74  72 65 7d 66 6f 72 20 28  |ign centre}for (|
00047c40  5c 3c 69 6e 69 74 3e 3b  20 5c 3c 63 6f 6e 64 3e  |\<init>; \<cond>|
00047c50  3b 20 5c 3c 69 74 65 72  3e 29 20 5c 3c 73 74 61  |; \<iter>) \<sta|
00047c60  74 65 6d 65 6e 74 3e 3b  7b 66 3b 61 6c 69 67 6e  |tement>;{f;align|
00047c70  7d 0a 0a 5c 3c 69 6e 69  74 3e 09 69 73 20 61 6e  |}..\<init>.is an|
00047c80  20 69 6e 69 74 69 61 6c  69 73 61 74 69 6f 6e 20  | initialisation |
00047c90  73 74 61 74 65 6d 65 6e  74 2e 20 49 74 20 69 73  |statement. It is|
00047ca0  20 63 61 6c 6c 65 64 20  6f 6e 63 65 20 77 68 65  | called once whe|
00047cb0  6e 20 74 68 65 20 66 6f  72 20 73 74 61 74 65 6d  |n the for statem|
00047cc0  65 6e 74 20 69 73 20 65  6e 63 6f 75 6e 74 65 72  |ent is encounter|
00047cd0  65 64 2e 20 4d 6f 72 65  20 74 68 61 6e 20 6f 6e  |ed. More than on|
00047ce0  65 20 73 74 61 74 65 6d  65 6e 74 20 63 61 6e 20  |e statement can |
00047cf0  62 65 20 75 73 65 64 2c  20 73 65 70 61 72 61 74  |be used, separat|
00047d00  65 64 20 62 79 20 63 6f  6d 6d 61 73 2e 0a 0a 5c  |ed by commas...\|
00047d10  3c 63 6f 6e 64 3e 09 69  73 20 61 20 63 6f 6e 64  |<cond>.is a cond|
00047d20  69 74 69 6f 6e 2e 20 49  74 20 69 73 20 65 76 61  |ition. It is eva|
00047d30  6c 75 61 74 65 64 20 65  61 63 68 20 74 69 6d 65  |luated each time|
00047d40  20 62 65 66 6f 72 65 20  65 78 65 63 75 74 69 6e  | before executin|
00047d50  67 20 74 68 65 20 5c 3c  73 74 61 74 65 6d 65 6e  |g the \<statemen|
00047d60  74 3e 2e 20 49 66 20 69  74 20 65 76 61 6c 75 61  |t>. If it evalua|
00047d70  74 65 73 20 74 6f 20 30  2c 20 6f 72 20 66 61 6c  |tes to 0, or fal|
00047d80  73 65 2c 20 74 68 65 6e  20 74 68 65 20 5c 3c 73  |se, then the \<s|
00047d90  74 61 74 65 6d 65 6e 74  3e 20 69 73 20 6e 6f 74  |tatement> is not|
00047da0  20 65 78 65 63 75 74 65  64 20 61 6e 64 20 74 68  | executed and th|
00047db0  65 20 6e 65 78 74 20 63  6f 6d 6d 61 6e 64 20 69  |e next command i|
00047dc0  73 20 65 78 65 63 75 74  65 64 20 2d 20 74 68 65  |s executed - the|
00047dd0  20 66 6f 72 20 6c 6f 6f  70 20 69 73 20 66 69 6e  | for loop is fin|
00047de0  69 73 68 65 64 2e 0a 0a  5c 3c 69 74 65 72 3e 09  |ished...\<iter>.|
00047df0  69 73 20 65 78 65 63 75  74 65 64 20 61 66 74 65  |is executed afte|
00047e00  72 20 65 61 63 68 20 74  69 6d 65 20 74 68 65 20  |r each time the |
00047e10  6c 6f 6f 70 20 69 73 20  65 78 65 63 75 74 65 64  |loop is executed|
00047e20  2e 20 4d 6f 72 65 20 74  68 61 6e 20 6f 6e 65 20  |. More than one |
00047e30  73 74 61 74 65 6d 65 6e  74 20 63 61 6e 20 62 65  |statement can be|
00047e40  20 75 73 65 64 2c 20 73  65 70 61 72 61 74 65 64  | used, separated|
00047e50  20 62 79 20 63 6f 6d 6d  61 73 2e 0a 0a 5c 3c 73  | by commas...\<s|
00047e60  74 61 74 65 6d 65 6e 74  3e 09 69 73 20 74 68 65  |tatement>.is the|
00047e70  20 63 6f 6d 6d 61 6e 64  20 65 78 65 63 75 74 65  | command execute|
00047e80  64 20 77 69 74 68 69 6e  20 74 68 65 20 6c 6f 6f  |d within the loo|
00047e90  70 2e 20 49 74 20 63 61  6e 20 62 65 20 61 20 63  |p. It can be a c|
00047ea0  6f 6d 70 6f 75 6e 64 20  73 74 61 74 65 6d 65 6e  |ompound statemen|
00047eb0  74 20 69 65 20 73 65 76  65 72 61 6c 20 73 74 61  |t ie several sta|
00047ec0  74 65 6d 65 6e 74 73 20  65 6e 63 6c 6f 73 65 64  |tements enclosed|
00047ed0  20 69 6e 20 62 72 61 63  65 73 20 5c 7b 7d 20 28  | in braces \{} (|
00047ee0  69 6e 20 77 68 69 63 68  20 63 61 73 65 20 74 68  |in which case th|
00047ef0  65 72 65 20 69 73 20 6e  6f 20 66 69 6e 61 6c 20  |ere is no final |
00047f00  73 65 6d 69 63 6f 6c 6f  6e 29 2c 20 6f 72 20 69  |semicolon), or i|
00047f10  74 20 63 61 6e 20 62 65  20 6e 6f 74 68 69 6e 67  |t can be nothing|
00047f20  20 69 65 20 61 6c 6c 20  74 68 65 20 77 6f 72 6b  | ie all the work|
00047f30  20 69 73 20 64 6f 6e 65  20 69 6e 20 74 68 65 20  | is done in the |
00047f40  66 6f 72 20 73 74 61 74  65 6d 65 6e 74 2e 0a 0a  |for statement...|
00047f50  41 73 20 61 6e 20 65 78  61 6d 70 6c 65 2c 20 74  |As an example, t|
00047f60  68 69 73 20 6c 6f 6f 70  20 63 6f 75 6e 74 73 20  |his loop counts |
00047f70  66 72 6f 6d 20 31 20 74  6f 20 31 30 2c 20 70 72  |from 1 to 10, pr|
00047f80  69 6e 74 69 6e 67 20 65  61 63 68 20 6e 75 6d 62  |inting each numb|
00047f90  65 72 3a 0a 0a 7b 66 43  6f 64 65 3b 61 6c 69 67  |er:..{fCode;alig|
00047fa0  6e 20 63 65 6e 74 72 65  7d 66 6f 72 20 28 69 3d  |n centre}for (i=|
00047fb0  31 3b 69 5c 3c 3d 31 30  3b 69 2b 2b 29 20 3c 70  |1;i\<=10;i++) <p|
00047fc0  72 69 6e 74 66 3e 28 22  25 64 5c 6e 22 2c 69 29  |rintf>("%d\n",i)|
00047fd0  3b 7b 66 3b 61 6c 69 67  6e 7d 0a 0a 4d 75 63 68  |;{f;align}..Much|
00047fe0  20 6d 6f 72 65 20 63 6f  6d 70 6c 65 78 20 6c 6f  | more complex lo|
00047ff0  6f 70 73 20 61 72 65 20  70 6f 73 73 69 62 6c 65  |ops are possible|
00048000  21 00 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |!...DIR$,...,...|
00048010  30 80 04 00 46 fd ff ff  32 da c2 22 eb 00 00 00  |0...F...2.."....|
00048020  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00048030  44 41 54 41 eb 00 00 00  46 6f 72 6d 61 74 74 65  |DATA....Formatte|
00048040  64 20 49 2f 4f 20 46 75  6e 63 74 69 6f 6e 73 0a  |d I/O Functions.|
00048050  23 50 61 72 65 6e 74 20  73 74 64 69 6f 0a 54 68  |#Parent stdio.Th|
00048060  65 73 65 20 66 75 6e 63  74 69 6f 6e 73 20 72 65  |ese functions re|
00048070  61 64 20 61 6e 64 20 77  72 69 74 65 2c 20 66 72  |ad and write, fr|
00048080  6f 6d 20 61 6e 79 20 73  74 72 65 61 6d 2c 20 66  |om any stream, f|
00048090  6f 72 6d 61 74 74 65 64  20 73 65 71 75 65 6e 63  |ormatted sequenc|
000480a0  65 73 20 6f 66 20 76 61  6c 75 65 73 2e 0a 0a 23  |es of values...#|
000480b0  54 61 62 6c 65 20 33 20  31 36 0a 3c 70 72 69 6e  |Table 3 16.<prin|
000480c0  74 66 3e 0a 3c 66 70 72  69 6e 74 66 3e 0a 3c 73  |tf>.<fprintf>.<s|
000480d0  70 72 69 6e 74 66 3e 0a  3c 73 63 61 6e 66 3e 0a  |printf>.<scanf>.|
000480e0  3c 66 73 63 61 6e 66 3e  0a 3c 73 73 63 61 6e 66  |<fscanf>.<sscanf|
000480f0  3e 0a 3c 76 66 70 72 69  6e 74 66 3e 0a 3c 76 70  |>.<vfprintf>.<vp|
00048100  72 69 6e 74 66 3e 0a 3c  76 73 70 72 69 6e 74 66  |rintf>.<vsprintf|
00048110  3e 0a 23 45 6e 64 54 61  62 6c 65 00 44 49 52 24  |>.#EndTable.DIR$|
00048120  28 00 00 00 28 00 00 00  44 81 04 00 46 ff ff ff  |(...(...D...F...|
00048130  f8 af c4 22 9f 00 00 00  13 00 00 00 00 00 00 00  |..."............|
00048140  74 00 00 00 44 41 54 41  9f 00 00 00 66 70 6f 73  |t...DATA....fpos|
00048150  5f 74 0a 54 68 65 20 74  79 70 65 20 7b 2f 7d 66  |_t.The type {/}f|
00048160  70 6f 73 5f 74 7b 2f 7d  20 69 73 20 64 65 66 69  |pos_t{/} is defi|
00048170  6e 65 64 20 69 6e 20 3c  73 74 64 69 6f 2e 68 3d  |ned in <stdio.h=|
00048180  3e 73 74 64 69 6f 3e 20  61 73 20 61 6e 20 6f 62  |>stdio> as an ob|
00048190  6a 65 63 74 20 63 61 70  61 62 6c 65 20 6f 66 20  |ject capable of |
000481a0  68 6f 6c 64 69 6e 67 20  61 6e 79 20 66 69 6c 65  |holding any file|
000481b0  20 70 6f 73 69 74 69 6f  6e 2e 20 49 6e 20 45 61  | position. In Ea|
000481c0  73 79 20 43 20 69 74 20  69 73 20 64 65 66 69 6e  |sy C it is defin|
000481d0  65 64 20 61 73 20 61 20  2f 6c 6f 6e 67 20 69 6e  |ed as a /long in|
000481e0  74 2f 2e 00 44 41 54 41  7d 01 00 00 66 70 72 69  |t/..DATA}...fpri|
000481f0  6e 74 66 0a 53 79 6e 74  61 78 3a 09 69 6e 74 20  |ntf.Syntax:.int |
00048200  66 70 72 69 6e 74 66 20  28 3c 46 49 4c 45 3e 20  |fprintf (<FILE> |
00048210  2a 73 74 72 65 61 6d 2c  20 63 68 61 72 20 2a 66  |*stream, char *f|
00048220  6f 72 6d 61 74 2c 20 2e  2e 2e 29 3b 0a 48 65 61  |ormat, ...);.Hea|
00048230  64 65 72 3a 09 3c 73 74  64 69 6f 2e 68 3d 3e 73  |der:.<stdio.h=>s|
00048240  74 64 69 6f 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |tdio>..Returns:.|
00048250  54 68 65 20 6e 75 6d 62  65 72 20 6f 66 20 63 68  |The number of ch|
00048260  61 72 61 63 74 65 72 73  20 77 72 69 74 74 65 6e  |aracters written|
00048270  2c 20 6f 72 20 61 20 6e  65 67 61 74 69 76 65 20  |, or a negative |
00048280  76 61 6c 75 65 20 69 66  20 74 68 65 72 65 20 77  |value if there w|
00048290  61 73 20 61 6e 20 65 72  72 6f 72 2e 0a 0a 54 68  |as an error...Th|
000482a0  69 73 20 66 75 6e 63 74  69 6f 6e 20 77 72 69 74  |is function writ|
000482b0  65 73 20 6f 75 74 70 75  74 20 74 6f 20 74 68 65  |es output to the|
000482c0  20 73 74 72 65 61 6d 20  75 6e 64 65 72 20 63 6f  | stream under co|
000482d0  6e 74 72 6f 6c 20 6f 66  20 74 68 65 20 3c 66 6f  |ntrol of the <fo|
000482e0  72 6d 61 74 20 73 74 72  69 6e 67 3d 3e 70 66 6f  |rmat string=>pfo|
000482f0  72 6d 5f 3e 2e 20 49 66  20 74 68 65 72 65 20 61  |rm_>. If there a|
00048300  72 65 20 6d 6f 72 65 20  61 72 67 75 6d 65 6e 74  |re more argument|
00048310  73 20 74 68 61 6e 20 63  6f 6e 76 65 72 73 69 6f  |s than conversio|
00048320  6e 20 73 70 65 63 69 66  69 63 61 74 69 6f 6e 73  |n specifications|
00048330  2c 20 74 68 65 20 65 78  74 72 61 20 61 72 67 75  |, the extra argu|
00048340  6d 65 6e 74 73 20 61 72  65 20 65 76 61 6c 75 61  |ments are evalua|
00048350  74 65 64 20 62 75 74 20  6e 6f 74 20 75 73 65 64  |ted but not used|
00048360  2e 00 00 00 44 41 54 41  c1 00 00 00 66 70 75 74  |....DATA....fput|
00048370  63 0a 53 79 6e 74 61 78  3a 09 69 6e 74 20 66 70  |c.Syntax:.int fp|
00048380  75 74 63 20 28 69 6e 74  20 63 2c 20 3c 46 49 4c  |utc (int c, <FIL|
00048390  45 3e 20 2a 73 74 72 65  61 6d 29 3b 0a 48 65 61  |E> *stream);.Hea|
000483a0  64 65 72 3a 09 3c 73 74  64 69 6f 2e 68 3d 3e 73  |der:.<stdio.h=>s|
000483b0  74 64 69 6f 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |tdio>..Returns:.|
000483c0  63 2c 20 6f 72 20 3c 45  4f 46 3e 20 69 66 20 74  |c, or <EOF> if t|
000483d0  68 65 72 65 20 69 73 20  61 6e 20 65 72 72 6f 72  |here is an error|
000483e0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000483f0  20 77 72 69 74 65 73 20  74 68 65 20 63 68 61 72  | writes the char|
00048400  61 63 74 65 72 20 69 6e  20 2f 63 2f 20 74 6f 20  |acter in /c/ to |
00048410  74 68 65 20 73 74 72 65  61 6d 20 73 70 65 63 69  |the stream speci|
00048420  66 69 65 64 2e 00 00 00  44 41 54 41 ed 00 00 00  |fied....DATA....|
00048430  66 70 75 74 73 0a 53 79  6e 74 61 78 3a 09 69 6e  |fputs.Syntax:.in|
00048440  74 20 66 70 75 74 73 20  28 63 68 61 72 20 2a 73  |t fputs (char *s|
00048450  74 72 2c 20 3c 46 49 4c  45 3e 20 2a 73 74 72 65  |tr, <FILE> *stre|
00048460  61 6d 29 3b 0a 48 65 61  64 65 72 3a 09 3c 73 74  |am);.Header:.<st|
00048470  64 69 6f 2e 68 3d 3e 73  74 64 69 6f 3e 0a 0a 52  |dio.h=>stdio>..R|
00048480  65 74 75 72 6e 73 3a 09  3c 45 4f 46 3e 20 69 66  |eturns:.<EOF> if|
00048490  20 74 68 65 72 65 20 69  73 20 61 6e 20 65 72 72  | there is an err|
000484a0  6f 72 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |or...This functi|
000484b0  6f 6e 20 77 72 69 74 65  73 20 74 68 65 20 73 74  |on writes the st|
000484c0  72 69 6e 67 20 70 6f 69  6e 74 65 64 20 74 6f 20  |ring pointed to |
000484d0  62 79 20 2f 73 74 72 2f  20 74 6f 20 74 68 65 20  |by /str/ to the |
000484e0  73 74 72 65 61 6d 20 73  70 65 63 69 66 69 65 64  |stream specified|
000484f0  2e 20 54 68 65 20 6e 75  6c 6c 20 74 65 72 6d 69  |. The null termi|
00048500  6e 61 74 6f 72 20 69 73  20 6e 6f 74 20 77 72 69  |nator is not wri|
00048510  74 74 65 6e 2e 00 00 00  44 41 54 41 33 01 00 00  |tten....DATA3...|
00048520  66 72 65 61 64 0a 53 79  6e 74 61 78 3a 09 3c 73  |fread.Syntax:.<s|
00048530  69 7a 65 5f 74 3e 20 66  72 65 61 64 20 28 76 6f  |ize_t> fread (vo|
00048540  69 64 20 2a 70 74 72 2c  20 73 69 7a 65 5f 74 20  |id *ptr, size_t |
00048550  73 69 7a 65 2c 20 73 69  7a 65 5f 74 20 6e 6f 62  |size, size_t nob|
00048560  6a 2c 20 3c 46 49 4c 45  3e 20 2a 73 74 72 65 61  |j, <FILE> *strea|
00048570  6d 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 74 64  |m);.Header:.<std|
00048580  69 6f 2e 68 3d 3e 73 74  64 69 6f 3e 0a 0a 52 65  |io.h=>stdio>..Re|
00048590  74 75 72 6e 73 3a 09 54  68 65 20 6e 75 6d 62 65  |turns:.The numbe|
000485a0  72 20 6f 66 20 6f 62 6a  65 63 74 73 20 73 75 63  |r of objects suc|
000485b0  63 65 73 73 66 75 6c 6c  79 20 72 65 61 64 2e 0a  |cessfully read..|
000485c0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
000485d0  65 61 64 73 20 2f 6e 6f  62 6a 2f 20 6f 62 6a 65  |eads /nobj/ obje|
000485e0  63 74 73 20 6f 66 20 73  69 7a 65 20 73 70 65 63  |cts of size spec|
000485f0  69 66 69 65 64 20 62 79  20 2f 73 69 7a 65 2f 20  |ified by /size/ |
00048600  69 6e 74 6f 20 74 68 65  20 61 72 72 61 79 20 70  |into the array p|
00048610  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 2f 70 74  |ointed to by /pt|
00048620  72 2f 2c 20 66 72 6f 6d  20 74 68 65 20 73 74 72  |r/, from the str|
00048630  65 61 6d 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |eam pointed to b|
00048640  79 20 2f 73 74 72 65 61  6d 2f 2e 00 44 41 54 41  |y /stream/..DATA|
00048650  db 00 00 00 66 72 65 65  0a 53 79 6e 74 61 78 3a  |....free.Syntax:|
00048660  09 76 6f 69 64 20 66 72  65 65 20 28 76 6f 69 64  |.void free (void|
00048670  20 2a 70 74 72 29 3b 0a  48 65 61 64 65 72 3a 09  | *ptr);.Header:.|
00048680  3c 73 74 64 6c 69 62 2e  68 3d 3e 73 74 64 6c 69  |<stdlib.h=>stdli|
00048690  62 3e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |b>..This functio|
000486a0  6e 20 66 72 65 65 73 20  6d 65 6d 6f 72 79 20 61  |n frees memory a|
000486b0  6c 6c 6f 63 61 74 65 64  20 62 79 20 65 69 74 68  |llocated by eith|
000486c0  65 72 20 3c 63 61 6c 6c  6f 63 3e 2c 20 3c 6d 61  |er <calloc>, <ma|
000486d0  6c 6c 6f 63 3e 20 6f 72  20 3c 72 65 61 6c 6c 6f  |lloc> or <reallo|
000486e0  63 3e 2e 20 54 68 69 73  20 6d 65 6d 6f 72 79 20  |c>. This memory |
000486f0  63 61 6e 20 74 68 65 6e  20 62 65 20 72 65 2d 75  |can then be re-u|
00048700  73 65 64 20 6f 6e 20 61  6e 6f 74 68 65 72 20 6f  |sed on another o|
00048710  63 63 61 73 69 6f 6e 20  62 79 20 74 68 65 20 70  |ccasion by the p|
00048720  72 6f 67 72 61 6d 2e 00  44 41 54 41 7e 01 00 00  |rogram..DATA~...|
00048730  46 72 65 65 44 62 75 67  0a 53 79 6e 74 61 78 3a  |FreeDbug.Syntax:|
00048740  09 76 6f 69 64 20 46 72  65 65 44 62 75 67 20 28  |.void FreeDbug (|
00048750  76 6f 69 64 20 2a 70 2c  63 68 61 72 20 2a 66 69  |void *p,char *fi|
00048760  6c 65 6e 61 6d 65 2c 20  69 6e 74 20 6c 69 6e 65  |lename, int line|
00048770  29 3b 0a 48 65 61 64 65  72 3a 09 3c 54 69 6d 73  |);.Header:.<Tims|
00048780  4c 69 62 3a 4d 61 6c 6c  6f 63 44 62 75 67 2e 68  |Lib:MallocDbug.h|
00048790  3d 3e 4d 61 6c 6c 6f 63  44 62 75 67 3e 0a 0a 54  |=>MallocDbug>..T|
000487a0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 69 73 20  |his function is |
000487b0  69 64 65 6e 74 69 63 61  6c 20 74 6f 20 3c 66 72  |identical to <fr|
000487c0  65 65 3e 28 29 2c 20 62  75 74 20 72 65 6d 65 6d  |ee>(), but remem|
000487d0  62 65 72 73 20 74 68 65  20 66 69 6c 65 20 61 6e  |bers the file an|
000487e0  64 20 6c 69 6e 65 20 61  74 20 77 68 69 63 68 20  |d line at which |
000487f0  74 68 65 20 63 61 6c 6c  20 6f 63 63 75 72 72 65  |the call occurre|
00048800  64 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |d...This functio|
00048810  6e 20 77 69 6c 6c 20 6e  6f 72 6d 61 6c 6c 79 20  |n will normally |
00048820  62 65 20 63 61 6c 6c 65  64 20 74 72 61 6e 73 70  |be called transp|
00048830  61 72 65 6e 74 6c 79 2e  20 54 68 65 20 6d 61 63  |arently. The mac|
00048840  72 6f 20 7b 2a 7d 66 72  65 65 64 62 75 67 7b 2a  |ro {*}freedbug{*|
00048850  7d 20 69 73 20 64 65 66  69 6e 65 64 20 74 6f 20  |} is defined to |
00048860  63 61 6c 6c 20 74 68 69  73 20 66 75 6e 63 74 69  |call this functi|
00048870  6f 6e 20 69 6e 20 64 65  62 75 67 20 62 75 69 6c  |on in debug buil|
00048880  64 73 2c 20 61 6e 64 20  6e 6f 72 6d 61 6c 20 66  |ds, and normal f|
00048890  72 65 65 20 69 6e 20 72  65 6c 65 61 73 65 20 62  |ree in release b|
000488a0  75 69 6c 64 73 2e 00 00  44 41 54 41 19 01 00 00  |uilds...DATA....|
000488b0  66 72 65 65 70 72 6f 63  0a 54 68 65 20 74 79 70  |freeproc.The typ|
000488c0  65 20 2a 66 72 65 65 70  72 6f 63 2a 20 69 73 20  |e *freeproc* is |
000488d0  64 65 66 69 6e 65 64 20  69 6e 20 3c 6b 65 72 6e  |defined in <kern|
000488e0  65 6c 2e 68 3d 3e 6b 65  72 6e 65 6c 3e 20 61 73  |el.h=>kernel> as|
000488f0  20 61 20 70 72 6f 63 65  64 75 72 65 20 77 68 69  | a procedure whi|
00048900  63 68 20 63 61 6e 20 62  65 20 75 73 65 64 20 74  |ch can be used t|
00048910  6f 20 66 72 65 65 20 6d  65 6d 6f 72 79 20 61 6c  |o free memory al|
00048920  6c 6f 63 61 74 65 64 20  62 79 20 61 6e 20 3c 61  |located by an <a|
00048930  6c 6c 6f 63 70 72 6f 63  3e 2e 20 49 74 20 69 73  |llocproc>. It is|
00048940  20 64 65 66 69 6e 65 64  20 61 73 3a 0a 0a 7b 66  | defined as:..{f|
00048950  43 6f 64 65 3b 61 6c 69  67 6e 20 63 65 6e 74 72  |Code;align centr|
00048960  65 7d 76 6f 69 64 20 66  72 65 65 70 72 6f 63 20  |e}void freeproc |
00048970  28 76 6f 69 64 20 2a 29  3b 7b 66 3b 61 6c 69 67  |(void *);{f;alig|
00048980  6e 7d 0a 0a 54 68 65 20  70 61 72 61 6d 65 74 65  |n}..The paramete|
00048990  72 20 70 61 73 73 65 64  20 69 73 20 74 68 65 20  |r passed is the |
000489a0  70 6f 69 6e 74 65 72 20  74 6f 20 74 68 65 20 73  |pointer to the s|
000489b0  70 61 63 65 20 74 6f 20  62 65 20 66 72 65 65 64  |pace to be freed|
000489c0  2e 00 00 00 44 41 54 41  ad 01 00 00 66 72 65 6f  |....DATA....freo|
000489d0  70 65 6e 0a 53 79 6e 74  61 78 3a 09 3c 46 49 4c  |pen.Syntax:.<FIL|
000489e0  45 3e 20 2a 66 72 65 6f  70 65 6e 20 28 63 68 61  |E> *freopen (cha|
000489f0  72 20 2a 66 69 6c 65 6e  61 6d 65 2c 20 63 68 61  |r *filename, cha|
00048a00  72 20 2a 6d 6f 64 65 2c  20 46 49 4c 45 20 2a 73  |r *mode, FILE *s|
00048a10  74 72 65 61 6d 29 3b 0a  48 65 61 64 65 72 3a 09  |tream);.Header:.|
00048a20  3c 73 74 64 69 6f 2e 68  3d 3e 73 74 64 69 6f 3e  |<stdio.h=>stdio>|
00048a30  0a 0a 52 65 74 75 72 6e  73 3a 09 41 20 6e 75 6c  |..Returns:.A nul|
00048a40  6c 20 70 6f 69 6e 74 65  72 20 69 66 20 69 74 20  |l pointer if it |
00048a50  66 61 69 6c 73 2c 20 6f  74 68 65 72 77 69 73 65  |fails, otherwise|
00048a60  20 61 20 70 6f 69 6e 74  65 72 20 74 6f 20 74 68  | a pointer to th|
00048a70  65 20 73 61 6d 65 20 73  74 72 65 61 6d 2e 0a 0a  |e same stream...|
00048a80  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 6f 70  |This function op|
00048a90  65 6e 73 20 74 68 65 20  66 69 6c 65 20 73 70 65  |ens the file spe|
00048aa0  63 69 66 69 65 64 20 69  6e 20 2f 66 69 6c 65 6e  |cified in /filen|
00048ab0  61 6d 65 2f 2c 20 61 63  63 6f 72 64 69 6e 67 20  |ame/, according |
00048ac0  74 6f 20 74 68 65 20 3c  6d 6f 64 65 3d 3e 66 69  |to the <mode=>fi|
00048ad0  6c 65 5f 6d 6f 64 65 5f  3e 2c 20 66 69 72 73 74  |le_mode_>, first|
00048ae0  20 63 6c 6f 73 69 6e 67  20 74 68 65 20 66 69 6c  | closing the fil|
00048af0  65 20 70 72 65 76 69 6f  75 73 6c 79 20 61 73 73  |e previously ass|
00048b00  6f 63 69 61 74 65 64 20  77 69 74 68 20 74 68 61  |ociated with tha|
00048b10  74 20 73 74 72 65 61 6d  2e 20 49 66 20 74 68 65  |t stream. If the|
00048b20  20 66 69 6c 65 20 63 61  6e 6e 6f 74 20 62 65 20  | file cannot be |
00048b30  63 6c 6f 73 65 64 20 70  72 6f 70 65 72 6c 79 20  |closed properly |
00048b40  69 74 20 69 73 20 61 62  61 6e 64 6f 6e 65 64 20  |it is abandoned |
00048b50  61 6e 64 20 74 68 65 20  6e 65 77 20 66 69 6c 65  |and the new file|
00048b60  20 69 73 20 73 74 69 6c  6c 20 6f 70 65 6e 65 64  | is still opened|
00048b70  2e 00 00 00 44 41 54 41  46 01 00 00 66 72 65 78  |....DATAF...frex|
00048b80  70 0a 53 79 6e 74 61 78  3a 09 64 6f 75 62 6c 65  |p.Syntax:.double|
00048b90  20 66 72 65 78 70 20 28  64 6f 75 62 6c 65 20 78  | frexp (double x|
00048ba0  2c 20 69 6e 74 20 2a 65  78 70 29 3b 0a 48 65 61  |, int *exp);.Hea|
00048bb0  64 65 72 3a 09 3c 6d 61  74 68 2e 68 3d 3e 6d 61  |der:.<math.h=>ma|
00048bc0  74 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 79 2c  |th>..Returns:.y,|
00048bd0  20 77 68 65 72 65 20 78  20 3d 20 79 20 2a 20 28  | where x = y * (|
00048be0  31 20 5c 3c 5c 3c 20 2a  65 78 70 29 2e 0a 0a 54  |1 \<\< *exp)...T|
00048bf0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 70 6c  |his function spl|
00048c00  69 74 73 20 74 68 65 20  76 61 6c 75 65 20 78 20  |its the value x |
00048c10  69 6e 74 6f 20 61 20 6e  6f 72 6d 61 6c 69 73 65  |into a normalise|
00048c20  64 20 66 72 61 63 74 69  6f 6e 20 28 74 68 65 20  |d fraction (the |
00048c30  72 65 73 75 6c 74 2c 20  79 29 20 61 6e 64 20 61  |result, y) and a|
00048c40  20 70 6f 77 65 72 20 6f  66 20 74 77 6f 20 28 73  | power of two (s|
00048c50  74 6f 72 65 64 20 69 6e  20 74 68 65 20 69 6e 74  |tored in the int|
00048c60  20 70 6f 69 6e 74 65 64  20 74 6f 20 62 79 20 65  | pointed to by e|
00048c70  78 70 29 2e 20 49 66 20  78 20 69 73 20 7a 65 72  |xp). If x is zer|
00048c80  6f 20 74 68 65 6e 20 62  6f 74 68 20 2a 65 78 70  |o then both *exp|
00048c90  20 61 6e 64 20 79 20 77  69 6c 6c 20 62 65 20 7a  | and y will be z|
00048ca0  65 72 6f 2c 20 65 6c 73  65 20 30 2e 35 20 5c 3c  |ero, else 0.5 \<|
00048cb0  20 79 20 5c 3c 20 31 2e  30 2e 00 00 44 41 54 41  | y \< 1.0...DATA|
00048cc0  c1 01 00 00 66 73 63 61  6e 66 0a 53 79 6e 74 61  |....fscanf.Synta|
00048cd0  78 3a 09 69 6e 74 20 66  73 63 61 6e 66 20 28 3c  |x:.int fscanf (<|
00048ce0  46 49 4c 45 3e 20 2a 73  74 72 65 61 6d 2c 20 63  |FILE> *stream, c|
00048cf0  68 61 72 20 2a 66 6f 72  6d 61 74 2c 20 2e 2e 2e  |har *format, ...|
00048d00  29 3b 0a 48 65 61 64 65  72 3a 09 3c 73 74 64 69  |);.Header:.<stdi|
00048d10  6f 2e 68 3d 3e 73 74 64  69 6f 3e 0a 0a 52 65 74  |o.h=>stdio>..Ret|
00048d20  75 72 6e 73 3a 09 4e 75  6d 62 65 72 20 6f 66 20  |urns:.Number of |
00048d30  73 75 63 63 65 73 73 66  75 6c 20 69 6e 70 75 74  |successful input|
00048d40  73 2c 20 6f 72 20 3c 45  4f 46 3e 20 69 66 20 74  |s, or <EOF> if t|
00048d50  68 65 72 65 20 77 61 73  20 61 6e 20 69 6e 70 75  |here was an inpu|
00048d60  74 20 65 72 72 6f 72 2e  0a 0a 54 68 69 73 20 66  |t error...This f|
00048d70  75 6e 63 74 69 6f 6e 20  72 65 61 64 73 20 69 6e  |unction reads in|
00048d80  70 75 74 20 66 72 6f 6d  20 74 68 65 20 73 74 72  |put from the str|
00048d90  65 61 6d 20 75 6e 64 65  72 20 63 6f 6e 74 72 6f  |eam under contro|
00048da0  6c 20 6f 66 20 74 68 65  20 3c 66 6f 72 6d 61 74  |l of the <format|
00048db0  20 73 74 72 69 6e 67 3d  3e 73 66 6f 72 6d 5f 3e  | string=>sform_>|
00048dc0  2e 20 45 61 63 68 20 73  75 62 73 65 71 75 65 6e  |. Each subsequen|
00048dd0  74 20 61 72 67 75 6d 65  6e 74 20 69 73 20 61 20  |t argument is a |
00048de0  70 6f 69 6e 74 65 72 20  74 6f 20 61 20 6f 62 6a  |pointer to a obj|
00048df0  65 63 74 20 69 6e 20 77  68 69 63 68 20 74 6f 20  |ect in which to |
00048e00  70 6c 61 63 65 20 74 68  65 20 72 65 73 75 6c 74  |place the result|
00048e10  2e 20 49 66 20 74 68 65  72 65 20 61 72 65 20 6d  |. If there are m|
00048e20  6f 72 65 20 61 72 67 75  6d 65 6e 74 73 20 74 68  |ore arguments th|
00048e30  61 6e 20 63 6f 6e 76 65  72 73 69 6f 6e 20 73 70  |an conversion sp|
00048e40  65 63 69 66 69 63 61 74  69 6f 6e 73 2c 20 74 68  |ecifications, th|
00048e50  65 20 65 78 74 72 61 20  61 72 67 75 6d 65 6e 74  |e extra argument|
00048e60  73 20 61 72 65 20 65 76  61 6c 75 61 74 65 64 20  |s are evaluated |
00048e70  62 75 74 20 6e 6f 74 20  75 73 65 64 2e 00 00 00  |but not used....|
00048e80  44 41 54 41 06 02 00 00  66 73 65 65 6b 0a 53 79  |DATA....fseek.Sy|
00048e90  6e 74 61 78 3a 09 69 6e  74 20 66 73 65 65 6b 20  |ntax:.int fseek |
00048ea0  28 3c 46 49 4c 45 3e 20  2a 73 74 72 65 61 6d 2c  |(<FILE> *stream,|
00048eb0  20 6c 6f 6e 67 20 69 6e  74 20 70 6f 73 2c 20 69  | long int pos, i|
00048ec0  6e 74 20 66 72 6f 6d 29  3b 0a 48 65 61 64 65 72  |nt from);.Header|
00048ed0  3a 09 3c 73 74 64 69 6f  2e 68 3d 3e 73 74 64 69  |:.<stdio.h=>stdi|
00048ee0  6f 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 5a 65 72  |o>..Returns:.Zer|
00048ef0  6f 20 69 66 20 73 75 63  63 65 73 73 66 75 6c 2e  |o if successful.|
00048f00  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00048f10  73 65 74 73 20 74 68 65  20 66 69 6c 65 20 70 6f  |sets the file po|
00048f20  73 69 74 69 6f 6e 20 69  6e 64 69 63 61 74 6f 72  |sition indicator|
00048f30  20 66 6f 72 20 74 68 65  20 66 69 6c 65 20 70 6f  | for the file po|
00048f40  69 6e 74 65 64 20 74 6f  20 62 79 20 73 74 72 65  |inted to by stre|
00048f50  61 6d 2e 20 54 68 65 20  70 6f 73 69 74 69 6f 6e  |am. The position|
00048f60  20 69 73 20 73 65 74 20  75 73 69 6e 67 20 61 20  | is set using a |
00048f70  63 6f 6d 62 69 6e 61 74  69 6f 6e 20 6f 66 20 2f  |combination of /|
00048f80  70 6f 73 2f 20 61 6e 64  20 2f 66 72 6f 6d 2f 2e  |pos/ and /from/.|
00048f90  20 2f 70 6f 73 2f 20 67  69 76 65 73 20 74 68 65  | /pos/ gives the|
00048fa0  20 6f 66 66 73 65 74 20  66 72 6f 6d 20 74 68 65  | offset from the|
00048fb0  20 70 6f 73 69 74 69 6f  6e 20 73 65 74 20 69 6e  | position set in|
00048fc0  20 2f 66 72 6f 6d 2f 2e  20 2f 66 72 6f 6d 2f 20  | /from/. /from/ |
00048fd0  73 68 6f 75 6c 64 20 62  65 20 65 69 74 68 65 72  |should be either|
00048fe0  20 3c 53 45 45 4b 5f 53  45 54 3e 2c 20 3c 53 45  | <SEEK_SET>, <SE|
00048ff0  45 4b 5f 43 55 52 3e 20  6f 72 20 3c 53 45 45 4b  |EK_CUR> or <SEEK|
00049000  5f 45 4e 44 3e 2e 20 46  6f 72 20 66 69 6c 65 73  |_END>. For files|
00049010  20 6e 6f 74 20 6f 70 65  6e 65 64 20 69 6e 20 62  | not opened in b|
00049020  69 6e 61 72 79 20 6d 6f  64 65 2c 20 2f 70 6f 73  |inary mode, /pos|
00049030  2f 20 73 68 6f 75 6c 64  20 62 65 20 65 69 74 68  |/ should be eith|
00049040  65 72 20 7a 65 72 6f 2c  20 6f 72 20 61 20 76 61  |er zero, or a va|
00049050  6c 75 65 20 72 65 74 75  72 6e 65 64 20 62 79 20  |lue returned by |
00049060  3c 66 74 65 6c 6c 3e 20  77 69 74 68 20 2f 66 72  |<ftell> with /fr|
00049070  6f 6d 2f 20 65 71 75 61  6c 20 74 6f 20 53 45 45  |om/ equal to SEE|
00049080  4b 5f 53 45 54 2e 00 00  44 41 54 41 64 01 00 00  |K_SET...DATAd...|
00049090  66 73 65 74 70 6f 73 0a  53 79 6e 74 61 78 3a 09  |fsetpos.Syntax:.|
000490a0  69 6e 74 20 66 73 65 74  70 6f 73 20 28 3c 46 49  |int fsetpos (<FI|
000490b0  4c 45 3e 20 2a 73 74 72  65 61 6d 2c 20 3c 66 70  |LE> *stream, <fp|
000490c0  6f 73 5f 74 3e 20 2a 70  6f 73 29 3b 0a 48 65 61  |os_t> *pos);.Hea|
000490d0  64 65 72 3a 09 3c 73 74  64 69 6f 2e 68 3d 3e 73  |der:.<stdio.h=>s|
000490e0  74 64 69 6f 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |tdio>..Returns:.|
000490f0  5a 65 72 6f 20 69 66 20  73 75 63 63 65 73 73 66  |Zero if successf|
00049100  75 6c 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ul...This functi|
00049110  6f 6e 20 73 65 74 73 20  74 68 65 20 66 69 6c 65  |on sets the file|
00049120  20 70 6f 69 6e 74 65 72  2c 20 66 6f 72 20 74 68  | pointer, for th|
00049130  65 20 66 69 6c 65 20 70  6f 69 6e 74 65 64 20 74  |e file pointed t|
00049140  6f 20 62 79 20 2f 73 74  72 65 61 6d 2f 2c 20 74  |o by /stream/, t|
00049150  6f 20 74 68 65 20 76 61  6c 75 65 20 73 74 6f 72  |o the value stor|
00049160  65 64 20 69 6e 20 2f 70  6f 73 2f 2e 20 54 68 69  |ed in /pos/. Thi|
00049170  73 20 76 61 6c 75 65 20  73 68 6f 75 6c 64 20 68  |s value should h|
00049180  61 76 65 20 62 65 65 6e  20 70 72 65 76 69 6f 75  |ave been previou|
00049190  73 6c 79 20 73 74 6f 72  65 64 20 62 79 20 74 68  |sly stored by th|
000491a0  65 20 3c 66 67 65 74 70  6f 73 3e 20 66 75 6e 63  |e <fgetpos> func|
000491b0  74 69 6f 6e 2e 20 49 66  20 74 68 65 72 65 20 69  |tion. If there i|
000491c0  73 20 61 6e 20 65 72 72  6f 72 2c 20 74 68 65 20  |s an error, the |
000491d0  72 65 61 73 6f 6e 20 69  73 20 73 74 6f 72 65 64  |reason is stored|
000491e0  20 69 6e 20 3c 65 72 72  6e 6f 3e 2e 44 41 54 41  | in <errno>.DATA|
000491f0  97 01 00 00 66 74 65 6c  6c 0a 53 79 6e 74 61 78  |....ftell.Syntax|
00049200  3a 09 6c 6f 6e 67 20 69  6e 74 20 66 74 65 6c 6c  |:.long int ftell|
00049210  20 28 3c 46 49 4c 45 3e  20 2a 73 74 72 65 61 6d  | (<FILE> *stream|
00049220  29 3b 0a 48 65 61 64 65  72 3a 09 3c 73 74 64 69  |);.Header:.<stdi|
00049230  6f 2e 68 3d 3e 73 74 64  69 6f 3e 0a 0a 52 65 74  |o.h=>stdio>..Ret|
00049240  75 72 6e 73 3a 09 46 69  6c 65 20 70 6f 69 6e 74  |urns:.File point|
00049250  65 72 20 66 6f 72 20 73  74 72 65 61 6d 2c 20 6f  |er for stream, o|
00049260  72 20 2d 31 4c 20 69 66  20 74 68 65 72 65 20 69  |r -1L if there i|
00049270  73 20 61 6e 20 65 72 72  6f 72 2e 0a 0a 54 68 69  |s an error...Thi|
00049280  73 20 66 75 6e 63 74 69  6f 6e 20 72 65 61 64 73  |s function reads|
00049290  20 74 68 65 20 66 69 6c  65 20 70 6f 73 69 74 69  | the file positi|
000492a0  6f 6e 20 69 6e 64 69 63  61 74 6f 72 20 66 6f 72  |on indicator for|
000492b0  20 74 68 65 20 66 69 6c  65 20 70 6f 69 6e 74 65  | the file pointe|
000492c0  64 20 74 6f 20 62 79 20  2f 73 74 72 65 61 6d 2f  |d to by /stream/|
000492d0  2e 20 46 6f 72 20 62 69  6e 61 72 79 20 66 69 6c  |. For binary fil|
000492e0  65 73 20 74 68 69 73 20  69 73 20 74 68 65 20 6e  |es this is the n|
000492f0  75 6d 62 65 72 20 6f 66  20 63 68 61 72 61 63 74  |umber of charact|
00049300  65 72 73 20 66 72 6f 6d  20 74 68 65 20 62 65 67  |ers from the beg|
00049310  69 6e 6e 69 6e 67 20 6f  66 20 74 68 65 20 66 69  |inning of the fi|
00049320  6c 65 2c 20 62 75 74 20  66 6f 72 20 74 65 78 74  |le, but for text|
00049330  20 66 69 6c 65 73 20 69  74 20 63 6f 75 6c 64 20  | files it could |
00049340  62 65 20 61 6e 79 74 68  69 6e 67 2e 20 49 66 20  |be anything. If |
00049350  74 68 65 72 65 20 69 73  20 61 6e 20 65 72 72 6f  |there is an erro|
00049360  72 2c 20 74 68 65 20 72  65 61 73 6f 6e 20 69 73  |r, the reason is|
00049370  20 73 74 6f 72 65 64 20  69 6e 20 3c 65 72 72 6e  | stored in <errn|
00049380  6f 3e 2e 00 46 52 45 45  29 01 00 00 94 d6 0c 00  |o>..FREE).......|
00049390  74 65 0a 53 79 6e 74 61  78 3a 09 3c 73 69 7a 65  |te.Syntax:.<size|
000493a0  5f 74 3e 20 66 72 65 61  64 20 28 76 6f 69 64 20  |_t> fread (void |
000493b0  2a 70 74 72 2c 20 73 69  7a 65 5f 74 20 73 69 7a  |*ptr, size_t siz|
000493c0  65 2c 20 73 69 7a 65 5f  74 20 6e 6f 62 6a 2c 20  |e, size_t nobj, |
000493d0  3c 46 49 4c 45 3e 20 2a  73 74 72 65 61 6d 29 3b  |<FILE> *stream);|
000493e0  0a 48 65 61 64 65 72 3a  09 3c 73 74 64 69 6f 2e  |.Header:.<stdio.|
000493f0  68 3d 3e 73 74 64 69 6f  3e 0a 0a 52 65 74 75 72  |h=>stdio>..Retur|
00049400  6e 73 3a 09 54 68 65 20  6e 75 6d 62 65 72 20 6f  |ns:.The number o|
00049410  66 20 6f 62 6a 65 63 74  73 20 77 72 69 74 74 65  |f objects writte|
00049420  6e 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |n...This functio|
00049430  6e 20 77 72 69 74 65 73  20 2f 6e 6f 62 6a 2f 20  |n writes /nobj/ |
00049440  6f 62 6a 65 63 74 73 20  6f 66 20 73 69 7a 65 20  |objects of size |
00049450  73 70 65 63 69 66 69 65  64 20 62 79 20 2f 73 69  |specified by /si|
00049460  7a 65 2f 20 66 72 6f 6d  20 74 68 65 20 61 72 72  |ze/ from the arr|
00049470  61 79 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |ay pointed to by|
00049480  20 2f 70 74 72 2f 2c 20  69 6e 74 6f 20 74 68 65  | /ptr/, into the|
00049490  20 66 69 6c 65 20 70 6f  69 6e 74 65 64 20 74 6f  | file pointed to|
000494a0  20 62 79 20 2f 73 74 72  65 61 6d 2f 2e 00 00 00  | by /stream/....|
000494b0  44 49 52 24 78 02 00 00  78 02 00 00 28 97 04 00  |DIR$x...x...(...|
000494c0  46 ff ff ff c5 6f 5a 26  93 00 00 00 13 00 00 00  |F....oZ&........|
000494d0  00 00 00 00 47 42 6f 64  65 6e 00 00 bc 97 04 00  |....GBoden......|
000494e0  46 ff ff ff 13 7a 55 26  bb 00 00 00 13 00 00 00  |F....zU&........|
000494f0  00 00 00 00 47 43 6f 6c  00 00 00 00 78 98 04 00  |....GCol....x...|
00049500  46 ff ff ff 6b 8a c2 22  e6 01 00 00 13 00 00 00  |F...k.."........|
00049510  00 00 00 00 67 65 74 63  00 00 00 00 60 9a 04 00  |....getc....`...|
00049520  46 ff ff ff e2 92 c2 22  2f 01 00 00 13 00 00 00  |F......"/.......|
00049530  00 00 00 00 67 65 74 63  68 61 72 00 90 9b 04 00  |....getchar.....|
00049540  46 ff ff ff 56 c1 dd 22  4b 02 00 00 13 00 00 00  |F...V.."K.......|
00049550  00 00 00 00 67 65 74 65  6e 76 00 00 dc 9d 04 00  |....getenv......|
00049560  46 ff ff ff 48 9f c2 22  37 01 00 00 13 00 00 00  |F...H.."7.......|
00049570  00 00 00 00 67 65 74 73  00 00 00 00 14 9f 04 00  |....gets........|
00049580  46 ff ff ff 6a 52 2a 25  ce 01 00 00 13 00 00 00  |F...jR*%........|
00049590  00 00 00 00 47 46 58 00  e4 a0 04 00 46 fd ff ff  |....GFX.....F...|
000495a0  58 94 84 2f c0 02 00 00  13 01 00 00 00 00 00 00  |X../............|
000495b0  47 46 58 5f 00 00 00 00  1c bf 04 00 46 ff ff ff  |GFX_........F...|
000495c0  58 e3 e1 22 02 01 00 00  13 00 00 00 00 00 00 00  |X.."............|
000495d0  67 6d 74 69 6d 65 00 00  20 c0 04 00 46 ff ff ff  |gmtime.. ...F...|
000495e0  7d a4 2b 25 3a 02 00 00  13 00 00 00 00 00 00 00  |}.+%:...........|
000495f0  48 61 6e 64 6c 65 72 00  5c c2 04 00 46 fd ff ff  |Handler.\...F...|
00049600  20 96 84 2f 50 01 00 00  13 01 00 00 00 00 00 00  | ../P...........|
00049610  48 61 6e 64 6c 65 72 5f  00 00 00 00 10 ce 04 00  |Handler_........|
00049620  46 ff ff ff ef 82 ad 24  b4 00 00 00 13 00 00 00  |F......$........|
00049630  00 00 00 00 68 65 61 70  00 00 00 00 c4 ce 04 00  |....heap........|
00049640  46 fd ff ff ef 96 84 2f  6c 00 00 00 13 01 00 00  |F....../l.......|
00049650  00 00 00 00 68 65 61 70  5f 00 00 00 d0 d1 04 00  |....heap_.......|
00049660  46 ff ff ff b4 a8 ad 24  ee 00 00 00 13 00 00 00  |F......$........|
00049670  00 00 00 00 68 65 6c 70  00 00 00 00 c0 d2 04 00  |....help........|
00049680  46 fd ff ff 4b 97 84 2f  ec 00 00 00 13 01 00 00  |F...K../........|
00049690  00 00 00 00 68 65 6c 70  5f 00 00 00 ec dc 04 00  |....help_.......|
000496a0  46 ff ff ff 5b 53 56 26  e0 00 00 00 13 00 00 00  |F...[SV&........|
000496b0  00 00 00 00 48 65 78 44  69 67 69 74 00 00 00 00  |....HexDigit....|
000496c0  cc dd 04 00 46 ff ff ff  a1 ff 2b 25 11 01 00 00  |....F.....+%....|
000496d0  13 00 00 00 00 00 00 00  48 6f 75 72 67 6c 61 73  |........Hourglas|
000496e0  73 00 00 00 e0 de 04 00  46 fd ff ff fa 97 84 2f  |s.......F....../|
000496f0  a8 00 00 00 13 01 00 00  00 00 00 00 48 6f 75 72  |............Hour|
00049700  67 6c 61 73 73 5f 00 00  c4 e5 04 00 46 fd ff ff  |glass_......F...|
00049710  6f 98 84 2f 28 00 00 00  13 01 00 00 00 00 00 00  |o../(...........|
00049720  48 55 47 45 5f 00 00 00  44 41 54 41 93 00 00 00  |HUGE_...DATA....|
00049730  47 61 72 65 74 68 20 42  6f 64 65 6e 0a 46 69 64  |Gareth Boden.Fid|
00049740  6f 4e 65 74 20 65 6d 61  69 6c 3a 09 32 3a 32 35  |oNet email:.2:25|
00049750  30 2f 32 32 35 2e 31 30  0a 49 6e 74 65 72 6e 65  |0/225.10.Interne|
00049760  74 20 65 6d 61 69 6c 3a  09 67 64 62 32 30 40 63  |t email:.gdb20@c|
00049770  61 6d 2e 61 63 2e 75 6b  0a 0a 53 6e 61 69 6c 2d  |am.ac.uk..Snail-|
00049780  6d 61 69 6c 3a 0a 0a 7b  61 6c 69 67 6e 20 63 65  |mail:..{align ce|
00049790  6e 74 72 65 7d 34 35 20  43 65 64 61 72 20 53 74  |ntre}45 Cedar St|
000497a0  72 65 65 74 0a 53 4f 55  54 48 50 4f 52 54 0a 50  |reet.SOUTHPORT.P|
000497b0  52 38 20 36 4e 51 0a 55  2e 4b 2e 00 44 41 54 41  |R8 6NQ.U.K..DATA|
000497c0  bb 00 00 00 47 43 6f 6c  0a 53 79 6e 74 61 78 3a  |....GCol.Syntax:|
000497d0  09 47 43 6f 6c 20 28 69  6e 74 20 61 63 74 69 6f  |.GCol (int actio|
000497e0  6e 2c 20 69 6e 74 20 63  6f 6c 6f 75 72 29 3b 0a  |n, int colour);.|
000497f0  48 65 61 64 65 72 3a 09  3c 54 69 6d 73 4c 69 62  |Header:.<TimsLib|
00049800  3a 47 46 58 2e 68 3d 3e  47 46 58 5f 54 4c 3e 0a  |:GFX.h=>GFX_TL>.|
00049810  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 2d 6c  |.This function-l|
00049820  69 6b 65 20 6d 61 63 72  6f 20 75 73 65 73 20 3c  |ike macro uses <|
00049830  57 69 6d 70 5f 53 65 74  43 6f 6c 6f 75 72 3e 20  |Wimp_SetColour> |
00049840  74 6f 20 73 65 74 20 74  68 65 20 63 75 72 72 65  |to set the curre|
00049850  6e 74 20 63 6f 6c 6f 75  72 20 6e 75 6d 62 65 72  |nt colour number|
00049860  20 61 6e 64 20 3c 61 63  74 69 6f 6e 3d 3e 56 44  | and <action=>VD|
00049870  55 3a 31 38 61 3e 2e 00  44 41 54 41 e6 01 00 00  |U:18a>..DATA....|
00049880  67 65 74 63 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |getc.Syntax:.int|
00049890  20 67 65 74 63 20 28 3c  46 49 4c 45 3e 20 2a 73  | getc (<FILE> *s|
000498a0  74 72 65 61 6d 29 3b 0a  48 65 61 64 65 72 3a 09  |tream);.Header:.|
000498b0  3c 73 74 64 69 6f 2e 68  3d 3e 73 74 64 69 6f 3e  |<stdio.h=>stdio>|
000498c0  0a 0a 52 65 74 75 72 6e  73 3a 09 43 68 61 72 61  |..Returns:.Chara|
000498d0  63 74 65 72 20 72 65 61  64 2c 20 6f 72 20 3c 45  |cter read, or <E|
000498e0  4f 46 3e 20 66 6f 72 20  61 6e 20 65 72 72 6f 72  |OF> for an error|
000498f0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00049900  20 72 65 61 64 73 20 61  20 73 69 6e 67 6c 65 20  | reads a single |
00049910  63 68 61 72 61 63 74 65  72 20 66 72 6f 6d 20 74  |character from t|
00049920  68 65 20 73 74 72 65 61  6d 20 70 6f 69 6e 74 65  |he stream pointe|
00049930  64 20 74 6f 20 62 79 20  2f 73 74 72 65 61 6d 2f  |d to by /stream/|
00049940  20 61 6e 64 20 72 65 74  75 72 6e 73 20 69 74 20  | and returns it |
00049950  61 73 20 61 6e 20 2f 69  6e 74 2f 2e 20 49 74 20  |as an /int/. It |
00049960  69 73 20 76 69 72 74 75  61 6c 6c 79 20 69 64 65  |is virtually ide|
00049970  6e 74 69 63 61 6c 20 74  6f 20 3c 66 67 65 74 63  |ntical to <fgetc|
00049980  3e 2e 20 54 68 65 20 6f  6e 6c 79 20 64 69 66 66  |>. The only diff|
00049990  65 72 65 6e 63 65 20 69  73 20 74 68 61 74 20 74  |erence is that t|
000499a0  68 65 20 66 75 6e 63 74  69 6f 6e 20 6d 69 67 68  |he function migh|
000499b0  74 20 62 65 20 61 20 6d  61 63 72 6f 20 61 6e 64  |t be a macro and|
000499c0  20 74 68 65 20 61 72 67  75 6d 65 6e 74 20 6d 61  | the argument ma|
000499d0  79 20 62 65 20 65 76 61  6c 75 61 74 65 64 20 6d  |y be evaluated m|
000499e0  6f 72 65 20 74 68 61 6e  20 6f 6e 63 65 20 73 6f  |ore than once so|
000499f0  20 79 6f 75 20 63 61 6e  27 74 20 75 73 65 20 61  | you can't use a|
00049a00  6e 20 65 78 70 72 65 73  73 69 6f 6e 20 77 69 74  |n expression wit|
00049a10  68 20 73 69 64 65 20 65  66 66 65 63 74 73 2e 20  |h side effects. |
00049a20  46 6f 72 20 65 78 61 6d  70 6c 65 3a 20 67 65 74  |For example: get|
00049a30  63 28 66 5b 69 2b 2b 5d  29 20 6d 61 79 20 63 61  |c(f[i++]) may ca|
00049a40  75 73 65 20 69 20 74 6f  20 62 65 20 69 6e 63 72  |use i to be incr|
00049a50  65 6d 65 6e 74 65 64 20  74 77 69 63 65 2e 00 00  |emented twice...|
00049a60  44 41 54 41 2f 01 00 00  67 65 74 63 68 61 72 0a  |DATA/...getchar.|
00049a70  53 79 6e 74 61 78 3a 09  69 6e 74 20 67 65 74 63  |Syntax:.int getc|
00049a80  68 61 72 20 28 76 6f 69  64 29 3b 0a 48 65 61 64  |har (void);.Head|
00049a90  65 72 3a 09 3c 73 74 64  69 6f 2e 68 3d 3e 73 74  |er:.<stdio.h=>st|
00049aa0  64 69 6f 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 43  |dio>..Returns:.C|
00049ab0  68 61 72 61 63 74 65 72  20 72 65 61 64 2c 20 6f  |haracter read, o|
00049ac0  72 20 3c 45 4f 46 3e 20  66 6f 72 20 61 6e 20 65  |r <EOF> for an e|
00049ad0  72 72 6f 72 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |rror...This func|
00049ae0  74 69 6f 6e 20 72 65 61  64 73 20 61 20 73 69 6e  |tion reads a sin|
00049af0  67 6c 65 20 63 68 61 72  61 63 74 65 72 20 66 72  |gle character fr|
00049b00  6f 6d 20 3c 73 74 64 69  6e 3e 2e 20 49 74 20 69  |om <stdin>. It i|
00049b10  73 20 69 64 65 6e 74 69  63 61 6c 20 74 6f 20 3c  |s identical to <|
00049b20  67 65 74 63 3e 28 73 74  64 69 6e 29 2e 20 49 74  |getc>(stdin). It|
00049b30  20 6d 61 79 20 62 65 20  69 6d 70 6c 65 6d 65 6e  | may be implemen|
00049b40  74 65 64 20 61 73 20 61  20 6d 61 63 72 6f 20 73  |ted as a macro s|
00049b50  6f 20 62 65 20 63 61 72  65 66 75 6c 20 6f 66 20  |o be careful of |
00049b60  75 73 69 6e 67 20 65 78  70 72 65 73 73 69 6f 6e  |using expression|
00049b70  73 20 77 68 69 63 68 20  6d 6f 64 69 66 79 20 6f  |s which modify o|
00049b80  74 68 65 72 20 76 61 72  69 61 62 6c 65 73 2e 00  |ther variables..|
00049b90  44 41 54 41 4b 02 00 00  67 65 74 65 6e 76 0a 53  |DATAK...getenv.S|
00049ba0  79 6e 74 61 78 3a 09 63  68 61 72 20 2a 67 65 74  |yntax:.char *get|
00049bb0  65 6e 76 20 28 63 68 61  72 20 2a 6e 61 6d 65 29  |env (char *name)|
00049bc0  3b 0a 48 65 61 64 65 72  3a 09 3c 73 74 64 6c 69  |;.Header:.<stdli|
00049bd0  62 2e 68 3d 3e 73 74 64  6c 69 62 3e 0a 0a 52 65  |b.h=>stdlib>..Re|
00049be0  74 75 72 6e 73 3a 09 41  20 70 6f 69 6e 74 65 72  |turns:.A pointer|
00049bf0  20 74 6f 20 74 68 65 20  76 61 72 69 61 62 6c 65  | to the variable|
00049c00  20 63 6f 6e 74 65 6e 74  73 2e 0a 0a 54 68 69 73  | contents...This|
00049c10  20 72 65 61 64 73 20 74  68 65 20 63 6f 6e 74 65  | reads the conte|
00049c20  6e 74 73 20 6f 66 20 61  6e 20 65 6e 76 69 72 6f  |nts of an enviro|
00049c30  6e 6d 65 6e 74 20 76 61  72 69 61 62 6c 65 2c 20  |nment variable, |
00049c40  77 68 6f 73 65 20 6e 61  6d 65 20 69 73 20 67 69  |whose name is gi|
00049c50  76 65 6e 2e 20 49 6e 20  44 4f 53 20 69 74 20 72  |ven. In DOS it r|
00049c60  65 61 64 73 20 74 68 65  20 44 4f 53 20 65 6e 76  |eads the DOS env|
00049c70  69 72 6f 6e 6d 65 6e 74  20 76 61 72 69 61 62 6c  |ironment variabl|
00049c80  65 73 20 65 67 20 2f 50  41 54 48 2f 2c 20 77 68  |es eg /PATH/, wh|
00049c90  65 72 65 61 73 20 69 6e  20 52 49 53 43 20 4f 53  |ereas in RISC OS|
00049ca0  20 69 74 20 72 65 61 64  73 20 74 68 65 20 73 79  | it reads the sy|
00049cb0  73 74 65 6d 20 76 61 72  69 61 62 6c 65 20 65 67  |stem variable eg|
00049cc0  20 7b 2f 7d 4f 62 65 79  24 44 69 72 7b 2f 7d 2e  | {/}Obey$Dir{/}.|
00049cd0  20 57 68 65 6e 20 72 65  61 64 69 6e 67 20 74 68  | When reading th|
00049ce0  65 20 76 61 72 69 61 62  6c 65 73 20 69 74 20 63  |e variables it c|
00049cf0  6f 6e 76 65 72 74 73 20  6e 75 6d 62 65 72 73 20  |onverts numbers |
00049d00  74 6f 20 73 74 72 69 6e  67 73 20 61 6e 64 20 65  |to strings and e|
00049d10  78 70 61 6e 64 73 20 6d  61 63 72 6f 73 2e 0a 0a  |xpands macros...|
00049d20  59 6f 75 20 73 68 6f 75  6c 64 20 6e 6f 74 20 6d  |You should not m|
00049d30  6f 64 69 66 79 20 74 68  65 20 72 65 74 75 72 6e  |odify the return|
00049d40  65 64 20 73 74 72 69 6e  67 20 61 6e 64 20 69 74  |ed string and it|
00049d50  20 6d 61 79 20 62 65 20  6f 76 65 72 77 72 69 74  | may be overwrit|
00049d60  74 65 6e 20 62 79 20 73  75 62 73 65 71 75 65 6e  |ten by subsequen|
00049d70  74 20 63 61 6c 6c 73 20  74 6f 20 2f 67 65 74 65  |t calls to /gete|
00049d80  6e 76 2f 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |nv/...This funct|
00049d90  69 6f 6e 20 69 73 20 65  71 75 69 76 61 6c 65 6e  |ion is equivalen|
00049da0  74 20 74 6f 20 74 68 65  20 53 57 49 20 3c 4f 53  |t to the SWI <OS|
00049db0  5f 52 65 61 64 56 61 72  56 61 6c 3d 3e 53 57 49  |_ReadVarVal=>SWI|
00049dc0  3a 4f 53 5f 52 65 61 64  56 61 72 56 61 6c 3e 2c  |:OS_ReadVarVal>,|
00049dd0  20 77 69 74 68 20 52 34  3d 33 2e 00 44 41 54 41  | with R4=3..DATA|
00049de0  37 01 00 00 67 65 74 73  0a 53 79 6e 74 61 78 3a  |7...gets.Syntax:|
00049df0  09 63 68 61 72 20 2a 67  65 74 73 20 28 63 68 61  |.char *gets (cha|
00049e00  72 20 2a 73 74 72 29 3b  0a 48 65 61 64 65 72 3a  |r *str);.Header:|
00049e10  09 3c 73 74 64 69 6f 2e  68 3d 3e 73 74 64 69 6f  |.<stdio.h=>stdio|
00049e20  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 73 74 72 2c  |>..Returns:.str,|
00049e30  20 6f 72 20 61 20 6e 75  6c 6c 20 70 6f 69 6e 74  | or a null point|
00049e40  65 72 20 69 66 20 74 68  65 72 65 20 69 73 20 61  |er if there is a|
00049e50  6e 20 65 72 72 6f 72 2e  0a 0a 54 68 69 73 20 66  |n error...This f|
00049e60  75 6e 63 74 69 6f 6e 20  72 65 61 64 73 20 61 20  |unction reads a |
00049e70  73 74 72 69 6e 67 20 6f  66 20 63 68 61 72 61 63  |string of charac|
00049e80  74 65 72 73 20 66 72 6f  6d 20 3c 73 74 64 69 6e  |ters from <stdin|
00049e90  3e 20 69 6e 74 6f 20 74  68 65 20 73 74 72 69 6e  |> into the strin|
00049ea0  67 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 79 20  |g pointed to by |
00049eb0  2f 73 74 72 2f 2e 20 52  65 61 64 69 6e 67 20 77  |/str/. Reading w|
00049ec0  69 6c 6c 20 74 65 72 6d  69 6e 61 74 65 20 61 74  |ill terminate at|
00049ed0  20 61 20 6e 65 77 6c 69  6e 65 20 63 68 61 72 61  | a newline chara|
00049ee0  63 74 65 72 20 6f 72 20  65 6e 64 2d 6f 66 2d 66  |cter or end-of-f|
00049ef0  69 6c 65 2e 20 53 65 65  20 61 6c 73 6f 20 74 68  |ile. See also th|
00049f00  65 20 66 75 6e 63 74 69  6f 6e 20 3c 66 67 65 74  |e function <fget|
00049f10  73 3e 2e 00 44 41 54 41  ce 01 00 00 44 65 73 6b  |s>..DATA....Desk|
00049f20  4c 69 62 3a 47 46 58 2e  68 0a 56 65 72 73 69 6f  |Lib:GFX.h.Versio|
00049f30  6e 3a 20 30 2e 37 30 20  28 33 30 20 4d 61 79 20  |n: 0.70 (30 May |
00049f40  31 39 39 34 29 0a 23 6c  69 6e 65 0a 54 68 69 73  |1994).#line.This|
00049f50  20 68 65 61 64 65 72 20  64 65 63 6c 61 72 65 73  | header declares|
00049f60  20 66 75 6e 63 74 69 6f  6e 20 61 6e 64 20 6d 61  | function and ma|
00049f70  63 72 6f 73 20 66 6f 72  20 67 72 61 70 68 69 63  |cros for graphic|
00049f80  73 20 6d 61 6e 69 70 75  6c 61 74 69 6f 6e 2e 0a  |s manipulation..|
00049f90  0a 46 75 6e 63 74 69 6f  6e 73 3a 0a 0a 23 49 6e  |.Functions:..#In|
00049fa0  64 65 6e 74 20 37 0a 23  54 61 62 6c 65 20 33 20  |dent 7.#Table 3 |
00049fb0  31 36 0a 3c 47 46 58 5f  50 6c 6f 74 3e 0a 3c 47  |16.<GFX_Plot>.<G|
00049fc0  46 58 5f 52 65 63 74 61  6e 67 6c 65 3e 0a 3c 47  |FX_Rectangle>.<G|
00049fd0  46 58 5f 43 4c 47 20 3e  0a 3c 47 46 58 5f 56 44  |FX_CLG >.<GFX_VD|
00049fe0  55 3e 0a 3c 47 46 58 5f  57 72 69 74 65 30 3e 0a  |U>.<GFX_Write0>.|
00049ff0  3c 47 46 58 5f 57 72 69  74 65 4e 3e 0a 3c 47 46  |<GFX_WriteN>.<GF|
0004a000  58 5f 57 61 69 74 3e 0a  23 45 6e 64 54 61 62 6c  |X_Wait>.#EndTabl|
0004a010  65 0a 23 69 6e 64 65 6e  74 20 30 0a 0a 46 75 6e  |e.#indent 0..Fun|
0004a020  63 74 69 6f 6e 2d 6c 69  6b 65 20 6d 61 63 72 6f  |ction-like macro|
0004a030  73 3a 0a 0a 23 49 6e 64  65 6e 74 20 39 0a 23 54  |s:..#Indent 9.#T|
0004a040  61 62 6c 65 20 35 20 31  38 0a 3c 47 46 58 5f 4d  |able 5 18.<GFX_M|
0004a050  6f 76 65 3e 0a 3c 47 46  58 5f 4d 6f 76 65 42 79  |ove>.<GFX_MoveBy|
0004a060  3e 0a 3c 47 46 58 5f 50  6c 6f 74 50 6f 69 6e 74  |>.<GFX_PlotPoint|
*
0004a080  42 79 3e 0a 3c 47 46 58  5f 44 72 61 77 3e 0a 3c  |By>.<GFX_Draw>.<|
0004a090  47 46 58 5f 44 72 61 77  42 79 3e 0a 3c 47 46 58  |GFX_DrawBy>.<GFX|
0004a0a0  5f 52 65 63 74 61 6e 67  6c 65 46 69 6c 6c 3e 0a  |_RectangleFill>.|
0004a0b0  3c 47 46 58 5f 43 69 72  63 6c 65 3e 0a 3c 47 46  |<GFX_Circle>.<GF|
0004a0c0  58 5f 43 69 72 63 6c 65  46 69 6c 6c 3e 0a 3c 47  |X_CircleFill>.<G|
0004a0d0  46 58 5f 47 43 4f 4c 3e  0a 23 45 6e 64 54 61 62  |FX_GCOL>.#EndTab|
0004a0e0  6c 65 00 00 44 49 52 24  c0 02 00 00 c0 02 00 00  |le..DIR$........|
0004a0f0  a4 a3 04 00 46 ff ff ff  4d 4a 2b 25 e6 00 00 00  |....F...MJ+%....|
0004a100  13 00 00 00 00 00 00 00  43 69 72 63 6c 65 00 00  |........Circle..|
0004a110  8c a4 04 00 46 ff ff ff  6c 51 2b 25 eb 00 00 00  |....F...lQ+%....|
0004a120  13 00 00 00 00 00 00 00  43 69 72 63 6c 65 46 69  |........CircleFi|
0004a130  6c 6c 00 00 78 a5 04 00  46 ff ff ff 9e ee 2a 25  |ll..x...F.....*%|
0004a140  9e 00 00 00 13 00 00 00  00 00 00 00 43 4c 47 00  |............CLG.|
0004a150  18 a6 04 00 46 ff ff ff  e4 37 2b 25 e2 00 00 00  |....F....7+%....|
0004a160  13 00 00 00 00 00 00 00  44 72 61 77 00 00 00 00  |........Draw....|
0004a170  fc a6 04 00 46 ff ff ff  8e 3d 2b 25 fc 00 00 00  |....F....=+%....|
0004a180  13 00 00 00 00 00 00 00  44 72 61 77 42 79 00 00  |........DrawBy..|
0004a190  f8 a7 04 00 46 ff ff ff  d3 57 2b 25 ad 00 00 00  |....F....W+%....|
0004a1a0  13 00 00 00 00 00 00 00  47 43 4f 4c 00 00 00 00  |........GCOL....|
0004a1b0  a8 a8 04 00 46 ff ff ff  0c 26 2b 25 d2 00 00 00  |....F....&+%....|
0004a1c0  13 00 00 00 00 00 00 00  4d 6f 76 65 00 00 00 00  |........Move....|
0004a1d0  7c a9 04 00 46 ff ff ff  d5 29 2b 25 c3 00 00 00  ||...F....)+%....|
0004a1e0  13 00 00 00 00 00 00 00  4d 6f 76 65 42 79 00 00  |........MoveBy..|
0004a1f0  40 aa 04 00 46 ff ff ff  d3 5e 2a 25 1a 01 00 00  |@...F....^*%....|
0004a200  13 00 00 00 00 00 00 00  50 6c 6f 74 00 00 00 00  |........Plot....|
0004a210  5c ab 04 00 46 ff ff ff  b5 ad 2a 25 8b 06 00 00  |\...F.....*%....|
0004a220  13 00 00 00 00 00 00 00  70 6c 6f 74 5f 00 00 00  |........plot_...|
0004a230  e8 b1 04 00 46 ff ff ff  46 c4 2a 25 6f 01 00 00  |....F...F.*%o...|
0004a240  13 00 00 00 00 00 00 00  70 6c 6f 74 62 6d 6f 64  |........plotbmod|
0004a250  5f 00 00 00 58 b3 04 00  46 ff ff ff f9 d6 2a 25  |_...X...F.....*%|
0004a260  e9 01 00 00 13 00 00 00  00 00 00 00 70 6c 6f 74  |............plot|
0004a270  6d 6f 64 5f 00 00 00 00  44 b5 04 00 46 ff ff ff  |mod_....D...F...|
0004a280  12 2e 2b 25 d8 00 00 00  13 00 00 00 00 00 00 00  |..+%............|
0004a290  50 6c 6f 74 50 6f 69 6e  74 00 00 00 1c b6 04 00  |PlotPoint.......|
0004a2a0  46 ff ff ff 2d 33 2b 25  25 01 00 00 13 00 00 00  |F...-3+%%.......|
0004a2b0  00 00 00 00 50 6c 6f 74  50 6f 69 6e 74 42 79 00  |....PlotPointBy.|
0004a2c0  44 b7 04 00 46 ff ff ff  66 e9 2a 25 0d 01 00 00  |D...F...f.*%....|
0004a2d0  13 00 00 00 00 00 00 00  52 65 63 74 61 6e 67 6c  |........Rectangl|
0004a2e0  65 00 00 00 54 b8 04 00  46 ff ff ff f2 43 2b 25  |e...T...F....C+%|
0004a2f0  15 01 00 00 13 00 00 00  00 00 00 00 52 65 63 74  |............Rect|
0004a300  61 6e 67 6c 65 46 69 6c  6c 00 00 00 6c b9 04 00  |angleFill...l...|
0004a310  46 fd ff ff c3 6e 55 26  55 00 00 00 13 00 00 00  |F....nU&U.......|
0004a320  00 00 00 00 54 4c 00 00  c4 b9 04 00 46 ff ff ff  |....TL......F...|
0004a330  d0 f9 2a 25 76 01 00 00  13 00 00 00 00 00 00 00  |..*%v...........|
0004a340  56 44 55 00 3c bb 04 00  46 ff ff ff 62 17 2b 25  |VDU.<...F...b.+%|
0004a350  14 02 00 00 13 00 00 00  00 00 00 00 57 61 69 74  |............Wait|
0004a360  00 00 00 00 50 bd 04 00  46 ff ff ff 4f 06 2b 25  |....P...F...O.+%|
0004a370  d7 00 00 00 13 00 00 00  00 00 00 00 57 72 69 74  |............Writ|
0004a380  65 30 00 00 28 be 04 00  46 ff ff ff 08 0d 2b 25  |e0..(...F.....+%|
0004a390  f3 00 00 00 13 00 00 00  00 00 00 00 57 72 69 74  |............Writ|
0004a3a0  65 4e 00 00 44 41 54 41  e6 00 00 00 47 46 58 5f  |eN..DATA....GFX_|
0004a3b0  43 69 72 63 6c 65 0a 53  79 6e 74 61 78 3a 09 76  |Circle.Syntax:.v|
0004a3c0  6f 69 64 20 47 46 58 5f  43 69 72 63 6c 65 20 28  |oid GFX_Circle (|
0004a3d0  69 6e 74 20 78 2c 20 69  6e 74 20 79 2c 20 69 6e  |int x, int y, in|
0004a3e0  74 20 72 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |t r);.Header:.<D|
0004a3f0  65 73 6b 4c 69 62 3a 47  46 58 2e 68 3d 3e 47 46  |eskLib:GFX.h=>GF|
0004a400  58 3e 0a 0a 54 68 69 73  20 6d 61 63 72 6f 20 75  |X>..This macro u|
0004a410  73 65 73 20 3c 47 46 58  5f 50 6c 6f 74 3e 20 74  |ses <GFX_Plot> t|
0004a420  6f 20 64 72 61 77 20 61  20 63 69 72 63 6c 65 20  |o draw a circle |
0004a430  6f 75 74 6c 69 6e 65 20  77 69 74 68 20 63 65 6e  |outline with cen|
0004a440  74 72 65 20 7b 2f 7d 28  78 2c 79 29 7b 2f 7d 20  |tre {/}(x,y){/} |
0004a450  61 6e 64 20 72 61 64 69  75 73 20 2f 72 2f 2c 20  |and radius /r/, |
0004a460  69 6e 20 74 68 65 20 63  75 72 72 65 6e 74 20 67  |in the current g|
0004a470  72 61 70 68 69 63 73 20  66 6f 72 65 67 72 6f 75  |raphics foregrou|
0004a480  6e 64 20 63 6f 6c 6f 75  72 2e 00 00 44 41 54 41  |nd colour...DATA|
0004a490  eb 00 00 00 47 46 58 5f  43 69 72 63 6c 65 46 69  |....GFX_CircleFi|
0004a4a0  6c 6c 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |ll.Syntax:.void |
0004a4b0  47 46 58 5f 43 69 72 63  6c 65 46 69 6c 6c 20 28  |GFX_CircleFill (|
0004a4c0  69 6e 74 20 78 2c 69 6e  74 20 79 2c 69 6e 74 20  |int x,int y,int |
0004a4d0  72 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |r);.Header:.<Des|
0004a4e0  6b 4c 69 62 3a 47 46 58  2e 68 3d 3e 47 46 58 3e  |kLib:GFX.h=>GFX>|
0004a4f0  0a 0a 54 68 69 73 20 6d  61 63 72 6f 20 75 73 65  |..This macro use|
0004a500  73 20 3c 47 46 58 5f 50  6c 6f 74 3e 20 74 6f 20  |s <GFX_Plot> to |
0004a510  64 72 61 77 20 61 20 66  69 6c 6c 65 64 20 63 69  |draw a filled ci|
0004a520  72 63 6c 65 20 77 69 74  68 20 63 65 6e 74 72 65  |rcle with centre|
0004a530  20 7b 2f 7d 28 78 2c 79  29 7b 2f 7d 20 61 6e 64  | {/}(x,y){/} and|
0004a540  20 72 61 64 69 75 73 20  2f 72 2f 2c 20 69 6e 20  | radius /r/, in |
0004a550  74 68 65 20 63 75 72 72  65 6e 74 20 67 72 61 70  |the current grap|
0004a560  68 69 63 73 20 66 6f 72  65 67 72 6f 75 6e 64 20  |hics foreground |
0004a570  63 6f 6c 6f 75 72 2e 00  44 41 54 41 9e 00 00 00  |colour..DATA....|
0004a580  47 46 58 5f 43 4c 47 0a  53 79 6e 74 61 78 3a 09  |GFX_CLG.Syntax:.|
0004a590  76 6f 69 64 20 47 46 58  5f 43 4c 47 20 28 76 6f  |void GFX_CLG (vo|
0004a5a0  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |id);.Header:.<De|
0004a5b0  73 6b 4c 69 62 3a 47 46  58 2e 68 3d 3e 47 46 58  |skLib:GFX.h=>GFX|
0004a5c0  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
0004a5d0  20 63 6c 65 61 72 73 20  74 68 65 20 67 72 61 70  | clears the grap|
0004a5e0  68 69 63 73 20 77 69 6e  64 6f 77 20 74 6f 20 74  |hics window to t|
0004a5f0  68 65 20 63 75 72 72 65  6e 74 20 62 61 63 6b 67  |he current backg|
0004a600  72 6f 75 6e 64 20 67 72  61 70 68 69 63 73 20 63  |round graphics c|
0004a610  6f 6c 6f 75 72 2e 00 00  44 41 54 41 e2 00 00 00  |olour...DATA....|
0004a620  47 46 58 5f 44 72 61 77  0a 53 79 6e 74 61 78 3a  |GFX_Draw.Syntax:|
0004a630  09 76 6f 69 64 20 47 46  58 5f 44 72 61 77 20 28  |.void GFX_Draw (|
0004a640  69 6e 74 20 78 2c 20 69  6e 74 20 79 29 3b 0a 48  |int x, int y);.H|
0004a650  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
0004a660  47 46 58 2e 68 3d 3e 47  46 58 3e 0a 0a 54 68 69  |GFX.h=>GFX>..Thi|
0004a670  73 20 6d 61 63 72 6f 20  75 73 65 73 20 3c 47 46  |s macro uses <GF|
0004a680  58 5f 50 6c 6f 74 3e 20  74 6f 20 64 72 61 77 20  |X_Plot> to draw |
0004a690  61 20 6c 69 6e 65 20 69  6e 20 74 68 65 20 63 75  |a line in the cu|
0004a6a0  72 72 65 6e 74 20 67 72  61 70 68 69 63 73 20 66  |rrent graphics f|
0004a6b0  6f 72 65 67 72 6f 75 6e  64 20 63 6f 6c 6f 75 72  |oreground colour|
0004a6c0  20 66 72 6f 6d 20 74 68  65 20 63 75 72 72 65 6e  | from the curren|
0004a6d0  74 20 67 72 61 70 68 69  63 73 20 63 75 72 73 6f  |t graphics curso|
0004a6e0  72 20 70 6f 73 69 74 69  6f 6e 20 74 6f 20 7b 2f  |r position to {/|
0004a6f0  7d 28 78 2c 79 29 7b 2f  7d 2e 00 00 44 41 54 41  |}(x,y){/}...DATA|
0004a700  fc 00 00 00 47 46 58 5f  44 72 61 77 42 79 0a 53  |....GFX_DrawBy.S|
0004a710  79 6e 74 61 78 3a 09 76  6f 69 64 20 47 46 58 5f  |yntax:.void GFX_|
0004a720  44 72 61 77 42 79 20 28  69 6e 74 20 78 2c 20 69  |DrawBy (int x, i|
0004a730  6e 74 20 79 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |nt y);.Header:.<|
0004a740  44 65 73 6b 4c 69 62 3a  47 46 58 2e 68 3d 3e 47  |DeskLib:GFX.h=>G|
0004a750  46 58 3e 0a 0a 54 68 69  73 20 6d 61 63 72 6f 20  |FX>..This macro |
0004a760  75 73 65 73 20 3c 47 46  58 5f 50 6c 6f 74 3e 20  |uses <GFX_Plot> |
0004a770  74 6f 20 64 72 61 77 20  61 20 6c 69 6e 65 20 69  |to draw a line i|
0004a780  6e 20 74 68 65 20 63 75  72 72 65 6e 74 20 67 72  |n the current gr|
0004a790  61 70 68 69 63 73 20 66  6f 72 65 67 72 6f 75 6e  |aphics foregroun|
0004a7a0  64 20 63 6f 6c 6f 75 72  20 66 72 6f 6d 20 74 68  |d colour from th|
0004a7b0  65 20 63 75 72 72 65 6e  74 20 67 72 61 70 68 69  |e current graphi|
0004a7c0  63 73 20 63 75 72 73 6f  72 20 70 6f 73 69 74 69  |cs cursor positi|
0004a7d0  6f 6e 20 74 6f 20 61 20  70 6f 73 69 74 69 6f 6e  |on to a position|
0004a7e0  20 7b 2f 7d 28 78 2c 79  29 7b 2f 7d 20 75 6e 69  | {/}(x,y){/} uni|
0004a7f0  74 73 20 61 77 61 79 2e  44 41 54 41 ad 00 00 00  |ts away.DATA....|
0004a800  47 46 58 5f 47 43 4f 4c  0a 53 79 6e 74 61 78 3a  |GFX_GCOL.Syntax:|
0004a810  09 47 46 58 5f 47 43 4f  4c 20 28 69 6e 74 20 61  |.GFX_GCOL (int a|
0004a820  63 74 69 6f 6e 2c 20 69  6e 74 20 63 6f 6c 6f 75  |ction, int colou|
0004a830  72 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |r);.Header:.<Des|
0004a840  6b 4c 69 62 3a 47 46 58  2e 68 3d 3e 47 46 58 3e  |kLib:GFX.h=>GFX>|
0004a850  0a 0a 54 68 69 73 20 6d  61 63 72 6f 20 75 73 65  |..This macro use|
0004a860  73 20 3c 47 46 58 5f 56  44 55 3e 20 74 6f 20 73  |s <GFX_VDU> to s|
0004a870  65 74 20 74 68 65 20 63  75 72 72 65 6e 74 20 67  |et the current g|
0004a880  72 61 70 68 69 63 73 20  63 6f 6c 6f 75 72 20 61  |raphics colour a|
0004a890  6e 64 20 3c 61 63 74 69  6f 6e 3d 3e 56 44 55 3a  |nd <action=>VDU:|
0004a8a0  31 38 61 3e 2e 00 00 00  44 41 54 41 d2 00 00 00  |18a>....DATA....|
0004a8b0  47 46 58 5f 4d 6f 76 65  0a 53 79 6e 74 61 78 3a  |GFX_Move.Syntax:|
0004a8c0  09 76 6f 69 64 20 47 46  58 5f 4d 6f 76 65 20 28  |.void GFX_Move (|
0004a8d0  69 6e 74 20 78 2c 20 69  6e 74 20 79 29 3b 0a 48  |int x, int y);.H|
0004a8e0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
0004a8f0  47 46 58 2e 68 3d 3e 47  46 58 3e 0a 0a 54 68 69  |GFX.h=>GFX>..Thi|
0004a900  73 20 6d 61 63 72 6f 20  75 73 65 73 20 3c 47 46  |s macro uses <GF|
0004a910  58 5f 50 6c 6f 74 3e 20  74 6f 20 6d 6f 76 65 20  |X_Plot> to move |
0004a920  74 68 65 20 67 72 61 70  68 69 63 73 20 63 75 72  |the graphics cur|
0004a930  73 6f 72 20 74 6f 20 74  68 65 20 70 6f 73 69 74  |sor to the posit|
0004a940  6f 6e 20 7b 2f 7d 28 78  2c 79 29 7b 2f 7d 2e 20  |on {/}(x,y){/}. |
0004a950  45 71 75 69 76 61 6c 65  6e 74 20 74 6f 20 3c 4d  |Equivalent to <M|
0004a960  4f 56 45 3d 3e 42 61 73  69 63 3a 4d 4f 56 45 3e  |OVE=>Basic:MOVE>|
0004a970  20 69 6e 20 42 61 73 69  63 2e 00 00 44 41 54 41  | in Basic...DATA|
0004a980  c3 00 00 00 47 46 58 5f  4d 6f 76 65 42 79 0a 53  |....GFX_MoveBy.S|
0004a990  79 6e 74 61 78 3a 09 76  6f 69 64 20 47 46 58 5f  |yntax:.void GFX_|
0004a9a0  4d 6f 76 65 42 79 20 28  69 6e 74 20 78 2c 20 69  |MoveBy (int x, i|
0004a9b0  6e 74 20 79 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |nt y);.Header:.<|
0004a9c0  44 65 73 6b 4c 69 62 3a  47 46 58 2e 68 3d 3e 47  |DeskLib:GFX.h=>G|
0004a9d0  46 58 3e 0a 0a 54 68 69  73 20 6d 61 63 72 6f 20  |FX>..This macro |
0004a9e0  75 73 65 73 20 3c 47 46  58 5f 50 6c 6f 74 3e 20  |uses <GFX_Plot> |
0004a9f0  74 6f 20 6d 6f 76 65 20  74 68 65 20 67 72 61 70  |to move the grap|
0004aa00  68 69 63 73 20 63 75 72  73 6f 72 20 66 72 6f 6d  |hics cursor from|
0004aa10  20 74 68 65 20 63 75 72  72 65 6e 20 70 6f 73 69  | the curren posi|
0004aa20  74 69 6f 6e 20 72 65 6c  61 74 69 76 65 6c 79 20  |tion relatively |
0004aa30  62 79 20 7b 2f 7d 28 78  2c 79 29 7b 2f 7d 2e 00  |by {/}(x,y){/}..|
0004aa40  44 41 54 41 1a 01 00 00  47 46 58 5f 50 6c 6f 74  |DATA....GFX_Plot|
0004aa50  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 47 46  |.Syntax:.void GF|
0004aa60  58 5f 50 6c 6f 74 20 28  69 6e 74 20 63 6f 64 65  |X_Plot (int code|
0004aa70  2c 20 69 6e 74 20 78 2c  20 69 6e 74 20 79 29 3b  |, int x, int y);|
0004aa80  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
0004aa90  62 3a 47 46 58 2e 68 3d  3e 47 46 58 3e 0a 0a 54  |b:GFX.h=>GFX>..T|
0004aaa0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 64 6f 65  |his function doe|
0004aab0  73 20 61 20 70 6c 6f 74  20 63 6f 6d 6d 61 6e 64  |s a plot command|
0004aac0  2e 20 49 74 20 69 73 20  74 68 65 20 73 61 6d 65  |. It is the same|
0004aad0  20 61 73 20 3c 50 4c 4f  54 3d 3e 42 61 73 69 63  | as <PLOT=>Basic|
0004aae0  3a 50 4c 4f 54 3e 20 69  6e 20 42 61 73 69 63 2c  |:PLOT> in Basic,|
0004aaf0  20 6f 72 20 74 68 65 20  53 57 49 20 3c 4f 53 5f  | or the SWI <OS_|
0004ab00  50 6c 6f 74 3d 3e 53 57  49 3a 4f 53 5f 50 6c 6f  |Plot=>SWI:OS_Plo|
0004ab10  74 3e 2e 20 2f 63 6f 64  65 2f 20 69 73 20 74 68  |t>. /code/ is th|
0004ab20  65 20 3c 70 6c 6f 74 20  74 79 70 65 3d 3e 67 66  |e <plot type=>gf|
0004ab30  78 5f 70 6c 6f 74 5f 3e  2c 20 61 6e 64 20 2f 78  |x_plot_>, and /x|
0004ab40  2f 20 61 6e 64 20 2f 79  2f 20 61 72 65 20 63 6f  |/ and /y/ are co|
0004ab50  6f 72 64 69 6e 61 74 65  73 2e 00 00 44 41 54 41  |ordinates...DATA|
0004ab60  8b 06 00 00 50 6c 6f 74  20 43 6f 6d 6d 61 6e 64  |....Plot Command|
0004ab70  73 0a 54 68 65 20 66 6f  6c 6c 6f 77 69 6e 67 20  |s.The following |
0004ab80  6d 61 63 72 6f 73 20 61  72 65 20 64 65 66 69 6e  |macros are defin|
0004ab90  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 47  |ed in <DeskLib:G|
0004aba0  46 58 2e 68 3d 3e 47 46  58 3e 3a 0a 0a 4d 61 63  |FX.h=>GFX>:..Mac|
0004abb0  72 6f 09 09 09 43 6f 64  65 09 4d 65 61 6e 69 6e  |ro...Code.Meanin|
0004abc0  67 0a 23 6c 69 6e 65 0a  70 6c 6f 74 5f 53 4f 4c  |g.#line.plot_SOL|
0004abd0  49 44 42 4f 54 48 09 09  30 78 30 30 09 53 6f 6c  |IDBOTH..0x00.Sol|
0004abe0  69 64 20 6c 69 6e 65 20  69 6e 63 6c 75 64 69 6e  |id line includin|
0004abf0  67 20 62 6f 74 68 20 65  6e 64 20 70 6f 69 6e 74  |g both end point|
0004ac00  73 0a 70 6c 6f 74 5f 53  4f 4c 49 44 45 58 46 49  |s.plot_SOLIDEXFI|
0004ac10  4e 41 4c 09 30 78 30 38  09 53 6f 6c 69 64 20 6c  |NAL.0x08.Solid l|
0004ac20  69 6e 65 20 65 78 63 6c  75 64 69 6e 67 20 74 68  |ine excluding th|
0004ac30  65 20 66 69 6e 61 6c 20  70 6f 69 6e 74 0a 70 6c  |e final point.pl|
0004ac40  6f 74 5f 44 4f 54 54 45  44 42 4f 54 48 09 09 30  |ot_DOTTEDBOTH..0|
0004ac50  78 31 30 09 44 6f 74 74  65 64 20 6c 69 6e 65 20  |x10.Dotted line |
0004ac60  69 6e 63 6c 2e 20 62 6f  74 68 20 65 6e 64 20 70  |incl. both end p|
0004ac70  6f 69 6e 74 73 2c 20 70  61 74 74 65 72 6e 20 72  |oints, pattern r|
0004ac80  65 73 74 61 72 74 65 64  0a 70 6c 6f 74 5f 44 4f  |estarted.plot_DO|
0004ac90  54 54 45 44 45 58 46 49  4e 41 4c 09 30 78 31 38  |TTEDEXFINAL.0x18|
0004aca0  09 44 6f 74 74 65 64 20  6c 69 6e 65 20 65 78 63  |.Dotted line exc|
0004acb0  6c 2e 20 66 69 6e 61 6c  20 70 6f 69 6e 74 2c 20  |l. final point, |
0004acc0  70 61 74 74 65 72 6e 20  72 65 73 74 61 72 74 65  |pattern restarte|
0004acd0  64 0a 70 6c 6f 74 5f 53  4f 4c 49 44 45 58 49 4e  |d.plot_SOLIDEXIN|
0004ace0  49 54 09 30 78 32 30 09  53 6f 6c 69 64 20 6c 69  |IT.0x20.Solid li|
0004acf0  6e 65 20 65 78 63 6c 75  64 69 6e 67 20 74 68 65  |ne excluding the|
0004ad00  20 69 6e 69 74 69 61 6c  20 70 6f 69 6e 74 0a 70  | initial point.p|
0004ad10  6c 6f 74 5f 53 4f 4c 49  44 45 58 42 4f 54 48 09  |lot_SOLIDEXBOTH.|
0004ad20  30 78 32 38 09 53 6f 6c  69 64 20 6c 69 6e 65 20  |0x28.Solid line |
0004ad30  65 78 63 6c 75 64 69 6e  67 20 62 6f 74 68 20 65  |excluding both e|
0004ad40  6e 64 20 70 6f 69 6e 74  73 0a 70 6c 6f 74 5f 44  |nd points.plot_D|
0004ad50  4f 54 54 45 44 45 58 49  4e 49 54 09 30 78 33 30  |OTTEDEXINIT.0x30|
0004ad60  09 44 6f 74 74 65 64 20  6c 69 6e 65 20 65 78 63  |.Dotted line exc|
0004ad70  6c 2e 20 69 6e 69 74 69  61 6c 20 70 6f 69 6e 74  |l. initial point|
0004ad80  2c 20 70 61 74 74 65 72  6e 20 63 6f 6e 74 69 6e  |, pattern contin|
0004ad90  75 65 64 0a 70 6c 6f 74  5f 44 4f 54 54 45 44 45  |ued.plot_DOTTEDE|
0004ada0  58 42 4f 54 48 09 30 78  33 38 09 44 6f 74 74 65  |XBOTH.0x38.Dotte|
0004adb0  64 20 6c 69 6e 65 20 65  78 63 6c 2e 20 62 6f 74  |d line excl. bot|
0004adc0  68 20 65 6e 64 20 70 6f  69 6e 74 73 2c 20 70 61  |h end points, pa|
0004add0  74 74 65 72 6e 20 63 6f  6e 74 69 6e 75 65 64 0a  |ttern continued.|
0004ade0  70 6c 6f 74 5f 50 4f 49  4e 54 09 09 30 78 34 30  |plot_POINT..0x40|
0004adf0  09 50 6f 69 6e 74 20 70  6c 6f 74 0a 70 6c 6f 74  |.Point plot.plot|
0004ae00  5f 48 4f 52 49 5a 4c 49  4e 45 46 49 4c 4c 4e 42  |_HORIZLINEFILLNB|
0004ae10  09 30 78 34 38 09 48 6f  72 69 7a 6f 6e 74 61 6c  |.0x48.Horizontal|
0004ae20  20 6c 69 6e 65 20 66 69  6c 6c 20 28 6c 65 66 74  | line fill (left|
0004ae30  20 26 20 72 69 67 68 74  29 20 74 6f 20 6e 6f 6e  | & right) to non|
0004ae40  2d 62 61 63 6b 67 72 6f  75 6e 64 0a 70 6c 6f 74  |-background.plot|
0004ae50  5f 54 52 49 41 4e 47 4c  45 46 49 4c 4c 09 30 78  |_TRIANGLEFILL.0x|
0004ae60  35 30 09 54 72 69 61 6e  67 6c 65 20 66 69 6c 6c  |50.Triangle fill|
0004ae70  0a 70 6c 6f 74 5f 48 4f  52 49 5a 4c 49 4e 45 46  |.plot_HORIZLINEF|
0004ae80  49 4c 4c 42 09 30 78 35  38 09 48 6f 72 69 7a 6f  |ILLB.0x58.Horizo|
0004ae90  6e 74 61 6c 20 6c 69 6e  65 20 66 69 6c 6c 20 28  |ntal line fill (|
0004aea0  72 69 67 68 74 20 6f 6e  6c 79 29 20 74 6f 20 62  |right only) to b|
0004aeb0  61 63 6b 67 72 6f 75 6e  64 0a 70 6c 6f 74 5f 52  |ackground.plot_R|
0004aec0  45 43 54 41 4e 47 4c 45  46 49 4c 4c 09 30 78 36  |ECTANGLEFILL.0x6|
0004aed0  30 09 52 65 63 74 61 6e  67 6c 65 20 66 69 6c 6c  |0.Rectangle fill|
0004aee0  0a 70 6c 6f 74 5f 48 4f  52 49 5a 4c 49 4e 45 46  |.plot_HORIZLINEF|
0004aef0  49 4c 4c 46 09 30 78 36  38 09 48 6f 72 69 7a 6f  |ILLF.0x68.Horizo|
0004af00  6e 74 61 6c 20 6c 69 6e  65 20 66 69 6c 6c 20 28  |ntal line fill (|
0004af10  6c 65 66 74 20 26 20 72  69 67 68 74 29 20 74 6f  |left & right) to|
0004af20  20 66 6f 72 65 67 72 6f  75 6e 64 0a 70 6c 6f 74  | foreground.plot|
0004af30  5f 50 41 52 41 4c 4c 45  4c 46 49 4c 4c 09 30 78  |_PARALLELFILL.0x|
0004af40  37 30 09 50 61 72 61 6c  6c 65 6c 6f 67 72 61 6d  |70.Parallelogram|
0004af50  20 66 69 6c 6c 0a 70 6c  6f 74 5f 48 4f 52 49 5a  | fill.plot_HORIZ|
0004af60  4c 49 4e 45 46 49 4c 4c  4e 46 09 30 78 37 38 09  |LINEFILLNF.0x78.|
0004af70  48 6f 72 69 7a 6f 6e 74  61 6c 20 6c 69 6e 65 20  |Horizontal line |
0004af80  66 69 6c 6c 20 28 72 69  67 68 74 20 6f 6e 6c 79  |fill (right only|
0004af90  29 20 74 6f 20 6e 6f 6e  2d 66 6f 72 65 67 72 6f  |) to non-foregro|
0004afa0  75 6e 64 0a 70 6c 6f 74  5f 46 4c 4f 4f 44 54 4f  |und.plot_FLOODTO|
0004afb0  42 41 43 4b 09 30 78 38  30 09 46 6c 6f 6f 64 20  |BACK.0x80.Flood |
0004afc0  74 6f 20 6e 6f 6e 2d 62  61 63 6b 67 72 6f 75 6e  |to non-backgroun|
0004afd0  64 0a 70 6c 6f 74 5f 46  4c 4f 4f 44 54 4f 46 4f  |d.plot_FLOODTOFO|
0004afe0  52 45 09 30 78 38 38 09  46 6c 6f 6f 64 20 74 6f  |RE.0x88.Flood to|
0004aff0  20 66 6f 72 65 67 72 6f  75 6e 64 0a 70 6c 6f 74  | foreground.plot|
0004b000  5f 43 49 52 43 4c 45 09  09 30 78 39 30 09 43 69  |_CIRCLE..0x90.Ci|
0004b010  72 63 6c 65 20 6f 75 74  6c 69 6e 65 0a 70 6c 6f  |rcle outline.plo|
0004b020  74 5f 43 49 52 43 4c 45  46 49 4c 4c 09 09 30 78  |t_CIRCLEFILL..0x|
0004b030  39 38 09 43 69 72 63 6c  65 20 66 69 6c 6c 0a 70  |98.Circle fill.p|
0004b040  6c 6f 74 5f 43 49 52 43  4c 45 41 52 43 09 09 30  |lot_CIRCLEARC..0|
0004b050  78 41 30 09 43 69 72 63  75 6c 61 72 20 61 72 63  |xA0.Circular arc|
0004b060  0a 70 6c 6f 74 5f 53 45  47 4d 45 4e 54 09 09 30  |.plot_SEGMENT..0|
0004b070  78 41 38 09 53 65 67 6d  65 6e 74 0a 70 6c 6f 74  |xA8.Segment.plot|
0004b080  5f 53 45 43 54 4f 52 09  09 30 78 42 30 09 53 65  |_SECTOR..0xB0.Se|
0004b090  63 74 6f 72 0a 70 6c 6f  74 5f 42 4c 4f 43 4b 09  |ctor.plot_BLOCK.|
0004b0a0  09 30 78 42 38 09 42 6c  6f 63 6b 20 63 6f 70 79  |.0xB8.Block copy|
0004b0b0  2f 6d 6f 76 65 20 28 68  61 73 20 64 69 66 66 65  |/move (has diffe|
0004b0c0  72 65 6e 74 20 3c 6d 6f  64 69 66 69 65 72 73 3d  |rent <modifiers=|
0004b0d0  3e 47 46 58 5f 70 6c 6f  74 62 6d 6f 64 5f 3e 29  |>GFX_plotbmod_>)|
0004b0e0  0a 70 6c 6f 74 5f 45 4c  4c 49 50 53 45 09 09 30  |.plot_ELLIPSE..0|
0004b0f0  78 43 30 09 45 6c 6c 69  70 73 65 20 6f 75 74 6c  |xC0.Ellipse outl|
0004b100  69 6e 65 0a 70 6c 6f 74  5f 45 4c 4c 49 50 53 45  |ine.plot_ELLIPSE|
0004b110  46 49 4c 4c 09 30 78 43  38 09 45 6c 6c 69 70 73  |FILL.0xC8.Ellips|
0004b120  65 20 66 69 6c 6c 0a 70  6c 6f 74 5f 47 52 41 50  |e fill.plot_GRAP|
0004b130  48 49 43 53 43 48 41 52  09 30 78 44 30 09 46 6f  |HICSCHAR.0xD0.Fo|
0004b140  6e 74 20 70 72 69 6e 74  69 6e 67 20 28 6f 62 73  |nt printing (obs|
0004b150  6f 6c 65 74 65 20 2d 20  64 6f 6e 27 74 20 75 73  |olete - don't us|
0004b160  65 29 0a 70 6c 6f 74 5f  53 50 52 49 54 45 09 09  |e).plot_SPRITE..|
0004b170  30 78 45 38 09 53 70 72  69 74 65 20 70 6c 6f 74  |0xE8.Sprite plot|
0004b180  0a 0a 4f 6e 74 6f 20 65  61 63 68 20 6f 66 20 74  |..Onto each of t|
0004b190  68 65 73 65 20 63 61 6e  20 62 65 20 61 64 64 65  |hese can be adde|
0004b1a0  64 20 61 20 3c 6d 6f 64  69 66 69 65 72 3d 3e 47  |d a <modifier=>G|
0004b1b0  46 58 5f 70 6c 6f 74 6d  6f 64 5f 3e 20 77 68 69  |FX_plotmod_> whi|
0004b1c0  63 68 20 61 66 66 65 63  74 73 20 74 68 65 20 77  |ch affects the w|
0004b1d0  61 79 20 74 68 65 20 63  6f 6d 6d 61 6e 64 20 62  |ay the command b|
0004b1e0  65 68 61 76 65 73 2e 00  44 41 54 41 6f 01 00 00  |ehaves..DATAo...|
0004b1f0  50 6c 6f 74 20 43 6f 64  65 20 42 6c 6f 63 6b 20  |Plot Code Block |
0004b200  4d 6f 64 69 66 69 65 72  73 0a 54 68 65 20 66 6f  |Modifiers.The fo|
0004b210  6c 6c 6f 77 69 6e 67 20  6d 61 63 72 6f 73 20 61  |llowing macros a|
0004b220  72 65 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 44  |re defined in <D|
0004b230  65 73 6b 4c 69 62 3a 47  46 58 2e 68 3d 3e 47 46  |eskLib:GFX.h=>GF|
0004b240  58 3e 0a 7b 77 72 61 70  20 6f 66 66 7d 0a 4d 61  |X>.{wrap off}.Ma|
0004b250  63 72 6f 09 09 09 43 6f  64 65 09 4d 65 61 6e 69  |cro...Code.Meani|
0004b260  6e 67 0a 23 6c 69 6e 65  0a 70 6c 6f 74 5f 42 4d  |ng.#line.plot_BM|
0004b270  4f 56 45 52 45 4c 09 09  30 09 4d 6f 76 65 20 72  |OVEREL..0.Move r|
0004b280  65 6c 61 74 69 76 65 0a  70 6c 6f 74 5f 42 4d 4f  |elative.plot_BMO|
0004b290  56 45 52 45 43 54 52 45  4c 09 31 09 4d 6f 76 65  |VERECTREL.1.Move|
0004b2a0  20 72 65 63 74 61 6e 67  6c 65 20 72 65 6c 61 74  | rectangle relat|
0004b2b0  69 76 65 0a 70 6c 6f 74  5f 42 43 4f 50 59 52 45  |ive.plot_BCOPYRE|
0004b2c0  43 54 52 45 4c 09 32 09  43 6f 70 79 20 72 65 63  |CTREL.2.Copy rec|
0004b2d0  74 61 6e 67 6c 65 20 72  65 6c 61 74 69 76 65 0a  |tangle relative.|
0004b2e0  0a 70 6c 6f 74 5f 42 4d  4f 56 45 41 42 53 09 09  |.plot_BMOVEABS..|
0004b2f0  34 09 4d 6f 76 65 20 61  62 73 6f 6c 75 74 65 0a  |4.Move absolute.|
0004b300  70 6c 6f 74 5f 42 4d 4f  56 45 52 45 43 54 41 42  |plot_BMOVERECTAB|
0004b310  53 09 35 09 4d 6f 76 65  20 72 65 63 74 61 6e 67  |S.5.Move rectang|
0004b320  6c 65 20 61 62 73 6f 6c  75 74 65 0a 70 6c 6f 74  |le absolute.plot|
0004b330  5f 42 43 4f 50 59 52 45  43 54 41 42 53 09 36 09  |_BCOPYRECTABS.6.|
0004b340  43 6f 70 79 20 72 65 63  74 61 6e 67 6c 65 20 61  |Copy rectangle a|
0004b350  62 73 6f 6c 75 74 65 00  44 41 54 41 e9 01 00 00  |bsolute.DATA....|
0004b360  50 6c 6f 74 20 43 6f 64  65 20 4d 6f 64 69 66 69  |Plot Code Modifi|
0004b370  65 72 73 0a 54 68 65 20  66 6f 6c 6c 6f 77 69 6e  |ers.The followin|
0004b380  67 20 6d 61 63 72 6f 73  20 61 72 65 20 64 65 66  |g macros are def|
0004b390  69 6e 65 64 20 69 6e 20  3c 44 65 73 6b 4c 69 62  |ined in <DeskLib|
0004b3a0  3a 47 46 58 2e 68 3d 3e  47 46 58 3e 2e 0a 7b 77  |:GFX.h=>GFX>..{w|
0004b3b0  72 61 70 20 6f 66 66 7d  0a 4d 61 63 72 6f 09 09  |rap off}.Macro..|
0004b3c0  09 43 6f 64 65 09 4d 65  61 6e 69 6e 67 0a 23 6c  |.Code.Meaning.#l|
0004b3d0  69 6e 65 0a 70 6c 6f 74  5f 4d 4f 56 45 43 55 52  |ine.plot_MOVECUR|
0004b3e0  53 4f 52 52 45 4c 09 30  09 4d 6f 76 65 20 63 75  |SORREL.0.Move cu|
0004b3f0  72 73 6f 72 20 72 65 6c  61 74 69 76 65 0a 70 6c  |rsor relative.pl|
0004b400  6f 74 5f 44 52 41 57 52  45 4c 46 4f 52 45 09 31  |ot_DRAWRELFORE.1|
0004b410  09 50 6c 6f 74 20 72 65  6c 61 74 69 76 65 20 69  |.Plot relative i|
0004b420  6e 20 66 6f 72 65 67 72  6f 75 6e 64 0a 70 6c 6f  |n foreground.plo|
0004b430  74 5f 44 52 41 57 52 45  4c 49 4e 56 45 52 53 45  |t_DRAWRELINVERSE|
0004b440  09 32 09 50 6c 6f 74 20  72 65 6c 61 74 69 76 65  |.2.Plot relative|
0004b450  20 69 6e 20 69 6e 76 65  72 73 65 0a 70 6c 6f 74  | in inverse.plot|
0004b460  5f 44 52 41 57 52 45 4c  42 41 43 4b 09 33 09 50  |_DRAWRELBACK.3.P|
0004b470  6c 6f 74 20 72 65 6c 61  74 69 76 65 20 69 6e 20  |lot relative in |
0004b480  62 61 63 6b 67 72 6f 75  6e 64 0a 70 6c 6f 74 5f  |background.plot_|
0004b490  4d 4f 56 45 43 55 52 53  4f 52 41 42 53 09 34 09  |MOVECURSORABS.4.|
0004b4a0  4d 6f 76 65 20 63 75 72  73 6f 72 20 61 62 73 6f  |Move cursor abso|
0004b4b0  6c 75 74 65 0a 70 6c 6f  74 5f 44 52 41 57 41 42  |lute.plot_DRAWAB|
0004b4c0  53 46 4f 52 45 09 35 09  50 6c 6f 74 20 61 62 73  |SFORE.5.Plot abs|
0004b4d0  6f 6c 75 74 65 20 69 6e  20 66 6f 72 65 67 72 6f  |olute in foregro|
0004b4e0  75 6e 64 0a 70 6c 6f 74  5f 44 52 41 57 41 42 53  |und.plot_DRAWABS|
0004b4f0  49 4e 56 45 52 53 45 09  36 09 50 6c 6f 74 20 61  |INVERSE.6.Plot a|
0004b500  62 73 6f 6c 75 74 65 20  69 6e 20 69 6e 76 65 72  |bsolute in inver|
0004b510  73 65 0a 70 6c 6f 74 5f  44 52 41 57 41 42 53 42  |se.plot_DRAWABSB|
0004b520  41 43 4b 09 37 09 50 6c  6f 74 20 61 62 73 6f 6c  |ACK.7.Plot absol|
0004b530  75 74 65 20 69 6e 20 62  61 63 6b 67 72 6f 75 6e  |ute in backgroun|
0004b540  64 00 00 00 44 41 54 41  d8 00 00 00 47 46 58 5f  |d...DATA....GFX_|
0004b550  50 6c 6f 74 50 6f 69 6e  74 0a 53 79 6e 74 61 78  |PlotPoint.Syntax|
0004b560  3a 09 76 6f 69 64 20 47  46 58 5f 50 6c 6f 74 50  |:.void GFX_PlotP|
0004b570  6f 69 6e 74 20 28 69 6e  74 20 78 2c 20 69 6e 74  |oint (int x, int|
0004b580  20 79 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  | y);.Header:.<De|
0004b590  73 6b 4c 69 62 3a 47 46  58 2e 68 3d 3e 47 46 58  |skLib:GFX.h=>GFX|
0004b5a0  3e 0a 0a 54 68 69 73 20  6d 61 63 72 6f 20 75 73  |>..This macro us|
0004b5b0  65 73 20 3c 47 46 58 5f  50 6c 6f 74 3e 20 74 6f  |es <GFX_Plot> to|
0004b5c0  20 70 6c 6f 74 20 61 20  73 69 6e 67 6c 65 20 70  | plot a single p|
0004b5d0  6f 69 6e 74 20 6f 6e 20  74 68 65 20 73 63 72 65  |oint on the scre|
0004b5e0  65 6e 20 69 6e 20 74 68  65 20 63 75 72 72 65 6e  |en in the curren|
0004b5f0  74 20 67 72 61 70 68 69  63 73 20 66 6f 72 65 67  |t graphics foreg|
0004b600  72 6f 75 6e 64 20 63 6f  6c 6f 75 72 20 61 74 20  |round colour at |
0004b610  7b 2f 7d 28 78 2c 79 29  7b 2f 7d 2e 44 41 54 41  |{/}(x,y){/}.DATA|
0004b620  25 01 00 00 47 46 58 5f  50 6c 6f 74 50 6f 69 6e  |%...GFX_PlotPoin|
0004b630  74 42 79 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |tBy.Syntax:.void|
0004b640  20 47 46 58 5f 50 6c 6f  74 50 6f 69 6e 74 42 79  | GFX_PlotPointBy|
0004b650  20 28 69 6e 74 20 78 2c  20 69 6e 74 20 79 29 3b  | (int x, int y);|
0004b660  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
0004b670  62 3a 47 46 58 2e 68 3d  3e 47 46 58 3e 0a 0a 54  |b:GFX.h=>GFX>..T|
0004b680  68 69 73 20 6d 61 63 72  6f 20 75 73 65 73 20 3c  |his macro uses <|
0004b690  47 46 58 5f 50 6c 6f 74  3e 20 74 6f 20 70 6c 6f  |GFX_Plot> to plo|
0004b6a0  74 20 61 20 73 69 6e 67  6c 65 20 70 6f 69 6e 74  |t a single point|
0004b6b0  20 6f 6e 20 74 68 65 20  73 63 72 65 65 6e 20 69  | on the screen i|
0004b6c0  6e 20 74 68 65 20 63 75  72 72 65 6e 74 20 67 72  |n the current gr|
0004b6d0  61 70 68 69 63 73 20 66  6f 72 65 67 72 6f 75 6e  |aphics foregroun|
0004b6e0  64 20 63 6f 6c 6f 75 72  20 61 74 20 61 20 70 6f  |d colour at a po|
0004b6f0  69 6e 74 20 77 68 6f 73  65 20 6f 66 66 73 65 74  |int whose offset|
0004b700  20 72 65 6c 61 74 69 76  65 20 74 6f 20 74 68 65  | relative to the|
0004b710  20 63 75 72 72 65 6e 74  20 67 72 61 70 68 69 63  | current graphic|
0004b720  73 20 63 75 72 73 6f 72  20 70 6f 73 69 74 69 6f  |s cursor positio|
0004b730  6e 20 69 73 20 7b 2f 7d  28 78 2c 79 29 7b 2f 7d  |n is {/}(x,y){/}|
0004b740  2e 00 00 00 44 41 54 41  0d 01 00 00 47 46 58 5f  |....DATA....GFX_|
0004b750  52 65 63 74 61 6e 67 6c  65 0a 53 79 6e 74 61 78  |Rectangle.Syntax|
0004b760  3a 09 76 6f 69 64 20 47  46 58 5f 52 65 63 74 61  |:.void GFX_Recta|
0004b770  6e 67 6c 65 20 28 69 6e  74 20 78 2c 20 69 6e 74  |ngle (int x, int|
0004b780  20 79 2c 20 69 6e 74 20  77 2c 20 69 6e 74 20 68  | y, int w, int h|
0004b790  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
0004b7a0  4c 69 62 3a 47 46 58 2e  68 3d 3e 47 46 58 3e 0a  |Lib:GFX.h=>GFX>.|
0004b7b0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 64  |.This function d|
0004b7c0  72 61 77 73 20 61 20 72  65 63 74 61 6e 67 6c 65  |raws a rectangle|
0004b7d0  20 6f 75 74 6c 69 6e 65  20 6f 6e 20 74 68 65 20  | outline on the |
0004b7e0  73 63 72 65 65 6e 20 69  6e 20 74 68 65 20 63 75  |screen in the cu|
0004b7f0  72 72 65 6e 74 20 67 72  61 70 68 69 63 73 20 66  |rrent graphics f|
0004b800  6f 72 65 67 72 6f 75 6e  64 20 63 6f 6c 6f 75 72  |oreground colour|
0004b810  2c 20 77 69 74 68 20 6f  6e 65 20 63 6f 72 6e 65  |, with one corne|
0004b820  72 20 61 74 20 7b 2f 7d  28 78 2c 79 29 7b 2f 7d  |r at {/}(x,y){/}|
0004b830  20 61 6e 64 20 61 6e 6f  74 68 65 72 20 61 74 20  | and another at |
0004b840  7b 2f 7d 28 78 2b 77 2c  20 79 2b 68 29 7b 2f 7d  |{/}(x+w, y+h){/}|
0004b850  2e 00 00 00 44 41 54 41  15 01 00 00 47 46 58 5f  |....DATA....GFX_|
0004b860  52 65 63 74 61 6e 67 6c  65 46 69 6c 6c 0a 53 79  |RectangleFill.Sy|
0004b870  6e 74 61 78 3a 09 76 6f  69 64 20 47 46 58 5f 52  |ntax:.void GFX_R|
0004b880  65 63 74 61 6e 67 6c 65  46 69 6c 6c 20 28 69 6e  |ectangleFill (in|
0004b890  74 20 78 2c 20 69 6e 74  20 79 2c 20 69 6e 74 20  |t x, int y, int |
0004b8a0  77 2c 20 69 6e 74 20 68  29 3b 0a 48 65 61 64 65  |w, int h);.Heade|
0004b8b0  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 47 46 58 2e  |r:.<DeskLib:GFX.|
0004b8c0  68 3d 3e 47 46 58 3e 0a  0a 54 68 69 73 20 6d 61  |h=>GFX>..This ma|
0004b8d0  63 72 6f 20 75 73 65 73  20 3c 47 46 58 5f 50 6c  |cro uses <GFX_Pl|
0004b8e0  6f 74 3e 20 74 6f 20 64  72 61 77 20 61 20 66 69  |ot> to draw a fi|
0004b8f0  6c 6c 65 64 20 72 65 63  74 61 6e 67 6c 65 20 69  |lled rectangle i|
0004b900  6e 20 74 68 65 20 63 75  72 72 65 6e 74 20 67 72  |n the current gr|
0004b910  61 70 68 69 63 73 20 66  6f 72 65 67 72 6f 75 6e  |aphics foregroun|
0004b920  64 20 63 6f 6c 6f 75 72  2c 20 77 69 74 68 20 6f  |d colour, with o|
0004b930  6e 65 20 63 6f 72 6e 65  72 20 61 74 20 7b 2f 7d  |ne corner at {/}|
0004b940  28 78 2c 79 29 7b 2f 7d  20 61 6e 64 20 61 6e 6f  |(x,y){/} and ano|
0004b950  74 68 65 72 20 61 74 20  7b 2f 7d 28 78 2b 77 2c  |ther at {/}(x+w,|
0004b960  20 79 2b 68 29 7b 2f 7d  2e 00 00 00 44 41 54 41  | y+h){/}....DATA|
0004b970  55 00 00 00 54 69 6d 73  4c 69 62 3a 47 46 58 2e  |U...TimsLib:GFX.|
0004b980  68 0a 54 68 69 73 20 68  65 61 64 65 72 20 66 69  |h.This header fi|
0004b990  6c 65 20 64 65 63 6c 61  72 65 73 20 6a 75 73 74  |le declares just|
0004b9a0  20 6f 6e 65 20 66 75 6e  63 74 69 6f 6e 2d 6c 69  | one function-li|
0004b9b0  6b 65 20 6d 61 63 72 6f  2c 20 3c 47 43 6f 6c 3e  |ke macro, <GCol>|
0004b9c0  2e 00 00 00 44 41 54 41  76 01 00 00 47 46 58 5f  |....DATAv...GFX_|
0004b9d0  56 44 55 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |VDU.Syntax:.void|
0004b9e0  20 47 46 58 5f 56 44 55  20 28 63 68 61 72 20 63  | GFX_VDU (char c|
0004b9f0  68 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |h);.Header:.<Des|
0004ba00  6b 4c 69 62 3a 47 46 58  2e 68 3d 3e 47 46 58 3e  |kLib:GFX.h=>GFX>|
0004ba10  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0004ba20  73 65 6e 64 73 20 74 68  65 20 73 69 6e 67 6c 65  |sends the single|
0004ba30  20 63 68 61 72 61 63 74  65 72 20 73 70 65 63 69  | character speci|
0004ba40  66 69 65 64 20 69 6e 20  2f 63 68 2f 20 74 6f 20  |fied in /ch/ to |
0004ba50  74 68 65 20 56 44 55 20  64 72 69 76 65 72 73 20  |the VDU drivers |
0004ba60  28 61 73 20 69 66 20 3c  4f 53 5f 57 72 69 74 65  |(as if <OS_Write|
0004ba70  43 3d 3e 53 57 49 3a 4f  53 5f 57 72 69 74 65 43  |C=>SWI:OS_WriteC|
0004ba80  3e 20 68 61 64 20 62 65  65 6e 20 63 61 6c 6c 65  |> had been calle|
0004ba90  64 29 2e 20 2f 63 68 2f  20 63 61 6e 20 63 6f 6e  |d). /ch/ can con|
0004baa0  74 61 69 6e 20 73 6f 6d  65 20 3c 63 6f 6e 74 72  |tain some <contr|
0004bab0  6f 6c 20 63 6f 64 65 73  3d 3e 56 44 55 3a 21 52  |ol codes=>VDU:!R|
0004bac0  6f 6f 74 3e 2c 20 61 73  20 77 65 6c 6c 20 61 73  |oot>, as well as|
0004bad0  20 70 72 69 6e 74 61 62  6c 65 20 63 68 61 72 61  | printable chara|
0004bae0  63 74 65 72 73 2e 0a 0a  41 20 6d 61 63 72 6f 20  |cters...A macro |
0004baf0  69 73 20 64 65 66 69 6e  65 64 20 77 68 69 63 68  |is defined which|
0004bb00  20 65 6e 61 62 6c 65 73  20 79 6f 75 20 74 6f 20  | enables you to |
0004bb10  63 61 6c 6c 20 74 68 69  73 20 66 75 6e 63 74 69  |call this functi|
0004bb20  6f 6e 20 77 69 74 68 20  7b 66 43 6f 64 65 7d 56  |on with {fCode}V|
0004bb30  44 55 28 63 68 29 7b 66  7d 2e 00 00 44 41 54 41  |DU(ch){f}...DATA|
0004bb40  14 02 00 00 47 46 58 5f  57 61 69 74 0a 53 79 6e  |....GFX_Wait.Syn|
0004bb50  74 61 78 3a 09 76 6f 69  64 20 47 46 58 5f 57 61  |tax:.void GFX_Wa|
0004bb60  69 74 20 28 76 6f 69 64  29 3b 0a 48 65 61 64 65  |it (void);.Heade|
0004bb70  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 47 46 58 2e  |r:.<DeskLib:GFX.|
0004bb80  68 3d 3e 47 46 58 3e 0a  0a 54 68 69 73 20 66 75  |h=>GFX>..This fu|
0004bb90  6e 63 74 69 6f 6e 20 77  61 69 74 73 20 75 6e 74  |nction waits unt|
0004bba0  69 6c 20 74 68 65 20 76  65 72 74 69 63 61 6c 20  |il the vertical |
0004bbb0  73 63 72 65 65 6e 20 72  65 66 72 65 73 68 20 68  |screen refresh h|
0004bbc0  61 73 20 66 69 6e 69 73  68 65 64 2e 20 54 68 69  |as finished. Thi|
0004bbd0  73 20 6d 65 61 6e 73 20  74 68 61 74 20 69 74 20  |s means that it |
0004bbe0  72 65 74 75 72 6e 73 20  5f 6a 75 73 74 20 61 66  |returns _just af|
0004bbf0  74 65 72 5f 20 74 68 65  20 73 63 72 65 65 6e 20  |ter_ the screen |
0004bc00  68 61 73 20 62 65 65 6e  20 75 70 64 61 74 65 64  |has been updated|
0004bc10  20 6f 6e 20 74 68 65 20  6d 6f 6e 69 74 6f 72 2c  | on the monitor,|
0004bc20  20 73 6f 20 61 6e 79 20  61 6c 74 65 72 61 74 69  | so any alterati|
0004bc30  6f 6e 20 6d 61 64 65 20  74 6f 20 74 68 65 20 73  |on made to the s|
0004bc40  63 72 65 65 6e 20 6e 6f  77 20 77 69 6c 6c 20 6e  |creen now will n|
0004bc50  6f 74 20 6f 63 63 75 72  20 77 68 69 6c 65 20 69  |ot occur while i|
0004bc60  74 20 69 73 20 62 65 69  6e 67 20 72 65 64 72 61  |t is being redra|
0004bc70  77 6e 20 28 61 6e 64 20  74 68 65 72 65 66 6f 72  |wn (and therefor|
0004bc80  65 20 61 76 6f 69 64 73  20 66 6c 69 63 6b 65 72  |e avoids flicker|
0004bc90  29 2e 20 49 74 20 69 73  20 65 71 75 69 76 61 6c  |). It is equival|
0004bca0  65 6e 74 20 74 6f 20 3c  57 41 49 54 3d 3e 42 61  |ent to <WAIT=>Ba|
0004bcb0  73 69 63 3a 57 41 49 54  3e 20 69 6e 20 42 61 73  |sic:WAIT> in Bas|
0004bcc0  69 63 2e 0a 0a 4f 6e 20  54 56 2d 74 79 70 65 20  |ic...On TV-type |
0004bcd0  6d 6f 6e 69 74 6f 72 73  20 74 68 65 20 72 65 66  |monitors the ref|
0004bce0  72 65 73 68 20 68 61 70  70 65 6e 73 20 35 30 20  |resh happens 50 |
0004bcf0  74 69 6d 65 73 20 61 20  73 65 63 6f 6e 64 2c 20  |times a second, |
0004bd00  62 75 74 20 6d 75 6c 74  69 73 63 61 6e 73 2c 20  |but multiscans, |
0004bd10  56 47 41 2c 20 53 56 47  41 20 61 6e 64 20 68 69  |VGA, SVGA and hi|
0004bd20  2d 72 65 73 20 6d 6f 6e  6f 20 6d 6f 6e 69 74 6f  |-res mono monito|
0004bd30  72 73 20 68 61 76 65 20  64 69 66 66 65 72 65 6e  |rs have differen|
0004bd40  74 20 72 65 66 72 65 73  68 20 72 61 74 65 73 2e  |t refresh rates.|
0004bd50  44 41 54 41 d7 00 00 00  47 46 58 5f 57 72 69 74  |DATA....GFX_Writ|
0004bd60  65 30 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |e0.Syntax:.void |
0004bd70  47 46 58 5f 57 72 69 74  65 30 20 28 63 68 61 72  |GFX_Write0 (char|
0004bd80  20 2a 73 74 72 69 6e 67  29 3b 0a 48 65 61 64 65  | *string);.Heade|
0004bd90  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 47 46 58 2e  |r:.<DeskLib:GFX.|
0004bda0  68 3d 3e 47 46 58 3e 0a  0a 54 68 69 73 20 66 75  |h=>GFX>..This fu|
0004bdb0  6e 63 74 69 6f 6e 20 77  72 69 74 65 73 20 74 68  |nction writes th|
0004bdc0  65 20 67 69 76 65 6e 20  6e 75 6c 6c 2d 74 65 72  |e given null-ter|
0004bdd0  6d 69 6e 61 74 65 64 20  73 74 72 69 6e 67 20 74  |minated string t|
0004bde0  6f 20 74 68 65 20 56 44  55 20 73 74 72 65 61 6d  |o the VDU stream|
0004bdf0  2c 20 61 73 20 69 66 20  53 57 49 20 3c 4f 53 5f  |, as if SWI <OS_|
0004be00  57 72 69 74 65 30 3d 3e  53 57 49 3a 4f 53 5f 57  |Write0=>SWI:OS_W|
0004be10  72 69 74 65 30 3e 20 68  61 64 20 62 65 65 6e 20  |rite0> had been |
0004be20  63 61 6c 6c 65 64 2e 00  44 41 54 41 f3 00 00 00  |called..DATA....|
0004be30  47 46 58 5f 57 72 69 74  65 4e 0a 53 79 6e 74 61  |GFX_WriteN.Synta|
0004be40  78 3a 09 76 6f 69 64 20  47 46 58 5f 57 72 69 74  |x:.void GFX_Writ|
0004be50  65 4e 20 28 63 68 61 72  20 2a 73 74 72 69 6e 67  |eN (char *string|
0004be60  2c 20 69 6e 74 20 6e 29  3b 0a 48 65 61 64 65 72  |, int n);.Header|
0004be70  3a 09 3c 44 65 73 6b 4c  69 62 3a 47 46 58 2e 68  |:.<DeskLib:GFX.h|
0004be80  3d 3e 47 46 58 3e 0a 0a  54 68 69 73 20 66 75 6e  |=>GFX>..This fun|
0004be90  63 74 69 6f 6e 20 77 72  69 74 65 73 20 2f 6e 2f  |ction writes /n/|
0004bea0  20 63 68 61 72 61 63 74  65 72 73 2c 20 66 72 6f  | characters, fro|
0004beb0  6d 20 74 68 65 20 73 74  72 69 6e 67 20 77 68 6f  |m the string who|
0004bec0  73 65 20 70 6f 69 6e 74  65 72 20 69 73 20 67 69  |se pointer is gi|
0004bed0  76 65 6e 2c 20 74 6f 20  74 68 65 20 56 44 55 20  |ven, to the VDU |
0004bee0  73 74 72 65 61 6d 2e 20  49 74 20 69 73 20 65 71  |stream. It is eq|
0004bef0  75 69 76 61 6c 65 6e 74  20 74 6f 20 53 57 49 20  |uivalent to SWI |
0004bf00  3c 4f 53 5f 57 72 69 74  65 4e 3d 3e 53 57 49 3a  |<OS_WriteN=>SWI:|
0004bf10  4f 53 5f 57 72 69 74 65  4e 3e 2e 00 44 41 54 41  |OS_WriteN>..DATA|
0004bf20  02 01 00 00 67 6d 74 69  6d 65 0a 53 79 6e 74 61  |....gmtime.Synta|
0004bf30  78 3a 09 3c 73 74 72 75  63 74 a0 74 6d 3e 20 2a  |x:.<struct.tm> *|
0004bf40  67 6d 74 69 6d 65 20 28  3c 74 69 6d 65 5f 74 3e  |gmtime (<time_t>|
0004bf50  20 2a 74 69 6d 65 72 29  3b 0a 48 65 61 64 65 72  | *timer);.Header|
0004bf60  3a 09 3c 74 69 6d 65 2e  68 3d 3e 74 69 6d 65 5f  |:.<time.h=>time_|
0004bf70  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |h>..Returns:.Poi|
0004bf80  6e 74 65 72 20 74 6f 20  74 68 65 20 62 72 6f 6b  |nter to the brok|
0004bf90  65 6e 2d 64 6f 77 6e 20  74 69 6d 65 2e 0a 0a 54  |en-down time...T|
0004bfa0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 6f 6e  |his function con|
0004bfb0  76 65 72 74 73 20 74 68  65 20 63 61 6c 65 6e 64  |verts the calend|
0004bfc0  61 72 20 74 69 6d 65 20  70 6f 69 6e 74 65 64 20  |ar time pointed |
0004bfd0  74 6f 20 62 79 20 2f 74  69 6d 65 72 2f 20 69 6e  |to by /timer/ in|
0004bfe0  74 6f 20 61 20 62 72 6f  6b 65 6e 2d 64 6f 77 6e  |to a broken-down|
0004bff0  20 74 69 6d 65 2c 20 65  78 70 72 65 73 73 65 64  | time, expressed|
0004c000  20 69 6e 20 47 72 65 65  6e 77 69 63 68 20 4d 65  | in Greenwich Me|
0004c010  61 6e 20 54 69 6d 65 20  28 47 4d 54 29 2e 00 00  |an Time (GMT)...|
0004c020  44 41 54 41 3a 02 00 00  44 65 73 6b 4c 69 62 3a  |DATA:...DeskLib:|
0004c030  48 61 6e 64 6c 65 72 2e  68 0a 56 65 72 73 69 6f  |Handler.h.Versio|
0004c040  6e 3a 20 31 2e 30 33 20  28 30 31 20 41 70 72 20  |n: 1.03 (01 Apr |
0004c050  31 39 39 34 29 0a 23 6c  69 6e 65 0a 54 68 69 73  |1994).#line.This|
0004c060  20 68 65 61 64 65 72 20  64 65 63 6c 61 72 65 73  | header declares|
0004c070  20 66 75 6e 63 74 69 6f  6e 73 20 77 68 69 63 68  | functions which|
0004c080  20 61 72 65 20 66 6f 72  20 75 73 65 20 77 69 74  | are for use wit|
0004c090  68 20 74 68 65 20 3c 45  76 65 6e 74 3e 20 6f 72  |h the <Event> or|
0004c0a0  20 3c 45 76 65 6e 74 4d  73 67 3e 20 73 79 73 74  | <EventMsg> syst|
0004c0b0  65 6d 73 2e 20 54 68 65  79 20 61 72 65 20 6e 6f  |ems. They are no|
0004c0c0  74 20 69 6e 74 65 6e 64  65 64 20 74 6f 20 62 65  |t intended to be|
0004c0d0  20 63 61 6c 6c 65 64 20  64 69 72 65 63 74 6c 79  | called directly|
0004c0e0  2e 0a 0a 23 69 6e 64 65  6e 74 20 35 0a 23 74 61  |...#indent 5.#ta|
0004c0f0  62 6c 65 20 63 6f 6c 75  6d 6e 73 20 32 0a 3c 48  |ble columns 2.<H|
0004c100  61 6e 64 6c 65 72 5f 43  6c 6f 73 65 57 69 6e 64  |andler_CloseWind|
0004c110  6f 77 3e 0a 3c 48 61 6e  64 6c 65 72 5f 44 65 6c  |ow>.<Handler_Del|
0004c120  65 74 65 57 69 6e 64 6f  77 3e 0a 3c 48 61 6e 64  |eteWindow>.<Hand|
0004c130  6c 65 72 5f 4f 70 65 6e  57 69 6e 64 6f 77 3e 0a  |ler_OpenWindow>.|
0004c140  3c 48 61 6e 64 6c 65 72  5f 4e 75 6c 6c 52 65 64  |<Handler_NullRed|
0004c150  72 61 77 3e 0a 3c 48 61  6e 64 6c 65 72 5f 43 6c  |raw>.<Handler_Cl|
0004c160  69 63 6b 4f 4b 3e 0a 3c  48 61 6e 64 6c 65 72 5f  |ickOK>.<Handler_|
0004c170  4d 6f 64 65 43 68 61 6e  67 65 3e 0a 3c 48 61 6e  |ModeChange>.<Han|
0004c180  64 6c 65 72 5f 44 72 61  67 4e 55 4c 4c 3e 0a 3c  |dler_DragNULL>.<|
0004c190  48 61 6e 64 6c 65 72 5f  44 72 61 67 46 69 6e 69  |Handler_DragFini|
0004c1a0  73 68 3e 0a 3c 48 61 6e  64 6c 65 72 5f 48 61 74  |sh>.<Handler_Hat|
0004c1b0  63 68 52 65 64 72 61 77  3e 0a 23 65 6e 64 74 61  |chRedraw>.#endta|
0004c1c0  62 6c 65 0a 0a 23 69 6e  64 65 6e 74 0a 41 73 20  |ble..#indent.As |
0004c1d0  61 20 63 6f 6e 73 65 71  75 65 6e 63 65 20 6f 66  |a consequence of|
0004c1e0  20 74 68 65 69 72 20 75  73 65 2c 20 61 6c 6c 20  | their use, all |
0004c1f0  74 68 65 20 66 75 6e 63  74 69 6f 6e 73 20 68 61  |the functions ha|
0004c200  76 65 20 74 68 65 20 73  61 6d 65 20 70 72 6f 74  |ve the same prot|
0004c210  6f 74 79 70 65 20 28 74  68 65 79 20 61 72 65 20  |otype (they are |
0004c220  61 6c 6c 20 3c 65 76 65  6e 74 5f 68 61 6e 64 6c  |all <event_handl|
0004c230  65 72 3e 73 29 20 61 6e  64 20 61 6c 6c 20 72 65  |er>s) and all re|
0004c240  74 75 72 6e 20 3c 54 52  55 45 3e 20 69 66 20 73  |turn <TRUE> if s|
0004c250  75 63 63 65 73 73 66 75  6c 2e 00 00 44 49 52 24  |uccessful...DIR$|
0004c260  50 01 00 00 50 01 00 00  ac c3 04 00 46 ff ff ff  |P...P.......F...|
0004c270  69 d4 2b 25 1b 01 00 00  13 00 00 00 00 00 00 00  |i.+%............|
0004c280  43 6c 69 63 6b 4f 4b 00  c8 c4 04 00 46 ff ff ff  |ClickOK.....F...|
0004c290  54 b2 2b 25 1b 01 00 00  13 00 00 00 00 00 00 00  |T.+%............|
0004c2a0  43 6c 6f 73 65 57 69 6e  64 6f 77 00 e4 c5 04 00  |CloseWindow.....|
0004c2b0  46 ff ff ff b6 ba 2b 25  1a 01 00 00 13 00 00 00  |F.....+%........|
0004c2c0  00 00 00 00 44 65 6c 65  74 65 57 69 6e 64 6f 77  |....DeleteWindow|
0004c2d0  00 00 00 00 00 c7 04 00  46 ff ff ff be e9 2b 25  |........F.....+%|
0004c2e0  ad 00 00 00 13 00 00 00  00 00 00 00 44 72 61 67  |............Drag|
0004c2f0  46 69 6e 69 73 68 00 00  b0 c7 04 00 46 ff ff ff  |Finish......F...|
0004c300  d9 e2 2b 25 a6 00 00 00  13 00 00 00 00 00 00 00  |..+%............|
0004c310  44 72 61 67 4e 55 4c 4c  00 00 00 00 58 c8 04 00  |DragNULL....X...|
0004c320  46 ff ff ff 5e f1 2b 25  3c 01 00 00 13 00 00 00  |F...^.+%<.......|
0004c330  00 00 00 00 48 61 74 63  68 52 65 64 72 61 77 00  |....HatchRedraw.|
0004c340  94 c9 04 00 46 ff ff ff  7a db 2b 25 fb 01 00 00  |....F...z.+%....|
0004c350  13 00 00 00 00 00 00 00  4d 6f 64 65 43 68 61 6e  |........ModeChan|
0004c360  67 65 00 00 90 cb 04 00  46 ff ff ff 43 c8 2b 25  |ge......F...C.+%|
0004c370  67 01 00 00 13 00 00 00  00 00 00 00 4e 75 6c 6c  |g...........Null|
0004c380  52 65 64 72 61 77 00 00  f8 cc 04 00 46 ff ff ff  |Redraw......F...|
0004c390  d2 bf 2b 25 16 01 00 00  13 00 00 00 00 00 00 00  |..+%............|
0004c3a0  4f 70 65 6e 57 69 6e 64  6f 77 00 00 44 41 54 41  |OpenWindow..DATA|
0004c3b0  1b 01 00 00 48 61 6e 64  6c 65 72 5f 43 6c 69 63  |....Handler_Clic|
0004c3c0  6b 4f 4b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |kOK.Header:.<Des|
0004c3d0  6b 4c 69 62 3a 48 61 6e  64 6c 65 72 2e 68 3d 3e  |kLib:Handler.h=>|
0004c3e0  48 61 6e 64 6c 65 72 3e  0a 0a 54 68 69 73 20 66  |Handler>..This f|
0004c3f0  75 6e 63 74 69 6f 6e 20  68 61 6e 64 6c 65 73 20  |unction handles |
0004c400  63 6c 69 63 6b 73 20 6f  6e 20 33 44 20 62 75 74  |clicks on 3D but|
0004c410  74 6f 6e 73 2e 20 49 74  20 69 6e 64 65 6e 74 73  |tons. It indents|
0004c420  20 74 68 65 20 62 75 74  74 6f 6e 2c 20 77 61 69  | the button, wai|
0004c430  74 73 20 66 6f 72 20 31  2f 33 20 73 65 63 6f 6e  |ts for 1/3 secon|
0004c440  64 20 61 6e 64 20 74 68  65 6e 20 75 6e 2d 69 6e  |d and then un-in|
0004c450  64 65 6e 74 73 20 74 68  65 20 62 75 74 74 6f 6e  |dents the button|
0004c460  2e 20 41 74 74 61 63 68  20 69 74 20 74 6f 20 61  |. Attach it to a|
0004c470  20 70 61 72 74 69 63 75  6c 61 72 20 77 69 6e 64  | particular wind|
0004c480  6f 77 2f 69 63 6f 6e 20  61 6e 64 20 61 20 4d 6f  |ow/icon and a Mo|
0004c490  75 73 65 5f 43 6c 69 63  6b 20 65 76 65 6e 74 20  |use_Click event |
0004c4a0  28 7b 2a 7d 65 76 65 6e  74 5f 43 4c 49 43 4b 7b  |({*}event_CLICK{|
0004c4b0  2a 7d 29 20 77 69 74 68  20 3c 45 76 65 6e 74 5f  |*}) with <Event_|
0004c4c0  43 6c 61 69 6d 3e 2e 00  44 41 54 41 1b 01 00 00  |Claim>..DATA....|
0004c4d0  48 61 6e 64 6c 65 72 5f  43 6c 6f 73 65 57 69 6e  |Handler_CloseWin|
0004c4e0  64 6f 77 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |dow.Header:.<Des|
0004c4f0  6b 4c 69 62 3a 48 61 6e  64 6c 65 72 2e 68 3d 3e  |kLib:Handler.h=>|
0004c500  48 61 6e 64 6c 65 72 3e  0a 0a 54 68 69 73 20 66  |Handler>..This f|
0004c510  75 6e 63 74 69 6f 6e 20  63 61 6c 6c 73 20 3c 57  |unction calls <W|
0004c520  69 6d 70 5f 43 6c 6f 73  65 57 69 6e 64 6f 77 3e  |imp_CloseWindow>|
0004c530  20 6f 6e 20 74 68 65 20  64 61 74 61 20 72 65 74  | on the data ret|
0004c540  75 72 6e 65 64 20 62 79  20 74 68 65 20 57 69 6d  |urned by the Wim|
0004c550  70 2e 20 41 74 74 61 63  68 20 74 6f 20 74 68 65  |p. Attach to the|
0004c560  20 43 6c 6f 73 65 5f 57  69 6e 64 6f 77 5f 52 65  | Close_Window_Re|
0004c570  71 75 65 73 74 20 65 76  65 6e 74 20 75 73 69 6e  |quest event usin|
0004c580  67 3a 0a 0a 7b 66 43 6f  64 65 3b 61 6c 69 67 6e  |g:..{fCode;align|
0004c590  20 63 65 6e 74 72 65 7d  3c 45 76 65 6e 74 5f 43  | centre}<Event_C|
0004c5a0  6c 61 69 6d 3e 28 65 76  65 6e 74 5f 43 4c 4f 53  |laim>(event_CLOS|
0004c5b0  45 2c 65 76 65 6e 74 5f  41 4e 59 2c 65 76 65 6e  |E,event_ANY,even|
0004c5c0  74 5f 41 4e 59 2c 20 48  61 6e 64 6c 65 72 5f 43  |t_ANY, Handler_C|
0004c5d0  6c 6f 73 65 57 69 6e 64  6f 77 2c 3c 4e 55 4c 4c  |loseWindow,<NULL|
0004c5e0  3e 29 3b 00 44 41 54 41  1a 01 00 00 48 61 6e 64  |>);.DATA....Hand|
0004c5f0  6c 65 72 5f 44 65 6c 65  74 65 57 69 6e 64 6f 77  |ler_DeleteWindow|
0004c600  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
0004c610  62 3a 48 61 6e 64 6c 65  72 2e 68 3d 3e 48 61 6e  |b:Handler.h=>Han|
0004c620  64 6c 65 72 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |dler>..This func|
0004c630  74 69 6f 6e 20 63 61 6c  6c 73 20 3c 57 69 6e 64  |tion calls <Wind|
0004c640  6f 77 5f 44 65 6c 65 74  65 3e 20 6f 6e 20 74 68  |ow_Delete> on th|
0004c650  65 20 64 61 74 61 20 72  65 74 75 72 6e 65 64 20  |e data returned |
0004c660  62 79 20 74 68 65 20 57  69 6d 70 2e 20 41 74 74  |by the Wimp. Att|
0004c670  61 63 68 20 74 6f 20 74  68 65 20 43 6c 6f 73 65  |ach to the Close|
0004c680  5f 57 69 6e 64 6f 77 5f  52 65 71 75 65 73 74 20  |_Window_Request |
0004c690  65 76 65 6e 74 20 75 73  69 6e 67 3a 0a 0a 7b 66  |event using:..{f|
0004c6a0  43 6f 64 65 3b 61 6c 69  67 6e 20 63 65 6e 74 72  |Code;align centr|
0004c6b0  65 7d 3c 45 76 65 6e 74  5f 43 6c 61 69 6d 3e 28  |e}<Event_Claim>(|
0004c6c0  65 76 65 6e 74 5f 43 4c  4f 53 45 2c 65 76 65 6e  |event_CLOSE,even|
0004c6d0  74 5f 41 4e 59 2c 65 76  65 6e 74 5f 41 4e 59 2c  |t_ANY,event_ANY,|
0004c6e0  20 48 61 6e 64 6c 65 72  5f 44 65 6c 65 74 65 57  | Handler_DeleteW|
0004c6f0  69 6e 64 6f 77 2c 3c 4e  55 4c 4c 3e 29 3b 00 00  |indow,<NULL>);..|
0004c700  44 41 54 41 ad 00 00 00  48 61 6e 64 6c 65 72 5f  |DATA....Handler_|
0004c710  44 72 61 67 46 69 6e 69  73 68 0a 48 65 61 64 65  |DragFinish.Heade|
0004c720  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 48 61 6e 64  |r:.<DeskLib:Hand|
0004c730  6c 65 72 2e 68 3d 3e 48  61 6e 64 6c 65 72 3e 0a  |ler.h=>Handler>.|
0004c740  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
0004c750  61 6c 6c 73 20 74 68 65  20 64 72 61 67 2d 63 6f  |alls the drag-co|
0004c760  6d 70 6c 65 74 65 20 68  61 6e 64 6c 65 72 20 72  |mplete handler r|
0004c770  65 67 69 73 74 65 72 65  64 20 77 69 74 68 20 3c  |egistered with <|
0004c780  44 72 61 67 5f 53 65 74  48 61 6e 64 6c 65 72 73  |Drag_SetHandlers|
0004c790  3e 20 61 6e 64 20 72 65  73 65 74 73 20 74 68 65  |> and resets the|
0004c7a0  20 44 72 61 67 20 6d 6f  64 75 6c 65 2e 00 00 00  | Drag module....|
0004c7b0  44 41 54 41 a6 00 00 00  48 61 6e 64 6c 65 72 5f  |DATA....Handler_|
0004c7c0  44 72 61 67 4e 55 4c 4c  0a 48 65 61 64 65 72 3a  |DragNULL.Header:|
0004c7d0  09 3c 44 65 73 6b 4c 69  62 3a 48 61 6e 64 6c 65  |.<DeskLib:Handle|
0004c7e0  72 2e 68 3d 3e 48 61 6e  64 6c 65 72 3e 0a 0a 54  |r.h=>Handler>..T|
0004c7f0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 61 6c  |his function cal|
0004c800  6c 73 20 74 68 65 20 64  72 61 67 20 68 61 6e 64  |ls the drag hand|
0004c810  6c 65 72 20 72 65 67 69  73 74 65 72 65 64 20 77  |ler registered w|
0004c820  69 74 68 20 3c 44 72 61  67 5f 53 65 74 48 61 6e  |ith <Drag_SetHan|
0004c830  64 6c 65 72 73 3e 20 6f  6e 20 65 61 63 68 20 4e  |dlers> on each N|
0004c840  75 6c 6c 20 65 76 65 6e  74 20 69 74 20 72 65 63  |ull event it rec|
0004c850  65 69 76 65 73 2e 00 00  44 41 54 41 3c 01 00 00  |eives...DATA<...|
0004c860  48 61 6e 64 6c 65 72 5f  48 61 74 63 68 52 65 64  |Handler_HatchRed|
0004c870  72 61 77 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |raw.Header:.<Des|
0004c880  6b 4c 69 62 3a 48 61 6e  64 6c 65 72 2e 68 3d 3e  |kLib:Handler.h=>|
0004c890  48 61 6e 64 6c 65 72 3e  0a 0a 54 68 69 73 20 66  |Handler>..This f|
0004c8a0  75 6e 63 74 69 6f 6e 20  73 75 70 70 6c 69 65 73  |unction supplies|
0004c8b0  20 61 20 72 65 64 72 61  77 20 6c 6f 6f 70 20 69  | a redraw loop i|
0004c8c0  6e 20 77 68 69 63 68 20  74 68 65 20 61 72 65 61  |n which the area|
0004c8d0  20 6f 66 20 77 69 6e 64  6f 77 20 69 73 20 72 65  | of window is re|
0004c8e0  64 72 61 77 20 77 69 74  68 20 61 20 68 61 74 63  |draw with a hatc|
0004c8f0  68 20 70 61 74 74 65 72  6e 2e 20 54 68 69 73 20  |h pattern. This |
0004c900  69 73 20 75 73 65 66 75  6c 20 77 68 65 6e 20 74  |is useful when t|
0004c910  65 73 74 69 6e 67 20 70  72 6f 67 72 61 6d 73 20  |esting programs |
0004c920  77 69 74 68 6f 75 74 20  68 61 76 69 6e 67 20 61  |without having a|
0004c930  63 74 75 61 6c 6c 79 20  77 72 69 74 74 65 6e 20  |ctually written |
0004c940  79 6f 75 72 20 6f 77 6e  20 70 72 6f 70 65 72 20  |your own proper |
0004c950  72 65 64 72 61 77 20 72  6f 75 74 69 6e 65 2e 20  |redraw routine. |
0004c960  41 74 74 61 63 68 20 69  74 20 74 6f 20 7b 2a 7d  |Attach it to {*}|
0004c970  65 76 65 6e 74 5f 52 45  44 52 41 57 7b 2a 7d 20  |event_REDRAW{*} |
0004c980  75 73 69 6e 67 20 3c 45  76 65 6e 74 5f 43 6c 61  |using <Event_Cla|
0004c990  69 6d 3e 2e 44 41 54 41  fb 01 00 00 48 61 6e 64  |im>.DATA....Hand|
0004c9a0  6c 65 72 5f 4d 6f 64 65  43 68 61 6e 67 65 0a 48  |ler_ModeChange.H|
0004c9b0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
0004c9c0  48 61 6e 64 6c 65 72 2e  68 3d 3e 48 61 6e 64 6c  |Handler.h=>Handl|
0004c9d0  65 72 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |er>..This functi|
0004c9e0  6f 6e 20 69 73 20 61 20  68 61 6e 64 6c 65 72 20  |on is a handler |
0004c9f0  66 6f 72 20 6d 6f 64 65  20 63 68 61 6e 67 65 20  |for mode change |
0004ca00  65 76 65 6e 74 73 2e 20  49 74 20 63 61 6c 6c 73  |events. It calls|
0004ca10  20 3c 53 63 72 65 65 6e  5f 43 61 63 68 65 4d 6f  | <Screen_CacheMo|
0004ca20  64 65 49 6e 66 6f 3e 20  65 76 65 72 79 20 74 69  |deInfo> every ti|
0004ca30  6d 65 20 74 68 65 20 73  63 72 65 65 6e 20 6d 6f  |me the screen mo|
0004ca40  64 65 20 63 68 61 6e 67  65 73 2e 20 49 66 20 79  |de changes. If y|
0004ca50  6f 75 20 68 61 76 65 20  63 61 6c 6c 65 64 20 3c  |ou have called <|
0004ca60  54 65 6d 70 6c 61 74 65  5f 55 73 65 4f 75 74 6c  |Template_UseOutl|
0004ca70  69 6e 65 46 6f 6e 74 73  3e 2c 20 61 6e 64 20 74  |ineFonts>, and t|
0004ca80  68 65 20 73 63 72 65 65  6e 20 72 65 73 6f 6c 75  |he screen resolu|
0004ca90  74 69 6f 6e 20 68 61 73  20 63 68 61 6e 67 65 64  |tion has changed|
0004caa0  2c 20 69 74 20 61 6c 73  6f 20 63 61 6c 6c 73 20  |, it also calls |
0004cab0  3c 57 69 6e 64 6f 77 5f  4d 6f 64 65 43 68 61 6e  |<Window_ModeChan|
0004cac0  67 65 3e 20 28 74 68 65  72 65 66 6f 72 65 20 61  |ge> (therefore a|
0004cad0  6c 6c 20 79 6f 75 72 20  77 69 6e 64 6f 77 73 20  |ll your windows |
0004cae0  6d 75 73 74 20 62 65 20  63 72 65 61 74 65 64 20  |must be created |
0004caf0  77 69 74 68 20 3c 57 69  6e 64 6f 77 5f 43 72 65  |with <Window_Cre|
0004cb00  61 74 65 3e 29 2e 20 41  74 74 61 63 68 20 69 74  |ate>). Attach it|
0004cb10  20 74 6f 20 6d 6f 64 65  20 63 68 61 6e 67 65 20  | to mode change |
0004cb20  6d 65 73 73 61 67 65 20  77 69 74 68 3a 0a 0a 7b  |message with:..{|
0004cb30  66 43 6f 64 65 3b 61 6c  69 67 6e 20 63 65 6e 74  |fCode;align cent|
0004cb40  72 65 7d 3c 45 76 65 6e  74 4d 73 67 5f 43 6c 61  |re}<EventMsg_Cla|
0004cb50  69 6d 3e 28 6d 65 73 73  61 67 65 5f 4d 4f 44 45  |im>(message_MODE|
0004cb60  43 48 41 4e 47 45 2c 20  65 76 65 6e 74 5f 41 4e  |CHANGE, event_AN|
0004cb70  59 2c 20 48 61 6e 64 6c  65 72 5f 4d 6f 64 65 43  |Y, Handler_ModeC|
0004cb80  68 61 6e 67 65 2c 20 3c  4e 55 4c 4c 3e 29 3b 00  |hange, <NULL>);.|
0004cb90  44 41 54 41 67 01 00 00  48 61 6e 64 6c 65 72 5f  |DATAg...Handler_|
0004cba0  4e 75 6c 6c 52 65 64 72  61 77 0a 48 65 61 64 65  |NullRedraw.Heade|
0004cbb0  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 48 61 6e 64  |r:.<DeskLib:Hand|
0004cbc0  6c 65 72 2e 68 3d 3e 48  61 6e 64 6c 65 72 3e 0a  |ler.h=>Handler>.|
0004cbd0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 73  |.This function s|
0004cbe0  75 70 70 6c 69 65 73 20  61 20 64 75 6d 6d 79 20  |upplies a dummy |
0004cbf0  72 65 64 72 61 77 20 6c  6f 6f 70 2e 20 49 74 20  |redraw loop. It |
0004cc00  6a 75 73 74 20 63 61 6c  6c 73 20 3c 57 69 6d 70  |just calls <Wimp|
0004cc10  5f 52 65 64 72 61 77 57  69 6e 64 6f 77 3e 20 74  |_RedrawWindow> t|
0004cc20  68 65 6e 20 67 65 74 73  20 72 65 63 74 61 6e 67  |hen gets rectang|
0004cc30  6c 65 73 20 66 72 6f 6d  20 74 68 65 20 57 69 6d  |les from the Wim|
0004cc40  70 20 75 6e 74 69 6c 20  74 68 65 79 20 68 61 76  |p until they hav|
0004cc50  65 20 61 6c 6c 20 62 65  65 6e 20 22 72 65 64 72  |e all been "redr|
0004cc60  61 77 6e 22 2e 20 41 74  74 61 63 68 20 74 6f 20  |awn". Attach to |
0004cc70  74 68 65 20 52 65 64 72  61 77 5f 57 69 6e 64 6f  |the Redraw_Windo|
0004cc80  77 5f 52 65 71 75 65 73  74 20 65 76 65 6e 74 20  |w_Request event |
0004cc90  75 73 69 6e 67 3a 0a 0a  7b 66 43 6f 64 65 3b 61  |using:..{fCode;a|
0004cca0  6c 69 67 6e 20 63 65 6e  74 72 65 7d 3c 45 76 65  |lign centre}<Eve|
0004ccb0  6e 74 5f 43 6c 61 69 6d  3e 28 65 76 65 6e 74 5f  |nt_Claim>(event_|
0004ccc0  52 45 44 52 41 57 2c 65  76 65 6e 74 5f 41 4e 59  |REDRAW,event_ANY|
0004ccd0  2c 65 76 65 6e 74 5f 41  4e 59 2c 20 48 61 6e 64  |,event_ANY, Hand|
0004cce0  6c 65 72 5f 4e 75 6c 6c  52 65 64 72 61 77 2c 3c  |ler_NullRedraw,<|
0004ccf0  4e 55 4c 4c 3e 29 3b 00  44 41 54 41 16 01 00 00  |NULL>);.DATA....|
0004cd00  48 61 6e 64 6c 65 72 5f  4f 70 65 6e 57 69 6e 64  |Handler_OpenWind|
0004cd10  6f 77 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |ow.Header:.<Desk|
0004cd20  4c 69 62 3a 48 61 6e 64  6c 65 72 2e 68 3d 3e 48  |Lib:Handler.h=>H|
0004cd30  61 6e 64 6c 65 72 3e 0a  0a 54 68 69 73 20 66 75  |andler>..This fu|
0004cd40  6e 63 74 69 6f 6e 20 63  61 6c 6c 73 20 3c 57 69  |nction calls <Wi|
0004cd50  6d 70 5f 4f 70 65 6e 57  69 6e 64 6f 77 3e 20 6f  |mp_OpenWindow> o|
0004cd60  6e 20 74 68 65 20 64 61  74 61 20 72 65 74 75 72  |n the data retur|
0004cd70  6e 65 64 20 62 79 20 74  68 65 20 57 69 6d 70 2e  |ned by the Wimp.|
0004cd80  20 41 74 74 61 63 68 20  74 6f 20 74 68 65 20 4f  | Attach to the O|
0004cd90  70 65 6e 5f 57 69 6e 64  6f 77 5f 52 65 71 75 65  |pen_Window_Reque|
0004cda0  73 74 20 65 76 65 6e 74  20 75 73 69 6e 67 3a 0a  |st event using:.|
0004cdb0  0a 7b 66 43 6f 64 65 3b  61 6c 69 67 6e 20 63 65  |.{fCode;align ce|
0004cdc0  6e 74 72 65 7d 3c 45 76  65 6e 74 5f 43 6c 61 69  |ntre}<Event_Clai|
0004cdd0  6d 3e 28 65 76 65 6e 74  5f 4f 50 45 4e 2c 65 76  |m>(event_OPEN,ev|
0004cde0  65 6e 74 5f 41 4e 59 2c  65 76 65 6e 74 5f 41 4e  |ent_ANY,event_AN|
0004cdf0  59 2c 20 48 61 6e 64 6c  65 72 5f 4f 70 65 6e 57  |Y, Handler_OpenW|
0004ce00  69 6e 64 6f 77 2c 3c 4e  55 4c 4c 3e 29 3b 00 00  |indow,<NULL>);..|
0004ce10  44 41 54 41 b4 00 00 00  68 65 61 70 2e 68 0a 54  |DATA....heap.h.T|
0004ce20  68 69 73 20 68 65 61 64  65 72 20 64 65 63 6c 61  |his header decla|
0004ce30  72 65 73 20 66 75 6e 63  74 69 6f 6e 73 20 66 6f  |res functions fo|
0004ce40  72 20 3c 6d 61 6c 6c 6f  63 3e 2d 73 74 79 6c 65  |r <malloc>-style|
0004ce50  20 68 65 61 70 20 61 6c  6c 6f 63 61 74 69 6f 6e  | heap allocation|
0004ce60  20 77 69 74 68 69 6e 20  61 20 3c 66 6c 65 78 3e  | within a <flex>|
0004ce70  20 62 6c 6f 63 6b 2e 0a  0a 46 75 6e 63 74 69 6f  | block...Functio|
0004ce80  6e 73 3a 0a 0a 23 74 61  62 6c 65 20 63 6f 6c 75  |ns:..#table colu|
0004ce90  6d 6e 73 20 33 0a 3c 68  65 61 70 5f 69 6e 69 74  |mns 3.<heap_init|
0004cea0  3e 0a 3c 68 65 61 70 5f  61 6c 6c 6f 63 3e 0a 3c  |>.<heap_alloc>.<|
0004ceb0  68 65 61 70 5f 66 72 65  65 3e 0a 23 65 6e 64 74  |heap_free>.#endt|
0004cec0  61 62 6c 65 44 49 52 24  6c 00 00 00 6c 00 00 00  |ableDIR$l...l...|
0004ced0  30 cf 04 00 46 ff ff ff  7e 98 ad 24 cf 00 00 00  |0...F...~..$....|
0004cee0  13 00 00 00 00 00 00 00  61 6c 6c 6f 63 00 00 00  |........alloc...|
0004cef0  00 d0 04 00 46 ff ff ff  36 9d ad 24 c7 00 00 00  |....F...6..$....|
0004cf00  13 00 00 00 00 00 00 00  66 72 65 65 00 00 00 00  |........free....|
0004cf10  c8 d0 04 00 46 ff ff ff  0f 93 ad 24 07 01 00 00  |....F......$....|
0004cf20  13 00 00 00 00 00 00 00  69 6e 69 74 00 00 00 00  |........init....|
0004cf30  44 41 54 41 cf 00 00 00  68 65 61 70 5f 61 6c 6c  |DATA....heap_all|
0004cf40  6f 63 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |oc.Syntax:.void |
0004cf50  2a 68 65 61 70 5f 61 6c  6c 6f 63 20 28 75 6e 73  |*heap_alloc (uns|
0004cf60  69 67 6e 65 64 20 69 6e  74 20 73 69 7a 65 29 3b  |igned int size);|
0004cf70  0a 48 65 61 64 65 72 3a  09 3c 68 65 61 70 2e 68  |.Header:.<heap.h|
0004cf80  3d 3e 68 65 61 70 3e 0a  0a 52 65 74 75 72 6e 73  |=>heap>..Returns|
0004cf90  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 61 6c 6c  |:.Pointer to all|
0004cfa0  6f 63 61 74 65 64 20 62  6c 6f 63 6b 2e 0a 0a 41  |ocated block...A|
0004cfb0  6c 6c 6f 63 61 74 65 64  20 61 20 62 6c 6f 63 6b  |llocated a block|
0004cfc0  20 6f 66 20 74 68 65 20  67 69 76 65 6e 20 73 69  | of the given si|
0004cfd0  7a 65 20 66 72 6f 6d 20  74 68 65 20 68 65 61 70  |ze from the heap|
0004cfe0  2e 20 52 65 74 75 72 6e  73 20 30 20 69 66 20 75  |. Returns 0 if u|
0004cff0  6e 61 62 6c 65 20 74 6f  20 64 6f 20 73 6f 2e 00  |nable to do so..|
0004d000  44 41 54 41 c7 00 00 00  68 65 61 70 5f 66 72 65  |DATA....heap_fre|
0004d010  65 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 68  |e.Syntax:.void h|
0004d020  65 61 70 5f 66 72 65 65  20 28 76 6f 69 64 20 2a  |eap_free (void *|
0004d030  68 65 61 70 70 74 72 29  3b 0a 48 65 61 64 65 72  |heapptr);.Header|
0004d040  3a 09 3c 68 65 61 70 2e  68 3d 3e 68 65 61 70 3e  |:.<heap.h=>heap>|
0004d050  0a 0a 46 72 65 65 73 20  74 68 65 20 62 6c 6f 63  |..Frees the bloc|
0004d060  6b 20 77 68 6f 73 65 20  70 6f 69 6e 74 65 72 20  |k whose pointer |
0004d070  69 73 20 67 69 76 65 6e  20 69 6e 20 2f 68 65 61  |is given in /hea|
0004d080  70 70 74 72 2f 2e 20 54  68 65 20 62 6c 6f 63 6b  |pptr/. The block|
0004d090  20 6d 75 73 74 20 68 61  76 65 20 62 65 65 6e 20  | must have been |
0004d0a0  70 72 65 76 69 6f 75 73  6c 79 20 61 6c 6c 6f 63  |previously alloc|
0004d0b0  61 74 65 64 20 77 69 74  68 20 3c 68 65 61 70 5f  |ated with <heap_|
0004d0c0  61 6c 6c 6f 63 3e 2e 00  44 41 54 41 07 01 00 00  |alloc>..DATA....|
0004d0d0  68 65 61 70 5f 69 6e 69  74 0a 53 79 6e 74 61 78  |heap_init.Syntax|
0004d0e0  3a 09 76 6f 69 64 20 68  65 61 70 5f 69 6e 69 74  |:.void heap_init|
0004d0f0  20 28 3c 42 4f 4f 4c 3e  20 68 65 61 70 5f 73 68  | (<BOOL> heap_sh|
0004d100  72 69 6e 6b 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |rink);.Header:.<|
0004d110  68 65 61 70 2e 68 3d 3e  68 65 61 70 3e 0a 0a 49  |heap.h=>heap>..I|
0004d120  6e 69 74 69 61 6c 69 73  65 73 20 74 68 65 20 68  |nitialises the h|
0004d130  65 61 70 20 61 6c 6c 6f  63 61 74 69 6f 6e 20 73  |eap allocation s|
0004d140  79 73 74 65 6d 2e 20 49  66 20 7b 2f 7d 68 65 61  |ystem. If {/}hea|
0004d150  70 5f 73 68 72 69 6e 6b  7b 2f 7d 20 69 73 20 3c  |p_shrink{/} is <|
0004d160  54 52 55 45 3e 20 74 68  65 6e 20 74 68 65 20 66  |TRUE> then the f|
0004d170  6c 65 78 20 62 6c 6f 63  6b 20 77 69 6c 6c 20 62  |lex block will b|
0004d180  65 20 73 68 72 75 6e 6b  20 77 68 65 6e 20 70 6f  |e shrunk when po|
0004d190  73 73 69 62 6c 65 2e 20  59 6f 75 20 6d 75 73 74  |ssible. You must|
0004d1a0  20 63 61 6c 6c 20 3c 66  6c 65 78 5f 69 6e 69 74  | call <flex_init|
0004d1b0  3e 20 62 65 66 6f 72 65  20 63 61 6c 6c 69 6e 67  |> before calling|
0004d1c0  20 74 68 69 73 20 66 75  6e 63 74 69 6f 6e 2e 00  | this function..|
0004d1d0  44 41 54 41 ee 00 00 00  68 65 6c 70 2e 68 0a 54  |DATA....help.h.T|
0004d1e0  68 69 73 20 68 65 61 64  65 72 20 64 65 63 6c 61  |his header decla|
0004d1f0  72 65 73 20 66 75 6e 63  74 69 6f 6e 73 20 70 72  |res functions pr|
0004d200  6f 76 69 64 69 6e 67 20  73 75 70 70 6f 72 74 20  |oviding support |
0004d210  66 6f 72 20 69 6e 74 65  72 61 63 74 69 76 65 20  |for interactive |
0004d220  68 65 6c 70 2e 0a 0a 46  75 6e 63 74 69 6f 6e 73  |help...Functions|
0004d230  3a 0a 0a 23 54 61 62 6c  65 20 63 6f 6c 75 6d 6e  |:..#Table column|
0004d240  73 20 32 0a 3c 68 65 6c  70 5f 70 72 6f 63 65 73  |s 2.<help_proces|
0004d250  73 3e 0a 3c 68 65 6c 70  5f 72 65 67 69 73 74 65  |s>.<help_registe|
0004d260  72 5f 68 61 6e 64 6c 65  72 3e 0a 3c 68 65 6c 70  |r_handler>.<help|
0004d270  5f 67 65 6e 6d 65 73 73  61 67 65 3e 0a 3c 68 65  |_genmessage>.<he|
0004d280  6c 70 5f 73 69 6d 70 6c  65 68 61 6e 64 6c 65 72  |lp_simplehandler|
0004d290  3e 0a 3c 68 65 6c 70 5f  64 62 6f 78 72 61 77 65  |>.<help_dboxrawe|
0004d2a0  76 65 6e 74 73 3e 0a 3c  68 65 6c 70 5f 72 65 70  |vents>.<help_rep|
0004d2b0  6c 79 3e 20 0a 23 45 6e  64 54 61 62 6c 65 00 00  |ly> .#EndTable..|
0004d2c0  44 49 52 24 ec 00 00 00  ec 00 00 00 ac d3 04 00  |DIR$............|
0004d2d0  46 ff ff ff 5d f3 ad 24  d4 01 00 00 13 00 00 00  |F...]..$........|
0004d2e0  00 00 00 00 64 62 6f 78  72 61 77 65 76 65 6e 74  |....dboxrawevent|
0004d2f0  73 00 00 00 80 d5 04 00  46 ff ff ff 75 e3 ad 24  |s.......F...u..$|
0004d300  ff 01 00 00 13 00 00 00  00 00 00 00 67 65 6e 6d  |............genm|
0004d310  65 73 73 61 67 65 00 00  80 d7 04 00 46 ff ff ff  |essage......F...|
0004d320  78 b1 ad 24 6a 01 00 00  13 00 00 00 00 00 00 00  |x..$j...........|
0004d330  70 72 6f 63 65 73 73 00  ec d8 04 00 46 ff ff ff  |process.....F...|
0004d340  cf bb ad 24 e3 01 00 00  13 00 00 00 00 00 00 00  |...$............|
0004d350  72 65 67 69 73 74 65 72  5f 68 61 6e 64 6c 65 72  |register_handler|
0004d360  00 00 00 00 d0 da 04 00  46 ff ff ff a1 f6 ad 24  |........F......$|
0004d370  a9 00 00 00 13 00 00 00  00 00 00 00 72 65 70 6c  |............repl|
0004d380  79 00 00 00 7c db 04 00  46 ff ff ff a5 ed ad 24  |y...|...F......$|
0004d390  6d 01 00 00 13 00 00 00  00 00 00 00 73 69 6d 70  |m...........simp|
0004d3a0  6c 65 68 61 6e 64 6c 65  72 00 00 00 44 41 54 41  |lehandler...DATA|
0004d3b0  d4 01 00 00 68 65 6c 70  5f 64 62 6f 78 72 61 77  |....help_dboxraw|
0004d3c0  65 76 65 6e 74 73 0a 53  79 6e 74 61 78 3a 09 3c  |events.Syntax:.<|
0004d3d0  42 4f 4f 4c 3e 20 68 65  6c 70 5f 64 62 6f 78 72  |BOOL> help_dboxr|
0004d3e0  61 77 65 76 65 6e 74 73  20 28 3c 64 62 6f 78 3e  |awevents (<dbox>|
0004d3f0  20 64 2c 20 76 6f 69 64  20 2a 65 76 65 6e 74 2c  | d, void *event,|
0004d400  20 76 6f 69 64 20 2a 68  61 6e 64 6c 65 29 3b 0a  | void *handle);.|
0004d410  48 65 61 64 65 72 3a 09  3c 68 65 6c 70 2e 68 3d  |Header:.<help.h=|
0004d420  3e 68 65 6c 70 3e 0a 0a  54 68 69 73 20 66 75 6e  |>help>..This fun|
0004d430  63 74 69 6f 6e 20 69 73  20 61 20 72 6f 75 74 69  |ction is a routi|
0004d440  6e 65 20 73 75 69 74 61  62 6c 65 20 66 6f 72 20  |ne suitable for |
0004d450  70 61 73 73 69 6e 67 20  74 6f 20 3c 64 62 6f 78  |passing to <dbox|
0004d460  5f 72 61 77 5f 65 76 65  6e 74 68 61 6e 64 6c 65  |_raw_eventhandle|
0004d470  72 3e 2c 20 66 6f 72 20  70 72 6f 76 69 64 69 6e  |r>, for providin|
0004d480  67 20 68 65 6c 70 20 6f  6e 20 64 69 61 6c 6f 67  |g help on dialog|
0004d490  75 65 20 62 6f 78 65 73  2e 20 54 68 65 20 68 61  |ue boxes. The ha|
0004d4a0  6e 64 6c 65 20 70 61 73  73 65 64 20 73 68 6f 75  |ndle passed shou|
0004d4b0  6c 64 20 62 65 20 61 20  6d 65 73 73 61 67 65 20  |ld be a message |
0004d4c0  70 72 65 66 69 78 2e 20  41 20 73 69 6e 67 6c 65  |prefix. A single|
0004d4d0  20 63 68 61 72 61 63 74  65 72 20 73 75 66 66 69  | character suffi|
0004d4e0  78 20 6d 61 79 20 62 65  20 61 64 64 65 64 20 74  |x may be added t|
0004d4f0  6f 20 69 74 20 63 6f 6e  74 61 69 6e 69 6e 67 20  |o it containing |
0004d500  74 68 65 20 69 63 6f 6e  20 6e 75 6d 62 65 72 2e  |the icon number.|
0004d510  20 49 66 20 74 68 69 73  20 6d 65 73 73 61 67 65  | If this message|
0004d520  20 64 6f 65 73 20 6e 6f  74 20 65 78 69 73 74 20  | does not exist |
0004d530  28 6f 72 20 6e 6f 20 69  63 6f 6e 20 69 73 20 70  |(or no icon is p|
0004d540  6f 69 6e 74 65 64 20 61  74 29 20 74 68 65 6e 20  |ointed at) then |
0004d550  6a 75 73 74 20 74 68 65  20 70 72 65 66 69 78 20  |just the prefix |
0004d560  77 69 6c 6c 20 62 65 20  75 73 65 64 20 61 73 20  |will be used as |
0004d570  74 68 65 20 6d 65 73 73  61 67 65 20 74 61 67 2e  |the message tag.|
0004d580  44 41 54 41 ff 01 00 00  68 65 6c 70 5f 67 65 6e  |DATA....help_gen|
0004d590  6d 65 73 73 61 67 65 0a  53 79 6e 74 61 78 3a 09  |message.Syntax:.|
0004d5a0  3c 42 4f 4f 4c 3e 20 68  65 6c 70 5f 67 65 6e 6d  |<BOOL> help_genm|
0004d5b0  65 73 73 61 67 65 20 28  63 68 61 72 20 2a 70 72  |essage (char *pr|
0004d5c0  65 66 69 78 2c 20 63 68  61 72 20 2a 68 69 74 29  |efix, char *hit)|
0004d5d0  3b 0a 48 65 61 64 65 72  3a 09 3c 68 65 6c 70 2e  |;.Header:.<help.|
0004d5e0  68 3d 3e 68 65 6c 70 3e  0a 0a 52 65 74 75 72 6e  |h=>help>..Return|
0004d5f0  73 3a 09 3c 54 52 55 45  3e 20 69 66 20 74 68 69  |s:.<TRUE> if thi|
0004d600  73 20 77 61 73 20 61 20  6d 65 6e 75 20 68 65 6c  |s was a menu hel|
0004d610  70 20 6d 65 73 73 61 67  65 2e 0a 0a 54 68 69 73  |p message...This|
0004d620  20 66 75 6e 63 74 69 6f  6e 20 67 65 6e 65 72 61  | function genera|
0004d630  74 65 73 20 61 20 6d 65  73 73 61 67 65 20 74 61  |tes a message ta|
0004d640  67 20 77 68 69 63 68 20  69 73 20 6c 6f 6f 6b 65  |g which is looke|
0004d650  64 20 75 70 20 77 69 74  68 20 3c 6d 73 67 73 5f  |d up with <msgs_|
0004d660  6c 6f 6f 6b 75 70 3e 20  62 79 20 61 64 64 69 6e  |lookup> by addin|
0004d670  67 20 61 20 74 68 65 20  70 72 65 66 69 78 20 74  |g a the prefix t|
0004d680  6f 20 61 20 73 74 72 69  6e 67 20 6f 66 20 6d 65  |o a string of me|
0004d690  6e 75 20 73 65 6c 65 63  74 69 6f 6e 73 20 65 67  |nu selections eg|
0004d6a0  2e 20 22 4d 45 4e 55 30  31 22 20 69 66 20 74 68  |. "MENU01" if th|
0004d6b0  65 20 70 72 65 66 69 78  20 69 73 20 22 4d 45 4e  |e prefix is "MEN|
0004d6c0  55 22 20 61 6e 64 20 74  68 65 20 73 65 63 6f 6e  |U" and the secon|
0004d6d0  64 20 6f 70 74 69 6f 6e  20 6f 66 66 20 74 68 65  |d option off the|
0004d6e0  20 66 69 72 73 74 20 73  75 62 6d 65 6e 75 20 68  | first submenu h|
0004d6f0  61 73 20 62 65 65 6e 20  73 65 6c 65 63 74 65 64  |as been selected|
0004d700  2e 20 4e 75 6d 62 65 72  73 20 7b 2a 7d 30 2d 39  |. Numbers {*}0-9|
0004d710  7b 2a 7d 20 61 6e 64 20  6c 65 74 74 65 72 73 20  |{*} and letters |
0004d720  7b 2a 7d 61 2d 7a 7b 2a  7d 20 61 72 65 20 75 73  |{*}a-z{*} are us|
0004d730  65 64 20 66 6f 72 20 74  68 65 20 73 65 6c 65 63  |ed for the selec|
0004d740  74 69 6f 6e 20 6c 69 73  74 2e 20 49 74 20 69 73  |tion list. It is|
0004d750  20 74 68 65 6e 20 72 65  74 75 72 6e 65 64 20 61  | then returned a|
0004d760  73 20 74 68 65 20 69 6e  74 65 72 61 63 74 69 76  |s the interactiv|
0004d770  65 20 68 65 6c 70 20 6d  65 73 73 61 67 65 2e 00  |e help message..|
0004d780  44 41 54 41 6a 01 00 00  68 65 6c 70 5f 70 72 6f  |DATAj...help_pro|
0004d790  63 65 73 73 0a 53 79 6e  74 61 78 3a 09 3c 42 4f  |cess.Syntax:.<BO|
0004d7a0  4f 4c 3e 20 68 65 6c 70  5f 70 72 6f 63 65 73 73  |OL> help_process|
0004d7b0  20 28 3c 77 69 6d 70 5f  65 76 65 6e 74 73 74 72  | (<wimp_eventstr|
0004d7c0  3e 20 2a 65 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |> *e);.Header:.<|
0004d7d0  68 65 6c 70 2e 68 3d 3e  68 65 6c 70 3e 0a 0a 52  |help.h=>help>..R|
0004d7e0  65 74 75 72 6e 73 3a 09  3c 54 52 55 45 3e 20 69  |eturns:.<TRUE> i|
0004d7f0  66 20 65 76 65 6e 74 20  68 61 73 20 62 65 65 6e  |f event has been|
0004d800  20 70 72 6f 63 65 73 73  65 64 2e 0a 0a 54 68 69  | processed...Thi|
0004d810  73 20 66 75 6e 63 74 69  6f 6e 20 70 72 6f 63 65  |s function proce|
0004d820  73 73 65 73 20 74 68 65  20 67 69 76 65 6e 20 65  |sses the given e|
0004d830  76 65 6e 74 20 69 66 20  69 74 20 69 73 20 61 20  |vent if it is a |
0004d840  6d 65 6e 75 20 69 6e 74  65 72 61 63 74 69 76 65  |menu interactive|
0004d850  20 68 65 6c 70 20 6d 65  73 73 61 67 65 2e 20 54  | help message. T|
0004d860  68 69 73 20 73 68 6f 75  6c 64 20 62 65 20 63 61  |his should be ca|
0004d870  6c 6c 65 64 20 62 79 20  74 68 65 20 75 6e 6b 6e  |lled by the unkn|
0004d880  6f 77 6e 20 65 76 65 6e  74 20 68 61 6e 64 6c 65  |own event handle|
0004d890  72 20 6f 66 20 74 68 65  20 70 72 6f 67 72 61 6d  |r of the program|
0004d8a0  2e 20 46 6f 72 20 69 74  20 74 6f 20 77 6f 72 6b  |. For it to work|
0004d8b0  2c 20 79 6f 75 20 6d 75  73 74 20 69 6e 66 6f 72  |, you must infor|
0004d8c0  6d 20 3c 77 69 6d 70 74  3e 20 74 68 61 74 20 79  |m <wimpt> that y|
0004d8d0  6f 75 20 61 72 65 20 61  77 61 72 65 20 6f 66 20  |ou are aware of |
0004d8e0  52 49 53 43 20 4f 53 20  33 2e 00 00 44 41 54 41  |RISC OS 3...DATA|
0004d8f0  e3 01 00 00 68 65 6c 70  5f 72 65 67 69 73 74 65  |....help_registe|
0004d900  72 5f 68 61 6e 64 6c 65  72 0a 53 79 6e 74 61 78  |r_handler.Syntax|
0004d910  3a 09 76 6f 69 64 20 68  65 6c 70 5f 72 65 67 69  |:.void help_regi|
0004d920  73 74 65 72 5f 68 61 6e  64 6c 65 72 20 28 3c 65  |ster_handler (<e|
0004d930  76 65 6e 74 5f 6d 65 6e  75 5f 70 72 6f 63 3e 20  |vent_menu_proc> |
0004d940  66 75 6e 63 2c 20 76 6f  69 64 20 2a 68 61 6e 64  |func, void *hand|
0004d950  6c 65 29 3b 0a 48 65 61  64 65 72 3a 09 3c 68 65  |le);.Header:.<he|
0004d960  6c 70 2e 68 3d 3e 68 65  6c 70 3e 0a 0a 54 68 69  |lp.h=>help>..Thi|
0004d970  73 20 66 75 6e 63 74 69  6f 6e 20 72 65 67 69 73  |s function regis|
0004d980  74 65 72 73 20 74 68 65  20 68 61 6e 64 6c 65 72  |ters the handler|
0004d990  20 74 6f 20 62 65 20 75  73 65 64 20 77 68 65 6e  | to be used when|
0004d9a0  20 68 65 6c 70 5f 70 72  6f 63 65 73 73 20 69 73  | help_process is|
0004d9b0  20 6e 65 78 74 20 63 61  6c 6c 65 64 2e 20 2f 68  | next called. /h|
0004d9c0  61 6e 64 6c 65 2f 20 69  73 20 70 61 73 73 65 64  |andle/ is passed|
0004d9d0  20 73 74 72 61 69 67 68  74 20 74 6f 20 2f 66 75  | straight to /fu|
0004d9e0  6e 63 2f 2e 20 54 68 69  73 20 73 68 6f 75 6c 64  |nc/. This should|
0004d9f0  20 62 65 20 63 61 6c 6c  65 64 20 62 79 20 74 68  | be called by th|
0004da00  65 20 6d 65 6e 75 2d 6d  61 6b 65 72 20 66 75 6e  |e menu-maker fun|
0004da10  63 74 69 6f 6e 20 6f 66  20 65 76 65 72 79 20 6d  |ction of every m|
0004da20  65 6e 75 20 69 6e 20 74  68 65 20 70 72 6f 67 72  |enu in the progr|
0004da30  61 6d 2e 20 57 68 65 6e  20 3c 68 65 6c 70 5f 70  |am. When <help_p|
0004da40  72 6f 63 65 73 73 3e 20  69 73 20 63 61 6c 6c 65  |rocess> is calle|
0004da50  64 2c 20 74 68 65 20 6d  6f 73 74 20 72 65 63 65  |d, the most rece|
0004da60  6e 74 6c 79 20 69 6e 73  74 61 6c 6c 65 64 20 68  |ntly installed h|
0004da70  61 6e 64 6c 65 72 20 69  73 20 61 73 73 75 6d 65  |andler is assume|
0004da80  64 20 74 6f 20 62 65 20  74 68 65 20 63 6f 72 72  |d to be the corr|
0004da90  65 63 74 20 6f 6e 65 2e  20 43 61 6c 6c 20 77 69  |ect one. Call wi|
0004daa0  74 68 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 20  |th <NULL> if no |
0004dab0  68 65 6c 70 20 69 73 20  61 76 61 69 6c 61 62 6c  |help is availabl|
0004dac0  65 20 6f 6e 20 74 68 69  73 20 6d 65 6e 75 2e 00  |e on this menu..|
0004dad0  44 41 54 41 a9 00 00 00  68 65 6c 70 5f 72 65 70  |DATA....help_rep|
0004dae0  6c 79 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |ly.Syntax:.void |
0004daf0  68 65 6c 70 5f 72 65 70  6c 79 20 28 63 68 61 72  |help_reply (char|
0004db00  20 2a 6d 29 3b 0a 48 65  61 64 65 72 3a 09 3c 68  | *m);.Header:.<h|
0004db10  65 6c 70 2e 68 3d 3e 68  65 6c 70 3e 0a 0a 54 68  |elp.h=>help>..Th|
0004db20  69 73 20 66 75 6e 63 74  69 6f 6e 20 72 65 70 6c  |is function repl|
0004db30  69 65 73 20 74 6f 20 74  68 65 20 68 65 6c 70 20  |ies to the help |
0004db40  6d 65 73 73 61 67 65 20  69 6e 20 3c 77 69 6d 70  |message in <wimp|
0004db50  74 5f 6c 61 73 74 5f 65  76 65 6e 74 3e 20 77 69  |t_last_event> wi|
0004db60  74 68 20 74 68 65 20 6d  65 73 73 61 67 65 20 73  |th the message s|
0004db70  70 65 63 69 66 69 65 64  2e 00 00 00 44 41 54 41  |pecified....DATA|
0004db80  6d 01 00 00 68 65 6c 70  5f 73 69 6d 70 6c 65 68  |m...help_simpleh|
0004db90  61 6e 64 6c 65 72 0a 53  79 6e 74 61 78 3a 09 76  |andler.Syntax:.v|
0004dba0  6f 69 64 20 68 65 6c 70  5f 73 69 6d 70 6c 65 68  |oid help_simpleh|
0004dbb0  61 6e 64 6c 65 72 20 28  76 6f 69 64 20 2a 68 61  |andler (void *ha|
0004dbc0  6e 64 6c 65 2c 20 63 68  61 72 20 2a 68 69 74 29  |ndle, char *hit)|
0004dbd0  3b 0a 48 65 61 64 65 72  3a 09 3c 68 65 6c 70 2e  |;.Header:.<help.|
0004dbe0  68 3d 3e 68 65 6c 70 3e  0a 0a 54 68 69 73 20 66  |h=>help>..This f|
0004dbf0  75 6e 63 74 69 6f 6e 20  69 73 20 61 20 73 69 6d  |unction is a sim|
0004dc00  70 6c 65 20 68 61 6e 64  6c 65 72 20 77 68 69 63  |ple handler whic|
0004dc10  68 20 63 61 6e 20 62 65  20 72 65 67 69 73 74 65  |h can be registe|
0004dc20  72 65 64 20 77 69 74 68  20 3c 68 65 6c 70 5f 72  |red with <help_r|
0004dc30  65 67 69 73 74 65 72 5f  68 61 6e 64 6c 65 72 3e  |egister_handler>|
0004dc40  20 69 6e 20 6f 72 64 65  72 20 74 6f 20 68 61 6e  | in order to han|
0004dc50  64 6c 65 20 73 69 6d 70  6c 65 20 73 74 61 74 69  |dle simple stati|
0004dc60  63 20 6d 65 6e 75 73 2e  20 2f 68 61 6e 64 6c 65  |c menus. /handle|
0004dc70  2f 20 73 68 6f 75 6c 64  20 62 65 20 74 68 65 20  |/ should be the |
0004dc80  70 72 65 66 69 78 20 74  6f 20 70 61 73 73 20 74  |prefix to pass t|
0004dc90  6f 20 3c 68 65 6c 70 5f  67 65 6e 6d 65 73 73 61  |o <help_genmessa|
0004dca0  67 65 3e 2e 20 41 6c 6c  20 74 68 69 73 20 66 75  |ge>. All this fu|
0004dcb0  6e 63 74 69 6f 6e 20 64  6f 65 73 20 69 73 20 70  |nction does is p|
0004dcc0  61 73 73 20 74 68 65 20  6d 65 6e 75 20 73 65 6c  |ass the menu sel|
0004dcd0  65 63 74 69 6f 6e 73 20  74 6f 20 74 68 61 74 20  |ections to that |
0004dce0  66 75 6e 63 74 69 6f 6e  2e 00 00 00 44 41 54 41  |function....DATA|
0004dcf0  e0 00 00 00 48 65 78 44  69 67 69 74 0a 53 79 6e  |....HexDigit.Syn|
0004dd00  74 61 78 3a 09 63 68 61  72 20 48 65 78 44 69 67  |tax:.char HexDig|
0004dd10  69 74 20 28 69 6e 74 20  6e 29 3b 0a 48 65 61 64  |it (int n);.Head|
0004dd20  65 72 3a 09 3c 54 69 6d  73 4c 69 62 3a 4c 69 62  |er:.<TimsLib:Lib|
0004dd30  2e 68 3d 3e 4c 69 62 3e  0a 0a 52 65 74 75 72 6e  |.h=>Lib>..Return|
0004dd40  73 3a 09 43 68 61 72 61  63 74 65 72 20 72 65 70  |s:.Character rep|
0004dd50  72 65 73 65 6e 74 69 6e  67 20 6e 20 69 6e 20 68  |resenting n in h|
0004dd60  65 78 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ex...This functi|
0004dd70  6f 6e 20 74 61 6b 65 73  20 61 20 6e 75 6d 62 65  |on takes a numbe|
0004dd80  72 20 2f 6e 2f 20 69 6e  20 74 68 65 20 72 61 6e  |r /n/ in the ran|
0004dd90  67 65 20 30 2d 31 35 20  61 6e 64 20 72 65 74 75  |ge 0-15 and retu|
0004dda0  72 6e 73 20 74 68 65 20  61 70 70 72 6f 70 72 69  |rns the appropri|
0004ddb0  61 74 65 20 68 65 78 61  64 65 63 69 6d 61 6c 20  |ate hexadecimal |
0004ddc0  64 69 67 69 74 20 28 30  2d 46 29 2e 44 41 54 41  |digit (0-F).DATA|
0004ddd0  11 01 00 00 44 65 73 6b  4c 69 62 3a 48 6f 75 72  |....DeskLib:Hour|
0004dde0  67 6c 61 73 73 2e 68 0a  56 65 72 73 69 6f 6e 3a  |glass.h.Version:|
0004ddf0  20 32 2e 30 30 20 28 32  34 20 4a 75 6c 20 31 39  | 2.00 (24 Jul 19|
0004de00  39 33 29 0a 23 6c 69 6e  65 0a 54 68 65 20 68 65  |93).#line.The he|
0004de10  61 64 65 72 20 5c 3c 44  65 73 6b 4c 69 62 3a 48  |ader \<DeskLib:H|
0004de20  6f 75 72 67 6c 61 73 73  2e 68 3e 20 64 65 63 6c  |ourglass.h> decl|
0004de30  61 72 65 73 20 66 75 6e  63 74 69 6f 6e 73 20 66  |ares functions f|
0004de40  6f 72 20 68 61 6e 64 6c  69 6e 67 20 74 68 65 20  |or handling the |
0004de50  3c 48 6f 75 72 67 6c 61  73 73 3d 3e 53 57 49 3a  |<Hourglass=>SWI:|
0004de60  48 6f 75 72 67 6c 61 73  73 5f 3e 2e 0a 0a 23 54  |Hourglass_>...#T|
0004de70  61 62 6c 65 20 33 20 32  34 0a 3c 48 6f 75 72 67  |able 3 24.<Hourg|
0004de80  6c 61 73 73 5f 4f 6e 3e  0a 3c 48 6f 75 72 67 6c  |lass_On>.<Hourgl|
0004de90  61 73 73 5f 53 74 61 72  74 3e 0a 3c 48 6f 75 72  |ass_Start>.<Hour|
0004dea0  67 6c 61 73 73 5f 50 65  72 63 65 6e 74 61 67 65  |glass_Percentage|
0004deb0  3e 0a 3c 48 6f 75 72 67  6c 61 73 73 5f 4f 66 66  |>.<Hourglass_Off|
0004dec0  3e 0a 3c 48 6f 75 72 67  6c 61 73 73 5f 53 6d 61  |>.<Hourglass_Sma|
0004ded0  73 68 3e 0a 23 45 6e 64  54 61 62 6c 65 00 00 00  |sh>.#EndTable...|
0004dee0  44 49 52 24 a8 00 00 00  a8 00 00 00 88 df 04 00  |DIR$............|
0004def0  46 ff ff ff fd 20 2c 25  03 01 00 00 13 00 00 00  |F.... ,%........|
0004df00  00 00 00 00 4f 66 66 00  8c e0 04 00 46 ff ff ff  |....Off.....F...|
0004df10  98 04 2c 25 f7 00 00 00  13 00 00 00 00 00 00 00  |..,%............|
0004df20  4f 6e 00 00 84 e1 04 00  46 ff ff ff 6f 1a 2c 25  |On......F...o.,%|
0004df30  3d 01 00 00 13 00 00 00  00 00 00 00 50 65 72 63  |=...........Perc|
0004df40  65 6e 74 61 67 65 00 00  c4 e2 04 00 46 ff ff ff  |entage......F...|
0004df50  16 26 2c 25 88 01 00 00  13 00 00 00 00 00 00 00  |.&,%............|
0004df60  53 6d 61 73 68 00 00 00  4c e4 04 00 46 ff ff ff  |Smash...L...F...|
0004df70  95 0b 2c 25 75 01 00 00  13 00 00 00 00 00 00 00  |..,%u...........|
0004df80  53 74 61 72 74 00 00 00  44 41 54 41 03 01 00 00  |Start...DATA....|
0004df90  48 6f 75 72 67 6c 61 73  73 5f 4f 66 66 0a 53 79  |Hourglass_Off.Sy|
0004dfa0  6e 74 61 78 3a 09 76 6f  69 64 20 48 6f 75 72 67  |ntax:.void Hourg|
0004dfb0  6c 61 73 73 5f 4f 66 66  28 76 6f 69 64 29 3b 0a  |lass_Off(void);.|
0004dfc0  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
0004dfd0  3a 48 6f 75 72 67 6c 61  73 73 2e 68 3d 3e 48 6f  |:Hourglass.h=>Ho|
0004dfe0  75 72 67 6c 61 73 73 3e  0a 0a 52 65 74 75 72 6e  |urglass>..Return|
0004dff0  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
0004e000  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
0004e010  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
0004e020  6e 63 74 69 6f 6e 20 72  65 6d 6f 76 65 73 20 74  |nction removes t|
0004e030  68 65 20 69 6e 64 69 63  61 74 69 6f 6e 20 6f 66  |he indication of|
0004e040  20 74 68 65 20 64 65 6c  61 79 2e 20 49 74 20 69  | the delay. It i|
0004e050  73 20 65 71 75 69 76 61  6c 65 6e 74 20 74 6f 20  |s equivalent to |
0004e060  74 68 65 20 53 57 49 20  3c 48 6f 75 72 67 6c 61  |the SWI <Hourgla|
0004e070  73 73 5f 4f 66 66 3d 3e  53 57 49 3a 48 6f 75 72  |ss_Off=>SWI:Hour|
0004e080  67 6c 61 73 73 5f 4f 66  66 3e 2e 00 44 41 54 41  |glass_Off>..DATA|
0004e090  f7 00 00 00 48 6f 75 72  67 6c 61 73 73 5f 4f 6e  |....Hourglass_On|
0004e0a0  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 48 6f  |.Syntax:.void Ho|
0004e0b0  75 72 67 6c 61 73 73 5f  4f 6e 20 28 76 6f 69 64  |urglass_On (void|
0004e0c0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
0004e0d0  4c 69 62 3a 48 6f 75 72  67 6c 61 73 73 2e 68 3d  |Lib:Hourglass.h=|
0004e0e0  3e 48 6f 75 72 67 6c 61  73 73 3e 0a 0a 54 68 69  |>Hourglass>..Thi|
0004e0f0  73 20 66 75 6e 63 74 69  6f 6e 20 63 68 61 6e 67  |s function chang|
0004e100  65 73 20 74 68 65 20 6d  6f 75 73 65 20 70 6f 69  |es the mouse poi|
0004e110  6e 74 65 72 20 74 6f 20  73 68 6f 77 20 74 68 65  |nter to show the|
0004e120  20 75 73 65 72 20 74 68  61 74 20 73 6f 6d 65 20  | user that some |
0004e130  64 65 6c 61 79 20 77 69  6c 6c 20 6f 63 63 75 72  |delay will occur|
0004e140  2e 20 49 74 20 64 6f 65  73 20 74 68 69 73 20 62  |. It does this b|
0004e150  79 20 63 61 6c 6c 69 6e  67 20 74 68 65 20 53 57  |y calling the SW|
0004e160  49 20 3c 48 6f 75 72 67  6c 61 73 73 5f 4f 6e 3d  |I <Hourglass_On=|
0004e170  3e 53 57 49 3a 48 6f 75  72 67 6c 61 73 73 5f 4f  |>SWI:Hourglass_O|
0004e180  6e 3e 2e 00 44 41 54 41  3d 01 00 00 48 6f 75 72  |n>..DATA=...Hour|
0004e190  67 6c 61 73 73 5f 50 65  72 63 65 6e 74 61 67 65  |glass_Percentage|
0004e1a0  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 48 6f  |.Syntax:.void Ho|
0004e1b0  75 72 67 6c 61 73 73 5f  50 65 72 63 65 6e 74 61  |urglass_Percenta|
0004e1c0  67 65 20 28 69 6e 74 20  70 63 29 3b 0a 48 65 61  |ge (int pc);.Hea|
0004e1d0  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 48 6f  |der:.<DeskLib:Ho|
0004e1e0  75 72 67 6c 61 73 73 2e  68 3d 3e 48 6f 75 72 67  |urglass.h=>Hourg|
0004e1f0  6c 61 73 73 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |lass>..Returns:.|
0004e200  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
0004e210  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
0004e220  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
0004e230  69 6f 6e 20 69 6e 64 69  63 61 74 65 73 20 74 6f  |ion indicates to|
0004e240  20 74 68 65 20 75 73 65  72 20 74 68 61 74 20 74  | the user that t|
0004e250  68 65 20 64 65 6c 61 79  20 69 73 20 2f 70 63 2f  |he delay is /pc/|
0004e260  20 70 65 72 63 65 6e 74  20 63 6f 6d 70 6c 65 74  | percent complet|
0004e270  65 64 2e 20 49 74 20 69  73 20 65 71 75 69 76 61  |ed. It is equiva|
0004e280  6c 65 6e 74 20 74 6f 20  74 68 65 20 53 57 49 20  |lent to the SWI |
0004e290  3c 48 6f 75 72 67 6c 61  73 73 5f 50 65 72 63 65  |<Hourglass_Perce|
0004e2a0  6e 74 61 67 65 3d 3e 53  57 49 3a 48 6f 75 72 67  |ntage=>SWI:Hourg|
0004e2b0  6c 61 73 73 5f 50 65 72  63 65 6e 74 61 67 65 3e  |lass_Percentage>|
0004e2c0  2e 00 00 00 44 41 54 41  88 01 00 00 48 6f 75 72  |....DATA....Hour|
0004e2d0  67 6c 61 73 73 5f 53 6d  61 73 68 0a 53 79 6e 74  |glass_Smash.Synt|
0004e2e0  61 78 3a 09 76 6f 69 64  20 48 6f 75 72 67 6c 61  |ax:.void Hourgla|
0004e2f0  73 73 5f 53 6d 61 73 68  20 28 76 6f 69 64 29 3b  |ss_Smash (void);|
0004e300  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
0004e310  62 3a 48 6f 75 72 67 6c  61 73 73 2e 68 3d 3e 48  |b:Hourglass.h=>H|
0004e320  6f 75 72 67 6c 61 73 73  3e 0a 0a 52 65 74 75 72  |ourglass>..Retur|
0004e330  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
0004e340  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
0004e350  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
0004e360  75 6e 63 74 69 6f 6e 20  66 6f 72 63 65 73 20 74  |unction forces t|
0004e370  68 65 20 69 6e 64 69 63  61 74 69 6f 6e 20 6f 66  |he indication of|
0004e380  20 61 20 64 65 6c 61 79  20 74 6f 20 62 65 20 72  | a delay to be r|
0004e390  65 6d 6f 76 65 64 2e 20  4e 6f 72 6d 61 6c 6c 79  |emoved. Normally|
0004e3a0  2c 20 3c 48 6f 75 72 67  6c 61 73 73 5f 4f 66 66  |, <Hourglass_Off|
0004e3b0  3e 20 6d 75 73 74 20 62  65 20 63 61 6c 6c 65 64  |> must be called|
0004e3c0  20 66 6f 72 20 65 61 63  68 20 74 69 6d 65 20 3c  | for each time <|
0004e3d0  48 6f 75 72 67 6c 61 73  73 5f 4f 6e 3e 20 6f 72  |Hourglass_On> or|
0004e3e0  20 3c 48 6f 75 72 67 6c  61 73 73 5f 53 74 61 72  | <Hourglass_Star|
0004e3f0  74 3e 20 69 73 20 63 61  6c 6c 65 64 2e 20 54 68  |t> is called. Th|
0004e400  69 73 20 66 75 6e 63 74  69 6f 6e 20 69 73 20 65  |is function is e|
0004e410  71 75 69 76 61 6c 65 6e  74 20 74 6f 20 74 68 65  |quivalent to the|
0004e420  20 53 57 49 20 3c 48 6f  75 72 67 6c 61 73 73 5f  | SWI <Hourglass_|
0004e430  53 6d 61 73 68 3d 3e 53  57 49 3a 48 6f 75 72 67  |Smash=>SWI:Hourg|
0004e440  6c 61 73 73 5f 53 6d 61  73 68 3e 2e 44 41 54 41  |lass_Smash>.DATA|
0004e450  75 01 00 00 48 6f 75 72  67 6c 61 73 73 5f 53 74  |u...Hourglass_St|
0004e460  61 72 74 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |art.Syntax:.void|
0004e470  20 48 6f 75 72 67 6c 61  73 73 5f 53 74 61 72 74  | Hourglass_Start|
0004e480  20 28 69 6e 74 20 64 65  6c 61 79 29 3b 0a 48 65  | (int delay);.He|
0004e490  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 48  |ader:.<DeskLib:H|
0004e4a0  6f 75 72 67 6c 61 73 73  2e 68 3d 3e 48 6f 75 72  |ourglass.h=>Hour|
0004e4b0  67 6c 61 73 73 3e 0a 0a  52 65 74 75 72 6e 73 3a  |glass>..Returns:|
0004e4c0  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
0004e4d0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
0004e4e0  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
0004e4f0  74 69 6f 6e 20 63 68 61  6e 67 65 73 20 74 68 65  |tion changes the|
0004e500  20 6d 6f 75 73 65 20 70  6f 69 6e 74 65 72 20 74  | mouse pointer t|
0004e510  6f 20 73 68 6f 77 20 74  68 65 20 75 73 65 72 20  |o show the user |
0004e520  74 68 61 74 20 73 6f 6d  65 20 64 65 6c 61 79 20  |that some delay |
0004e530  77 69 6c 6c 20 6f 63 63  75 72 2e 20 54 68 65 20  |will occur. The |
0004e540  63 68 61 6e 67 65 20 77  69 6c 6c 20 6f 63 63 75  |change will occu|
0004e550  72 20 64 65 6c 61 79 20  63 65 6e 74 69 73 65 63  |r delay centisec|
0004e560  6f 6e 64 73 20 61 66 74  65 72 20 74 68 69 73 20  |onds after this |
0004e570  63 61 6c 6c 20 69 73 20  6d 61 64 65 2e 20 49 74  |call is made. It|
0004e580  20 69 73 20 65 71 75 69  76 61 6c 65 6e 74 20 74  | is equivalent t|
0004e590  6f 20 74 68 65 20 53 57  49 20 3c 48 6f 75 72 67  |o the SWI <Hourg|
0004e5a0  6c 61 73 73 5f 53 74 61  72 74 3d 3e 53 57 49 3a  |lass_Start=>SWI:|
0004e5b0  48 6f 75 72 67 6c 61 73  73 5f 53 74 61 72 74 3e  |Hourglass_Start>|
0004e5c0  2e 00 00 00 44 49 52 24  28 00 00 00 28 00 00 00  |....DIR$(...(...|
0004e5d0  ec e5 04 00 46 ff ff ff  26 be b5 22 99 00 00 00  |....F...&.."....|
0004e5e0  13 00 00 00 00 00 00 00  56 41 4c 00 44 41 54 41  |........VAL.DATA|
0004e5f0  99 00 00 00 48 55 47 45  5f 56 41 4c 0a 54 68 65  |....HUGE_VAL.The|
0004e600  20 6d 61 63 72 6f 20 48  55 47 45 5f 56 41 4c 20  | macro HUGE_VAL |
0004e610  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 6d  |is defined in <m|
0004e620  61 74 68 2e 68 3d 3e 6d  61 74 68 3e 20 61 73 20  |ath.h=>math> as |
0004e630  61 0a 70 6f 73 69 74 69  76 65 20 64 6f 75 62 6c  |a.positive doubl|
0004e640  65 2e 20 49 74 20 69 73  20 75 73 65 64 20 69 6e  |e. It is used in|
0004e650  20 72 65 73 75 6c 74 20  6f 76 65 72 66 6c 6f 77  | result overflow|
0004e660  73 0a 74 6f 20 69 6e 64  69 63 61 74 65 20 74 68  |s.to indicate th|
0004e670  65 20 73 69 67 6e 20 6f  66 20 74 68 65 20 72 65  |e sign of the re|
0004e680  73 75 6c 74 2e 00 00 00  44 49 52 24 14 04 00 00  |sult....DIR$....|
0004e690  14 04 00 00 9c ea 04 00  46 ff ff ff 63 f8 2e 25  |........F...c..%|
0004e6a0  51 01 00 00 13 00 00 00  00 00 00 00 49 63 6f 6e  |Q...........Icon|
0004e6b0  00 00 00 00 f0 eb 04 00  46 fd ff ff f4 98 84 2f  |........F....../|
0004e6c0  20 09 00 00 13 01 00 00  00 00 00 00 49 63 6f 6e  | ...........Icon|
0004e6d0  5f 00 00 00 48 44 05 00  46 fd ff ff e3 9d 84 2f  |_...HD..F....../|
0004e6e0  4c 00 00 00 13 01 00 00  00 00 00 00 69 63 6f 6e  |L...........icon|
0004e6f0  62 61 72 5f 00 00 00 00  0c 46 05 00 46 ff ff ff  |bar_.....F..F...|
0004e700  ec 1e 84 2f 83 02 00 00  13 00 00 00 00 00 00 00  |.../............|
0004e710  69 66 00 00 90 48 05 00  46 fd ff ff 37 9e 84 2f  |if...H..F...7../|
0004e720  2c 00 00 00 13 01 00 00  00 00 00 00 69 66 5f 00  |,...........if_.|
0004e730  68 4a 05 00 46 ff ff ff  1f 74 e5 22 b6 01 00 00  |hJ..F....t."....|
0004e740  13 00 00 00 00 00 00 00  69 66 64 65 66 00 00 00  |........ifdef...|
0004e750  20 4c 05 00 46 ff ff ff  51 7d e5 22 bc 01 00 00  | L..F...Q}."....|
0004e760  13 00 00 00 00 00 00 00  69 66 6e 64 65 66 00 00  |........ifndef..|
0004e770  dc 4d 05 00 46 ff ff ff  62 05 e6 22 29 02 00 00  |.M..F...b..")...|
0004e780  13 00 00 00 00 00 00 00  49 4d 50 4f 52 54 00 00  |........IMPORT..|
0004e790  08 50 05 00 46 ff ff ff  ad 53 e5 22 1e 03 00 00  |.P..F....S."....|
0004e7a0  13 00 00 00 00 00 00 00  69 6e 63 6c 75 64 65 00  |........include.|
0004e7b0  28 53 05 00 46 fd ff ff  ac 9e 84 2f 44 00 00 00  |(S..F....../D...|
0004e7c0  13 01 00 00 00 00 00 00  49 4e 54 5f 00 00 00 00  |........INT_....|
0004e7d0  bc 54 05 00 46 ff ff ff  f7 c3 55 26 34 02 00 00  |.T..F.....U&4...|
0004e7e0  13 00 00 00 00 00 00 00  49 6e 74 65 72 66 61 63  |........Interfac|
0004e7f0  65 00 00 00 f0 56 05 00  46 fd ff ff f7 9e 84 2f  |e....V..F....../|
0004e800  88 01 00 00 13 01 00 00  00 00 00 00 49 6e 74 65  |............Inte|
0004e810  72 66 61 63 65 5f 00 00  d4 64 05 00 46 ff ff ff  |rface_...d..F...|
0004e820  54 27 bb 22 08 01 00 00  13 00 00 00 00 00 00 00  |T'."............|
0004e830  69 73 61 6c 6e 75 6d 00  dc 65 05 00 46 ff ff ff  |isalnum..e..F...|
0004e840  d9 f1 ba 22 be 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0004e850  69 73 61 6c 70 68 61 00  9c 66 05 00 46 ff ff ff  |isalpha..f..F...|
0004e860  ff fa ba 22 c7 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0004e870  69 73 63 6e 74 72 6c 00  64 67 05 00 46 ff ff ff  |iscntrl.dg..F...|
0004e880  1a 03 bb 22 c3 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0004e890  69 73 64 69 67 69 74 00  28 68 05 00 46 ff ff ff  |isdigit.(h..F...|
0004e8a0  3e 0a bb 22 dd 00 00 00  13 00 00 00 00 00 00 00  |>.."............|
0004e8b0  69 73 67 72 61 70 68 00  08 69 05 00 46 ff ff ff  |isgraph..i..F...|
0004e8c0  dc 0f bb 22 bd 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0004e8d0  69 73 6c 6f 77 65 72 00  c8 69 05 00 46 ff ff ff  |islower..i..F...|
0004e8e0  bf 14 bb 22 e3 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0004e8f0  69 73 70 72 69 6e 74 00  ac 6a 05 00 46 ff ff ff  |isprint..j..F...|
0004e900  37 21 bb 22 35 01 00 00  13 00 00 00 00 00 00 00  |7!."5...........|
0004e910  69 73 70 75 6e 63 74 00  e4 6b 05 00 46 ff ff ff  |ispunct..k..F...|
0004e920  16 41 bb 22 81 01 00 00  13 00 00 00 00 00 00 00  |.A."............|
0004e930  69 73 73 70 61 63 65 00  68 6d 05 00 46 ff ff ff  |isspace.hm..F...|
0004e940  a7 49 bb 22 bd 00 00 00  13 00 00 00 00 00 00 00  |.I."............|
0004e950  69 73 75 70 70 65 72 00  28 6e 05 00 46 ff ff ff  |isupper.(n..F...|
0004e960  b0 50 bb 22 cb 00 00 00  13 00 00 00 00 00 00 00  |.P."............|
0004e970  69 73 78 64 69 67 69 74  00 00 00 00 f4 6e 05 00  |isxdigit.....n..|
0004e980  46 fd ff ff 9c a0 84 2f  28 00 00 00 13 01 00 00  |F....../(.......|
0004e990  00 00 00 00 6a 6d 70 5f  00 00 00 00 e8 6f 05 00  |....jmp_.....o..|
0004e9a0  46 fd ff ff be a0 84 2f  70 00 00 00 13 01 00 00  |F....../p.......|
0004e9b0  00 00 00 00 6a 6f 69 6e  5f 00 00 00 18 72 05 00  |....join_....r..|
0004e9c0  46 fd ff ff 08 a1 84 2f  88 00 00 00 13 01 00 00  |F....../........|
0004e9d0  00 00 00 00 6b 5f 00 00  ec 77 05 00 46 ff ff ff  |....k_...w..F...|
0004e9e0  da 89 30 25 1b 01 00 00  13 00 00 00 00 00 00 00  |..0%............|
0004e9f0  4b 62 64 00 08 79 05 00  46 fd ff ff 72 a1 84 2f  |Kbd..y..F...r../|
0004ea00  d4 00 00 00 13 01 00 00  00 00 00 00 4b 62 64 5f  |............Kbd_|
0004ea10  00 00 00 00 cc 83 05 00  46 ff ff ff 39 19 ae 24  |........F...9..$|
0004ea20  37 03 00 00 13 00 00 00  00 00 00 00 6b 65 72 6e  |7...........kern|
0004ea30  65 6c 00 00 04 87 05 00  46 ff ff ff 50 e9 3e 25  |el......F...P.>%|
0004ea40  49 01 00 00 13 00 00 00  00 00 00 00 4b 65 72 6e  |I...........Kern|
0004ea50  65 6c 53 57 49 73 00 00  50 88 05 00 46 fd ff ff  |elSWIs..P...F...|
0004ea60  26 a2 84 2f 4c 00 00 00  13 01 00 00 00 00 00 00  |&../L...........|
0004ea70  6b 65 79 5f 00 00 00 00  0c 8a 05 00 46 ff ff ff  |key_........F...|
0004ea80  f5 4c 3f 25 78 07 00 00  13 00 00 00 00 00 00 00  |.L?%x...........|
0004ea90  4b 65 79 43 6f 64 65 73  00 00 00 00 44 41 54 41  |KeyCodes....DATA|
0004eaa0  51 01 00 00 44 65 73 6b  4c 69 62 3a 49 63 6f 6e  |Q...DeskLib:Icon|
0004eab0  2e 68 0a 56 65 72 73 69  6f 6e 3a 20 31 2e 31 34  |.h.Version: 1.14|
0004eac0  20 28 44 65 63 20 31 39  39 34 29 0a 23 6c 69 6e  | (Dec 1994).#lin|
0004ead0  65 0a 54 68 69 73 20 68  65 61 64 65 72 20 64 65  |e.This header de|
0004eae0  63 6c 61 72 65 73 20 66  75 6e 63 74 69 6f 6e 73  |clares functions|
0004eaf0  20 66 6f 72 20 68 69 67  68 2d 6c 65 76 65 6c 20  | for high-level |
0004eb00  69 63 6f 6e 20 68 61 6e  64 6c 69 6e 67 2e 0a 0a  |icon handling...|
0004eb10  23 49 6e 64 65 6e 74 20  31 33 0a 3c 43 6f 6e 74  |#Indent 13.<Cont|
0004eb20  72 6f 6c 6c 69 6e 67 3d  3e 49 63 6f 6e 5f 63 6f  |rolling=>Icon_co|
0004eb30  6e 74 5f 3e 0a 3c 52 65  61 64 69 6e 67 2f 57 72  |nt_>.<Reading/Wr|
0004eb40  69 74 69 6e 67 20 53 74  61 74 65 3d 3e 49 63 6f  |iting State=>Ico|
0004eb50  6e 5f 73 74 61 74 65 5f  3e 0a 3c 52 65 61 64 69  |n_state_>.<Readi|
0004eb60  6e 67 2f 57 72 69 74 69  6e 67 20 43 6f 6e 74 65  |ng/Writing Conte|
0004eb70  6e 74 73 3d 3e 49 63 6f  6e 5f 63 6f 6e 74 65 6e  |nts=>Icon_conten|
0004eb80  74 73 5f 3e 0a 3c 44 72  61 67 67 69 6e 67 3d 3e  |ts_>.<Dragging=>|
0004eb90  49 63 6f 6e 5f 64 72 61  67 5f 3e 0a 3c 53 6c 69  |Icon_drag_>.<Sli|
0004eba0  64 65 72 20 6f 70 65 72  61 74 69 6f 6e 73 3d 3e  |der operations=>|
0004ebb0  49 63 6f 6e 5f 73 6c 69  64 65 5f 3e 0a 23 69 6e  |Icon_slide_>.#in|
0004ebc0  64 65 6e 74 0a 0a 54 79  70 65 3a 0a 0a 7b 61 6c  |dent..Type:..{al|
0004ebd0  69 67 6e 20 63 65 6e 74  72 65 7d 3c 69 63 6f 6e  |ign centre}<icon|
0004ebe0  5f 69 6e 63 64 65 63 62  6c 6f 63 6b 3e 00 00 00  |_incdecblock>...|
0004ebf0  44 49 52 24 20 09 00 00  20 09 00 00 10 f5 04 00  |DIR$ ... .......|
0004ec00  46 ff ff ff 96 78 e3 27  57 01 00 00 13 00 00 00  |F....x.'W.......|
0004ec10  00 00 00 00 42 61 72 49  63 6f 6e 00 68 f6 04 00  |....BarIcon.h...|
0004ec20  46 ff ff ff 62 82 e3 27  c5 01 00 00 13 00 00 00  |F...b..'........|
0004ec30  00 00 00 00 42 61 72 49  63 6f 6e 55 73 65 72 00  |....BarIconUser.|
0004ec40  30 f8 04 00 46 ff ff ff  5b 21 41 26 c9 00 00 00  |0...F...[!A&....|
0004ec50  13 00 00 00 00 00 00 00  62 6c 6f 63 6b 00 00 00  |........block...|
0004ec60  fc f8 04 00 46 ff ff ff  33 57 2e 25 0b 01 00 00  |....F...3W.%....|
0004ec70  13 00 00 00 00 00 00 00  43 6c 69 63 6b 57 61 69  |........ClickWai|
0004ec80  74 00 00 00 08 fa 04 00  46 fd ff ff a1 55 30 25  |t.......F....U0%|
0004ec90  1c 01 00 00 13 00 00 00  00 00 00 00 63 6f 6e 74  |............cont|
0004eca0  5f 00 00 00 24 fb 04 00  46 fd ff ff 15 1b 30 25  |_...$...F.....0%|
0004ecb0  10 01 00 00 13 00 00 00  00 00 00 00 63 6f 6e 74  |............cont|
0004ecc0  65 6e 74 73 5f 00 00 00  34 fc 04 00 46 ff ff ff  |ents_...4...F...|
0004ecd0  9c 27 41 26 bd 00 00 00  13 00 00 00 00 00 00 00  |.'A&............|
0004ece0  63 72 65 61 74 65 62 6c  6f 63 6b 00 f4 fc 04 00  |createblock.....|
0004ecf0  46 ff ff ff 28 17 41 26  f6 00 00 00 13 00 00 00  |F...(.A&........|
0004ed00  00 00 00 00 64 61 74 61  00 00 00 00 ec fd 04 00  |....data........|
0004ed10  46 ff ff ff f1 a5 2c 25  b6 00 00 00 13 00 00 00  |F.....,%........|
0004ed20  00 00 00 00 44 65 73 65  6c 65 63 74 00 00 00 00  |....Deselect....|
0004ed30  a4 fe 04 00 46 ff ff ff  8b 8d 55 26 37 01 00 00  |....F.....U&7...|
0004ed40  13 00 00 00 00 00 00 00  44 69 73 70 6f 73 65 44  |........DisposeD|
0004ed50  61 74 61 00 dc ff 04 00  46 ff ff ff 82 89 2e 25  |ata.....F......%|
0004ed60  47 01 00 00 13 00 00 00  00 00 00 00 44 69 73 70  |G...........Disp|
0004ed70  6f 73 65 49 6e 64 44 61  74 61 00 00 24 01 05 00  |oseIndData..$...|
0004ed80  46 fd ff ff 0a 61 2e 25  62 00 00 00 13 00 00 00  |F....a.%b.......|
0004ed90  00 00 00 00 64 72 61 67  5f 00 00 00 88 01 05 00  |....drag_.......|
0004eda0  46 ff ff ff 36 dc 2e 25  8b 01 00 00 13 00 00 00  |F...6..%........|
0004edb0  00 00 00 00 44 72 61 67  53 6c 69 64 65 72 00 00  |....DragSlider..|
0004edc0  14 03 05 00 46 ff ff ff  df a0 2e 25 4f 01 00 00  |....F......%O...|
0004edd0  13 00 00 00 00 00 00 00  46 69 6c 65 49 63 6f 6e  |........FileIcon|
0004ede0  00 00 00 00 64 04 05 00  46 ff ff ff e4 4e 38 26  |....d...F....N8&|
0004edf0  d6 03 00 00 13 00 00 00  00 00 00 00 66 6c 61 67  |............flag|
0004ee00  73 00 00 00 3c 08 05 00  46 ff ff ff 0c df 2c 25  |s...<...F.....,%|
0004ee10  68 01 00 00 13 00 00 00  00 00 00 00 46 6f 72 63  |h...........Forc|
0004ee20  65 52 65 64 72 61 77 00  a4 09 05 00 46 ff ff ff  |eRedraw.....F...|
0004ee30  6f cf 2c 25 ea 00 00 00  13 00 00 00 00 00 00 00  |o.,%............|
0004ee40  46 6f 72 63 65 57 69 6e  64 6f 77 52 65 64 72 61  |ForceWindowRedra|
0004ee50  77 00 00 00 90 0a 05 00  46 ff ff ff 9b eb 2d 25  |w.......F.....-%|
0004ee60  07 01 00 00 13 00 00 00  00 00 00 00 47 65 74 42  |............GetB|
0004ee70  67 43 6f 6c 00 00 00 00  98 0b 05 00 46 ff ff ff  |gCol........F...|
0004ee80  eb 29 2d 25 2f 01 00 00  13 00 00 00 00 00 00 00  |.)-%/...........|
0004ee90  47 65 74 44 6f 75 62 6c  65 00 00 00 c8 0c 05 00  |GetDouble.......|
0004eea0  46 ff ff ff 81 e5 2d 25  1b 01 00 00 13 00 00 00  |F.....-%........|
0004eeb0  00 00 00 00 47 65 74 46  67 43 6f 6c 00 00 00 00  |....GetFgCol....|
0004eec0  e4 0d 05 00 46 ff ff ff  ab 70 2d 25 28 01 00 00  |....F....p-%(...|
0004eed0  13 00 00 00 00 00 00 00  47 65 74 49 6e 74 65 67  |........GetInteg|
0004eee0  65 72 00 00 0c 0f 05 00  46 ff ff ff 09 91 2c 25  |er......F.....,%|
0004eef0  d9 00 00 00 13 00 00 00  00 00 00 00 47 65 74 53  |............GetS|
0004ef00  65 6c 65 63 74 00 00 00  e8 0f 05 00 46 ff ff ff  |elect.......F...|
0004ef10  2e 96 2c 25 d3 00 00 00  13 00 00 00 00 00 00 00  |..,%............|
0004ef20  47 65 74 53 68 61 64 65  00 00 00 00 bc 10 05 00  |GetShade........|
0004ef30  46 ff ff ff 79 76 2d 25  1b 01 00 00 13 00 00 00  |F...yv-%........|
0004ef40  00 00 00 00 47 65 74 54  65 78 74 00 d8 11 05 00  |....GetText.....|
0004ef50  46 ff ff ff 96 7f 2d 25  96 01 00 00 13 00 00 00  |F.....-%........|
0004ef60  00 00 00 00 47 65 74 54  65 78 74 50 74 72 00 00  |....GetTextPtr..|
0004ef70  70 13 05 00 46 ff ff ff  7a 73 37 26 7f 00 00 00  |p...F...zs7&....|
0004ef80  13 00 00 00 00 00 00 00  68 61 6e 64 6c 65 00 00  |........handle..|
0004ef90  f0 13 05 00 46 ff ff ff  73 66 38 26 de 00 00 00  |....F...sf8&....|
0004efa0  13 00 00 00 00 00 00 00  69 6e 64 73 70 72 69 74  |........indsprit|
0004efb0  65 00 00 00 d0 14 05 00  46 ff ff ff c3 59 38 26  |e.......F....Y8&|
0004efc0  d2 00 00 00 13 00 00 00  00 00 00 00 69 6e 64 74  |............indt|
0004efd0  65 78 74 00 a4 15 05 00  46 ff ff ff a4 ed 2c 25  |ext.....F.....,%|
0004efe0  00 01 00 00 13 00 00 00  00 00 00 00 4c 6f 73 65  |............Lose|
0004eff0  43 61 72 65 74 00 00 00  a4 16 05 00 46 ff ff ff  |Caret.......F...|
0004f000  34 65 2d 25 59 01 00 00  13 00 00 00 00 00 00 00  |4e-%Y...........|
0004f010  70 72 69 6e 74 66 00 00  00 18 05 00 46 ff ff ff  |printf......F...|
0004f020  34 e2 2e 25 f6 00 00 00  13 00 00 00 00 00 00 00  |4..%............|
0004f030  52 65 61 64 53 6c 69 64  65 72 00 00 f8 18 05 00  |ReadSlider......|
0004f040  46 ff ff ff df af 2e 25  26 01 00 00 13 00 00 00  |F......%&.......|
0004f050  00 00 00 00 53 63 72 65  65 6e 50 6f 73 00 00 00  |....ScreenPos...|
0004f060  20 1a 05 00 46 ff ff ff  f0 a1 2c 25 b2 00 00 00  | ...F.....,%....|
0004f070  13 00 00 00 00 00 00 00  53 65 6c 65 63 74 00 00  |........Select..|
0004f080  d4 1a 05 00 46 ff ff ff  9c 93 55 26 36 01 00 00  |....F.....U&6...|
0004f090  13 00 00 00 00 00 00 00  53 65 6c 65 63 74 47 72  |........SelectGr|
0004f0a0  6f 75 70 00 0c 1c 05 00  46 ff ff ff e1 c7 2c 25  |oup.....F.....,%|
0004f0b0  1d 01 00 00 13 00 00 00  00 00 00 00 53 65 74 42  |............SetB|
0004f0c0  61 63 6b 43 6f 6c 6f 75  72 00 00 00 2c 1d 05 00  |ackColour...,...|
0004f0d0  46 ff ff ff 45 c0 2d 25  53 01 00 00 13 00 00 00  |F...E.-%S.......|
0004f0e0  00 00 00 00 53 65 74 42  67 43 6f 6c 00 00 00 00  |....SetBgCol....|
0004f0f0  80 1e 05 00 46 ff ff ff  2b e9 2c 25 0c 01 00 00  |....F...+.,%....|
0004f100  13 00 00 00 00 00 00 00  53 65 74 43 61 72 65 74  |........SetCaret|
0004f110  00 00 00 00 8c 1f 05 00  46 ff ff ff 9c 38 2d 25  |........F....8-%|
0004f120  63 01 00 00 13 00 00 00  00 00 00 00 53 65 74 44  |c...........SetD|
0004f130  6f 75 62 6c 65 00 00 00  f0 20 05 00 46 ff ff ff  |ouble.... ..F...|
0004f140  fd b8 2d 25 48 01 00 00  13 00 00 00 00 00 00 00  |..-%H...........|
0004f150  53 65 74 46 67 43 6f 6c  00 00 00 00 38 22 05 00  |SetFgCol....8"..|
0004f160  46 ff ff ff cc a1 2d 25  9c 01 00 00 13 00 00 00  |F.....-%........|
0004f170  00 00 00 00 53 65 74 46  6c 61 67 73 00 00 00 00  |....SetFlags....|
0004f180  d4 23 05 00 46 ff ff ff  a8 c2 2c 25 1d 01 00 00  |.#..F.....,%....|
0004f190  13 00 00 00 00 00 00 00  53 65 74 46 6f 72 65 43  |........SetForeC|
0004f1a0  6f 6c 6f 75 72 00 00 00  f4 24 05 00 46 ff ff ff  |olour....$..F...|
0004f1b0  25 30 2d 25 3c 01 00 00  13 00 00 00 00 00 00 00  |%0-%<...........|
0004f1c0  53 65 74 49 6e 74 65 67  65 72 00 00 30 26 05 00  |SetInteger..0&..|
0004f1d0  46 ff ff ff 8c f7 2d 25  9f 01 00 00 13 00 00 00  |F.....-%........|
0004f1e0  00 00 00 00 53 65 74 52  61 64 69 6f 73 00 00 00  |....SetRadios...|
0004f1f0  d0 27 05 00 46 ff ff ff  da 9c 2c 25 de 00 00 00  |.'..F.....,%....|
0004f200  13 00 00 00 00 00 00 00  53 65 74 53 65 6c 65 63  |........SetSelec|
0004f210  74 00 00 00 b0 28 05 00  46 ff ff ff f3 ab 2c 25  |t....(..F.....,%|
0004f220  dd 00 00 00 13 00 00 00  00 00 00 00 53 65 74 53  |............SetS|
0004f230  68 61 64 65 00 00 00 00  90 29 05 00 46 ff ff ff  |hade.....)..F...|
0004f240  f9 bd 2e 25 fa 00 00 00  13 00 00 00 00 00 00 00  |...%............|
0004f250  53 65 74 53 6c 69 64 65  72 00 00 00 8c 2a 05 00  |SetSlider....*..|
0004f260  46 ff ff ff fc 46 2d 25  4b 01 00 00 13 00 00 00  |F....F-%K.......|
0004f270  00 00 00 00 53 65 74 54  65 78 74 00 d8 2b 05 00  |....SetText..+..|
0004f280  46 ff ff ff 20 55 2d 25  b0 01 00 00 13 00 00 00  |F... U-%........|
0004f290  00 00 00 00 53 65 74 54  65 78 74 52 4a 00 00 00  |....SetTextRJ...|
0004f2a0  88 2d 05 00 46 ff ff ff  4e b0 2c 25 d7 00 00 00  |.-..F...N.,%....|
0004f2b0  13 00 00 00 00 00 00 00  53 68 61 64 65 00 00 00  |........Shade...|
0004f2c0  60 2e 05 00 46 ff ff ff  3b cf 2d 25 30 01 00 00  |`...F...;.-%0...|
0004f2d0  13 00 00 00 00 00 00 00  53 68 61 64 65 47 72 6f  |........ShadeGro|
0004f2e0  75 70 00 00 90 2f 05 00  46 fd ff ff f3 b7 2e 25  |up.../..F......%|
0004f2f0  82 00 00 00 13 00 00 00  00 00 00 00 73 6c 69 64  |............slid|
0004f300  65 5f 00 00 14 30 05 00  46 ff ff ff ad 69 2e 25  |e_...0..F....i.%|
0004f310  4c 01 00 00 13 00 00 00  00 00 00 00 53 74 61 72  |L...........Star|
0004f320  74 44 72 61 67 00 00 00  60 31 05 00 46 ff ff ff  |tDrag...`1..F...|
0004f330  5b 78 2e 25 08 01 00 00  13 00 00 00 00 00 00 00  |[x.%............|
0004f340  53 74 61 72 74 53 6f 6c  69 64 44 72 61 67 00 00  |StartSolidDrag..|
0004f350  68 32 05 00 46 fd ff ff  57 14 2e 25 b7 01 00 00  |h2..F...W..%....|
0004f360  13 00 00 00 00 00 00 00  73 74 61 74 65 5f 00 00  |........state_..|
0004f370  20 34 05 00 46 fd ff ff  63 84 55 26 81 01 00 00  | 4..F...c.U&....|
0004f380  13 00 00 00 00 00 00 00  54 4c 00 00 a4 35 05 00  |........TL...5..|
0004f390  46 ff ff ff 13 ab 55 26  2e 01 00 00 13 00 00 00  |F.....U&........|
0004f3a0  00 00 00 00 54 59 50 45  00 00 00 00 d4 36 05 00  |....TYPE.....6..|
0004f3b0  46 ff ff ff 13 b5 2c 25  b4 00 00 00 13 00 00 00  |F.....,%........|
0004f3c0  00 00 00 00 55 6e 73 68  61 64 65 00 88 37 05 00  |....Unshade..7..|
0004f3d0  46 ff ff ff 62 ce 2e 25  92 01 00 00 13 00 00 00  |F...b..%........|
0004f3e0  00 00 00 00 55 70 64 61  74 65 53 6c 69 64 65 72  |....UpdateSlider|
0004f3f0  00 00 00 00 1c 39 05 00  46 ff ff ff 9b 06 2e 25  |.....9..F......%|
0004f400  db 01 00 00 13 00 00 00  00 00 00 00 57 68 69 63  |............Whic|
0004f410  68 52 61 64 69 6f 00 00  f8 3a 05 00 46 ff ff ff  |hRadio...:..F...|
0004f420  29 44 2e 25 39 01 00 00  13 00 00 00 00 00 00 00  |)D.%9...........|
0004f430  57 68 69 63 68 52 61 64  69 6f 49 6e 45 73 67 00  |WhichRadioInEsg.|
0004f440  34 3c 05 00 46 ff ff ff  36 54 2f 25 2a 02 00 00  |4<..F...6T/%*...|
0004f450  13 00 00 00 00 00 00 00  69 6e 63 64 65 63 62 6c  |........incdecbl|
0004f460  6f 63 6b 00 60 3e 05 00  46 ff ff ff df cc 2f 25  |ock.`>..F...../%|
0004f470  82 02 00 00 13 00 00 00  00 00 00 00 49 6e 69 74  |............Init|
0004f480  49 6e 63 44 65 63 48 61  6e 64 6c 65 72 00 00 00  |IncDecHandler...|
0004f490  e4 40 05 00 46 ff ff ff  cb 04 30 25 4b 01 00 00  |.@..F.....0%K...|
0004f4a0  13 00 00 00 00 00 00 00  52 65 6c 65 61 73 65 49  |........ReleaseI|
0004f4b0  6e 63 44 65 63 48 61 6e  64 6c 65 72 00 00 00 00  |ncDecHandler....|
0004f4c0  30 42 05 00 46 ff ff ff  a8 43 30 25 89 01 00 00  |0B..F....C0%....|
0004f4d0  13 00 00 00 00 00 00 00  41 6c 74 65 72 56 61 6c  |........AlterVal|
0004f4e0  69 64 61 74 69 6f 6e 00  bc 43 05 00 46 ff ff ff  |idation..C..F...|
0004f4f0  f4 6e 30 25 8c 00 00 00  13 00 00 00 00 00 00 00  |.n0%............|
0004f500  42 75 74 74 6f 6e 49 73  48 65 6c 64 00 00 00 00  |ButtonIsHeld....|
0004f510  44 41 54 41 57 01 00 00  49 63 6f 6e 5f 42 61 72  |DATAW...Icon_Bar|
0004f520  49 63 6f 6e 0a 53 79 6e  74 61 78 3a 09 3c 69 63  |Icon.Syntax:.<ic|
0004f530  6f 6e 5f 68 61 6e 64 6c  65 3e 20 49 63 6f 6e 5f  |on_handle> Icon_|
0004f540  42 61 72 49 63 6f 6e 20  28 63 68 61 72 20 2a 73  |BarIcon (char *s|
0004f550  70 72 2c 20 3c 77 69 6e  64 6f 77 5f 68 61 6e 64  |pr, <window_hand|
0004f560  6c 65 3e 20 70 6f 73 29  3b 0a 48 65 61 64 65 72  |le> pos);.Header|
0004f570  3a 09 3c 44 65 73 6b 4c  69 62 3a 49 63 6f 6e 2e  |:.<DeskLib:Icon.|
0004f580  68 3d 3e 49 63 6f 6e 3e  0a 0a 52 65 74 75 72 6e  |h=>Icon>..Return|
0004f590  73 3a 09 49 63 6f 6e 20  68 61 6e 64 6c 65 20 6f  |s:.Icon handle o|
0004f5a0  66 20 63 72 65 61 74 65  64 20 69 63 6f 6e 2e 0a  |f created icon..|
0004f5b0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 70  |.This function p|
0004f5c0  6c 61 63 65 73 20 61 20  6e 6f 72 6d 61 6c 20 73  |laces a normal s|
0004f5d0  70 72 69 74 65 2d 6f 6e  6c 79 20 69 63 6f 6e 20  |prite-only icon |
0004f5e0  6f 6e 20 74 68 65 20 69  63 6f 6e 20 62 61 72 2e  |on the icon bar.|
0004f5f0  20 2f 73 70 72 2f 20 69  73 20 61 20 70 6f 69 6e  | /spr/ is a poin|
0004f600  74 65 72 20 74 6f 20 74  68 65 20 73 70 72 69 74  |ter to the sprit|
0004f610  65 20 6e 61 6d 65 20 61  6e 64 20 2f 70 6f 73 2f  |e name and /pos/|
0004f620  20 69 73 20 74 68 65 20  73 69 64 65 20 6f 66 20  | is the side of |
0004f630  74 68 65 20 69 63 6f 6e  20 62 61 72 2c 20 65 69  |the icon bar, ei|
0004f640  74 68 65 72 20 3c 69 63  6f 6e 62 61 72 5f 4c 45  |ther <iconbar_LE|
0004f650  46 54 3e 20 6f 72 20 3c  69 63 6f 6e 62 61 72 5f  |FT> or <iconbar_|
0004f660  52 49 47 48 54 3e 2e 00  44 41 54 41 c5 01 00 00  |RIGHT>..DATA....|
0004f670  49 63 6f 6e 5f 42 61 72  49 63 6f 6e 55 73 65 72  |Icon_BarIconUser|
0004f680  0a 53 79 6e 74 61 78 3a  09 3c 69 63 6f 6e 5f 68  |.Syntax:.<icon_h|
0004f690  61 6e 64 6c 65 3e 20 49  63 6f 6e 5f 42 61 72 49  |andle> Icon_BarI|
0004f6a0  63 6f 6e 55 73 65 72 20  28 63 68 61 72 20 2a 73  |conUser (char *s|
0004f6b0  70 72 2c 20 3c 77 69 6e  64 6f 77 5f 68 61 6e 64  |pr, <window_hand|
0004f6c0  6c 65 3e 20 70 6f 73 2c  20 75 6e 73 69 67 6e 65  |le> pos, unsigne|
0004f6d0  64 20 69 6e 74 20 2a 73  70 72 5f 61 72 65 61 29  |d int *spr_area)|
0004f6e0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
0004f6f0  69 62 3a 49 63 6f 6e 2e  68 3d 3e 49 63 6f 6e 5f  |ib:Icon.h=>Icon_|
0004f700  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 49 63 6f  |h>..Returns:.Ico|
0004f710  6e 20 68 61 6e 64 6c 65  20 6f 66 20 63 72 65 61  |n handle of crea|
0004f720  74 65 64 20 69 63 6f 6e  2e 0a 0a 54 68 69 73 20  |ted icon...This |
0004f730  66 75 6e 63 74 69 6f 6e  20 70 6c 61 63 65 73 20  |function places |
0004f740  61 20 6e 6f 72 6d 61 6c  20 73 70 72 69 74 65 2d  |a normal sprite-|
0004f750  6f 6e 6c 79 20 69 63 6f  6e 20 6f 6e 20 74 68 65  |only icon on the|
0004f760  20 69 63 6f 6e 20 62 61  72 2e 20 2f 73 70 72 2f  | icon bar. /spr/|
0004f770  20 69 73 20 61 20 70 6f  69 6e 74 65 72 20 74 6f  | is a pointer to|
0004f780  20 74 68 65 20 73 70 72  69 74 65 20 6e 61 6d 65  | the sprite name|
0004f790  20 61 6e 64 20 2f 70 6f  73 2f 20 69 73 20 74 68  | and /pos/ is th|
0004f7a0  65 20 73 69 64 65 20 6f  66 20 74 68 65 20 69 63  |e side of the ic|
0004f7b0  6f 6e 20 62 61 72 2c 20  65 69 74 68 65 72 20 3c  |on bar, either <|
0004f7c0  69 63 6f 6e 62 61 72 5f  4c 45 46 54 3e 20 6f 72  |iconbar_LEFT> or|
0004f7d0  20 3c 69 63 6f 6e 62 61  72 5f 52 49 47 48 54 3e  | <iconbar_RIGHT>|
0004f7e0  2e 20 54 68 65 20 73 70  72 69 74 65 20 69 73 20  |. The sprite is |
0004f7f0  74 61 6b 65 6e 20 66 72  6f 6d 20 74 68 65 20 75  |taken from the u|
0004f800  73 65 72 20 73 70 72 69  74 65 20 61 72 65 61 20  |ser sprite area |
0004f810  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 7b 2f  |pointed to by {/|
0004f820  7d 73 70 72 5f 61 72 65  61 7b 2f 7d 2e 00 00 00  |}spr_area{/}....|
0004f830  44 41 54 41 c9 00 00 00  69 63 6f 6e 5f 62 6c 6f  |DATA....icon_blo|
0004f840  63 6b 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |ck.This type is |
0004f850  64 65 66 69 6e 65 64 20  69 6e 20 3c 44 65 73 6b  |defined in <Desk|
0004f860  4c 69 62 3a 57 69 6d 70  2e 68 3d 3e 57 69 6d 70  |Lib:Wimp.h=>Wimp|
0004f870  3e 20 61 73 20 61 20 73  74 72 75 63 74 75 72 65  |> as a structure|
0004f880  20 68 6f 6c 64 69 6e 67  20 61 20 63 6f 6d 70 6c  | holding a compl|
0004f890  65 74 65 20 69 63 6f 6e  20 64 65 66 69 6e 69 74  |ete icon definit|
0004f8a0  69 6f 6e 3a 0a 0a 20 20  5c 7b 0a 20 20 20 20 3c  |ion:..  \{.    <|
0004f8b0  77 69 6d 70 5f 62 6f 78  3e 09 77 6f 72 6b 61 72  |wimp_box>.workar|
0004f8c0  65 61 72 65 63 74 3b 0a  20 20 20 20 3c 69 63 6f  |earect;.    <ico|
0004f8d0  6e 5f 66 6c 61 67 73 3e  09 66 6c 61 67 73 3b 0a  |n_flags>.flags;.|
0004f8e0  20 20 20 20 3c 69 63 6f  6e 5f 64 61 74 61 3e 09  |    <icon_data>.|
0004f8f0  64 61 74 61 3b 0a 20 20  7d 00 00 00 44 41 54 41  |data;.  }...DATA|
0004f900  0b 01 00 00 49 63 6f 6e  5f 43 6c 69 63 6b 57 61  |....Icon_ClickWa|
0004f910  69 74 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |it.Syntax:.void |
0004f920  49 63 6f 6e 5f 43 6c 69  63 6b 57 61 69 74 20 28  |Icon_ClickWait (|
0004f930  69 6e 74 20 74 29 3b 0a  48 65 61 64 65 72 3a 09  |int t);.Header:.|
0004f940  3c 44 65 73 6b 4c 69 62  3a 49 63 6f 6e 2e 68 3d  |<DeskLib:Icon.h=|
0004f950  3e 49 63 6f 6e 3e 0a 0a  54 68 69 73 20 66 75 6e  |>Icon>..This fun|
0004f960  63 74 69 6f 6e 20 77 61  69 74 73 20 66 6f 72 20  |ction waits for |
0004f970  2f 74 2f 20 63 65 6e 74  69 73 65 63 6f 6e 64 73  |/t/ centiseconds|
0004f980  2e 20 49 74 20 69 73 20  61 20 6d 75 6c 74 69 74  |. It is a multit|
0004f990  61 73 6b 69 6e 67 20 77  61 69 74 20 2d 20 61 6c  |asking wait - al|
0004f9a0  74 68 6f 75 67 68 20 79  6f 75 72 20 74 61 73 6b  |though your task|
0004f9b0  20 69 73 20 68 61 6c 74  65 64 2c 20 74 68 65 20  | is halted, the |
0004f9c0  72 65 73 74 20 6f 66 20  74 68 65 20 64 65 73 6b  |rest of the desk|
0004f9d0  74 6f 70 20 63 6f 6e 74  69 6e 75 65 73 2e 20 49  |top continues. I|
0004f9e0  66 20 61 6e 20 65 76 65  6e 74 20 6f 63 63 75 72  |f an event occur|
0004f9f0  73 2c 20 74 68 65 20 77  61 69 74 20 69 73 20 61  |s, the wait is a|
0004fa00  62 6f 72 74 65 64 2e 00  44 41 54 41 1c 01 00 00  |borted..DATA....|
0004fa10  49 63 6f 6e 20 43 6f 6e  74 72 6f 6c 6c 69 6e 67  |Icon Controlling|
0004fa20  20 46 75 6e 63 74 69 6f  6e 73 0a 23 54 61 62 6c  | Functions.#Tabl|
0004fa30  65 20 63 6f 6c 75 6d 6e  73 20 32 0a 3c 49 63 6f  |e columns 2.<Ico|
0004fa40  6e 5f 42 61 72 49 63 6f  6e 3e 0a 3c 49 63 6f 6e  |n_BarIcon>.<Icon|
0004fa50  5f 42 61 72 49 63 6f 6e  55 73 65 72 3e 0a 3c 49  |_BarIconUser>.<I|
0004fa60  63 6f 6e 5f 43 6c 69 63  6b 57 61 69 74 3e 0a 3c  |con_ClickWait>.<|
0004fa70  49 63 6f 6e 5f 44 69 73  70 6f 73 65 49 6e 64 44  |Icon_DisposeIndD|
0004fa80  61 74 61 3e 0a 3c 49 63  6f 6e 5f 46 6f 72 63 65  |ata>.<Icon_Force|
0004fa90  52 65 64 72 61 77 3e 0a  3c 49 63 6f 6e 5f 46 6f  |Redraw>.<Icon_Fo|
0004faa0  72 63 65 57 69 6e 64 6f  77 52 65 64 72 61 77 3e  |rceWindowRedraw>|
0004fab0  0a 3c 49 63 6f 6e 5f 4c  6f 73 65 43 61 72 65 74  |.<Icon_LoseCaret|
0004fac0  3e 0a 3c 49 63 6f 6e 5f  53 65 74 43 61 72 65 74  |>.<Icon_SetCaret|
0004fad0  3e 0a 3c 49 63 6f 6e 5f  49 6e 69 74 49 6e 63 44  |>.<Icon_InitIncD|
0004fae0  65 63 48 61 6e 64 6c 65  72 3e 0a 3c 49 63 6f 6e  |ecHandler>.<Icon|
0004faf0  5f 52 65 6c 65 61 73 65  49 6e 63 44 65 63 48 61  |_ReleaseIncDecHa|
0004fb00  6e 64 6c 65 72 3e 0a 3c  49 63 6f 6e 5f 42 75 74  |ndler>.<Icon_But|
0004fb10  74 6f 6e 49 73 48 65 6c  64 3e 0a 23 45 6e 64 54  |tonIsHeld>.#EndT|
0004fb20  61 62 6c 65 44 41 54 41  10 01 00 00 52 65 61 64  |ableDATA....Read|
0004fb30  69 6e 67 2f 57 72 69 74  69 6e 67 20 49 63 6f 6e  |ing/Writing Icon|
0004fb40  20 43 6f 6e 74 65 6e 74  73 20 46 75 6e 63 74 69  | Contents Functi|
0004fb50  6f 6e 73 0a 23 49 6e 64  65 6e 74 20 34 0a 23 54  |ons.#Indent 4.#T|
0004fb60  61 62 6c 65 20 63 6f 6c  75 6d 6e 73 20 32 0a 3c  |able columns 2.<|
0004fb70  49 63 6f 6e 5f 47 65 74  44 6f 75 62 6c 65 3e 0a  |Icon_GetDouble>.|
0004fb80  3c 49 63 6f 6e 5f 47 65  74 49 6e 74 65 67 65 72  |<Icon_GetInteger|
0004fb90  3e 0a 3c 49 63 6f 6e 5f  47 65 74 54 65 78 74 3e  |>.<Icon_GetText>|
0004fba0  0a 3c 49 63 6f 6e 5f 47  65 74 54 65 78 74 50 74  |.<Icon_GetTextPt|
0004fbb0  72 3e 0a 3c 49 63 6f 6e  5f 70 72 69 6e 74 66 3e  |r>.<Icon_printf>|
0004fbc0  0a 3c 49 63 6f 6e 5f 53  65 74 44 6f 75 62 6c 65  |.<Icon_SetDouble|
0004fbd0  3e 0a 3c 49 63 6f 6e 5f  53 65 74 49 6e 74 65 67  |>.<Icon_SetInteg|
0004fbe0  65 72 3e 0a 3c 49 63 6f  6e 5f 53 65 74 54 65 78  |er>.<Icon_SetTex|
0004fbf0  74 3e 0a 3c 49 63 6f 6e  5f 53 65 74 54 65 78 74  |t>.<Icon_SetText|
0004fc00  52 4a 3e 0a 3c 49 63 6f  6e 5f 46 69 6c 65 49 63  |RJ>.<Icon_FileIc|
0004fc10  6f 6e 3e 0a 3c 49 63 6f  6e 5f 41 6c 74 65 72 56  |on>.<Icon_AlterV|
0004fc20  61 6c 69 64 61 74 69 6f  6e 3e 0a 23 45 6e 64 54  |alidation>.#EndT|
0004fc30  61 62 6c 65 44 41 54 41  bd 00 00 00 69 63 6f 6e  |ableDATA....icon|
0004fc40  5f 63 72 65 61 74 65 62  6c 6f 63 6b 0a 54 68 69  |_createblock.Thi|
0004fc50  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
0004fc60  64 20 69 6e 20 3c 44 65  73 6b 4c 69 62 3a 57 69  |d in <DeskLib:Wi|
0004fc70  6d 70 2e 68 3d 3e 57 69  6d 70 3e 20 61 73 20 61  |mp.h=>Wimp> as a|
0004fc80  20 73 74 72 75 63 74 75  72 65 20 68 6f 6c 64 69  | structure holdi|
0004fc90  6e 67 20 61 20 62 6c 6f  63 6b 20 66 6f 72 20 63  |ng a block for c|
0004fca0  72 65 61 74 69 6e 67 20  61 6e 20 69 63 6f 6e 2e  |reating an icon.|
0004fcb0  0a 0a 20 20 5c 7b 0a 20  20 20 20 3c 77 69 6e 64  |..  \{.    <wind|
0004fcc0  6f 77 5f 68 61 6e 64 6c  65 3e 09 77 69 6e 64 6f  |ow_handle>.windo|
0004fcd0  77 3b 0a 20 20 20 20 3c  69 63 6f 6e 5f 62 6c 6f  |w;.    <icon_blo|
0004fce0  63 6b 3e 09 69 63 6f 6e  64 61 74 61 3b 0a 20 20  |ck>.icondata;.  |
0004fcf0  7d 00 00 00 44 41 54 41  f6 00 00 00 69 63 6f 6e  |}...DATA....icon|
0004fd00  5f 64 61 74 61 0a 54 68  69 73 20 74 79 70 65 20  |_data.This type |
0004fd10  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 44  |is defined in <D|
0004fd20  65 73 6b 4c 69 62 3a 57  69 6d 70 2e 68 3d 3e 57  |eskLib:Wimp.h=>W|
0004fd30  69 6d 70 3e 20 61 73 20  61 20 75 6e 69 6f 6e 20  |imp> as a union |
0004fd40  66 6f 72 20 61 63 63 65  73 73 69 6e 67 20 69 63  |for accessing ic|
0004fd50  6f 6e 20 64 61 74 61 3a  0a 0a 20 20 5c 7b 0a 20  |on data:..  \{. |
0004fd60  20 20 20 63 68 61 72 09  74 65 78 74 5b 3c 77 69  |   char.text[<wi|
0004fd70  6d 70 5f 4d 41 58 4e 41  4d 45 3e 5d 3b 0a 20 20  |mp_MAXNAME>];.  |
0004fd80  20 20 3c 69 63 6f 6e 5f  69 6e 64 74 65 78 74 3e  |  <icon_indtext>|
0004fd90  09 69 6e 64 69 72 65 63  74 74 65 78 74 3b 0a 20  |.indirecttext;. |
0004fda0  20 20 20 63 68 61 72 09  73 70 72 69 74 65 6e 61  |   char.spritena|
0004fdb0  6d 65 5b 77 69 6d 70 5f  4d 41 58 4e 41 4d 45 5d  |me[wimp_MAXNAME]|
0004fdc0  3b 0a 20 20 20 20 3c 69  63 6f 6e 5f 69 6e 64 73  |;.    <icon_inds|
0004fdd0  70 72 69 74 65 3e 09 69  6e 64 69 72 65 63 74 73  |prite>.indirects|
0004fde0  70 72 69 74 65 3b 0a 20  20 7d 00 00 44 41 54 41  |prite;.  }..DATA|
0004fdf0  b6 00 00 00 49 63 6f 6e  5f 44 65 73 65 6c 65 63  |....Icon_Deselec|
0004fe00  74 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 49  |t.Syntax:.void I|
0004fe10  63 6f 6e 5f 44 65 73 65  6c 65 63 74 20 28 3c 77  |con_Deselect (<w|
0004fe20  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 3e 20 68 6e  |indow_handle> hn|
0004fe30  64 2c 20 3c 69 63 6f 6e  5f 68 61 6e 64 6c 65 3e  |d, <icon_handle>|
0004fe40  20 69 63 6f 6e 29 3b 0a  48 65 61 64 65 72 3a 09  | icon);.Header:.|
0004fe50  3c 44 65 73 6b 4c 69 62  3a 49 63 6f 6e 2e 68 3d  |<DeskLib:Icon.h=|
0004fe60  3e 49 63 6f 6e 3e 0a 0a  54 68 69 73 20 66 75 6e  |>Icon>..This fun|
0004fe70  63 74 69 6f 6e 20 64 65  73 65 6c 65 63 74 73 20  |ction deselects |
0004fe80  74 68 65 20 69 63 6f 6e  20 67 69 76 65 6e 2c 20  |the icon given, |
0004fe90  69 66 20 69 74 20 69 73  20 73 65 6c 65 63 74 65  |if it is selecte|
0004fea0  64 2e 00 00 44 41 54 41  37 01 00 00 49 63 6f 6e  |d...DATA7...Icon|
0004feb0  5f 44 69 73 70 6f 73 65  44 61 74 61 0a 53 79 6e  |_DisposeData.Syn|
0004fec0  74 61 78 3a 09 76 6f 69  64 20 49 63 6f 6e 5f 44  |tax:.void Icon_D|
0004fed0  69 73 70 6f 73 65 44 61  74 61 20 28 3c 69 63 6f  |isposeData (<ico|
0004fee0  6e 5f 64 61 74 61 3e 20  2a 64 61 74 61 2c 20 3c  |n_data> *data, <|
0004fef0  69 63 6f 6e 5f 66 6c 61  67 73 3e 20 66 6c 61 67  |icon_flags> flag|
0004ff00  73 29 3b 0a 48 65 61 64  65 72 3a 09 3c 54 69 6d  |s);.Header:.<Tim|
0004ff10  73 4c 69 62 3a 49 63 6f  6e 2e 68 3d 3e 49 63 6f  |sLib:Icon.h=>Ico|
0004ff20  6e 5f 54 4c 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |n_TL>..This func|
0004ff30  74 69 6f 6e 20 63 61 6c  6c 73 20 3c 66 72 65 65  |tion calls <free|
0004ff40  3e 28 29 20 6f 6e 20 74  68 65 20 69 6e 64 69 72  |>() on the indir|
0004ff50  65 63 74 65 64 20 64 61  74 61 20 66 6f 72 20 74  |ected data for t|
0004ff60  68 65 20 69 63 6f 6e 20  77 68 6f 73 65 20 64 61  |he icon whose da|
0004ff70  74 61 20 62 6c 6f 63 6b  20 61 6e 64 20 66 6c 61  |ta block and fla|
0004ff80  67 73 20 77 6f 72 64 20  61 72 65 20 67 69 76 65  |gs word are give|
0004ff90  6e 2e 20 4f 62 76 69 6f  75 73 6c 79 20 74 68 65  |n. Obviously the|
0004ffa0  20 64 61 74 61 20 6d 75  73 74 20 68 61 76 65 20  | data must have |
0004ffb0  62 65 65 6e 20 6f 72 69  67 69 6e 61 6c 6c 79 20  |been originally |
0004ffc0  61 6c 6c 6f 63 61 74 65  64 20 75 73 69 6e 67 20  |allocated using |
0004ffd0  3c 6d 61 6c 6c 6f 63 3e  2e 2e 2e 00 44 41 54 41  |<malloc>....DATA|
0004ffe0  47 01 00 00 49 63 6f 6e  5f 44 69 73 70 6f 73 65  |G...Icon_Dispose|
0004fff0  49 6e 64 44 61 74 61 0a  53 79 6e 74 61 78 3a 09  |IndData.Syntax:.|
00050000  76 6f 69 64 20 49 63 6f  6e 5f 44 69 73 70 6f 73  |void Icon_Dispos|
00050010  65 49 6e 64 44 61 74 61  20 28 3c 69 63 6f 6e 5f  |eIndData (<icon_|
00050020  64 61 74 61 3e 20 2a 64  61 74 61 2c 20 3c 69 63  |data> *data, <ic|
00050030  6f 6e 5f 66 6c 61 67 73  3e 20 66 6c 61 67 73 29  |on_flags> flags)|
00050040  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
00050050  69 62 3a 49 63 6f 6e 2e  68 3d 3e 49 63 6f 6e 3e  |ib:Icon.h=>Icon>|
00050060  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00050070  66 69 6e 64 73 20 74 68  65 20 69 6e 64 69 72 65  |finds the indire|
00050080  63 74 65 64 20 64 61 74  61 20 70 6f 69 6e 74 65  |cted data pointe|
00050090  72 28 73 29 20 66 6f 72  20 74 68 65 20 69 63 6f  |r(s) for the ico|
000500a0  6e 20 77 68 6f 73 65 20  64 65 66 69 6e 69 74 69  |n whose definiti|
000500b0  6f 6e 20 69 73 20 67 69  76 65 6e 2c 20 61 6e 64  |on is given, and|
000500c0  20 63 61 6c 6c 73 20 3c  66 72 65 65 3e 28 29 20  | calls <free>() |
000500d0  6f 6e 20 74 68 65 6d 2e  20 4f 62 76 69 6f 75 73  |on them. Obvious|
000500e0  6c 79 2c 20 74 68 69 73  20 6d 65 61 6e 73 20 74  |ly, this means t|
000500f0  68 65 79 20 73 68 6f 75  6c 64 20 68 61 76 65 20  |hey should have |
00050100  62 65 65 6e 20 3c 6d 61  6c 6c 6f 63 3e 65 64 20  |been <malloc>ed |
00050110  69 6e 20 74 68 65 20 66  69 72 73 74 20 70 6c 61  |in the first pla|
00050120  63 65 21 00 44 41 54 41  62 00 00 00 49 63 6f 6e  |ce!.DATAb...Icon|
00050130  20 44 72 61 67 67 69 6e  67 20 46 75 6e 63 74 69  | Dragging Functi|
00050140  6f 6e 73 0a 23 49 6e 64  65 6e 74 20 34 0a 3c 49  |ons.#Indent 4.<I|
00050150  63 6f 6e 5f 53 74 61 72  74 44 72 61 67 3e 0a 3c  |con_StartDrag>.<|
00050160  49 63 6f 6e 5f 53 74 61  72 74 53 6f 6c 69 64 44  |Icon_StartSolidD|
00050170  72 61 67 3e 0a 3c 49 63  6f 6e 5f 44 72 61 67 53  |rag>.<Icon_DragS|
00050180  6c 69 64 65 72 3e 00 00  44 41 54 41 8b 01 00 00  |lider>..DATA....|
00050190  49 63 6f 6e 5f 44 72 61  67 53 6c 69 64 65 72 0a  |Icon_DragSlider.|
000501a0  53 79 6e 74 61 78 3a 09  69 6e 74 20 49 63 6f 6e  |Syntax:.int Icon|
000501b0  5f 44 72 61 67 53 6c 69  64 65 72 20 28 3c 77 69  |_DragSlider (<wi|
000501c0  6e 64 6f 77 5f 68 61 6e  64 6c 65 3e 20 68 6e 64  |ndow_handle> hnd|
000501d0  2c 20 3c 69 63 6f 6e 5f  68 61 6e 64 6c 65 3e 20  |, <icon_handle> |
000501e0  62 61 73 65 2c 20 69 63  6f 6e 5f 68 61 6e 64 6c  |base, icon_handl|
000501f0  65 20 73 6c 69 64 65 72  29 3b 0a 48 65 61 64 65  |e slider);.Heade|
00050200  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 49 63 6f 6e  |r:.<DeskLib:Icon|
00050210  2e 68 3d 3e 49 63 6f 6e  3e 0a 0a 52 65 74 75 72  |.h=>Icon>..Retur|
00050220  6e 73 3a 09 4e 65 77 20  70 65 72 63 65 6e 74 61  |ns:.New percenta|
00050230  67 65 20 72 65 70 72 65  73 65 6e 74 65 64 2e 0a  |ge represented..|
00050240  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 73  |.This function s|
00050250  68 6f 75 6c 64 20 62 65  20 63 61 6c 6c 65 64 20  |hould be called |
00050260  77 68 65 6e 20 79 6f 75  20 67 65 74 20 61 20 63  |when you get a c|
00050270  6c 69 63 6b 20 69 6e 20  65 69 74 68 65 72 20 74  |lick in either t|
00050280  68 65 20 69 63 6f 6e 20  2f 62 61 73 65 2f 20 6f  |he icon /base/ o|
00050290  72 20 2f 73 6c 69 64 65  72 2f 2c 20 77 68 69 63  |r /slider/, whic|
000502a0  68 20 74 6f 67 65 74 68  65 72 20 6d 61 6b 65 20  |h together make |
000502b0  75 70 20 61 20 73 6c 69  64 65 72 2e 20 46 72 6f  |up a slider. Fro|
000502c0  6d 20 6e 6f 77 20 6f 6e  2c 20 65 76 65 72 79 20  |m now on, every |
000502d0  74 69 6d 65 20 61 20 4e  55 4c 4c 20 65 76 65 6e  |time a NULL even|
000502e0  74 20 69 73 20 72 65 63  65 69 76 65 64 2c 20 79  |t is received, y|
000502f0  6f 75 20 73 68 6f 75 6c  64 20 63 61 6c 6c 20 3c  |ou should call <|
00050300  49 63 6f 6e 5f 55 70 64  61 74 65 53 6c 69 64 65  |Icon_UpdateSlide|
00050310  72 3e 2e 00 44 41 54 41  4f 01 00 00 49 63 6f 6e  |r>..DATAO...Icon|
00050320  5f 46 69 6c 65 49 63 6f  6e 0a 53 79 6e 74 61 78  |_FileIcon.Syntax|
00050330  3a 09 76 6f 69 64 20 49  63 6f 6e 5f 46 69 6c 65  |:.void Icon_File|
00050340  49 63 6f 6e 20 28 3c 77  69 6e 64 6f 77 5f 68 61  |Icon (<window_ha|
00050350  6e 64 6c 65 3e 20 77 69  6e 2c 20 3c 69 63 6f 6e  |ndle> win, <icon|
00050360  5f 68 61 6e 64 6c 65 3e  20 69 63 6f 6e 2c 20 69  |_handle> icon, i|
00050370  6e 74 20 66 69 6c 65 74  79 70 65 29 3b 0a 48 65  |nt filetype);.He|
00050380  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 49  |ader:.<DeskLib:I|
00050390  63 6f 6e 2e 68 3d 3e 49  63 6f 6e 3e 0a 0a 54 68  |con.h=>Icon>..Th|
000503a0  69 73 20 66 75 6e 63 74  69 6f 6e 20 74 61 6b 65  |is function take|
000503b0  73 20 61 6e 20 69 6e 64  69 72 65 63 74 65 64 20  |s an indirected |
000503c0  74 65 78 74 2d 6f 6e 6c  79 20 69 63 6f 6e 20 61  |text-only icon a|
000503d0  6e 64 20 63 6f 6e 76 65  72 74 73 20 69 74 20 74  |nd converts it t|
000503e0  6f 20 61 6e 20 69 6e 64  69 72 65 63 74 65 64 20  |o an indirected |
000503f0  73 70 72 69 74 65 2d 6f  6e 6c 79 20 69 63 6f 6e  |sprite-only icon|
00050400  20 63 6f 6e 74 61 69 6e  69 6e 67 20 74 68 65 20  | containing the |
00050410  73 70 72 69 74 65 20 66  6f 72 20 74 68 65 20 67  |sprite for the g|
00050420  69 76 65 6e 20 66 69 6c  65 74 79 70 65 2e 20 49  |iven filetype. I|
00050430  66 20 74 68 65 20 73 70  72 69 74 65 20 69 73 20  |f the sprite is |
00050440  6e 6f 74 20 69 6e 20 74  68 65 20 57 69 6d 70 20  |not in the Wimp |
00050450  73 70 72 69 74 65 20 70  6f 6f 6c 20 74 68 65 6e  |sprite pool then|
00050460  2e 2e 2e 00 44 41 54 41  d6 03 00 00 69 63 6f 6e  |....DATA....icon|
00050470  5f 66 6c 61 67 73 0a 54  68 69 73 20 74 79 70 65  |_flags.This type|
00050480  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
00050490  44 65 73 6b 4c 69 62 3a  57 69 6d 70 2e 68 3d 3e  |DeskLib:Wimp.h=>|
000504a0  57 69 6d 70 3e 20 61 73  20 74 68 65 20 66 6f 6c  |Wimp> as the fol|
000504b0  6c 6f 77 69 6e 67 20 75  6e 69 6f 6e 2c 20 77 68  |lowing union, wh|
000504c0  69 63 68 20 63 61 6e 20  62 65 20 75 73 65 64 20  |ich can be used |
000504d0  66 6f 72 20 65 61 73 79  20 61 63 63 65 73 73 20  |for easy access |
000504e0  74 6f 20 69 63 6f 6e 20  66 6c 61 67 73 3a 0a 0a  |to icon flags:..|
000504f0  20 5c 7b 0a 20 20 20 75  6e 73 69 67 6e 65 64 20  | \{.   unsigned |
00050500  69 6e 74 20 76 61 6c 75  65 3b 0a 0a 20 20 20 73  |int value;..   s|
00050510  74 72 75 63 74 0a 20 20  20 5c 7b 0a 20 20 20 20  |truct.   \{.    |
00050520  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 67 61  | unsigned int ga|
00050530  72 62 61 67 65 31 09 3a  20 36 3b 0a 20 20 20 20  |rbage1.: 6;.    |
00050540  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 66 6f  | unsigned int fo|
00050550  6e 74 09 09 3a 20 31 3b  20 2f 2a 20 46 6f 6e 74  |nt..: 1; /* Font|
00050560  20 66 6c 61 67 20 2a 2f  0a 20 20 20 20 20 75 6e  | flag */.     un|
00050570  73 69 67 6e 65 64 20 69  6e 74 20 67 61 72 62 61  |signed int garba|
00050580  67 65 32 09 3a 20 38 3b  0a 20 20 20 20 20 75 6e  |ge2.: 8;.     un|
00050590  73 69 67 6e 65 64 20 69  6e 74 20 68 61 6e 64 6c  |signed int handl|
000505a0  65 09 3a 20 38 3b 20 2f  2a 20 46 6f 6e 74 20 68  |e.: 8; /* Font h|
000505b0  61 6e 64 6c 65 20 2a 2f  0a 20 20 20 7d 20 66 6f  |andle */.   } fo|
000505c0  6e 74 3b 0a 0a 20 20 20  73 74 72 75 63 74 0a 20  |nt;..   struct. |
000505d0  20 20 5c 7b 0a 20 20 20  20 20 75 6e 73 69 67 6e  |  \{.     unsign|
000505e0  65 64 20 69 6e 74 20 74  65 78 74 09 3a 20 31 3b  |ed int text.: 1;|
000505f0  0a 20 20 20 20 20 75 6e  73 69 67 6e 65 64 20 69  |.     unsigned i|
00050600  6e 74 20 73 70 72 69 74  65 09 3a 20 31 3b 0a 20  |nt sprite.: 1;. |
00050610  20 20 20 20 75 6e 73 69  67 6e 65 64 20 69 6e 74  |    unsigned int|
00050620  20 62 6f 72 64 65 72 09  3a 20 31 3b 0a 20 20 20  | border.: 1;.   |
00050630  20 20 75 6e 73 69 67 6e  65 64 20 69 6e 74 20 68  |  unsigned int h|
00050640  63 65 6e 74 72 65 09 3a  20 31 3b 0a 20 20 20 20  |centre.: 1;.    |
00050650  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 76 63  | unsigned int vc|
00050660  65 6e 74 72 65 09 3a 20  31 3b 0a 20 20 20 20 20  |entre.: 1;.     |
00050670  75 6e 73 69 67 6e 65 64  20 69 6e 74 20 66 69 6c  |unsigned int fil|
00050680  6c 65 64 09 3a 20 31 3b  0a 20 20 20 20 20 75 6e  |led.: 1;.     un|
00050690  73 69 67 6e 65 64 20 69  6e 74 20 66 6f 6e 74 09  |signed int font.|
000506a0  3a 20 31 3b 0a 20 20 20  20 20 75 6e 73 69 67 6e  |: 1;.     unsign|
000506b0  65 64 20 69 6e 74 20 6e  65 65 64 73 68 65 6c 70  |ed int needshelp|
000506c0  09 3a 20 31 3b 0a 20 20  20 20 20 75 6e 73 69 67  |.: 1;.     unsig|
000506d0  6e 65 64 20 69 6e 74 20  69 6e 64 69 72 65 63 74  |ned int indirect|
000506e0  65 64 09 3a 20 31 3b 0a  20 20 20 20 20 75 6e 73  |ed.: 1;.     uns|
000506f0  69 67 6e 65 64 20 69 6e  74 20 72 69 67 68 74 6a  |igned int rightj|
00050700  75 73 74 69 66 79 09 3a  20 31 3b 0a 20 20 20 20  |ustify.: 1;.    |
00050710  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 61 6c  | unsigned int al|
00050720  6c 6f 77 61 64 6a 75 73  74 09 3a 20 31 3b 0a 20  |lowadjust.: 1;. |
00050730  20 20 20 20 75 6e 73 69  67 6e 65 64 20 69 6e 74  |    unsigned int|
00050740  20 68 61 6c 66 73 69 7a  65 09 3a 20 31 3b 0a 20  | halfsize.: 1;. |
00050750  20 20 20 20 75 6e 73 69  67 6e 65 64 20 69 6e 74  |    unsigned int|
00050760  20 62 75 74 74 6f 6e 74  79 70 65 09 3a 20 34 3b  | buttontype.: 4;|
00050770  0a 20 20 20 20 20 75 6e  73 69 67 6e 65 64 20 69  |.     unsigned i|
00050780  6e 74 20 65 73 67 09 3a  20 35 3b 0a 20 20 20 20  |nt esg.: 5;.    |
00050790  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 73 65  | unsigned int se|
000507a0  6c 65 63 74 65 64 09 3a  20 31 3b 0a 20 20 20 20  |lected.: 1;.    |
000507b0  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 73 68  | unsigned int sh|
000507c0  61 64 65 64 09 3a 20 31  3b 0a 20 20 20 20 20 75  |aded.: 1;.     u|
000507d0  6e 73 69 67 6e 65 64 20  69 6e 74 20 64 65 6c 65  |nsigned int dele|
000507e0  74 65 64 09 3a 20 31 3b  0a 20 20 20 20 20 75 6e  |ted.: 1;.     un|
000507f0  73 69 67 6e 65 64 20 69  6e 74 20 66 6f 72 65 67  |signed int foreg|
00050800  72 6f 75 6e 64 09 3a 20  34 3b 0a 20 20 20 20 20  |round.: 4;.     |
00050810  75 6e 73 69 67 6e 65 64  20 69 6e 74 20 62 61 63  |unsigned int bac|
00050820  6b 67 72 6f 75 6e 64 09  3a 20 34 3b 0a 20 20 20  |kground.: 4;.   |
00050830  7d 20 64 61 74 61 3b 0a  20 7d 00 00 44 41 54 41  |} data;. }..DATA|
00050840  68 01 00 00 49 63 6f 6e  5f 46 6f 72 63 65 52 65  |h...Icon_ForceRe|
00050850  64 72 61 77 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |draw.Syntax:.<os|
00050860  5f 65 72 72 6f 72 3e 20  2a 49 63 6f 6e 5f 46 6f  |_error> *Icon_Fo|
00050870  72 63 65 52 65 64 72 61  77 20 28 3c 77 69 6e 64  |rceRedraw (<wind|
00050880  6f 77 5f 68 61 6e 64 6c  65 3e 20 68 6e 64 2c 20  |ow_handle> hnd, |
00050890  3c 69 63 6f 6e 5f 68 61  6e 64 6c 65 3e 20 69 63  |<icon_handle> ic|
000508a0  6f 6e 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |on);.Header:.<De|
000508b0  73 6b 4c 69 62 3a 49 63  6f 6e 2e 68 3d 3e 49 63  |skLib:Icon.h=>Ic|
000508c0  6f 6e 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |on>..Returns:.Po|
000508d0  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
000508e0  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
000508f0  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
00050900  6e 20 66 6f 72 63 65 73  20 74 68 65 20 57 49 4d  |n forces the WIM|
00050910  50 20 74 6f 20 72 65 64  72 61 77 20 6a 75 73 74  |P to redraw just|
00050920  20 74 68 65 20 69 63 6f  6e 20 63 6f 6e 74 65 6e  | the icon conten|
00050930  74 73 2e 20 49 74 20 69  73 20 65 71 75 69 76 61  |ts. It is equiva|
00050940  6c 65 6e 74 20 74 6f 20  28 61 6e 64 20 69 6e 20  |lent to (and in |
00050950  66 61 63 74 20 3c 23 64  65 66 69 6e 65 3d 3e 64  |fact <#define=>d|
00050960  65 66 69 6e 65 3e 64 20  61 73 29 3a 0a 0a 7b 66  |efine>d as):..{f|
00050970  43 6f 64 65 3b 61 6c 69  67 6e 20 63 65 6e 74 72  |Code;align centr|
00050980  65 7d 3c 57 69 6d 70 5f  53 65 74 49 63 6f 6e 53  |e}<Wimp_SetIconS|
00050990  74 61 74 65 3e 28 68 6e  64 2c 69 63 6f 6e 2c 30  |tate>(hnd,icon,0|
000509a0  2c 30 29 3b 44 41 54 41  ea 00 00 00 49 63 6f 6e  |,0);DATA....Icon|
000509b0  5f 46 6f 72 63 65 57 69  6e 64 6f 77 52 65 64 72  |_ForceWindowRedr|
000509c0  61 77 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |aw.Syntax:.void |
000509d0  49 63 6f 6e 5f 46 6f 72  63 65 57 69 6e 64 6f 77  |Icon_ForceWindow|
000509e0  52 65 64 72 61 77 20 28  3c 77 69 6e 64 6f 77 5f  |Redraw (<window_|
000509f0  68 61 6e 64 6c 65 3e 20  68 6e 64 2c 20 3c 69 63  |handle> hnd, <ic|
00050a00  6f 6e 5f 68 61 6e 64 6c  65 3e 20 69 63 6f 6e 29  |on_handle> icon)|
00050a10  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
00050a20  69 62 3a 49 63 6f 6e 2e  68 3d 3e 49 63 6f 6e 3e  |ib:Icon.h=>Icon>|
00050a30  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00050a40  66 6f 72 63 65 73 20 74  68 65 20 57 49 4d 50 20  |forces the WIMP |
00050a50  74 6f 20 72 65 64 72 61  77 20 74 68 65 20 77 68  |to redraw the wh|
00050a60  6f 6c 65 20 6f 66 20 74  68 65 20 69 63 6f 6e 20  |ole of the icon |
00050a70  61 72 65 61 2c 20 69 6e  63 6c 75 64 69 6e 67 20  |area, including |
00050a80  74 68 65 20 33 44 20 62  6f 72 64 65 72 2e 00 00  |the 3D border...|
00050a90  44 41 54 41 07 01 00 00  49 63 6f 6e 5f 47 65 74  |DATA....Icon_Get|
00050aa0  42 67 43 6f 6c 0a 53 79  6e 74 61 78 3a 09 69 6e  |BgCol.Syntax:.in|
00050ab0  74 20 49 63 6f 6e 5f 47  65 74 42 67 43 6f 6c 20  |t Icon_GetBgCol |
00050ac0  28 3c 69 63 6f 6e 5f 62  6c 6f 63 6b 3e 20 2a 69  |(<icon_block> *i|
00050ad0  63 6f 6e 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |con);.Header:.<D|
00050ae0  65 73 6b 4c 69 62 3a 49  63 6f 6e 2e 68 3d 3e 49  |eskLib:Icon.h=>I|
00050af0  63 6f 6e 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 42  |con>..Returns:.B|
00050b00  61 63 6b 67 72 6f 75 6e  64 20 63 6f 6c 6f 75 72  |ackground colour|
00050b10  20 6f 66 20 69 63 6f 6e  2e 0a 0a 54 68 69 73 20  | of icon...This |
00050b20  66 75 6e 63 74 69 6f 6e  20 66 69 6e 64 73 20 74  |function finds t|
00050b30  68 65 20 66 6f 72 65 67  72 6f 75 6e 64 20 63 6f  |he foreground co|
00050b40  6c 6f 75 72 20 6f 66 20  61 6e 20 69 63 6f 6e 20  |lour of an icon |
00050b50  77 68 6f 73 65 20 64 65  66 69 6e 69 74 69 6f 6e  |whose definition|
00050b60  20 69 73 20 70 61 73 73  65 64 20 74 6f 20 69 74  | is passed to it|
00050b70  2e 20 49 74 20 63 6f 70  65 73 20 77 69 74 68 20  |. It copes with |
00050b80  6f 75 74 6c 69 6e 65 20  66 6f 6e 74 73 20 69 6e  |outline fonts in|
00050b90  20 69 63 6f 6e 73 2e 00  44 41 54 41 2f 01 00 00  | icons..DATA/...|
00050ba0  49 63 6f 6e 5f 47 65 74  44 6f 75 62 6c 65 0a 53  |Icon_GetDouble.S|
00050bb0  79 6e 74 61 78 3a 09 64  6f 75 62 6c 65 20 49 63  |yntax:.double Ic|
00050bc0  6f 6e 5f 47 65 74 44 6f  75 62 6c 65 20 28 3c 77  |on_GetDouble (<w|
00050bd0  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 3e 20 68 6e  |indow_handle> hn|
00050be0  64 2c 20 3c 69 63 6f 6e  5f 68 61 6e 64 6c 65 3e  |d, <icon_handle>|
00050bf0  20 69 63 6f 6e 29 3b 0a  48 65 61 64 65 72 3a 09  | icon);.Header:.|
00050c00  3c 44 65 73 6b 4c 69 62  3a 49 63 6f 6e 2e 68 3d  |<DeskLib:Icon.h=|
00050c10  3e 49 63 6f 6e 3e 0a 0a  52 65 74 75 72 6e 73 3a  |>Icon>..Returns:|
00050c20  09 56 61 6c 75 65 20 6f  66 20 69 63 6f 6e 20 63  |.Value of icon c|
00050c30  6f 6e 74 65 6e 74 73 2e  0a 0a 54 68 69 73 20 66  |ontents...This f|
00050c40  75 6e 63 74 69 6f 6e 20  72 65 61 64 73 20 74 68  |unction reads th|
00050c50  65 20 74 65 78 74 20 63  6f 6e 74 65 6e 74 73 20  |e text contents |
00050c60  6f 66 20 74 68 65 20 67  69 76 65 6e 20 69 63 6f  |of the given ico|
00050c70  6e 20 61 6e 64 20 72 65  74 75 72 6e 73 20 69 74  |n and returns it|
00050c80  20 63 6f 6e 76 65 72 74  65 64 20 74 6f 20 61 20  | converted to a |
00050c90  66 6c 6f 61 74 69 6e 67  2d 70 6f 69 6e 74 20 76  |floating-point v|
00050ca0  61 6c 75 65 2e 20 30 20  69 73 20 72 65 74 75 72  |alue. 0 is retur|
00050cb0  6e 65 64 20 69 66 20 61  6e 20 65 72 72 6f 72 20  |ned if an error |
00050cc0  6f 63 63 75 72 73 2e 00  44 41 54 41 1b 01 00 00  |occurs..DATA....|
00050cd0  49 63 6f 6e 5f 47 65 74  46 67 43 6f 6c 0a 53 79  |Icon_GetFgCol.Sy|
00050ce0  6e 74 61 78 3a 09 69 6e  74 20 49 63 6f 6e 5f 47  |ntax:.int Icon_G|
00050cf0  65 74 46 67 43 6f 6c 20  28 3c 69 63 6f 6e 5f 62  |etFgCol (<icon_b|
00050d00  6c 6f 63 6b 3e 20 2a 69  63 6f 6e 29 3b 0a 48 65  |lock> *icon);.He|
00050d10  61 64 65 72 3a 09 3c 54  69 6d 73 4c 69 62 3a 49  |ader:.<TimsLib:I|
00050d20  63 6f 6e 2e 68 3d 3e 49  63 6f 6e 5f 54 4c 3e 0a  |con.h=>Icon_TL>.|
00050d30  09 3c 44 65 73 6b 4c 69  62 3a 49 63 6f 6e 2e 68  |.<DeskLib:Icon.h|
00050d40  3d 3e 49 63 6f 6e 3e 0a  0a 52 65 74 75 72 6e 73  |=>Icon>..Returns|
00050d50  3a 09 46 6f 72 65 67 72  6f 75 6e 64 20 6f 66 20  |:.Foreground of |
00050d60  69 63 6f 6e 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |icon...This func|
00050d70  74 69 6f 6e 20 66 69 6e  64 73 20 74 68 65 20 66  |tion finds the f|
00050d80  6f 72 65 67 72 6f 75 6e  64 20 63 6f 6c 6f 75 72  |oreground colour|
00050d90  20 6f 66 20 61 6e 20 69  63 6f 6e 20 77 68 6f 73  | of an icon whos|
00050da0  65 20 64 65 66 69 6e 69  74 69 6f 6e 20 69 73 20  |e definition is |
00050db0  70 61 73 73 65 64 20 74  6f 20 69 74 2e 20 49 74  |passed to it. It|
00050dc0  20 63 6f 70 65 73 20 77  69 74 68 20 6f 75 74 6c  | copes with outl|
00050dd0  69 6e 65 20 66 6f 6e 74  73 20 69 6e 20 69 63 6f  |ine fonts in ico|
00050de0  6e 73 2e 00 44 41 54 41  28 01 00 00 49 63 6f 6e  |ns..DATA(...Icon|
00050df0  5f 47 65 74 49 6e 74 65  67 65 72 0a 53 79 6e 74  |_GetInteger.Synt|
00050e00  61 78 3a 09 69 6e 74 20  49 63 6f 6e 5f 47 65 74  |ax:.int Icon_Get|
00050e10  49 6e 74 65 67 65 72 20  28 3c 77 69 6e 64 6f 77  |Integer (<window|
00050e20  5f 68 61 6e 64 6c 65 3e  20 68 6e 64 2c 20 3c 69  |_handle> hnd, <i|
00050e30  63 6f 6e 5f 68 61 6e 64  6c 65 3e 20 69 63 6f 6e  |con_handle> icon|
00050e40  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00050e50  4c 69 62 3a 49 63 6f 6e  2e 68 3d 3e 49 63 6f 6e  |Lib:Icon.h=>Icon|
00050e60  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 56 61 6c 75  |>..Returns:.Valu|
00050e70  65 20 6f 66 20 69 63 6f  6e 20 63 6f 6e 74 65 6e  |e of icon conten|
00050e80  74 73 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ts...This functi|
00050e90  6f 6e 20 72 65 61 64 73  20 74 68 65 20 74 65 78  |on reads the tex|
00050ea0  74 20 63 6f 6e 74 65 6e  74 73 20 6f 66 20 74 68  |t contents of th|
00050eb0  65 20 67 69 76 65 6e 20  69 63 6f 6e 20 61 6e 64  |e given icon and|
00050ec0  20 72 65 74 75 72 6e 73  20 69 74 20 63 6f 6e 76  | returns it conv|
00050ed0  65 72 74 65 64 20 74 6f  20 61 6e 20 69 6e 74 65  |erted to an inte|
00050ee0  67 65 72 20 76 61 6c 75  65 2e 20 30 20 69 73 20  |ger value. 0 is |
00050ef0  72 65 74 75 72 6e 65 64  20 69 66 20 61 6e 20 65  |returned if an e|
00050f00  72 72 6f 72 20 6f 63 63  75 72 73 2e 44 41 54 41  |rror occurs.DATA|
00050f10  d9 00 00 00 49 63 6f 6e  5f 47 65 74 53 65 6c 65  |....Icon_GetSele|
00050f20  63 74 0a 53 79 6e 74 61  78 3a 09 3c 42 4f 4f 4c  |ct.Syntax:.<BOOL|
00050f30  3e 20 49 63 6f 6e 5f 47  65 74 53 65 6c 65 63 74  |> Icon_GetSelect|
00050f40  20 28 3c 77 69 6e 64 6f  77 5f 68 61 6e 64 6c 65  | (<window_handle|
00050f50  3e 20 68 6e 64 2c 20 3c  69 63 6f 6e 5f 68 61 6e  |> hnd, <icon_han|
00050f60  64 6c 65 3e 20 69 63 6f  6e 29 3b 0a 48 65 61 64  |dle> icon);.Head|
00050f70  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 49 63 6f  |er:.<DeskLib:Ico|
00050f80  6e 2e 68 3d 3e 49 63 6f  6e 3e 0a 0a 52 65 74 75  |n.h=>Icon>..Retu|
00050f90  72 6e 73 3a 09 3c 54 52  55 45 3e 20 69 66 20 73  |rns:.<TRUE> if s|
00050fa0  65 6c 65 63 74 65 64 2e  0a 0a 54 68 69 73 20 66  |elected...This f|
00050fb0  75 6e 63 74 69 6f 6e 20  72 65 61 64 73 20 77 68  |unction reads wh|
00050fc0  65 74 68 65 72 20 74 68  65 20 73 70 65 63 69 66  |ether the specif|
00050fd0  69 65 64 20 69 63 6f 6e  20 69 73 20 73 65 6c 65  |ied icon is sele|
00050fe0  63 74 65 64 2e 00 00 00  44 41 54 41 d3 00 00 00  |cted....DATA....|
00050ff0  49 63 6f 6e 5f 47 65 74  53 68 61 64 65 0a 53 79  |Icon_GetShade.Sy|
00051000  6e 74 61 78 3a 09 3c 42  4f 4f 4c 3e 20 49 63 6f  |ntax:.<BOOL> Ico|
00051010  6e 5f 47 65 74 53 68 61  64 65 20 28 3c 77 69 6e  |n_GetShade (<win|
00051020  64 6f 77 5f 68 61 6e 64  6c 65 3e 20 68 6e 64 2c  |dow_handle> hnd,|
00051030  20 3c 69 63 6f 6e 5f 68  61 6e 64 6c 65 3e 20 69  | <icon_handle> i|
00051040  63 6f 6e 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |con);.Header:.<D|
00051050  65 73 6b 4c 69 62 3a 49  63 6f 6e 2e 68 3d 3e 49  |eskLib:Icon.h=>I|
00051060  63 6f 6e 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 3c  |con>..Returns:.<|
00051070  54 52 55 45 3e 20 69 66  20 73 68 61 64 65 64 2e  |TRUE> if shaded.|
00051080  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00051090  72 65 61 64 73 20 77 68  65 74 68 65 72 20 74 68  |reads whether th|
000510a0  65 20 73 70 65 63 69 66  69 65 64 20 69 63 6f 6e  |e specified icon|
000510b0  20 69 73 20 73 68 61 64  65 64 2e 00 44 41 54 41  | is shaded..DATA|
000510c0  1b 01 00 00 49 63 6f 6e  5f 47 65 74 54 65 78 74  |....Icon_GetText|
000510d0  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 49 63  |.Syntax:.void Ic|
000510e0  6f 6e 5f 47 65 74 54 65  78 74 20 28 3c 77 69 6e  |on_GetText (<win|
000510f0  64 6f 77 5f 68 61 6e 64  6c 65 3e 20 68 6e 64 2c  |dow_handle> hnd,|
00051100  20 3c 69 63 6f 6e 5f 68  61 6e 64 6c 65 3e 20 69  | <icon_handle> i|
00051110  63 6f 6e 2c 20 63 68 61  72 20 2a 74 29 3b 0a 48  |con, char *t);.H|
00051120  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00051130  49 63 6f 6e 2e 68 3d 3e  49 63 6f 6e 3e 0a 0a 54  |Icon.h=>Icon>..T|
00051140  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 6f 70  |his function cop|
00051150  69 65 73 20 74 68 65 20  74 65 78 74 20 66 72 6f  |ies the text fro|
00051160  6d 20 74 68 65 20 73 70  65 63 69 66 69 65 64 20  |m the specified |
00051170  69 63 6f 6e 20 69 6e 74  6f 20 74 68 65 20 61 72  |icon into the ar|
00051180  72 61 79 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |ray pointed to b|
00051190  79 20 2f 74 2f 2e 0a 0a  53 70 72 69 74 65 2d 6f  |y /t/...Sprite-o|
000511a0  6e 6c 79 20 69 63 6f 6e  73 20 68 61 76 65 20 74  |nly icons have t|
000511b0  68 65 69 72 20 73 70 72  69 74 65 20 6e 61 6d 65  |heir sprite name|
000511c0  20 63 6f 70 69 65 64 20  69 6e 74 6f 20 74 68 65  | copied into the|
000511d0  20 61 72 72 61 79 2e 00  44 41 54 41 96 01 00 00  | array..DATA....|
000511e0  49 63 6f 6e 5f 47 65 74  54 65 78 74 50 74 72 0a  |Icon_GetTextPtr.|
000511f0  53 79 6e 74 61 78 3a 09  63 68 61 72 20 2a 49 63  |Syntax:.char *Ic|
00051200  6f 6e 5f 47 65 74 54 65  78 74 50 74 72 20 28 3c  |on_GetTextPtr (<|
00051210  77 69 6e 64 6f 77 5f 68  61 6e 64 6c 65 3e 20 77  |window_handle> w|
00051220  69 6e 2c 20 3c 69 63 6f  6e 5f 68 61 6e 64 6c 65  |in, <icon_handle|
00051230  3e 20 69 63 6f 6e 29 3b  0a 48 65 61 64 65 72 73  |> icon);.Headers|
00051240  3a 09 3c 54 69 6d 73 4c  69 62 3a 49 63 6f 6e 2e  |:.<TimsLib:Icon.|
00051250  68 3d 3e 49 63 6f 6e 5f  54 4c 3e 0a 09 3c 44 65  |h=>Icon_TL>..<De|
00051260  73 6b 4c 69 62 3a 49 63  6f 6e 2e 68 3d 3e 49 63  |skLib:Icon.h=>Ic|
00051270  6f 6e 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |on>..Returns:.Po|
00051280  69 6e 74 65 72 20 74 6f  20 74 65 78 74 2e 0a 0a  |inter to text...|
00051290  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 67 65  |This function ge|
000512a0  74 73 20 74 68 65 20 70  6f 69 6e 74 65 72 20 74  |ts the pointer t|
000512b0  6f 20 74 68 65 20 61 63  74 75 61 6c 20 69 6e 64  |o the actual ind|
000512c0  69 72 65 63 74 65 64 20  74 65 78 74 20 6f 66 20  |irected text of |
000512d0  74 68 65 20 67 69 76 65  6e 20 69 63 6f 6e 2e 20  |the given icon. |
000512e0  49 66 20 74 68 65 20 67  69 76 65 6e 20 69 63 6f  |If the given ico|
000512f0  6e 20 69 73 20 6e 6f 74  20 61 6e 20 69 6e 64 69  |n is not an indi|
00051300  72 65 63 74 65 64 20 74  65 78 74 20 69 63 6f 6e  |rected text icon|
00051310  2c 20 74 68 65 20 70 6f  69 6e 74 65 72 20 77 69  |, the pointer wi|
00051320  6c 6c 20 62 65 20 69 6e  76 61 6c 69 64 2e 20 54  |ll be invalid. T|
00051330  68 69 73 20 61 6c 6c 6f  77 73 20 79 6f 75 20 74  |his allows you t|
00051340  6f 20 63 68 61 6e 67 65  2f 72 65 61 64 20 74 68  |o change/read th|
00051350  65 20 63 6f 6e 74 65 6e  74 73 20 6f 66 20 74 68  |e contents of th|
00051360  65 20 69 63 6f 6e 20 65  61 73 69 6c 79 2e 00 00  |e icon easily...|
00051370  44 41 54 41 7f 00 00 00  69 63 6f 6e 5f 68 61 6e  |DATA....icon_han|
00051380  64 6c 65 0a 54 68 69 73  20 74 79 70 65 20 69 73  |dle.This type is|
00051390  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 44 65 73  | defined in <Des|
000513a0  6b 4c 69 62 3a 57 69 6d  70 2e 68 3d 3e 57 69 6d  |kLib:Wimp.h=>Wim|
000513b0  70 3e 20 61 73 20 61 20  74 79 70 65 20 68 6f 6c  |p> as a type hol|
000513c0  64 69 6e 67 20 61 6e 20  69 63 6f 6e 20 68 61 6e  |ding an icon han|
000513d0  64 6c 65 2e 20 49 74 20  69 73 20 64 65 66 69 6e  |dle. It is defin|
000513e0  65 64 20 61 73 20 61 6e  20 2f 69 6e 74 2f 2e 00  |ed as an /int/..|
000513f0  44 41 54 41 de 00 00 00  69 63 6f 6e 5f 69 6e 64  |DATA....icon_ind|
00051400  73 70 72 69 74 65 0a 54  68 69 73 20 74 79 70 65  |sprite.This type|
00051410  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
00051420  44 65 73 6b 4c 69 62 3a  57 69 6d 70 2e 68 3d 3e  |DeskLib:Wimp.h=>|
00051430  57 69 6d 70 3e 20 61 73  20 61 0a 73 74 72 75 63  |Wimp> as a.struc|
00051440  74 75 72 65 20 68 6f 6c  64 69 6e 67 20 74 68 65  |ture holding the|
00051450  20 69 63 6f 6e 20 64 61  74 61 20 66 6f 72 20 61  | icon data for a|
00051460  6e 0a 69 6e 64 69 72 65  63 74 65 64 20 73 70 72  |n.indirected spr|
00051470  69 74 65 20 69 63 6f 6e  2e 0a 0a 20 20 5c 7b 0a  |ite icon...  \{.|
00051480  20 20 20 20 63 6f 6e 73  74 20 63 68 61 72 09 09  |    const char..|
00051490  2a 6e 61 6d 65 3b 0a 20  20 20 20 76 6f 69 64 09  |*name;.    void.|
000514a0  09 2a 73 70 72 69 74 65  61 72 65 61 3b 0a 20 20  |.*spritearea;.  |
000514b0  20 20 75 6e 73 69 67 6e  65 64 20 69 6e 74 09 6e  |  unsigned int.n|
000514c0  61 6d 65 69 73 6e 61 6d  65 3b 0a 20 20 7d 00 00  |ameisname;.  }..|
000514d0  44 41 54 41 d2 00 00 00  69 63 6f 6e 5f 69 6e 64  |DATA....icon_ind|
000514e0  74 65 78 74 0a 54 68 69  73 20 74 79 70 65 20 69  |text.This type i|
000514f0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 44 65  |s defined in <De|
00051500  73 6b 4c 69 62 3a 57 69  6d 70 2e 68 3d 3e 57 69  |skLib:Wimp.h=>Wi|
00051510  6d 70 3e 20 61 73 20 61  20 73 74 72 75 63 74 75  |mp> as a structu|
00051520  72 65 20 68 6f 6c 64 69  6e 67 20 74 68 65 20 69  |re holding the i|
00051530  63 6f 6e 20 64 61 74 61  20 66 6f 72 20 61 6e 20  |con data for an |
00051540  69 6e 64 69 72 65 63 74  65 64 20 74 65 78 74 20  |indirected text |
00051550  69 63 6f 6e 2e 0a 0a 20  20 5c 7b 0a 20 20 20 20  |icon...  \{.    |
00051560  63 68 61 72 09 2a 62 75  66 66 65 72 3b 0a 20 20  |char.*buffer;.  |
00051570  20 20 63 68 61 72 09 2a  76 61 6c 69 64 73 74 72  |  char.*validstr|
00051580  69 6e 67 3b 0a 20 20 20  20 75 6e 73 69 67 6e 65  |ing;.    unsigne|
00051590  64 20 69 6e 74 09 62 75  66 66 6c 65 6e 3b 0a 20  |d int.bufflen;. |
000515a0  20 7d 00 00 44 41 54 41  00 01 00 00 49 63 6f 6e  | }..DATA....Icon|
000515b0  5f 4c 6f 73 65 43 61 72  65 74 0a 53 79 6e 74 61  |_LoseCaret.Synta|
000515c0  78 3a 09 76 6f 69 64 20  49 63 6f 6e 5f 4c 6f 73  |x:.void Icon_Los|
000515d0  65 43 61 72 65 74 20 28  3c 77 69 6e 64 6f 77 5f  |eCaret (<window_|
000515e0  68 61 6e 64 6c 65 3e 20  68 6e 64 2c 20 3c 69 63  |handle> hnd, <ic|
000515f0  6f 6e 5f 68 61 6e 64 6c  65 3e 20 69 63 6f 6e 29  |on_handle> icon)|
00051600  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
00051610  69 62 3a 49 63 6f 6e 2e  68 3d 3e 49 63 6f 6e 5f  |ib:Icon.h=>Icon_|
00051620  68 3e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |h>..This functio|
00051630  6e 20 65 6e 73 75 72 65  73 20 74 68 61 74 20 74  |n ensures that t|
00051640  68 65 20 63 61 72 65 74  20 69 73 20 6e 6f 74 20  |he caret is not |
00051650  63 6f 6e 74 61 69 6e 65  64 20 77 69 74 68 69 6e  |contained within|
00051660  20 74 68 65 20 69 63 6f  6e 20 67 69 76 65 6e 2e  | the icon given.|
00051670  20 49 74 20 77 69 6c 6c  20 6e 6f 74 20 6d 6f 76  | It will not mov|
00051680  65 20 74 68 65 20 63 61  72 65 74 20 69 66 20 69  |e the caret if i|
00051690  74 20 69 73 20 73 6f 6d  65 77 68 65 72 65 20 65  |t is somewhere e|
000516a0  6c 73 65 2e 44 41 54 41  59 01 00 00 49 63 6f 6e  |lse.DATAY...Icon|
000516b0  5f 20 70 72 69 6e 74 66  0a 53 79 6e 74 61 78 3a  |_ printf.Syntax:|
000516c0  09 76 6f 69 64 20 49 63  6f 6e 5f 70 72 69 6e 74  |.void Icon_print|
000516d0  66 20 28 3c 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |f (<window_handl|
000516e0  65 3e 20 68 6e 64 2c 20  3c 69 63 6f 6e 5f 68 61  |e> hnd, <icon_ha|
000516f0  6e 64 6c 65 3e 20 69 63  6f 6e 2c 20 63 68 61 72  |ndle> icon, char|
00051700  20 2a 66 6f 72 6d 61 74  2c 20 2e 2e 2e 29 3b 0a  | *format, ...);.|
00051710  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
00051720  3a 49 63 6f 6e 2e 68 3d  3e 49 63 6f 6e 3e 0a 0a  |:Icon.h=>Icon>..|
00051730  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 77 72  |This function wr|
00051740  69 74 65 73 20 6f 75 74  70 75 74 20 74 6f 20 74  |ites output to t|
00051750  68 65 20 69 63 6f 6e 20  73 70 65 63 69 66 69 65  |he icon specifie|
00051760  64 20 75 6e 64 65 72 20  63 6f 6e 74 72 6f 6c 20  |d under control |
00051770  6f 66 20 74 68 65 20 3c  66 6f 72 6d 61 74 20 73  |of the <format s|
00051780  74 72 69 6e 67 3d 3e 70  66 6f 72 6d 5f 3e 2e 20  |tring=>pform_>. |
00051790  49 74 20 69 73 20 65 78  61 63 74 6c 79 20 74 68  |It is exactly th|
000517a0  65 20 73 61 6d 65 20 61  73 20 3c 73 70 72 69 6e  |e same as <sprin|
000517b0  74 66 3e 2c 20 62 75 74  20 69 6e 73 74 65 61 64  |tf>, but instead|
000517c0  20 6f 66 20 70 61 73 73  69 6e 67 20 69 6e 20 61  | of passing in a|
000517d0  20 73 74 72 69 6e 67 2c  20 79 6f 75 20 70 61 73  | string, you pas|
000517e0  73 20 69 6e 20 61 6e 20  69 6e 64 69 72 65 63 74  |s in an indirect|
000517f0  65 64 20 74 65 78 74 20  69 63 6f 6e 2e 00 00 00  |ed text icon....|
00051800  44 41 54 41 f6 00 00 00  49 63 6f 6e 5f 52 65 61  |DATA....Icon_Rea|
00051810  64 53 6c 69 64 65 72 0a  53 79 6e 74 61 78 3a 09  |dSlider.Syntax:.|
00051820  69 6e 74 20 49 63 6f 6e  5f 52 65 61 64 53 6c 69  |int Icon_ReadSli|
00051830  64 65 72 20 28 3c 77 69  6e 64 6f 77 5f 68 61 6e  |der (<window_han|
00051840  64 6c 65 3e 20 68 6e 64  2c 20 3c 69 63 6f 6e 5f  |dle> hnd, <icon_|
00051850  68 61 6e 64 6c 65 3e 20  62 61 73 65 2c 20 69 63  |handle> base, ic|
00051860  6f 6e 5f 68 61 6e 64 6c  65 20 73 6c 69 64 65 72  |on_handle slider|
00051870  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00051880  4c 69 62 3a 49 63 6f 6e  2e 68 3d 3e 49 63 6f 6e  |Lib:Icon.h=>Icon|
00051890  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 65 72 63  |>..Returns:.Perc|
000518a0  65 6e 74 61 67 65 20 72  65 70 72 65 73 65 6e 74  |entage represent|
000518b0  65 64 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |ed..This functio|
000518c0  6e 20 72 65 61 64 73 20  74 68 65 20 76 61 6c 75  |n reads the valu|
000518d0  65 20 72 65 70 72 65 73  65 6e 74 65 64 20 62 79  |e represented by|
000518e0  20 74 68 65 20 73 6c 69  64 65 72 20 73 70 65 63  | the slider spec|
000518f0  69 66 69 65 64 2e 00 00  44 41 54 41 26 01 00 00  |ified...DATA&...|
00051900  49 63 6f 6e 5f 53 63 72  65 65 6e 50 6f 73 0a 53  |Icon_ScreenPos.S|
00051910  79 6e 74 61 78 3a 09 76  6f 69 64 20 49 63 6f 6e  |yntax:.void Icon|
00051920  5f 53 63 72 65 65 6e 50  6f 73 20 28 3c 77 69 6e  |_ScreenPos (<win|
00051930  64 6f 77 5f 68 61 6e 64  6c 65 3e 20 77 69 6e 2c  |dow_handle> win,|
00051940  20 3c 69 63 6f 6e 5f 68  61 6e 64 6c 65 3e 20 69  | <icon_handle> i|
00051950  63 6f 6e 2c 20 3c 77 69  6d 70 5f 72 65 63 74 3e  |con, <wimp_rect>|
00051960  20 2a 72 65 63 74 29 3b  0a 48 65 61 64 65 72 3a  | *rect);.Header:|
00051970  09 3c 44 65 73 6b 4c 69  62 3a 49 63 6f 6e 2e 68  |.<DeskLib:Icon.h|
00051980  3d 3e 49 63 6f 6e 3e 0a  0a 54 68 69 73 20 66 75  |=>Icon>..This fu|
00051990  6e 63 74 69 6f 6e 20 67  65 74 73 20 74 68 65 20  |nction gets the |
000519a0  63 6f 6f 72 64 69 6e 61  74 65 73 20 6f 66 20 74  |coordinates of t|
000519b0  68 65 20 73 70 65 63 69  66 69 65 64 20 69 63 6f  |he specified ico|
000519c0  6e 20 61 6e 64 20 63 6f  6e 76 65 72 74 73 20 74  |n and converts t|
000519d0  68 65 6d 20 69 6e 74 6f  20 73 63 72 65 65 6e 20  |hem into screen |
000519e0  63 6f 6f 72 64 69 6e 61  74 65 73 2c 20 72 65 74  |coordinates, ret|
000519f0  75 72 6e 69 6e 67 20 74  68 65 6d 20 69 6e 20 74  |urning them in t|
00051a00  68 65 20 62 6c 6f 63 6b  20 70 6f 69 6e 74 65 64  |he block pointed|
00051a10  20 74 6f 20 62 79 20 2f  72 65 63 74 2f 2e 00 00  | to by /rect/...|
00051a20  44 41 54 41 b2 00 00 00  49 63 6f 6e 5f 53 65 6c  |DATA....Icon_Sel|
00051a30  65 63 74 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |ect.Syntax:.void|
00051a40  20 49 63 6f 6e 5f 53 65  6c 65 63 74 20 28 3c 77  | Icon_Select (<w|
00051a50  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 3e 20 68 6e  |indow_handle> hn|
00051a60  64 2c 20 3c 69 63 6f 6e  5f 68 61 6e 64 6c 65 3e  |d, <icon_handle>|
00051a70  20 69 63 6f 6e 29 3b 0a  48 65 61 64 65 72 3a 09  | icon);.Header:.|
00051a80  3c 44 65 73 6b 4c 69 62  3a 49 63 6f 6e 2e 68 3d  |<DeskLib:Icon.h=|
00051a90  3e 49 63 6f 6e 3e 0a 0a  54 68 69 73 20 66 75 6e  |>Icon>..This fun|
00051aa0  63 74 69 6f 6e 20 73 65  6c 65 63 74 73 20 74 68  |ction selects th|
00051ab0  65 20 67 69 76 65 6e 20  69 63 6f 6e 2c 20 69 66  |e given icon, if|
00051ac0  20 69 74 20 69 73 20 64  65 73 65 6c 65 63 74 65  | it is deselecte|
00051ad0  64 2e 00 00 44 41 54 41  36 01 00 00 49 63 6f 6e  |d...DATA6...Icon|
00051ae0  5f 53 65 6c 65 63 74 47  72 6f 75 70 0a 53 79 6e  |_SelectGroup.Syn|
00051af0  74 61 78 3a 09 76 6f 69  64 20 49 63 6f 6e 5f 53  |tax:.void Icon_S|
00051b00  65 6c 65 63 74 47 72 6f  75 70 20 28 3c 77 69 6e  |electGroup (<win|
00051b10  64 6f 77 5f 68 61 6e 64  6c 65 3e 20 77 69 6e 2c  |dow_handle> win,|
00051b20  20 3c 69 63 6f 6e 5f 68  61 6e 64 6c 65 3e 20 69  | <icon_handle> i|
00051b30  63 6f 6e 73 5b 5d 2c 20  3c 42 4f 4f 4c 3e 20 73  |cons[], <BOOL> s|
00051b40  65 6c 65 63 74 29 3b 0a  48 65 61 64 65 72 3a 09  |elect);.Header:.|
00051b50  3c 54 69 6d 73 4c 69 62  3a 49 63 6f 6e 2e 68 3d  |<TimsLib:Icon.h=|
00051b60  3e 49 63 6f 6e 5f 54 4c  3e 0a 09 3c 44 65 73 6b  |>Icon_TL>..<Desk|
00051b70  4c 69 62 3a 49 63 6f 6e  2e 68 3d 3e 49 63 6f 6e  |Lib:Icon.h=>Icon|
00051b80  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
00051b90  20 73 65 6c 65 63 74 73  20 6f 72 20 64 65 73 65  | selects or dese|
00051ba0  6c 65 63 74 73 20 28 64  65 70 65 6e 64 69 6e 67  |lects (depending|
00051bb0  20 6f 6e 20 7b 2f 7d 73  65 6c 65 63 74 7b 2f 7d  | on {/}select{/}|
00051bc0  29 20 74 68 65 20 69 63  6f 6e 73 20 73 70 65 63  |) the icons spec|
00051bd0  69 66 69 65 64 20 69 6e  20 74 68 65 20 61 72 72  |ified in the arr|
00051be0  61 79 20 2f 69 63 6f 6e  73 2f 2e 20 54 68 65 20  |ay /icons/. The |
00051bf0  61 72 72 61 79 20 69 73  20 74 65 72 6d 69 6e 61  |array is termina|
00051c00  74 65 64 20 62 79 20 2d  31 2e 00 00 44 41 54 41  |ted by -1...DATA|
00051c10  1d 01 00 00 49 63 6f 6e  5f 53 65 74 42 61 63 6b  |....Icon_SetBack|
00051c20  43 6f 6c 6f 75 72 0a 53  79 6e 74 61 78 3a 09 76  |Colour.Syntax:.v|
00051c30  6f 69 64 20 49 63 6f 6e  5f 53 65 74 42 61 63 6b  |oid Icon_SetBack|
00051c40  43 6f 6c 6f 75 72 20 28  3c 77 69 6e 64 6f 77 5f  |Colour (<window_|
00051c50  68 61 6e 64 6c 65 3e 20  77 69 6e 2c 20 3c 69 63  |handle> win, <ic|
00051c60  6f 6e 5f 68 61 6e 64 6c  65 3e 20 69 63 6f 6e 2c  |on_handle> icon,|
00051c70  20 69 6e 74 20 77 69 6d  70 63 6f 6c 29 3b 0a 48  | int wimpcol);.H|
00051c80  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00051c90  49 63 6f 6e 2e 68 3d 3e  49 63 6f 6e 3e 0a 0a 54  |Icon.h=>Icon>..T|
00051ca0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 65 74  |his function set|
00051cb0  73 20 74 68 65 20 62 61  63 6b 67 72 6f 75 6e 64  |s the background|
00051cc0  20 63 6f 6c 6f 75 72 20  6f 66 20 61 6e 20 69 63  | colour of an ic|
00051cd0  6f 6e 2e 20 4e 6f 74 65  20 74 68 61 74 20 69 74  |on. Note that it|
00051ce0  20 64 6f 65 73 20 6e 6f  74 20 63 6f 70 65 20 77  | does not cope w|
00051cf0  69 74 68 20 6f 75 74 6c  69 6e 65 20 66 6f 6e 74  |ith outline font|
00051d00  20 69 63 6f 6e 73 2c 20  61 6e 64 20 77 69 6c 6c  | icons, and will|
00051d10  20 63 6f 6d 70 6c 65 74  65 6c 79 20 6d 75 63 6b  | completely muck|
00051d20  20 74 68 65 6d 20 75 70  2e 00 00 00 44 41 54 41  | them up....DATA|
00051d30  53 01 00 00 49 63 6f 6e  5f 53 65 74 42 67 43 6f  |S...Icon_SetBgCo|
00051d40  6c 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |l.Syntax:.<os_er|
00051d50  72 6f 72 3e 20 2a 49 63  6f 6e 5f 53 65 74 42 67  |ror> *Icon_SetBg|
00051d60  43 6f 6c 20 28 3c 77 69  6e 64 6f 77 5f 68 61 6e  |Col (<window_han|
00051d70  64 6c 65 3e 20 77 69 6e  2c 20 3c 69 63 6f 6e 5f  |dle> win, <icon_|
00051d80  68 61 6e 64 6c 65 3e 20  69 63 6f 6e 2c 20 69 6e  |handle> icon, in|
00051d90  74 20 63 6f 6c 29 3b 0a  48 65 61 64 65 72 3a 09  |t col);.Header:.|
00051da0  3c 54 69 6d 73 4c 69 62  3a 49 63 6f 6e 2e 68 3d  |<TimsLib:Icon.h=|
00051db0  3e 49 63 6f 6e 5f 54 4c  3e 0a 09 3c 44 65 73 6b  |>Icon_TL>..<Desk|
00051dc0  4c 69 62 3a 49 63 6f 6e  2e 68 3d 3e 49 63 6f 6e  |Lib:Icon.h=>Icon|
00051dd0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
00051de0  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
00051df0  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
00051e00  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 2d  |..This function-|
00051e10  6c 69 6b 65 20 6d 61 63  72 6f 20 63 68 61 6e 67  |like macro chang|
00051e20  65 73 20 74 68 65 20 62  61 63 6b 67 72 6f 75 6e  |es the backgroun|
00051e30  64 20 63 6f 6c 6f 75 72  20 6f 66 20 74 68 65 20  |d colour of the |
00051e40  73 70 65 63 69 66 69 65  64 20 69 63 6f 6e 20 74  |specified icon t|
00051e50  6f 20 2f 63 6f 6c 2f 2e  20 54 68 69 73 20 64 6f  |o /col/. This do|
00051e60  65 73 20 6e 6f 74 20 77  6f 72 6b 20 77 69 74 68  |es not work with|
00051e70  20 6f 75 74 6c 69 6e 65  20 66 6f 6e 74 73 2e 00  | outline fonts..|
00051e80  44 41 54 41 0c 01 00 00  49 63 6f 6e 5f 53 65 74  |DATA....Icon_Set|
00051e90  43 61 72 65 74 0a 53 79  6e 74 61 78 3a 09 76 6f  |Caret.Syntax:.vo|
00051ea0  69 64 20 49 63 6f 6e 5f  53 65 74 43 61 72 65 74  |id Icon_SetCaret|
00051eb0  20 28 3c 77 69 6e 64 6f  77 5f 68 61 6e 64 6c 65  | (<window_handle|
00051ec0  3e 20 68 6e 64 2c 20 3c  69 63 6f 6e 5f 68 61 6e  |> hnd, <icon_han|
00051ed0  64 6c 65 3e 20 69 63 6f  6e 29 3b 0a 48 65 61 64  |dle> icon);.Head|
00051ee0  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 49 63 6f  |er:.<DeskLib:Ico|
00051ef0  6e 2e 68 3d 3e 49 63 6f  6e 3e 0a 0a 54 68 69 73  |n.h=>Icon>..This|
00051f00  20 66 75 6e 63 74 69 6f  6e 20 73 65 74 73 20 74  | function sets t|
00051f10  68 65 20 63 61 72 65 74  20 77 69 74 68 69 6e 20  |he caret within |
00051f20  74 68 65 20 72 65 71 75  65 73 74 65 64 20 69 63  |the requested ic|
00051f30  6f 6e 2c 20 61 74 20 74  68 65 20 72 69 67 68 74  |on, at the right|
00051f40  68 61 6e 64 20 65 6e 64  20 6f 66 20 74 68 65 20  |hand end of the |
00051f50  74 65 78 74 2e 20 49 66  20 74 68 65 20 69 63 6f  |text. If the ico|
00051f60  6e 20 69 73 20 6e 6f 74  20 61 20 74 65 78 74 20  |n is not a text |
00051f70  69 63 6f 6e 2c 20 6e 6f  20 65 72 72 6f 72 20 69  |icon, no error i|
00051f80  73 20 67 65 6e 65 72 61  74 65 64 2e 44 41 54 41  |s generated.DATA|
00051f90  63 01 00 00 49 63 6f 6e  5f 53 65 74 44 6f 75 62  |c...Icon_SetDoub|
00051fa0  6c 65 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |le.Syntax:.void |
00051fb0  49 63 6f 6e 5f 53 65 74  44 6f 75 62 6c 65 20 28  |Icon_SetDouble (|
00051fc0  3c 77 69 6e 64 6f 77 5f  68 61 6e 64 6c 65 3e 20  |<window_handle> |
00051fd0  68 6e 64 2c 20 3c 69 63  6f 6e 5f 68 61 6e 64 6c  |hnd, <icon_handl|
00051fe0  65 3e 20 69 63 6f 6e 2c  20 64 6f 75 62 6c 65 20  |e> icon, double |
00051ff0  6e 2c 20 69 6e 74 20 64  70 29 3b 0a 48 65 61 64  |n, int dp);.Head|
00052000  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 49 63 6f  |er:.<DeskLib:Ico|
00052010  6e 2e 68 3d 3e 49 63 6f  6e 3e 0a 0a 54 68 69 73  |n.h=>Icon>..This|
00052020  20 66 75 6e 63 74 69 6f  6e 20 73 65 74 73 20 74  | function sets t|
00052030  68 65 20 67 69 76 65 6e  20 69 63 6f 6e 27 73 20  |he given icon's |
00052040  74 65 78 74 20 74 6f 20  68 6f 6c 64 20 74 68 65  |text to hold the|
00052050  20 6e 75 6d 62 65 72 20  2f 6e 2f 2c 20 67 69 76  | number /n/, giv|
00052060  65 6e 20 74 6f 20 2f 64  70 2f 20 64 65 63 69 6d  |en to /dp/ decim|
00052070  61 6c 20 70 6c 61 63 65  73 2e 20 54 68 65 20 69  |al places. The i|
00052080  63 6f 6e 20 69 73 20 72  65 64 72 61 77 6e 2e 20  |con is redrawn. |
00052090  49 66 20 74 68 65 20 6e  75 6d 62 65 72 20 69 73  |If the number is|
000520a0  20 74 6f 6f 20 6c 6f 6e  67 20 69 74 20 77 69 6c  | too long it wil|
000520b0  6c 20 62 65 20 63 68 6f  70 70 65 64 20 6f 66 66  |l be chopped off|
000520c0  2e 20 4e 6f 20 65 72 72  6f 72 20 69 73 20 72 65  |. No error is re|
000520d0  74 75 72 6e 65 64 20 69  66 20 74 68 65 20 69 63  |turned if the ic|
000520e0  6f 6e 20 69 73 20 6e 6f  74 20 74 65 78 74 2e 00  |on is not text..|
000520f0  44 41 54 41 48 01 00 00  49 63 6f 6e 5f 53 65 74  |DATAH...Icon_Set|
00052100  46 67 43 6f 6c 0a 53 79  6e 74 61 78 3a 09 3c 6f  |FgCol.Syntax:.<o|
00052110  73 5f 65 72 72 6f 72 3e  20 2a 49 63 6f 6e 5f 53  |s_error> *Icon_S|
00052120  65 74 46 67 43 6f 6c 20  28 3c 77 69 6e 64 6f 77  |etFgCol (<window|
00052130  5f 68 61 6e 64 6c 65 3e  20 77 69 6e 2c 20 3c 69  |_handle> win, <i|
00052140  63 6f 6e 5f 68 61 6e 64  6c 65 3e 20 69 63 6f 6e  |con_handle> icon|
00052150  2c 20 69 6e 74 20 63 6f  6c 29 3b 0a 48 65 61 64  |, int col);.Head|
00052160  65 72 3a 09 3c 54 69 6d  73 4c 69 62 3a 49 63 6f  |er:.<TimsLib:Ico|
00052170  6e 2e 68 3d 3e 49 63 6f  6e 5f 54 4c 3e 0a 09 3c  |n.h=>Icon_TL>..<|
00052180  44 65 73 6b 4c 69 62 3a  49 63 6f 6e 2e 68 3d 3e  |DeskLib:Icon.h=>|
00052190  49 63 6f 6e 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |Icon>..Returns:.|
000521a0  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000521b0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000521c0  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
000521d0  69 6f 6e 20 63 68 61 6e  67 65 73 20 74 68 65 20  |ion changes the |
000521e0  66 6f 72 65 67 72 6f 75  6e 64 20 63 6f 6c 6f 75  |foreground colou|
000521f0  72 20 6f 66 20 74 68 65  20 73 70 65 63 69 66 69  |r of the specifi|
00052200  65 64 20 69 63 6f 6e 20  74 6f 20 2f 63 6f 6c 2f  |ed icon to /col/|
00052210  2e 20 54 68 69 73 20 64  6f 65 73 20 6e 6f 74 20  |. This does not |
00052220  77 6f 72 6b 20 77 69 74  68 20 6f 75 74 6c 69 6e  |work with outlin|
00052230  65 20 66 6f 6e 74 73 2e  44 41 54 41 9c 01 00 00  |e fonts.DATA....|
00052240  49 63 6f 6e 5f 53 65 74  46 6c 61 67 73 0a 53 79  |Icon_SetFlags.Sy|
00052250  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00052260  20 2a 49 63 6f 6e 5f 53  65 74 46 6c 61 67 73 20  | *Icon_SetFlags |
00052270  28 3c 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 3e  |(<window_handle>|
00052280  20 77 69 6e 2c 20 3c 69  63 6f 6e 5f 68 61 6e 64  | win, <icon_hand|
00052290  6c 65 3e 20 69 63 6f 6e  2c 20 69 6e 74 20 66 6c  |le> icon, int fl|
000522a0  61 67 73 2c 20 3c 42 4f  4f 4c 3e 20 73 65 74 29  |ags, <BOOL> set)|
000522b0  3b 0a 48 65 61 64 65 72  3a 09 3c 54 69 6d 73 4c  |;.Header:.<TimsL|
000522c0  69 62 3a 49 63 6f 6e 2e  68 3d 3e 49 63 6f 6e 5f  |ib:Icon.h=>Icon_|
000522d0  54 4c 3e 0a 09 3c 44 65  73 6b 4c 69 62 3a 49 63  |TL>..<DeskLib:Ic|
000522e0  6f 6e 2e 68 3d 3e 49 63  6f 6e 3e 0a 0a 52 65 74  |on.h=>Icon>..Ret|
000522f0  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
00052300  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
00052310  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
00052320  20 66 75 6e 63 74 69 6f  6e 2d 6c 69 6b 65 20 6d  | function-like m|
00052330  61 63 72 6f 20 73 65 74  73 20 74 68 65 20 73 70  |acro sets the sp|
00052340  65 63 69 66 69 65 64 20  69 63 6f 6e 27 73 20 66  |ecified icon's f|
00052350  6c 61 67 73 20 61 63 63  6f 72 64 69 6e 67 20 74  |lags according t|
00052360  6f 20 2f 66 6c 61 67 73  2f 20 61 6e 64 20 2f 73  |o /flags/ and /s|
00052370  65 74 2f 2e 20 54 68 65  20 66 6c 61 67 73 20 67  |et/. The flags g|
00052380  69 76 65 6e 20 61 72 65  20 61 6c 6c 20 65 69 74  |iven are all eit|
00052390  68 65 72 20 73 65 74 20  28 69 66 20 7b 2f 7d 73  |her set (if {/}s|
000523a0  65 74 7b 2f 7d 20 69 73  20 3c 54 52 55 45 3e 29  |et{/} is <TRUE>)|
000523b0  20 6f 72 20 75 6e 73 65  74 20 28 69 66 20 7b 2f  | or unset (if {/|
000523c0  7d 73 65 74 7b 2f 7d 20  69 73 20 3c 46 41 4c 53  |}set{/} is <FALS|
000523d0  45 3e 29 2e 44 41 54 41  1d 01 00 00 49 63 6f 6e  |E>).DATA....Icon|
000523e0  5f 53 65 74 46 6f 72 65  43 6f 6c 6f 75 72 0a 53  |_SetForeColour.S|
000523f0  79 6e 74 61 78 3a 09 76  6f 69 64 20 49 63 6f 6e  |yntax:.void Icon|
00052400  5f 53 65 74 46 6f 72 65  43 6f 6c 6f 75 72 20 28  |_SetForeColour (|
00052410  3c 77 69 6e 64 6f 77 5f  68 61 6e 64 6c 65 3e 20  |<window_handle> |
00052420  77 69 6e 2c 20 3c 69 63  6f 6e 5f 68 61 6e 64 6c  |win, <icon_handl|
00052430  65 3e 20 69 63 6f 6e 2c  20 69 6e 74 20 77 69 6d  |e> icon, int wim|
00052440  70 63 6f 6c 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |pcol);.Header:.<|
00052450  44 65 73 6b 4c 69 62 3a  49 63 6f 6e 2e 68 3d 3e  |DeskLib:Icon.h=>|
00052460  49 63 6f 6e 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |Icon>..This func|
00052470  74 69 6f 6e 20 73 65 74  73 20 74 68 65 20 66 6f  |tion sets the fo|
00052480  72 65 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 20  |reground colour |
00052490  6f 66 20 61 6e 20 69 63  6f 6e 2e 20 4e 6f 74 65  |of an icon. Note|
000524a0  20 74 68 61 74 20 69 74  20 64 6f 65 73 20 6e 6f  | that it does no|
000524b0  74 20 63 6f 70 65 20 77  69 74 68 20 6f 75 74 6c  |t cope with outl|
000524c0  69 6e 65 20 66 6f 6e 74  20 69 63 6f 6e 73 2c 20  |ine font icons, |
000524d0  61 6e 64 20 77 69 6c 6c  20 63 6f 6d 70 6c 65 74  |and will complet|
000524e0  65 6c 79 20 6d 75 63 6b  20 74 68 65 6d 20 75 70  |ely muck them up|
000524f0  2e 00 00 00 44 41 54 41  3c 01 00 00 49 63 6f 6e  |....DATA<...Icon|
00052500  5f 53 65 74 49 6e 74 65  67 65 72 0a 53 79 6e 74  |_SetInteger.Synt|
00052510  61 78 3a 09 76 6f 69 64  20 49 63 6f 6e 5f 53 65  |ax:.void Icon_Se|
00052520  74 49 6e 74 65 67 65 72  20 28 3c 77 69 6e 64 6f  |tInteger (<windo|
00052530  77 5f 68 61 6e 64 6c 65  3e 20 68 6e 64 2c 20 3c  |w_handle> hnd, <|
00052540  69 63 6f 6e 5f 68 61 6e  64 6c 65 3e 20 69 63 6f  |icon_handle> ico|
00052550  6e 2c 20 69 6e 74 20 6e  29 3b 0a 48 65 61 64 65  |n, int n);.Heade|
00052560  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 49 63 6f 6e  |r:.<DeskLib:Icon|
00052570  2e 68 3d 3e 49 63 6f 6e  3e 0a 0a 54 68 69 73 20  |.h=>Icon>..This |
00052580  66 75 6e 63 74 69 6f 6e  20 73 65 74 73 20 74 68  |function sets th|
00052590  65 20 67 69 76 65 6e 20  69 63 6f 6e 27 73 20 74  |e given icon's t|
000525a0  65 78 74 20 74 6f 20 68  6f 6c 64 20 74 68 65 20  |ext to hold the |
000525b0  6e 75 6d 62 65 72 20 2f  6e 2f 2e 20 54 68 65 20  |number /n/. The |
000525c0  69 63 6f 6e 20 69 73 20  72 65 64 72 61 77 6e 2e  |icon is redrawn.|
000525d0  20 49 66 20 74 68 65 20  6e 75 6d 62 65 72 20 69  | If the number i|
000525e0  73 20 74 6f 6f 20 6c 6f  6e 67 20 69 74 20 77 69  |s too long it wi|
000525f0  6c 6c 20 62 65 20 63 68  6f 70 70 65 64 20 6f 66  |ll be chopped of|
00052600  66 2e 20 4e 6f 20 65 72  72 6f 72 20 69 73 20 72  |f. No error is r|
00052610  65 74 75 72 6e 65 64 20  69 66 20 74 68 65 20 69  |eturned if the i|
00052620  63 6f 6e 20 69 73 20 6e  6f 74 20 74 65 78 74 2e  |con is not text.|
00052630  44 41 54 41 9f 01 00 00  49 63 6f 6e 5f 53 65 74  |DATA....Icon_Set|
00052640  52 61 64 69 6f 73 0a 53  79 6e 74 61 78 3a 09 76  |Radios.Syntax:.v|
00052650  6f 69 64 20 49 63 6f 6e  5f 53 65 74 52 61 64 69  |oid Icon_SetRadi|
00052660  6f 73 20 28 3c 77 69 6e  64 6f 77 5f 68 61 6e 64  |os (<window_hand|
00052670  6c 65 3e 20 68 6e 64 2c  20 3c 69 63 6f 6e 5f 68  |le> hnd, <icon_h|
00052680  61 6e 64 6c 65 3e 20 66  69 72 73 74 2c 20 69 63  |andle> first, ic|
00052690  6f 6e 5f 68 61 6e 64 6c  65 20 6c 61 73 74 2c 20  |on_handle last, |
000526a0  69 63 6f 6e 5f 68 61 6e  64 6c 65 20 69 63 6f 6e  |icon_handle icon|
000526b0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
000526c0  4c 69 62 3a 49 63 6f 6e  2e 68 3d 3e 49 63 6f 6e  |Lib:Icon.h=>Icon|
000526d0  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
000526e0  20 73 65 6c 65 63 74 73  20 74 68 65 20 69 63 6f  | selects the ico|
000526f0  6e 20 77 68 6f 73 65 20  77 69 6e 64 6f 77 20 61  |n whose window a|
00052700  6e 64 20 69 63 6f 6e 20  68 61 6e 64 6c 65 20 69  |nd icon handle i|
00052710  73 20 67 69 76 65 6e 20  69 6e 20 2f 68 6e 64 2f  |s given in /hnd/|
00052720  20 61 6e 64 20 2f 69 63  6f 6e 2f 20 72 65 73 70  | and /icon/ resp|
00052730  65 63 74 69 76 65 6c 79  2e 20 41 6c 6c 20 6f 74  |ectively. All ot|
00052740  68 65 72 20 69 63 6f 6e  73 20 66 72 6f 6d 20 2f  |her icons from /|
00052750  66 69 72 73 74 2f 20 74  6f 20 2f 6c 61 73 74 2f  |first/ to /last/|
00052760  20 77 69 6c 6c 20 62 65  20 73 65 6c 65 63 74 65  | will be selecte|
00052770  64 2e 0a 0a 49 74 20 69  73 20 69 6e 74 65 6e 64  |d...It is intend|
00052780  65 64 20 74 68 61 74 20  74 68 69 73 20 66 75 6e  |ed that this fun|
00052790  63 74 69 6f 6e 20 69 73  20 75 73 65 64 20 74 6f  |ction is used to|
000527a0  20 73 65 6c 65 63 74 20  6f 6e 65 20 6f 70 74 69  | select one opti|
000527b0  6f 6e 20 66 72 6f 6d 20  61 20 67 72 6f 75 70 20  |on from a group |
000527c0  6f 66 20 72 61 64 69 6f  20 69 63 6f 6e 73 2e 00  |of radio icons..|
000527d0  44 41 54 41 de 00 00 00  49 63 6f 6e 5f 53 65 74  |DATA....Icon_Set|
000527e0  53 65 6c 65 63 74 0a 53  79 6e 74 61 78 3a 09 76  |Select.Syntax:.v|
000527f0  6f 69 64 20 3c 49 63 6f  6e 5f 53 65 74 53 65 6c  |oid <Icon_SetSel|
00052800  65 63 74 3e 20 28 3c 77  69 6e 64 6f 77 5f 68 61  |ect> (<window_ha|
00052810  6e 64 6c 65 3e 20 68 6e  64 2c 20 3c 69 63 6f 6e  |ndle> hnd, <icon|
00052820  5f 68 61 6e 64 6c 65 3e  20 69 63 6f 6e 2c 20 69  |_handle> icon, i|
00052830  6e 74 20 73 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |nt s);.Header:.<|
00052840  44 65 73 6b 4c 69 62 3a  49 63 6f 6e 2e 68 3d 3e  |DeskLib:Icon.h=>|
00052850  49 63 6f 6e 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |Icon>..This func|
00052860  74 69 6f 6e 20 73 65 74  73 20 6f 72 20 64 65 73  |tion sets or des|
00052870  65 6c 65 63 74 73 20 74  68 65 20 69 63 6f 6e 20  |elects the icon |
00052880  73 70 65 63 69 66 69 65  64 2c 20 64 65 70 65 6e  |specified, depen|
00052890  64 69 6e 67 20 6f 6e 20  77 68 65 74 68 65 72 20  |ding on whether |
000528a0  2f 73 2f 20 69 73 20 31  20 6f 72 20 30 2e 00 00  |/s/ is 1 or 0...|
000528b0  44 41 54 41 dd 00 00 00  49 63 6f 6e 5f 53 65 74  |DATA....Icon_Set|
000528c0  53 68 61 64 65 0a 53 79  6e 74 61 78 3a 09 76 6f  |Shade.Syntax:.vo|
000528d0  69 64 20 3c 49 63 6f 6e  5f 53 65 74 53 68 61 64  |id <Icon_SetShad|
000528e0  65 3e 20 28 3c 77 69 6e  64 6f 77 5f 68 61 6e 64  |e> (<window_hand|
000528f0  6c 65 3e 20 68 6e 64 2c  20 3c 69 63 6f 6e 5f 68  |le> hnd, <icon_h|
00052900  61 6e 64 6c 65 3e 20 69  63 6f 6e 2c 20 69 6e 74  |andle> icon, int|
00052910  20 73 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  | s);.Header:.<De|
00052920  73 6b 4c 69 62 3a 49 63  6f 6e 2e 68 3d 3e 49 63  |skLib:Icon.h=>Ic|
00052930  6f 6e 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |on>..This functi|
00052940  6f 6e 20 73 68 61 64 65  73 20 6f 72 20 75 6e 73  |on shades or uns|
00052950  68 61 64 65 73 20 74 68  65 20 69 63 6f 6e 20 73  |hades the icon s|
00052960  70 65 63 69 66 69 65 64  2c 20 64 65 70 65 6e 64  |pecified, depend|
00052970  69 6e 67 20 6f 6e 20 77  68 65 74 68 65 72 20 2f  |ing on whether /|
00052980  73 2f 20 69 73 20 31 20  6f 72 20 30 2e 00 00 00  |s/ is 1 or 0....|
00052990  44 41 54 41 fa 00 00 00  49 63 6f 6e 5f 53 65 74  |DATA....Icon_Set|
000529a0  53 6c 69 64 65 72 0a 53  79 6e 74 61 78 3a 09 69  |Slider.Syntax:.i|
000529b0  6e 74 20 49 63 6f 6e 5f  53 65 74 53 6c 69 64 65  |nt Icon_SetSlide|
000529c0  72 20 28 3c 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |r (<window_handl|
000529d0  65 3e 20 68 6e 64 2c 20  3c 69 63 6f 6e 5f 68 61  |e> hnd, <icon_ha|
000529e0  6e 64 6c 65 3e 20 62 61  73 65 2c 20 69 63 6f 6e  |ndle> base, icon|
000529f0  5f 68 61 6e 64 6c 65 20  73 6c 69 64 65 72 2c 20  |_handle slider, |
00052a00  69 6e 74 20 70 6f 73 29  3b 0a 48 65 61 64 65 72  |int pos);.Header|
00052a10  3a 09 3c 44 65 73 6b 4c  69 62 3a 49 63 6f 6e 2e  |:.<DeskLib:Icon.|
00052a20  68 3d 3e 49 63 6f 6e 3e  0a 0a 52 65 74 75 72 6e  |h=>Icon>..Return|
00052a30  73 3a 09 50 6f 73 69 74  69 6f 6e 20 73 65 74 0a  |s:.Position set.|
00052a40  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 73  |.This function s|
00052a50  65 74 73 20 74 68 65 20  73 6c 69 64 65 72 20 74  |ets the slider t|
00052a60  6f 20 72 65 70 72 65 73  65 6e 74 20 74 68 65 20  |o represent the |
00052a70  70 65 72 63 65 6e 74 61  67 65 20 67 69 76 65 6e  |percentage given|
00052a80  20 69 6e 20 2f 70 6f 73  2f 2e 00 00 44 41 54 41  | in /pos/...DATA|
00052a90  4b 01 00 00 49 63 6f 6e  5f 53 65 74 54 65 78 74  |K...Icon_SetText|
00052aa0  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 49 63  |.Syntax:.void Ic|
00052ab0  6f 6e 5f 53 65 74 54 65  78 74 20 28 3c 77 69 6e  |on_SetText (<win|
00052ac0  64 6f 77 5f 68 61 6e 64  6c 65 3e 20 68 6e 64 2c  |dow_handle> hnd,|
00052ad0  20 3c 69 63 6f 6e 5f 68  61 6e 64 6c 65 3e 20 69  | <icon_handle> i|
00052ae0  63 6f 6e 2c 20 63 68 61  72 20 2a 74 29 3b 0a 48  |con, char *t);.H|
00052af0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00052b00  49 63 6f 6e 2e 68 3d 3e  49 63 6f 6e 3e 0a 0a 54  |Icon.h=>Icon>..T|
00052b10  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 6f 70  |his function cop|
00052b20  69 65 73 20 74 68 65 20  73 74 72 69 6e 67 20 70  |ies the string p|
00052b30  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 2f 74 2f  |ointed to by /t/|
00052b40  20 69 6e 74 6f 20 74 68  65 20 69 6e 64 69 72 65  | into the indire|
00052b50  63 74 65 64 20 74 65 78  74 20 6f 66 20 74 68 65  |cted text of the|
00052b60  20 73 70 65 63 69 66 69  65 64 20 69 63 6f 6e 2e  | specified icon.|
00052b70  20 49 66 20 2f 74 2f 20  69 73 20 61 20 6e 75 6c  | If /t/ is a nul|
00052b80  6c 20 70 6f 69 6e 74 65  72 2c 20 69 63 6f 6e 20  |l pointer, icon |
00052b90  74 65 78 74 20 69 73 20  73 65 74 20 74 6f 20 22  |text is set to "|
00052ba0  a0 22 2e 20 49 66 20 74  68 65 20 69 63 6f 6e 20  |.". If the icon |
00052bb0  69 73 20 6e 6f 74 20 74  68 65 20 72 69 67 68 74  |is not the right|
00052bc0  20 74 79 70 65 2c 20 6e  6f 20 65 72 72 6f 72 20  | type, no error |
00052bd0  6f 63 63 75 72 73 2e 00  44 41 54 41 b0 01 00 00  |occurs..DATA....|
00052be0  49 63 6f 6e 5f 53 65 74  54 65 78 74 52 4a 0a 53  |Icon_SetTextRJ.S|
00052bf0  79 6e 74 61 78 3a 09 76  6f 69 64 20 49 63 6f 6e  |yntax:.void Icon|
00052c00  5f 53 65 74 54 65 78 74  52 4a 20 28 3c 77 69 6e  |_SetTextRJ (<win|
00052c10  64 6f 77 5f 68 61 6e 64  6c 65 3e 20 68 6e 64 2c  |dow_handle> hnd,|
00052c20  20 3c 69 63 6f 6e 5f 68  61 6e 64 6c 65 3e 20 69  | <icon_handle> i|
00052c30  63 6f 6e 2c 20 63 68 61  72 20 2a 74 29 3b 0a 48  |con, char *t);.H|
00052c40  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00052c50  49 63 6f 6e 2e 68 3d 3e  49 63 6f 6e 3e 0a 0a 54  |Icon.h=>Icon>..T|
00052c60  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 6f 70  |his function cop|
00052c70  69 65 73 20 74 68 65 20  73 74 72 69 6e 67 20 70  |ies the string p|
00052c80  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 2f 74 2f  |ointed to by /t/|
00052c90  20 69 6e 74 6f 20 74 68  65 20 69 6e 64 69 72 65  | into the indire|
00052ca0  63 74 65 64 20 74 65 78  74 20 6f 66 20 74 68 65  |cted text of the|
00052cb0  20 73 70 65 63 69 66 69  65 64 20 69 63 6f 6e 2e  | specified icon.|
00052cc0  20 49 66 20 2f 74 2f 20  69 73 20 61 20 6e 75 6c  | If /t/ is a nul|
00052cd0  6c 20 70 6f 69 6e 74 65  72 2c 20 69 63 6f 6e 20  |l pointer, icon |
00052ce0  74 65 78 74 20 69 73 20  73 65 74 20 74 6f 20 22  |text is set to "|
00052cf0  22 2e 20 49 66 20 74 68  65 20 69 63 6f 6e 20 69  |". If the icon i|
00052d00  73 20 6e 6f 74 20 74 68  65 20 72 69 67 68 74 20  |s not the right |
00052d10  74 79 70 65 2c 20 6e 6f  20 65 72 72 6f 72 20 6f  |type, no error o|
00052d20  63 63 75 72 73 2e 20 49  66 20 74 68 65 20 74 65  |ccurs. If the te|
00052d30  78 74 20 64 6f 65 73 20  6e 6f 74 20 66 69 74 20  |xt does not fit |
00052d40  69 6e 20 74 68 65 20 69  63 6f 6e 20 62 75 66 66  |in the icon buff|
00052d50  65 72 2c 20 69 74 20 69  73 20 63 68 6f 70 70 65  |er, it is choppe|
00052d60  64 20 6f 66 66 20 61 74  20 74 68 65 20 4c 45 46  |d off at the LEF|
00052d70  54 20 61 6e 64 20 70 72  65 66 69 78 65 64 20 62  |T and prefixed b|
00052d80  79 20 22 2e 2e 2e 22 2e  44 41 54 41 d7 00 00 00  |y "...".DATA....|
00052d90  49 63 6f 6e 5f 53 68 61  64 65 0a 53 79 6e 74 61  |Icon_Shade.Synta|
00052da0  78 3a 09 76 6f 69 64 20  49 63 6f 6e 5f 53 68 61  |x:.void Icon_Sha|
00052db0  64 65 20 28 3c 77 69 6e  64 6f 77 5f 68 61 6e 64  |de (<window_hand|
00052dc0  6c 65 3e 20 68 6e 64 2c  20 3c 69 63 6f 6e 5f 68  |le> hnd, <icon_h|
00052dd0  61 6e 64 6c 65 3e 20 69  63 6f 6e 29 3b 0a 48 65  |andle> icon);.He|
00052de0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 49  |ader:.<DeskLib:I|
00052df0  63 6f 6e 2e 68 3d 3e 49  63 6f 6e 3e 0a 0a 54 68  |con.h=>Icon>..Th|
00052e00  69 73 20 66 75 6e 63 74  69 6f 6e 20 73 68 61 64  |is function shad|
00052e10  65 73 20 74 68 65 20 73  70 65 63 69 66 69 65 64  |es the specified|
00052e20  20 69 63 6f 6e 20 69 66  20 69 74 20 69 73 20 75  | icon if it is u|
00052e30  6e 73 68 61 64 65 64 2e  20 49 6e 20 61 64 64 69  |nshaded. In addi|
00052e40  74 69 6f 6e 20 74 68 65  20 63 61 72 65 74 20 77  |tion the caret w|
00052e50  69 6c 6c 20 62 65 20 72  65 6d 6f 76 65 64 2e 00  |ill be removed..|
00052e60  44 41 54 41 30 01 00 00  49 63 6f 6e 5f 53 68 61  |DATA0...Icon_Sha|
00052e70  64 65 47 72 6f 75 70 0a  53 79 6e 74 61 78 3a 09  |deGroup.Syntax:.|
00052e80  76 6f 69 64 20 49 63 6f  6e 5f 53 68 61 64 65 47  |void Icon_ShadeG|
00052e90  72 6f 75 70 20 28 3c 77  69 6e 64 6f 77 5f 68 61  |roup (<window_ha|
00052ea0  6e 64 6c 65 3e 20 77 69  6e 2c 20 3c 69 63 6f 6e  |ndle> win, <icon|
00052eb0  5f 68 61 6e 64 6c 65 3e  20 69 63 6f 6e 73 5b 5d  |_handle> icons[]|
00052ec0  2c 20 3c 42 4f 4f 4c 3e  20 73 68 61 64 65 29 3b  |, <BOOL> shade);|
00052ed0  0a 48 65 61 64 65 72 3a  09 3c 54 69 6d 73 4c 69  |.Header:.<TimsLi|
00052ee0  62 3a 49 63 6f 6e 2e 68  3d 3e 49 63 6f 6e 5f 54  |b:Icon.h=>Icon_T|
00052ef0  4c 3e 0a 09 3c 44 65 73  6b 4c 69 62 3a 49 63 6f  |L>..<DeskLib:Ico|
00052f00  6e 2e 68 3d 3e 49 63 6f  6e 3e 0a 0a 54 68 69 73  |n.h=>Icon>..This|
00052f10  20 66 75 6e 63 74 69 6f  6e 20 73 68 61 64 65 73  | function shades|
00052f20  20 6f 72 20 75 6e 73 68  61 64 65 73 20 28 64 65  | or unshades (de|
00052f30  70 65 6e 64 69 6e 67 20  6f 6e 20 7b 2f 7d 73 68  |pending on {/}sh|
00052f40  61 64 65 7b 2f 7d 29 20  74 68 65 20 69 63 6f 6e  |ade{/}) the icon|
00052f50  73 20 73 70 65 63 69 66  69 65 64 20 69 6e 20 74  |s specified in t|
00052f60  68 65 20 61 72 72 61 79  20 2f 69 63 6f 6e 73 2f  |he array /icons/|
00052f70  2e 20 54 68 65 20 61 72  72 61 79 20 69 73 20 74  |. The array is t|
00052f80  65 72 6d 69 6e 61 74 65  64 20 62 79 20 2d 31 2e  |erminated by -1.|
00052f90  44 41 54 41 82 00 00 00  53 6c 69 64 65 72 20 4f  |DATA....Slider O|
00052fa0  70 65 72 61 74 69 6f 6e  73 20 46 75 6e 63 74 69  |perations Functi|
00052fb0  6f 6e 73 0a 23 54 61 62  6c 65 20 32 20 32 31 0a  |ons.#Table 2 21.|
00052fc0  3c 49 63 6f 6e 5f 44 72  61 67 53 6c 69 64 65 72  |<Icon_DragSlider|
00052fd0  3e 0a 3c 49 63 6f 6e 5f  52 65 61 64 53 6c 69 64  |>.<Icon_ReadSlid|
00052fe0  65 72 3e 0a 3c 49 63 6f  6e 5f 53 65 74 53 6c 69  |er>.<Icon_SetSli|
00052ff0  64 65 72 3e 0a 3c 49 63  6f 6e 5f 55 70 64 61 74  |der>.<Icon_Updat|
00053000  65 53 6c 69 64 65 72 3e  0a 23 45 6e 64 54 61 62  |eSlider>.#EndTab|
00053010  6c 65 00 00 44 41 54 41  4c 01 00 00 49 63 6f 6e  |le..DATAL...Icon|
00053020  5f 53 74 61 72 74 44 72  61 67 0a 53 79 6e 74 61  |_StartDrag.Synta|
00053030  78 3a 09 76 6f 69 64 20  49 63 6f 6e 5f 53 74 61  |x:.void Icon_Sta|
00053040  72 74 44 72 61 67 20 28  3c 77 69 6e 64 6f 77 5f  |rtDrag (<window_|
00053050  68 61 6e 64 6c 65 3e 20  68 6e 64 2c 20 3c 69 63  |handle> hnd, <ic|
00053060  6f 6e 5f 68 61 6e 64 6c  65 3e 20 69 63 6f 6e 29  |on_handle> icon)|
00053070  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
00053080  69 62 3a 49 63 6f 6e 2e  68 3d 3e 49 63 6f 6e 3e  |ib:Icon.h=>Icon>|
00053090  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000530a0  73 74 61 72 74 73 20 61  20 64 72 61 67 20 6f 70  |starts a drag op|
000530b0  65 72 61 74 69 6f 6e 20  6f 66 20 74 68 65 20 67  |eration of the g|
000530c0  69 76 65 6e 20 69 63 6f  6e 2e 20 49 74 20 63 61  |iven icon. It ca|
000530d0  6c 63 75 6c 61 74 65 73  20 74 68 65 20 76 61 6c  |lculates the val|
000530e0  75 65 73 20 6e 65 65 64  65 64 20 61 6e 64 20 63  |ues needed and c|
000530f0  61 6c 6c 73 20 74 68 65  20 53 57 49 20 3c 57 69  |alls the SWI <Wi|
00053100  6d 70 5f 44 72 61 67 42  6f 78 3d 3e 53 57 49 3a  |mp_DragBox=>SWI:|
00053110  57 69 6d 70 5f 44 72 61  67 42 6f 78 3e 2e 20 49  |Wimp_DragBox>. I|
00053120  74 20 64 6f 65 73 20 6e  6f 74 20 75 73 65 20 44  |t does not use D|
00053130  72 61 67 41 53 70 72 69  74 65 2c 20 66 6f 72 20  |ragASprite, for |
00053140  74 68 61 74 20 75 73 65  20 3c 44 72 61 67 41 53  |that use <DragAS|
00053150  70 72 69 74 65 5f 44 72  61 67 49 63 6f 6e 3e 2e  |prite_DragIcon>.|
00053160  44 41 54 41 08 01 00 00  49 63 6f 6e 5f 53 74 61  |DATA....Icon_Sta|
00053170  72 74 53 6f 6c 69 64 44  72 61 67 0a 53 79 6e 74  |rtSolidDrag.Synt|
00053180  61 78 3a 09 6f 73 5f 65  72 72 6f 72 20 2a 49 63  |ax:.os_error *Ic|
00053190  6f 6e 5f 53 74 61 72 74  53 6f 6c 69 64 44 72 61  |on_StartSolidDra|
000531a0  67 20 28 77 69 6e 64 6f  77 5f 68 61 6e 64 6c 65  |g (window_handle|
000531b0  20 68 6e 64 2c 20 69 63  6f 6e 5f 68 61 6e 64 6c  | hnd, icon_handl|
000531c0  65 20 69 63 6f 6e 29 3b  0a 48 65 61 64 65 72 3a  |e icon);.Header:|
000531d0  09 3c 44 65 73 6b 4c 69  62 3a 49 63 6f 6e 2e 68  |.<DeskLib:Icon.h|
000531e0  3d 3e 49 63 6f 6e 3e 0a  0a 52 65 74 75 72 6e 73  |=>Icon>..Returns|
000531f0  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
00053200  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
00053210  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 69 73 20  | none...This is |
00053220  73 69 6d 70 6c 79 20 61  20 3c 23 64 65 66 69 6e  |simply a <#defin|
00053230  65 3d 3e 64 65 66 69 6e  65 3e 64 20 61 6c 74 65  |e=>define>d alte|
00053240  72 6e 61 74 69 76 65 20  6e 61 6d 65 20 66 6f 72  |rnative name for|
00053250  20 3c 44 72 61 67 41 53  70 72 69 74 65 5f 44 72  | <DragASprite_Dr|
00053260  61 67 49 63 6f 6e 3e 2e  44 41 54 41 b7 01 00 00  |agIcon>.DATA....|
00053270  52 65 61 64 69 6e 67 2f  57 72 69 74 69 6e 67 20  |Reading/Writing |
00053280  49 63 6f 6e 20 53 74 61  74 65 20 46 75 6e 63 74  |Icon State Funct|
00053290  69 6f 6e 73 0a 23 69 6e  64 65 6e 74 20 31 0a 23  |ions.#indent 1.#|
000532a0  54 61 62 6c 65 20 63 6f  6c 75 6d 6e 73 20 32 0a  |Table columns 2.|
000532b0  3c 49 63 6f 6e 5f 44 65  73 65 6c 65 63 74 3e 0a  |<Icon_Deselect>.|
000532c0  3c 49 63 6f 6e 5f 47 65  74 53 65 6c 65 63 74 3e  |<Icon_GetSelect>|
000532d0  0a 3c 49 63 6f 6e 5f 47  65 74 53 68 61 64 65 3e  |.<Icon_GetShade>|
000532e0  0a 3c 49 63 6f 6e 5f 53  65 6c 65 63 74 3e 0a 3c  |.<Icon_Select>.<|
000532f0  49 63 6f 6e 5f 53 65 74  52 61 64 69 6f 73 3e 0a  |Icon_SetRadios>.|
00053300  3c 49 63 6f 6e 5f 53 65  74 53 65 6c 65 63 74 3e  |<Icon_SetSelect>|
00053310  0a 3c 49 63 6f 6e 5f 53  65 74 53 68 61 64 65 3e  |.<Icon_SetShade>|
00053320  0a 3c 49 63 6f 6e 5f 53  68 61 64 65 3e 0a 3c 49  |.<Icon_Shade>.<I|
00053330  63 6f 6e 5f 55 6e 73 68  61 64 65 3e 0a 3c 49 63  |con_Unshade>.<Ic|
00053340  6f 6e 5f 57 68 69 63 68  52 61 64 69 6f 3e 0a 3c  |on_WhichRadio>.<|
00053350  49 63 6f 6e 5f 57 68 69  63 68 52 61 64 69 6f 49  |Icon_WhichRadioI|
00053360  6e 45 73 67 3e 0a 3c 49  63 6f 6e 5f 53 65 74 46  |nEsg>.<Icon_SetF|
00053370  6f 72 65 43 6f 6c 6f 75  72 3e 0a 3c 49 63 6f 6e  |oreColour>.<Icon|
00053380  5f 53 65 74 42 61 63 6b  43 6f 6c 6f 75 72 3e 0a  |_SetBackColour>.|
00053390  3c 49 63 6f 6e 5f 53 65  74 46 67 43 6f 6c 3e 0a  |<Icon_SetFgCol>.|
000533a0  3c 49 63 6f 6e 5f 53 65  74 42 67 43 6f 6c 3e 0a  |<Icon_SetBgCol>.|
000533b0  3c 49 63 6f 6e 5f 53 68  61 64 65 47 72 6f 75 70  |<Icon_ShadeGroup|
000533c0  3e 0a 3c 49 63 6f 6e 5f  53 65 6c 65 63 74 47 72  |>.<Icon_SelectGr|
000533d0  6f 75 70 3e 0a 3c 49 63  6f 6e 5f 47 65 74 46 67  |oup>.<Icon_GetFg|
000533e0  43 6f 6c 3e 0a 3c 49 63  6f 6e 5f 47 65 74 42 67  |Col>.<Icon_GetBg|
000533f0  43 6f 6c 3e 0a 3c 49 63  6f 6e 5f 53 63 72 65 65  |Col>.<Icon_Scree|
00053400  6e 50 6f 73 3e 0a 3c 49  63 6f 6e 5f 53 65 74 46  |nPos>.<Icon_SetF|
00053410  6c 61 67 73 3e 0a 23 45  6e 64 54 61 62 6c 65 00  |lags>.#EndTable.|
00053420  44 41 54 41 81 01 00 00  54 69 6d 73 4c 69 62 3a  |DATA....TimsLib:|
00053430  49 63 6f 6e 2e 68 0a 54  68 69 73 20 68 65 61 64  |Icon.h.This head|
00053440  65 72 20 69 73 20 61 6e  20 65 78 74 65 6e 73 69  |er is an extensi|
00053450  6f 6e 20 74 6f 20 3c 44  65 73 6b 4c 69 62 3a 49  |on to <DeskLib:I|
00053460  63 6f 6e 2e 68 3d 3e 49  63 6f 6e 3e 2e 0a 0a 46  |con.h=>Icon>...F|
00053470  75 6e 63 74 69 6f 6e 73  3a 0a 0a 23 69 6e 64 65  |unctions:..#inde|
00053480  6e 74 20 34 0a 23 54 61  62 6c 65 20 34 20 32 30  |nt 4.#Table 4 20|
00053490  0a 3c 49 63 6f 6e 5f 44  69 73 70 6f 73 65 44 61  |.<Icon_DisposeDa|
000534a0  74 61 3e 0a 3c 49 63 6f  6e 5f 53 65 74 46 6c 61  |ta>.<Icon_SetFla|
000534b0  67 73 3e 0a 3c 49 63 6f  6e 5f 53 68 61 64 65 47  |gs>.<Icon_ShadeG|
000534c0  72 6f 75 70 3e 0a 3c 49  63 6f 6e 5f 53 65 6c 65  |roup>.<Icon_Sele|
000534d0  63 74 47 72 6f 75 70 3e  0a 3c 49 63 6f 6e 5f 53  |ctGroup>.<Icon_S|
000534e0  65 74 46 67 43 6f 6c 3e  0a 3c 49 63 6f 6e 5f 53  |etFgCol>.<Icon_S|
000534f0  65 74 42 67 43 6f 6c 3e  0a 3c 49 63 6f 6e 5f 47  |etBgCol>.<Icon_G|
00053500  65 74 46 67 43 6f 6c 3e  0a 3c 49 63 6f 6e 5f 47  |etFgCol>.<Icon_G|
00053510  65 74 54 65 78 74 50 74  72 3e 0a 23 45 6e 64 54  |etTextPtr>.#EndT|
00053520  61 62 6c 65 0a 23 69 6e  64 65 6e 74 20 30 0a 0a  |able.#indent 0..|
00053530  4d 61 63 72 6f 73 3a 0a  0a 23 69 6e 64 65 6e 74  |Macros:..#indent|
00053540  20 34 0a 23 54 61 62 6c  65 20 33 20 32 30 0a 3c  | 4.#Table 3 20.<|
00053550  4e 4f 5f 49 43 4f 4e 5f  44 41 54 41 3e 0a 3c 54  |NO_ICON_DATA>.<T|
00053560  58 54 5f 4f 4e 4c 59 3e  0a 3c 53 50 52 5f 4f 4e  |XT_ONLY>.<SPR_ON|
00053570  4c 59 3e 0a 3c 54 58 54  5f 41 4e 44 5f 53 50 52  |LY>.<TXT_AND_SPR|
00053580  3e 0a 3c 49 43 4f 4e 5f  54 59 50 45 3e 0a 23 45  |>.<ICON_TYPE>.#E|
00053590  6e 64 54 61 62 6c 65 0a  23 69 6e 64 65 6e 74 20  |ndTable.#indent |
000535a0  30 00 00 00 44 41 54 41  2e 01 00 00 49 43 4f 4e  |0...DATA....ICON|
000535b0  5f 54 59 50 45 0a 53 79  6e 74 61 78 3a 09 69 6e  |_TYPE.Syntax:.in|
000535c0  74 20 49 43 4f 4e 5f 54  59 50 45 20 28 69 6e 74  |t ICON_TYPE (int|
000535d0  20 66 6c 61 67 73 29 3b  0a 48 65 61 64 65 72 3a  | flags);.Header:|
000535e0  09 3c 54 69 6d 73 4c 69  62 3a 49 63 6f 6e 2e 68  |.<TimsLib:Icon.h|
000535f0  3d 3e 49 63 6f 6e 5f 54  4c 3e 0a 0a 52 65 74 75  |=>Icon_TL>..Retu|
00053600  72 6e 73 3a 09 49 63 6f  6e 20 74 79 70 65 2e 0a  |rns:.Icon type..|
00053610  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 2d 6c  |.This function-l|
00053620  69 6b 65 20 6d 61 63 72  6f 20 65 78 74 72 61 63  |ike macro extrac|
00053630  74 73 20 74 68 65 20 69  63 6f 6e 20 74 79 70 65  |ts the icon type|
00053640  20 66 72 6f 6d 20 74 68  65 20 69 63 6f 6e 20 66  | from the icon f|
00053650  6c 61 67 73 20 61 6e 64  20 72 65 74 75 72 6e 73  |lags and returns|
00053660  20 61 20 76 61 6c 75 65  20 30 2d 33 20 28 3c 4e  | a value 0-3 (<N|
00053670  4f 5f 49 43 4f 4e 5f 44  41 54 41 3e 2c 20 3c 54  |O_ICON_DATA>, <T|
00053680  58 54 5f 4f 4e 4c 59 3e  2c 20 3c 53 50 52 5f 4f  |XT_ONLY>, <SPR_O|
00053690  4e 4c 59 3e 2c 20 6f 72  20 3c 54 58 54 5f 41 4e  |NLY>, or <TXT_AN|
000536a0  44 5f 53 50 52 3e 29 2e  20 49 74 20 69 73 20 64  |D_SPR>). It is d|
000536b0  65 66 69 6e 65 64 20 61  73 20 7b 66 43 6f 64 65  |efined as {fCode|
000536c0  7d 28 28 66 6c 61 67 73  29 20 26 20 33 29 7b 66  |}((flags) & 3){f|
000536d0  7d 2e 00 00 44 41 54 41  b4 00 00 00 49 63 6f 6e  |}...DATA....Icon|
000536e0  5f 55 6e 73 68 61 64 65  0a 53 79 6e 74 61 78 3a  |_Unshade.Syntax:|
000536f0  09 76 6f 69 64 20 49 63  6f 6e 5f 55 6e 73 68 61  |.void Icon_Unsha|
00053700  64 65 20 28 3c 77 69 6e  64 6f 77 5f 68 61 6e 64  |de (<window_hand|
00053710  6c 65 3e 20 68 6e 64 2c  20 3c 69 63 6f 6e 5f 68  |le> hnd, <icon_h|
00053720  61 6e 64 6c 65 3e 20 69  63 6f 6e 29 3b 0a 48 65  |andle> icon);.He|
00053730  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 49  |ader:.<DeskLib:I|
00053740  63 6f 6e 2e 68 3d 3e 49  63 6f 6e 3e 0a 0a 54 68  |con.h=>Icon>..Th|
00053750  69 73 20 66 75 6e 63 74  69 6f 6e 20 75 6e 73 68  |is function unsh|
00053760  61 64 65 73 20 74 68 65  20 73 70 65 63 69 66 69  |ades the specifi|
00053770  65 64 20 69 63 6f 6e 20  69 66 20 69 74 20 69 73  |ed icon if it is|
00053780  20 73 68 61 64 65 64 2e  44 41 54 41 92 01 00 00  | shaded.DATA....|
00053790  49 63 6f 6e 5f 55 70 64  61 74 65 53 6c 69 64 65  |Icon_UpdateSlide|
000537a0  72 0a 53 79 6e 74 61 78  3a 09 69 6e 74 20 49 63  |r.Syntax:.int Ic|
000537b0  6f 6e 5f 55 70 64 61 74  65 53 6c 69 64 65 72 20  |on_UpdateSlider |
000537c0  28 3c 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 3e  |(<window_handle>|
000537d0  20 68 6e 64 2c 20 3c 69  63 6f 6e 5f 68 61 6e 64  | hnd, <icon_hand|
000537e0  6c 65 3e 20 62 61 73 65  2c 20 69 63 6f 6e 5f 68  |le> base, icon_h|
000537f0  61 6e 64 6c 65 20 73 6c  69 64 65 72 2c 20 69 6e  |andle slider, in|
00053800  74 20 70 6f 73 29 3b 0a  48 65 61 64 65 72 3a 09  |t pos);.Header:.|
00053810  3c 44 65 73 6b 4c 69 62  3a 49 63 6f 6e 2e 68 3d  |<DeskLib:Icon.h=|
00053820  3e 49 63 6f 6e 3e 0a 0a  52 65 74 75 72 6e 73 3a  |>Icon>..Returns:|
00053830  09 4e 65 77 20 73 6c 69  64 65 72 20 70 6f 73 69  |.New slider posi|
00053840  74 69 6f 6e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |tion..This funct|
00053850  69 6f 6e 20 73 68 6f 75  6c 64 20 62 65 20 63 61  |ion should be ca|
00053860  6c 6c 65 64 20 6f 6e 20  4e 55 4c 4c 20 65 76 65  |lled on NULL eve|
00053870  6e 74 73 20 77 68 69 6c  65 20 74 68 65 20 73 6c  |nts while the sl|
00053880  69 64 65 72 20 69 73 20  62 65 69 6e 67 20 64 72  |ider is being dr|
00053890  61 67 67 65 64 2e 20 49  74 20 63 61 6c 63 75 6c  |agged. It calcul|
000538a0  61 74 65 73 20 61 20 6e  65 77 20 73 6c 69 64 65  |ates a new slide|
000538b0  72 20 70 65 72 63 65 6e  74 61 67 65 20 66 72 6f  |r percentage fro|
000538c0  6d 20 74 68 65 20 6d 6f  75 73 65 20 70 6f 73 69  |m the mouse posi|
000538d0  74 69 6f 6e 20 61 6e 64  2c 20 69 66 20 64 69 66  |tion and, if dif|
000538e0  66 65 72 65 6e 74 20 66  72 6f 6d 20 2f 70 6f 73  |ferent from /pos|
000538f0  2f 2c 20 61 6c 74 65 72  73 20 74 68 65 20 69 63  |/, alters the ic|
00053900  6f 6e 20 74 6f 20 73 68  6f 77 20 74 68 65 20 6e  |on to show the n|
00053910  65 77 20 6c 65 6e 67 74  68 2e 00 00 44 41 54 41  |ew length...DATA|
00053920  db 01 00 00 49 63 6f 6e  5f 57 68 69 63 68 52 61  |....Icon_WhichRa|
00053930  64 69 6f 0a 53 79 6e 74  61 78 3a 09 69 6e 74 20  |dio.Syntax:.int |
00053940  49 63 6f 6e 5f 57 68 69  63 68 52 61 64 69 6f 20  |Icon_WhichRadio |
00053950  28 3c 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 3e  |(<window_handle>|
00053960  20 68 6e 64 2c 20 3c 69  63 6f 6e 5f 68 61 6e 64  | hnd, <icon_hand|
00053970  6c 65 3e 20 66 69 72 73  74 2c 20 69 63 6f 6e 5f  |le> first, icon_|
00053980  68 61 6e 64 6c 65 20 6c  61 73 74 29 3b 0a 48 65  |handle last);.He|
00053990  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 49  |ader:.<DeskLib:I|
000539a0  63 6f 6e 2e 68 3d 3e 49  63 6f 6e 3e 0a 0a 52 65  |con.h=>Icon>..Re|
000539b0  74 75 72 6e 73 3a 09 49  63 6f 6e 20 6e 75 6d 62  |turns:.Icon numb|
000539c0  65 72 20 6f 66 20 73 65  6c 65 63 74 65 64 20 69  |er of selected i|
000539d0  63 6f 6e 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |con...This funct|
000539e0  69 6f 6e 20 63 68 65 63  6b 73 20 74 68 72 6f 75  |ion checks throu|
000539f0  67 68 20 61 20 67 72 6f  75 70 20 6f 66 20 69 63  |gh a group of ic|
00053a00  6f 6e 20 66 72 6f 6d 20  2f 66 69 72 73 74 2f 20  |on from /first/ |
00053a10  74 6f 20 2f 6c 61 73 74  2f 20 61 6e 64 20 72 65  |to /last/ and re|
00053a20  74 75 72 6e 73 20 74 68  65 20 69 63 6f 6e 20 6e  |turns the icon n|
00053a30  75 6d 62 65 72 20 6f 66  20 74 68 65 20 66 69 72  |umber of the fir|
00053a40  73 74 20 69 63 6f 6e 20  69 74 20 66 69 6e 64 73  |st icon it finds|
00053a50  20 77 68 69 63 68 20 69  73 20 73 65 6c 65 63 74  | which is select|
00053a60  65 64 2e 20 49 66 20 6e  6f 6e 65 20 61 72 65 20  |ed. If none are |
00053a70  73 65 6c 65 63 74 65 64  2c 20 69 74 20 72 65 74  |selected, it ret|
00053a80  75 72 6e 73 20 74 68 65  20 76 61 6c 75 65 20 6f  |urns the value o|
00053a90  66 20 2f 6c 61 73 74 2f  2e 0a 0a 49 74 20 69 73  |f /last/...It is|
00053aa0  20 69 6e 74 65 6e 64 65  64 20 74 68 61 74 20 74  | intended that t|
00053ab0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 62 65 20  |his function be |
00053ac0  75 73 65 64 20 74 6f 20  66 69 6e 64 20 77 68 69  |used to find whi|
00053ad0  63 68 20 6f 75 74 20 6f  66 20 61 20 72 61 6e 67  |ch out of a rang|
00053ae0  65 20 6f 66 20 6f 70 74  69 6f 6e 73 20 69 73 20  |e of options is |
00053af0  63 68 6f 73 65 6e 2e 00  44 41 54 41 39 01 00 00  |chosen..DATA9...|
00053b00  49 63 6f 6e 5f 57 68 69  63 68 52 61 64 69 6f 49  |Icon_WhichRadioI|
00053b10  6e 45 73 67 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |nEsg.Syntax:.int|
00053b20  20 49 63 6f 6e 5f 57 68  69 63 68 52 61 64 69 6f  | Icon_WhichRadio|
00053b30  49 6e 45 73 67 20 28 3c  77 69 6e 64 6f 77 5f 68  |InEsg (<window_h|
00053b40  61 6e 64 6c 65 3e 20 77  69 6e 2c 20 69 6e 74 20  |andle> win, int |
00053b50  65 73 67 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |esg);.Header:.<D|
00053b60  65 73 6b 4c 69 62 3a 49  63 6f 6e 2e 68 3d 3e 49  |eskLib:Icon.h=>I|
00053b70  63 6f 6e 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 49  |con>..Returns:.I|
00053b80  63 6f 6e 20 6e 75 6d 62  65 72 20 6f 66 20 73 65  |con number of se|
00053b90  6c 65 63 74 65 64 20 69  63 6f 6e 2e 0a 0a 54 68  |lected icon...Th|
00053ba0  69 73 20 66 75 6e 63 74  69 6f 6e 20 63 68 65 63  |is function chec|
00053bb0  6b 73 20 74 68 72 6f 75  67 68 20 61 6c 6c 20 74  |ks through all t|
00053bc0  68 65 20 69 63 6f 6e 73  20 69 6e 20 77 69 6e 64  |he icons in wind|
00053bd0  6f 77 20 2f 77 69 6e 2f  20 77 69 74 68 20 45 53  |ow /win/ with ES|
00053be0  47 20 2f 65 73 67 2f 20  61 6e 64 20 72 65 74 75  |G /esg/ and retu|
00053bf0  72 6e 73 20 74 68 65 20  69 63 6f 6e 20 6e 75 6d  |rns the icon num|
00053c00  62 65 72 20 6f 66 20 74  68 65 20 66 69 72 73 74  |ber of the first|
00053c10  20 69 63 6f 6e 20 69 74  20 66 69 6e 64 73 20 77  | icon it finds w|
00053c20  68 69 63 68 20 69 73 20  73 65 6c 65 63 74 65 64  |hich is selected|
00053c30  2e 00 00 00 44 41 54 41  2a 02 00 00 69 63 6f 6e  |....DATA*...icon|
00053c40  5f 69 6e 63 64 65 63 62  6c 6f 63 6b 0a 54 68 69  |_incdecblock.Thi|
00053c50  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
00053c60  64 20 69 6e 20 3c 44 65  73 6b 4c 69 62 3a 49 63  |d in <DeskLib:Ic|
00053c70  6f 6e 2e 68 3d 3e 49 63  6f 6e 3e 20 61 73 20 74  |on.h=>Icon> as t|
00053c80  68 65 20 66 6f 6c 6c 6f  77 69 6e 67 20 73 74 72  |he following str|
00053c90  75 63 74 75 72 65 2c 20  75 73 65 64 20 66 6f 72  |ucture, used for|
00053ca0  20 68 6f 6c 64 69 6e 67  20 64 61 74 61 20 66 6f  | holding data fo|
00053cb0  72 20 49 6e 63 44 65 63  20 68 61 6e 64 6c 65 72  |r IncDec handler|
00053cc0  73 3a 0a 7b 77 72 61 70  20 6f 66 66 7d 0a 5c 7b  |s:.{wrap off}.\{|
00053cd0  0a 20 20 20 20 3c 77 69  6e 64 6f 77 5f 68 61 6e  |.    <window_han|
00053ce0  64 6c 65 3e 09 77 69 6e  64 6f 77 3b 09 09 2f 2a  |dle>.window;../*|
00053cf0  20 77 69 6e 64 6f 77 20  68 6f 6c 64 69 6e 67 20  | window holding |
00053d00  69 63 6f 6e 73 20 2a 2f  0a 20 20 20 20 3c 69 63  |icons */.    <ic|
00053d10  6f 6e 5f 68 61 6e 64 6c  65 3e 09 74 65 78 74 69  |on_handle>.texti|
00053d20  63 6f 6e 3b 09 2f 2a 20  74 65 78 74 20 69 63 6f  |con;./* text ico|
00053d30  6e 20 68 6f 6c 64 69 6e  67 20 69 6e 74 65 67 65  |n holding intege|
00053d40  72 20 2a 2f 0a 20 20 20  20 3c 69 63 6f 6e 5f 68  |r */.    <icon_h|
00053d50  61 6e 64 6c 65 3e 09 69  6e 63 72 65 6d 65 6e 74  |andle>.increment|
00053d60  69 63 6f 6e 3b 09 2f 2a  20 69 6e 63 72 65 6d 65  |icon;./* increme|
00053d70  6e 74 20 69 63 6f 6e 20  68 61 6e 64 6c 65 20 2a  |nt icon handle *|
00053d80  2f 0a 20 20 20 20 3c 69  63 6f 6e 5f 68 61 6e 64  |/.    <icon_hand|
00053d90  6c 65 3e 09 64 65 63 72  65 6d 65 6e 74 69 63 6f  |le>.decrementico|
00053da0  6e 3b 09 2f 2a 20 64 65  63 72 65 6d 65 6e 74 20  |n;./* decrement |
00053db0  69 63 6f 6e 20 68 61 6e  64 6c 65 20 2a 2f 0a 20  |icon handle */. |
00053dc0  20 20 20 3c 42 4f 4f 4c  3e 09 09 6c 6f 6f 70 3b  |   <BOOL>..loop;|
00053dd0  09 09 2f 2a 20 6c 6f 6f  70 20 62 65 79 6f 6e 64  |../* loop beyond|
00053de0  20 6c 69 6d 69 74 73 20  2a 2f 0a 20 20 20 20 75  | limits */.    u|
00053df0  6e 73 69 67 6e 65 64 20  69 6e 74 09 73 74 65 70  |nsigned int.step|
00053e00  3b 09 09 2f 2a 20 73 74  65 70 20 74 6f 20 69 6e  |;../* step to in|
00053e10  63 2f 64 65 63 20 2a 2f  0a 20 20 20 20 69 6e 74  |c/dec */.    int|
00053e20  09 09 09 6d 69 6e 3b 09  09 2f 2a 20 6c 6f 77 65  |...min;../* lowe|
00053e30  72 20 6c 69 6d 69 74 20  2a 2f 0a 20 20 20 20 69  |r limit */.    i|
00053e40  6e 74 09 09 09 6d 61 78  3b 09 09 2f 2a 20 75 70  |nt...max;../* up|
00053e50  70 65 72 20 6c 69 6d 69  74 20 2a 2f 0a 7d 00 00  |per limit */.}..|
00053e60  44 41 54 41 82 02 00 00  49 63 6f 6e 5f 49 6e 69  |DATA....Icon_Ini|
00053e70  74 49 6e 63 44 65 63 48  61 6e 64 6c 65 72 0a 53  |tIncDecHandler.S|
00053e80  79 6e 74 61 78 3a 09 3c  69 63 6f 6e 5f 69 6e 63  |yntax:.<icon_inc|
00053e90  64 65 63 62 6c 6f 63 6b  3e 20 2a 49 63 6f 6e 5f  |decblock> *Icon_|
00053ea0  49 6e 69 74 49 6e 63 44  65 63 48 61 6e 64 6c 65  |InitIncDecHandle|
00053eb0  72 28 3c 77 69 6e 64 6f  77 5f 68 61 6e 64 6c 65  |r(<window_handle|
00053ec0  3e 20 77 69 6e 64 6f 77  2c 20 3c 69 63 6f 6e 5f  |> window, <icon_|
00053ed0  68 61 6e 64 6c 65 3e 20  74 65 78 74 69 63 6f 6e  |handle> texticon|
00053ee0  2c 20 69 63 6f 6e 5f 68  61 6e 64 6c 65 20 69 6e  |, icon_handle in|
00053ef0  63 72 65 6d 65 6e 74 69  63 6f 6e 2c 20 69 63 6f  |crementicon, ico|
00053f00  6e 5f 68 61 6e 64 6c 65  20 64 65 63 72 65 6d 65  |n_handle decreme|
00053f10  6e 74 69 63 6f 6e 2c 20  3c 42 4f 4f 4c 3e 20 6c  |nticon, <BOOL> l|
00053f20  6f 6f 70 2c 20 75 6e 73  69 67 6e 65 64 20 69 6e  |oop, unsigned in|
00053f30  74 20 73 74 65 70 2c 20  69 6e 74 20 6d 69 6e 2c  |t step, int min,|
00053f40  20 69 6e 74 20 6d 61 78  2c 69 6e 74 20 73 74 61  | int max,int sta|
00053f50  72 74 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |rt);.Header:.<De|
00053f60  73 6b 4c 69 62 3a 49 63  6f 6e 2e 68 3d 3e 49 63  |skLib:Icon.h=>Ic|
00053f70  6f 6e 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 52 65  |on>..Returns:.Re|
00053f80  73 75 6c 74 20 6f 66 20  74 68 65 20 63 6c 61 69  |sult of the clai|
00053f90  6d 73 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |ms..This functio|
00053fa0  6e 20 63 6c 61 69 6d 73  20 68 61 6e 64 6c 65 72  |n claims handler|
00053fb0  20 66 6f 72 20 63 6c 69  63 6b 73 20 6f 6e 20 74  | for clicks on t|
00053fc0  68 65 20 69 63 6f 6e 73  20 2f 69 6e 63 72 65 6d  |he icons /increm|
00053fd0  65 6e 74 69 63 6f 6e 2f  20 61 6e 64 20 2f 64 65  |enticon/ and /de|
00053fe0  63 72 65 6d 65 6e 74 69  63 6f 6e 2f 2c 20 77 68  |crementicon/, wh|
00053ff0  69 63 68 20 61 66 66 65  63 74 20 74 68 65 20 69  |ich affect the i|
00054000  63 6f 6e 20 2f 74 65 78  74 69 63 6f 6e 2f 2c 20  |con /texticon/, |
00054010  61 6c 74 65 72 69 6e 67  20 74 68 65 20 69 6e 74  |altering the int|
00054020  65 67 65 72 20 6e 75 6d  62 65 72 20 69 6e 20 69  |eger number in i|
00054030  74 20 69 6e 20 74 68 65  20 72 61 6e 67 65 20 2f  |t in the range /|
00054040  6d 69 6e 2f 20 74 6f 20  2f 6d 61 78 2f 2e 20 49  |min/ to /max/. I|
00054050  66 20 2f 6c 6f 6f 70 2f  20 69 73 20 3c 54 52 55  |f /loop/ is <TRU|
00054060  45 3e 20 74 68 65 6e 20  74 68 65 20 76 61 6c 75  |E> then the valu|
00054070  65 20 6c 6f 6f 70 73 20  61 72 6f 75 6e 64 20 70  |e loops around p|
00054080  61 73 74 20 74 68 65 20  6c 69 6d 69 74 73 2e 20  |ast the limits. |
00054090  2f 73 74 65 70 2f 20 69  73 20 74 68 65 20 63 68  |/step/ is the ch|
000540a0  61 6e 67 65 20 66 6f 72  20 65 61 63 68 20 63 6c  |ange for each cl|
000540b0  69 63 6b 20 6f 6e 20 74  68 65 20 69 63 6f 6e 73  |ick on the icons|
000540c0  20 61 6e 64 20 2f 73 74  61 72 74 2f 20 69 73 20  | and /start/ is |
000540d0  74 68 65 20 69 6e 69 74  69 61 6c 20 76 61 6c 75  |the initial valu|
000540e0  65 2e 00 00 44 41 54 41  4b 01 00 00 49 63 6f 6e  |e...DATAK...Icon|
000540f0  5f 52 65 6c 65 61 73 65  49 6e 63 44 65 63 48 61  |_ReleaseIncDecHa|
00054100  6e 64 6c 65 72 0a 53 79  6e 74 61 78 3a 09 3c 42  |ndler.Syntax:.<B|
00054110  4f 4f 4c 3e 20 49 63 6f  6e 5f 52 65 6c 65 61 73  |OOL> Icon_Releas|
00054120  65 49 6e 63 44 65 63 48  61 6e 64 6c 65 72 20 28  |eIncDecHandler (|
00054130  3c 69 63 6f 6e 5f 69 6e  63 64 65 63 62 6c 6f 63  |<icon_incdecbloc|
00054140  6b 3e 20 2a 69 6e 63 64  65 63 62 6c 6f 63 6b 29  |k> *incdecblock)|
00054150  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
00054160  69 62 3a 49 63 6f 6e 2e  68 3d 3e 49 63 6f 6e 3e  |ib:Icon.h=>Icon>|
00054170  0a 0a 52 65 74 75 72 6e  73 3a 09 3c 54 52 55 45  |..Returns:.<TRUE|
00054180  3e 20 69 66 20 73 75 63  63 65 73 73 66 75 6c 0a  |> if successful.|
00054190  0a 47 69 76 65 6e 20 74  68 65 20 62 6c 6f 63 6b  |.Given the block|
000541a0  20 70 72 65 76 69 6f 75  73 6c 79 20 72 65 74 75  | previously retu|
000541b0  72 6e 65 64 20 62 79 20  3c 49 63 6f 6e 5f 49 6e  |rned by <Icon_In|
000541c0  69 74 49 6e 63 44 65 63  48 61 6e 64 6c 65 72 3e  |itIncDecHandler>|
000541d0  2c 20 74 68 69 73 20 72  65 6c 65 61 73 65 73 20  |, this releases |
000541e0  74 68 65 20 68 61 6e 64  6c 65 72 73 20 69 6e 73  |the handlers ins|
000541f0  74 61 6c 6c 65 64 20 62  79 20 74 68 61 74 20 66  |talled by that f|
00054200  75 6e 63 74 69 6f 6e 20  61 6e 64 20 66 72 65 65  |unction and free|
00054210  73 20 74 68 65 20 6d 65  6d 6f 72 79 20 75 73 65  |s the memory use|
00054220  64 20 62 79 20 74 68 65  20 62 6c 6f 63 6b 2e 00  |d by the block..|
00054230  44 41 54 41 89 01 00 00  49 63 6f 6e 5f 41 6c 74  |DATA....Icon_Alt|
00054240  65 72 56 61 6c 69 64 61  74 69 6f 6e 0a 53 79 6e  |erValidation.Syn|
00054250  74 61 78 3a 09 76 6f 69  64 20 49 63 6f 6e 5f 41  |tax:.void Icon_A|
00054260  6c 74 65 72 56 61 6c 69  64 61 74 69 6f 6e 20 28  |lterValidation (|
00054270  3c 77 69 6e 64 6f 77 5f  68 61 6e 64 6c 65 3e 20  |<window_handle> |
00054280  77 69 6e 2c 20 3c 69 63  6f 6e 5f 68 61 6e 64 6c  |win, <icon_handl|
00054290  65 3e 20 69 63 6f 6e 2c  20 63 68 61 72 20 2a 76  |e> icon, char *v|
000542a0  61 6c 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |al);.Header:.<De|
000542b0  73 6b 4c 69 62 3a 49 63  6f 6e 2e 68 3d 3e 49 63  |skLib:Icon.h=>Ic|
000542c0  6f 6e 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |on>..This functi|
000542d0  6f 6e 20 61 6c 74 65 72  73 20 74 68 65 20 76 61  |on alters the va|
000542e0  6c 69 64 61 74 69 6f 6e  20 73 74 72 69 6e 67 20  |lidation string |
000542f0  6f 66 20 74 68 65 20 67  69 76 65 6e 20 69 63 6f  |of the given ico|
00054300  6e 20 74 6f 20 74 68 61  74 20 63 6f 6e 74 61 69  |n to that contai|
00054310  6e 65 64 20 69 6e 20 2f  76 61 6c 2f 20 61 6e 64  |ned in /val/ and|
00054320  20 72 65 64 72 61 77 73  20 74 68 65 20 69 63 6f  | redraws the ico|
00054330  6e 20 28 74 6f 20 61 63  63 6f 75 6e 74 20 66 6f  |n (to account fo|
00054340  72 20 62 6f 72 64 65 72  20 74 79 70 65 20 63 68  |r border type ch|
00054350  61 6e 67 65 73 20 65 74  63 29 2e 20 49 66 20 74  |anges etc). If t|
00054360  68 65 20 6e 65 77 20 76  61 6c 69 64 61 74 69 6f  |he new validatio|
00054370  6e 20 73 74 72 69 6e 67  20 69 73 20 62 69 67 67  |n string is bigg|
00054380  65 72 20 74 68 61 6e 20  74 68 65 20 73 70 61 63  |er than the spac|
00054390  65 20 75 73 65 64 20 62  79 20 74 68 65 20 6f 6c  |e used by the ol|
000543a0  64 20 6f 6e 65 2c 20 79  6f 75 27 72 65 20 69 6e  |d one, you're in|
000543b0  20 74 72 6f 75 62 6c 65  2e 00 00 00 44 41 54 41  | trouble....DATA|
000543c0  8c 00 00 00 49 63 6f 6e  5f 42 75 74 74 6f 6e 49  |....Icon_ButtonI|
000543d0  73 48 65 6c 64 0a 53 79  6e 74 61 78 3a 09 3c 42  |sHeld.Syntax:.<B|
000543e0  4f 4f 4c 3e 20 49 63 6f  6e 5f 42 75 74 74 6f 6e  |OOL> Icon_Button|
000543f0  49 73 48 65 6c 64 20 28  76 6f 69 64 29 3b 0a 48  |IsHeld (void);.H|
00054400  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00054410  49 63 6f 6e 2e 68 3d 3e  49 63 6f 6e 3e 0a 0a 52  |Icon.h=>Icon>..R|
00054420  65 74 75 72 6e 73 3a 09  3c 54 52 55 45 3e 20 69  |eturns:.<TRUE> i|
00054430  66 20 61 20 6d 6f 75 73  65 20 62 75 74 74 6f 6e  |f a mouse button|
00054440  20 69 73 20 64 6f 77 6e  44 49 52 24 4c 00 00 00  | is downDIR$L...|
00054450  4c 00 00 00 94 44 05 00  46 ff ff ff 57 de 37 26  |L....D..F...W.7&|
00054460  ba 00 00 00 13 00 00 00  00 00 00 00 4c 45 46 54  |............LEFT|
00054470  00 00 00 00 50 45 05 00  46 ff ff ff 39 db 37 26  |....PE..F...9.7&|
00054480  bc 00 00 00 13 00 00 00  00 00 00 00 52 49 47 48  |............RIGH|
00054490  54 00 00 00 44 41 54 41  ba 00 00 00 69 63 6f 6e  |T...DATA....icon|
000544a0  62 61 72 5f 4c 45 46 54  0a 54 68 69 73 20 6d 61  |bar_LEFT.This ma|
000544b0  63 72 6f 20 69 73 20 64  65 66 69 6e 65 64 20 69  |cro is defined i|
000544c0  6e 20 3c 57 69 6d 70 2e  68 3d 3e 57 69 6d 70 3e  |n <Wimp.h=>Wimp>|
000544d0  20 61 73 20 61 20 6d 61  63 72 6f 20 63 6f 6e 74  | as a macro cont|
000544e0  61 69 6e 69 6e 67 20 74  68 65 20 77 69 6e 64 6f  |aining the windo|
000544f0  77 20 68 61 6e 64 6c 65  20 6f 66 20 74 68 65 20  |w handle of the |
00054500  6c 65 66 74 20 73 69 64  65 20 6f 66 20 74 68 65  |left side of the|
00054510  20 69 63 6f 6e 20 62 61  72 2c 20 61 73 20 75 73  | icon bar, as us|
00054520  65 64 20 77 68 65 6e 20  63 72 65 61 74 69 6e 67  |ed when creating|
00054530  20 61 6e 20 69 63 6f 6e  2e 20 49 74 20 69 73 20  | an icon. It is |
00054540  64 65 66 69 6e 65 64 20  61 73 20 2d 32 2e 00 00  |defined as -2...|
00054550  44 41 54 41 bc 00 00 00  69 63 6f 6e 62 61 72 5f  |DATA....iconbar_|
00054560  52 49 47 48 54 0a 54 68  69 73 20 6d 61 63 72 6f  |RIGHT.This macro|
00054570  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
00054580  57 69 6d 70 2e 68 3d 3e  57 69 6d 70 3e 20 61 73  |Wimp.h=>Wimp> as|
00054590  20 61 20 6d 61 63 72 6f  20 63 6f 6e 74 61 69 6e  | a macro contain|
000545a0  69 6e 67 20 74 68 65 20  77 69 6e 64 6f 77 20 68  |ing the window h|
000545b0  61 6e 64 6c 65 20 6f 66  20 74 68 65 20 72 69 67  |andle of the rig|
000545c0  68 74 20 73 69 64 65 20  6f 66 20 74 68 65 20 69  |ht side of the i|
000545d0  63 6f 6e 20 62 61 72 2c  20 61 73 20 75 73 65 64  |con bar, as used|
000545e0  20 77 68 65 6e 20 63 72  65 61 74 69 6e 67 20 61  | when creating a|
000545f0  6e 20 69 63 6f 6e 2e 20  49 74 20 69 73 20 64 65  |n icon. It is de|
00054600  66 69 6e 65 64 20 61 73  20 2d 31 2e 44 41 54 41  |fined as -1.DATA|
00054610  83 02 00 00 69 66 0a 54  68 69 73 20 63 6f 6d 6d  |....if.This comm|
00054620  61 6e 64 20 69 73 20 74  68 65 20 73 61 6d 65 20  |and is the same |
00054630  69 6e 20 6a 75 73 74 20  61 62 6f 75 74 20 65 76  |in just about ev|
00054640  65 72 79 20 63 6f 6d 70  75 74 65 72 20 6c 61 6e  |ery computer lan|
00054650  67 75 61 67 65 20 69 6e  76 65 6e 74 65 64 2e 20  |guage invented. |
00054660  49 74 20 68 61 73 20 74  68 65 20 66 6f 72 6d 3a  |It has the form:|
00054670  0a 0a 7b 66 43 6f 64 65  3b 61 6c 69 67 6e 20 63  |..{fCode;align c|
00054680  65 6e 74 72 65 7d 69 66  20 28 5c 3c 63 6f 6e 64  |entre}if (\<cond|
00054690  69 74 69 6f 6e 3e 29 20  5c 3c 73 74 61 74 65 6d  |ition>) \<statem|
000546a0  65 6e 74 31 3e 3b 20 65  6c 73 65 20 5c 3c 73 74  |ent1>; else \<st|
000546b0  61 74 65 6d 65 6e 74 32  3e 3b 7b 66 3b 61 6c 69  |atement2>;{f;ali|
000546c0  67 6e 7d 0a 0a 5c 3c 63  6f 6e 64 69 74 69 6f 6e  |gn}..\<condition|
000546d0  3e 20 69 73 20 65 76 61  6c 75 61 74 65 64 2e 20  |> is evaluated. |
000546e0  49 66 20 69 74 20 69 73  20 6e 6f 6e 2d 7a 65 72  |If it is non-zer|
000546f0  6f 20 28 74 72 75 65 29  20 74 68 65 6e 20 73 74  |o (true) then st|
00054700  61 74 65 6d 65 6e 74 31  20 69 73 20 65 78 65 63  |atement1 is exec|
00054710  75 74 65 64 2e 20 49 66  20 69 74 20 69 73 20 7a  |uted. If it is z|
00054720  65 72 6f 20 28 66 61 6c  73 65 29 20 74 68 65 6e  |ero (false) then|
00054730  20 73 74 61 74 65 6d 65  6e 74 32 20 69 73 20 65  | statement2 is e|
00054740  78 65 63 75 74 65 64 2e  0a 0a 42 6f 74 68 20 73  |xecuted...Both s|
00054750  74 61 74 65 6d 65 6e 74  73 20 6d 61 79 20 62 65  |tatements may be|
00054760  20 63 6f 6d 70 6f 75 6e  64 20 73 74 61 74 65 6d  | compound statem|
00054770  65 6e 74 73 20 69 65 20  73 65 76 65 72 61 6c 20  |ents ie several |
00054780  73 74 61 74 65 6d 65 6e  74 73 20 65 6e 63 6c 6f  |statements enclo|
00054790  73 65 64 20 69 6e 20 5c  7b 7d 2c 20 69 6e 20 74  |sed in \{}, in t|
000547a0  68 61 74 20 63 61 73 65  20 74 68 65 79 20 77 69  |hat case they wi|
000547b0  6c 6c 20 6e 6f 74 20 62  65 20 66 6f 6c 6c 6f 77  |ll not be follow|
000547c0  65 64 20 62 79 20 73 65  6d 69 63 6f 6c 6f 6e 73  |ed by semicolons|
000547d0  2e 0a 0a 65 67 0a 23 66  43 6f 64 65 0a 20 20 20  |...eg.#fCode.   |
000547e0  20 69 66 20 28 61 3d 3d  27 4c 27 29 20 3c 70 75  | if (a=='L') <pu|
000547f0  74 73 3e 28 22 4c 6f 61  64 22 29 3b 0a 20 20 20  |ts>("Load");.   |
00054800  20 65 6c 73 65 20 69 66  20 28 61 3d 3d 27 53 27  | else if (a=='S'|
00054810  29 20 70 75 74 73 28 22  53 61 76 65 22 29 3b 0a  |) puts("Save");.|
00054820  20 20 20 20 65 6c 73 65  20 70 75 74 73 28 22 44  |    else puts("D|
00054830  6f 6e 27 74 20 6b 6e 6f  77 22 29 3b 0a 23 66 0a  |on't know");.#f.|
00054840  0a 54 68 69 73 20 70 72  69 6e 74 73 20 94 4c 6f  |.This prints .Lo|
00054850  61 64 95 20 69 66 20 61  20 69 73 20 90 4c 91 2c  |ad. if a is .L.,|
00054860  20 94 53 61 76 65 95 20  69 66 20 61 20 69 73 20  | .Save. if a is |
00054870  90 53 91 2c 20 6f 72 20  94 44 6f 6e 91 74 20 6b  |.S., or .Don.t k|
00054880  6e 6f 77 95 20 6f 74 68  65 72 77 69 73 65 2e 00  |now. otherwise..|
00054890  44 49 52 24 2c 00 00 00  2c 00 00 00 bc 48 05 00  |DIR$,...,....H..|
000548a0  46 fd ff ff 80 6a e5 22  ac 01 00 00 13 00 00 00  |F....j."........|
000548b0  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
000548c0  ac 01 00 00 23 69 66 0a  54 68 69 73 20 64 69 72  |....#if.This dir|
000548d0  65 63 74 69 76 65 20 68  61 73 20 74 68 65 20 66  |ective has the f|
000548e0  6f 72 6d 3a 0a 0a 23 66  43 6f 64 65 0a 20 20 20  |orm:..#fCode.   |
000548f0  20 23 69 66 20 5c 3c 65  78 70 72 65 73 73 69 6f  | #if \<expressio|
00054900  6e 3e 0a 20 20 20 20 20  20 20 5c 3c 73 74 61 74  |n>.       \<stat|
00054910  65 6d 65 6e 74 73 31 3e  3b 0a 20 20 20 20 3c 23  |ements1>;.    <#|
00054920  65 6c 73 65 3d 3e 65 6c  73 65 5f 3e 0a 20 20 20  |else=>else_>.   |
00054930  20 20 20 20 5c 3c 73 74  61 74 65 6d 65 6e 74 73  |    \<statements|
00054940  32 3e 3b 0a 20 20 20 20  23 65 6e 64 69 66 0a 23  |2>;.    #endif.#|
00054950  66 0a 0a 5c 3c 65 78 70  72 65 73 73 69 6f 6e 3e  |f..\<expression>|
00054960  20 69 73 20 61 6e 79 20  63 6f 6e 73 74 61 6e 74  | is any constant|
00054970  20 65 78 70 72 65 73 73  69 6f 6e 20 75 73 69 6e  | expression usin|
00054980  67 20 74 68 65 20 6e 6f  72 6d 61 6c 20 6f 70 65  |g the normal ope|
00054990  72 61 74 6f 72 73 2e 20  49 74 20 6d 61 79 20 6f  |rators. It may o|
000549a0  6e 6c 79 20 69 6e 76 6f  6c 76 65 20 63 6f 6e 73  |nly involve cons|
000549b0  74 61 6e 74 20 76 61 6c  75 65 73 20 28 6d 61 63  |tant values (mac|
000549c0  72 6f 73 20 61 6e 64 20  6e 75 6d 62 65 72 73 29  |ros and numbers)|
000549d0  2c 20 6e 6f 74 20 76 61  72 69 61 62 6c 65 73 20  |, not variables |
000549e0  6f 72 20 66 75 6e 63 74  69 6f 6e 73 2e 0a 0a 49  |or functions...I|
000549f0  66 20 69 74 20 65 76 61  6c 75 61 74 65 73 20 74  |f it evaluates t|
00054a00  6f 20 31 20 28 74 72 75  65 29 20 74 68 65 6e 20  |o 1 (true) then |
00054a10  5c 3c 73 74 61 74 65 6d  65 6e 74 73 31 3e 20 69  |\<statements1> i|
00054a20  73 20 63 6f 6d 70 69 6c  65 64 20 65 6c 73 65 20  |s compiled else |
00054a30  5c 3c 73 74 61 74 65 6d  65 6e 74 73 32 3e 20 69  |\<statements2> i|
00054a40  73 20 63 6f 6d 70 69 6c  65 64 2e 20 54 68 65 20  |s compiled. The |
00054a50  27 65 6c 73 65 27 20 70  61 72 74 20 69 73 20 6f  |'else' part is o|
00054a60  70 74 69 6f 6e 61 6c 2e  44 41 54 41 b6 01 00 00  |ptional.DATA....|
00054a70  23 69 66 64 65 66 0a 54  68 69 73 20 64 69 72 65  |#ifdef.This dire|
00054a80  63 74 69 76 65 20 74 65  73 74 73 20 69 66 20 61  |ctive tests if a|
00054a90  20 70 61 72 74 69 63 75  6c 61 72 20 6d 61 63 72  | particular macr|
00054aa0  6f 20 69 73 20 64 65 66  69 6e 65 64 20 77 69 74  |o is defined wit|
00054ab0  68 20 3c 23 64 65 66 69  6e 65 3d 3e 64 65 66 69  |h <#define=>defi|
00054ac0  6e 65 3e 2e 20 49 74 20  68 61 73 20 74 68 65 20  |ne>. It has the |
00054ad0  66 6f 72 6d 3a 0a 0a 23  66 43 6f 64 65 0a 20 20  |form:..#fCode.  |
00054ae0  20 20 23 69 66 64 65 66  20 5c 3c 6d 61 63 72 6f  |  #ifdef \<macro|
00054af0  6e 61 6d 65 3e 0a 20 20  20 20 20 20 20 20 5c 3c  |name>.        \<|
00054b00  73 74 61 74 65 6d 65 6e  74 73 31 3e 0a 20 20 20  |statements1>.   |
00054b10  20 23 3c 65 6c 73 65 3d  3e 65 6c 73 65 5f 3e 0a  | #<else=>else_>.|
00054b20  20 20 20 20 20 20 20 20  5c 3c 73 74 61 74 65 6d  |        \<statem|
00054b30  65 6e 74 73 32 3e 0a 20  20 20 20 23 65 6e 64 69  |ents2>.    #endi|
00054b40  66 0a 23 66 0a 0a 49 66  20 5c 3c 6d 61 63 72 6f  |f.#f..If \<macro|
00054b50  6e 61 6d 65 3e 20 69 73  20 64 65 66 69 6e 65 64  |name> is defined|
00054b60  2c 20 74 68 65 6e 20 5c  3c 73 74 61 74 65 6d 65  |, then \<stateme|
00054b70  6e 74 73 31 3e 20 69 73  20 63 6f 6d 70 69 6c 65  |nts1> is compile|
00054b80  64 2e 20 54 68 65 20 27  23 65 6c 73 65 27 20 62  |d. The '#else' b|
00054b90  69 74 20 69 73 20 6f 70  74 69 6f 6e 61 6c 2e 20  |it is optional. |
00054ba0  49 66 20 69 74 20 69 73  20 70 72 65 73 65 6e 74  |If it is present|
00054bb0  2c 20 74 68 65 20 69 66  20 5c 3c 6d 61 63 72 6f  |, the if \<macro|
00054bc0  6e 61 6d 65 3e 20 69 73  20 6e 6f 74 20 64 65 66  |name> is not def|
00054bd0  69 6e 65 64 2c 20 5c 3c  73 74 61 74 65 6d 65 6e  |ined, \<statemen|
00054be0  74 73 32 3e 20 69 73 20  63 6f 6d 70 69 6c 65 64  |ts2> is compiled|
00054bf0  2e 0a 0a 41 66 74 65 72  20 27 23 65 6e 64 69 66  |...After '#endif|
00054c00  27 2c 20 6e 6f 72 6d 61  6c 20 63 6f 6d 70 69 6c  |', normal compil|
00054c10  61 74 69 6f 6e 20 72 65  73 75 6d 65 73 2e 00 00  |ation resumes...|
00054c20  44 41 54 41 bc 01 00 00  23 69 66 6e 64 65 66 0a  |DATA....#ifndef.|
00054c30  54 68 69 73 20 64 69 72  65 63 74 69 76 65 20 74  |This directive t|
00054c40  65 73 74 73 20 69 66 20  61 20 70 61 72 74 69 63  |ests if a partic|
00054c50  75 6c 61 72 20 6d 61 63  72 6f 20 69 73 20 6e 6f  |ular macro is no|
00054c60  74 20 64 65 66 69 6e 65  64 20 77 69 74 68 20 3c  |t defined with <|
00054c70  23 64 65 66 69 6e 65 3d  3e 64 65 66 69 6e 65 3e  |#define=>define>|
00054c80  2e 20 49 74 20 68 61 73  20 74 68 65 20 66 6f 72  |. It has the for|
00054c90  6d 3a 0a 0a 23 66 43 6f  64 65 0a 20 20 20 20 23  |m:..#fCode.    #|
00054ca0  69 66 6e 64 65 66 20 5c  3c 6d 61 63 72 6f 6e 61  |ifndef \<macrona|
00054cb0  6d 65 3e 0a 20 20 20 20  20 20 20 20 5c 3c 73 74  |me>.        \<st|
00054cc0  61 74 65 6d 65 6e 74 73  31 3e 0a 20 20 20 20 3c  |atements1>.    <|
00054cd0  23 65 6c 73 65 3d 3e 65  6c 73 65 5f 3e 0a 20 20  |#else=>else_>.  |
00054ce0  20 20 20 20 20 20 5c 3c  73 74 61 74 65 6d 65 6e  |      \<statemen|
00054cf0  74 73 32 3e 0a 20 20 20  20 23 65 6e 64 69 66 0a  |ts2>.    #endif.|
00054d00  23 66 0a 0a 49 66 20 5c  3c 6d 61 63 72 6f 6e 61  |#f..If \<macrona|
00054d10  6d 65 3e 20 69 73 20 6e  6f 74 20 64 65 66 69 6e  |me> is not defin|
00054d20  65 64 2c 20 74 68 65 6e  20 5c 3c 73 74 61 74 65  |ed, then \<state|
00054d30  6d 65 6e 74 73 31 3e 20  69 73 20 63 6f 6d 70 69  |ments1> is compi|
00054d40  6c 65 64 2e 20 54 68 65  20 27 23 65 6c 73 65 27  |led. The '#else'|
00054d50  20 62 69 74 20 69 73 20  6f 70 74 69 6f 6e 61 6c  | bit is optional|
00054d60  2e 20 49 66 20 69 74 20  69 73 20 70 72 65 73 65  |. If it is prese|
00054d70  6e 74 2c 20 74 68 65 20  69 66 20 5c 3c 6d 61 63  |nt, the if \<mac|
00054d80  72 6f 6e 61 6d 65 3e 20  69 73 20 64 65 66 69 6e  |roname> is defin|
00054d90  65 64 2c 20 5c 3c 73 74  61 74 65 6d 65 6e 74 73  |ed, \<statements|
00054da0  32 3e 20 69 73 20 63 6f  6d 70 69 6c 65 64 2e 0a  |2> is compiled..|
00054db0  0a 41 66 74 65 72 20 27  23 65 6e 64 69 66 27 2c  |.After '#endif',|
00054dc0  20 6e 6f 72 6d 61 6c 20  63 6f 6d 70 69 6c 61 74  | normal compilat|
00054dd0  69 6f 6e 20 72 65 73 75  6d 65 73 2e 44 41 54 41  |ion resumes.DATA|
00054de0  29 02 00 00 49 4d 50 4f  52 54 20 3c 6c 61 62 65  |)...IMPORT <labe|
00054df0  6c 3e 0a 54 68 69 73 20  61 6c 6c 6f 77 73 20 72  |l>.This allows r|
00054e00  65 66 65 72 65 6e 63 65  73 20 74 6f 20 61 20 6c  |eferences to a l|
00054e10  61 62 65 6c 20 77 68 69  63 68 20 69 73 20 64 65  |abel which is de|
00054e20  66 69 6e 65 64 20 65 78  74 65 72 6e 61 6c 6c 79  |fined externally|
00054e30  20 69 65 20 69 6e 20 61  20 64 69 66 66 65 72 65  | ie in a differe|
00054e40  6e 74 20 66 69 6c 65 2e  0a 0a 65 67 0a 0a 23 66  |nt file...eg..#f|
00054e50  43 6f 64 65 0a 20 20 20  20 20 20 23 70 72 61 67  |Code.      #prag|
00054e60  6d 61 20 61 73 6d 0a 0a  20 20 20 20 20 20 20 20  |ma asm..        |
00054e70  20 20 49 4d 50 4f 52 54  20 70 75 74 73 0a 20 20  |  IMPORT puts.  |
00054e80  20 20 20 20 2e 70 72 69  6e 74 68 65 6c 6c 6f 0a  |    .printhello.|
00054e90  20 20 20 20 20 20 20 20  20 20 53 54 4d 46 44 20  |          STMFD |
00054ea0  20 73 70 21 2c 5c 7b 72  30 2d 72 31 32 2c 6c 6b  | sp!,\{r0-r12,lk|
00054eb0  7d 0a 20 20 20 20 20 20  20 20 20 20 3c 41 44 52  |}.          <ADR|
00054ec0  3e 20 20 20 20 61 31 2c  73 74 72 69 6e 67 0a 20  |>    a1,string. |
00054ed0  20 20 20 20 20 20 20 20  20 42 4c 20 20 20 20 20  |         BL     |
00054ee0  3c 70 75 74 73 3e 0a 20  20 20 20 20 20 20 20 20  |<puts>.         |
00054ef0  20 4c 44 4d 46 44 20 20  73 70 21 2c 5c 7b 72 30  | LDMFD  sp!,\{r0|
00054f00  2d 72 31 32 2c 70 63 7d  5e 0a 20 20 20 20 20 20  |-r12,pc}^.      |
00054f10  2e 73 74 72 69 6e 67 0a  20 20 20 20 20 20 20 20  |.string.        |
00054f20  20 20 3c 44 43 42 3e 20  20 20 20 22 48 65 6c 6c  |  <DCB>    "Hell|
00054f30  6f 20 57 6f 72 64 22 2c  30 0a 0a 20 20 20 20 20  |o Word",0..     |
00054f40  20 23 70 72 61 67 6d 61  20 65 6e 64 61 73 6d 0a  | #pragma endasm.|
00054f50  0a 20 20 20 20 20 20 76  6f 69 64 20 6d 61 69 6e  |.      void main|
00054f60  20 28 76 6f 69 64 29 0a  20 20 20 20 20 20 5c 7b  | (void).      \{|
00054f70  0a 20 20 20 20 20 20 20  20 20 20 70 72 69 6e 74  |.          print|
00054f80  68 65 6c 6c 6f 28 29 3b  0a 20 20 20 20 20 20 7d  |hello();.      }|
00054f90  0a 23 66 0a 0a 54 68 69  73 20 70 72 6f 67 72 61  |.#f..This progra|
00054fa0  6d 20 61 62 6f 76 65 20  70 72 69 6e 74 73 20 94  |m above prints .|
00054fb0  48 65 6c 6c 6f 20 57 6f  72 6c 64 95 20 6f 6e 20  |Hello World. on |
00054fc0  74 68 65 0a 73 63 72 65  65 6e 2c 20 75 73 69 6e  |the.screen, usin|
00054fd0  67 20 3c 70 75 74 73 3e  20 77 68 69 63 68 20 69  |g <puts> which i|
00054fe0  73 20 69 6d 70 6f 72 74  65 64 20 66 72 6f 6d 20  |s imported from |
00054ff0  74 68 65 0a 72 75 6e 20  74 69 6d 65 20 6c 69 62  |the.run time lib|
00055000  72 61 72 79 2e 00 00 00  44 41 54 41 1e 03 00 00  |rary....DATA....|
00055010  20 23 69 6e 63 6c 75 64  65 0a 54 68 69 73 20 69  | #include.This i|
00055020  73 20 66 6f 6c 6c 6f 77  65 64 20 62 79 20 61 20  |s followed by a |
00055030  66 69 6c 65 6e 61 6d 65  2c 20 65 69 74 68 65 72  |filename, either|
00055040  20 69 6e 20 61 6e 67 6c  65 20 62 72 61 63 6b 65  | in angle bracke|
00055050  74 73 20 5c 3c 3e 20 6f  72 20 69 6e 20 71 75 6f  |ts \<> or in quo|
00055060  74 65 20 6d 61 72 6b 73  20 22 22 2e 20 54 68 65  |te marks "". The|
00055070  20 6e 61 6d 65 64 20 66  69 6c 65 20 69 73 20 69  | named file is i|
00055080  6e 73 65 72 74 65 64 20  69 6e 74 6f 20 74 68 65  |nserted into the|
00055090  20 73 6f 75 72 63 65 20  63 6f 64 65 20 61 74 20  | source code at |
000550a0  74 68 69 73 20 70 6f 69  6e 74 2e 20 54 68 69 73  |this point. This|
000550b0  20 69 73 20 6e 6f 72 6d  61 6c 6c 79 20 75 73 65  | is normally use|
000550c0  64 20 74 6f 20 69 6e 73  65 72 74 20 73 6f 2d 63  |d to insert so-c|
000550d0  61 6c 6c 65 64 20 22 68  65 61 64 65 72 20 66 69  |alled "header fi|
000550e0  6c 65 73 22 20 77 68 69  63 68 20 63 6f 6e 74 61  |les" which conta|
000550f0  69 6e 20 65 78 74 65 72  6e 61 6c 20 66 75 6e 63  |in external func|
00055100  74 69 6f 6e 20 64 65 63  6c 61 72 61 74 69 6f 6e  |tion declaration|
00055110  73 2e 20 49 74 20 69 73  20 74 68 65 73 65 20 68  |s. It is these h|
00055120  65 61 64 65 72 20 66 69  6c 65 73 20 77 68 69 63  |eader files whic|
00055130  68 20 61 72 65 20 74 68  65 20 73 75 62 6a 65 63  |h are the subjec|
00055140  74 20 6f 66 20 6d 6f 73  74 20 6f 66 20 74 68 69  |t of most of thi|
00055150  73 20 68 65 6c 70 21 0a  0a 65 67 2e 09 5c 23 69  |s help!..eg..\#i|
00055160  6e 63 6c 75 64 65 20 5c  3c 3c 73 74 64 69 6f 2e  |nclude \<<stdio.|
00055170  68 3d 3e 73 74 64 69 6f  3e 3e 0a 09 5c 23 69 6e  |h=>stdio>>..\#in|
00055180  63 6c 75 64 65 20 22 3c  44 65 73 6b 4c 69 62 3a  |clude "<DeskLib:|
00055190  45 76 65 6e 74 2e 68 3d  3e 45 76 65 6e 74 3e 22  |Event.h=>Event>"|
000551a0  0a 0a 54 68 65 20 64 69  66 66 65 72 65 6e 63 65  |..The difference|
000551b0  20 62 65 74 77 65 65 6e  20 74 68 65 20 62 72 61  | between the bra|
000551c0  63 6b 65 74 73 20 61 6e  64 20 71 75 6f 74 65 20  |ckets and quote |
000551d0  6d 61 72 6b 73 20 69 73  20 74 68 61 74 20 74 68  |marks is that th|
000551e0  6f 73 65 20 69 6e 20 71  75 6f 74 65 20 6d 61 72  |ose in quote mar|
000551f0  6b 73 20 61 72 65 3a 0a  0a 23 54 61 62 0a 8f 09  |ks are:..#Tab...|
00055200  53 65 61 72 63 68 65 64  20 66 6f 72 20 69 6e 20  |Searched for in |
00055210  74 68 65 20 73 61 6d 65  20 70 6c 61 63 65 20 61  |the same place a|
00055220  73 20 79 6f 75 72 20 73  6f 75 72 63 65 20 66 69  |s your source fi|
00055230  6c 65 2e 20 65 67 20 69  66 20 79 6f 75 72 20 73  |le. eg if your s|
00055240  6f 75 72 63 65 20 66 69  6c 65 20 69 73 20 22 53  |ource file is "S|
00055250  6f 75 72 63 65 2e 63 2e  70 72 6f 67 22 2c 20 74  |ource.c.prog", t|
00055260  68 65 6e 20 22 53 6f 75  72 63 65 2e 68 22 20 69  |hen "Source.h" i|
00055270  73 20 73 65 61 72 63 68  65 64 2e 0a 8f 09 49 6e  |s searched....In|
00055280  63 6c 75 64 65 64 20 69  6e 20 74 68 65 20 4d 61  |cluded in the Ma|
00055290  6b 65 20 66 69 6c 65 20  64 65 70 65 6e 64 65 6e  |ke file dependen|
000552a0  63 79 20 6c 69 73 74 20  62 79 20 27 43 72 65 61  |cy list by 'Crea|
000552b0  74 65 27 20 28 45 61 73  79 20 43 29 2e 0a 0a 42  |te' (Easy C)...B|
000552c0  6f 74 68 20 74 79 70 65  73 20 61 72 65 20 73 65  |oth types are se|
000552d0  61 72 63 68 65 64 20 66  6f 72 3a 0a 0a 8f 09 41  |arched for:....A|
000552e0  74 20 74 68 65 20 70 61  74 68 20 73 70 65 63 69  |t the path speci|
000552f0  66 69 65 64 20 77 68 65  6e 20 63 6f 6d 70 69 6c  |fied when compil|
00055300  69 6e 67 2e 0a 8f 09 49  6e 20 74 68 65 20 73 79  |ing....In the sy|
00055310  73 74 65 6d 20 68 65 61  64 65 72 20 66 69 6c 65  |stem header file|
00055320  20 70 61 74 68 2e 00 00  44 49 52 24 44 00 00 00  | path...DIR$D...|
00055330  44 00 00 00 6c 53 05 00  46 ff ff ff c7 0a bd 22  |D...lS..F......"|
00055340  a7 00 00 00 13 00 00 00  00 00 00 00 4d 41 58 00  |............MAX.|
00055350  14 54 05 00 46 ff ff ff  68 07 bd 22 a8 00 00 00  |.T..F...h.."....|
00055360  13 00 00 00 00 00 00 00  4d 49 4e 00 44 41 54 41  |........MIN.DATA|
00055370  a7 00 00 00 49 4e 54 5f  4d 41 58 0a 54 68 69 73  |....INT_MAX.This|
00055380  20 6d 61 63 72 6f 20 69  73 20 64 65 66 69 6e 65  | macro is define|
00055390  64 20 69 6e 20 3c 6c 69  6d 69 74 73 2e 68 3e 20  |d in <limits.h> |
000553a0  61 6e 64 20 72 65 70 72  65 73 65 6e 74 73 20 74  |and represents t|
000553b0  68 65 20 6d 61 78 69 6d  75 6d 20 76 61 6c 75 65  |he maximum value|
000553c0  20 77 68 69 63 68 20 63  61 6e 20 62 65 20 73 74  | which can be st|
000553d0  6f 72 65 64 20 69 6e 20  61 6e 20 69 6e 74 2e 20  |ored in an int. |
000553e0  49 6e 20 45 61 73 79 20  43 20 69 74 20 69 73 20  |In Easy C it is |
000553f0  64 65 66 69 6e 65 64 20  61 73 20 30 78 37 66 66  |defined as 0x7ff|
00055400  66 66 66 66 66 20 28 32  31 34 37 34 38 33 36 34  |fffff (214748364|
00055410  37 29 2e 00 44 41 54 41  a8 00 00 00 49 4e 54 5f  |7)..DATA....INT_|
00055420  4d 49 4e 0a 54 68 69 73  20 6d 61 63 72 6f 20 69  |MIN.This macro i|
00055430  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 6c 69  |s defined in <li|
00055440  6d 69 74 73 2e 68 3e 20  61 6e 64 20 72 65 70 72  |mits.h> and repr|
00055450  65 73 65 6e 74 73 20 74  68 65 20 6d 69 6e 69 6d  |esents the minim|
00055460  75 6d 20 76 61 6c 75 65  20 77 68 69 63 68 20 63  |um value which c|
00055470  61 6e 20 62 65 20 73 74  6f 72 65 64 20 69 6e 20  |an be stored in |
00055480  61 6e 20 69 6e 74 2e 20  49 6e 20 45 61 73 79 20  |an int. In Easy |
00055490  43 20 69 74 20 69 73 20  64 65 66 69 6e 65 64 20  |C it is defined |
000554a0  61 73 20 30 78 38 30 30  30 30 30 30 30 20 28 2d  |as 0x80000000 (-|
000554b0  32 31 34 37 34 38 33 36  34 38 29 2e 44 41 54 41  |2147483648).DATA|
000554c0  34 02 00 00 54 69 6d 73  4c 69 62 3a 49 6e 74 65  |4...TimsLib:Inte|
000554d0  72 66 61 63 65 2e 68 0a  54 68 69 73 20 68 65 61  |rface.h.This hea|
000554e0  64 65 72 20 64 65 66 69  6e 65 73 20 66 75 6e 63  |der defines func|
000554f0  74 69 6f 6e 2d 6c 69 6b  65 20 6d 61 63 72 6f 73  |tion-like macros|
00055500  20 66 6f 72 20 61 63 63  65 73 73 69 6e 67 20 73  | for accessing s|
00055510  6f 6d 65 20 49 6e 74 65  72 66 61 63 65 20 4d 61  |ome Interface Ma|
00055520  6e 61 67 65 72 20 53 57  49 73 2e 0a 0a 46 75 6e  |nager SWIs...Fun|
00055530  63 74 69 6f 6e 2d 6c 69  6b 65 20 6d 61 63 72 6f  |ction-like macro|
00055540  73 3a 0a 0a 23 74 61 62  6c 65 20 63 6f 6c 75 6d  |s:..#table colum|
00055550  6e 73 20 32 0a 3c 49 6e  74 65 72 66 61 63 65 5f  |ns 2.<Interface_|
00055560  53 6c 61 62 42 75 74 74  6f 6e 3e 0a 3c 49 6e 74  |SlabButton>.<Int|
00055570  65 72 66 61 63 65 5f 52  65 6e 64 65 72 33 64 57  |erface_Render3dW|
00055580  69 6e 64 6f 77 3e 0a 3c  49 6e 74 65 72 66 61 63  |indow>.<Interfac|
00055590  65 5f 49 6e 69 74 69 61  6c 69 73 65 3e 0a 3c 49  |e_Initialise>.<I|
000555a0  6e 74 65 72 66 61 63 65  5f 43 6c 6f 73 65 64 6f  |nterface_Closedo|
000555b0  77 6e 3e 0a 3c 49 6e 74  65 72 66 61 63 65 5f 53  |wn>.<Interface_S|
000555c0  65 74 57 6f 72 6b 61 72  65 61 50 6f 69 6e 74 65  |etWorkareaPointe|
000555d0  72 3e 0a 3c 49 6e 74 65  72 66 61 63 65 5f 52 65  |r>.<Interface_Re|
000555e0  6d 6f 76 65 57 6f 72 6b  61 72 65 61 50 6f 69 6e  |moveWorkareaPoin|
000555f0  74 65 72 3e 0a 3c 49 6e  74 65 72 66 61 63 65 5f  |ter>.<Interface_|
00055600  50 6f 6c 6c 3e 0a 3c 49  6e 74 65 72 66 61 63 65  |Poll>.<Interface|
00055610  5f 53 65 6e 64 48 65 6c  70 3e 0a 3c 49 6e 74 65  |_SendHelp>.<Inte|
00055620  72 66 61 63 65 5f 50 6c  6f 74 33 64 49 63 6f 6e  |rface_Plot3dIcon|
00055630  3e 0a 3c 49 6e 74 65 72  66 61 63 65 5f 42 6f 75  |>.<Interface_Bou|
00055640  6e 64 69 6e 67 42 6f 78  3e 0a 23 65 6e 64 74 61  |ndingBox>.#endta|
00055650  62 6c 65 0a 0a 54 79 70  65 3a 0a 0a 7b 61 6c 69  |ble..Type:..{ali|
00055660  67 6e 20 63 65 6e 74 72  65 7d 3c 77 69 6d 70 5f  |gn centre}<wimp_|
00055670  70 6f 69 6e 74 65 72 3e  7b 61 6c 69 67 6e 7d 0a  |pointer>{align}.|
00055680  0a 49 6e 74 65 72 66 61  63 65 20 4d 61 6e 61 67  |.Interface Manag|
00055690  65 72 20 69 73 20 61 20  50 44 20 6d 6f 64 75 6c  |er is a PD modul|
000556a0  65 20 62 79 20 53 69 6d  6f 6e 20 48 75 6e 74 69  |e by Simon Hunti|
000556b0  6e 67 64 6f 6e 20 77 68  69 63 68 20 70 72 6f 76  |ngdon which prov|
000556c0  69 64 65 73 20 6d 61 6e  79 20 75 73 65 66 75 6c  |ides many useful|
000556d0  20 66 75 6e 63 74 69 6f  6e 73 20 66 6f 72 20 57  | functions for W|
000556e0  69 6d 70 20 70 72 6f 67  72 61 6d 6d 69 6e 67 2e  |imp programming.|
000556f0  44 49 52 24 88 01 00 00  88 01 00 00 78 58 05 00  |DIR$........xX..|
00055700  46 ff ff ff d0 fb 55 26  38 01 00 00 13 00 00 00  |F.....U&8.......|
00055710  00 00 00 00 42 6f 75 6e  64 69 6e 67 42 6f 78 00  |....BoundingBox.|
00055720  b0 59 05 00 46 ff ff ff  d5 da 55 26 24 01 00 00  |.Y..F.....U&$...|
00055730  13 00 00 00 00 00 00 00  43 6c 6f 73 65 64 6f 77  |........Closedow|
00055740  6e 00 00 00 d4 5a 05 00  46 ff ff ff 61 d7 55 26  |n....Z..F...a.U&|
00055750  27 01 00 00 13 00 00 00  00 00 00 00 49 6e 69 74  |'...........Init|
00055760  69 61 6c 69 73 65 00 00  fc 5b 05 00 46 ff ff ff  |ialise...[..F...|
00055770  78 f6 55 26 4a 01 00 00  13 00 00 00 00 00 00 00  |x.U&J...........|
00055780  50 6c 6f 74 33 64 49 63  6f 6e 00 00 48 5d 05 00  |Plot3dIcon..H]..|
00055790  46 ff ff ff 01 ed 55 26  19 01 00 00 13 00 00 00  |F.....U&........|
000557a0  00 00 00 00 50 6f 6c 6c  00 00 00 00 64 5e 05 00  |....Poll....d^..|
000557b0  46 ff ff ff 1d d3 55 26  4b 01 00 00 13 00 00 00  |F.....U&K.......|
000557c0  00 00 00 00 52 65 6e 64  65 72 33 64 57 69 6e 64  |....Render3dWind|
000557d0  6f 77 00 00 b0 5f 05 00  46 ff ff ff 3b f1 55 26  |ow..._..F...;.U&|
000557e0  3c 01 00 00 13 00 00 00  00 00 00 00 53 65 6e 64  |<...........Send|
000557f0  48 65 6c 70 00 00 00 00  ec 60 05 00 46 ff ff ff  |Help.....`..F...|
00055800  5c df 55 26 52 01 00 00  13 00 00 00 00 00 00 00  |\.U&R...........|
00055810  53 65 74 57 6f 72 6b 61  72 65 61 50 6f 69 6e 74  |SetWorkareaPoint|
00055820  65 72 00 00 40 62 05 00  46 ff ff ff 4c ce 55 26  |er..@b..F...L.U&|
00055830  38 01 00 00 13 00 00 00  00 00 00 00 53 6c 61 62  |8...........Slab|
00055840  42 75 74 74 6f 6e 00 00  78 63 05 00 46 ff ff ff  |Button..xc..F...|
00055850  14 e9 55 26 5b 01 00 00  13 00 00 00 00 00 00 00  |..U&[...........|
00055860  52 65 6d 6f 76 65 57 6f  72 6b 61 72 65 61 50 6f  |RemoveWorkareaPo|
00055870  69 6e 74 65 72 00 00 00  44 41 54 41 38 01 00 00  |inter...DATA8...|
00055880  49 6e 74 65 72 66 61 63  65 5f 42 6f 75 6e 64 69  |Interface_Boundi|
00055890  6e 67 42 6f 78 0a 53 79  6e 74 61 78 3a 09 3c 6f  |ngBox.Syntax:.<o|
000558a0  73 5f 65 72 72 6f 72 3e  20 2a 49 6e 74 65 72 66  |s_error> *Interf|
000558b0  61 63 65 5f 42 6f 75 6e  64 69 6e 67 42 6f 78 20  |ace_BoundingBox |
000558c0  28 3c 69 63 6f 6e 5f 62  6c 6f 63 6b 3e 20 2a 69  |(<icon_block> *i|
000558d0  63 6f 6e 29 3b 0a 48 65  61 64 65 72 3a 09 3c 54  |con);.Header:.<T|
000558e0  69 6d 73 4c 69 62 3a 49  6e 74 65 72 66 61 63 65  |imsLib:Interface|
000558f0  2e 68 3d 3e 49 6e 74 65  72 66 61 63 65 3e 0a 0a  |.h=>Interface>..|
00055900  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00055910  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00055920  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00055930  68 69 73 20 66 75 6e 63  74 69 6f 6e 2d 6c 69 6b  |his function-lik|
00055940  65 20 6d 61 63 72 6f 20  63 61 6c 6c 73 20 74 68  |e macro calls th|
00055950  65 20 53 57 49 20 49 6e  74 65 72 66 61 63 65 5f  |e SWI Interface_|
00055960  42 6f 75 6e 64 69 6e 67  42 6f 78 2e 20 46 6f 72  |BoundingBox. For|
00055970  20 6d 6f 72 65 20 69 6e  66 6f 72 6d 61 74 69 6f  | more informatio|
00055980  6e 20 73 65 65 20 74 68  65 20 64 6f 63 75 6d 65  |n see the docume|
00055990  6e 74 61 74 69 6f 6e 20  73 75 70 70 6c 69 65 64  |ntation supplied|
000559a0  20 77 69 74 68 20 49 6e  74 65 72 66 61 63 65 2e  | with Interface.|
000559b0  44 41 54 41 24 01 00 00  49 6e 74 65 72 66 61 63  |DATA$...Interfac|
000559c0  65 5f 43 6c 6f 73 65 64  6f 77 6e 0a 53 79 6e 74  |e_Closedown.Synt|
000559d0  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
000559e0  49 6e 74 65 72 66 61 63  65 5f 43 6c 6f 73 65 64  |Interface_Closed|
000559f0  6f 77 6e 20 28 76 6f 69  64 29 3b 0a 48 65 61 64  |own (void);.Head|
00055a00  65 72 3a 09 3c 54 69 6d  73 4c 69 62 3a 49 6e 74  |er:.<TimsLib:Int|
00055a10  65 72 66 61 63 65 2e 68  3d 3e 49 6e 74 65 72 66  |erface.h=>Interf|
00055a20  61 63 65 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |ace>..Returns:.P|
00055a30  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
00055a40  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
00055a50  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
00055a60  6f 6e 2d 6c 69 6b 65 20  6d 61 63 72 6f 20 63 61  |on-like macro ca|
00055a70  6c 6c 73 20 74 68 65 20  53 57 49 20 49 6e 74 65  |lls the SWI Inte|
00055a80  72 66 61 63 65 5f 43 6c  6f 73 65 64 6f 77 6e 2e  |rface_Closedown.|
00055a90  20 46 6f 72 20 6d 6f 72  65 20 69 6e 66 6f 72 6d  | For more inform|
00055aa0  61 74 69 6f 6e 20 73 65  65 20 74 68 65 20 64 6f  |ation see the do|
00055ab0  63 75 6d 65 6e 74 61 74  69 6f 6e 20 73 75 70 70  |cumentation supp|
00055ac0  6c 69 65 64 20 77 69 74  68 20 49 6e 74 65 72 66  |lied with Interf|
00055ad0  61 63 65 2e 44 41 54 41  27 01 00 00 49 6e 74 65  |ace.DATA'...Inte|
00055ae0  72 66 61 63 65 5f 49 6e  69 74 69 61 6c 69 73 65  |rface_Initialise|
00055af0  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00055b00  6f 72 3e 20 2a 49 6e 74  65 72 66 61 63 65 5f 49  |or> *Interface_I|
00055b10  6e 69 74 69 61 6c 69 73  65 20 28 76 6f 69 64 29  |nitialise (void)|
00055b20  3b 0a 48 65 61 64 65 72  3a 09 3c 54 69 6d 73 4c  |;.Header:.<TimsL|
00055b30  69 62 3a 49 6e 74 65 72  66 61 63 65 2e 68 3d 3e  |ib:Interface.h=>|
00055b40  49 6e 74 65 72 66 61 63  65 3e 0a 0a 52 65 74 75  |Interface>..Retu|
00055b50  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00055b60  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00055b70  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00055b80  66 75 6e 63 74 69 6f 6e  2d 6c 69 6b 65 20 6d 61  |function-like ma|
00055b90  63 72 6f 20 63 61 6c 6c  73 20 74 68 65 20 53 57  |cro calls the SW|
00055ba0  49 20 49 6e 74 65 72 66  61 63 65 5f 49 6e 69 74  |I Interface_Init|
00055bb0  69 61 6c 69 73 65 2e 20  46 6f 72 20 6d 6f 72 65  |ialise. For more|
00055bc0  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 73 65 65  | information see|
00055bd0  20 74 68 65 20 64 6f 63  75 6d 65 6e 74 61 74 69  | the documentati|
00055be0  6f 6e 20 73 75 70 70 6c  69 65 64 20 77 69 74 68  |on supplied with|
00055bf0  20 49 6e 74 65 72 66 61  63 65 2e 00 44 41 54 41  | Interface..DATA|
00055c00  4a 01 00 00 49 6e 74 65  72 66 61 63 65 5f 50 6c  |J...Interface_Pl|
00055c10  6f 74 33 64 49 63 6f 6e  0a 53 79 6e 74 61 78 3a  |ot3dIcon.Syntax:|
00055c20  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 49 6e 74  |.<os_error> *Int|
00055c30  65 72 66 61 63 65 5f 50  6c 6f 74 33 64 49 63 6f  |erface_Plot3dIco|
00055c40  6e 20 28 3c 77 69 6e 64  6f 77 5f 73 74 61 74 65  |n (<window_state|
00055c50  3e 20 2a 73 74 61 74 65  2c 20 3c 69 63 6f 6e 5f  |> *state, <icon_|
00055c60  62 6c 6f 63 6b 3e 20 2a  69 63 29 3b 0a 48 65 61  |block> *ic);.Hea|
00055c70  64 65 72 3a 09 3c 54 69  6d 73 4c 69 62 3a 49 6e  |der:.<TimsLib:In|
00055c80  74 65 72 66 61 63 65 2e  68 3d 3e 49 6e 74 65 72  |terface.h=>Inter|
00055c90  66 61 63 65 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |face>..Returns:.|
00055ca0  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
00055cb0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
00055cc0  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
00055cd0  69 6f 6e 2d 6c 69 6b 65  20 6d 61 63 72 6f 20 63  |ion-like macro c|
00055ce0  61 6c 6c 73 20 74 68 65  20 53 57 49 20 49 6e 74  |alls the SWI Int|
00055cf0  65 72 66 61 63 65 5f 50  6c 6f 74 33 64 49 63 6f  |erface_Plot3dIco|
00055d00  6e 2e 20 46 6f 72 20 6d  6f 72 65 20 69 6e 66 6f  |n. For more info|
00055d10  72 6d 61 74 69 6f 6e 20  73 65 65 20 74 68 65 20  |rmation see the |
00055d20  64 6f 63 75 6d 65 6e 74  61 74 69 6f 6e 20 73 75  |documentation su|
00055d30  70 70 6c 69 65 64 20 77  69 74 68 20 49 6e 74 65  |pplied with Inte|
00055d40  72 66 61 63 65 2e 00 00  44 41 54 41 19 01 00 00  |rface...DATA....|
00055d50  49 6e 74 65 72 66 61 63  65 5f 50 6f 6c 6c 0a 53  |Interface_Poll.S|
00055d60  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
00055d70  3e 20 2a 49 6e 74 65 72  66 61 63 65 5f 50 6f 6c  |> *Interface_Pol|
00055d80  6c 20 28 69 6e 74 20 70  6f 6c 6c 29 3b 0a 48 65  |l (int poll);.He|
00055d90  61 64 65 72 3a 09 3c 54  69 6d 73 4c 69 62 3a 49  |ader:.<TimsLib:I|
00055da0  6e 74 65 72 66 61 63 65  2e 68 3d 3e 49 6e 74 65  |nterface.h=>Inte|
00055db0  72 66 61 63 65 3e 0a 0a  52 65 74 75 72 6e 73 3a  |rface>..Returns:|
00055dc0  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
00055dd0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
00055de0  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
00055df0  74 69 6f 6e 2d 6c 69 6b  65 20 6d 61 63 72 6f 20  |tion-like macro |
00055e00  63 61 6c 6c 73 20 74 68  65 20 53 57 49 20 49 6e  |calls the SWI In|
00055e10  74 65 72 66 61 63 65 5f  50 6f 6c 6c 2e 20 46 6f  |terface_Poll. Fo|
00055e20  72 20 6d 6f 72 65 20 69  6e 66 6f 72 6d 61 74 69  |r more informati|
00055e30  6f 6e 20 73 65 65 20 74  68 65 20 64 6f 63 75 6d  |on see the docum|
00055e40  65 6e 74 61 74 69 6f 6e  20 73 75 70 70 6c 69 65  |entation supplie|
00055e50  64 20 77 69 74 68 20 49  6e 74 65 72 66 61 63 65  |d with Interface|
00055e60  2e 00 00 00 44 41 54 41  4b 01 00 00 49 6e 74 65  |....DATAK...Inte|
00055e70  72 66 61 63 65 5f 52 65  6e 64 65 72 33 64 57 69  |rface_Render3dWi|
00055e80  6e 64 6f 77 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |ndow.Syntax:.<os|
00055e90  5f 65 72 72 6f 72 3e 20  2a 49 6e 74 65 72 66 61  |_error> *Interfa|
00055ea0  63 65 5f 52 65 6e 64 65  72 33 64 57 69 6e 64 6f  |ce_Render3dWindo|
00055eb0  77 20 28 3c 77 69 6e 64  6f 77 5f 72 65 64 72 61  |w (<window_redra|
00055ec0  77 62 6c 6f 63 6b 3e 20  2a 72 65 64 72 61 77 29  |wblock> *redraw)|
00055ed0  3b 0a 48 65 61 64 65 72  3a 09 3c 54 69 6d 73 4c  |;.Header:.<TimsL|
00055ee0  69 62 3a 49 6e 74 65 72  66 61 63 65 2e 68 3d 3e  |ib:Interface.h=>|
00055ef0  49 6e 74 65 72 66 61 63  65 3e 0a 0a 52 65 74 75  |Interface>..Retu|
00055f00  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00055f10  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00055f20  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00055f30  66 75 6e 63 74 69 6f 6e  2d 6c 69 6b 65 20 6d 61  |function-like ma|
00055f40  63 72 6f 20 63 61 6c 6c  73 20 74 68 65 20 53 57  |cro calls the SW|
00055f50  49 20 49 6e 74 65 72 66  61 63 65 5f 52 65 6e 64  |I Interface_Rend|
00055f60  65 72 33 64 57 69 6e 64  6f 77 2e 20 46 6f 72 20  |er3dWindow. For |
00055f70  6d 6f 72 65 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |more information|
00055f80  20 73 65 65 20 74 68 65  20 64 6f 63 75 6d 65 6e  | see the documen|
00055f90  74 61 74 69 6f 6e 20 73  75 70 70 6c 69 65 64 20  |tation supplied |
00055fa0  77 69 74 68 20 49 6e 74  65 72 66 61 63 65 2e 00  |with Interface..|
00055fb0  44 41 54 41 3c 01 00 00  49 6e 74 65 72 66 61 63  |DATA<...Interfac|
00055fc0  65 5f 53 65 6e 64 48 65  6c 70 0a 53 79 6e 74 61  |e_SendHelp.Synta|
00055fd0  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 49  |x:.<os_error> *I|
00055fe0  6e 74 65 72 66 61 63 65  5f 53 65 6e 64 48 65 6c  |nterface_SendHel|
00055ff0  70 20 28 3c 6d 65 73 73  61 67 65 5f 68 65 61 64  |p (<message_head|
00056000  65 72 3e 20 2a 6d 65 73  73 61 67 65 5f 62 6c 6f  |er> *message_blo|
00056010  63 6b 29 3b 0a 48 65 61  64 65 72 3a 09 3c 54 69  |ck);.Header:.<Ti|
00056020  6d 73 4c 69 62 3a 49 6e  74 65 72 66 61 63 65 2e  |msLib:Interface.|
00056030  68 3d 3e 49 6e 74 65 72  66 61 63 65 3e 0a 0a 52  |h=>Interface>..R|
00056040  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
00056050  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
00056060  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
00056070  69 73 20 66 75 6e 63 74  69 6f 6e 2d 6c 69 6b 65  |is function-like|
00056080  20 6d 61 63 72 6f 20 63  61 6c 6c 73 20 74 68 65  | macro calls the|
00056090  20 53 57 49 20 49 6e 74  65 72 66 61 63 65 5f 53  | SWI Interface_S|
000560a0  65 6e 64 48 65 6c 70 2e  20 46 6f 72 20 6d 6f 72  |endHelp. For mor|
000560b0  65 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 73 65  |e information se|
000560c0  65 20 74 68 65 20 64 6f  63 75 6d 65 6e 74 61 74  |e the documentat|
000560d0  69 6f 6e 20 73 75 70 70  6c 69 65 64 20 77 69 74  |ion supplied wit|
000560e0  68 20 49 6e 74 65 72 66  61 63 65 2e 44 41 54 41  |h Interface.DATA|
000560f0  52 01 00 00 49 6e 74 65  72 66 61 63 65 5f 53 65  |R...Interface_Se|
00056100  74 57 6f 72 6b 61 72 65  61 50 6f 69 6e 74 65 72  |tWorkareaPointer|
00056110  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00056120  6f 72 3e 20 2a 49 6e 74  65 72 66 61 63 65 5f 53  |or> *Interface_S|
00056130  65 74 57 6f 72 6b 61 72  65 61 50 6f 69 6e 74 65  |etWorkareaPointe|
00056140  72 20 28 3c 77 69 6d 70  5f 70 6f 69 6e 74 65 72  |r (<wimp_pointer|
00056150  3e 20 2a 70 6f 69 6e 74  65 72 29 3b 0a 48 65 61  |> *pointer);.Hea|
00056160  64 65 72 3a 09 3c 54 69  6d 73 4c 69 62 3a 49 6e  |der:.<TimsLib:In|
00056170  74 65 72 66 61 63 65 2e  68 3d 3e 49 6e 74 65 72  |terface.h=>Inter|
00056180  66 61 63 65 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |face>..Returns:.|
00056190  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000561a0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000561b0  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
000561c0  69 6f 6e 2d 6c 69 6b 65  20 6d 61 63 72 6f 20 63  |ion-like macro c|
000561d0  61 6c 6c 73 20 74 68 65  20 53 57 49 20 49 6e 74  |alls the SWI Int|
000561e0  65 72 66 61 63 65 5f 53  65 74 57 6f 72 6b 61 72  |erface_SetWorkar|
000561f0  65 61 50 6f 69 6e 74 65  72 2e 20 46 6f 72 20 6d  |eaPointer. For m|
00056200  6f 72 65 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |ore information |
00056210  73 65 65 20 74 68 65 20  64 6f 63 75 6d 65 6e 74  |see the document|
00056220  61 74 69 6f 6e 20 73 75  70 70 6c 69 65 64 20 77  |ation supplied w|
00056230  69 74 68 20 49 6e 74 65  72 66 61 63 65 2e 00 00  |ith Interface...|
00056240  44 41 54 41 38 01 00 00  49 6e 74 65 72 66 61 63  |DATA8...Interfac|
00056250  65 5f 53 6c 61 62 42 75  74 74 6f 6e 0a 53 79 6e  |e_SlabButton.Syn|
00056260  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
00056270  2a 49 6e 74 65 72 66 61  63 65 5f 53 6c 61 62 42  |*Interface_SlabB|
00056280  75 74 74 6f 6e 20 28 3c  6d 6f 75 73 65 5f 62 6c  |utton (<mouse_bl|
00056290  6f 63 6b 3e 20 2a 6d 6f  75 73 65 29 3b 0a 48 65  |ock> *mouse);.He|
000562a0  61 64 65 72 3a 09 3c 54  69 6d 73 4c 69 62 3a 49  |ader:.<TimsLib:I|
000562b0  6e 74 65 72 66 61 63 65  2e 68 3d 3e 49 6e 74 65  |nterface.h=>Inte|
000562c0  72 66 61 63 65 3e 0a 0a  52 65 74 75 72 6e 73 3a  |rface>..Returns:|
000562d0  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
000562e0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
000562f0  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
00056300  74 69 6f 6e 2d 6c 69 6b  65 20 6d 61 63 72 6f 20  |tion-like macro |
00056310  63 61 6c 6c 73 20 74 68  65 20 53 57 49 20 49 6e  |calls the SWI In|
00056320  74 65 72 66 61 63 65 5f  53 6c 61 62 42 75 74 74  |terface_SlabButt|
00056330  6f 6e 2e 20 46 6f 72 20  6d 6f 72 65 20 69 6e 66  |on. For more inf|
00056340  6f 72 6d 61 74 69 6f 6e  20 73 65 65 20 74 68 65  |ormation see the|
00056350  20 64 6f 63 75 6d 65 6e  74 61 74 69 6f 6e 20 73  | documentation s|
00056360  75 70 70 6c 69 65 64 20  77 69 74 68 20 49 6e 74  |upplied with Int|
00056370  65 72 66 61 63 65 2e 0a  44 41 54 41 5b 01 00 00  |erface..DATA[...|
00056380  49 6e 74 65 72 66 61 63  65 5f 52 65 6d 6f 76 65  |Interface_Remove|
00056390  57 6f 72 6b 61 72 65 61  50 6f 69 6e 74 65 72 0a  |WorkareaPointer.|
000563a0  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
000563b0  72 3e 20 2a 49 6e 74 65  72 66 61 63 65 5f 52 65  |r> *Interface_Re|
000563c0  6d 6f 76 65 57 6f 72 6b  61 72 65 61 50 6f 69 6e  |moveWorkareaPoin|
000563d0  74 65 72 20 28 3c 77 69  6d 70 5f 70 6f 69 6e 74  |ter (<wimp_point|
000563e0  65 72 3e 20 2a 70 6f 69  6e 74 65 72 29 3b 0a 48  |er> *pointer);.H|
000563f0  65 61 64 65 72 3a 09 3c  54 69 6d 73 4c 69 62 3a  |eader:.<TimsLib:|
00056400  49 6e 74 65 72 66 61 63  65 2e 68 3d 3e 49 6e 74  |Interface.h=>Int|
00056410  65 72 66 61 63 65 3e 0a  0a 52 65 74 75 72 6e 73  |erface>..Returns|
00056420  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
00056430  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
00056440  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
00056450  63 74 69 6f 6e 2d 6c 69  6b 65 20 6d 61 63 72 6f  |ction-like macro|
00056460  20 63 61 6c 6c 73 20 74  68 65 20 53 57 49 20 49  | calls the SWI I|
00056470  6e 74 65 72 66 61 63 65  5f 52 65 6d 6f 76 65 57  |nterface_RemoveW|
00056480  6f 72 6b 61 72 65 61 50  6f 69 6e 74 65 72 2e 20  |orkareaPointer. |
00056490  46 6f 72 20 6d 6f 72 65  20 69 6e 66 6f 72 6d 61  |For more informa|
000564a0  74 69 6f 6e 20 73 65 65  20 74 68 65 20 64 6f 63  |tion see the doc|
000564b0  75 6d 65 6e 74 61 74 69  6f 6e 20 73 75 70 70 6c  |umentation suppl|
000564c0  69 65 64 20 77 69 74 68  20 49 6e 74 65 72 66 61  |ied with Interfa|
000564d0  63 65 2e 00 44 41 54 41  08 01 00 00 69 73 61 6c  |ce..DATA....isal|
000564e0  6e 75 6d 0a 23 50 61 72  65 6e 74 20 63 74 79 70  |num.#Parent ctyp|
000564f0  65 0a 53 79 6e 74 61 78  3a 09 69 6e 74 20 69 73  |e.Syntax:.int is|
00056500  61 6c 6e 75 6d 20 28 69  6e 74 20 63 29 3b 0a 48  |alnum (int c);.H|
00056510  65 61 64 65 72 3a 09 3c  63 74 79 70 65 2e 68 3d  |eader:.<ctype.h=|
00056520  3e 63 74 79 70 65 3e 0a  0a 52 65 74 75 72 6e 73  |>ctype>..Returns|
00056530  3a 09 4e 6f 6e 2d 7a 65  72 6f 20 69 66 20 63 20  |:.Non-zero if c |
00056540  3d 3d 20 27 41 27 2d 27  5a 27 2c 27 61 27 2d 27  |== 'A'-'Z','a'-'|
00056550  7a 27 2c 20 6f 72 20 27  30 27 2d 27 39 27 2e 0a  |z', or '0'-'9'..|
00056560  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 74  |.This function t|
00056570  65 73 74 73 20 69 66 20  74 68 65 20 67 69 76 65  |ests if the give|
00056580  6e 20 63 68 61 72 61 63  74 65 72 20 69 73 20 61  |n character is a|
00056590  6c 70 68 61 6e 75 6d 65  72 69 63 2e 0a 0a 23 61  |lphanumeric...#a|
000565a0  6c 69 67 6e 20 63 65 6e  74 72 65 0a 69 73 61 6c  |lign centre.isal|
000565b0  6e 75 6d 28 63 29 20 3d  20 28 20 3c 69 73 61 6c  |num(c) = ( <isal|
000565c0  70 68 61 3e 20 28 63 29  20 7c 7c 20 3c 69 73 64  |pha> (c) || <isd|
000565d0  69 67 69 74 3e 20 28 63  29 20 29 3b 44 41 54 41  |igit> (c) );DATA|
000565e0  be 00 00 00 69 73 61 6c  70 68 61 0a 23 50 61 72  |....isalpha.#Par|
000565f0  65 6e 74 20 63 74 79 70  65 0a 53 79 6e 74 61 78  |ent ctype.Syntax|
00056600  3a 09 69 6e 74 20 69 73  61 6c 70 68 61 20 28 69  |:.int isalpha (i|
00056610  6e 74 20 63 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |nt c);.Header:.<|
00056620  63 74 79 70 65 2e 68 3d  3e 63 74 79 70 65 3e 0a  |ctype.h=>ctype>.|
00056630  0a 52 65 74 75 72 6e 73  3a 20 4e 6f 6e 2d 7a 65  |.Returns: Non-ze|
00056640  72 6f 20 69 66 20 63 20  3d 3d 20 27 41 27 2d 27  |ro if c == 'A'-'|
00056650  5a 27 2c 20 6f 72 20 27  61 27 2d 27 7a 27 2e 0a  |Z', or 'a'-'z'..|
00056660  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 74  |.This function t|
00056670  65 73 74 73 20 69 66 20  74 68 65 20 67 69 76 65  |ests if the give|
00056680  6e 20 63 68 61 72 61 63  74 65 72 20 69 73 20 61  |n character is a|
00056690  6c 70 68 61 62 65 74 69  63 2e 00 00 44 41 54 41  |lphabetic...DATA|
000566a0  c7 00 00 00 69 73 63 6e  74 72 6c 0a 23 50 61 72  |....iscntrl.#Par|
000566b0  65 6e 74 20 63 74 79 70  65 0a 53 79 6e 74 61 78  |ent ctype.Syntax|
000566c0  3a 09 69 6e 74 20 69 73  63 6e 74 72 6c 20 28 69  |:.int iscntrl (i|
000566d0  6e 74 20 63 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |nt c);.Header:.<|
000566e0  63 74 79 70 65 2e 68 3d  3e 63 74 79 70 65 3e 0a  |ctype.h=>ctype>.|
000566f0  0a 52 65 74 75 72 6e 73  3a 09 4e 6f 6e 2d 7a 65  |.Returns:.Non-ze|
00056700  72 6f 20 69 66 20 63 20  69 73 20 61 20 63 6f 6e  |ro if c is a con|
00056710  74 72 6f 6c 20 63 68 61  72 61 63 74 65 72 2e 0a  |trol character..|
00056720  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 74  |.This function t|
00056730  65 73 74 73 20 69 66 20  74 68 65 20 67 69 76 65  |ests if the give|
00056740  6e 20 63 68 61 72 61 63  74 65 72 20 69 73 20 61  |n character is a|
00056750  20 63 6f 6e 74 72 6f 6c  20 63 68 61 72 61 63 74  | control charact|
00056760  65 72 2e 00 44 41 54 41  c3 00 00 00 69 73 64 69  |er..DATA....isdi|
00056770  67 69 74 0a 23 50 61 72  65 6e 74 20 63 74 79 70  |git.#Parent ctyp|
00056780  65 0a 53 79 6e 74 61 78  3a 09 69 6e 74 20 69 73  |e.Syntax:.int is|
00056790  64 69 67 69 74 20 28 69  6e 74 20 63 29 3b 0a 48  |digit (int c);.H|
000567a0  65 61 64 65 72 3a 09 3c  63 74 79 70 65 2e 68 3d  |eader:.<ctype.h=|
000567b0  3e 63 74 79 70 65 3e 0a  0a 52 65 74 75 72 6e 73  |>ctype>..Returns|
000567c0  3a 20 4e 6f 6e 2d 7a 65  72 6f 20 69 66 20 63 20  |: Non-zero if c |
000567d0  3d 3d 20 27 30 27 2d 27  39 27 2e 0a 0a 54 68 69  |== '0'-'9'...Thi|
000567e0  73 20 66 75 6e 63 74 69  6f 6e 20 74 65 73 74 73  |s function tests|
000567f0  20 69 66 20 74 68 65 20  67 69 76 65 6e 20 63 68  | if the given ch|
00056800  61 72 61 63 74 65 72 20  69 73 20 61 20 6e 75 6d  |aracter is a num|
00056810  65 72 69 63 20 63 68 61  72 61 63 74 65 72 20 28  |eric character (|
00056820  64 69 67 69 74 29 2e 00  44 41 54 41 dd 00 00 00  |digit)..DATA....|
00056830  69 73 67 72 61 70 68 0a  23 50 61 72 65 6e 74 20  |isgraph.#Parent |
00056840  63 74 79 70 65 0a 53 79  6e 74 61 78 3a 09 69 6e  |ctype.Syntax:.in|
00056850  74 20 69 73 67 72 61 70  68 20 28 69 6e 74 20 63  |t isgraph (int c|
00056860  29 3b 0a 48 65 61 64 65  72 3a 09 3c 63 74 79 70  |);.Header:.<ctyp|
00056870  65 2e 68 3d 3e 63 74 79  70 65 3e 0a 0a 52 65 74  |e.h=>ctype>..Ret|
00056880  75 72 6e 73 3a 09 4e 6f  6e 2d 7a 65 72 6f 20 69  |urns:.Non-zero i|
00056890  66 20 63 20 69 73 20 61  20 67 72 61 70 68 69 63  |f c is a graphic|
000568a0  20 63 68 61 72 61 63 74  65 72 2e 0a 0a 54 68 69  | character...Thi|
000568b0  73 20 66 75 6e 63 74 69  6f 6e 20 74 65 73 74 73  |s function tests|
000568c0  20 69 66 20 74 68 65 20  67 69 76 65 6e 20 63 68  | if the given ch|
000568d0  61 72 61 63 74 65 72 20  69 73 20 61 6e 79 20 70  |aracter is any p|
000568e0  72 69 6e 74 69 6e 67 20  63 68 61 72 61 63 74 65  |rinting characte|
000568f0  72 20 65 78 63 65 70 74  20 73 70 61 63 65 20 28  |r except space (|
00056900  27 a0 27 29 2e 00 00 00  44 41 54 41 bd 00 00 00  |'.')....DATA....|
00056910  69 73 6c 6f 77 65 72 0a  23 50 61 72 65 6e 74 20  |islower.#Parent |
00056920  63 74 79 70 65 0a 53 79  6e 74 61 78 3a 09 69 6e  |ctype.Syntax:.in|
00056930  74 20 69 73 6c 6f 77 65  72 20 28 69 6e 74 20 63  |t islower (int c|
00056940  29 3b 0a 48 65 61 64 65  72 3a 09 3c 63 74 79 70  |);.Header:.<ctyp|
00056950  65 2e 68 3d 3e 63 74 79  70 65 3e 0a 0a 52 65 74  |e.h=>ctype>..Ret|
00056960  75 72 6e 73 3a 09 4e 6f  6e 2d 7a 65 72 6f 20 69  |urns:.Non-zero i|
00056970  66 20 63 20 3d 3d 20 27  61 27 2d 27 7a 27 2e 0a  |f c == 'a'-'z'..|
00056980  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 74  |.This function t|
00056990  65 73 74 73 20 69 66 20  74 68 65 20 67 69 76 65  |ests if the give|
000569a0  6e 20 63 68 61 72 61 63  74 65 72 20 69 73 20 61  |n character is a|
000569b0  6e 79 20 6c 6f 77 65 72  20 63 61 73 65 20 6c 65  |ny lower case le|
000569c0  74 74 65 72 2e 00 00 00  44 41 54 41 e3 00 00 00  |tter....DATA....|
000569d0  69 73 70 72 69 6e 74 0a  23 50 61 72 65 6e 74 20  |isprint.#Parent |
000569e0  63 74 79 70 65 0a 53 79  6e 74 61 78 3a 09 69 6e  |ctype.Syntax:.in|
000569f0  74 20 69 73 70 72 69 6e  74 20 28 69 6e 74 20 63  |t isprint (int c|
00056a00  29 3b 0a 48 65 61 64 65  72 3a 09 3c 63 74 79 70  |);.Header:.<ctyp|
00056a10  65 2e 68 3d 3e 63 74 79  70 65 3e 0a 0a 52 65 74  |e.h=>ctype>..Ret|
00056a20  75 72 6e 73 3a 09 4e 6f  6e 2d 7a 65 72 6f 20 69  |urns:.Non-zero i|
00056a30  66 20 63 20 69 73 20 61  6e 79 20 70 72 69 6e 74  |f c is any print|
00056a40  69 6e 67 20 63 68 61 72  61 63 74 65 72 2e 0a 0a  |ing character...|
00056a50  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 74 65  |This function te|
00056a60  73 74 73 20 69 66 20 74  68 65 20 67 69 76 65 6e  |sts if the given|
00056a70  20 63 68 61 72 61 63 74  65 72 20 69 73 20 61 6e  | character is an|
00056a80  79 20 70 72 69 6e 74 69  6e 67 20 63 68 61 72 61  |y printing chara|
00056a90  63 74 65 72 20 69 6e 63  6c 75 64 69 6e 67 20 73  |cter including s|
00056aa0  70 61 63 65 20 28 27 20  27 29 2e 00 44 41 54 41  |pace (' ')..DATA|
00056ab0  35 01 00 00 69 73 70 75  6e 63 74 0a 23 50 61 72  |5...ispunct.#Par|
00056ac0  65 6e 74 20 63 74 79 70  65 0a 53 79 6e 74 61 78  |ent ctype.Syntax|
00056ad0  3a 09 69 6e 74 20 69 73  70 75 6e 63 74 20 28 69  |:.int ispunct (i|
00056ae0  6e 74 20 63 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |nt c);.Header:.<|
00056af0  63 74 79 70 65 2e 68 3d  3e 63 74 79 70 65 3e 0a  |ctype.h=>ctype>.|
00056b00  0a 52 65 74 75 72 6e 73  3a 09 4e 6f 6e 2d 7a 65  |.Returns:.Non-ze|
00056b10  72 6f 20 69 66 20 63 20  69 73 20 61 6e 79 20 70  |ro if c is any p|
00056b20  75 6e 63 74 75 61 74 69  6f 6e 20 63 68 61 72 61  |unctuation chara|
00056b30  63 74 65 72 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |cter...This func|
00056b40  74 69 6f 6e 20 74 65 73  74 73 20 69 66 20 74 68  |tion tests if th|
00056b50  65 20 67 69 76 65 6e 20  63 68 61 72 61 63 74 65  |e given characte|
00056b60  72 20 69 73 20 61 6e 79  20 6e 6f 6e 2d 61 6c 70  |r is any non-alp|
00056b70  68 61 6e 75 6d 65 72 69  63 20 70 72 69 6e 74 69  |hanumeric printi|
00056b80  6e 67 20 63 68 61 72 61  63 74 65 72 20 65 78 63  |ng character exc|
00056b90  65 70 74 20 73 70 61 63  65 20 28 27 a0 27 29 2e  |ept space ('.').|
00056ba0  0a 0a 23 61 6c 69 67 6e  20 63 65 6e 74 72 65 0a  |..#align centre.|
00056bb0  69 73 70 75 6e 63 74 28  63 29 20 3d 20 28 20 3c  |ispunct(c) = ( <|
00056bc0  69 73 67 72 61 70 68 3e  20 28 63 29 20 26 26 20  |isgraph> (c) && |
00056bd0  21 3c 69 73 61 6c 6e 75  6d 3e 20 28 63 29 20 29  |!<isalnum> (c) )|
00056be0  3b 00 00 00 44 41 54 41  81 01 00 00 69 73 73 70  |;...DATA....issp|
00056bf0  61 63 65 0a 23 50 61 72  65 6e 74 20 63 74 79 70  |ace.#Parent ctyp|
00056c00  65 0a 53 79 6e 74 61 78  3a 09 69 6e 74 20 69 73  |e.Syntax:.int is|
00056c10  73 70 61 63 65 20 28 69  6e 74 20 63 29 3b 0a 48  |space (int c);.H|
00056c20  65 61 64 65 72 3a 09 3c  63 74 79 70 65 2e 68 3d  |eader:.<ctype.h=|
00056c30  3e 63 74 79 70 65 3e 0a  0a 52 65 74 75 72 6e 73  |>ctype>..Returns|
00056c40  3a 09 4e 6f 6e 2d 7a 65  72 6f 20 69 66 20 63 20  |:.Non-zero if c |
00056c50  69 73 20 61 20 77 68 69  74 65 20 73 70 61 63 65  |is a white space|
00056c60  20 63 68 61 72 61 63 74  65 72 2e 0a 0a 54 68 69  | character...Thi|
00056c70  73 20 66 75 6e 63 74 69  6f 6e 20 74 65 73 74 73  |s function tests|
00056c80  20 69 66 20 74 68 65 20  67 69 76 65 6e 20 63 68  | if the given ch|
00056c90  61 72 61 63 74 65 72 20  69 73 0a 61 6e 79 20 77  |aracter is.any w|
00056ca0  68 69 74 65 20 73 70 61  63 65 20 63 68 61 72 61  |hite space chara|
00056cb0  63 74 65 72 20 69 65 20  6f 6e 65 20 6f 66 20 74  |cter ie one of t|
00056cc0  68 65 0a 66 6f 6c 6c 6f  77 69 6e 67 3a 0a 0a 23  |he.following:..#|
00056cd0  69 6e 64 65 6e 74 20 36  0a 23 54 61 62 6c 65 20  |indent 6.#Table |
00056ce0  43 6f 6c 75 6d 6e 73 20  32 0a 53 70 61 63 65 20  |Columns 2.Space |
00056cf0  28 27 20 27 29 0a 46 6f  72 6d 20 66 65 65 64 20  |(' ').Form feed |
00056d00  28 27 5c 5c 66 27 29 0a  4e 65 77 6c 69 6e 65 20  |('\\f').Newline |
00056d10  28 27 5c 5c 6e 27 29 0a  43 61 72 72 69 61 67 65  |('\\n').Carriage|
00056d20  20 72 65 74 75 72 6e 20  28 27 5c 5c 72 27 29 0a  | return ('\\r').|
00056d30  48 6f 72 69 7a 6f 6e 74  61 6c 20 74 61 62 20 28  |Horizontal tab (|
00056d40  27 5c 5c 74 27 29 0a 56  65 72 74 69 63 61 6c 20  |'\\t').Vertical |
00056d50  74 61 62 20 28 27 5c 5c  76 27 29 0a 23 45 6e 64  |tab ('\\v').#End|
00056d60  54 61 62 6c 65 00 00 00  44 41 54 41 bd 00 00 00  |Table...DATA....|
00056d70  69 73 75 70 70 65 72 0a  23 50 61 72 65 6e 74 20  |isupper.#Parent |
00056d80  63 74 79 70 65 0a 53 79  6e 74 61 78 3a 09 69 6e  |ctype.Syntax:.in|
00056d90  74 20 69 73 75 70 70 65  72 20 28 69 6e 74 20 63  |t isupper (int c|
00056da0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 63 74 79 70  |);.Header:.<ctyp|
00056db0  65 2e 68 3d 3e 63 74 79  70 65 3e 0a 0a 52 65 74  |e.h=>ctype>..Ret|
00056dc0  75 72 6e 73 3a 09 4e 6f  6e 2d 7a 65 72 6f 20 69  |urns:.Non-zero i|
00056dd0  66 20 63 20 3d 3d 20 27  41 27 2d 27 5a 27 2e 0a  |f c == 'A'-'Z'..|
00056de0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 74  |.This function t|
00056df0  65 73 74 73 20 69 66 20  74 68 65 20 67 69 76 65  |ests if the give|
00056e00  6e 20 63 68 61 72 61 63  74 65 72 20 69 73 20 61  |n character is a|
00056e10  6e 79 20 75 70 70 65 72  20 63 61 73 65 20 6c 65  |ny upper case le|
00056e20  74 74 65 72 2e 00 00 00  44 41 54 41 cb 00 00 00  |tter....DATA....|
00056e30  69 73 78 64 69 67 69 74  0a 23 50 61 72 65 6e 74  |isxdigit.#Parent|
00056e40  20 63 74 79 70 65 0a 53  79 6e 74 61 78 3a 09 69  | ctype.Syntax:.i|
00056e50  6e 74 20 69 73 78 64 69  67 69 74 20 28 69 6e 74  |nt isxdigit (int|
00056e60  20 63 29 3b 0a 48 65 61  64 65 72 3a 09 3c 63 74  | c);.Header:.<ct|
00056e70  79 70 65 2e 68 3d 3e 63  74 79 70 65 3e 0a 0a 52  |ype.h=>ctype>..R|
00056e80  65 74 75 72 6e 73 3a 09  4e 6f 6e 2d 7a 65 72 6f  |eturns:.Non-zero|
00056e90  20 69 66 20 63 20 3d 3d  20 27 30 27 2d 27 39 27  | if c == '0'-'9'|
00056ea0  2c 20 6f 72 20 27 41 27  2d 27 46 27 2e 0a 0a 54  |, or 'A'-'F'...T|
00056eb0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 74 65 73  |his function tes|
00056ec0  74 73 20 69 66 20 74 68  65 20 67 69 76 65 6e 20  |ts if the given |
00056ed0  63 68 61 72 61 63 74 65  72 20 69 73 20 61 6e 79  |character is any|
00056ee0  20 68 65 78 61 64 65 63  69 6d 61 6c 20 64 69 67  | hexadecimal dig|
00056ef0  69 74 2e 00 44 49 52 24  28 00 00 00 28 00 00 00  |it..DIR$(...(...|
00056f00  1c 6f 05 00 46 ff ff ff  6c f3 be 22 cb 00 00 00  |.o..F...l.."....|
00056f10  13 00 00 00 00 00 00 00  62 75 66 00 44 41 54 41  |........buf.DATA|
00056f20  cb 00 00 00 6a 6d 70 5f  62 75 66 0a 54 68 65 20  |....jmp_buf.The |
00056f30  74 79 70 65 20 6a 6d 70  5f 62 75 66 20 69 73 20  |type jmp_buf is |
00056f40  64 65 66 69 6e 65 64 20  69 6e 20 3c 73 65 74 6a  |defined in <setj|
00056f50  6d 70 2e 68 3d 3e 73 65  74 6a 6d 70 5f 68 3e 20  |mp.h=>setjmp_h> |
00056f60  61 73 20 61 6e 20 6f 62  6a 65 63 74 20 63 61 70  |as an object cap|
00056f70  61 62 6c 65 20 6f 66 20  68 6f 6c 64 69 6e 67 20  |able of holding |
00056f80  69 6e 66 6f 72 6d 61 74  69 6f 6e 20 61 62 6f 75  |information abou|
00056f90  74 20 74 68 65 20 63 75  72 72 65 6e 74 20 65 6e  |t the current en|
00056fa0  76 69 72 6f 6e 6d 65 6e  74 2e 20 49 6e 20 45 61  |vironment. In Ea|
00056fb0  73 79 20 43 20 69 74 20  69 73 20 64 65 66 69 6e  |sy C it is defin|
00056fc0  65 64 20 61 73 20 61 20  70 6f 69 6e 74 65 72 20  |ed as a pointer |
00056fd0  74 6f 20 61 6e 20 61 72  72 61 79 20 6f 66 20 32  |to an array of 2|
00056fe0  32 20 69 6e 74 73 2e 00  44 49 52 24 70 00 00 00  |2 ints..DIR$p...|
00056ff0  70 00 00 00 58 70 05 00  46 ff ff ff 27 12 46 23  |p...Xp..F...'.F#|
00057000  98 00 00 00 13 00 00 00  00 00 00 00 62 65 76 65  |............beve|
00057010  6c 6c 65 64 00 00 00 00  f0 70 05 00 46 ff ff ff  |lled.....p..F...|
00057020  07 0c 46 23 94 00 00 00  13 00 00 00 00 00 00 00  |..F#............|
00057030  6d 69 74 72 65 64 00 00  84 71 05 00 46 ff ff ff  |mitred...q..F...|
00057040  0e 0f 46 23 94 00 00 00  13 00 00 00 00 00 00 00  |..F#............|
00057050  72 6f 75 6e 64 00 00 00  44 41 54 41 98 00 00 00  |round...DATA....|
00057060  6a 6f 69 6e 5f 62 65 76  65 6c 6c 65 64 0a 54 68  |join_bevelled.Th|
00057070  69 73 20 6d 61 63 72 6f  20 69 73 20 64 65 66 69  |is macro is defi|
00057080  6e 65 64 20 69 6e 20 3c  64 72 61 77 6d 6f 64 2e  |ned in <drawmod.|
00057090  68 3d 3e 64 72 61 77 6d  6f 64 3e 2e 20 49 74 20  |h=>drawmod>. It |
000570a0  69 73 20 61 20 76 61 6c  75 65 20 72 65 70 72 65  |is a value repre|
000570b0  73 65 6e 74 69 6e 67 20  61 20 62 65 76 65 6c 6c  |senting a bevell|
000570c0  65 64 20 6a 6f 69 6e 2e  20 49 74 20 69 73 20 64  |ed join. It is d|
000570d0  65 66 69 6e 65 64 20 61  73 20 28 28 75 6e 73 69  |efined as ((unsi|
000570e0  67 6e 65 64 20 63 68 61  72 29 30 78 30 32 29 2e  |gned char)0x02).|
000570f0  44 41 54 41 94 00 00 00  6a 6f 69 6e 5f 6d 69 74  |DATA....join_mit|
00057100  72 65 64 0a 54 68 69 73  20 6d 61 63 72 6f 20 69  |red.This macro i|
00057110  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 64 72  |s defined in <dr|
00057120  61 77 6d 6f 64 2e 68 3d  3e 64 72 61 77 6d 6f 64  |awmod.h=>drawmod|
00057130  3e 2e 20 49 74 20 69 73  20 61 20 76 61 6c 75 65  |>. It is a value|
00057140  20 72 65 70 72 65 73 65  6e 74 69 6e 67 20 61 20  | representing a |
00057150  6d 69 74 72 65 64 20 6a  6f 69 6e 2e 20 49 73 20  |mitred join. Is |
00057160  69 74 20 64 65 66 69 6e  65 64 20 61 73 20 28 28  |it defined as ((|
00057170  75 6e 73 69 67 6e 65 64  20 63 68 61 72 29 30 78  |unsigned char)0x|
00057180  30 30 29 2e 44 41 54 41  94 00 00 00 6a 6f 69 6e  |00).DATA....join|
00057190  5f 72 6f 75 6e 64 0a 54  68 69 73 20 6d 61 63 72  |_round.This macr|
000571a0  6f 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |o is defined in |
000571b0  3c 64 72 61 77 6d 6f 64  2e 68 3d 3e 64 72 61 77  |<drawmod.h=>draw|
000571c0  6d 6f 64 3e 2e 20 49 74  20 69 73 20 61 20 76 61  |mod>. It is a va|
000571d0  6c 75 65 20 72 65 70 72  65 73 65 6e 74 69 6e 67  |lue representing|
000571e0  20 61 20 72 6f 75 6e 64  65 64 20 6a 6f 69 6e 2e  | a rounded join.|
000571f0  20 49 73 20 69 74 20 64  65 66 69 6e 65 64 20 61  | Is it defined a|
00057200  73 20 28 28 75 6e 73 69  67 6e 65 64 20 63 68 61  |s ((unsigned cha|
00057210  72 29 30 78 30 31 29 2e  44 49 52 24 88 00 00 00  |r)0x01).DIR$....|
00057220  88 00 00 00 a0 72 05 00  46 fd ff ff b6 08 b0 24  |.....r..F......$|
00057230  c4 01 00 00 13 00 00 00  00 00 00 00 61 72 69 74  |............arit|
00057240  68 5f 00 00 64 74 05 00  46 fd ff ff d0 2a ae 24  |h_..dt..F....*.$|
00057250  dd 01 00 00 13 00 00 00  00 00 00 00 65 6e 76 5f  |............env_|
00057260  00 00 00 00 44 76 05 00  46 fd ff ff 7a c9 af 24  |....Dv..F...z..$|
00057270  75 00 00 00 13 00 00 00  00 00 00 00 6d 65 6d 5f  |u...........mem_|
00057280  00 00 00 00 bc 76 05 00  46 fd ff ff 8a c0 ae 24  |.....v..F......$|
00057290  2e 01 00 00 13 00 00 00  00 00 00 00 6f 73 5f 00  |............os_.|
000572a0  44 41 54 41 c4 01 00 00  41 72 69 74 68 6d 65 74  |DATA....Arithmet|
000572b0  69 63 20 46 75 6e 63 74  69 6f 6e 73 0a 54 68 65  |ic Functions.The|
000572c0  73 65 20 66 75 6e 63 74  69 6f 6e 73 20 68 61 76  |se functions hav|
000572d0  65 20 62 65 65 6e 20 6f  70 74 69 6d 69 73 65 64  |e been optimised|
000572e0  20 74 6f 20 6d 61 6b 65  20 74 68 65 6d 20 76 65  | to make them ve|
000572f0  72 79 20 66 61 73 74 2e  0a 0a 23 49 6e 64 65 6e  |ry fast...#Inden|
00057300  74 20 35 0a 23 54 61 62  6c 65 20 33 20 32 30 0a  |t 5.#Table 3 20.|
00057310  3c 5f 6b 65 72 6e 65 6c  5f 73 64 69 76 3e 0a 3c  |<_kernel_sdiv>.<|
00057320  5f 6b 65 72 6e 65 6c 5f  73 64 69 76 31 30 3e 0a  |_kernel_sdiv10>.|
00057330  3c 5f 6b 65 72 6e 65 6c  5f 73 72 65 6d 3e 0a 3c  |<_kernel_srem>.<|
00057340  5f 6b 65 72 6e 65 6c 5f  75 64 69 76 3e 0a 3c 5f  |_kernel_udiv>.<_|
00057350  6b 65 72 6e 65 6c 5f 75  64 69 76 31 30 3e 0a 3c  |kernel_udiv10>.<|
00057360  5f 6b 65 72 6e 65 6c 5f  75 72 65 6d 3e 0a 23 45  |_kernel_urem>.#E|
00057370  6e 64 54 61 62 6c 65 0a  0a 23 49 6e 64 65 6e 74  |ndTable..#Indent|
00057380  20 30 0a 54 68 65 20 64  69 76 69 73 69 6f 6e 20  | 0.The division |
00057390  66 75 6e 63 74 69 6f 6e  73 20 61 6c 73 6f 20 63  |functions also c|
000573a0  61 6c 63 75 6c 61 74 65  20 74 68 65 20 72 65 6d  |alculate the rem|
000573b0  61 69 6e 64 65 72 20 61  6e 64 20 72 65 74 75 72  |ainder and retur|
000573c0  6e 20 69 74 20 69 6e 20  74 68 65 20 73 65 63 6f  |n it in the seco|
000573d0  6e 64 20 61 72 67 75 6d  65 6e 74 20 28 61 32 29  |nd argument (a2)|
000573e0  2e 20 41 6c 74 68 6f 75  67 68 20 74 68 69 73 20  |. Although this |
000573f0  69 73 20 6e 6f 74 20 61  63 63 65 73 73 69 62 6c  |is not accessibl|
00057400  65 20 66 72 6f 6d 20 43  2c 20 75 73 69 6e 67 20  |e from C, using |
00057410  74 68 69 73 20 66 65 61  74 75 72 65 20 77 68 65  |this feature whe|
00057420  6e 20 69 6e 74 65 72 66  61 63 69 6e 67 20 66 72  |n interfacing fr|
00057430  6f 6d 20 41 73 73 65 6d  62 6c 79 20 4c 61 6e 67  |om Assembly Lang|
00057440  75 61 67 65 20 63 6f 75  6c 64 20 62 65 20 61 20  |uage could be a |
00057450  70 6f 74 65 6e 74 69 61  6c 20 74 69 6d 65 73 61  |potential timesa|
00057460  76 65 72 2e 44 41 54 41  dd 01 00 00 45 6e 76 69  |ver.DATA....Envi|
00057470  72 6f 6e 6d 65 6e 74 20  4d 61 6e 61 67 65 6d 65  |ronment Manageme|
00057480  6e 74 20 46 75 6e 63 74  69 6f 6e 73 0a 23 54 61  |nt Functions.#Ta|
00057490  62 6c 65 20 39 0a 3c 5f  6b 65 72 6e 65 6c 5f 63  |ble 9.<_kernel_c|
000574a0  75 72 72 65 6e 74 5f 73  74 61 63 6b 5f 63 68 75  |urrent_stack_chu|
000574b0  6e 6b 3e 0a 3c 5f 6b 65  72 6e 65 6c 5f 75 6e 77  |nk>.<_kernel_unw|
000574c0  69 6e 64 3e 0a 3c 5f 6b  65 72 6e 65 6c 5f 70 72  |ind>.<_kernel_pr|
000574d0  6f 63 6e 61 6d 65 3e 0a  3c 5f 6b 65 72 6e 65 6c  |ocname>.<_kernel|
000574e0  5f 6c 61 6e 67 75 61 67  65 3e 0a 3c 5f 6b 65 72  |_language>.<_ker|
000574f0  6e 65 6c 5f 63 6f 6d 6d  61 6e 64 5f 73 74 72 69  |nel_command_stri|
00057500  6e 67 3d 3e 5f 6b 65 72  6e 65 6c 5f 63 6f 6d 6d  |ng=>_kernel_comm|
00057510  61 6e 64 5f 73 74 72 3e  0a 3c 5f 6b 65 72 6e 65  |and_str>.<_kerne|
00057520  6c 5f 73 65 74 72 65 74  75 72 6e 63 6f 64 65 3e  |l_setreturncode>|
00057530  0a 3c 5f 6b 65 72 6e 65  6c 5f 65 78 69 74 3e 0a  |.<_kernel_exit>.|
00057540  3c 5f 6b 65 72 6e 65 6c  5f 72 61 69 73 65 5f 65  |<_kernel_raise_e|
00057550  72 72 6f 72 3e 0a 3c 5f  6b 65 72 6e 65 6c 5f 65  |rror>.<_kernel_e|
00057560  78 69 74 74 72 61 70 68  61 6e 64 6c 65 72 3e 0a  |xittraphandler>.|
00057570  3c 5f 6b 65 72 6e 65 6c  5f 68 6f 73 74 6f 73 3e  |<_kernel_hostos>|
00057580  0a 3c 5f 6b 65 72 6e 65  6c 5f 66 70 61 76 61 69  |.<_kernel_fpavai|
00057590  6c 61 62 6c 65 3e 0a 3c  5f 6b 65 72 6e 65 6c 5f  |lable>.<_kernel_|
000575a0  6c 61 73 74 5f 6f 73 65  72 72 6f 72 3d 3e 5f 6b  |last_oserror=>_k|
000575b0  65 72 6e 65 6c 5f 6c 61  73 74 5f 6f 73 65 72 72  |ernel_last_oserr|
000575c0  6f 3e 0a 3c 5f 6b 65 72  6e 65 6c 5f 67 65 74 65  |o>.<_kernel_gete|
000575d0  6e 76 3e 0a 3c 5f 6b 65  72 6e 65 6c 5f 73 65 74  |nv>.<_kernel_set|
000575e0  65 6e 76 3e 0a 3c 5f 6b  65 72 6e 65 6c 5f 65 73  |env>.<_kernel_es|
000575f0  63 61 70 65 5f 73 65 65  6e 3e 0a 3c 5f 6b 65 72  |cape_seen>.<_ker|
00057600  6e 65 6c 5f 69 72 71 73  5f 6f 6e 3e 0a 3c 5f 6b  |nel_irqs_on>.<_k|
00057610  65 72 6e 65 6c 5f 69 72  71 73 5f 6f 66 66 3e 0a  |ernel_irqs_off>.|
00057620  3c 5f 6b 65 72 6e 65 6c  5f 69 72 71 73 5f 64 69  |<_kernel_irqs_di|
00057630  73 61 62 6c 65 64 3e 0a  23 45 6e 64 54 61 62 6c  |sabled>.#EndTabl|
00057640  65 00 00 00 44 41 54 41  75 00 00 00 4d 65 6d 6f  |e...DATAu...Memo|
00057650  72 79 20 4d 61 6e 61 67  65 6d 65 6e 74 20 46 75  |ry Management Fu|
00057660  6e 63 74 69 6f 6e 73 0a  23 49 6e 64 65 6e 74 20  |nctions.#Indent |
00057670  32 0a 3c 5f 6b 65 72 6e  65 6c 5f 61 6c 6c 6f 63  |2.<_kernel_alloc|
00057680  3e 0a 3c 5f 6b 65 72 6e  65 6c 5f 72 65 67 69 73  |>.<_kernel_regis|
00057690  74 65 72 5f 61 6c 6c 6f  63 73 3e 0a 3c 5f 6b 65  |ter_allocs>.<_ke|
000576a0  72 6e 65 6c 5f 72 65 67  69 73 74 65 72 5f 73 6c  |rnel_register_sl|
000576b0  6f 74 65 78 74 65 6e 64  3e 00 00 00 44 41 54 41  |otextend>...DATA|
000576c0  2e 01 00 00 4f 70 65 72  61 74 69 6e 67 20 53 79  |....Operating Sy|
000576d0  73 74 65 6d 20 43 61 6c  6c 73 20 46 75 6e 63 74  |stem Calls Funct|
000576e0  69 6f 6e 73 0a 23 49 6e  64 65 6e 74 20 32 0a 23  |ions.#Indent 2.#|
000576f0  54 61 62 6c 65 20 37 0a  3c 5f 6b 65 72 6e 65 6c  |Table 7.<_kernel|
00057700  5f 73 77 69 3e 0a 3c 5f  6b 65 72 6e 65 6c 5f 73  |_swi>.<_kernel_s|
00057710  77 69 5f 63 3e 0a 3c 5f  6b 65 72 6e 65 6c 5f 6f  |wi_c>.<_kernel_o|
00057720  73 62 79 74 65 3e 0a 3c  5f 6b 65 72 6e 65 6c 5f  |sbyte>.<_kernel_|
00057730  6f 73 72 64 63 68 3e 0a  3c 5f 6b 65 72 6e 65 6c  |osrdch>.<_kernel|
00057740  5f 6f 73 77 72 63 68 3e  0a 3c 5f 6b 65 72 6e 65  |_oswrch>.<_kerne|
00057750  6c 5f 6f 73 62 67 65 74  3e 0a 3c 5f 6b 65 72 6e  |l_osbget>.<_kern|
00057760  65 6c 5f 6f 73 62 70 75  74 3e 0a 3c 5f 6b 65 72  |el_osbput>.<_ker|
00057770  6e 65 6c 5f 6f 73 67 62  70 62 3e 0a 3c 5f 6b 65  |nel_osgbpb>.<_ke|
00057780  72 6e 65 6c 5f 6f 73 77  6f 72 64 3e 0a 3c 5f 6b  |rnel_osword>.<_k|
00057790  65 72 6e 65 6c 5f 6f 73  66 69 6e 64 3e 0a 3c 5f  |ernel_osfind>.<_|
000577a0  6b 65 72 6e 65 6c 5f 6f  73 66 69 6c 65 3e 0a 3c  |kernel_osfile>.<|
000577b0  5f 6b 65 72 6e 65 6c 5f  6f 73 61 72 67 73 3e 0a  |_kernel_osargs>.|
000577c0  3c 5f 6b 65 72 6e 65 6c  5f 6f 73 63 6c 69 3e 0a  |<_kernel_oscli>.|
000577d0  3c 5f 6b 65 72 6e 65 6c  5f 73 79 73 74 65 6d 3e  |<_kernel_system>|
000577e0  0a 23 45 6e 64 54 61 62  6c 65 00 00 44 41 54 41  |.#EndTable..DATA|
000577f0  1b 01 00 00 44 65 73 6b  4c 69 62 3a 4b 62 64 2e  |....DeskLib:Kbd.|
00057800  68 0a 56 65 72 73 69 6f  6e 3a 20 31 2e 30 31 20  |h.Version: 1.01 |
00057810  28 32 34 20 4a 75 6c 20  31 39 39 33 29 0a 23 6c  |(24 Jul 1993).#l|
00057820  69 6e 65 0a 54 68 69 73  20 68 65 61 64 65 72 20  |ine.This header |
00057830  64 65 63 6c 61 72 65 73  20 66 75 6e 63 74 69 6f  |declares functio|
00057840  6e 73 20 66 6f 72 20 72  65 61 64 69 6e 67 20 6b  |ns for reading k|
00057850  65 79 70 72 65 73 73 65  73 3a 0a 0a 46 75 6e 63  |eypresses:..Func|
00057860  74 69 6f 6e 73 3a 0a 0a  23 69 6e 64 65 6e 74 20  |tions:..#indent |
00057870  31 0a 23 54 61 62 6c 65  20 63 6f 6c 75 6d 6e 73  |1.#Table columns|
00057880  20 33 0a 3c 4b 62 64 5f  4b 65 79 44 6f 77 6e 3e  | 3.<Kbd_KeyDown>|
00057890  0a 3c 4b 62 64 5f 47 45  54 3e 0a 3c 4b 62 64 5f  |.<Kbd_GET>.<Kbd_|
000578a0  47 65 74 4d 6f 64 69 66  69 65 72 73 3e 0a 23 45  |GetModifiers>.#E|
000578b0  6e 64 54 61 62 6c 65 0a  23 69 6e 64 65 6e 74 0a  |ndTable.#indent.|
000578c0  0a 54 79 70 65 73 3a 0a  0a 23 69 6e 64 65 6e 74  |.Types:..#indent|
000578d0  20 39 0a 23 54 61 62 6c  65 20 31 20 32 30 0a 3c  | 9.#Table 1 20.<|
000578e0  6b 62 64 5f 6e 65 67 69  6e 6b 65 79 3e 0a 3c 6b  |kbd_neginkey>.<k|
000578f0  62 64 5f 6d 6f 64 69 66  69 65 72 73 3e 0a 23 45  |bd_modifiers>.#E|
00057900  6e 64 54 61 62 6c 65 00  44 49 52 24 d4 00 00 00  |ndTable.DIR$....|
00057910  d4 00 00 00 dc 79 05 00  46 ff ff ff 4f 9a 30 25  |.....y..F...O.0%|
00057920  40 01 00 00 13 00 00 00  00 00 00 00 47 45 54 00  |@...........GET.|
00057930  1c 7b 05 00 46 ff ff ff  09 a6 30 25 d2 01 00 00  |.{..F.....0%....|
00057940  13 00 00 00 00 00 00 00  47 65 74 4d 6f 64 69 66  |........GetModif|
00057950  69 65 72 73 00 00 00 00  f0 7c 05 00 46 ff ff ff  |iers.....|..F...|
00057960  f9 92 30 25 45 01 00 00  13 00 00 00 00 00 00 00  |..0%E...........|
00057970  4b 65 79 44 6f 77 6e 00  38 7e 05 00 46 ff ff ff  |KeyDown.8~..F...|
00057980  61 b9 30 25 90 01 00 00  13 00 00 00 00 00 00 00  |a.0%............|
00057990  6d 6f 64 69 66 69 65 72  73 00 00 00 c8 7f 05 00  |modifiers.......|
000579a0  46 ff ff ff 94 d5 30 25  f0 02 00 00 13 00 00 00  |F.....0%........|
000579b0  00 00 00 00 6e 65 67 69  6e 6b 65 79 00 00 00 00  |....neginkey....|
000579c0  b8 82 05 00 46 fd ff ff  1d 0d 56 26 12 01 00 00  |....F.....V&....|
000579d0  13 00 00 00 00 00 00 00  54 4c 00 00 44 41 54 41  |........TL..DATA|
000579e0  40 01 00 00 4b 62 64 5f  47 45 54 0a 53 79 6e 74  |@...Kbd_GET.Synt|
000579f0  61 78 3a 09 63 68 61 72  20 4b 62 64 5f 47 45 54  |ax:.char Kbd_GET|
00057a00  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
00057a10  09 3c 44 65 73 6b 4c 69  62 3a 4b 62 64 2e 68 3d  |.<DeskLib:Kbd.h=|
00057a20  3e 4b 62 64 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |>Kbd>..Returns:.|
00057a30  41 53 43 49 49 20 63 6f  64 65 20 6f 66 20 6e 65  |ASCII code of ne|
00057a40  78 74 20 6b 65 79 20 70  72 65 73 73 65 64 2e 0a  |xt key pressed..|
00057a50  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
00057a60  65 61 64 73 20 61 20 63  68 61 72 61 63 74 65 72  |eads a character|
00057a70  20 66 72 6f 6d 20 74 68  65 20 63 75 72 72 65 6e  | from the curren|
00057a80  74 20 69 6e 70 75 74 20  73 74 72 65 61 6d 2e 20  |t input stream. |
00057a90  49 74 20 77 61 69 74 73  20 75 6e 74 69 6c 20 6f  |It waits until o|
00057aa0  6e 65 20 69 73 20 61 76  61 69 6c 61 62 6c 65 2c  |ne is available,|
00057ab0  20 73 6f 20 6d 61 79 20  68 61 6c 74 20 74 68 65  | so may halt the|
00057ac0  20 70 72 6f 67 72 61 6d  20 74 65 6d 70 6f 72 61  | program tempora|
00057ad0  72 69 6c 79 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |rily...This func|
00057ae0  74 69 6f 6e 20 69 73 20  69 64 65 6e 74 69 63 61  |tion is identica|
00057af0  6c 20 74 6f 20 4f 53 5f  52 65 61 64 43 2c 20 6f  |l to OS_ReadC, o|
00057b00  72 20 3c 47 45 54 3d 3e  42 61 73 69 63 3a 47 45  |r <GET=>Basic:GE|
00057b10  54 3e 20 69 6e 20 42 61  73 69 63 2e 44 41 54 41  |T> in Basic.DATA|
00057b20  d2 01 00 00 4b 62 64 5f  47 65 74 4d 6f 64 69 66  |....Kbd_GetModif|
00057b30  69 65 72 73 0a 53 79 6e  74 61 78 3a 09 3c 6d 6f  |iers.Syntax:.<mo|
00057b40  64 69 66 69 65 72 73 3e  20 4b 62 64 5f 47 65 74  |difiers> Kbd_Get|
00057b50  4d 6f 64 69 66 69 65 72  73 20 28 3c 42 4f 4f 4c  |Modifiers (<BOOL|
00057b60  3e 20 6c 72 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |> lr);.Header:.<|
00057b70  54 69 6d 73 4c 69 62 3a  4b 62 64 2e 68 3d 3e 4b  |TimsLib:Kbd.h=>K|
00057b80  62 64 5f 54 4c 3e 0a 0a  53 79 6e 74 61 78 3a 09  |bd_TL>..Syntax:.|
00057b90  3c 6b 62 64 5f 6d 6f 64  69 66 69 65 72 73 3e 20  |<kbd_modifiers> |
00057ba0  4b 62 64 5f 47 65 74 4d  6f 64 69 66 69 65 72 73  |Kbd_GetModifiers|
00057bb0  20 28 3c 42 4f 4f 4c 3e  20 6c 72 29 3b 0a 48 65  | (<BOOL> lr);.He|
00057bc0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 4b  |ader:.<DeskLib:K|
00057bd0  62 64 2e 68 3d 3e 4b 62  64 3e 0a 0a 52 65 74 75  |bd.h=>Kbd>..Retu|
00057be0  72 6e 73 3a 09 54 68 65  20 73 74 61 74 75 73 20  |rns:.The status |
00057bf0  6f 66 20 74 68 65 20 6d  6f 64 69 66 69 65 72 20  |of the modifier |
00057c00  6b 65 79 73 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |keys...This func|
00057c10  74 69 6f 6e 20 66 69 6e  64 73 20 6f 75 74 20 74  |tion finds out t|
00057c20  68 65 20 73 74 61 74 65  20 6f 66 20 76 61 72 69  |he state of vari|
00057c30  6f 75 73 20 6d 6f 64 69  66 69 65 72 20 28 7b 2a  |ous modifier ({*|
00057c40  7d 53 68 69 66 74 7b 2a  7d 2c 20 7b 2a 7d 43 74  |}Shift{*}, {*}Ct|
00057c50  72 6c 7b 2a 7d 20 65 74  63 29 20 6b 65 79 73 2e  |rl{*} etc) keys.|
00057c60  20 49 66 20 2f 6c 72 2f  20 69 73 20 3c 54 52 55  | If /lr/ is <TRU|
00057c70  45 3e 20 74 68 65 6e 20  74 68 65 20 73 74 72 75  |E> then the stru|
00057c80  63 74 75 72 65 20 72 65  74 75 72 6e 65 64 20 77  |cture returned w|
00057c90  69 6c 6c 20 63 6f 72 72  65 63 74 6c 79 20 63 6f  |ill correctly co|
00057ca0  6e 74 61 69 6e 20 74 68  65 20 73 74 61 74 65 20  |ntain the state |
00057cb0  6f 66 20 74 68 65 20 69  6e 64 69 76 69 64 75 61  |of the individua|
00057cc0  6c 20 6c 65 66 74 20 61  6e 64 20 72 69 67 68 74  |l left and right|
00057cd0  20 6b 65 79 73 2c 20 65  6c 73 65 20 65 69 74 68  | keys, else eith|
00057ce0  65 72 20 77 69 6c 6c 20  63 6f 75 6e 74 2e 00 00  |er will count...|
00057cf0  44 41 54 41 45 01 00 00  4b 62 64 5f 4b 65 79 44  |DATAE...Kbd_KeyD|
00057d00  6f 77 6e 0a 53 79 6e 74  61 78 3a 09 3c 42 4f 4f  |own.Syntax:.<BOO|
00057d10  4c 3e 20 4b 62 64 5f 4b  65 79 44 6f 77 6e 20 28  |L> Kbd_KeyDown (|
00057d20  69 6e 74 20 6b 65 79 6e  75 6d 29 3b 0a 48 65 61  |int keynum);.Hea|
00057d30  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 4b 62  |der:.<DeskLib:Kb|
00057d40  64 2e 68 3d 3e 4b 62 64  3e 0a 0a 52 65 74 75 72  |d.h=>Kbd>..Retur|
00057d50  6e 73 3a 09 3c 54 52 55  45 3e 20 69 66 20 74 68  |ns:.<TRUE> if th|
00057d60  65 20 6b 65 79 20 69 73  20 62 65 69 6e 67 20 70  |e key is being p|
00057d70  72 65 73 73 65 64 2e 0a  0a 54 68 69 73 20 66 75  |ressed...This fu|
00057d80  6e 63 74 69 6f 6e 20 63  68 65 63 6b 73 20 74 6f  |nction checks to|
00057d90  20 73 65 65 20 69 66 20  74 68 65 20 67 69 76 65  | see if the give|
00057da0  6e 20 6b 65 79 20 69 73  20 63 75 72 72 65 6e 74  |n key is current|
00057db0  6c 79 20 62 65 69 6e 67  20 70 72 65 73 73 65 64  |ly being pressed|
00057dc0  20 28 6e 6f 74 20 64 65  70 72 65 73 73 65 64 20  | (not depressed |
00057dd0  2d 20 77 65 27 72 65 20  6e 6f 74 20 69 6e 74 65  |- we're not inte|
00057de0  72 65 73 74 65 64 20 69  6e 20 69 74 73 20 6d 65  |rested in its me|
00057df0  6e 74 61 6c 20 73 74 61  74 65 29 2e 0a 0a 2f 6b  |ntal state).../k|
00057e00  65 79 6e 75 6d 2f 20 69  73 20 28 2d 31 29 2d 3c  |eynum/ is (-1)-<|
00057e10  69 6e 74 65 72 6e 61 6c  20 6b 65 79 20 6e 75 6d  |internal key num|
00057e20  62 65 72 3d 3e 53 57 49  3a 6f 73 5f 62 79 74 65  |ber=>SWI:os_byte|
00057e30  31 32 31 61 3e 00 00 00  44 41 54 41 90 01 00 00  |121a>...DATA....|
00057e40  6b 62 64 5f 6d 6f 64 69  66 69 65 72 73 0a 54 68  |kbd_modifiers.Th|
00057e50  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
00057e60  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 4b  |ed in <DeskLib:K|
00057e70  62 64 2e 68 3d 3e 4b 62  64 3e 2e 20 49 74 20 69  |bd.h=>Kbd>. It i|
00057e80  73 20 61 20 73 74 72 75  63 74 75 72 65 20 75 73  |s a structure us|
00057e90  65 64 20 74 6f 20 68 6f  6c 64 20 74 68 65 20 73  |ed to hold the s|
00057ea0  74 61 74 75 73 20 6f 66  20 74 68 65 20 6d 6f 64  |tatus of the mod|
00057eb0  69 66 69 65 72 20 6b 65  79 73 20 61 73 20 66 6f  |ifier keys as fo|
00057ec0  6c 6c 6f 77 73 3a 0a 0a  20 20 5c 7b 0a 20 20 20  |llows:..  \{.   |
00057ed0  20 75 6e 73 69 67 6e 65  64 20 61 6c 74 09 09 3a  | unsigned alt..:|
00057ee0  20 31 3b 0a 20 20 20 20  75 6e 73 69 67 6e 65 64  | 1;.    unsigned|
00057ef0  20 63 74 72 6c 09 09 3a  20 31 3b 0a 20 20 20 20  | ctrl..: 1;.    |
00057f00  75 6e 73 69 67 6e 65 64  20 73 68 69 66 74 09 09  |unsigned shift..|
00057f10  3a 20 31 3b 0a 20 20 20  20 75 6e 73 69 67 6e 65  |: 1;.    unsigne|
00057f20  64 20 6c 65 66 74 5f 61  6c 74 09 09 3a 20 31 3b  |d left_alt..: 1;|
00057f30  0a 20 20 20 20 75 6e 73  69 67 6e 65 64 20 6c 65  |.    unsigned le|
00057f40  66 74 5f 63 74 72 6c 09  09 3a 20 31 3b 0a 20 20  |ft_ctrl..: 1;.  |
00057f50  20 20 75 6e 73 69 67 6e  65 64 20 6c 65 66 74 5f  |  unsigned left_|
00057f60  73 68 69 66 74 09 09 3a  20 31 3b 0a 20 20 20 20  |shift..: 1;.    |
00057f70  75 6e 73 69 67 6e 65 64  20 72 69 67 68 74 5f 61  |unsigned right_a|
00057f80  6c 74 09 09 3a 20 31 3b  0a 20 20 20 20 75 6e 73  |lt..: 1;.    uns|
00057f90  69 67 6e 65 64 20 72 69  67 68 74 5f 63 74 72 6c  |igned right_ctrl|
00057fa0  09 09 3a 20 31 3b 0a 20  20 20 20 75 6e 73 69 67  |..: 1;.    unsig|
00057fb0  6e 65 64 20 72 69 67 68  74 5f 73 68 69 66 74 09  |ned right_shift.|
00057fc0  3a 20 31 3b 0a 20 20 7d  44 41 54 41 f0 02 00 00  |: 1;.  }DATA....|
00057fd0  6b 62 64 5f 6e 65 67 69  6e 6b 65 79 0a 54 68 69  |kbd_neginkey.Thi|
00057fe0  73 20 65 6e 75 6d 65 72  61 74 65 64 20 74 79 70  |s enumerated typ|
00057ff0  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
00058000  3c 44 65 73 6b 4c 69 62  3a 4b 62 64 2e 68 3d 3e  |<DeskLib:Kbd.h=>|
00058010  4b 62 64 3e 2e 20 49 74  20 63 6f 6e 74 61 69 6e  |Kbd>. It contain|
00058020  73 20 74 68 65 20 6e 65  67 61 74 69 76 65 20 69  |s the negative i|
00058030  6e 6b 65 79 20 63 6f 64  65 73 20 72 65 74 75 72  |nkey codes retur|
00058040  6e 65 64 20 62 79 20 74  68 65 20 6b 65 79 73 20  |ned by the keys |
00058050  79 6f 75 20 61 72 65 20  6d 6f 73 74 20 6c 69 6b  |you are most lik|
00058060  65 6c 79 20 74 6f 20 6e  65 65 64 20 74 6f 20 74  |ely to need to t|
00058070  65 73 74 20 66 6f 72 20  69 6e 20 61 20 57 69 6d  |est for in a Wim|
00058080  70 20 65 6e 76 69 72 6f  6e 65 6d 6e 74 2e 0a 0a  |p environemnt...|
00058090  5c 7b 0a 20 20 20 20 69  6e 6b 65 79 5f 41 44 4a  |\{.    inkey_ADJ|
000580a0  55 53 54 09 3d 20 2d 31  32 2c 09 2f 2a 20 41 64  |UST.= -12,./* Ad|
000580b0  6a 75 73 74 20 62 75 74  74 6f 6e 20 20 20 20 2a  |just button    *|
000580c0  2f 0a 20 20 20 20 69 6e  6b 65 79 5f 4d 45 4e 55  |/.    inkey_MENU|
000580d0  09 09 3d 20 2d 31 31 2c  09 2f 2a 20 4d 65 6e 75  |..= -11,./* Menu|
000580e0  20 62 75 74 74 6f 6e 20  20 20 20 20 20 2a 2f 0a  | button      */.|
000580f0  20 20 20 20 69 6e 6b 65  79 5f 53 45 4c 45 43 54  |    inkey_SELECT|
00058100  09 3d 20 2d 31 30 2c 09  2f 2a 20 53 65 6c 65 63  |.= -10,./* Selec|
00058110  74 20 62 75 74 74 6f 6e  20 20 20 20 2a 2f 0a 20  |t button    */. |
00058120  20 20 20 69 6e 6b 65 79  5f 52 41 4c 54 09 09 3d  |   inkey_RALT..=|
00058130  20 2d 39 2c 09 2f 2a 20  52 69 67 68 74 20 41 4c  | -9,./* Right AL|
00058140  54 20 6b 65 79 20 20 20  20 2a 2f 0a 20 20 20 20  |T key    */.    |
00058150  69 6e 6b 65 79 5f 4c 41  4c 54 09 09 3d 20 2d 36  |inkey_LALT..= -6|
00058160  2c 09 2f 2a 20 4c 65 66  74 20 41 4c 54 20 6b 65  |,./* Left ALT ke|
00058170  79 20 20 20 20 20 2a 2f  0a 20 20 20 20 69 6e 6b  |y     */.    ink|
00058180  65 79 5f 41 4c 54 09 09  3d 20 2d 33 2c 09 2f 2a  |ey_ALT..= -3,./*|
00058190  20 45 69 74 68 65 72 20  41 4c 54 20 6b 65 79 20  | Either ALT key |
000581a0  20 20 2a 2f 0a 20 20 20  20 69 6e 6b 65 79 5f 52  |  */.    inkey_R|
000581b0  43 54 52 4c 09 09 3d 20  2d 38 2c 09 2f 2a 20 52  |CTRL..= -8,./* R|
000581c0  69 67 68 74 20 43 54 52  4c 20 6b 65 79 20 20 20  |ight CTRL key   |
000581d0  2a 2f 0a 20 20 20 20 69  6e 6b 65 79 5f 4c 43 54  |*/.    inkey_LCT|
000581e0  52 4c 09 09 3d 20 2d 35  2c 09 2f 2a 20 4c 65 66  |RL..= -5,./* Lef|
000581f0  74 20 43 54 52 4c 20 6b  65 79 20 20 20 20 2a 2f  |t CTRL key    */|
00058200  0a 20 20 20 20 69 6e 6b  65 79 5f 43 54 52 4c 09  |.    inkey_CTRL.|
00058210  09 3d 20 2d 32 2c 09 2f  2a 20 45 69 74 68 65 72  |.= -2,./* Either|
00058220  20 43 54 52 4c 20 6b 65  79 20 20 2a 2f 0a 20 20  | CTRL key  */.  |
00058230  20 20 69 6e 6b 65 79 5f  52 53 48 49 46 54 09 3d  |  inkey_RSHIFT.=|
00058240  20 2d 37 2c 09 2f 2a 20  52 69 67 68 74 20 53 48  | -7,./* Right SH|
00058250  49 46 54 20 6b 65 79 20  20 2a 2f 0a 20 20 20 20  |IFT key  */.    |
00058260  69 6e 6b 65 79 5f 4c 53  48 49 46 54 09 3d 20 2d  |inkey_LSHIFT.= -|
00058270  34 2c 09 2f 2a 20 4c 65  66 74 20 53 48 49 46 54  |4,./* Left SHIFT|
00058280  20 6b 65 79 20 20 20 2a  2f 0a 20 20 20 20 69 6e  | key   */.    in|
00058290  6b 65 79 5f 53 48 49 46  54 09 09 3d 20 2d 31 09  |key_SHIFT..= -1.|
000582a0  2f 2a 20 45 69 74 68 65  72 20 53 48 49 46 54 20  |/* Either SHIFT |
000582b0  6b 65 79 20 2a 2f 0a 7d  44 41 54 41 12 01 00 00  |key */.}DATA....|
000582c0  54 69 6d 73 4c 69 62 3a  4b 62 64 2e 68 0a 54 68  |TimsLib:Kbd.h.Th|
000582d0  69 73 20 68 65 61 64 65  72 20 64 65 63 6c 61 72  |is header declar|
000582e0  65 73 20 6f 6e 65 20 66  75 6e 63 74 69 6f 6e 20  |es one function |
000582f0  61 6e 64 20 74 79 70 65  20 66 6f 72 20 74 68 65  |and type for the|
00058300  20 70 75 72 70 6f 73 65  20 6f 66 20 72 65 61 64  | purpose of read|
00058310  69 6e 67 20 74 68 65 20  73 74 61 74 75 73 20 6f  |ing the status o|
00058320  66 20 74 68 65 20 6d 6f  64 69 66 69 65 72 20 6b  |f the modifier k|
00058330  65 79 73 20 28 53 68 69  66 74 2c 20 43 74 72 6c  |eys (Shift, Ctrl|
00058340  20 65 74 63 29 2e 20 54  68 69 73 20 69 73 20 75  | etc). This is u|
00058350  73 65 66 75 6c 20 69 6e  20 68 61 6e 64 6c 69 6e  |seful in handlin|
00058360  67 20 6d 6f 75 73 65 20  63 6c 69 63 6b 73 20 73  |g mouse clicks s|
00058370  6f 6d 65 74 69 6d 65 73  20 28 65 67 20 53 68 69  |ometimes (eg Shi|
00058380  66 74 2d 20 53 65 6c 65  63 74 20 6f 6e 20 21 50  |ft- Select on !P|
00058390  72 69 6e 74 65 72 73 29  2e 0a 0a 46 75 6e 63 74  |rinters)...Funct|
000583a0  69 6f 6e 3a 09 3c 4b 62  64 5f 47 65 74 4d 6f 64  |ion:.<Kbd_GetMod|
000583b0  69 66 69 65 72 73 3e 0a  0a 54 79 70 65 3a 09 3c  |ifiers>..Type:.<|
000583c0  6d 6f 64 69 66 69 65 72  73 3e 00 00 44 41 54 41  |modifiers>..DATA|
000583d0  37 03 00 00 6b 65 72 6e  65 6c 2e 68 0a 54 68 65  |7...kernel.h.The|
000583e0  20 5c 3c 6b 65 72 6e 65  6c 2e 68 3e 20 68 65 61  | \<kernel.h> hea|
000583f0  64 65 72 20 64 65 63 6c  61 72 65 73 20 6d 61 6e  |der declares man|
00058400  79 20 66 75 6e 63 74 69  6f 6e 73 20 77 68 69 63  |y functions whic|
00058410  68 20 61 63 63 65 73 73  20 74 68 65 20 62 75 69  |h access the bui|
00058420  6c 74 20 69 6e 20 66 65  61 74 75 72 65 73 20 6f  |lt in features o|
00058430  66 20 52 49 53 43 20 4f  53 2e 20 4f 62 76 69 6f  |f RISC OS. Obvio|
00058440  75 73 6c 79 2c 20 70 72  6f 67 72 61 6d 73 20 75  |usly, programs u|
00058450  73 69 6e 67 20 74 68 65  73 65 20 66 75 6e 63 74  |sing these funct|
00058460  69 6f 6e 73 20 77 69 6c  6c 20 6e 6f 74 20 62 65  |ions will not be|
00058470  20 70 6f 72 74 61 62 6c  65 20 62 65 74 77 65 65  | portable betwee|
00058480  6e 20 64 69 66 66 65 72  65 6e 74 20 63 6f 6d 70  |n different comp|
00058490  75 74 65 72 73 20 75 6e  6c 65 73 73 20 74 68 65  |uters unless the|
000584a0  20 73 61 6d 65 20 66 75  6e 63 74 69 6f 6e 73 20  | same functions |
000584b0  61 72 65 20 61 76 61 69  6c 61 62 6c 65 20 6f 6e  |are available on|
000584c0  20 62 6f 74 68 2e 20 49  74 20 61 6c 73 6f 20 64  | both. It also d|
000584d0  65 66 69 6e 65 73 20 74  65 6e 20 74 79 70 65 73  |efines ten types|
000584e0  20 61 6e 64 20 74 77 6f  20 6d 61 63 72 6f 73 2e  | and two macros.|
000584f0  0a 0a 46 75 6e 63 74 69  6f 6e 73 3a 0a 0a 23 49  |..Functions:..#I|
00058500  6e 64 65 6e 74 20 34 0a  23 54 61 62 6c 65 20 32  |ndent 4.#Table 2|
00058510  20 32 35 0a 3c 45 6e 76  69 72 6f 6e 6d 65 6e 74  | 25.<Environment|
00058520  20 4d 61 6e 61 67 65 6d  65 6e 74 3d 3e 6b 5f 65  | Management=>k_e|
00058530  6e 76 5f 3e 0a 3c 4f 70  65 72 61 74 69 6e 67 20  |nv_>.<Operating |
00058540  53 79 73 74 65 6d 20 43  61 6c 6c 73 3d 3e 6b 5f  |System Calls=>k_|
00058550  6f 73 5f 3e 0a 3c 4d 65  6d 6f 72 79 20 4d 61 6e  |os_>.<Memory Man|
00058560  61 67 65 6d 65 6e 74 3d  3e 6b 5f 6d 65 6d 5f 3e  |agement=>k_mem_>|
00058570  0a 3c 41 72 69 74 68 6d  65 74 69 63 3d 3e 6b 5f  |.<Arithmetic=>k_|
00058580  61 72 69 74 68 5f 3e 0a  23 45 6e 64 54 61 62 6c  |arith_>.#EndTabl|
00058590  65 0a 0a 23 49 6e 64 65  6e 74 20 30 0a 4d 61 63  |e..#Indent 0.Mac|
000585a0  72 6f 73 3a 0a 0a 23 49  6e 64 65 6e 74 20 31 31  |ros:..#Indent 11|
000585b0  0a 23 54 61 62 6c 65 20  31 20 32 30 0a 3c 5f 6b  |.#Table 1 20.<_k|
000585c0  65 72 6e 65 6c 5f 4e 4f  4e 58 3e 0a 3c 5f 6b 65  |ernel_NONX>.<_ke|
000585d0  72 6e 65 6c 5f 45 52 52  4f 52 3e 0a 23 45 6e 64  |rnel_ERROR>.#End|
000585e0  54 61 62 6c 65 0a 0a 23  49 6e 64 65 6e 74 20 30  |Table..#Indent 0|
000585f0  0a 54 79 70 65 73 3a 0a  0a 23 49 6e 64 65 6e 74  |.Types:..#Indent|
00058600  20 37 0a 23 54 61 62 6c  65 20 35 20 32 33 0a 3c  | 7.#Table 5 23.<|
00058610  5f 6b 65 72 6e 65 6c 5f  6f 73 65 72 72 6f 72 3e  |_kernel_oserror>|
00058620  0a 3c 5f 6b 65 72 6e 65  6c 5f 73 74 61 63 6b 5f  |.<_kernel_stack_|
00058630  63 68 75 6e 6b 3e 0a 3c  5f 65 78 74 65 6e 64 65  |chunk>.<_extende|
00058640  64 5f 66 70 5f 6e 75 6d  62 65 72 3e 0a 3c 5f 6b  |d_fp_number>.<_k|
00058650  65 72 6e 65 6c 5f 75 6e  77 69 6e 64 62 6c 6f 63  |ernel_unwindbloc|
00058660  6b 3e 0a 3c 5f 6b 65 72  6e 65 6c 5f 73 77 69 5f  |k>.<_kernel_swi_|
00058670  72 65 67 73 3e 0a 3c 5f  6b 65 72 6e 65 6c 5f 6f  |regs>.<_kernel_o|
00058680  73 67 62 70 62 5f 62 6c  6f 63 6b 3d 3e 5f 6b 65  |sgbpb_block=>_ke|
00058690  72 6e 65 6c 5f 6f 73 67  62 70 62 5f 62 6c 6f 63  |rnel_osgbpb_bloc|
000586a0  3e 0a 3c 5f 6b 65 72 6e  65 6c 5f 6f 73 66 69 6c  |>.<_kernel_osfil|
000586b0  65 5f 62 6c 6f 63 6b 3d  3e 5f 6b 65 72 6e 65 6c  |e_block=>_kernel|
000586c0  5f 6f 73 66 69 6c 65 5f  62 6c 6f 63 3e 0a 3c 61  |_osfile_bloc>.<a|
000586d0  6c 6c 6f 63 70 72 6f 63  3e 0a 3c 66 72 65 65 70  |llocproc>.<freep|
000586e0  72 6f 63 3e 0a 3c 5f 6b  65 72 6e 65 6c 5f 45 78  |roc>.<_kernel_Ex|
000586f0  74 65 6e 64 50 72 6f 63  3e 0a 23 45 6e 64 54 61  |tendProc>.#EndTa|
00058700  62 6c 65 00 44 41 54 41  49 01 00 00 44 65 73 6b  |ble.DATAI...Desk|
00058710  4c 69 62 3a 4b 65 72 6e  65 6c 53 57 49 73 2e 68  |Lib:KernelSWIs.h|
00058720  0a 56 65 72 73 69 6f 6e  3a 20 31 2e 30 32 20 28  |.Version: 1.02 (|
00058730  33 20 4a 75 6c 20 31 39  39 34 29 0a 23 6c 69 6e  |3 Jul 1994).#lin|
00058740  65 0a 54 68 69 73 20 68  65 61 64 65 72 20 64 65  |e.This header de|
00058750  63 6c 61 72 65 73 20 74  68 72 65 65 20 6c 6f 77  |clares three low|
00058760  2d 6c 65 76 65 6c 20 66  75 6e 63 74 69 6f 6e 73  |-level functions|
00058770  2e 0a 0a 46 75 6e 63 74  69 6f 6e 73 3a 0a 0a 23  |...Functions:..#|
00058780  69 6e 64 65 6e 74 20 33  0a 23 54 61 62 6c 65 20  |indent 3.#Table |
00058790  63 6f 6c 75 6d 6e 73 20  32 0a 3c 4f 53 5f 42 79  |columns 2.<OS_By|
000587a0  74 65 3d 3e 4f 53 5f 42  79 74 65 5f 3e 0a 3c 4f  |te=>OS_Byte_>.<O|
000587b0  53 5f 57 6f 72 64 3e 0a  3c 4f 53 5f 52 65 61 64  |S_Word>.<OS_Read|
000587c0  56 61 72 56 61 6c 3e 0a  3c 4f 53 5f 52 65 61 64  |VarVal>.<OS_Read|
000587d0  4d 6f 64 65 56 61 72 69  61 62 6c 65 3e 0a 23 45  |ModeVariable>.#E|
000587e0  6e 64 54 61 62 6c 65 0a  23 69 6e 64 65 6e 74 0a  |ndTable.#indent.|
000587f0  0a 54 79 70 65 73 3a 0a  0a 23 69 6e 64 65 6e 74  |.Types:..#indent|
00058800  20 34 0a 23 54 61 62 6c  65 20 63 6f 6c 75 6d 6e  | 4.#Table column|
00058810  73 20 32 0a 3c 6f 73 62  79 74 65 5f 6e 75 6d 62  |s 2.<osbyte_numb|
00058820  65 72 3e 0a 3c 6f 73 77  6f 72 64 5f 6e 75 6d 62  |er>.<osword_numb|
00058830  65 72 3e 0a 3c 6d 6f 64  65 5f 76 61 72 69 61 62  |er>.<mode_variab|
00058840  6c 65 3e 0a 23 45 6e 64  54 61 62 6c 65 00 00 00  |le>.#EndTable...|
00058850  44 49 52 24 4c 00 00 00  4c 00 00 00 9c 88 05 00  |DIR$L...L.......|
00058860  46 ff ff ff 83 4c 46 26  c5 00 00 00 13 00 00 00  |F....LF&........|
00058870  00 00 00 00 62 6c 6f 63  6b 00 00 00 64 89 05 00  |....block...d...|
00058880  46 ff ff ff b1 fb 45 26  a5 00 00 00 13 00 00 00  |F.....E&........|
00058890  00 00 00 00 70 72 65 73  73 00 00 00 44 41 54 41  |....press...DATA|
000588a0  c5 00 00 00 6b 65 79 5f  62 6c 6f 63 6b 0a 54 68  |....key_block.Th|
000588b0  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
000588c0  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 57  |ed in <DeskLib:W|
000588d0  69 6d 70 2e 68 3d 3e 57  69 6d 70 3e 2e 20 49 74  |imp.h=>Wimp>. It|
000588e0  20 69 73 20 61 20 73 74  72 75 63 74 75 72 65 20  | is a structure |
000588f0  63 6f 6e 74 61 69 6e 69  6e 67 20 69 6e 66 6f 72  |containing infor|
00058900  6d 61 74 69 6f 6e 20 72  65 74 75 72 6e 65 64 20  |mation returned |
00058910  62 79 20 61 20 4b 65 79  5f 50 72 65 73 73 65 64  |by a Key_Pressed|
00058920  20 65 76 65 6e 74 2e 0a  0a 20 20 5c 7b 0a 20 20  | event...  \{.  |
00058930  20 20 3c 63 61 72 65 74  5f 62 6c 6f 63 6b 3e 09  |  <caret_block>.|
00058940  63 61 72 65 74 3b 0a 20  20 20 20 3c 6b 65 79 5f  |caret;.    <key_|
00058950  70 72 65 73 73 3e 09 09  63 6f 64 65 3b 0a 20 20  |press>..code;.  |
00058960  7d 00 00 00 44 41 54 41  a5 00 00 00 6b 65 79 5f  |}...DATA....key_|
00058970  70 72 65 73 73 0a 54 68  69 73 20 74 79 70 65 20  |press.This type |
00058980  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 44  |is defined in <D|
00058990  65 73 6b 4c 69 62 3a 57  69 6d 70 2e 68 3d 3e 57  |eskLib:Wimp.h=>W|
000589a0  69 6d 70 3e 20 61 73 20  61 20 74 79 70 65 20 63  |imp> as a type c|
000589b0  61 70 61 62 6c 65 20 6f  66 20 68 6f 6c 64 69 6e  |apable of holdin|
000589c0  67 20 61 20 6b 65 79 20  63 6f 64 65 20 61 73 20  |g a key code as |
000589d0  72 65 74 75 72 6e 65 64  20 62 79 20 74 68 65 20  |returned by the |
000589e0  57 69 6d 70 2e 20 49 74  20 69 73 20 61 63 74 75  |Wimp. It is actu|
000589f0  61 6c 6c 79 20 64 65 66  69 6e 65 64 20 61 73 20  |ally defined as |
00058a00  61 6e 20 2f 69 6e 74 2f  2e 00 00 00 44 41 54 41  |an /int/....DATA|
00058a10  78 07 00 00 44 65 73 6b  4c 69 62 3a 4b 65 79 43  |x...DeskLib:KeyC|
00058a20  6f 64 65 73 2e 68 0a 56  65 72 73 69 6f 6e 3a 20  |odes.h.Version: |
00058a30  31 2e 30 30 20 28 32 34  20 4a 61 6e 20 31 39 39  |1.00 (24 Jan 199|
00058a40  32 29 0a 54 68 69 73 20  68 65 61 64 65 72 20 64  |2).This header d|
00058a50  65 66 69 6e 65 73 20 61  6c 6c 20 74 68 65 20 6b  |efines all the k|
00058a60  65 79 63 6f 64 65 73 20  28 61 73 20 75 73 65 64  |eycodes (as used|
00058a70  20 62 79 20 74 68 65 20  57 49 4d 50 29 20 6f 66  | by the WIMP) of|
00058a80  20 73 70 65 63 69 61 6c  20 6b 65 79 73 20 75 73  | special keys us|
00058a90  69 6e 67 20 74 68 65 20  66 6f 6c 6c 6f 77 69 6e  |ing the followin|
00058aa0  67 20 6d 61 63 72 6f 73  3a 0a 0a 23 74 61 62 6c  |g macros:..#tabl|
00058ab0  65 20 33 34 20 31 39 0a  42 41 43 4b 53 50 41 43  |e 34 19.BACKSPAC|
00058ac0  45 0a 52 45 54 55 52 4e  0a 45 53 43 41 50 45 0a  |E.RETURN.ESCAPE.|
00058ad0  48 4f 4d 45 0a 44 45 4c  45 54 45 0a 46 31 0a 46  |HOME.DELETE.F1.F|
00058ae0  32 0a 46 33 0a 46 34 0a  46 35 0a 46 36 0a 46 37  |2.F3.F4.F5.F6.F7|
00058af0  0a 46 38 0a 46 39 0a 46  31 30 0a 46 31 31 0a 46  |.F8.F9.F10.F11.F|
00058b00  31 32 0a 50 52 49 4e 54  0a 54 41 42 0a 43 4f 50  |12.PRINT.TAB.COP|
00058b10  59 0a 43 55 52 53 4f 52  4c 45 46 54 0a 43 55 52  |Y.CURSORLEFT.CUR|
00058b20  53 4f 52 52 49 47 48 54  0a 43 55 52 53 4f 52 44  |SORRIGHT.CURSORD|
00058b30  4f 57 4e 0a 43 55 52 53  4f 52 55 50 0a 50 41 47  |OWN.CURSORUP.PAG|
00058b40  45 44 4f 57 4e 0a 50 41  47 45 55 50 0a 49 4e 53  |EDOWN.PAGEUP.INS|
00058b50  45 52 54 0a 53 48 49 46  54 5f 42 41 43 4b 53 50  |ERT.SHIFT_BACKSP|
00058b60  41 43 45 20 a4 0a 53 48  49 46 54 5f 52 45 54 55  |ACE ..SHIFT_RETU|
00058b70  52 4e 20 20 20 20 a4 0a  53 48 49 46 54 5f 45 53  |RN    ..SHIFT_ES|
00058b80  43 41 50 45 20 20 20 20  a4 0a 53 48 49 46 54 5f  |CAPE    ..SHIFT_|
00058b90  48 4f 4d 45 20 20 20 20  20 20 a4 0a 53 48 49 46  |HOME      ..SHIF|
00058ba0  54 5f 44 45 4c 45 54 45  20 20 20 20 a4 0a 53 48  |T_DELETE    ..SH|
00058bb0  49 46 54 5f 46 31 0a 53  48 49 46 54 5f 46 32 0a  |IFT_F1.SHIFT_F2.|
00058bc0  53 48 49 46 54 5f 46 33  0a 53 48 49 46 54 5f 46  |SHIFT_F3.SHIFT_F|
00058bd0  34 0a 53 48 49 46 54 5f  46 35 0a 53 48 49 46 54  |4.SHIFT_F5.SHIFT|
00058be0  5f 46 36 0a 53 48 49 46  54 5f 46 37 0a 53 48 49  |_F6.SHIFT_F7.SHI|
00058bf0  46 54 5f 46 38 0a 53 48  49 46 54 5f 46 39 0a 53  |FT_F8.SHIFT_F9.S|
00058c00  48 49 46 54 5f 46 31 30  0a 53 48 49 46 54 5f 46  |HIFT_F10.SHIFT_F|
00058c10  31 31 0a 53 48 49 46 54  5f 46 31 32 0a 53 48 49  |11.SHIFT_F12.SHI|
00058c20  46 54 5f 50 52 49 4e 54  0a 53 48 49 46 54 5f 54  |FT_PRINT.SHIFT_T|
00058c30  41 42 0a 53 48 49 46 54  5f 43 4f 50 59 0a 53 48  |AB.SHIFT_COPY.SH|
00058c40  49 46 54 5f 43 55 52 53  4f 52 4c 45 46 54 0a 53  |IFT_CURSORLEFT.S|
00058c50  48 49 46 54 5f 43 55 52  53 4f 52 52 49 47 48 54  |HIFT_CURSORRIGHT|
00058c60  0a 53 48 49 46 54 5f 43  55 52 53 4f 52 44 4f 57  |.SHIFT_CURSORDOW|
00058c70  4e 0a 53 48 49 46 54 5f  43 55 52 53 4f 52 55 50  |N.SHIFT_CURSORUP|
00058c80  0a 53 48 49 46 54 5f 50  41 47 45 44 4f 57 4e 0a  |.SHIFT_PAGEDOWN.|
00058c90  53 48 49 46 54 5f 50 41  47 45 55 50 0a 53 48 49  |SHIFT_PAGEUP.SHI|
00058ca0  46 54 5f 49 4e 53 45 52  54 0a 43 54 52 4c 5f 42  |FT_INSERT.CTRL_B|
00058cb0  41 43 4b 53 50 41 43 45  20 20 a4 0a 43 54 52 4c  |ACKSPACE  ..CTRL|
00058cc0  5f 52 45 54 55 52 4e 20  20 20 20 20 a4 0a 43 54  |_RETURN     ..CT|
00058cd0  52 4c 5f 45 53 43 41 50  45 20 20 20 20 20 a4 0a  |RL_ESCAPE     ..|
00058ce0  43 54 52 4c 5f 48 4f 4d  45 20 20 20 20 20 20 20  |CTRL_HOME       |
00058cf0  a4 0a 43 54 52 4c 5f 44  45 4c 45 54 45 20 20 20  |..CTRL_DELETE   |
00058d00  20 20 a4 0a 43 54 52 4c  5f 46 31 0a 43 54 52 4c  |  ..CTRL_F1.CTRL|
00058d10  5f 46 32 0a 43 54 52 4c  5f 46 33 0a 43 54 52 4c  |_F2.CTRL_F3.CTRL|
00058d20  5f 46 34 0a 43 54 52 4c  5f 46 35 0a 43 54 52 4c  |_F4.CTRL_F5.CTRL|
00058d30  5f 46 36 0a 43 54 52 4c  5f 46 37 0a 43 54 52 4c  |_F6.CTRL_F7.CTRL|
00058d40  5f 46 38 0a 43 54 52 4c  5f 46 39 0a 43 54 52 4c  |_F8.CTRL_F9.CTRL|
00058d50  5f 46 31 30 0a 43 54 52  4c 5f 46 31 31 0a 43 54  |_F10.CTRL_F11.CT|
00058d60  52 4c 5f 46 31 32 0a 43  54 52 4c 5f 50 52 49 4e  |RL_F12.CTRL_PRIN|
00058d70  54 0a 43 54 52 4c 5f 54  41 42 0a 43 54 52 4c 5f  |T.CTRL_TAB.CTRL_|
00058d80  43 4f 50 59 0a 43 54 52  4c 5f 43 55 52 53 4f 52  |COPY.CTRL_CURSOR|
00058d90  4c 45 46 54 0a 43 54 52  4c 5f 43 55 52 53 4f 52  |LEFT.CTRL_CURSOR|
00058da0  52 49 47 48 54 0a 43 54  52 4c 5f 43 55 52 53 4f  |RIGHT.CTRL_CURSO|
00058db0  52 44 4f 57 4e 0a 43 54  52 4c 5f 43 55 52 53 4f  |RDOWN.CTRL_CURSO|
00058dc0  52 55 50 0a 43 54 52 4c  5f 50 41 47 45 44 4f 57  |RUP.CTRL_PAGEDOW|
00058dd0  4e 0a 43 54 52 4c 5f 50  41 47 45 55 50 0a 43 54  |N.CTRL_PAGEUP.CT|
00058de0  52 4c 5f 49 4e 53 45 52  54 0a 43 54 52 4c 5f 41  |RL_INSERT.CTRL_A|
00058df0  0a 43 54 52 4c 5f 42 0a  43 54 52 4c 5f 43 0a 43  |.CTRL_B.CTRL_C.C|
00058e00  54 52 4c 5f 44 0a 43 54  52 4c 5f 45 0a 43 54 52  |TRL_D.CTRL_E.CTR|
00058e10  4c 5f 46 0a 43 54 52 4c  5f 47 0a 43 54 52 4c 5f  |L_F.CTRL_G.CTRL_|
00058e20  48 0a 43 54 52 4c 5f 49  0a 43 54 52 4c 5f 4a 0a  |H.CTRL_I.CTRL_J.|
00058e30  43 54 52 4c 5f 4b 0a 43  54 52 4c 5f 4c 0a 43 54  |CTRL_K.CTRL_L.CT|
00058e40  52 4c 5f 4d 0a 43 54 52  4c 5f 4e 0a 43 54 52 4c  |RL_M.CTRL_N.CTRL|
00058e50  5f 4f 0a 43 54 52 4c 5f  50 0a 43 54 52 4c 5f 51  |_O.CTRL_P.CTRL_Q|
00058e60  0a 43 54 52 4c 5f 52 0a  43 54 52 4c 5f 53 0a 43  |.CTRL_R.CTRL_S.C|
00058e70  54 52 4c 5f 54 0a 43 54  52 4c 5f 55 0a 43 54 52  |TRL_T.CTRL_U.CTR|
00058e80  4c 5f 56 0a 43 54 52 4c  5f 57 0a 43 54 52 4c 5f  |L_V.CTRL_W.CTRL_|
00058e90  58 0a 43 54 52 4c 5f 59  0a 43 54 52 4c 5f 5a 0a  |X.CTRL_Y.CTRL_Z.|
00058ea0  43 54 52 4c 5f 53 48 49  46 54 5f 42 41 43 4b 53  |CTRL_SHIFT_BACKS|
00058eb0  50 41 43 45 20 a4 0a 43  54 52 4c 5f 53 48 49 46  |PACE ..CTRL_SHIF|
00058ec0  54 5f 52 45 54 55 52 4e  20 20 20 20 a4 0a 43 54  |T_RETURN    ..CT|
00058ed0  52 4c 5f 53 48 49 46 54  5f 45 53 43 41 50 45 20  |RL_SHIFT_ESCAPE |
00058ee0  20 20 20 a4 0a 43 54 52  4c 5f 53 48 49 46 54 5f  |   ..CTRL_SHIFT_|
00058ef0  48 4f 4d 45 20 20 20 20  20 20 a4 0a 43 54 52 4c  |HOME      ..CTRL|
00058f00  5f 53 48 49 46 54 5f 44  45 4c 45 54 45 20 20 20  |_SHIFT_DELETE   |
00058f10  20 a4 0a 43 54 52 4c 5f  53 48 49 46 54 5f 46 31  | ..CTRL_SHIFT_F1|
00058f20  0a 43 54 52 4c 5f 53 48  49 46 54 5f 46 32 0a 43  |.CTRL_SHIFT_F2.C|
00058f30  54 52 4c 5f 53 48 49 46  54 5f 46 33 0a 43 54 52  |TRL_SHIFT_F3.CTR|
00058f40  4c 5f 53 48 49 46 54 5f  46 34 0a 43 54 52 4c 5f  |L_SHIFT_F4.CTRL_|
00058f50  53 48 49 46 54 5f 46 35  0a 43 54 52 4c 5f 53 48  |SHIFT_F5.CTRL_SH|
00058f60  49 46 54 5f 46 36 0a 43  54 52 4c 5f 53 48 49 46  |IFT_F6.CTRL_SHIF|
00058f70  54 5f 46 37 0a 43 54 52  4c 5f 53 48 49 46 54 5f  |T_F7.CTRL_SHIFT_|
00058f80  46 38 0a 43 54 52 4c 5f  53 48 49 46 54 5f 46 39  |F8.CTRL_SHIFT_F9|
00058f90  0a 43 54 52 4c 5f 53 48  49 46 54 5f 46 31 30 0a  |.CTRL_SHIFT_F10.|
00058fa0  43 54 52 4c 5f 53 48 49  46 54 5f 46 31 31 0a 43  |CTRL_SHIFT_F11.C|
00058fb0  54 52 4c 5f 53 48 49 46  54 5f 46 31 32 0a 43 54  |TRL_SHIFT_F12.CT|
00058fc0  52 4c 5f 53 48 49 46 54  5f 50 52 49 4e 54 0a 43  |RL_SHIFT_PRINT.C|
00058fd0  54 52 4c 5f 53 48 49 46  54 5f 54 41 42 0a 43 54  |TRL_SHIFT_TAB.CT|
00058fe0  52 4c 5f 53 48 49 46 54  5f 43 4f 50 59 0a 43 54  |RL_SHIFT_COPY.CT|
00058ff0  52 4c 5f 53 48 49 46 54  5f 43 55 52 53 4f 52 4c  |RL_SHIFT_CURSORL|
00059000  45 46 54 0a 43 54 52 4c  5f 53 48 49 46 54 5f 43  |EFT.CTRL_SHIFT_C|
00059010  55 52 53 4f 52 52 49 47  48 54 0a 43 54 52 4c 5f  |URSORRIGHT.CTRL_|
00059020  53 48 49 46 54 5f 43 55  52 53 4f 52 44 4f 57 4e  |SHIFT_CURSORDOWN|
00059030  0a 43 54 52 4c 5f 53 48  49 46 54 5f 43 55 52 53  |.CTRL_SHIFT_CURS|
00059040  4f 52 55 50 0a 43 54 52  4c 5f 53 48 49 46 54 5f  |ORUP.CTRL_SHIFT_|
00059050  50 41 47 45 44 4f 57 4e  0a 43 54 52 4c 5f 53 48  |PAGEDOWN.CTRL_SH|
00059060  49 46 54 5f 50 41 47 45  55 50 0a 43 54 52 4c 5f  |IFT_PAGEUP.CTRL_|
00059070  53 48 49 46 54 5f 49 4e  53 45 52 54 0a 23 65 6e  |SHIFT_INSERT.#en|
00059080  64 74 61 62 6c 65 0a 0a  41 6c 6c 20 6d 61 63 72  |dtable..All macr|
00059090  6f 73 20 61 72 65 20 70  72 65 63 65 64 65 64 20  |os are preceded |
000590a0  62 79 20 27 6b 65 79 63  6f 64 65 5f 27 2e 0a 0a  |by 'keycode_'...|
000590b0  54 68 6f 73 65 20 6d 61  72 6b 65 64 20 77 69 74  |Those marked wit|
000590c0  68 20 61 20 27 a4 27 20  61 72 65 20 64 65 66 69  |h a '.' are defi|
000590d0  6e 65 64 20 61 73 20 55  4e 44 45 46 49 4e 45 44  |ned as UNDEFINED|
000590e0  2c 20 69 65 20 2d 31 2e  20 54 68 65 79 20 72 65  |, ie -1. They re|
000590f0  74 75 72 6e 20 74 68 65  20 73 61 6d 65 20 63 6f  |turn the same co|
00059100  64 65 20 61 73 20 74 68  65 69 72 20 62 61 73 65  |de as their base|
00059110  20 6b 65 79 20 65 67 20  53 48 49 46 54 2d 52 45  | key eg SHIFT-RE|
00059120  54 55 52 4e 20 67 69 76  65 73 20 74 68 65 20 73  |TURN gives the s|
00059130  61 6d 65 20 63 6f 64 65  20 61 73 20 6a 75 73 74  |ame code as just|
00059140  20 52 45 54 55 52 4e 2e  20 54 6f 20 64 65 74 65  | RETURN. To dete|
00059150  63 74 20 74 68 65 20 53  48 49 46 54 20 76 65 72  |ct the SHIFT ver|
00059160  73 69 6f 6e 2c 20 79 6f  75 20 6e 65 65 64 20 74  |sion, you need t|
00059170  6f 20 75 73 65 20 3c 4b  62 64 5f 4b 65 79 44 6f  |o use <Kbd_KeyDo|
00059180  77 6e 3e 2e 44 49 52 24  30 03 00 00 30 03 00 00  |wn>.DIR$0...0...|
00059190  b4 94 05 00 46 fd ff ff  97 a2 84 2f 2c 00 00 00  |....F....../,...|
000591a0  13 01 00 00 00 00 00 00  4c 5f 00 00 c8 95 05 00  |........L_......|
000591b0  46 ff ff ff c8 3c de 22  d1 00 00 00 13 00 00 00  |F....<."........|
000591c0  00 00 00 00 6c 61 62 73  00 00 00 00 9c 96 05 00  |....labs........|
000591d0  46 fd ff ff c8 a2 84 2f  30 00 00 00 13 01 00 00  |F....../0.......|
000591e0  00 00 00 00 4c 61 72 67  65 73 74 5f 00 00 00 00  |....Largest_....|
000591f0  00 98 05 00 46 fd ff ff  ed a2 84 2f cc 00 00 00  |....F....../....|
00059200  13 01 00 00 00 00 00 00  4c 43 5f 00 70 9c 05 00  |........LC_.p...|
00059210  46 ff ff ff 5a 3c bd 22  6a 02 00 00 13 00 00 00  |F...Z<."j.......|
00059220  00 00 00 00 6c 63 6f 6e  76 00 00 00 dc 9e 05 00  |....lconv.......|
00059230  46 fd ff ff 7d a3 84 2f  2c 01 00 00 13 01 00 00  |F...}../,.......|
00059240  00 00 00 00 4c 44 42 4c  5f 00 00 00 90 a4 05 00  |....LDBL_.......|
00059250  46 ff ff ff 1e 00 be 22  f0 00 00 00 13 00 00 00  |F......"........|
00059260  00 00 00 00 6c 64 65 78  70 00 00 00 80 a5 05 00  |....ldexp.......|
00059270  46 ff ff ff 97 7d e6 22  6a 00 00 00 13 00 00 00  |F....}."j.......|
00059280  00 00 00 00 4c 44 46 00  ec a5 05 00 46 ff ff ff  |....LDF.....F...|
00059290  62 41 de 22 e7 00 00 00  13 00 00 00 00 00 00 00  |bA."............|
000592a0  6c 64 69 76 00 00 00 00  d4 a6 05 00 46 fd ff ff  |ldiv........F...|
000592b0  54 a4 84 2f 28 00 00 00  13 01 00 00 00 00 00 00  |T../(...........|
000592c0  6c 64 69 76 5f 00 00 00  ec a7 05 00 46 ff ff ff  |ldiv_.......F...|
000592d0  df 6d e6 22 25 01 00 00  13 00 00 00 00 00 00 00  |.m."%...........|
000592e0  4c 44 52 00 14 a9 05 00  46 ff ff ff 93 4e d6 25  |LDR.....F....N.%|
000592f0  50 01 00 00 13 00 00 00  00 00 00 00 4c 65 61 66  |P...........Leaf|
00059300  4e 61 6d 65 00 00 00 00  64 aa 05 00 46 ff ff ff  |Name....d...F...|
00059310  46 28 56 26 14 01 00 00  13 00 00 00 00 00 00 00  |F(V&............|
00059320  4c 69 62 00 78 ab 05 00  46 fd ff ff b0 a4 84 2f  |Lib.x...F....../|
00059330  60 01 00 00 13 01 00 00  00 00 00 00 6c 69 62 5f  |`...........lib_|
00059340  00 00 00 00 3c b8 05 00  46 ff ff ff eb a8 bb 22  |....<...F......"|
00059350  6f 01 00 00 13 00 00 00  00 00 00 00 6c 69 6d 69  |o...........limi|
00059360  74 73 00 00 ac b9 05 00  46 fd ff ff 91 a5 84 2f  |ts......F....../|
00059370  18 01 00 00 13 01 00 00  00 00 00 00 6c 69 6e 6b  |............link|
00059380  64 69 72 5f 00 00 00 00  34 c2 05 00 46 ff ff ff  |dir_....4...F...|
00059390  58 82 3f 25 07 03 00 00  13 00 00 00 00 00 00 00  |X.?%............|
000593a0  4c 69 6e 6b 4c 69 73 74  00 00 00 00 3c c5 05 00  |LinkList....<...|
000593b0  46 fd ff ff 5c a6 84 2f  20 03 00 00 13 01 00 00  |F...\../ .......|
000593c0  00 00 00 00 4c 69 6e 6b  4c 69 73 74 5f 00 00 00  |....LinkList_...|
000593d0  00 e3 05 00 46 ff ff ff  06 d0 bb 22 36 01 00 00  |....F......"6...|
000593e0  13 00 00 00 00 00 00 00  6c 6f 63 61 6c 65 00 00  |........locale..|
000593f0  38 e4 05 00 46 ff ff ff  8f 1e bd 22 d4 00 00 00  |8...F......"....|
00059400  13 00 00 00 00 00 00 00  6c 6f 63 61 6c 65 63 6f  |........localeco|
00059410  6e 76 00 00 0c e5 05 00  46 ff ff ff ea ea e1 22  |nv......F......"|
00059420  f8 00 00 00 13 00 00 00  00 00 00 00 6c 6f 63 61  |............loca|
00059430  6c 74 69 6d 65 00 00 00  04 e6 05 00 46 ff ff ff  |ltime.......F...|
00059440  51 11 be 22 2e 01 00 00  13 00 00 00 00 00 00 00  |Q.."............|
00059450  6c 6f 67 00 34 e7 05 00  46 ff ff ff ce 2d be 22  |log.4...F....-."|
00059460  18 01 00 00 13 00 00 00  00 00 00 00 6c 6f 67 31  |............log1|
00059470  30 00 00 00 4c e8 05 00  46 fd ff ff 85 a8 84 2f  |0...L...F....../|
00059480  44 00 00 00 13 01 00 00  00 00 00 00 4c 4f 4e 47  |D...........LONG|
00059490  5f 00 00 00 ec e9 05 00  46 ff ff ff 33 ed be 22  |_.......F...3.."|
000594a0  ce 01 00 00 13 00 00 00  00 00 00 00 6c 6f 6e 67  |............long|
000594b0  6a 6d 70 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |jmp.DIR$,...,...|
000594c0  5b 45 09 00 46 ff ff ff  9e 5e c2 37 d9 00 00 00  |[E..F....^.7....|
000594d0  13 00 00 00 00 00 00 00  74 6d 70 6e 61 6d 00 00  |........tmpnam..|
000594e0  46 52 45 45 e5 00 00 00  8c 44 09 00 70 6e 61 6d  |FREE.....D..pnam|
000594f0  0a 23 50 61 72 65 6e 74  20 73 74 64 69 6f 0a 54  |.#Parent stdio.T|
00059500  68 65 20 6d 61 63 72 6f  20 4c 5f 74 6d 70 6e 61  |he macro L_tmpna|
00059510  6d 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |m is defined in |
00059520  3c 73 74 64 69 6f 2e 68  3d 3e 73 74 64 69 6f 3e  |<stdio.h=>stdio>|
00059530  20 61 73 20 74 68 65 20  6c 65 6e 67 74 68 20 6f  | as the length o|
00059540  66 20 74 68 65 20 6c 6f  6e 67 65 73 74 20 66 69  |f the longest fi|
00059550  6c 65 6e 61 6d 65 20 74  68 61 74 20 77 69 6c 6c  |lename that will|
00059560  20 62 65 20 75 73 65 64  20 62 79 20 74 68 65 20  | be used by the |
00059570  66 75 6e 63 74 69 6f 6e  20 3c 74 6d 70 6e 61 6d  |function <tmpnam|
00059580  3e 2e 20 49 6e 20 45 61  73 79 20 43 20 69 74 20  |>. In Easy C it |
00059590  69 73 20 64 65 66 69 6e  65 64 20 61 73 20 74 68  |is defined as th|
000595a0  65 20 73 61 6d 65 20 61  73 20 3c 46 49 4c 45 4e  |e same as <FILEN|
000595b0  41 4d 45 5f 4d 41 58 3d  3e 46 49 4c 45 4e 41 4d  |AME_MAX=>FILENAM|
000595c0  45 5f 4d 3e 2e 00 00 00  44 41 54 41 d1 00 00 00  |E_M>....DATA....|
000595d0  6c 61 62 73 0a 53 79 6e  74 61 78 3a 09 6c 6f 6e  |labs.Syntax:.lon|
000595e0  67 20 69 6e 74 20 6c 61  62 73 20 28 6c 6f 6e 67  |g int labs (long|
000595f0  20 69 6e 74 20 78 29 3b  0a 48 65 61 64 65 72 3a  | int x);.Header:|
00059600  09 3c 73 74 64 6c 69 62  2e 68 3d 3e 73 74 64 6c  |.<stdlib.h=>stdl|
00059610  69 62 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 54 68  |ib>..Returns:.Th|
00059620  65 20 61 62 73 6f 6c 75  74 65 20 76 61 6c 75 65  |e absolute value|
00059630  20 6f 66 20 78 2e 0a 0a  54 68 69 73 20 66 75 6e  | of x...This fun|
00059640  63 74 69 6f 6e 20 69 73  20 69 64 65 6e 74 69 63  |ction is identic|
00059650  61 6c 20 74 6f 20 74 68  65 20 66 75 6e 63 74 69  |al to the functi|
00059660  6f 6e 20 3c 61 62 73 3e  2c 20 65 78 63 65 70 74  |on <abs>, except|
00059670  20 74 68 61 74 20 61 6c  6c 20 6e 75 6d 62 65 72  | that all number|
00059680  73 20 69 6e 76 6f 6c 76  65 64 20 61 72 65 20 6c  |s involved are l|
00059690  6f 6e 67 20 69 6e 74 73  2e 00 00 00 44 49 52 24  |ong ints....DIR$|
000596a0  30 00 00 00 30 00 00 00  cc 96 05 00 46 ff ff ff  |0...0.......F...|
000596b0  ef a2 28 23 33 01 00 00  13 00 00 00 00 00 00 00  |..(#3...........|
000596c0  70 61 74 68 5f 73 74 72  00 00 00 00 44 41 54 41  |path_str....DATA|
000596d0  33 01 00 00 4c 61 72 67  65 73 74 5f 70 61 74 68  |3...Largest_path|
000596e0  5f 73 74 72 0a 54 68 69  73 20 74 79 70 65 20 69  |_str.This type i|
000596f0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 64 72  |s defined in <dr|
00059700  61 77 66 74 79 70 65 73  2e 68 3d 3e 64 72 61 77  |awftypes.h=>draw|
00059710  66 74 79 70 65 73 3e 20  61 73 20 61 20 74 79 70  |ftypes> as a typ|
00059720  65 20 77 68 6f 73 65 20  73 69 7a 65 20 69 73 20  |e whose size is |
00059730  74 68 65 20 73 61 6d 65  20 61 73 20 74 68 61 74  |the same as that|
00059740  20 6f 66 20 74 68 65 20  6c 61 72 67 65 73 74 20  | of the largest |
00059750  70 61 74 68 20 63 6f 6d  70 6f 6e 65 6e 74 2e 20  |path component. |
00059760  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It is defined as|
00059770  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 75  | the following u|
00059780  6e 69 6f 6e 3a 0a 0a 20  09 5c 7b 0a 20 09 20 09  |nion:.. .\{. . .|
00059790  3c 50 61 74 68 5f 6d 6f  76 65 73 74 72 3e 09 61  |<Path_movestr>.a|
000597a0  3b 0a 20 09 20 09 3c 50  61 74 68 5f 6c 69 6e 65  |;. . .<Path_line|
000597b0  73 74 72 3e 09 62 3b 0a  20 09 20 09 3c 50 61 74  |str>.b;. . .<Pat|
000597c0  68 5f 63 75 72 76 65 73  74 72 3e 09 63 3b 0a 20  |h_curvestr>.c;. |
000597d0  09 20 09 3c 50 61 74 68  5f 63 6c 6f 73 65 73 74  |. .<Path_closest|
000597e0  72 3e 09 64 3b 0a 20 09  20 09 3c 50 61 74 68 5f  |r>.d;. . .<Path_|
000597f0  74 65 72 6d 73 74 72 3e  09 65 3b 0a 20 09 7d 00  |termstr>.e;. .}.|
00059800  44 49 52 24 cc 00 00 00  cc 00 00 00 cc 98 05 00  |DIR$............|
00059810  46 ff ff ff ba 42 bd 22  84 00 00 00 13 00 00 00  |F....B."........|
00059820  00 00 00 00 41 4c 4c 00  50 99 05 00 46 ff ff ff  |....ALL.P...F...|
00059830  7f 46 bd 22 9f 00 00 00  13 00 00 00 00 00 00 00  |.F."............|
00059840  43 4f 4c 4c 41 54 45 00  f0 99 05 00 46 ff ff ff  |COLLATE.....F...|
00059850  90 49 bd 22 9b 00 00 00  13 00 00 00 00 00 00 00  |.I."............|
00059860  43 54 59 50 45 00 00 00  8c 9a 05 00 46 ff ff ff  |CTYPE.......F...|
00059870  4a 4c bd 22 a3 00 00 00  13 00 00 00 00 00 00 00  |JL."............|
00059880  4d 4f 4e 45 54 41 52 59  00 00 00 00 30 9b 05 00  |MONETARY....0...|
00059890  46 ff ff ff 10 4f bd 22  a4 00 00 00 13 00 00 00  |F....O."........|
000598a0  00 00 00 00 4e 55 4d 45  52 49 43 00 d4 9b 05 00  |....NUMERIC.....|
000598b0  46 ff ff ff c9 51 bd 22  9b 00 00 00 13 00 00 00  |F....Q."........|
000598c0  00 00 00 00 54 49 4d 45  00 00 00 00 44 41 54 41  |....TIME....DATA|
000598d0  84 00 00 00 4c 43 5f 41  4c 4c 0a 54 68 69 73 20  |....LC_ALL.This |
000598e0  6d 61 63 72 6f 20 69 73  20 64 65 66 69 6e 65 64  |macro is defined|
000598f0  20 69 6e 20 3c 6c 6f 63  61 6c 65 2e 68 3d 3e 6c  | in <locale.h=>l|
00059900  6f 63 61 6c 65 3e 2e 20  49 74 20 69 73 20 75 73  |ocale>. It is us|
00059910  65 64 20 77 69 74 68 20  74 68 65 20 3c 73 65 74  |ed with the <set|
00059920  6c 6f 63 61 6c 65 3e 20  66 75 6e 63 74 69 6f 6e  |locale> function|
00059930  20 61 6e 64 20 72 65 70  72 65 73 65 6e 74 73 20  | and represents |
00059940  61 6c 6c 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 2e  |all information.|
00059950  44 41 54 41 9f 00 00 00  4c 43 5f 43 4f 4c 4c 41  |DATA....LC_COLLA|
00059960  54 45 0a 54 68 69 73 20  6d 61 63 72 6f 20 69 73  |TE.This macro is|
00059970  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 6c 6f 63  | defined in <loc|
00059980  61 6c 65 2e 68 3d 3e 6c  6f 63 61 6c 65 3e 2e 20  |ale.h=>locale>. |
00059990  49 74 20 69 73 20 75 73  65 64 20 77 69 74 68 20  |It is used with |
000599a0  74 68 65 20 3c 73 65 74  6c 6f 63 61 6c 65 3e 20  |the <setlocale> |
000599b0  66 75 6e 63 74 69 6f 6e  20 61 6e 64 20 72 65 70  |function and rep|
000599c0  72 65 73 65 6e 74 73 20  69 6e 66 6f 72 6d 61 74  |resents informat|
000599d0  69 6f 6e 20 72 65 67 61  72 64 69 6e 67 20 73 74  |ion regarding st|
000599e0  72 69 6e 67 20 63 6f 6c  6c 61 74 69 6f 6e 2e 00  |ring collation..|
000599f0  44 41 54 41 9b 00 00 00  4c 43 5f 43 54 59 50 45  |DATA....LC_CTYPE|
00059a00  0a 54 68 69 73 20 6d 61  63 72 6f 20 69 73 20 64  |.This macro is d|
00059a10  65 66 69 6e 65 64 20 69  6e 20 3c 6c 6f 63 61 6c  |efined in <local|
00059a20  65 2e 68 3d 3e 6c 6f 63  61 6c 65 3e 2e 20 49 74  |e.h=>locale>. It|
00059a30  20 69 73 20 75 73 65 64  20 77 69 74 68 20 74 68  | is used with th|
00059a40  65 20 3c 73 65 74 6c 6f  63 61 6c 65 3e 20 66 75  |e <setlocale> fu|
00059a50  6e 63 74 69 6f 6e 20 61  6e 64 20 72 65 70 72 65  |nction and repre|
00059a60  73 65 6e 74 73 20 69 6e  66 6f 72 6d 61 74 69 6f  |sents informatio|
00059a70  6e 20 72 65 67 61 72 64  69 6e 67 20 63 68 61 72  |n regarding char|
00059a80  61 63 74 65 72 20 74 79  70 65 2e 00 44 41 54 41  |acter type..DATA|
00059a90  a3 00 00 00 4c 43 5f 4d  4f 4e 45 54 41 52 59 0a  |....LC_MONETARY.|
00059aa0  54 68 69 73 20 6d 61 63  72 6f 20 69 73 20 64 65  |This macro is de|
00059ab0  66 69 6e 65 64 20 69 6e  20 3c 6c 6f 63 61 6c 65  |fined in <locale|
00059ac0  2e 68 3d 3e 6c 6f 63 61  6c 65 3e 2e 20 49 74 20  |.h=>locale>. It |
00059ad0  69 73 20 75 73 65 64 20  77 69 74 68 20 74 68 65  |is used with the|
00059ae0  20 3c 73 65 74 6c 6f 63  61 6c 65 3e 20 66 75 6e  | <setlocale> fun|
00059af0  63 74 69 6f 6e 20 61 6e  64 20 72 65 70 72 65 73  |ction and repres|
00059b00  65 6e 74 73 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |ents information|
00059b10  20 72 65 67 61 72 64 69  6e 67 20 6d 6f 6e 65 74  | regarding monet|
00059b20  61 72 79 20 66 6f 72 6d  61 74 74 69 6e 67 2e 00  |ary formatting..|
00059b30  44 41 54 41 a4 00 00 00  4c 43 5f 4e 55 4d 45 52  |DATA....LC_NUMER|
00059b40  49 43 0a 54 68 69 73 20  6d 61 63 72 6f 20 69 73  |IC.This macro is|
00059b50  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 6c 6f 63  | defined in <loc|
00059b60  61 6c 65 2e 68 3d 3e 6c  6f 63 61 6c 65 3e 2e 20  |ale.h=>locale>. |
00059b70  49 74 20 69 73 20 75 73  65 64 20 77 69 74 68 20  |It is used with |
00059b80  74 68 65 20 3c 73 65 74  6c 6f 63 61 6c 65 3e 20  |the <setlocale> |
00059b90  66 75 6e 63 74 69 6f 6e  20 61 6e 64 20 72 65 70  |function and rep|
00059ba0  72 65 73 65 6e 74 73 20  69 6e 66 6f 72 6d 61 74  |resents informat|
00059bb0  69 6f 6e 20 72 65 67 61  72 64 69 6e 67 20 6e 75  |ion regarding nu|
00059bc0  6d 65 72 69 63 20 73 74  72 69 6e 67 20 66 6f 72  |meric string for|
00059bd0  6d 61 74 2e 44 41 54 41  9b 00 00 00 4c 43 5f 54  |mat.DATA....LC_T|
00059be0  49 4d 45 0a 54 68 69 73  20 6d 61 63 72 6f 20 69  |IME.This macro i|
00059bf0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 6c 6f  |s defined in <lo|
00059c00  63 61 6c 65 2e 68 3d 3e  6c 6f 63 61 6c 65 3e 2e  |cale.h=>locale>.|
00059c10  20 49 74 20 69 73 20 75  73 65 64 20 77 69 74 68  | It is used with|
00059c20  20 74 68 65 20 3c 73 65  74 6c 6f 63 61 6c 65 3e  | the <setlocale>|
00059c30  20 66 75 6e 63 74 69 6f  6e 20 61 6e 64 20 72 65  | function and re|
00059c40  70 72 65 73 65 6e 74 73  20 69 6e 66 6f 72 6d 61  |presents informa|
00059c50  74 69 6f 6e 20 72 65 67  61 72 64 69 6e 67 20 74  |tion regarding t|
00059c60  69 6d 65 20 66 6f 72 6d  61 74 74 69 6e 67 2e 00  |ime formatting..|
00059c70  44 41 54 41 6a 02 00 00  73 74 72 75 63 74 20 6c  |DATAj...struct l|
00059c80  63 6f 6e 76 0a 54 68 69  73 20 73 74 72 75 63 74  |conv.This struct|
00059c90  75 72 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ure is defined i|
00059ca0  6e 20 3c 6c 6f 63 61 6c  65 2e 68 3d 3e 6c 6f 63  |n <locale.h=>loc|
00059cb0  61 6c 65 3e 2e 20 49 74  20 63 6f 6e 74 61 69 6e  |ale>. It contain|
00059cc0  73 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 61 62  |s information ab|
00059cd0  6f 75 74 20 74 68 65 20  63 75 72 72 65 6e 74 20  |out the current |
00059ce0  6c 6f 63 61 6c 65 2c 20  6d 61 69 6e 6c 79 20 76  |locale, mainly v|
00059cf0  61 72 69 6f 75 73 20 63  6f 75 6e 74 72 79 2d 64  |arious country-d|
00059d00  65 70 65 6e 64 65 6e 74  20 73 79 6d 62 6f 6c 73  |ependent symbols|
00059d10  2e 0a 0a 20 20 5c 7b 0a  20 20 20 20 63 68 61 72  |...  \{.    char|
00059d20  20 2a 64 65 63 69 6d 61  6c 5f 70 6f 69 6e 74 3b  | *decimal_point;|
00059d30  0a 20 20 20 20 63 68 61  72 20 2a 74 68 6f 75 73  |.    char *thous|
00059d40  61 6e 64 73 5f 73 65 70  3b 0a 20 20 20 20 63 68  |ands_sep;.    ch|
00059d50  61 72 20 2a 67 72 6f 75  70 69 6e 67 3b 0a 20 20  |ar *grouping;.  |
00059d60  20 20 63 68 61 72 20 2a  69 6e 74 5f 63 75 72 72  |  char *int_curr|
00059d70  5f 73 79 6d 62 6f 6c 3b  0a 20 20 20 20 63 68 61  |_symbol;.    cha|
00059d80  72 20 2a 63 75 72 72 65  6e 63 79 5f 73 79 6d 62  |r *currency_symb|
00059d90  6f 6c 3b 0a 20 20 20 20  63 68 61 72 20 2a 6d 6f  |ol;.    char *mo|
00059da0  6e 5f 64 65 63 69 6d 61  6c 5f 70 6f 69 6e 74 3b  |n_decimal_point;|
00059db0  0a 20 20 20 20 63 68 61  72 20 2a 6d 6f 6e 5f 74  |.    char *mon_t|
00059dc0  68 6f 75 73 61 6e 64 73  5f 73 65 70 3b 0a 20 20  |housands_sep;.  |
00059dd0  20 20 63 68 61 72 20 2a  6d 6f 6e 5f 67 72 6f 75  |  char *mon_grou|
00059de0  70 69 6e 67 3b 0a 20 20  20 20 63 68 61 72 20 2a  |ping;.    char *|
00059df0  70 6f 73 69 74 69 76 65  5f 73 69 67 6e 3b 0a 20  |positive_sign;. |
00059e00  20 20 20 63 68 61 72 20  2a 6e 65 67 61 74 69 76  |   char *negativ|
00059e10  65 5f 73 69 67 6e 3b 0a  20 20 20 20 63 68 61 72  |e_sign;.    char|
00059e20  20 69 6e 74 5f 66 72 61  63 5f 64 69 67 69 74 73  | int_frac_digits|
00059e30  3b 0a 20 20 20 20 63 68  61 72 20 66 72 61 63 5f  |;.    char frac_|
00059e40  64 69 67 69 74 73 3b 0a  20 20 20 20 63 68 61 72  |digits;.    char|
00059e50  20 70 5f 63 73 5f 70 72  65 63 65 64 65 73 3b 20  | p_cs_precedes; |
00059e60  0a 20 20 20 20 63 68 61  72 20 70 5f 73 65 70 5f  |.    char p_sep_|
00059e70  62 79 5f 73 70 61 63 65  3b 0a 20 20 20 20 63 68  |by_space;.    ch|
00059e80  61 72 20 6e 5f 63 73 5f  70 72 65 63 65 64 65 73  |ar n_cs_precedes|
00059e90  3b 0a 20 20 20 20 63 68  61 72 20 6e 5f 73 65 70  |;.    char n_sep|
00059ea0  5f 62 79 5f 73 70 61 63  65 3b 0a 20 20 20 20 63  |_by_space;.    c|
00059eb0  68 61 72 20 70 5f 73 69  67 6e 5f 70 6f 73 6e 3b  |har p_sign_posn;|
00059ec0  0a 20 20 20 20 63 68 61  72 20 6e 5f 73 69 67 6e  |.    char n_sign|
00059ed0  5f 70 6f 73 6e 3b 0a 20  20 7d 00 00 44 49 52 24  |_posn;.  }..DIR$|
00059ee0  2c 01 00 00 2c 01 00 00  08 a0 05 00 46 ff ff ff  |,...,.......F...|
00059ef0  49 cd b5 22 3b 00 00 00  13 00 00 00 00 00 00 00  |I..";...........|
00059f00  44 49 47 00 44 a0 05 00  46 ff ff ff 50 cd b5 22  |DIG.D...F...P.."|
00059f10  3f 00 00 00 13 00 00 00  00 00 00 00 45 50 53 49  |?...........EPSI|
00059f20  4c 4f 4e 00 84 a0 05 00  46 ff ff ff 81 92 bc 22  |LON.....F......"|
00059f30  93 00 00 00 13 00 00 00  00 00 00 00 4d 41 4e 54  |............MANT|
00059f40  5f 44 49 47 00 00 00 00  18 a1 05 00 46 ff ff ff  |_DIG........F...|
00059f50  1d ce bc 22 97 00 00 00  13 00 00 00 00 00 00 00  |..."............|
00059f60  4d 41 58 00 b0 a1 05 00  46 ff ff ff bb c0 bc 22  |MAX.....F......"|
00059f70  96 00 00 00 13 00 00 00  00 00 00 00 4d 41 58 5f  |............MAX_|
00059f80  31 30 5f 45 58 50 00 00  48 a2 05 00 46 ff ff ff  |10_EXP..H...F...|
00059f90  34 b5 bc 22 8b 00 00 00  13 00 00 00 00 00 00 00  |4.."............|
00059fa0  4d 41 58 5f 45 58 50 00  d4 a2 05 00 46 ff ff ff  |MAX_EXP.....F...|
00059fb0  c2 da bc 22 97 00 00 00  13 00 00 00 00 00 00 00  |..."............|
00059fc0  4d 49 4e 00 6c a3 05 00  46 ff ff ff 14 ab bc 22  |MIN.l...F......"|
00059fd0  96 00 00 00 13 00 00 00  00 00 00 00 4d 49 4e 5f  |............MIN_|
00059fe0  31 30 5f 45 58 50 00 00  04 a4 05 00 46 ff ff ff  |10_EXP......F...|
00059ff0  d5 a0 bc 22 8b 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0005a000  4d 49 4e 5f 45 58 50 00  44 41 54 41 3b 00 00 00  |MIN_EXP.DATA;...|
0005a010  4c 44 42 4c 5f 44 49 47  0a 54 68 69 73 20 6d 61  |LDBL_DIG.This ma|
0005a020  63 72 6f 20 69 73 20 64  65 66 69 6e 65 64 20 69  |cro is defined i|
0005a030  6e 20 3c 66 6c 6f 61 74  2e 68 3d 3e 66 6c 6f 61  |n <float.h=>floa|
0005a040  74 3e 2e 00 44 41 54 41  3f 00 00 00 4c 44 42 4c  |t>..DATA?...LDBL|
0005a050  5f 45 50 53 49 4c 4f 4e  0a 54 68 69 73 20 6d 61  |_EPSILON.This ma|
0005a060  63 72 6f 20 69 73 20 64  65 66 69 6e 65 64 20 69  |cro is defined i|
0005a070  6e 20 3c 66 6c 6f 61 74  2e 68 3d 3e 66 6c 6f 61  |n <float.h=>floa|
0005a080  74 3e 2e 00 44 41 54 41  93 00 00 00 4c 44 42 4c  |t>..DATA....LDBL|
0005a090  5f 4d 41 4e 54 5f 44 49  47 0a 54 68 69 73 20 6d  |_MANT_DIG.This m|
0005a0a0  61 63 72 6f 20 69 73 20  64 65 66 69 6e 65 64 20  |acro is defined |
0005a0b0  69 6e 20 3c 66 6c 6f 61  74 2e 68 3d 3e 66 6c 6f  |in <float.h=>flo|
0005a0c0  61 74 3e 2e 20 49 74 20  67 69 76 65 73 20 74 68  |at>. It gives th|
0005a0d0  65 20 6e 75 6d 62 65 72  20 6f 66 20 64 69 67 69  |e number of digi|
0005a0e0  74 73 20 69 6e 20 74 68  65 20 6d 61 6e 74 69 73  |ts in the mantis|
0005a0f0  73 61 20 6f 66 20 61 20  76 61 72 69 61 62 6c 65  |sa of a variable|
0005a100  20 6f 66 20 74 79 70 65  20 27 6c 6f 6e 67 20 64  | of type 'long d|
0005a110  6f 75 62 6c 65 27 2e 00  44 41 54 41 97 00 00 00  |ouble'..DATA....|
0005a120  4c 44 42 4c 5f 4d 41 58  0a 54 68 69 73 20 6d 61  |LDBL_MAX.This ma|
0005a130  63 72 6f 20 69 73 20 64  65 66 69 6e 65 64 20 69  |cro is defined i|
0005a140  6e 20 3c 66 6c 6f 61 74  2e 68 3d 3e 66 6c 6f 61  |n <float.h=>floa|
0005a150  74 3e 2e 20 49 74 20 67  69 76 65 73 20 74 68 65  |t>. It gives the|
0005a160  20 6d 61 78 69 6d 75 6d  20 70 6f 73 69 74 69 76  | maximum positiv|
0005a170  65 20 76 61 6c 75 65 20  74 68 61 74 20 63 61 6e  |e value that can|
0005a180  20 62 65 20 73 74 6f 72  65 64 20 69 6e 20 61 20  | be stored in a |
0005a190  76 61 72 69 61 62 6c 65  20 6f 66 20 74 79 70 65  |variable of type|
0005a1a0  20 27 6c 6f 6e 67 20 64  6f 75 62 6c 65 27 2e 00  | 'long double'..|
0005a1b0  44 41 54 41 96 00 00 00  4c 44 42 4c 5f 4d 41 58  |DATA....LDBL_MAX|
0005a1c0  5f 31 30 5f 45 58 50 0a  54 68 69 73 20 6d 61 63  |_10_EXP.This mac|
0005a1d0  72 6f 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |ro is defined in|
0005a1e0  20 3c 66 6c 6f 61 74 2e  68 3d 3e 66 6c 6f 61 74  | <float.h=>float|
0005a1f0  3e 2e 20 49 74 20 67 69  76 65 73 20 74 68 65 20  |>. It gives the |
0005a200  6d 61 78 69 6d 75 6d 20  62 61 73 65 20 31 30 20  |maximum base 10 |
0005a210  65 78 70 6f 6e 65 6e 74  20 61 20 76 61 72 69 61  |exponent a varia|
0005a220  62 6c 65 20 6f 66 20 74  79 70 65 20 27 6c 6f 6e  |ble of type 'lon|
0005a230  67 20 64 6f 75 62 6c 65  27 20 63 61 6e 20 63 6f  |g double' can co|
0005a240  6e 74 61 69 6e 2e 00 00  44 41 54 41 8b 00 00 00  |ntain...DATA....|
0005a250  4c 44 42 4c 5f 4d 41 58  5f 45 58 50 0a 54 68 69  |LDBL_MAX_EXP.Thi|
0005a260  73 20 6d 61 63 72 6f 20  69 73 20 64 65 66 69 6e  |s macro is defin|
0005a270  65 64 20 69 6e 20 3c 66  6c 6f 61 74 2e 68 3d 3e  |ed in <float.h=>|
0005a280  66 6c 6f 61 74 3e 2e 20  49 74 20 67 69 76 65 73  |float>. It gives|
0005a290  20 74 68 65 20 6d 61 78  69 6d 75 6d 20 65 78 70  | the maximum exp|
0005a2a0  6f 6e 65 6e 74 20 61 20  76 61 72 69 61 62 6c 65  |onent a variable|
0005a2b0  20 6f 66 20 74 79 70 65  20 27 6c 6f 6e 67 20 64  | of type 'long d|
0005a2c0  6f 75 62 6c 65 27 20 63  61 6e 20 63 6f 6e 74 61  |ouble' can conta|
0005a2d0  69 6e 2e 00 44 41 54 41  97 00 00 00 4c 44 42 4c  |in..DATA....LDBL|
0005a2e0  5f 4d 49 4e 0a 54 68 69  73 20 6d 61 63 72 6f 20  |_MIN.This macro |
0005a2f0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 66  |is defined in <f|
0005a300  6c 6f 61 74 2e 68 3d 3e  66 6c 6f 61 74 3e 2e 20  |loat.h=>float>. |
0005a310  49 74 20 67 69 76 65 73  20 74 68 65 20 6d 69 6e  |It gives the min|
0005a320  69 6d 75 6d 20 70 6f 73  69 74 69 76 65 20 76 61  |imum positive va|
0005a330  6c 75 65 20 74 68 61 74  20 63 61 6e 20 62 65 20  |lue that can be |
0005a340  73 74 6f 72 65 64 20 69  6e 20 61 20 76 61 72 69  |stored in a vari|
0005a350  61 62 6c 65 20 6f 66 20  74 79 70 65 20 27 6c 6f  |able of type 'lo|
0005a360  6e 67 20 64 6f 75 62 6c  65 27 2e 00 44 41 54 41  |ng double'..DATA|
0005a370  96 00 00 00 4c 44 42 4c  5f 4d 49 4e 5f 31 30 5f  |....LDBL_MIN_10_|
0005a380  45 58 50 0a 54 68 69 73  20 6d 61 63 72 6f 20 69  |EXP.This macro i|
0005a390  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 66 6c  |s defined in <fl|
0005a3a0  6f 61 74 2e 68 3d 3e 66  6c 6f 61 74 3e 2e 20 49  |oat.h=>float>. I|
0005a3b0  74 20 67 69 76 65 73 20  74 68 65 20 6d 69 6e 69  |t gives the mini|
0005a3c0  6d 75 6d 20 62 61 73 65  20 31 30 20 65 78 70 6f  |mum base 10 expo|
0005a3d0  6e 65 6e 74 20 61 20 76  61 72 69 61 62 6c 65 20  |nent a variable |
0005a3e0  6f 66 20 74 79 70 65 20  27 6c 6f 6e 67 20 64 6f  |of type 'long do|
0005a3f0  75 62 6c 65 27 20 63 61  6e 20 63 6f 6e 74 61 69  |uble' can contai|
0005a400  6e 2e 00 00 44 41 54 41  8b 00 00 00 4c 44 42 4c  |n...DATA....LDBL|
0005a410  5f 4d 49 4e 5f 45 58 50  0a 54 68 69 73 20 6d 61  |_MIN_EXP.This ma|
0005a420  63 72 6f 20 69 73 20 64  65 66 69 6e 65 64 20 69  |cro is defined i|
0005a430  6e 20 3c 66 6c 6f 61 74  2e 68 3d 3e 66 6c 6f 61  |n <float.h=>floa|
0005a440  74 3e 2e 20 49 74 20 67  69 76 65 73 20 74 68 65  |t>. It gives the|
0005a450  20 6d 69 6e 69 6d 75 6d  20 65 78 70 6f 6e 65 6e  | minimum exponen|
0005a460  74 20 61 20 76 61 72 69  61 62 6c 65 20 6f 66 20  |t a variable of |
0005a470  74 79 70 65 20 27 6c 6f  6e 67 20 64 6f 75 62 6c  |type 'long doubl|
0005a480  65 27 20 63 61 6e 20 63  6f 6e 74 61 69 6e 2e 00  |e' can contain..|
0005a490  44 41 54 41 f0 00 00 00  6c 64 65 78 70 0a 53 79  |DATA....ldexp.Sy|
0005a4a0  6e 74 61 78 3a 09 64 6f  75 62 6c 65 20 6c 64 65  |ntax:.double lde|
0005a4b0  78 70 20 28 64 6f 75 62  6c 65 20 78 2c 20 69 6e  |xp (double x, in|
0005a4c0  74 20 79 29 3b 0a 48 65  61 64 65 72 3a 09 3c 6d  |t y);.Header:.<m|
0005a4d0  61 74 68 2e 68 3d 3e 6d  61 74 68 3e 0a 0a 52 65  |ath.h=>math>..Re|
0005a4e0  74 75 72 6e 73 3a 09 78  20 6d 75 6c 74 69 70 6c  |turns:.x multipl|
0005a4f0  69 65 64 20 62 79 20 28  32 20 74 6f 20 74 68 65  |ied by (2 to the|
0005a500  20 70 6f 77 65 72 20 6f  66 20 79 29 0a 0a 54 68  | power of y)..Th|
0005a510  69 73 20 66 75 6e 63 74  69 6f 6e 20 63 61 6c 63  |is function calc|
0005a520  75 6c 61 74 65 73 20 78  20 2a 20 28 31 20 5c 3c  |ulates x * (1 \<|
0005a530  5c 3c 20 79 29 2e 20 54  68 69 73 20 69 73 20 61  |\< y). This is a|
0005a540  20 63 61 6c 63 75 6c 61  74 69 6f 6e 20 71 75 69  | calculation qui|
0005a550  74 65 20 66 72 65 71 75  65 6e 74 6c 79 20 70 65  |te frequently pe|
0005a560  72 66 6f 72 6d 65 64 20  73 6f 20 69 73 20 61 20  |rformed so is a |
0005a570  75 73 65 66 75 6c 20 73  68 6f 72 74 63 75 74 2e  |useful shortcut.|
0005a580  44 41 54 41 6a 00 00 00  4c 44 46 20 3c 72 65 67  |DATAj...LDF <reg|
0005a590  69 73 74 65 72 3e 2c 3c  61 64 64 72 65 73 73 3e  |ister>,<address>|
0005a5a0  0a 54 68 69 73 20 69 73  20 65 71 75 69 76 61 6c  |.This is equival|
0005a5b0  65 6e 74 20 74 6f 20 3c  4c 44 52 3e 2c 20 62 75  |ent to <LDR>, bu|
0005a5c0  74 20 66 6f 72 20 66 6c  6f 61 74 69 6e 67 20 70  |t for floating p|
0005a5d0  6f 69 6e 74 20 72 65 67  69 73 74 65 72 73 20 61  |oint registers a|
0005a5e0  6e 64 20 76 61 6c 75 65  73 2e 00 00 44 41 54 41  |nd values...DATA|
0005a5f0  e7 00 00 00 6c 64 69 76  0a 53 79 6e 74 61 78 3a  |....ldiv.Syntax:|
0005a600  09 3c 6c 64 69 76 5f 74  3e 20 6c 64 69 76 20 28  |.<ldiv_t> ldiv (|
0005a610  6c 6f 6e 67 20 69 6e 74  20 78 2c 20 6c 6f 6e 67  |long int x, long|
0005a620  20 69 6e 74 20 79 29 3b  0a 48 65 61 64 65 72 3a  | int y);.Header:|
0005a630  09 3c 73 74 64 6c 69 62  2e 68 3d 3e 73 74 64 6c  |.<stdlib.h=>stdl|
0005a640  69 62 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 54 68  |ib>..Returns:.Th|
0005a650  65 20 71 75 6f 74 69 65  6e 74 20 61 6e 64 20 72  |e quotient and r|
0005a660  65 6d 61 69 6e 64 65 72  20 6f 66 20 78 2f 79 2e  |emainder of x/y.|
0005a670  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0005a680  69 73 20 69 64 65 6e 74  69 63 61 6c 20 74 6f 20  |is identical to |
0005a690  74 68 65 20 66 75 6e 63  74 69 6f 6e 20 3c 64 69  |the function <di|
0005a6a0  76 3e 2c 20 65 78 63 65  70 74 20 74 68 61 74 20  |v>, except that |
0005a6b0  61 6c 6c 20 6e 75 6d 62  65 72 73 20 69 6e 76 6f  |all numbers invo|
0005a6c0  6c 76 65 64 20 61 72 65  20 6c 6f 6e 67 20 69 6e  |lved are long in|
0005a6d0  74 73 2e 00 44 49 52 24  28 00 00 00 28 00 00 00  |ts..DIR$(...(...|
0005a6e0  fc a6 05 00 46 ff ff ff  3e 74 de 22 ed 00 00 00  |....F...>t."....|
0005a6f0  13 00 00 00 00 00 00 00  74 00 00 00 44 41 54 41  |........t...DATA|
0005a700  ed 00 00 00 6c 64 69 76  5f 74 0a 54 68 65 20 74  |....ldiv_t.The t|
0005a710  79 70 65 20 7b 2f 7d 6c  64 69 76 5f 74 7b 2f 7d  |ype {/}ldiv_t{/}|
0005a720  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
0005a730  73 74 64 6c 69 62 2e 68  3d 3e 73 74 64 6c 69 62  |stdlib.h=>stdlib|
0005a740  3e 20 66 6f 72 20 68 6f  6c 64 69 6e 67 20 72 65  |> for holding re|
0005a750  74 75 72 6e 20 76 61 6c  75 65 73 20 66 72 6f 6d  |turn values from|
0005a760  20 74 68 65 20 66 75 6e  63 74 69 6f 6e 20 3c 6c  | the function <l|
0005a770  64 69 76 3e 2e 20 49 74  20 69 73 20 64 65 66 69  |div>. It is defi|
0005a780  6e 65 64 20 61 73 20 74  68 65 20 66 6f 6c 6c 6f  |ned as the follo|
0005a790  77 69 6e 67 20 73 74 72  75 63 74 75 72 65 3a 0a  |wing structure:.|
0005a7a0  0a 5c 7b 0a 20 20 20 20  6c 6f 6e 67 20 69 6e 74  |.\{.    long int|
0005a7b0  20 71 75 6f 74 3b 09 2f  2a 20 51 75 6f 74 69 65  | quot;./* Quotie|
0005a7c0  6e 74 20 2a 2f 0a 20 20  20 20 6c 6f 6e 67 20 69  |nt */.    long i|
0005a7d0  6e 74 20 72 65 6d 3b 09  2f 2a 20 52 65 6d 61 69  |nt rem;./* Remai|
0005a7e0  6e 64 65 72 20 2a 2f 0a  7d 00 00 00 44 41 54 41  |nder */.}...DATA|
0005a7f0  25 01 00 00 4c 44 52 20  3c 72 65 67 69 73 74 65  |%...LDR <registe|
0005a800  72 3e 2c 3c 61 64 64 72  65 73 73 3e 0a 54 68 69  |r>,<address>.Thi|
0005a810  73 20 73 65 74 73 20 74  68 65 20 67 69 76 65 6e  |s sets the given|
0005a820  20 72 65 67 69 73 74 65  72 20 74 6f 20 63 6f 6e  | register to con|
0005a830  74 61 69 6e 20 74 68 65  20 63 6f 6e 74 65 6e 74  |tain the content|
0005a840  73 20 6f 66 20 74 68 65  20 67 69 76 65 6e 20 61  |s of the given a|
0005a850  64 64 72 65 73 73 20 28  75 73 75 61 6c 6c 79 20  |ddress (usually |
0005a860  61 20 6c 61 62 65 6c 29  2e 20 54 68 65 20 63 6f  |a label). The co|
0005a870  6e 74 65 6e 74 73 20 61  72 65 20 61 20 77 6f 72  |ntents are a wor|
0005a880  64 2c 20 75 6e 6c 65 73  73 20 4c 44 52 42 20 69  |d, unless LDRB i|
0005a890  73 20 75 73 65 64 20 69  6e 20 77 68 69 63 68 20  |s used in which |
0005a8a0  63 61 73 65 20 6f 6e 6c  79 20 61 20 62 79 74 65  |case only a byte|
0005a8b0  20 69 73 20 6c 6f 61 64  65 64 2e 0a 0a 23 66 43  | is loaded...#fC|
0005a8c0  6f 64 65 0a 20 20 20 20  20 20 20 20 4c 44 52 20  |ode.        LDR |
0005a8d0  20 20 52 30 2c 6c 61 62  65 6c 0a 20 20 20 20 20  |  R0,label.     |
0005a8e0  20 20 20 2e 2e 2e 0a 20  2e 6c 61 62 65 6c 20 3c  |   .... .label <|
0005a8f0  44 43 44 3e 20 20 20 31  30 0a 23 66 0a 0a 72 30  |DCD>   10.#f..r0|
0005a900  20 77 69 6c 6c 20 63 6f  6e 74 61 69 6e 20 31 30  | will contain 10|
0005a910  2e 00 00 00 44 41 54 41  50 01 00 00 4c 65 61 66  |....DATAP...Leaf|
0005a920  4e 61 6d 65 0a 53 79 6e  74 61 78 3a 09 63 68 61  |Name.Syntax:.cha|
0005a930  72 20 2a 4c 65 61 66 4e  61 6d 65 20 28 63 68 61  |r *LeafName (cha|
0005a940  72 20 2a 70 61 74 68 6e  61 6d 65 29 3b 0a 48 65  |r *pathname);.He|
0005a950  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 53  |ader:.<DeskLib:S|
0005a960  74 72 2e 68 3d 3e 53 74  72 5f 44 4c 3e 0a 0a 52  |tr.h=>Str_DL>..R|
0005a970  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
0005a980  74 6f 20 6c 65 61 66 20  6e 61 6d 65 2e 0a 0a 54  |to leaf name...T|
0005a990  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 63 61  |his function sca|
0005a9a0  6e 73 20 74 68 72 6f 75  67 68 20 2f 70 61 74 68  |ns through /path|
0005a9b0  6e 61 6d 65 2f 20 75 6e  74 69 6c 20 69 74 20 72  |name/ until it r|
0005a9c0  65 61 63 68 65 73 20 74  68 65 20 66 69 6e 61 6c  |eaches the final|
0005a9d0  20 27 2e 27 20 61 6e 64  20 74 68 65 6e 20 72 65  | '.' and then re|
0005a9e0  74 75 72 6e 73 20 61 20  70 6f 69 6e 74 65 72 20  |turns a pointer |
0005a9f0  74 6f 20 74 68 65 20 6e  65 78 74 20 63 68 61 72  |to the next char|
0005aa00  61 63 74 65 72 2c 20 69  65 20 74 68 65 20 6c 65  |acter, ie the le|
0005aa10  61 66 20 6e 61 6d 65 20  69 66 20 2f 70 61 74 68  |af name if /path|
0005aa20  6e 61 6d 65 2f 20 69 73  20 61 20 66 75 6c 6c 20  |name/ is a full |
0005aa30  70 61 74 68 6e 61 6d 65  2e 20 49 66 20 6e 6f 20  |pathname. If no |
0005aa40  27 2e 27 20 69 73 20 66  6f 75 6e 64 2c 20 69 74  |'.' is found, it|
0005aa50  20 72 65 74 75 72 6e 73  20 2f 70 61 74 68 6e 61  | returns /pathna|
0005aa60  6d 65 2f 2e 44 41 54 41  14 01 00 00 54 69 6d 73  |me/.DATA....Tims|
0005aa70  4c 69 62 3a 4c 69 62 2e  68 0a 54 68 69 73 20 68  |Lib:Lib.h.This h|
0005aa80  65 61 64 65 72 20 64 65  66 69 6e 65 73 20 61 6c  |eader defines al|
0005aa90  6c 20 74 68 65 20 75 73  65 66 75 6c 20 6d 69 73  |l the useful mis|
0005aaa0  63 65 6c 6c 61 6e 65 6f  75 73 20 62 69 74 73 20  |cellaneous bits |
0005aab0  77 68 69 63 68 20 63 6f  75 6c 64 6e 27 74 20 62  |which couldn't b|
0005aac0  65 20 66 6f 75 6e 64 20  61 20 68 6f 6d 65 20 65  |e found a home e|
0005aad0  6c 73 65 77 68 65 72 65  2e 2e 2e 0a 0a 46 75 6e  |lsewhere.....Fun|
0005aae0  63 74 69 6f 6e 73 3a 0a  0a 23 49 6e 64 65 6e 74  |ctions:..#Indent|
0005aaf0  20 36 0a 23 54 61 62 6c  65 20 35 20 31 35 0a 3c  | 6.#Table 5 15.<|
0005ab00  53 74 72 53 61 76 65 3e  0a 3c 53 74 72 53 61 76  |StrSave>.<StrSav|
0005ab10  65 44 62 75 67 3e 0a 3c  4d 61 6b 65 43 52 3e 0a  |eDbug>.<MakeCR>.|
0005ab20  3c 4d 61 6b 65 41 53 43  49 49 5a 3e 0a 3c 48 65  |<MakeASCIIZ>.<He|
0005ab30  78 44 69 67 69 74 3e 0a  3c 4e 75 6d 46 72 6f 6d  |xDigit>.<NumFrom|
0005ab40  48 65 78 44 69 67 69 74  3e 0a 3c 73 74 72 69 63  |HexDigit>.<stric|
0005ab50  6d 70 3e 0a 3c 73 74 72  6e 69 63 6d 70 3e 0a 3c  |mp>.<strnicmp>.<|
0005ab60  53 70 6c 69 74 50 61 74  68 6e 61 6d 65 3e 0a 23  |SplitPathname>.#|
0005ab70  45 6e 64 54 61 62 6c 65  44 49 52 24 60 01 00 00  |EndTableDIR$`...|
0005ab80  60 01 00 00 d8 ac 05 00  46 fd ff ff 3e 28 e8 22  |`.......F...>(."|
0005ab90  53 03 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |S...........!Roo|
0005aba0  74 00 00 00 2c b0 05 00  46 fd ff ff e8 6e e8 22  |t...,...F....n."|
0005abb0  3a 01 00 00 13 00 00 00  00 00 00 00 63 6f 70 79  |:...........copy|
0005abc0  72 69 67 68 74 5f 00 00  68 b1 05 00 46 fd ff ff  |right_..h...F...|
0005abd0  d3 36 e8 22 99 00 00 00  13 00 00 00 00 00 00 00  |.6."............|
0005abe0  63 72 65 61 74 65 5f 00  04 b2 05 00 46 fd ff ff  |create_.....F...|
0005abf0  6d 5e e8 22 b4 00 00 00  13 00 00 00 00 00 00 00  |m^."............|
0005ac00  64 65 6c 65 74 65 5f 00  b8 b2 05 00 46 fd ff ff  |delete_.....F...|
0005ac10  e9 65 e8 22 ca 00 00 00  13 00 00 00 00 00 00 00  |.e."............|
0005ac20  65 78 74 72 61 63 74 5f  00 00 00 00 84 b3 05 00  |extract_........|
0005ac30  46 fd ff ff c7 4c e8 22  f9 00 00 00 13 00 00 00  |F....L."........|
0005ac40  00 00 00 00 68 69 73 74  6f 72 79 5f 00 00 00 00  |....history_....|
0005ac50  80 b4 05 00 46 fd ff ff  21 79 e8 22 42 01 00 00  |....F...!y."B...|
0005ac60  13 00 00 00 00 00 00 00  69 64 65 6e 74 69 66 69  |........identifi|
0005ac70  63 61 74 69 6f 6e 5f 00  c4 b5 05 00 46 fd ff ff  |cation_.....F...|
0005ac80  27 56 e8 22 42 01 00 00  13 00 00 00 00 00 00 00  |'V."B...........|
0005ac90  69 6e 73 65 72 74 5f 00  08 b7 05 00 46 fd ff ff  |insert_.....F...|
0005aca0  70 44 e8 22 7a 00 00 00  13 00 00 00 00 00 00 00  |pD."z...........|
0005acb0  6c 69 73 74 5f 00 00 00  84 b7 05 00 46 fd ff ff  |list_.......F...|
0005acc0  68 3e e8 22 b8 00 00 00  13 00 00 00 00 00 00 00  |h>."............|
0005acd0  76 65 72 69 66 79 5f 00  44 41 54 41 53 03 00 00  |verify_.DATAS...|
0005ace0  4c 69 62 72 61 72 69 65  73 0a 4c 69 62 72 61 72  |Libraries.Librar|
0005acf0  69 65 73 20 61 72 65 20  66 69 6c 65 73 20 63 6f  |ies are files co|
0005ad00  6e 74 61 69 6e 69 6e 67  20 6f 6e 65 20 6f 72 20  |ntaining one or |
0005ad10  6d 6f 72 65 20 6f 62 6a  65 63 74 20 66 69 6c 65  |more object file|
0005ad20  73 20 77 68 69 63 68 20  63 61 6e 20 62 65 20 6c  |s which can be l|
0005ad30  69 6e 6b 65 64 20 69 6e  20 77 69 74 68 20 61 70  |inked in with ap|
0005ad40  70 6c 69 63 61 74 69 6f  6e 73 2e 20 4f 62 6a 65  |plications. Obje|
0005ad50  63 74 20 66 69 6c 65 73  20 69 6e 73 65 72 74 65  |ct files inserte|
0005ad60  64 20 69 6e 74 6f 20 6c  69 62 72 61 72 69 65 73  |d into libraries|
0005ad70  20 61 72 65 20 63 61 6c  6c 65 64 20 27 6d 6f 64  | are called 'mod|
0005ad80  75 6c 65 73 27 2c 20 61  6e 64 20 6d 61 79 20 63  |ules', and may c|
0005ad90  6f 6e 74 61 69 6e 20 6f  6e 65 20 6f 72 20 6d 6f  |ontain one or mo|
0005ada0  72 65 20 66 75 6e 63 74  69 6f 6e 73 2e 20 54 68  |re functions. Th|
0005adb0  65 20 66 65 77 65 72 20  66 75 6e 63 74 69 6f 6e  |e fewer function|
0005adc0  73 20 69 6e 20 61 20 6d  6f 64 75 6c 65 2c 20 74  |s in a module, t|
0005add0  68 65 20 6c 65 73 73 20  75 6e 6e 65 63 65 73 73  |he less unnecess|
0005ade0  61 72 79 20 63 6f 64 65  20 77 69 6c 6c 20 62 65  |ary code will be|
0005adf0  20 70 75 6c 6c 65 64 20  69 6e 20 77 68 65 6e 20  | pulled in when |
0005ae00  79 6f 75 20 75 73 65 20  6f 6e 65 20 6f 66 20 74  |you use one of t|
0005ae10  68 65 6d 2c 20 68 6f 77  65 76 65 72 20 6c 69 6e  |hem, however lin|
0005ae20  6b 69 6e 67 20 77 69 6c  6c 20 62 65 20 73 6c 6f  |king will be slo|
0005ae30  77 65 72 2e 0a 0a 45 61  73 79 20 43 20 70 72 6f  |wer...Easy C pro|
0005ae40  76 69 64 65 73 20 61 20  6c 69 62 72 61 72 79 20  |vides a library |
0005ae50  66 61 63 69 6c 69 74 79  20 61 73 20 64 65 73 63  |facility as desc|
0005ae60  72 69 62 65 64 20 62 65  6c 6f 77 3a 0a 0a 54 68  |ribed below:..Th|
0005ae70  65 20 64 69 72 65 63 74  69 76 65 73 20 61 72 65  |e directives are|
0005ae80  20 75 73 65 64 20 77 69  74 68 20 74 68 65 20 27  | used with the '|
0005ae90  6c 69 62 72 61 72 79 27  20 63 6f 6d 6d 61 6e 64  |library' command|
0005aea0  2e 20 54 68 65 79 20 61  72 65 20 70 72 65 66 69  |. They are prefi|
0005aeb0  78 65 64 20 62 79 20 22  2d 22 2e 20 48 65 6c 70  |xed by "-". Help|
0005aec0  20 63 61 6e 20 62 65 20  67 6f 74 20 62 79 20 75  | can be got by u|
0005aed0  73 69 6e 67 20 3c 2a 48  65 6c 70 20 6c 69 62 72  |sing <*Help libr|
0005aee0  61 72 79 3e 2e 20 41 20  73 75 6d 6d 61 72 79 20  |ary>. A summary |
0005aef0  6f 66 20 74 68 65 20 64  69 72 65 63 74 69 62 65  |of the directibe|
0005af00  73 20 75 73 65 64 20 69  73 20 73 68 6f 77 6e 20  |s used is shown |
0005af10  62 65 6c 6f 77 2e 0a 0a  23 49 6e 64 65 6e 74 20  |below...#Indent |
0005af20  31 35 0a 23 54 61 62 6c  65 20 63 6f 6c 75 6d 6e  |15.#Table column|
0005af30  73 20 33 0a 3c 5c 2d 63  72 65 61 74 65 3d 3e 6c  |s 3.<\-create=>l|
0005af40  69 62 5f 63 72 65 61 74  65 5f 3e 0a 3c 5c 2d 76  |ib_create_>.<\-v|
0005af50  65 72 69 66 79 3d 3e 6c  69 62 5f 76 65 72 69 66  |erify=>lib_verif|
0005af60  79 5f 3e 0a 3c 5c 2d 6c  69 73 74 3d 3e 6c 69 62  |y_>.<\-list=>lib|
0005af70  5f 6c 69 73 74 5f 3e 0a  3c 5c 2d 68 69 73 74 6f  |_list_>.<\-histo|
0005af80  72 79 3d 3e 6c 69 62 5f  68 69 73 74 6f 72 79 5f  |ry=>lib_history_|
0005af90  3e 0a 3c 5c 2d 69 6e 73  65 72 74 3d 3e 6c 69 62  |>.<\-insert=>lib|
0005afa0  5f 69 6e 73 65 72 74 5f  3e 0a 3c 5c 2d 64 65 6c  |_insert_>.<\-del|
0005afb0  65 74 65 3d 3e 6c 69 62  5f 64 65 6c 65 74 65 5f  |ete=>lib_delete_|
0005afc0  3e 0a 3c 5c 2d 65 78 74  72 61 63 74 3d 3e 6c 69  |>.<\-extract=>li|
0005afd0  62 5f 65 78 74 72 61 63  74 5f 3e 0a 3c 5c 2d 63  |b_extract_>.<\-c|
0005afe0  6f 70 79 72 69 67 68 74  3d 3e 6c 69 62 5f 63 6f  |opyright=>lib_co|
0005aff0  70 79 72 69 67 68 74 5f  3e 0a 3c 5c 2d 69 64 65  |pyright_>.<\-ide|
0005b000  6e 74 69 66 69 63 61 74  69 6f 6e 3d 3e 6c 69 62  |ntification=>lib|
0005b010  5f 69 64 65 6e 74 69 66  69 63 61 74 69 6f 6e 5f  |_identification_|
0005b020  3e 0a 23 45 6e 64 54 61  62 6c 65 00 44 41 54 41  |>.#EndTable.DATA|
0005b030  3a 01 00 00 2d 63 6f 70  79 72 69 67 68 74 0a 41  |:...-copyright.A|
0005b040  62 62 72 65 76 69 61 74  69 6f 6e 3a 09 2d 63 6f  |bbreviation:.-co|
0005b050  0a 53 79 6e 74 61 78 3a  09 2d 63 6f 70 79 72 69  |.Syntax:.-copyri|
0005b060  67 68 74 3d 5c 3c 74 65  78 74 3e 0a 0a 54 68 69  |ght=\<text>..Thi|
0005b070  73 20 64 69 72 65 63 74  69 76 65 20 73 70 65 63  |s directive spec|
0005b080  69 66 69 65 73 20 74 68  65 20 63 6f 70 79 72 69  |ifies the copyri|
0005b090  67 68 74 20 6d 65 73 73  61 67 65 20 66 6f 72 20  |ght message for |
0005b0a0  61 20 6c 69 62 72 61 72  79 2e 20 49 66 20 74 68  |a library. If th|
0005b0b0  65 72 65 20 61 72 65 20  73 70 61 63 65 73 20 69  |ere are spaces i|
0005b0c0  6e 20 69 74 2c 20 69 74  20 6d 75 73 74 20 62 65  |n it, it must be|
0005b0d0  20 65 6e 63 6c 6f 73 65  64 20 69 6e 20 71 75 6f  | enclosed in quo|
0005b0e0  74 65 73 2e 20 49 74 20  63 61 6e 20 6f 6e 6c 79  |tes. It can only|
0005b0f0  20 62 65 20 75 73 65 64  20 77 69 74 68 20 74 68  | be used with th|
0005b100  65 20 3c 5c 2d 63 72 65  61 74 65 3d 3e 6c 69 62  |e <\-create=>lib|
0005b110  5f 63 72 65 61 74 65 5f  3e 20 64 69 72 65 63 74  |_create_> direct|
0005b120  69 76 65 2e 0a 0a 23 77  72 61 70 20 6f 66 66 0a  |ive...#wrap off.|
0005b130  65 67 20 7b 66 43 6f 64  65 7d 2a 6c 69 62 72 61  |eg {fCode}*libra|
0005b140  72 79 20 4e 65 77 4c 69  62 20 2d 63 72 65 61 74  |ry NewLib -creat|
0005b150  65 20 2d 63 6f 3d 22 28  43 29 20 47 20 42 6f 64  |e -co="(C) G Bod|
0005b160  65 6e 20 39 34 22 00 00  44 41 54 41 99 00 00 00  |en 94"..DATA....|
0005b170  2d 63 72 65 61 74 65 0a  41 62 62 72 65 76 69 61  |-create.Abbrevia|
0005b180  74 69 6f 6e 3a 09 2d 63  0a 0a 54 68 69 73 20 64  |tion:.-c..This d|
0005b190  69 72 65 63 74 69 76 65  20 61 6c 6c 6f 77 73 20  |irective allows |
0005b1a0  61 20 6e 65 77 20 6c 69  62 72 61 72 79 20 74 6f  |a new library to|
0005b1b0  20 62 65 20 63 72 65 61  74 65 64 20 63 6f 6e 74  | be created cont|
0005b1c0  61 69 6e 69 6e 67 20 6e  6f 20 66 75 6e 63 74 69  |aining no functi|
0005b1d0  6f 6e 73 2e 0a 0a 23 77  72 61 70 20 6f 66 66 0a  |ons...#wrap off.|
0005b1e0  65 67 20 7b 66 43 6f 64  65 7d 2a 6c 69 62 72 61  |eg {fCode}*libra|
0005b1f0  72 79 20 4e 65 77 4c 69  62 20 2d 63 72 65 61 74  |ry NewLib -creat|
0005b200  65 00 00 00 44 41 54 41  b4 00 00 00 2d 64 65 6c  |e...DATA....-del|
0005b210  65 74 65 0a 41 62 62 72  65 76 69 61 74 69 6f 6e  |ete.Abbreviation|
0005b220  3a 09 2d 64 0a 53 79 6e  74 61 78 3a 09 2d 64 65  |:.-d.Syntax:.-de|
0005b230  6c 65 74 65 3d 5c 3c 6d  6f 64 75 6c 65 6e 61 6d  |lete=\<modulenam|
0005b240  65 3e 0a 0a 54 68 69 73  20 64 69 72 65 63 74 69  |e>..This directi|
0005b250  76 65 20 64 65 6c 65 74  65 73 20 6f 62 6a 65 63  |ve deletes objec|
0005b260  74 20 66 69 6c 65 28 73  29 20 28 6d 6f 64 75 6c  |t file(s) (modul|
0005b270  65 73 29 20 66 72 6f 6d  20 61 20 6c 69 62 72 61  |es) from a libra|
0005b280  72 79 2e 0a 0a 23 77 72  61 70 20 6f 66 66 0a 65  |ry...#wrap off.e|
0005b290  67 20 7b 66 43 6f 64 65  7d 2a 6c 69 62 72 61 72  |g {fCode}*librar|
0005b2a0  79 20 4e 65 77 4c 69 62  20 2d 64 65 6c 65 74 65  |y NewLib -delete|
0005b2b0  3d 6d 6f 64 75 6c 65 31  44 41 54 41 ca 00 00 00  |=module1DATA....|
0005b2c0  2d 65 78 74 72 61 63 74  0a 41 62 62 72 65 76 69  |-extract.Abbrevi|
0005b2d0  61 74 69 6f 6e 3a 09 2d  65 0a 53 79 6e 74 61 78  |ation:.-e.Syntax|
0005b2e0  3a 09 2d 65 78 74 72 61  63 74 3d 5c 3c 6d 6f 64  |:.-extract=\<mod|
0005b2f0  75 6c 65 6e 61 6d 65 3e  0a 0a 54 68 69 73 20 64  |ulename>..This d|
0005b300  69 72 65 63 74 69 76 65  20 65 78 74 72 61 63 74  |irective extract|
0005b310  73 20 61 6e 20 6f 62 6a  65 63 74 20 66 69 6c 65  |s an object file|
0005b320  20 28 6d 6f 64 75 6c 65  29 20 66 72 6f 6d 20 61  | (module) from a|
0005b330  20 6c 69 62 72 61 72 79  20 61 6e 64 20 73 61 76  | library and sav|
0005b340  65 73 20 69 74 20 6f 6e  20 64 69 73 63 2e 0a 0a  |es it on disc...|
0005b350  23 77 72 61 70 20 6f 66  66 0a 65 67 20 7b 66 43  |#wrap off.eg {fC|
0005b360  6f 64 65 7d 2a 6c 69 62  72 61 72 79 20 4e 65 77  |ode}*library New|
0005b370  4c 69 62 20 2d 65 78 74  72 61 63 74 3d 75 74 69  |Lib -extract=uti|
0005b380  6c 73 00 00 44 41 54 41  f9 00 00 00 2d 68 69 73  |ls..DATA....-his|
0005b390  74 6f 72 79 0a 41 62 62  72 65 76 69 61 74 69 6f  |tory.Abbreviatio|
0005b3a0  6e 3a 09 2d 68 0a 53 79  6e 74 61 78 3a 09 2d 68  |n:.-h.Syntax:.-h|
0005b3b0  69 73 74 6f 72 79 3d 5c  3c 73 74 61 74 65 3e 0a  |istory=\<state>.|
0005b3c0  0a 54 68 69 73 20 64 69  72 65 63 74 69 76 65 20  |.This directive |
0005b3d0  63 6f 6e 74 72 6f 6c 73  20 74 68 65 20 6c 69 62  |controls the lib|
0005b3e0  72 61 72 79 20 68 69 73  74 6f 72 79 20 6d 65 63  |rary history mec|
0005b3f0  68 61 6e 69 73 6d 2e 20  53 77 69 74 63 68 20 69  |hanism. Switch i|
0005b400  74 20 6f 6e 20 6f 72 20  6f 66 66 20 75 73 69 6e  |t on or off usin|
0005b410  67 20 2d 68 69 73 74 6f  72 79 3d 6f 6e 20 6f 72  |g -history=on or|
0005b420  20 2d 68 69 73 74 6f 72  79 3d 6f 66 66 2e 20 54  | -history=off. T|
0005b430  6f 20 64 69 73 70 6c 61  79 20 69 74 20 6a 75 73  |o display it jus|
0005b440  74 20 75 73 65 20 2d 68  69 73 74 6f 72 79 2e 0a  |t use -history..|
0005b450  0a 23 77 72 61 70 20 6f  66 66 0a 65 67 20 7b 66  |.#wrap off.eg {f|
0005b460  43 6f 64 65 7d 2a 6c 69  62 72 61 72 79 20 52 4f  |Code}*library RO|
0005b470  53 4c 69 62 20 2d 68 69  73 74 6f 72 79 00 00 00  |SLib -history...|
0005b480  44 41 54 41 42 01 00 00  2d 69 64 65 6e 74 69 66  |DATAB...-identif|
0005b490  69 63 61 74 69 6f 6e 0a  41 62 62 72 65 76 69 61  |ication.Abbrevia|
0005b4a0  74 69 6f 6e 3a 09 2d 69  64 0a 53 79 6e 74 61 78  |tion:.-id.Syntax|
0005b4b0  3a 09 2d 69 64 65 6e 74  69 66 69 63 61 74 69 6f  |:.-identificatio|
0005b4c0  6e 3d 5c 3c 74 65 78 74  3e 0a 0a 54 68 69 73 20  |n=\<text>..This |
0005b4d0  64 69 72 65 63 74 69 76  65 20 73 70 65 63 69 66  |directive specif|
0005b4e0  69 65 73 20 74 68 65 20  69 64 65 6e 74 69 66 69  |ies the identifi|
0005b4f0  63 61 74 69 6f 6e 20 74  65 78 74 0a 66 6f 72 20  |cation text.for |
0005b500  61 20 6c 69 62 72 61 72  79 2e 20 49 66 20 74 68  |a library. If th|
0005b510  65 72 65 20 61 72 65 20  73 70 61 63 65 73 20 69  |ere are spaces i|
0005b520  6e 20 69 74 2c 20 69 74  20 6d 75 73 74 20 62 65  |n it, it must be|
0005b530  20 65 6e 63 6c 6f 73 65  64 20 69 6e 20 71 75 6f  | enclosed in quo|
0005b540  74 65 73 2e 20 49 74 20  63 61 6e 20 6f 6e 6c 79  |tes. It can only|
0005b550  20 62 65 20 75 73 65 64  20 77 69 74 68 20 74 68  | be used with th|
0005b560  65 20 3c 5c 2d 63 72 65  61 74 65 3d 3e 6c 69 62  |e <\-create=>lib|
0005b570  5f 63 72 65 61 74 65 5f  3e 20 64 69 72 65 63 74  |_create_> direct|
0005b580  69 76 65 2e 0a 0a 23 77  72 61 70 20 6f 66 66 0a  |ive...#wrap off.|
0005b590  65 67 20 7b 66 43 6f 64  65 7d 2a 6c 69 62 72 61  |eg {fCode}*libra|
0005b5a0  72 79 20 4e 65 77 4c 69  62 20 2d 63 72 65 61 74  |ry NewLib -creat|
0005b5b0  65 20 2d 69 64 3d 22 4d  79 20 4c 69 62 72 61 72  |e -id="My Librar|
0005b5c0  79 22 00 00 44 41 54 41  42 01 00 00 2d 69 6e 73  |y"..DATAB...-ins|
0005b5d0  65 72 74 0a 41 62 62 72  65 76 69 61 74 69 6f 6e  |ert.Abbreviation|
0005b5e0  3a 09 2d 69 0a 53 79 6e  74 61 78 3a 09 2d 69 6e  |:.-i.Syntax:.-in|
0005b5f0  73 65 72 74 3d 5c 3c 6f  62 6a 65 63 74 66 69 6c  |sert=\<objectfil|
0005b600  65 3e 0a 0a 54 68 69 73  20 64 69 72 65 63 74 69  |e>..This directi|
0005b610  76 65 20 69 6e 73 65 72  74 73 20 6f 62 6a 65 63  |ve inserts objec|
0005b620  74 20 66 69 6c 65 28 73  29 20 28 6d 6f 64 75 6c  |t file(s) (modul|
0005b630  65 29 20 69 6e 74 6f 20  61 20 6c 69 62 72 61 72  |e) into a librar|
0005b640  79 2e 20 54 68 65 20 6d  6f 64 75 6c 65 20 73 68  |y. The module sh|
0005b650  6f 75 6c 64 20 62 65 20  69 6e 20 41 4f 46 20 66  |ould be in AOF f|
0005b660  6f 72 6d 61 74 2c 20 62  75 74 20 64 6f 65 73 20  |ormat, but does |
0005b670  6e 6f 74 20 68 61 76 65  20 74 6f 20 62 65 20 67  |not have to be g|
0005b680  65 6e 65 72 61 74 65 64  20 66 72 6f 6d 20 45 61  |enerated from Ea|
0005b690  73 79 20 43 20 28 65 67  20 69 74 20 63 6f 75 6c  |sy C (eg it coul|
0005b6a0  64 20 62 65 20 66 72 6f  6d 20 50 61 73 63 61 6c  |d be from Pascal|
0005b6b0  2c 20 44 65 73 6b 74 6f  70 20 41 73 73 65 6d 62  |, Desktop Assemb|
0005b6c0  6c 65 72 20 65 74 63 29  2e 0a 0a 23 77 72 61 70  |ler etc)...#wrap|
0005b6d0  20 6f 66 66 0a 65 67 20  7b 66 43 6f 64 65 7d 2a  | off.eg {fCode}*|
0005b6e0  6c 69 62 72 61 72 79 20  4e 65 77 4c 69 62 20 2d  |library NewLib -|
0005b6f0  69 6e 73 65 72 74 3d 6d  6f 64 75 6c 65 31 2c 6d  |insert=module1,m|
0005b700  6f 64 75 6c 65 32 00 00  44 41 54 41 7a 00 00 00  |odule2..DATAz...|
0005b710  2d 6c 69 73 74 0a 41 62  62 72 65 76 69 61 74 69  |-list.Abbreviati|
0005b720  6f 6e 3a 09 2d 6c 0a 0a  54 68 69 73 20 64 69 72  |on:.-l..This dir|
0005b730  65 63 74 69 76 65 20 6c  69 73 74 73 20 74 68 65  |ective lists the|
0005b740  20 63 6f 6e 74 65 6e 74  73 20 6f 66 20 61 20 6c  | contents of a l|
0005b750  69 62 72 61 72 79 2e 0a  0a 23 77 72 61 70 20 6f  |ibrary...#wrap o|
0005b760  66 66 0a 65 67 20 7b 66  43 6f 64 65 7d 2a 6c 69  |ff.eg {fCode}*li|
0005b770  62 72 61 72 79 20 52 4f  53 4c 69 62 20 2d 6c 69  |brary ROSLib -li|
0005b780  73 74 00 00 44 41 54 41  b8 00 00 00 2d 76 65 72  |st..DATA....-ver|
0005b790  69 66 79 0a 41 62 62 72  65 76 69 61 74 69 6f 6e  |ify.Abbreviation|
0005b7a0  3a 09 2d 76 0a 0a 54 68  69 73 20 64 69 72 65 63  |:.-v..This direc|
0005b7b0  74 69 76 65 20 76 65 72  69 66 69 65 73 20 74 68  |tive verifies th|
0005b7c0  65 20 69 6e 74 65 67 72  69 74 79 20 6f 66 20 61  |e integrity of a|
0005b7d0  20 6c 69 62 72 61 72 79  2e 20 49 6e 20 61 64 64  | library. In add|
0005b7e0  69 74 69 6f 6e 20 69 74  20 64 69 73 70 6c 61 79  |ition it display|
0005b7f0  73 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 61 62  |s information ab|
0005b800  6f 75 74 20 61 20 6c 69  62 72 61 72 79 2e 0a 0a  |out a library...|
0005b810  23 77 72 61 70 20 6f 66  66 0a 65 67 20 7b 66 43  |#wrap off.eg {fC|
0005b820  6f 64 65 7d 2a 6c 69 62  72 61 72 79 20 53 54 44  |ode}*library STD|
0005b830  43 4c 69 62 20 2d 76 65  72 69 66 79 44 41 54 41  |CLib -verifyDATA|
0005b840  6f 01 00 00 6c 69 6d 69  74 73 2e 68 0a 23 50 61  |o...limits.h.#Pa|
0005b850  72 65 6e 74 20 61 6e 73  69 5f 0a 54 68 65 20 5c  |rent ansi_.The \|
0005b860  3c 6c 69 6d 69 74 73 2e  68 5c 3e 20 68 65 61 64  |<limits.h\> head|
0005b870  65 72 20 64 65 63 6c 61  72 65 73 20 6d 61 6e 79  |er declares many|
0005b880  20 6d 61 63 72 6f 73 20  77 68 69 63 68 20 69 6e  | macros which in|
0005b890  64 69 63 61 74 65 20 74  68 65 20 6d 61 78 69 6d  |dicate the maxim|
0005b8a0  75 6d 20 61 6e 64 20 6d  69 6e 69 6d 75 6d 20 76  |um and minimum v|
0005b8b0  61 6c 75 65 73 20 77 68  69 63 68 20 6d 61 79 20  |alues which may |
0005b8c0  62 65 20 70 6c 61 63 65  64 20 69 6e 20 69 6e 74  |be placed in int|
0005b8d0  65 67 65 72 20 76 61 72  69 61 62 6c 65 73 2e 0a  |eger variables..|
0005b8e0  0a 23 54 61 62 6c 65 20  36 20 31 34 0a 3c 43 48  |.#Table 6 14.<CH|
0005b8f0  41 52 5f 42 49 54 3e 0a  3c 53 43 48 41 52 5f 4d  |AR_BIT>.<SCHAR_M|
0005b900  49 4e 3e 0a 3c 53 43 48  41 52 5f 4d 41 58 3e 0a  |IN>.<SCHAR_MAX>.|
0005b910  3c 55 43 48 41 52 5f 4d  41 58 3e 0a 3c 43 48 41  |<UCHAR_MAX>.<CHA|
0005b920  52 5f 4d 49 4e 3e 0a 3c  43 48 41 52 5f 4d 41 58  |R_MIN>.<CHAR_MAX|
0005b930  3e 0a 3c 4d 42 5f 4c 45  4e 5f 4d 41 58 3e 0a 3c  |>.<MB_LEN_MAX>.<|
0005b940  53 48 52 54 5f 4d 49 4e  3e 0a 3c 53 48 52 54 5f  |SHRT_MIN>.<SHRT_|
0005b950  4d 41 58 3e 0a 3c 55 53  48 52 54 5f 4d 41 58 3e  |MAX>.<USHRT_MAX>|
0005b960  0a 3c 49 4e 54 5f 4d 49  4e 3e 0a 3c 49 4e 54 5f  |.<INT_MIN>.<INT_|
0005b970  4d 41 58 3e 0a 3c 55 49  4e 54 5f 4d 41 58 3e 0a  |MAX>.<UINT_MAX>.|
0005b980  3c 4c 4f 4e 47 5f 4d 49  4e 3e 0a 3c 4c 4f 4e 47  |<LONG_MIN>.<LONG|
0005b990  5f 4d 41 58 3e 0a 3c 55  4c 4f 4e 47 5f 4d 41 58  |_MAX>.<ULONG_MAX|
0005b9a0  3e 0a 23 45 6e 64 54 61  62 6c 65 00 44 49 52 24  |>.#EndTable.DIR$|
0005b9b0  18 01 00 00 18 01 00 00  c4 ba 05 00 46 fd ff ff  |............F...|
0005b9c0  4c c8 e7 22 e7 01 00 00  13 00 00 00 00 00 00 00  |L.."............|
0005b9d0  21 52 6f 6f 74 00 00 00  ac bc 05 00 46 fd ff ff  |!Root.......F...|
0005b9e0  45 dd e7 22 a4 00 00 00  13 00 00 00 00 00 00 00  |E.."............|
0005b9f0  62 61 73 65 5f 00 00 00  50 bd 05 00 46 fd ff ff  |base_...P...F...|
0005ba00  74 e0 e7 22 8a 00 00 00  13 00 00 00 00 00 00 00  |t.."............|
0005ba10  64 65 62 75 67 5f 00 00  dc bd 05 00 46 fd ff ff  |debug_......F...|
0005ba20  b0 f0 e7 22 9f 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0005ba30  64 65 73 6b 74 6f 70 5f  00 00 00 00 7c be 05 00  |desktop_....|...|
0005ba40  46 fd ff ff a1 cf e7 22  de 00 00 00 13 00 00 00  |F......"........|
0005ba50  00 00 00 00 69 6d 61 67  65 5f 00 00 5c bf 05 00  |....image_..\...|
0005ba60  46 fd ff ff 01 d6 e7 22  62 01 00 00 13 00 00 00  |F......"b.......|
0005ba70  00 00 00 00 6c 69 62 72  61 72 79 5f 00 00 00 00  |....library_....|
0005ba80  c0 c0 05 00 46 fd ff ff  98 e5 e7 22 d5 00 00 00  |....F......"....|
0005ba90  13 00 00 00 00 00 00 00  6d 61 70 5f 00 00 00 00  |........map_....|
0005baa0  98 c1 05 00 46 fd ff ff  ff ea e7 22 99 00 00 00  |....F......"....|
0005bab0  13 00 00 00 00 00 00 00  74 68 72 6f 77 62 61 63  |........throwbac|
0005bac0  6b 5f 00 00 44 41 54 41  e7 01 00 00 4c 69 6e 6b  |k_..DATA....Link|
0005bad0  65 72 20 44 69 72 65 63  74 69 76 65 73 0a 54 68  |er Directives.Th|
0005bae0  69 73 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 69  |is information i|
0005baf0  73 20 66 6f 72 20 45 61  73 79 20 43 20 6f 6e 6c  |s for Easy C onl|
0005bb00  79 3a 0a 0a 54 68 65 73  65 20 61 72 65 20 6f 6e  |y:..These are on|
0005bb10  6c 79 20 75 73 65 64 20  77 68 65 6e 20 63 6f 6d  |ly used when com|
0005bb20  70 69 6c 69 6e 67 20 66  72 6f 6d 20 74 68 65 20  |piling from the |
0005bb30  63 6f 6d 6d 61 6e 64 20  6c 69 6e 65 20 75 73 69  |command line usi|
0005bb40  6e 67 20 74 68 65 20 27  6c 69 6e 6b 27 20 63 6f  |ng the 'link' co|
0005bb50  6d 6d 61 6e 64 2e 20 54  68 65 79 20 61 72 65 20  |mmand. They are |
0005bb60  70 72 65 66 69 78 65 64  20 62 79 20 22 2d 22 2e  |prefixed by "-".|
0005bb70  20 48 65 6c 70 20 63 61  6e 20 62 65 20 67 6f 74  | Help can be got|
0005bb80  20 62 79 20 75 73 69 6e  67 20 3c 2a 48 65 6c 70  | by using <*Help|
0005bb90  20 6c 69 6e 6b 3e 2e 20  41 20 73 75 6d 6d 61 72  | link>. A summar|
0005bba0  79 20 6f 66 20 74 68 65  20 64 69 72 65 63 74 69  |y of the directi|
0005bbb0  76 65 73 20 75 73 65 64  20 69 73 20 73 68 6f 77  |ves used is show|
0005bbc0  6e 20 62 65 6c 6f 77 2e  0a 0a 23 69 6e 64 65 6e  |n below...#inden|
0005bbd0  74 20 36 0a 23 54 61 62  6c 65 20 33 20 31 36 0a  |t 6.#Table 3 16.|
0005bbe0  3c 5c 2d 69 6d 61 67 65  3d 3e 6c 69 6e 6b 64 69  |<\-image=>linkdi|
0005bbf0  72 5f 69 6d 61 67 65 5f  3e 0a 3c 5c 2d 6c 69 62  |r_image_>.<\-lib|
0005bc00  72 61 72 79 3d 3e 6c 69  6e 6b 64 69 72 5f 6c 69  |rary=>linkdir_li|
0005bc10  62 72 61 72 79 5f 3e 0a  3c 5c 2d 62 61 73 65 3d  |brary_>.<\-base=|
0005bc20  3e 6c 69 6e 6b 64 69 72  5f 62 61 73 65 5f 3e 0a  |>linkdir_base_>.|
0005bc30  3c 5c 2d 64 65 62 75 67  3d 3e 6c 69 6e 6b 64 69  |<\-debug=>linkdi|
0005bc40  72 5f 64 65 62 75 67 5f  3e 0a 3c 5c 2d 6d 61 70  |r_debug_>.<\-map|
0005bc50  3d 3e 6c 69 6e 6b 64 69  72 5f 6d 61 70 5f 3e 0a  |=>linkdir_map_>.|
0005bc60  3c 5c 2d 74 68 72 6f 77  62 61 63 6b 3d 3e 6c 69  |<\-throwback=>li|
0005bc70  6e 6b 64 69 72 5f 74 68  72 6f 77 62 61 63 6b 5f  |nkdir_throwback_|
0005bc80  3e 0a 3c 5c 2d 64 65 73  6b 74 6f 70 3d 3e 6c 69  |>.<\-desktop=>li|
0005bc90  6e 6b 64 69 72 5f 64 65  73 6b 74 6f 70 5f 3e 0a  |nkdir_desktop_>.|
0005bca0  0a 0a 23 45 6e 64 54 61  62 6c 65 00 44 41 54 41  |..#EndTable.DATA|
0005bcb0  a4 00 00 00 2d 62 61 73  65 0a 41 62 62 72 65 76  |....-base.Abbrev|
0005bcc0  69 61 74 69 6f 6e 3a 09  2d 62 0a 53 79 6e 74 61  |iation:.-b.Synta|
0005bcd0  78 3a 09 2d 62 61 73 65  3d 5c 3c 61 64 64 72 65  |x:.-base=\<addre|
0005bce0  73 73 3e 0a 44 65 66 61  75 6c 74 3a 09 2d 62 61  |ss>.Default:.-ba|
0005bcf0  73 65 3d 26 38 30 30 30  0a 0a 54 68 69 73 20 71  |se=&8000..This q|
0005bd00  75 61 6c 69 66 69 65 72  20 61 6c 6c 6f 77 73 20  |ualifier allows |
0005bd10  79 6f 75 20 74 6f 20 73  70 65 63 69 66 79 20 74  |you to specify t|
0005bd20  68 65 20 62 61 73 65 20  61 64 64 72 65 73 73 20  |he base address |
0005bd30  6f 66 20 74 68 65 20 65  78 65 63 75 74 61 62 6c  |of the executabl|
0005bd40  65 20 63 6f 64 65 20 70  72 6f 64 75 63 65 64 2e  |e code produced.|
0005bd50  44 41 54 41 8a 00 00 00  2d 64 65 62 75 67 0a 41  |DATA....-debug.A|
0005bd60  62 62 72 65 76 69 61 74  69 6f 6e 3a 09 2d 64 0a  |bbreviation:.-d.|
0005bd70  44 65 66 61 75 6c 74 3a  09 2d 6e 6f 64 65 62 75  |Default:.-nodebu|
0005bd80  67 0a 0a 54 68 69 73 20  71 75 61 6c 69 66 69 65  |g..This qualifie|
0005bd90  72 20 63 61 75 73 65 73  20 74 68 65 20 6c 69 6e  |r causes the lin|
0005bda0  6b 65 72 20 74 6f 20 69  6e 63 6c 75 64 65 20 64  |ker to include d|
0005bdb0  65 62 75 67 67 69 6e 67  20 69 6e 66 6f 72 6d 61  |ebugging informa|
0005bdc0  74 69 6f 6e 20 77 69 74  68 20 74 68 65 20 6c 69  |tion with the li|
0005bdd0  6e 6b 65 64 20 66 69 6c  65 2e 00 00 44 41 54 41  |nked file...DATA|
0005bde0  9f 00 00 00 2d 64 65 73  6b 74 6f 70 0a 41 62 62  |....-desktop.Abb|
0005bdf0  72 65 76 69 61 74 69 6f  6e 3a 09 2d 64 65 73 0a  |reviation:.-des.|
0005be00  44 65 66 61 75 6c 74 3a  09 2d 64 65 73 6b 74 6f  |Default:.-deskto|
0005be10  70 0a 0a 54 68 69 73 20  71 75 61 6c 69 66 69 65  |p..This qualifie|
0005be20  72 20 63 61 75 73 65 73  20 74 68 65 20 6c 69 6e  |r causes the lin|
0005be30  6b 65 72 20 74 6f 20 61  63 63 65 70 74 20 66 75  |ker to accept fu|
0005be40  6c 6c 20 70 61 74 68 6e  61 6d 65 73 20 69 6e 73  |ll pathnames ins|
0005be50  74 65 61 64 20 6f 66 20  75 73 69 6e 67 20 69 74  |tead of using it|
0005be60  73 20 75 73 75 61 6c 20  6e 61 6d 69 6e 67 20 63  |s usual naming c|
0005be70  6f 6e 76 65 6e 74 69 6f  6e 73 2e 00 44 41 54 41  |onventions..DATA|
0005be80  de 00 00 00 2d 69 6d 61  67 65 0a 41 62 62 72 65  |....-image.Abbre|
0005be90  76 69 61 74 69 6f 6e 3a  09 2d 69 0a 53 79 6e 74  |viation:.-i.Synt|
0005bea0  61 78 3a 09 2d 69 6d 61  67 65 3d 5c 3c 70 61 74  |ax:.-image=\<pat|
0005beb0  68 6e 61 6d 65 3e 0a 0a  54 68 69 73 20 71 75 61  |hname>..This qua|
0005bec0  6c 69 66 69 65 72 20 61  6c 6c 6f 77 73 20 79 6f  |lifier allows yo|
0005bed0  75 20 74 6f 20 73 70 65  63 69 66 79 20 74 68 65  |u to specify the|
0005bee0  20 66 69 6c 65 6e 61 6d  65 20 6f 66 20 74 68 65  | filename of the|
0005bef0  20 65 78 65 63 75 74 61  62 6c 65 20 66 69 6c 65  | executable file|
0005bf00  20 70 72 6f 64 75 63 65  64 2e 20 4e 6f 72 6d 61  | produced. Norma|
0005bf10  6c 6c 79 20 69 74 20 69  73 20 74 68 65 20 73 61  |lly it is the sa|
0005bf20  6d 65 20 61 73 20 74 68  65 20 6f 62 6a 65 63 74  |me as the object|
0005bf30  20 6e 61 6d 65 20 61 6e  64 20 70 6c 61 63 65 64  | name and placed|
0005bf40  20 69 6e 20 74 68 65 20  63 75 72 72 65 6e 74 20  | in the current |
0005bf50  64 69 72 65 63 74 6f 72  79 2e 00 00 44 41 54 41  |directory...DATA|
0005bf60  62 01 00 00 2d 6c 69 62  72 61 72 79 0a 41 62 62  |b...-library.Abb|
0005bf70  72 65 76 69 61 74 69 6f  6e 3a 09 2d 6c 0a 53 79  |reviation:.-l.Sy|
0005bf80  6e 74 61 78 3a 09 2d 6c  69 62 72 61 72 79 3d 5c  |ntax:.-library=\|
0005bf90  3c 6c 69 62 72 61 72 69  65 73 3e 0a 44 65 66 61  |<libraries>.Defa|
0005bfa0  75 6c 74 3a 09 2d 6c 69  62 72 61 72 79 3d 53 54  |ult:.-library=ST|
0005bfb0  44 43 4c 69 62 0a 0a 54  68 69 73 20 71 75 61 6c  |DCLib..This qual|
0005bfc0  69 66 69 65 72 20 61 6c  6c 6f 77 73 20 79 6f 75  |ifier allows you|
0005bfd0  20 74 6f 20 73 70 65 63  69 66 79 20 74 68 65 20  | to specify the |
0005bfe0  6c 69 62 72 61 72 69 65  73 20 6c 69 6e 6b 65 64  |libraries linked|
0005bff0  20 77 69 74 68 20 74 68  65 20 6f 62 6a 65 63 74  | with the object|
0005c000  20 66 69 6c 65 2e 20 53  54 44 43 4c 69 62 20 63  | file. STDCLib c|
0005c010  6f 6e 74 61 69 6e 73 20  74 68 65 20 73 74 61 6e  |ontains the stan|
0005c020  64 61 72 64 20 41 4e 53  49 20 66 75 6e 63 74 69  |dard ANSI functi|
0005c030  6f 6e 73 20 61 6e 64 20  6f 74 68 65 72 20 65 73  |ons and other es|
0005c040  73 65 6e 74 69 61 6c 20  62 69 74 73 2c 20 61 6e  |sential bits, an|
0005c050  64 20 52 4f 53 4c 69 62  20 69 73 20 74 68 65 20  |d ROSLib is the |
0005c060  52 49 53 43 20 4f 53 20  66 75 6e 63 74 69 6f 6e  |RISC OS function|
0005c070  73 2e 20 49 6e 20 61 64  64 69 74 69 6f 6e 20 44  |s. In addition D|
0005c080  65 73 6b 4c 69 62 20 68  61 73 20 69 74 73 20 6f  |eskLib has its o|
0005c090  77 6e 20 6c 69 62 72 61  72 79 2e 0a 0a 65 67 20  |wn library...eg |
0005c0a0  7b 66 43 6f 64 65 7d 2d  6c 69 62 72 61 72 79 3d  |{fCode}-library=|
0005c0b0  53 54 44 43 4c 69 62 2c  52 4f 53 4c 69 62 00 00  |STDCLib,ROSLib..|
0005c0c0  44 41 54 41 d5 00 00 00  2d 6d 61 70 0a 41 62 62  |DATA....-map.Abb|
0005c0d0  72 65 76 69 61 74 69 6f  6e 3a 09 2d 6d 0a 53 79  |reviation:.-m.Sy|
0005c0e0  6e 74 61 78 3a 09 2d 6d  61 70 3d 5c 3c 70 61 74  |ntax:.-map=\<pat|
0005c0f0  68 6e 61 6d 65 3e 0a 44  65 66 61 75 6c 74 3a 09  |hname>.Default:.|
0005c100  2d 6e 6f 6d 61 70 0a 0a  54 68 69 73 20 71 75 61  |-nomap..This qua|
0005c110  6c 69 66 69 65 72 20 63  61 75 73 65 73 20 74 68  |lifier causes th|
0005c120  65 20 6c 69 6e 6b 65 72  20 74 6f 20 70 72 6f 64  |e linker to prod|
0005c130  75 63 65 20 61 20 6d 61  70 20 66 69 6c 65 2e 20  |uce a map file. |
0005c140  54 68 69 73 20 69 73 20  6e 6f 72 6d 61 6c 6c 79  |This is normally|
0005c150  20 73 74 6f 72 65 64 20  69 6e 20 73 75 62 64 69  | stored in subdi|
0005c160  72 65 63 74 6f 72 79 20  22 6d 61 70 22 2c 20 62  |rectory "map", b|
0005c170  75 74 20 79 6f 75 20 63  61 6e 20 73 70 65 63 69  |ut you can speci|
0005c180  66 79 20 79 6f 75 72 20  6f 77 6e 20 70 61 74 68  |fy your own path|
0005c190  6e 61 6d 65 2e 00 00 00  44 41 54 41 99 00 00 00  |name....DATA....|
0005c1a0  2d 74 68 72 6f 77 62 61  63 6b 0a 41 62 62 72 65  |-throwback.Abbre|
0005c1b0  76 69 61 74 69 6f 6e 3a  09 2d 74 68 0a 44 65 66  |viation:.-th.Def|
0005c1c0  61 75 6c 74 3a 09 2d 6e  6f 74 68 72 6f 77 62 61  |ault:.-nothrowba|
0005c1d0  63 6b 0a 0a 54 68 69 73  20 71 75 61 6c 69 66 69  |ck..This qualifi|
0005c1e0  65 72 20 63 61 75 73 65  73 20 74 68 65 20 6c 69  |er causes the li|
0005c1f0  6e 6b 65 72 20 74 6f 20  70 72 6f 64 75 63 65 20  |nker to produce |
0005c200  22 54 68 72 6f 77 62 61  63 6b 22 20 6f 75 74 70  |"Throwback" outp|
0005c210  75 74 20 74 6f 20 61 20  73 75 69 74 61 62 6c 65  |ut to a suitable|
0005c220  20 65 78 74 65 72 6e 61  6c 20 65 64 69 74 6f 72  | external editor|
0005c230  2e 00 00 00 44 41 54 41  07 03 00 00 44 65 73 6b  |....DATA....Desk|
0005c240  4c 69 6e 6b 3a 4c 69 6e  6b 4c 69 73 74 2e 68 0a  |Link:LinkList.h.|
0005c250  56 65 72 73 69 6f 6e 3a  20 31 2e 33 33 20 28 33  |Version: 1.33 (3|
0005c260  30 20 4d 61 79 20 31 39  39 34 29 0a 23 6c 69 6e  |0 May 1994).#lin|
0005c270  65 0a 54 68 69 73 20 68  65 61 64 65 72 20 64 65  |e.This header de|
0005c280  63 6c 61 72 65 73 20 66  75 6e 63 74 69 6f 6e 73  |clares functions|
0005c290  20 61 6e 64 20 6f 6e 65  20 74 79 70 65 20 66 6f  | and one type fo|
0005c2a0  72 20 68 61 6e 64 6c 69  6e 67 20 6c 69 6e 6b 65  |r handling linke|
0005c2b0  64 20 6c 69 73 74 73 20  65 61 73 69 6c 79 2e 0a  |d lists easily..|
0005c2c0  0a 46 75 6e 63 74 69 6f  6e 73 3a 0a 0a 23 69 6e  |.Functions:..#in|
0005c2d0  64 65 6e 74 20 36 0a 23  54 61 62 6c 65 20 63 6f  |dent 6.#Table co|
0005c2e0  6c 75 6d 6e 73 20 32 0a  3c 4c 69 6e 6b 4c 69 73  |lumns 2.<LinkLis|
0005c2f0  74 5f 41 64 64 54 6f 48  65 61 64 3e 0a 3c 4c 69  |t_AddToHead>.<Li|
0005c300  6e 6b 4c 69 73 74 5f 41  64 64 54 6f 54 61 69 6c  |nkList_AddToTail|
0005c310  3e 0a 3c 4c 69 6e 6b 4c  69 73 74 5f 49 6e 73 65  |>.<LinkList_Inse|
0005c320  72 74 42 65 66 6f 72 65  3e 0a 3c 4c 69 6e 6b 4c  |rtBefore>.<LinkL|
0005c330  69 73 74 5f 49 6e 73 65  72 74 41 66 74 65 72 3e  |ist_InsertAfter>|
0005c340  0a 3c 4c 69 6e 6b 4c 69  73 74 5f 49 6e 4c 69 73  |.<LinkList_InLis|
0005c350  74 3e 0a 3c 4c 69 6e 6b  4c 69 73 74 5f 4c 69 73  |t>.<LinkList_Lis|
0005c360  74 4c 65 6e 67 74 68 3e  0a 3c 4c 69 6e 6b 4c 69  |tLength>.<LinkLi|
0005c370  73 74 5f 55 6e 6c 69 6e  6b 3e 0a 3c 4c 69 6e 6b  |st_Unlink>.<Link|
0005c380  4c 69 73 74 5f 46 69 72  73 74 49 74 65 6d 3e 0a  |List_FirstItem>.|
0005c390  3c 4c 69 6e 6b 4c 69 73  74 5f 4c 61 73 74 49 74  |<LinkList_LastIt|
0005c3a0  65 6d 3e 0a 3c 4c 69 6e  6b 4c 69 73 74 5f 49 6e  |em>.<LinkList_In|
0005c3b0  69 74 3e 0a 3c 4c 69 6e  6b 4c 69 73 74 5f 49 6e  |it>.<LinkList_In|
0005c3c0  69 74 49 74 65 6d 3e 0a  3c 4c 69 6e 6b 4c 69 73  |itItem>.<LinkLis|
0005c3d0  74 5f 4e 65 78 74 49 74  65 6d 3e 0a 3c 4c 69 6e  |t_NextItem>.<Lin|
0005c3e0  6b 4c 69 73 74 5f 50 72  65 76 69 6f 75 73 49 74  |kList_PreviousIt|
0005c3f0  65 6d 3e 0a 23 45 6e 64  54 61 62 6c 65 0a 23 69  |em>.#EndTable.#i|
0005c400  6e 64 65 6e 74 0a 0a 54  79 70 65 3a 0a 0a 7b 61  |ndent..Type:..{a|
0005c410  6c 69 67 6e 20 63 65 6e  74 72 65 7d 3c 6c 69 6e  |lign centre}<lin|
0005c420  6b 6c 69 73 74 5f 68 65  61 64 65 72 3e 7b 61 6c  |klist_header>{al|
0005c430  69 67 6e 7d 0a 0a 49 74  65 6d 73 20 69 6e 20 61  |ign}..Items in a|
0005c440  20 6c 69 6e 6b 65 64 20  6c 69 73 74 20 61 72 65  | linked list are|
0005c450  20 64 65 66 69 6e 65 64  20 61 73 20 73 74 72 75  | defined as stru|
0005c460  63 74 75 72 65 73 2c 20  77 68 6f 73 65 20 66 69  |ctures, whose fi|
0005c470  72 73 74 20 6d 65 6d 62  65 72 20 73 68 6f 75 6c  |rst member shoul|
0005c480  64 20 62 65 20 61 20 7b  2a 7d 6c 69 6e 6b 6c 69  |d be a {*}linkli|
0005c490  73 74 5f 68 65 61 64 65  72 7b 2a 7d 2e 20 54 68  |st_header{*}. Th|
0005c4a0  65 20 72 65 73 74 20 6f  66 20 74 68 65 20 73 74  |e rest of the st|
0005c4b0  72 75 63 74 75 72 65 20  6d 61 79 20 63 6f 6e 74  |ructure may cont|
0005c4c0  61 69 6e 20 74 68 65 20  64 61 74 61 20 72 65 71  |ain the data req|
0005c4d0  75 69 72 65 64 20 69 6e  20 74 68 65 20 6c 69 73  |uired in the lis|
0005c4e0  74 20 62 75 74 20 74 68  69 73 20 6d 65 74 68 6f  |t but this metho|
0005c4f0  64 20 65 6e 73 75 72 65  73 20 74 68 61 74 20 69  |d ensures that i|
0005c500  74 65 6d 20 70 6f 69 6e  74 65 72 73 20 63 61 6e  |tem pointers can|
0005c510  20 62 65 20 75 73 65 64  20 61 73 20 7b 2a 7d 6c  | be used as {*}l|
0005c520  69 6e 6b 6c 69 73 74 5f  68 65 61 64 65 72 7b 2a  |inklist_header{*|
0005c530  7d 20 70 6f 69 6e 74 65  72 73 2e 00 44 49 52 24  |} pointers..DIR$|
0005c540  20 03 00 00 20 03 00 00  5c c8 05 00 46 ff ff ff  | ... ...\...F...|
0005c550  4a 87 3f 25 e7 00 00 00  13 00 00 00 00 00 00 00  |J.?%............|
0005c560  41 64 64 54 6f 48 65 61  64 00 00 00 44 c9 05 00  |AddToHead...D...|
0005c570  46 ff ff ff bd 8b 3f 25  e7 00 00 00 13 00 00 00  |F.....?%........|
0005c580  00 00 00 00 41 64 64 54  6f 54 61 69 6c 00 00 00  |....AddToTail...|
0005c590  2c ca 05 00 46 ff ff ff  9b 9e 56 26 03 01 00 00  |,...F.....V&....|
0005c5a0  13 00 00 00 00 00 00 00  41 70 70 65 6e 64 00 00  |........Append..|
0005c5b0  30 cb 05 00 46 ff ff ff  f1 96 56 26 f3 00 00 00  |0...F.....V&....|
0005c5c0  13 00 00 00 00 00 00 00  46 69 72 73 74 00 00 00  |........First...|
0005c5d0  24 cc 05 00 46 ff ff ff  03 ac 3f 25 27 01 00 00  |$...F.....?%'...|
0005c5e0  13 00 00 00 00 00 00 00  46 69 72 73 74 49 74 65  |........FirstIte|
0005c5f0  6d 00 00 00 4c cd 05 00  46 ff ff ff 6a 86 56 26  |m...L...F...j.V&|
0005c600  89 01 00 00 13 00 00 00  00 00 00 00 46 72 65 65  |............Free|
0005c610  00 00 00 00 d8 ce 05 00  46 ff ff ff f6 8b 56 26  |........F.....V&|
0005c620  4b 01 00 00 13 00 00 00  00 00 00 00 46 72 65 65  |K...........Free|
0005c630  44 61 74 61 00 00 00 00  24 d0 05 00 46 ff ff ff  |Data....$...F...|
0005c640  a1 c9 3f 25 75 01 00 00  13 00 00 00 00 00 00 00  |..?%u...........|
0005c650  68 65 61 64 65 72 00 00  9c d1 05 00 46 ff ff ff  |header......F...|
0005c660  19 b6 3f 25 26 01 00 00  13 00 00 00 00 00 00 00  |..?%&...........|
0005c670  49 6e 69 74 00 00 00 00  c4 d2 05 00 46 ff ff ff  |Init........F...|
0005c680  4d bb 3f 25 28 01 00 00  13 00 00 00 00 00 00 00  |M.?%(...........|
0005c690  49 6e 69 74 49 74 65 6d  00 00 00 00 ec d3 05 00  |InitItem........|
0005c6a0  46 ff ff ff 1e 9e 3f 25  5f 01 00 00 13 00 00 00  |F.....?%_.......|
0005c6b0  00 00 00 00 49 6e 4c 69  73 74 00 00 4c d5 05 00  |....InList..L...|
0005c6c0  46 ff ff ff 73 99 3f 25  34 01 00 00 13 00 00 00  |F...s.?%4.......|
0005c6d0  00 00 00 00 49 6e 73 65  72 74 41 66 74 65 72 00  |....InsertAfter.|
0005c6e0  80 d6 05 00 46 ff ff ff  c6 93 3f 25 37 01 00 00  |....F.....?%7...|
0005c6f0  13 00 00 00 00 00 00 00  49 6e 73 65 72 74 42 65  |........InsertBe|
0005c700  66 6f 72 65 00 00 00 00  b8 d7 05 00 46 ff ff ff  |fore........F...|
0005c710  88 9a 56 26 f0 00 00 00  13 00 00 00 00 00 00 00  |..V&............|
0005c720  4c 61 73 74 00 00 00 00  a8 d8 05 00 46 ff ff ff  |Last........F...|
0005c730  c6 b1 3f 25 23 01 00 00  13 00 00 00 00 00 00 00  |..?%#...........|
0005c740  4c 61 73 74 49 74 65 6d  00 00 00 00 cc d9 05 00  |LastItem........|
0005c750  46 ff ff ff 44 a3 3f 25  a4 01 00 00 13 00 00 00  |F...D.?%........|
0005c760  00 00 00 00 4c 69 73 74  4c 65 6e 67 74 68 00 00  |....ListLength..|
0005c770  70 db 05 00 46 ff ff ff  b5 8e 56 26 6e 00 00 00  |p...F.....V&n...|
0005c780  13 00 00 00 00 00 00 00  4e 65 78 74 00 00 00 00  |........Next....|
0005c790  e0 db 05 00 46 ff ff ff  3e bf 3f 25 4e 01 00 00  |....F...>.?%N...|
0005c7a0  13 00 00 00 00 00 00 00  4e 65 78 74 49 74 65 6d  |........NextItem|
0005c7b0  00 00 00 00 30 dd 05 00  46 ff ff ff 94 a5 56 26  |....0...F.....V&|
0005c7c0  07 01 00 00 13 00 00 00  00 00 00 00 50 72 65 70  |............Prep|
0005c7d0  65 6e 64 00 38 de 05 00  46 ff ff ff 50 92 56 26  |end.8...F...P.V&|
0005c7e0  76 00 00 00 13 00 00 00  00 00 00 00 50 72 65 76  |v...........Prev|
0005c7f0  69 6f 75 73 00 00 00 00  b0 de 05 00 46 ff ff ff  |ious........F...|
0005c800  66 c3 3f 25 5f 01 00 00  13 00 00 00 00 00 00 00  |f.?%_...........|
0005c810  50 72 65 76 69 6f 75 73  49 74 65 6d 00 00 00 00  |PreviousItem....|
0005c820  10 e0 05 00 46 fd ff ff  d0 7f 56 26 7e 01 00 00  |....F.....V&~...|
0005c830  13 00 00 00 00 00 00 00  54 4c 00 00 90 e1 05 00  |........TL......|
0005c840  46 ff ff ff e0 a7 3f 25  6f 01 00 00 13 00 00 00  |F.....?%o.......|
0005c850  00 00 00 00 55 6e 6c 69  6e 6b 00 00 44 41 54 41  |....Unlink..DATA|
0005c860  e7 00 00 00 4c 69 6e 6b  4c 69 73 74 5f 41 64 64  |....LinkList_Add|
0005c870  54 6f 48 65 61 64 0a 53  79 6e 74 61 78 3a 09 76  |ToHead.Syntax:.v|
0005c880  6f 69 64 20 4c 69 6e 6b  4c 69 73 74 5f 41 64 64  |oid LinkList_Add|
0005c890  54 6f 48 65 61 64 20 28  3c 6c 69 6e 6b 6c 69 73  |ToHead (<linklis|
0005c8a0  74 5f 68 65 61 64 65 72  3e 20 2a 61 6e 63 68 6f  |t_header> *ancho|
0005c8b0  72 2c 20 6c 69 6e 6b 6c  69 73 74 5f 68 65 61 64  |r, linklist_head|
0005c8c0  65 72 20 2a 69 74 65 6d  29 3b 0a 48 65 61 64 65  |er *item);.Heade|
0005c8d0  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 4c 69 6e 6b  |r:.<DeskLib:Link|
0005c8e0  4c 69 73 74 2e 68 3d 3e  4c 69 6e 6b 4c 69 73 74  |List.h=>LinkList|
0005c8f0  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
0005c900  20 61 64 64 73 20 61 6e  20 69 74 65 6d 20 74 6f  | adds an item to|
0005c910  20 74 68 65 20 68 65 61  64 20 6f 66 20 74 68 65  | the head of the|
0005c920  20 6c 69 6e 6b 65 64 20  6c 69 73 74 20 77 68 6f  | linked list who|
0005c930  73 65 20 61 6e 63 68 6f  72 20 69 73 20 67 69 76  |se anchor is giv|
0005c940  65 6e 2e 00 44 41 54 41  e7 00 00 00 4c 69 6e 6b  |en..DATA....Link|
0005c950  4c 69 73 74 5f 41 64 64  54 6f 54 61 69 6c 0a 53  |List_AddToTail.S|
0005c960  79 6e 74 61 78 3a 09 76  6f 69 64 20 4c 69 6e 6b  |yntax:.void Link|
0005c970  4c 69 73 74 5f 41 64 64  54 6f 54 61 69 6c 20 28  |List_AddToTail (|
0005c980  3c 6c 69 6e 6b 6c 69 73  74 5f 68 65 61 64 65 72  |<linklist_header|
0005c990  3e 20 2a 61 6e 63 68 6f  72 2c 20 6c 69 6e 6b 6c  |> *anchor, linkl|
0005c9a0  69 73 74 5f 68 65 61 64  65 72 20 2a 69 74 65 6d  |ist_header *item|
0005c9b0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
0005c9c0  4c 69 62 3a 4c 69 6e 6b  4c 69 73 74 2e 68 3d 3e  |Lib:LinkList.h=>|
0005c9d0  4c 69 6e 6b 4c 69 73 74  3e 0a 0a 54 68 69 73 20  |LinkList>..This |
0005c9e0  66 75 6e 63 74 69 6f 6e  20 61 64 64 73 20 61 6e  |function adds an|
0005c9f0  20 69 74 65 6d 20 74 6f  20 74 68 65 20 74 61 69  | item to the tai|
0005ca00  6c 20 6f 66 20 74 68 65  20 6c 69 6e 6b 65 64 20  |l of the linked |
0005ca10  6c 69 73 74 20 77 68 6f  73 65 20 61 6e 63 68 6f  |list whose ancho|
0005ca20  72 20 69 73 20 67 69 76  65 6e 2e 00 44 41 54 41  |r is given..DATA|
0005ca30  03 01 00 00 4c 69 6e 6b  4c 69 73 74 5f 41 70 70  |....LinkList_App|
0005ca40  65 6e 64 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |end.Syntax:.void|
0005ca50  20 4c 69 6e 6b 4c 69 73  74 5f 41 70 70 65 6e 64  | LinkList_Append|
0005ca60  20 28 76 6f 69 64 20 2a  61 6e 63 68 6f 72 2c 20  | (void *anchor, |
0005ca70  76 6f 69 64 20 2a 69 74  65 6d 29 3b 0a 48 65 61  |void *item);.Hea|
0005ca80  64 65 72 3a 09 3c 54 69  6d 73 4c 69 62 3a 4c 69  |der:.<TimsLib:Li|
0005ca90  6e 6b 4c 69 73 74 2e 68  3d 3e 4c 69 6e 6b 4c 69  |nkList.h=>LinkLi|
0005caa0  73 74 5f 54 4c 3e 0a 0a  54 68 69 73 20 66 75 6e  |st_TL>..This fun|
0005cab0  63 74 69 6f 6e 2d 6c 69  6b 65 20 6d 61 63 72 6f  |ction-like macro|
0005cac0  20 61 64 64 73 20 74 68  65 20 69 74 65 6d 20 77  | adds the item w|
0005cad0  68 6f 73 65 20 70 6f 69  6e 74 65 72 20 69 73 20  |hose pointer is |
0005cae0  67 69 76 65 6e 20 74 6f  20 74 68 65 20 65 6e 64  |given to the end|
0005caf0  20 6f 66 20 74 68 65 20  6c 69 73 74 20 77 68 6f  | of the list who|
0005cb00  73 65 20 61 6e 63 68 6f  72 20 69 73 20 67 69 76  |se anchor is giv|
0005cb10  65 6e 2c 20 75 73 69 6e  67 20 3c 4c 69 6e 6b 4c  |en, using <LinkL|
0005cb20  69 73 74 5f 41 64 64 54  6f 54 61 69 6c 3e 2e 00  |ist_AddToTail>..|
0005cb30  44 41 54 41 f3 00 00 00  4c 69 6e 6b 4c 69 73 74  |DATA....LinkList|
0005cb40  5f 46 69 72 73 74 0a 53  79 6e 74 61 78 3a 09 76  |_First.Syntax:.v|
0005cb50  6f 69 64 20 2a 4c 69 6e  6b 4c 69 73 74 5f 46 69  |oid *LinkList_Fi|
0005cb60  72 73 74 20 28 76 6f 69  64 20 2a 61 6e 63 68 6f  |rst (void *ancho|
0005cb70  72 29 3b 0a 48 65 61 64  65 72 3a 09 3c 54 69 6d  |r);.Header:.<Tim|
0005cb80  73 4c 69 62 3a 4c 69 6e  6b 4c 69 73 74 2e 68 3d  |sLib:LinkList.h=|
0005cb90  3e 4c 69 6e 6b 4c 69 73  74 5f 54 4c 3e 0a 0a 52  |>LinkList_TL>..R|
0005cba0  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
0005cbb0  74 6f 20 74 68 65 20 66  69 72 73 74 20 69 74 65  |to the first ite|
0005cbc0  6d 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |m...This functio|
0005cbd0  6e 2d 6c 69 6b 65 20 6d  61 63 72 6f 20 72 65 74  |n-like macro ret|
0005cbe0  75 72 6e 73 20 61 20 70  6f 69 6e 74 65 72 20 74  |urns a pointer t|
0005cbf0  6f 20 74 68 65 20 66 69  72 73 74 20 69 74 65 6d  |o the first item|
0005cc00  20 6f 66 20 74 68 65 20  6c 69 73 74 20 77 68 6f  | of the list who|
0005cc10  73 65 20 61 6e 63 68 6f  72 20 69 73 20 67 69 76  |se anchor is giv|
0005cc20  65 6e 2e 00 44 41 54 41  27 01 00 00 4c 69 6e 6b  |en..DATA'...Link|
0005cc30  4c 69 73 74 5f 46 69 72  73 74 49 74 65 6d 0a 53  |List_FirstItem.S|
0005cc40  79 6e 74 61 78 3a 09 76  6f 69 64 20 2a 4c 69 6e  |yntax:.void *Lin|
0005cc50  6b 4c 69 73 74 5f 46 69  72 73 74 49 74 65 6d 20  |kList_FirstItem |
0005cc60  28 3c 6c 69 6e 6b 6c 69  73 74 5f 68 65 61 64 65  |(<linklist_heade|
0005cc70  72 3e 20 2a 61 6e 63 68  6f 72 29 3b 0a 48 65 61  |r> *anchor);.Hea|
0005cc80  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 4c 69  |der:.<DeskLib:Li|
0005cc90  6e 6b 4c 69 73 74 2e 68  3d 3e 4c 69 6e 6b 4c 69  |nkList.h=>LinkLi|
0005cca0  73 74 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |st>..Returns:.Po|
0005ccb0  69 6e 74 65 72 20 74 6f  20 66 69 72 73 74 20 69  |inter to first i|
0005ccc0  74 65 6d 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |tem...This funct|
0005ccd0  69 6f 6e 20 72 65 74 75  72 6e 73 20 61 20 70 6f  |ion returns a po|
0005cce0  69 6e 74 65 72 20 74 6f  20 74 68 65 20 66 69 72  |inter to the fir|
0005ccf0  73 74 20 69 74 65 6d 20  69 6e 20 74 68 65 20 6c  |st item in the l|
0005cd00  69 73 74 20 77 68 6f 73  65 20 61 6e 63 68 6f 72  |ist whose anchor|
0005cd10  20 69 73 20 67 69 76 65  6e 2e 20 49 74 20 69 73  | is given. It is|
0005cd20  20 61 63 74 75 61 6c 6c  79 20 64 65 66 69 6e 65  | actually define|
0005cd30  64 20 61 73 20 61 20 66  75 6e 63 74 69 6f 6e 2d  |d as a function-|
0005cd40  6c 69 6b 65 20 6d 61 63  72 6f 2e 00 44 41 54 41  |like macro..DATA|
0005cd50  89 01 00 00 4c 69 6e 6b  4c 69 73 74 5f 46 72 65  |....LinkList_Fre|
0005cd60  65 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 4c  |e.Syntax:.void L|
0005cd70  69 6e 6b 4c 69 73 74 5f  46 72 65 65 20 28 3c 6c  |inkList_Free (<l|
0005cd80  69 6e 6b 6c 69 73 74 5f  68 65 61 64 65 72 3e 20  |inklist_header> |
0005cd90  2a 61 6e 63 68 6f 72 29  3b 0a 48 65 61 64 65 72  |*anchor);.Header|
0005cda0  3a 09 3c 54 69 6d 73 4c  69 62 3a 4c 69 6e 6b 4c  |:.<TimsLib:LinkL|
0005cdb0  69 73 74 2e 68 3d 3e 4c  69 6e 6b 4c 69 73 74 5f  |ist.h=>LinkList_|
0005cdc0  54 4c 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |TL>..This functi|
0005cdd0  6f 6e 20 64 65 2d 61 6c  6c 6f 63 61 74 65 73 20  |on de-allocates |
0005cde0  74 68 65 20 6d 65 6d 6f  72 79 20 75 73 65 64 20  |the memory used |
0005cdf0  62 79 20 61 6c 6c 20 74  68 65 20 6d 65 6d 62 65  |by all the membe|
0005ce00  72 73 20 6f 66 20 74 68  65 20 6c 69 73 74 20 77  |rs of the list w|
0005ce10  68 6f 73 65 20 61 6e 63  68 6f 72 20 69 73 20 67  |hose anchor is g|
0005ce20  69 76 65 6e 20 28 75 73  69 6e 67 20 3c 66 72 65  |iven (using <fre|
0005ce30  65 3e 29 2c 20 61 6e 64  20 74 68 65 6e 20 64 65  |e>), and then de|
0005ce40  2d 61 6c 6c 6f 63 61 74  65 20 74 68 65 20 73 70  |-allocate the sp|
0005ce50  61 63 65 20 75 73 65 64  20 62 79 20 74 68 65 20  |ace used by the |
0005ce60  61 6e 63 68 6f 72 20 28  61 67 61 69 6e 20 75 73  |anchor (again us|
0005ce70  69 6e 67 20 66 72 65 65  29 2e 20 4e 6f 74 65 20  |ing free). Note |
0005ce80  74 68 61 74 20 69 74 20  77 69 6c 6c 20 6e 6f 74  |that it will not|
0005ce90  20 64 65 61 6c 6c 6f 63  61 74 65 20 61 6e 79 20  | deallocate any |
0005cea0  6d 65 6d 6f 72 79 20 77  68 6f 73 65 20 70 6f 69  |memory whose poi|
0005ceb0  6e 74 65 72 20 69 73 20  63 6f 6e 74 61 69 6e 65  |nter is containe|
0005cec0  64 20 77 69 74 68 69 6e  20 61 20 6c 69 73 74 20  |d within a list |
0005ced0  69 74 65 6d 2e 00 00 00  44 41 54 41 4b 01 00 00  |item....DATAK...|
0005cee0  4c 69 6e 6b 4c 69 73 74  5f 46 72 65 65 44 61 74  |LinkList_FreeDat|
0005cef0  61 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 4c  |a.Syntax:.void L|
0005cf00  69 6e 6b 4c 69 73 74 5f  46 72 65 65 44 61 74 61  |inkList_FreeData|
0005cf10  20 28 3c 6c 69 6e 6b 6c  69 73 74 5f 68 65 61 64  | (<linklist_head|
0005cf20  65 72 3e 20 2a 61 6e 63  68 6f 72 29 3b 0a 48 65  |er> *anchor);.He|
0005cf30  61 64 65 72 3a 09 3c 54  69 6d 73 4c 69 62 3a 4c  |ader:.<TimsLib:L|
0005cf40  69 6e 6b 4c 69 73 74 2e  68 3d 3e 4c 69 6e 6b 4c  |inkList.h=>LinkL|
0005cf50  69 73 74 5f 54 4c 3e 0a  0a 54 68 69 73 20 66 75  |ist_TL>..This fu|
0005cf60  6e 63 74 69 6f 6e 20 64  65 2d 61 6c 6c 6f 63 61  |nction de-alloca|
0005cf70  74 65 73 20 74 68 65 20  6d 65 6d 6f 72 79 20 75  |tes the memory u|
0005cf80  73 65 64 20 62 79 20 61  6c 6c 20 74 68 65 20 6d  |sed by all the m|
0005cf90  65 6d 62 65 72 73 20 6f  66 20 74 68 65 20 6c 69  |embers of the li|
0005cfa0  73 74 20 77 68 6f 73 65  20 61 6e 63 68 6f 72 20  |st whose anchor |
0005cfb0  69 73 20 67 69 76 65 6e  20 28 75 73 69 6e 67 20  |is given (using |
0005cfc0  3c 66 72 65 65 3e 29 2e  20 4e 6f 74 65 20 74 68  |<free>). Note th|
0005cfd0  61 74 20 69 74 20 77 69  6c 6c 20 6e 6f 74 20 64  |at it will not d|
0005cfe0  65 61 6c 6c 6f 63 61 74  65 20 61 6e 79 20 6d 65  |eallocate any me|
0005cff0  6d 6f 72 79 20 77 68 6f  73 65 20 70 6f 69 6e 74  |mory whose point|
0005d000  65 72 20 69 73 20 63 6f  6e 74 61 69 6e 65 64 20  |er is contained |
0005d010  77 69 74 68 69 6e 20 61  20 6c 69 73 74 20 69 74  |within a list it|
0005d020  65 6d 2e 00 44 41 54 41  75 01 00 00 6c 69 6e 6b  |em..DATAu...link|
0005d030  6c 69 73 74 5f 68 65 61  64 65 72 0a 54 68 69 73  |list_header.This|
0005d040  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
0005d050  20 69 6e 20 3c 44 65 73  6b 4c 69 62 3a 4c 69 6e  | in <DeskLib:Lin|
0005d060  6b 4c 69 73 74 2e 68 3d  3e 4c 69 6e 6b 4c 69 73  |kList.h=>LinkLis|
0005d070  74 3e 20 61 73 20 61 20  74 79 70 65 20 63 61 70  |t> as a type cap|
0005d080  61 62 6c 65 20 6f 66 20  68 6f 6c 64 69 6e 67 20  |able of holding |
0005d090  70 6f 69 6e 74 65 72 73  20 74 6f 20 74 68 65 20  |pointers to the |
0005d0a0  70 72 65 76 69 6f 75 73  20 61 6e 64 20 6e 65 78  |previous and nex|
0005d0b0  74 20 72 65 63 6f 72 64  73 20 69 6e 20 61 20 6c  |t records in a l|
0005d0c0  69 6e 6b 65 64 20 6c 69  73 74 2e 20 49 74 20 69  |inked list. It i|
0005d0d0  73 20 61 6c 73 6f 20 75  73 65 64 20 61 73 20 61  |s also used as a|
0005d0e0  6e 20 61 6e 63 68 6f 72  20 66 6f 72 20 74 68 65  |n anchor for the|
0005d0f0  20 6c 69 6e 6b 65 64 20  6c 69 73 74 2c 20 68 6f  | linked list, ho|
0005d100  6c 64 69 6e 67 20 70 6f  69 6e 74 65 72 73 20 74  |lding pointers t|
0005d110  6f 20 74 68 65 20 66 69  72 73 74 20 61 6e 64 20  |o the first and |
0005d120  6c 61 73 74 20 69 74 65  6d 73 2e 0a 0a 74 79 70  |last items...typ|
0005d130  65 64 65 66 20 73 74 72  75 63 74 0a 5c 7b 0a 20  |edef struct.\{. |
0005d140  20 20 20 73 74 72 75 63  74 20 6c 69 6e 6b 6c 69  |   struct linkli|
0005d150  73 74 5f 68 65 61 64 65  72 20 2a 6e 65 78 74 3b  |st_header *next;|
0005d160  0a 20 20 20 20 73 74 72  75 63 74 20 6c 69 6e 6b  |.    struct link|
0005d170  6c 69 73 74 5f 68 65 61  64 65 72 20 2a 70 72 65  |list_header *pre|
0005d180  76 69 6f 75 73 3b 0a 7d  20 6c 69 6e 6b 6c 69 73  |vious;.} linklis|
0005d190  74 5f 68 65 61 64 65 72  3b 00 00 00 44 41 54 41  |t_header;...DATA|
0005d1a0  26 01 00 00 4c 69 6e 6b  4c 69 73 74 5f 49 6e 69  |&...LinkList_Ini|
0005d1b0  74 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 4c  |t.Syntax:.void L|
0005d1c0  69 6e 6b 4c 69 73 74 5f  49 6e 69 74 20 28 3c 6c  |inkList_Init (<l|
0005d1d0  69 6e 6b 6c 69 73 74 5f  68 65 61 64 65 72 3e 20  |inklist_header> |
0005d1e0  2a 61 6e 63 68 6f 72 29  3b 0a 48 65 61 64 65 72  |*anchor);.Header|
0005d1f0  3a 09 3c 44 65 73 6b 4c  69 62 3a 4c 69 6e 6b 4c  |:.<DeskLib:LinkL|
0005d200  69 73 74 2e 68 3d 3e 4c  69 6e 6b 4c 69 73 74 3e  |ist.h=>LinkList>|
0005d210  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0005d220  69 6e 69 74 69 61 6c 69  73 65 73 20 61 20 6c 69  |initialises a li|
0005d230  73 74 20 61 6e 63 68 6f  72 2e 20 54 68 69 73 20  |st anchor. This |
0005d240  73 68 6f 75 6c 64 20 62  65 20 63 61 6c 6c 65 64  |should be called|
0005d250  20 62 65 66 6f 72 65 20  74 68 65 20 61 6e 63 68  | before the anch|
0005d260  6f 72 20 69 73 20 75 73  65 64 2e 20 49 74 20 69  |or is used. It i|
0005d270  73 20 64 65 66 69 6e 65  64 20 61 73 20 61 20 66  |s defined as a f|
0005d280  75 6e 63 74 69 6f 6e 2d  6c 69 6b 65 20 6d 61 63  |unction-like mac|
0005d290  72 6f 20 61 6e 64 20 73  69 6d 70 6c 79 20 69 6e  |ro and simply in|
0005d2a0  69 74 69 61 6c 69 73 65  73 20 62 6f 74 68 20 70  |itialises both p|
0005d2b0  6f 69 6e 74 65 72 73 20  74 6f 20 3c 4e 55 4c 4c  |ointers to <NULL|
0005d2c0  3e 2e 00 00 44 41 54 41  28 01 00 00 4c 69 6e 6b  |>...DATA(...Link|
0005d2d0  4c 69 73 74 5f 49 6e 69  74 49 74 65 6d 0a 53 79  |List_InitItem.Sy|
0005d2e0  6e 74 61 78 3a 09 76 6f  69 64 20 4c 69 6e 6b 4c  |ntax:.void LinkL|
0005d2f0  69 73 74 5f 49 6e 69 74  49 74 65 6d 20 28 3c 6c  |ist_InitItem (<l|
0005d300  69 6e 6b 6c 69 73 74 5f  68 65 61 64 65 72 3e 20  |inklist_header> |
0005d310  2a 69 74 65 6d 29 3b 0a  48 65 61 64 65 72 3a 09  |*item);.Header:.|
0005d320  3c 44 65 73 6b 4c 69 62  3a 4c 69 6e 6b 4c 69 73  |<DeskLib:LinkLis|
0005d330  74 2e 68 3d 3e 4c 69 6e  6b 4c 69 73 74 3e 0a 0a  |t.h=>LinkList>..|
0005d340  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 69 6e  |This function in|
0005d350  69 74 69 61 6c 69 73 65  73 20 61 20 6c 69 73 74  |itialises a list|
0005d360  20 69 74 65 6d 2e 20 54  68 69 73 20 73 68 6f 75  | item. This shou|
0005d370  6c 64 20 62 65 20 63 61  6c 6c 65 64 20 62 65 66  |ld be called bef|
0005d380  6f 72 65 20 74 68 65 20  69 74 65 6d 20 69 73 20  |ore the item is |
0005d390  75 73 65 64 2e 20 49 74  20 69 73 20 64 65 66 69  |used. It is defi|
0005d3a0  6e 65 64 20 61 73 20 61  20 66 75 6e 63 74 69 6f  |ned as a functio|
0005d3b0  6e 2d 6c 69 6b 65 20 6d  61 63 72 6f 20 61 6e 64  |n-like macro and|
0005d3c0  20 73 69 6d 70 6c 79 20  69 6e 69 74 69 61 6c 69  | simply initiali|
0005d3d0  73 65 73 20 62 6f 74 68  20 70 6f 69 6e 74 65 72  |ses both pointer|
0005d3e0  73 20 74 6f 20 3c 4e 55  4c 4c 3e 2e 44 41 54 41  |s to <NULL>.DATA|
0005d3f0  5f 01 00 00 4c 69 6e 6b  4c 69 73 74 5f 49 6e 4c  |_...LinkList_InL|
0005d400  69 73 74 0a 53 79 6e 74  61 78 3a 09 3c 42 4f 4f  |ist.Syntax:.<BOO|
0005d410  4c 3e 20 4c 69 6e 6b 4c  69 73 74 5f 49 6e 4c 69  |L> LinkList_InLi|
0005d420  73 74 20 28 3c 6c 69 6e  6b 6c 69 73 74 5f 68 65  |st (<linklist_he|
0005d430  61 64 65 72 3e 20 2a 61  6e 63 68 6f 72 2c 20 6c  |ader> *anchor, l|
0005d440  69 6e 6b 6c 69 73 74 5f  68 65 61 64 65 72 20 2a  |inklist_header *|
0005d450  69 74 65 6d 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |item);.Header:.<|
0005d460  44 65 73 6b 4c 69 62 3a  4c 69 6e 6b 4c 69 73 74  |DeskLib:LinkList|
0005d470  2e 68 3d 3e 4c 69 6e 6b  4c 69 73 74 3e 0a 0a 52  |.h=>LinkList>..R|
0005d480  65 74 75 72 6e 73 3a 09  3c 54 52 55 45 3e 20 69  |eturns:.<TRUE> i|
0005d490  66 20 69 74 65 6d 20 69  73 20 69 6e 20 6c 69 73  |f item is in lis|
0005d4a0  74 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |t...This functio|
0005d4b0  6e 20 73 63 61 6e 73 20  74 68 72 6f 75 67 68 20  |n scans through |
0005d4c0  61 20 6c 69 6e 6b 65 64  20 6c 69 73 74 20 28 77  |a linked list (w|
0005d4d0  68 6f 73 65 20 61 6e 63  68 6f 72 20 69 73 20 67  |hose anchor is g|
0005d4e0  69 76 65 6e 29 20 74 6f  20 73 65 65 20 69 66 20  |iven) to see if |
0005d4f0  61 6e 79 20 6f 66 20 74  68 65 20 70 6f 69 6e 74  |any of the point|
0005d500  65 72 73 20 70 6f 69 6e  74 20 74 6f 20 74 68 65  |ers point to the|
0005d510  20 69 74 65 6d 20 67 69  76 65 6e 2e 20 4e 6f 74  | item given. Not|
0005d520  65 20 74 68 61 74 20 69  74 20 64 6f 65 73 20 6e  |e that it does n|
0005d530  6f 74 20 63 68 65 63 6b  20 74 68 65 20 69 74 65  |ot check the ite|
0005d540  6d 20 63 6f 6e 74 65 6e  74 73 21 00 44 41 54 41  |m contents!.DATA|
0005d550  34 01 00 00 4c 69 6e 6b  4c 69 73 74 5f 49 6e 73  |4...LinkList_Ins|
0005d560  65 72 74 41 66 74 65 72  0a 53 79 6e 74 61 78 3a  |ertAfter.Syntax:|
0005d570  09 76 6f 69 64 20 4c 69  6e 6b 4c 69 73 74 5f 49  |.void LinkList_I|
0005d580  6e 73 65 72 74 41 66 74  65 72 20 28 3c 6c 69 6e  |nsertAfter (<lin|
0005d590  6b 6c 69 73 74 5f 68 65  61 64 65 72 3e 20 2a 61  |klist_header> *a|
0005d5a0  6e 63 68 6f 72 2c 20 6c  69 6e 6b 6c 69 73 74 5f  |nchor, linklist_|
0005d5b0  68 65 61 64 65 72 20 2a  70 6f 73 2c 20 6c 69 6e  |header *pos, lin|
0005d5c0  6b 6c 69 73 74 5f 68 65  61 64 65 72 20 2a 69 74  |klist_header *it|
0005d5d0  65 6d 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |em);.Header:.<De|
0005d5e0  73 6b 4c 69 62 3a 4c 69  6e 6b 4c 69 73 74 2e 68  |skLib:LinkList.h|
0005d5f0  3d 3e 4c 69 6e 6b 4c 69  73 74 3e 0a 0a 54 68 69  |=>LinkList>..Thi|
0005d600  73 20 66 75 6e 63 74 69  6f 6e 20 69 6e 73 65 72  |s function inser|
0005d610  74 73 20 74 68 65 20 69  74 65 6d 20 77 68 6f 73  |ts the item whos|
0005d620  65 20 70 6f 69 6e 74 65  72 20 69 73 20 67 69 76  |e pointer is giv|
0005d630  65 6e 20 69 6e 20 74 68  65 20 6c 69 6e 6b 65 64  |en in the linked|
0005d640  20 6c 69 73 74 20 77 68  6f 73 65 20 61 6e 63 68  | list whose anch|
0005d650  6f 72 20 69 73 20 67 69  76 65 6e 2c 20 61 66 74  |or is given, aft|
0005d660  65 72 20 74 68 65 20 69  74 65 6d 20 70 6f 69 6e  |er the item poin|
0005d670  74 65 64 20 74 6f 20 62  79 20 2f 70 6f 73 2f 2e  |ted to by /pos/.|
0005d680  44 41 54 41 37 01 00 00  4c 69 6e 6b 4c 69 73 74  |DATA7...LinkList|
0005d690  5f 49 6e 73 65 72 74 42  65 66 6f 72 65 0a 53 79  |_InsertBefore.Sy|
0005d6a0  6e 74 61 78 3a 09 76 6f  69 64 20 4c 69 6e 6b 4c  |ntax:.void LinkL|
0005d6b0  69 73 74 5f 49 6e 73 65  72 74 42 65 66 6f 72 65  |ist_InsertBefore|
0005d6c0  20 28 3c 6c 69 6e 6b 6c  69 73 74 5f 68 65 61 64  | (<linklist_head|
0005d6d0  65 72 3e 20 2a 61 6e 63  68 6f 72 2c 20 6c 69 6e  |er> *anchor, lin|
0005d6e0  6b 6c 69 73 74 5f 68 65  61 64 65 72 20 2a 70 6f  |klist_header *po|
0005d6f0  73 2c 20 6c 69 6e 6b 6c  69 73 74 5f 68 65 61 64  |s, linklist_head|
0005d700  65 72 20 2a 69 74 65 6d  29 3b 0a 48 65 61 64 65  |er *item);.Heade|
0005d710  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 4c 69 6e 6b  |r:.<DeskLib:Link|
0005d720  4c 69 73 74 2e 68 3d 3e  4c 69 6e 6b 4c 69 73 74  |List.h=>LinkList|
0005d730  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
0005d740  20 69 6e 73 65 72 74 73  20 74 68 65 20 69 74 65  | inserts the ite|
0005d750  6d 20 77 68 6f 73 65 20  70 6f 69 6e 74 65 72 20  |m whose pointer |
0005d760  69 73 20 67 69 76 65 6e  20 69 6e 20 74 68 65 20  |is given in the |
0005d770  6c 69 6e 6b 65 64 20 6c  69 73 74 20 77 68 6f 73  |linked list whos|
0005d780  65 20 61 6e 63 68 6f 72  20 69 73 20 67 69 76 65  |e anchor is give|
0005d790  6e 2c 20 62 65 66 6f 72  65 20 74 68 65 20 69 74  |n, before the it|
0005d7a0  65 6d 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |em pointed to by|
0005d7b0  20 2f 70 6f 73 2f 2e 00  44 41 54 41 f0 00 00 00  | /pos/..DATA....|
0005d7c0  4c 69 6e 6b 4c 69 73 74  5f 4c 61 73 74 0a 53 79  |LinkList_Last.Sy|
0005d7d0  6e 74 61 78 3a 09 76 6f  69 64 20 2a 4c 69 6e 6b  |ntax:.void *Link|
0005d7e0  4c 69 73 74 5f 4c 61 73  74 20 28 76 6f 69 64 20  |List_Last (void |
0005d7f0  2a 61 6e 63 68 6f 72 29  3b 0a 48 65 61 64 65 72  |*anchor);.Header|
0005d800  3a 09 3c 54 69 6d 73 4c  69 62 3a 4c 69 6e 6b 4c  |:.<TimsLib:LinkL|
0005d810  69 73 74 2e 68 3d 3e 4c  69 6e 6b 4c 69 73 74 5f  |ist.h=>LinkList_|
0005d820  54 4c 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |TL>..Returns:.Po|
0005d830  69 6e 74 65 72 20 74 6f  20 74 68 65 20 6c 61 73  |inter to the las|
0005d840  74 74 20 69 74 65 6d 2e  0a 0a 54 68 69 73 20 66  |tt item...This f|
0005d850  75 6e 63 74 69 6f 6e 2d  6c 69 6b 65 20 6d 61 63  |unction-like mac|
0005d860  72 6f 20 72 65 74 75 72  6e 73 20 61 20 70 6f 69  |ro returns a poi|
0005d870  6e 74 65 72 20 74 6f 20  74 68 65 20 6c 61 73 74  |nter to the last|
0005d880  20 69 74 65 6d 20 6f 66  20 74 68 65 20 6c 69 73  | item of the lis|
0005d890  74 20 77 68 6f 73 65 20  61 6e 63 68 6f 72 20 69  |t whose anchor i|
0005d8a0  73 20 67 69 76 65 6e 2e  44 41 54 41 23 01 00 00  |s given.DATA#...|
0005d8b0  4c 69 6e 6b 4c 69 73 74  5f 4c 61 73 74 49 74 65  |LinkList_LastIte|
0005d8c0  6d 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 2a  |m.Syntax:.void *|
0005d8d0  4c 69 6e 6b 4c 69 73 74  5f 4c 61 73 74 49 74 65  |LinkList_LastIte|
0005d8e0  6d 20 28 3c 6c 69 6e 6b  6c 69 73 74 5f 68 65 61  |m (<linklist_hea|
0005d8f0  64 65 72 3e 20 2a 61 6e  63 68 6f 72 29 3b 0a 48  |der> *anchor);.H|
0005d900  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
0005d910  4c 69 6e 6b 4c 69 73 74  2e 68 3d 3e 4c 69 6e 6b  |LinkList.h=>Link|
0005d920  4c 69 73 74 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |List>..Returns:.|
0005d930  50 6f 69 6e 74 65 72 20  74 6f 20 6c 61 73 74 20  |Pointer to last |
0005d940  69 74 65 6d 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |item...This func|
0005d950  74 69 6f 6e 20 72 65 74  75 72 6e 73 20 61 20 70  |tion returns a p|
0005d960  6f 69 6e 74 65 72 20 74  6f 20 74 68 65 20 6c 61  |ointer to the la|
0005d970  73 74 20 69 74 65 6d 20  69 6e 20 74 68 65 20 6c  |st item in the l|
0005d980  69 73 74 20 77 68 6f 73  65 20 61 6e 63 68 6f 72  |ist whose anchor|
0005d990  20 69 73 20 67 69 76 65  6e 2e 20 49 74 20 69 73  | is given. It is|
0005d9a0  20 61 63 74 75 61 6c 6c  79 20 64 65 66 69 6e 65  | actually define|
0005d9b0  64 20 61 73 20 61 20 66  75 6e 63 74 69 6f 6e 2d  |d as a function-|
0005d9c0  6c 69 6b 65 20 6d 61 63  72 6f 2e 00 44 41 54 41  |like macro..DATA|
0005d9d0  a4 01 00 00 4c 69 6e 6b  4c 69 73 74 5f 4c 69 73  |....LinkList_Lis|
0005d9e0  74 4c 65 6e 67 74 68 0a  53 79 6e 74 61 78 3a 09  |tLength.Syntax:.|
0005d9f0  69 6e 74 20 4c 69 6e 6b  4c 69 73 74 5f 4c 69 73  |int LinkList_Lis|
0005da00  74 4c 65 6e 67 74 68 20  28 3c 6c 69 6e 6b 6c 69  |tLength (<linkli|
0005da10  73 74 5f 68 65 61 64 65  72 3e 20 2a 61 6e 63 68  |st_header> *anch|
0005da20  6f 72 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |or);.Header:.<De|
0005da30  73 6b 4c 69 62 3a 4c 69  6e 6b 4c 69 73 74 2e 68  |skLib:LinkList.h|
0005da40  3d 3e 4c 69 6e 6b 4c 69  73 74 3e 0a 0a 52 65 74  |=>LinkList>..Ret|
0005da50  75 72 6e 73 3a 09 4e 75  6d 62 65 72 20 6f 66 20  |urns:.Number of |
0005da60  69 74 65 6d 73 20 69 6e  20 6c 69 73 74 2e 0a 0a  |items in list...|
0005da70  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 73 63  |This function sc|
0005da80  61 6e 73 20 74 68 72 6f  75 67 68 20 61 20 6c 69  |ans through a li|
0005da90  6e 6b 65 64 20 6c 69 73  74 20 28 77 68 6f 73 65  |nked list (whose|
0005daa0  20 61 6e 63 68 6f 72 20  69 73 20 67 69 76 65 6e  | anchor is given|
0005dab0  29 20 61 6e 64 20 63 6f  75 6e 74 73 20 74 68 65  |) and counts the|
0005dac0  20 6e 75 6d 62 65 72 20  6f 66 20 69 74 65 6d 73  | number of items|
0005dad0  20 69 74 20 66 69 6e 64  73 2e 20 43 6f 6e 73 65  | it finds. Conse|
0005dae0  71 75 65 6e 74 6c 79 20  69 74 20 6d 61 79 20 62  |quently it may b|
0005daf0  65 20 71 75 69 74 65 20  73 6c 6f 77 20 69 6e 20  |e quite slow in |
0005db00  63 6f 6d 70 75 74 69 6e  67 20 74 65 72 6d 73 20  |computing terms |
0005db10  73 6f 20 69 66 20 79 6f  75 20 6e 65 65 64 20 74  |so if you need t|
0005db20  68 69 73 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |his information |
0005db30  72 65 67 75 6c 61 72 6c  79 2c 20 61 6c 74 65 72  |regularly, alter|
0005db40  20 79 6f 75 72 20 70 72  6f 67 72 61 6d 20 74 6f  | your program to|
0005db50  20 6b 65 65 70 20 74 72  61 63 6b 20 6f 66 20 69  | keep track of i|
0005db60  74 20 61 73 20 69 74 20  63 68 61 6e 67 65 73 2e  |t as it changes.|
0005db70  44 41 54 41 6e 00 00 00  4c 69 6e 6b 4c 69 73 74  |DATAn...LinkList|
0005db80  5f 4e 65 78 74 0a 54 68  69 73 20 69 73 20 6a 75  |_Next.This is ju|
0005db90  73 74 20 61 20 3c 23 64  65 66 69 6e 65 3d 3e 64  |st a <#define=>d|
0005dba0  65 66 69 6e 65 3e 64 20  61 6c 74 65 72 6e 61 74  |efine>d alternat|
0005dbb0  69 76 65 20 6e 61 6d 65  20 66 6f 72 20 74 68 65  |ive name for the|
0005dbc0  20 66 75 6e 63 74 69 6f  6e 20 3c 4c 69 6e 6b 4c  | function <LinkL|
0005dbd0  69 73 74 5f 4e 65 78 74  49 74 65 6d 3e 2e 00 00  |ist_NextItem>...|
0005dbe0  44 41 54 41 4e 01 00 00  4c 69 6e 6b 4c 69 73 74  |DATAN...LinkList|
0005dbf0  5f 4e 65 78 74 49 74 65  6d 0a 53 79 6e 74 61 78  |_NextItem.Syntax|
0005dc00  3a 09 76 6f 69 64 20 2a  4c 69 6e 6b 4c 69 73 74  |:.void *LinkList|
0005dc10  5f 4e 65 78 74 49 74 65  6d 20 28 76 6f 69 64 20  |_NextItem (void |
0005dc20  2a 69 74 65 6d 29 3b 0a  48 65 61 64 65 72 3a 09  |*item);.Header:.|
0005dc30  3c 44 65 73 6b 4c 69 62  3a 4c 69 6e 6b 4c 69 73  |<DeskLib:LinkLis|
0005dc40  74 2e 68 3d 3e 4c 69 6e  6b 4c 69 73 74 3e 0a 0a  |t.h=>LinkList>..|
0005dc50  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
0005dc60  20 74 6f 20 6e 65 78 74  20 69 74 65 6d 2c 20 6f  | to next item, o|
0005dc70  72 20 3c 4e 55 4c 4c 3e  2e 0a 0a 54 68 69 73 20  |r <NULL>...This |
0005dc80  66 75 6e 63 74 69 6f 6e  20 72 65 74 75 72 6e 73  |function returns|
0005dc90  20 74 68 65 20 6e 65 78  74 20 69 74 65 6d 20 61  | the next item a|
0005dca0  6c 6f 6e 67 20 74 68 65  20 6c 69 73 74 20 66 72  |long the list fr|
0005dcb0  6f 6d 20 74 68 65 20 67  69 76 65 6e 20 69 74 65  |om the given ite|
0005dcc0  6d 2e 20 49 66 20 74 68  69 73 20 69 74 65 6d 20  |m. If this item |
0005dcd0  69 73 20 74 68 65 20 6c  61 73 74 20 6f 6e 65 2c  |is the last one,|
0005dce0  20 4e 55 4c 4c 20 69 73  20 72 65 74 75 72 6e 65  | NULL is returne|
0005dcf0  64 2e 20 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |d. This function|
0005dd00  20 69 73 20 61 63 74 75  61 6c 6c 79 20 64 65 66  | is actually def|
0005dd10  69 6e 65 64 20 61 73 20  61 20 66 75 6e 63 74 69  |ined as a functi|
0005dd20  6f 6e 2d 6c 69 6b 65 20  6d 61 63 72 6f 2e 00 00  |on-like macro...|
0005dd30  44 41 54 41 07 01 00 00  4c 69 6e 6b 4c 69 73 74  |DATA....LinkList|
0005dd40  5f 50 72 65 70 65 6e 64  0a 53 79 6e 74 61 78 3a  |_Prepend.Syntax:|
0005dd50  09 76 6f 69 64 20 4c 69  6e 6b 4c 69 73 74 5f 50  |.void LinkList_P|
0005dd60  72 65 70 65 6e 64 20 28  76 6f 69 64 20 2a 61 6e  |repend (void *an|
0005dd70  63 68 6f 72 2c 20 76 6f  69 64 20 2a 69 74 65 6d  |chor, void *item|
0005dd80  29 3b 0a 48 65 61 64 65  72 3a 09 3c 54 69 6d 73  |);.Header:.<Tims|
0005dd90  4c 69 62 3a 4c 69 6e 6b  4c 69 73 74 2e 68 3d 3e  |Lib:LinkList.h=>|
0005dda0  4c 69 6e 6b 4c 69 73 74  5f 54 4c 3e 0a 0a 54 68  |LinkList_TL>..Th|
0005ddb0  69 73 20 66 75 6e 63 74  69 6f 6e 2d 6c 69 6b 65  |is function-like|
0005ddc0  20 6d 61 63 72 6f 20 61  64 64 73 20 74 68 65 20  | macro adds the |
0005ddd0  69 74 65 6d 20 77 68 6f  73 65 20 70 6f 69 6e 74  |item whose point|
0005dde0  65 72 20 69 73 20 67 69  76 65 6e 20 74 6f 20 74  |er is given to t|
0005ddf0  68 65 20 73 74 61 72 74  20 6f 66 20 74 68 65 20  |he start of the |
0005de00  6c 69 73 74 20 77 68 6f  73 65 20 61 6e 63 68 6f  |list whose ancho|
0005de10  72 20 69 73 20 67 69 76  65 6e 2c 20 75 73 69 6e  |r is given, usin|
0005de20  67 20 3c 4c 69 6e 6b 4c  69 73 74 5f 41 64 64 54  |g <LinkList_AddT|
0005de30  6f 48 65 61 64 3e 2e 00  44 41 54 41 76 00 00 00  |oHead>..DATAv...|
0005de40  4c 69 6e 6b 4c 69 73 74  5f 50 72 65 76 69 6f 75  |LinkList_Previou|
0005de50  73 0a 54 68 69 73 20 69  73 20 6a 75 73 74 20 61  |s.This is just a|
0005de60  20 3c 23 64 65 66 69 6e  65 3d 3e 64 65 66 69 6e  | <#define=>defin|
0005de70  65 3e 64 20 61 6c 74 65  72 6e 61 74 69 76 65 20  |e>d alternative |
0005de80  6e 61 6d 65 20 66 6f 72  20 74 68 65 20 66 75 6e  |name for the fun|
0005de90  63 74 69 6f 6e 20 3c 4c  69 6e 6b 4c 69 73 74 5f  |ction <LinkList_|
0005dea0  50 72 65 76 69 6f 75 73  49 74 65 6d 3e 2e 00 00  |PreviousItem>...|
0005deb0  44 41 54 41 5f 01 00 00  4c 69 6e 6b 4c 69 73 74  |DATA_...LinkList|
0005dec0  5f 50 72 65 76 69 6f 75  73 49 74 65 6d 0a 53 79  |_PreviousItem.Sy|
0005ded0  6e 74 61 78 3a 09 76 6f  69 64 20 2a 4c 69 6e 6b  |ntax:.void *Link|
0005dee0  4c 69 73 74 5f 50 72 65  76 69 6f 75 73 49 74 65  |List_PreviousIte|
0005def0  6d 20 28 76 6f 69 64 20  2a 69 74 65 6d 29 3b 0a  |m (void *item);.|
0005df00  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
0005df10  3a 4c 69 6e 6b 4c 69 73  74 2e 68 3d 3e 4c 69 6e  |:LinkList.h=>Lin|
0005df20  6b 4c 69 73 74 3e 0a 0a  52 65 74 75 72 6e 73 3a  |kList>..Returns:|
0005df30  09 50 6f 69 6e 74 65 72  20 74 6f 20 70 72 65 76  |.Pointer to prev|
0005df40  69 6f 75 73 20 69 74 65  6d 2c 20 6f 72 20 3c 4e  |ious item, or <N|
0005df50  55 4c 4c 3e 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |ULL>...This func|
0005df60  74 69 6f 6e 20 72 65 74  75 72 6e 73 20 74 68 65  |tion returns the|
0005df70  20 70 72 65 76 69 6f 75  73 20 69 74 65 6d 20 61  | previous item a|
0005df80  6c 6f 6e 67 20 74 68 65  20 6c 69 73 74 20 66 72  |long the list fr|
0005df90  6f 6d 20 74 68 65 20 67  69 76 65 6e 20 69 74 65  |om the given ite|
0005dfa0  6d 2e 20 49 66 20 74 68  69 73 20 69 74 65 6d 20  |m. If this item |
0005dfb0  69 73 20 74 68 65 20 66  69 72 73 74 20 6f 6e 65  |is the first one|
0005dfc0  2c 20 4e 55 4c 4c 20 69  73 20 72 65 74 75 72 6e  |, NULL is return|
0005dfd0  65 64 2e 20 54 68 69 73  20 66 75 6e 63 74 69 6f  |ed. This functio|
0005dfe0  6e 20 69 73 20 61 63 74  75 61 6c 6c 79 20 64 65  |n is actually de|
0005dff0  66 69 6e 65 64 20 61 73  20 61 20 66 75 6e 63 74  |fined as a funct|
0005e000  69 6f 6e 2d 6c 69 6b 65  20 6d 61 63 72 6f 2e 00  |ion-like macro..|
0005e010  44 41 54 41 7e 01 00 00  54 69 6d 73 4c 69 62 3a  |DATA~...TimsLib:|
0005e020  4c 69 6e 6b 4c 69 73 74  2e 68 0a 54 68 69 73 20  |LinkList.h.This |
0005e030  68 65 61 64 65 72 20 69  73 20 61 6e 20 65 78 74  |header is an ext|
0005e040  65 6e 73 69 6f 6e 20 74  6f 20 3c 44 65 73 6b 4c  |ension to <DeskL|
0005e050  69 62 3a 4c 69 6e 6b 4c  69 73 74 2e 68 3d 3e 4c  |ib:LinkList.h=>L|
0005e060  69 6e 6b 4c 69 73 74 3e  2c 20 70 72 6f 76 69 64  |inkList>, provid|
0005e070  69 6e 67 20 73 6f 6d 65  20 75 73 65 66 75 6c 20  |ing some useful |
0005e080  65 78 74 72 61 20 66 61  63 69 6c 69 74 69 65 73  |extra facilities|
0005e090  2e 0a 0a 46 75 6e 63 74  69 6f 6e 73 3a 0a 0a 23  |...Functions:..#|
0005e0a0  49 6e 64 65 6e 74 20 34  0a 23 54 61 62 6c 65 20  |Indent 4.#Table |
0005e0b0  32 20 32 31 0a 3c 4c 69  6e 6b 4c 69 73 74 5f 46  |2 21.<LinkList_F|
0005e0c0  72 65 65 3e 0a 3c 4c 69  6e 6b 4c 69 73 74 5f 46  |ree>.<LinkList_F|
0005e0d0  72 65 65 44 61 74 61 3e  0a 3c 4c 69 6e 6b 4c 69  |reeData>.<LinkLi|
0005e0e0  73 74 5f 4e 65 78 74 3e  0a 3c 4c 69 6e 6b 4c 69  |st_Next>.<LinkLi|
0005e0f0  73 74 5f 50 72 65 76 69  6f 75 73 3e 0a 23 45 6e  |st_Previous>.#En|
0005e100  64 54 61 62 6c 65 0a 23  69 6e 64 65 6e 74 20 30  |dTable.#indent 0|
0005e110  0a 0a 46 75 6e 63 74 69  6f 6e 2d 6c 69 6b 65 20  |..Function-like |
0005e120  6d 61 63 72 6f 73 3a 0a  0a 23 49 6e 64 65 6e 74  |macros:..#Indent|
0005e130  20 36 0a 23 54 61 62 6c  65 20 32 20 32 31 0a 3c  | 6.#Table 2 21.<|
0005e140  4c 69 6e 6b 4c 69 73 74  5f 46 69 72 73 74 3e 0a  |LinkList_First>.|
0005e150  3c 4c 69 6e 6b 4c 69 73  74 5f 4c 61 73 74 3e 0a  |<LinkList_Last>.|
0005e160  3c 4c 69 6e 6b 4c 69 73  74 5f 41 70 70 65 6e 64  |<LinkList_Append|
0005e170  3e 0a 3c 4c 69 6e 6b 4c  69 73 74 5f 50 72 65 70  |>.<LinkList_Prep|
0005e180  65 6e 64 3e 0a 23 45 4e  64 74 61 62 6c 65 00 00  |end>.#ENdtable..|
0005e190  44 41 54 41 6f 01 00 00  4c 69 6e 6b 4c 69 73 74  |DATAo...LinkList|
0005e1a0  5f 55 6e 6c 69 6e 6b 0a  53 79 6e 74 61 78 3a 09  |_Unlink.Syntax:.|
0005e1b0  76 6f 69 64 20 4c 69 6e  6b 4c 69 73 74 5f 55 6e  |void LinkList_Un|
0005e1c0  6c 69 6e 6b 20 28 3c 6c  69 6e 6b 6c 69 73 74 5f  |link (<linklist_|
0005e1d0  68 65 61 64 65 72 3e 20  2a 61 6e 63 68 6f 72 2c  |header> *anchor,|
0005e1e0  20 6c 69 6e 6b 6c 69 73  74 5f 68 65 61 64 65 72  | linklist_header|
0005e1f0  20 2a 69 74 65 6d 29 3b  0a 48 65 61 64 65 72 3a  | *item);.Header:|
0005e200  09 3c 44 65 73 6b 4c 69  62 3a 4c 69 6e 6b 4c 69  |.<DeskLib:LinkLi|
0005e210  73 74 2e 68 3d 3e 4c 69  6e 6b 4c 69 73 74 3e 0a  |st.h=>LinkList>.|
0005e220  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 75  |.This function u|
0005e230  6e 6c 69 6e 6b 73 20 74  68 65 20 69 74 65 6d 20  |nlinks the item |
0005e240  66 72 6f 6d 20 74 68 65  20 6c 69 73 74 20 77 68  |from the list wh|
0005e250  6f 73 65 20 61 6e 63 68  6f 72 20 69 73 20 67 69  |ose anchor is gi|
0005e260  76 65 6e 2e 20 49 74 20  64 6f 65 73 20 74 68 69  |ven. It does thi|
0005e270  73 20 62 79 20 6d 61 6b  69 6e 67 20 74 68 65 20  |s by making the |
0005e280  69 74 65 6d 20 62 65 66  6f 72 65 20 74 68 69 73  |item before this|
0005e290  20 6f 6e 65 20 70 6f 69  6e 74 20 74 6f 20 74 68  | one point to th|
0005e2a0  65 20 69 74 65 6d 20 61  66 74 65 72 20 74 68 69  |e item after thi|
0005e2b0  73 20 6f 6e 65 20 61 6e  64 20 76 69 63 65 20 76  |s one and vice v|
0005e2c0  65 72 73 61 2e 20 4f 6e  63 65 20 75 6e 6c 69 6e  |ersa. Once unlin|
0005e2d0  6b 65 64 2c 20 79 6f 75  20 63 61 6e 20 66 72 65  |ked, you can fre|
0005e2e0  65 20 74 68 65 20 6d 65  6d 6f 72 79 20 75 73 65  |e the memory use|
0005e2f0  64 20 62 79 20 74 68 69  73 20 69 74 65 6d 2e 00  |d by this item..|
0005e300  44 41 54 41 36 01 00 00  6c 6f 63 61 6c 65 2e 68  |DATA6...locale.h|
0005e310  0a 54 68 65 20 68 65 61  64 65 72 20 5c 3c 6c 6f  |.The header \<lo|
0005e320  63 61 6c 65 2e 68 3e 20  64 65 63 6c 61 72 65 73  |cale.h> declares|
0005e330  20 66 75 6e 63 74 69 6f  6e 73 2c 20 61 20 74 79  | functions, a ty|
0005e340  70 65 20 61 6e 64 20 73  6f 6d 65 20 6d 61 63 72  |pe and some macr|
0005e350  6f 73 20 72 65 6c 61 74  69 6e 67 20 74 6f 20 74  |os relating to t|
0005e360  68 65 20 63 75 72 72 65  6e 74 20 6c 6f 63 61 6c  |he current local|
0005e370  65 2e 0a 0a 46 75 6e 63  74 69 6f 6e 73 3a 0a 0a  |e...Functions:..|
0005e380  23 54 61 62 6c 65 20 31  0a 3c 6c 6f 63 61 6c 65  |#Table 1.<locale|
0005e390  63 6f 6e 76 3e 0a 3c 73  65 74 6c 6f 63 61 6c 65  |conv>.<setlocale|
0005e3a0  3e 0a 23 45 6e 64 54 61  62 6c 65 0a 23 49 6e 64  |>.#EndTable.#Ind|
0005e3b0  65 6e 74 20 30 0a 0a 54  79 70 65 3a 0a 0a 3c 73  |ent 0..Type:..<s|
0005e3c0  74 72 75 63 74 20 6c 63  6f 6e 76 3d 3e 6c 63 6f  |truct lconv=>lco|
0005e3d0  6e 76 3e 0a 0a 4d 61 63  72 6f 73 3a 0a 0a 23 54  |nv>..Macros:..#T|
0005e3e0  61 62 6c 65 20 32 0a 3c  4c 43 5f 41 4c 4c 3e 0a  |able 2.<LC_ALL>.|
0005e3f0  3c 4c 43 5f 43 4f 4c 4c  41 54 45 3e 0a 3c 4c 43  |<LC_COLLATE>.<LC|
0005e400  5f 43 54 59 50 45 3e 0a  3c 4c 43 5f 4d 4f 4e 45  |_CTYPE>.<LC_MONE|
0005e410  54 41 52 59 3e 0a 3c 4c  43 5f 4e 55 4d 45 52 49  |TARY>.<LC_NUMERI|
0005e420  43 3e 0a 3c 4c 43 5f 54  49 4d 45 3e 0a 23 45 6e  |C>.<LC_TIME>.#En|
0005e430  64 54 61 62 6c 65 00 00  44 41 54 41 d4 00 00 00  |dTable..DATA....|
0005e440  6c 6f 63 61 6c 65 63 6f  6e 76 0a 53 79 6e 74 61  |localeconv.Synta|
0005e450  78 3a 09 3c 73 74 72 75  63 74 20 6c 63 6f 6e 76  |x:.<struct lconv|
0005e460  3d 3e 6c 63 6f 6e 76 3e  20 2a 6c 6f 63 61 6c 65  |=>lconv> *locale|
0005e470  63 6f 6e 76 20 28 76 6f  69 64 29 3b 0a 48 65 61  |conv (void);.Hea|
0005e480  64 65 72 3a 09 3c 6c 6f  63 61 6c 65 2e 68 3d 3e  |der:.<locale.h=>|
0005e490  6c 6f 63 61 6c 65 3e 0a  0a 52 65 74 75 72 6e 73  |locale>..Returns|
0005e4a0  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 6c 6f 63  |:.Pointer to loc|
0005e4b0  61 6c 65 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 2e  |ale information.|
0005e4c0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0005e4d0  72 65 74 75 72 6e 73 20  69 6e 66 6f 72 6d 61 74  |returns informat|
0005e4e0  69 6f 6e 20 61 62 6f 75  74 20 74 68 65 20 63 75  |ion about the cu|
0005e4f0  72 72 65 6e 74 20 6c 6f  63 61 6c 65 20 69 6e 20  |rrent locale in |
0005e500  61 20 73 74 72 75 63 74  75 72 65 2e 44 41 54 41  |a structure.DATA|
0005e510  f8 00 00 00 6c 6f 63 61  6c 74 69 6d 65 0a 53 79  |....localtime.Sy|
0005e520  6e 74 61 78 3a 09 3c 73  74 72 75 63 74 a0 74 6d  |ntax:.<struct.tm|
0005e530  3e 20 2a 6c 6f 63 61 6c  74 69 6d 65 20 28 3c 74  |> *localtime (<t|
0005e540  69 6d 65 5f 74 3e 20 2a  74 69 6d 65 72 29 3b 0a  |ime_t> *timer);.|
0005e550  48 65 61 64 65 72 3a 09  3c 74 69 6d 65 2e 68 3d  |Header:.<time.h=|
0005e560  3e 74 69 6d 65 5f 68 3e  0a 0a 52 65 74 75 72 6e  |>time_h>..Return|
0005e570  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 74 68  |s:.Pointer to th|
0005e580  65 20 62 72 6f 6b 65 6e  2d 64 6f 77 6e 20 74 69  |e broken-down ti|
0005e590  6d 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |me...This functi|
0005e5a0  6f 6e 20 63 6f 6e 76 65  72 74 73 20 74 68 65 20  |on converts the |
0005e5b0  63 61 6c 65 6e 64 61 72  20 74 69 6d 65 20 70 6f  |calendar time po|
0005e5c0  69 6e 74 65 64 20 74 6f  20 62 79 20 2f 74 69 6d  |inted to by /tim|
0005e5d0  65 72 2f 20 69 6e 74 6f  20 61 20 62 72 6f 6b 65  |er/ into a broke|
0005e5e0  6e 2d 64 6f 77 6e 20 74  69 6d 65 20 65 78 70 72  |n-down time expr|
0005e5f0  65 73 73 65 64 20 69 6e  20 6c 6f 63 61 6c 20 74  |essed in local t|
0005e600  69 6d 65 2e 44 41 54 41  2e 01 00 00 6c 6f 67 0a  |ime.DATA....log.|
0005e610  53 79 6e 74 61 78 3a 09  64 6f 75 62 6c 65 20 6c  |Syntax:.double l|
0005e620  6f 67 20 28 64 6f 75 62  6c 65 20 78 29 3b 0a 48  |og (double x);.H|
0005e630  65 61 64 65 72 3a 09 3c  6d 61 74 68 2e 68 3d 3e  |eader:.<math.h=>|
0005e640  6d 61 74 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |math>..Returns:.|
0005e650  54 68 65 20 6e 61 74 75  72 61 6c 20 6c 6f 67 61  |The natural loga|
0005e660  72 69 74 68 6d 20 6f 66  20 78 2e 0a 0a 54 68 69  |rithm of x...Thi|
0005e670  73 20 66 75 6e 63 74 69  6f 6e 20 63 61 6c 63 75  |s function calcu|
0005e680  6c 61 74 65 73 20 74 68  65 20 6e 61 74 75 72 61  |lates the natura|
0005e690  6c 20 6c 6f 67 61 72 69  74 68 6d 20 6f 66 20 78  |l logarithm of x|
0005e6a0  2c 20 69 65 20 74 68 65  20 70 6f 77 65 72 20 74  |, ie the power t|
0005e6b0  6f 20 77 68 69 63 68 20  65 20 28 20 3d 20 3c 65  |o which e ( = <e|
0005e6c0  78 70 3e 28 31 29 20 3d  20 32 2e 37 31 38 32 38  |xp>(1) = 2.71828|
0005e6d0  31 38 33 8c 20 29 20 6d  75 73 74 20 62 65 20 72  |183. ) must be r|
0005e6e0  61 69 73 65 64 20 69 6e  20 6f 72 64 65 72 20 74  |aised in order t|
0005e6f0  6f 20 6f 62 74 61 69 6e  20 78 2e 20 46 72 65 71  |o obtain x. Freq|
0005e700  75 65 6e 74 6c 79 20 63  61 6c 6c 65 64 20 94 4c  |uently called .L|
0005e710  4e 95 20 69 6e 20 6e 6f  6e 2d 43 20 65 6e 76 69  |N. in non-C envi|
0005e720  72 6f 6e 6d 65 6e 74 73  20 65 67 20 42 61 73 69  |ronments eg Basi|
0005e730  63 2e 00 00 44 41 54 41  18 01 00 00 6c 6f 67 31  |c...DATA....log1|
0005e740  30 0a 53 79 6e 74 61 78  3a 09 64 6f 75 62 6c 65  |0.Syntax:.double|
0005e750  20 6c 6f 67 31 30 20 28  64 6f 75 62 6c 65 20 78  | log10 (double x|
0005e760  29 3b 0a 48 65 61 64 65  72 3a 09 3c 6d 61 74 68  |);.Header:.<math|
0005e770  2e 68 3d 3e 6d 61 74 68  3e 0a 0a 52 65 74 75 72  |.h=>math>..Retur|
0005e780  6e 73 3a 09 54 68 65 20  62 61 73 65 20 74 65 6e  |ns:.The base ten|
0005e790  20 6c 6f 67 61 72 69 74  68 6d 20 6f 66 20 78 2e  | logarithm of x.|
0005e7a0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0005e7b0  63 61 6c 63 75 6c 61 74  65 73 20 74 68 65 20 62  |calculates the b|
0005e7c0  61 73 65 20 31 30 20 6c  6f 67 61 72 69 74 68 6d  |ase 10 logarithm|
0005e7d0  0a 6f 66 20 78 2c 20 69  65 20 74 68 65 20 70 6f  |.of x, ie the po|
0005e7e0  77 65 72 20 74 6f 20 77  68 69 63 68 20 31 30 20  |wer to which 10 |
0005e7f0  6d 75 73 74 20 62 65 20  72 61 69 73 65 64 0a 69  |must be raised.i|
0005e800  6e 20 6f 72 64 65 72 20  74 6f 20 6f 62 74 61 69  |n order to obtai|
0005e810  6e 20 78 2e 20 46 72 65  71 75 65 6e 74 6c 79 20  |n x. Frequently |
0005e820  63 61 6c 6c 65 64 20 94  4c 4f 47 95 0a 69 6e 20  |called .LOG..in |
0005e830  6e 6f 6e 2d 43 20 65 6e  76 69 72 6f 6e 6d 65 6e  |non-C environmen|
0005e840  74 73 20 65 67 20 42 61  73 69 63 2e 44 49 52 24  |ts eg Basic.DIR$|
0005e850  44 00 00 00 44 00 00 00  90 e8 05 00 46 ff ff ff  |D...D.......F...|
0005e860  ed 14 bd 22 ac 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0005e870  4d 41 58 00 3c e9 05 00  46 ff ff ff 25 12 bd 22  |MAX.<...F...%.."|
0005e880  ad 00 00 00 13 00 00 00  00 00 00 00 4d 49 4e 00  |............MIN.|
0005e890  44 41 54 41 ac 00 00 00  4c 4f 4e 47 5f 4d 41 58  |DATA....LONG_MAX|
0005e8a0  0a 54 68 69 73 20 6d 61  63 72 6f 20 69 73 20 64  |.This macro is d|
0005e8b0  65 66 69 6e 65 64 20 69  6e 20 3c 6c 69 6d 69 74  |efined in <limit|
0005e8c0  73 2e 68 3e 20 61 6e 64  20 72 65 70 72 65 73 65  |s.h> and represe|
0005e8d0  6e 74 73 20 74 68 65 20  6d 61 78 69 6d 75 6d 20  |nts the maximum |
0005e8e0  76 61 6c 75 65 20 77 68  69 63 68 20 63 61 6e 20  |value which can |
0005e8f0  62 65 20 73 74 6f 72 65  64 20 69 6e 20 61 20 6c  |be stored in a l|
0005e900  6f 6e 67 20 69 6e 74 2e  20 49 6e 20 45 61 73 79  |ong int. In Easy|
0005e910  20 43 20 69 74 20 69 73  20 64 65 66 69 6e 65 64  | C it is defined|
0005e920  20 61 73 20 30 78 37 66  66 66 66 66 66 66 20 28  | as 0x7fffffff (|
0005e930  32 31 34 37 34 38 33 36  34 37 29 2e 44 41 54 41  |2147483647).DATA|
0005e940  ad 00 00 00 4c 4f 4e 47  5f 4d 49 4e 0a 54 68 69  |....LONG_MIN.Thi|
0005e950  73 20 6d 61 63 72 6f 20  69 73 20 64 65 66 69 6e  |s macro is defin|
0005e960  65 64 20 69 6e 20 3c 6c  69 6d 69 74 73 2e 68 3e  |ed in <limits.h>|
0005e970  20 61 6e 64 20 72 65 70  72 65 73 65 6e 74 73 20  | and represents |
0005e980  74 68 65 20 6d 69 6e 69  6d 75 6d 20 76 61 6c 75  |the minimum valu|
0005e990  65 20 77 68 69 63 68 20  63 61 6e 20 62 65 20 73  |e which can be s|
0005e9a0  74 6f 72 65 64 20 69 6e  20 61 20 6c 6f 6e 67 20  |tored in a long |
0005e9b0  69 6e 74 2e 20 49 6e 20  45 61 73 79 20 43 20 69  |int. In Easy C i|
0005e9c0  74 20 69 73 20 64 65 66  69 6e 65 64 20 61 73 20  |t is defined as |
0005e9d0  30 78 38 30 30 30 30 30  30 30 20 28 2d 32 31 34  |0x80000000 (-214|
0005e9e0  37 34 38 33 36 34 38 29  2e 00 00 00 44 41 54 41  |7483648)....DATA|
0005e9f0  ce 01 00 00 6c 6f 6e 67  6a 6d 70 0a 53 79 6e 74  |....longjmp.Synt|
0005ea00  61 78 3a 09 76 6f 69 64  20 6c 6f 6e 67 6a 6d 70  |ax:.void longjmp|
0005ea10  20 28 3c 6a 6d 70 5f 62  75 66 3e 20 65 6e 76 2c  | (<jmp_buf> env,|
0005ea20  20 69 6e 74 20 6e 29 3b  0a 48 65 61 64 65 72 3a  | int n);.Header:|
0005ea30  09 3c 73 65 74 6a 6d 70  2e 68 3d 3e 73 65 74 6a  |.<setjmp.h=>setj|
0005ea40  6d 70 5f 68 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |mp_h>..This func|
0005ea50  74 69 6f 6e 20 6a 75 6d  70 73 20 74 6f 20 74 68  |tion jumps to th|
0005ea60  65 20 70 6f 73 69 74 69  6f 6e 20 6f 66 20 74 68  |e position of th|
0005ea70  65 20 6d 6f 73 74 20 72  65 63 65 6e 74 20 3c 73  |e most recent <s|
0005ea80  65 74 6a 6d 70 3e 20 63  61 6c 6c 2e 20 49 74 20  |etjmp> call. It |
0005ea90  6a 75 6d 70 73 20 69 6e  20 74 6f 20 74 68 65 20  |jumps in to the |
0005eaa0  63 6f 64 65 20 62 79 20  70 72 65 74 65 6e 64 69  |code by pretendi|
0005eab0  6e 67 20 74 6f 20 72 65  74 75 72 6e 20 66 72 6f  |ng to return fro|
0005eac0  6d 20 74 68 65 20 73 65  74 6a 6d 70 20 63 61 6c  |m the setjmp cal|
0005ead0  6c 2c 20 61 6e 64 20 72  65 74 75 72 6e 73 20 74  |l, and returns t|
0005eae0  68 65 20 76 61 6c 75 65  20 67 69 76 65 6e 20 69  |he value given i|
0005eaf0  6e 20 6e 20 28 69 6e 73  74 65 61 64 20 6f 66 20  |n n (instead of |
0005eb00  7a 65 72 6f 2c 20 77 68  69 63 68 20 69 73 20 72  |zero, which is r|
0005eb10  65 74 75 72 6e 65 64 20  69 66 20 73 65 74 6a 6d  |eturned if setjm|
0005eb20  70 20 69 73 20 63 61 6c  6c 65 64 20 64 69 72 65  |p is called dire|
0005eb30  63 74 6c 79 29 2e 20 54  68 65 20 65 6e 76 69 72  |ctly). The envir|
0005eb40  6f 6e 6d 65 6e 74 20 73  68 6f 75 6c 64 20 62 65  |onment should be|
0005eb50  20 74 68 61 74 20 77 68  69 63 68 20 69 73 20 70  | that which is p|
0005eb60  61 73 73 65 64 20 74 6f  20 74 68 65 20 73 65 74  |assed to the set|
0005eb70  6a 6d 70 20 63 61 6c 6c  2e 0a 0a 50 6c 65 61 73  |jmp call...Pleas|
0005eb80  65 20 74 72 79 20 6e 6f  74 20 74 6f 20 75 73 65  |e try not to use|
0005eb90  20 74 68 69 73 20 2d 20  77 72 69 74 65 20 73 74  | this - write st|
0005eba0  72 75 63 74 75 72 65 64  20 70 72 6f 67 72 61 6d  |ructured program|
0005ebb0  73 20 69 6e 73 74 65 61  64 21 00 00 44 49 52 24  |s instead!..DIR$|
0005ebc0  e4 04 00 00 e4 04 00 00  a0 f0 05 00 46 fd ff ff  |............F...|
0005ebd0  fc a8 84 2f b0 00 00 00  13 01 00 00 00 00 00 00  |.../............|
0005ebe0  6d 5f 00 00 34 f3 05 00  46 ff ff ff 89 63 5a 26  |m_..4...F....cZ&|
0005ebf0  b5 00 00 00 13 00 00 00  00 00 00 00 6d 61 65 6c  |............mael|
0005ec00  73 74 72 6f 6d 00 00 00  ec f3 05 00 46 ff ff ff  |strom.......F...|
0005ec10  a1 c3 b0 24 4b 00 00 00  13 00 00 00 00 00 00 00  |...$K...........|
0005ec20  6d 61 67 6e 69 66 79 00  38 f4 05 00 46 fd ff ff  |magnify.8...F...|
0005ec30  7d a9 84 2f 2c 00 00 00  13 01 00 00 00 00 00 00  |}../,...........|
0005ec40  6d 61 67 6e 69 66 79 5f  00 00 00 00 f8 f6 05 00  |magnify_........|
0005ec50  46 fd ff ff a3 a9 84 2f  2c 00 00 00 13 01 00 00  |F....../,.......|
0005ec60  00 00 00 00 6d 61 6b 65  5f 00 00 00 00 fb 05 00  |....make_.......|
0005ec70  46 ff ff ff 55 4d 56 26  f1 00 00 00 13 00 00 00  |F...UMV&........|
0005ec80  00 00 00 00 4d 61 6b 65  41 53 43 49 49 5a 00 00  |....MakeASCIIZ..|
0005ec90  f4 fb 05 00 46 ff ff ff  ac 47 56 26 ed 00 00 00  |....F....GV&....|
0005eca0  13 00 00 00 00 00 00 00  4d 61 6b 65 43 52 00 00  |........MakeCR..|
0005ecb0  e4 fc 05 00 46 ff ff ff  4f 6a e7 28 e7 00 00 00  |....F...Oj.(....|
0005ecc0  13 00 00 00 00 00 00 00  6d 61 6c 6c 6f 63 00 00  |........malloc..|
0005ecd0  cc fd 05 00 46 ff ff ff  af bc 56 26 11 02 00 00  |....F.....V&....|
0005ece0  13 00 00 00 00 00 00 00  4d 61 6c 6c 6f 63 44 62  |........MallocDb|
0005ecf0  75 67 00 00 e0 ff 05 00  46 fd ff ff 14 aa 84 2f  |ug......F....../|
0005ed00  2c 00 00 00 13 01 00 00  00 00 00 00 4d 61 6c 6c  |,...........Mall|
0005ed10  6f 63 44 62 75 67 5f 00  c8 01 06 00 46 ff ff ff  |ocDbug_.....F...|
0005ed20  fe e0 be 22 66 03 00 00  13 00 00 00 00 00 00 00  |..."f...........|
0005ed30  6d 61 74 68 00 00 00 00  30 05 06 00 46 ff ff ff  |math....0...F...|
0005ed40  04 c4 f1 24 bc 00 00 00  13 00 00 00 00 00 00 00  |...$............|
0005ed50  4d 41 58 00 ec 05 06 00  46 fd ff ff 61 aa 84 2f  |MAX.....F...a../|
0005ed60  30 00 00 00 13 01 00 00  00 00 00 00 4d 41 58 5f  |0...........MAX_|
0005ed70  00 00 00 00 ac 06 06 00  46 fd ff ff 8a aa 84 2f  |........F....../|
0005ed80  4c 00 00 00 13 01 00 00  00 00 00 00 4d 42 5f 00  |L...........MB_.|
0005ed90  a0 08 06 00 46 ff ff ff  59 91 de 22 17 02 00 00  |....F...Y.."....|
0005eda0  13 00 00 00 00 00 00 00  6d 62 6c 65 6e 00 00 00  |........mblen...|
0005edb0  b8 0a 06 00 46 ff ff ff  0e da de 22 b3 02 00 00  |....F......"....|
0005edc0  13 00 00 00 00 00 00 00  6d 62 73 74 6f 77 63 73  |........mbstowcs|
0005edd0  00 00 00 00 6c 0d 06 00  46 ff ff ff 6c b0 de 22  |....l...F...l.."|
0005ede0  bd 02 00 00 13 00 00 00  00 00 00 00 6d 62 74 6f  |............mbto|
0005edf0  77 63 00 00 2c 10 06 00  46 ff ff ff e1 04 40 25  |wc..,...F.....@%|
0005ee00  5e 02 00 00 13 00 00 00  00 00 00 00 4d 65 6d 00  |^...........Mem.|
0005ee10  8c 12 06 00 46 fd ff ff  14 ab 84 2f 84 01 00 00  |....F....../....|
0005ee20  13 01 00 00 00 00 00 00  4d 65 6d 5f 00 00 00 00  |........Mem_....|
0005ee30  50 22 06 00 46 ff ff ff  99 89 e0 22 2d 01 00 00  |P"..F......"-...|
0005ee40  13 00 00 00 00 00 00 00  6d 65 6d 63 68 72 00 00  |........memchr..|
0005ee50  80 23 06 00 46 ff ff ff  22 23 e0 22 74 01 00 00  |.#..F..."#."t...|
0005ee60  13 00 00 00 00 00 00 00  6d 65 6d 63 6d 70 00 00  |........memcmp..|
0005ee70  f4 24 06 00 46 ff ff ff  f1 dc df 22 20 01 00 00  |.$..F......" ...|
0005ee80  13 00 00 00 00 00 00 00  6d 65 6d 63 70 79 00 00  |........memcpy..|
0005ee90  14 26 06 00 46 ff ff ff  2f c7 df 22 70 01 00 00  |.&..F.../.."p...|
0005eea0  13 00 00 00 00 00 00 00  6d 65 6d 6d 6f 76 65 00  |........memmove.|
0005eeb0  84 27 06 00 46 ff ff ff  cc e7 56 26 e9 00 00 00  |.'..F.....V&....|
0005eec0  13 00 00 00 00 00 00 00  4d 65 6d 6f 72 79 44 75  |........MemoryDu|
0005eed0  6d 70 00 00 70 28 06 00  46 ff ff ff cc 89 e1 22  |mp..p(..F......"|
0005eee0  f7 00 00 00 13 00 00 00  00 00 00 00 6d 65 6d 73  |............mems|
0005eef0  65 74 00 00 68 29 06 00  46 ff ff ff 4b e9 47 23  |et..h)..F...K.G#|
0005ef00  d9 01 00 00 13 00 00 00  00 00 00 00 6d 65 6e 75  |............menu|
0005ef10  00 00 00 00 44 2b 06 00  46 fd ff ff 9f ac 84 2f  |....D+..F....../|
0005ef20  e4 08 00 00 13 01 00 00  00 00 00 00 4d 65 6e 75  |............Menu|
0005ef30  5f 00 00 00 3c 87 06 00  46 fd ff ff 85 b1 84 2f  |_...<...F....../|
0005ef40  a8 02 00 00 13 01 00 00  00 00 00 00 6d 65 73 73  |............mess|
0005ef50  61 67 65 5f 00 00 00 00  f0 aa 06 00 46 ff ff ff  |age_........F...|
0005ef60  19 ca f1 24 bc 00 00 00  13 00 00 00 00 00 00 00  |...$............|
0005ef70  4d 49 4e 00 ac ab 06 00  46 ff ff ff 34 f9 e1 22  |MIN.....F...4.."|
0005ef80  e8 01 00 00 13 00 00 00  00 00 00 00 6d 6b 74 69  |............mkti|
0005ef90  6d 65 00 00 94 ad 06 00  46 ff ff ff 50 8e be 22  |me......F...P.."|
0005efa0  48 01 00 00 13 00 00 00  00 00 00 00 6d 6f 64 66  |H...........modf|
0005efb0  00 00 00 00 dc ae 06 00  46 ff ff ff 23 16 56 26  |........F...#.V&|
0005efc0  87 01 00 00 13 00 00 00  00 00 00 00 6d 6f 64 69  |............modi|
0005efd0  66 69 65 72 73 00 00 00  64 b0 06 00 46 ff ff ff  |fiers...d...F...|
0005efe0  69 c0 43 25 b1 00 00 00  13 00 00 00 00 00 00 00  |i.C%............|
0005eff0  4d 6f 64 75 6c 65 00 00  18 b1 06 00 46 fd ff ff  |Module......F...|
0005f000  6c b3 84 2f 4c 00 00 00  13 01 00 00 00 00 00 00  |l../L...........|
0005f010  4d 6f 64 75 6c 65 5f 00  a8 b3 06 00 46 fd ff ff  |Module_.....F...|
0005f020  ad b3 84 2f 2c 00 00 00  13 01 00 00 00 00 00 00  |.../,...........|
0005f030  6d 6f 75 73 65 5f 00 00  e4 b4 06 00 46 ff ff ff  |mouse_......F...|
0005f040  40 d3 43 25 35 02 00 00  13 00 00 00 00 00 00 00  |@.C%5...........|
0005f050  4d 73 67 73 00 00 00 00  1c b7 06 00 46 fd ff ff  |Msgs........F...|
0005f060  ee b3 84 2f b4 01 00 00  13 01 00 00 00 00 00 00  |.../............|
0005f070  4d 73 67 73 5f 00 00 00  08 ca 06 00 46 ff ff ff  |Msgs_.......F...|
0005f080  0e d4 3e 25 b8 01 00 00  13 00 00 00 00 00 00 00  |..>%............|
0005f090  6d 6f 64 65 5f 76 61 72  69 61 62 6c 65 00 00 00  |mode_variable...|
0005f0a0  44 49 52 24 b0 00 00 00  b0 00 00 00 50 f1 05 00  |DIR$........P...|
0005f0b0  46 fd ff ff 06 7e bd 22  77 00 00 00 13 00 00 00  |F....~."w.......|
0005f0c0  00 00 00 00 65 78 70 2f  6c 6f 67 5f 00 00 00 00  |....exp/log_....|
0005f0d0  c8 f1 05 00 46 fd ff ff  5d 6c bd 22 5b 00 00 00  |....F...]l."[...|
0005f0e0  13 00 00 00 00 00 00 00  68 79 70 65 72 5f 00 00  |........hyper_..|
0005f0f0  24 f2 05 00 46 fd ff ff  7a 86 bd 22 64 00 00 00  |$...F...z.."d...|
0005f100  13 00 00 00 00 00 00 00  6d 69 73 63 5f 00 00 00  |........misc_...|
0005f110  88 f2 05 00 46 fd ff ff  c5 33 be 22 3b 00 00 00  |....F....3.";...|
0005f120  13 00 00 00 00 00 00 00  70 6f 77 65 72 5f 00 00  |........power_..|
0005f130  c4 f2 05 00 46 fd ff ff  5d 62 bd 22 6e 00 00 00  |....F...]b."n...|
0005f140  13 00 00 00 00 00 00 00  74 72 69 67 5f 00 00 00  |........trig_...|
0005f150  44 41 54 41 77 00 00 00  45 78 70 6f 6e 65 6e 74  |DATAw...Exponent|
0005f160  69 61 6c 2f 4c 6f 67 61  72 69 74 68 6d 69 63 20  |ial/Logarithmic |
0005f170  46 75 6e 63 74 69 6f 6e  73 0a 23 50 61 72 65 6e  |Functions.#Paren|
0005f180  74 20 6d 61 74 68 0a 23  69 6e 64 65 6e 74 20 36  |t math.#indent 6|
0005f190  0a 23 54 61 62 6c 65 20  31 0a 3c 65 78 70 3e 0a  |.#Table 1.<exp>.|
0005f1a0  3c 66 72 65 78 70 3e 0a  3c 6c 64 65 78 70 3e 0a  |<frexp>.<ldexp>.|
0005f1b0  3c 6c 6f 67 3e 0a 3c 6c  6f 67 31 30 3e 0a 23 45  |<log>.<log10>.#E|
0005f1c0  6e 64 54 61 62 6c 65 00  44 41 54 41 5b 00 00 00  |ndTable.DATA[...|
0005f1d0  48 79 70 65 72 62 6f 6c  69 63 20 46 75 6e 63 74  |Hyperbolic Funct|
0005f1e0  69 6f 6e 73 0a 23 50 61  72 65 6e 74 20 6d 61 74  |ions.#Parent mat|
0005f1f0  68 0a 23 69 6e 64 65 6e  74 20 35 0a 23 54 61 62  |h.#indent 5.#Tab|
0005f200  6c 65 20 31 0a 3c 63 6f  73 68 3e 0a 3c 73 69 6e  |le 1.<cosh>.<sin|
0005f210  68 3e 0a 3c 74 61 6e 68  3e 0a 23 45 6e 64 54 61  |h>.<tanh>.#EndTa|
0005f220  62 6c 65 00 44 41 54 41  64 00 00 00 4d 69 73 63  |ble.DATAd...Misc|
0005f230  65 6c 6c 61 6e 65 6f 75  73 20 46 75 6e 63 74 69  |ellaneous Functi|
0005f240  6f 6e 73 0a 23 50 61 72  65 6e 74 20 6d 61 74 68  |ons.#Parent math|
0005f250  0a 23 54 61 62 6c 65 20  31 0a 3c 63 65 69 6c 3e  |.#Table 1.<ceil>|
0005f260  0a 3c 66 61 62 73 3e 0a  3c 66 6c 6f 6f 72 3e 0a  |.<fabs>.<floor>.|
0005f270  3c 66 6d 6f 64 20 3e 0a  3c 6d 6f 64 66 3e 0a 23  |<fmod >.<modf>.#|
0005f280  45 6e 64 54 61 62 6c 65  44 41 54 41 3b 00 00 00  |EndTableDATA;...|
0005f290  50 6f 77 65 72 20 46 75  6e 63 74 69 6f 6e 73 0a  |Power Functions.|
0005f2a0  23 50 61 72 65 6e 74 20  6d 61 74 68 0a 23 49 6e  |#Parent math.#In|
0005f2b0  64 65 6e 74 20 37 0a 3c  70 6f 77 3e 0a 3c 73 71  |dent 7.<pow>.<sq|
0005f2c0  72 74 3e 00 44 41 54 41  6e 00 00 00 54 72 69 67  |rt>.DATAn...Trig|
0005f2d0  6f 6e 6f 6d 65 74 72 69  63 20 46 75 6e 63 74 69  |onometric Functi|
0005f2e0  6f 6e 73 0a 23 50 61 72  65 6e 74 20 6d 61 74 68  |ons.#Parent math|
0005f2f0  0a 23 54 61 62 6c 65 20  31 0a 3c 61 63 6f 73 3e  |.#Table 1.<acos>|
0005f300  0a 3c 61 73 69 6e 3e 0a  3c 61 74 61 6e 3e 0a 3c  |.<asin>.<atan>.<|
0005f310  61 74 61 6e 32 3e 0a 3c  63 6f 73 3e 0a 3c 73 69  |atan2>.<cos>.<si|
0005f320  6e 3e 0a 3c 74 61 6e 3e  0a 23 45 6e 64 54 61 62  |n>.<tan>.#EndTab|
0005f330  6c 65 00 00 44 41 54 41  b5 00 00 00 4d 61 65 6c  |le..DATA....Mael|
0005f340  73 74 72 6f 6d 20 53 6f  66 74 77 61 72 65 0a 23  |strom Software.#|
0005f350  53 70 72 69 74 65 20 30  2c 30 20 6d 61 65 6c 73  |Sprite 0,0 maels|
0005f360  74 72 6f 6d 0a 0a 0a 0a  0a 4d 61 65 6c 73 74 72  |trom.....Maelstr|
0005f370  6f 6d 20 53 6f 66 74 77  61 72 65 20 61 72 65 3a  |om Software are:|
0005f380  0a 0a 20 20 8f 20 3c 47  61 72 65 74 68 20 42 6f  |..  . <Gareth Bo|
0005f390  64 65 6e 3d 3e 47 42 6f  64 65 6e 3e 0a 20 20 8f  |den=>GBoden>.  .|
0005f3a0  20 53 74 65 70 68 65 6e  20 43 72 6f 75 63 68 0a  | Stephen Crouch.|
0005f3b0  20 20 8f 20 41 69 6e 73  6c 65 79 20 50 65 72 65  |  . Ainsley Pere|
0005f3c0  69 72 61 0a 20 20 8f 20  41 6e 64 72 65 77 20 50  |ira.  . Andrew P|
0005f3d0  65 70 70 65 72 65 6c 6c  0a 20 20 8f 20 42 72 65  |epperell.  . Bre|
0005f3e0  74 74 20 47 69 62 73 6f  6e 00 00 00 44 41 54 41  |tt Gibson...DATA|
0005f3f0  4b 00 00 00 6d 61 67 6e  69 66 79 2e 68 0a 54 68  |K...magnify.h.Th|
0005f400  69 73 20 68 65 61 64 65  72 20 64 65 63 6c 61 72  |is header declar|
0005f410  65 73 20 6a 75 73 74 20  6f 6e 65 20 66 75 6e 63  |es just one func|
0005f420  74 69 6f 6e 3a 0a 0a 3c  6d 61 67 6e 69 66 79 5f  |tion:..<magnify_|
0005f430  73 65 6c 65 63 74 3e 00  44 49 52 24 2c 00 00 00  |select>.DIR$,...|
0005f440  2c 00 00 00 64 f4 05 00  46 ff ff ff 77 dd b0 24  |,...d...F...w..$|
0005f450  91 02 00 00 13 00 00 00  00 00 00 00 73 65 6c 65  |............sele|
0005f460  63 74 00 00 44 41 54 41  91 02 00 00 6d 61 67 6e  |ct..DATA....magn|
0005f470  69 66 79 5f 73 65 6c 65  63 74 0a 53 79 6e 74 61  |ify_select.Synta|
0005f480  78 3a 09 76 6f 69 64 20  6d 61 67 6e 69 66 79 5f  |x:.void magnify_|
0005f490  73 65 6c 65 63 74 20 28  69 6e 74 20 2a 6d 75 6c  |select (int *mul|
0005f4a0  2c 20 69 6e 74 20 2a 64  69 76 2c 20 69 6e 74 20  |, int *div, int |
0005f4b0  6d 61 78 6d 75 6c 2c 20  69 6e 74 20 6d 61 78 64  |maxmul, int maxd|
0005f4c0  69 76 2c 20 76 6f 69 64  20 28 2a 70 72 6f 63 29  |iv, void (*proc)|
0005f4d0  28 76 6f 69 64 20 2a 29  2c 20 76 6f 69 64 20 2a  |(void *), void *|
0005f4e0  68 61 6e 64 6c 65 29 3b  0a 48 65 61 64 65 72 3a  |handle);.Header:|
0005f4f0  09 3c 6d 61 67 6e 69 66  79 2e 68 3d 3e 6d 61 67  |.<magnify.h=>mag|
0005f500  6e 69 66 79 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |nify>..This func|
0005f510  74 69 6f 6e 20 64 69 73  70 6c 61 79 73 20 61 20  |tion displays a |
0005f520  64 69 61 6c 6f 67 75 65  20 62 6f 78 20 28 63 61  |dialogue box (ca|
0005f530  6c 6c 65 64 20 22 6d 61  67 6e 69 66 69 65 72 22  |lled "magnifier"|
0005f540  29 20 74 6f 20 73 65 74  20 6d 61 67 6e 69 66 69  |) to set magnifi|
0005f550  63 61 74 69 6f 6e 20 66  61 63 74 6f 72 73 2e 20  |cation factors. |
0005f560  2f 6d 75 6c 2f 20 61 6e  64 20 2f 64 69 76 2f 20  |/mul/ and /div/ |
0005f570  61 72 65 20 74 68 65 20  69 6e 69 74 69 61 6c 20  |are the initial |
0005f580  76 61 6c 75 65 73 20 6f  66 20 74 68 65 20 72 61  |values of the ra|
0005f590  74 69 6f 6e 2c 20 61 6e  64 20 2f 6d 61 78 6d 75  |tion, and /maxmu|
0005f5a0  6c 2f 20 61 6e 64 20 2f  6d 61 78 64 69 76 2f 20  |l/ and /maxdiv/ |
0005f5b0  61 72 65 20 74 68 65 69  72 20 72 65 73 70 65 63  |are their respec|
0005f5c0  74 69 76 65 20 6c 69 6d  69 74 73 2e 20 54 68 65  |tive limits. The|
0005f5d0  20 74 65 6d 70 6c 61 74  65 20 22 6d 61 67 6e 69  | template "magni|
0005f5e0  66 69 65 72 22 20 6d 75  73 74 20 62 65 20 6c 6f  |fier" must be lo|
0005f5f0  61 64 65 64 20 61 6e 64  20 68 61 76 65 20 61 20  |aded and have a |
0005f600  73 69 6d 69 6c 61 72 20  64 65 66 69 6e 69 74 69  |similar definiti|
0005f610  6f 6e 20 74 6f 20 74 68  6f 73 65 20 75 73 65 64  |on to those used|
0005f620  20 69 6e 20 21 44 72 61  77 20 6f 72 20 21 50 61  | in !Draw or !Pa|
0005f630  69 6e 74 2e 20 2f 6d 75  6c 2f 20 61 6e 64 20 2f  |int. /mul/ and /|
0005f640  64 69 76 2f 20 61 72 65  20 75 70 64 61 74 65 64  |div/ are updated|
0005f650  20 61 75 74 6f 6d 61 74  69 63 61 6c 6c 79 2e 0a  | automatically..|
0005f660  0a 54 68 65 20 66 75 6e  63 74 69 6f 6e 20 2f 70  |.The function /p|
0005f670  72 6f 63 2f 20 69 73 20  63 61 6c 6c 65 64 20 65  |roc/ is called e|
0005f680  61 63 68 20 74 69 6d 65  20 74 68 65 20 6d 61 67  |ach time the mag|
0005f690  6e 69 66 69 63 61 74 69  6f 6e 20 63 68 61 6e 67  |nification chang|
0005f6a0  65 73 2e 20 54 68 65 20  66 75 6e 63 74 69 6f 6e  |es. The function|
0005f6b0  20 73 68 6f 75 6c 64 20  62 65 20 6f 66 20 74 68  | should be of th|
0005f6c0  65 20 66 6f 72 6d 3a 0a  7b 66 43 6f 64 65 3b 61  |e form:.{fCode;a|
0005f6d0  6c 69 67 6e 20 63 65 6e  74 72 65 7d 76 6f 69 64  |lign centre}void|
0005f6e0  20 70 72 6f 63 20 28 76  6f 69 64 20 2a 68 61 6e  | proc (void *han|
0005f6f0  64 6c 65 29 3b 00 00 00  44 49 52 24 2c 00 00 00  |dle);...DIR$,...|
0005f700  2c 00 00 00 24 f7 05 00  46 fd ff ff 8d 08 e8 22  |,...$...F......"|
0005f710  dc 03 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
0005f720  74 00 00 00 44 41 54 41  dc 03 00 00 4d 61 6b 65  |t...DATA....Make|
0005f730  20 46 69 6c 65 73 0a 4d  61 6b 65 20 46 69 6c 65  | Files.Make File|
0005f740  73 20 70 72 6f 76 69 64  65 20 61 6e 20 65 61 73  |s provide an eas|
0005f750  79 20 77 61 79 20 74 6f  20 64 65 61 6c 20 77 69  |y way to deal wi|
0005f760  74 68 20 63 6f 6d 70 69  6c 69 6e 67 20 61 6e 64  |th compiling and|
0005f770  20 6c 69 6e 6b 69 6e 67  20 6d 75 6c 74 69 70 6c  | linking multipl|
0005f780  65 20 73 6f 75 72 63 65  20 66 69 6c 65 73 2e 0a  |e source files..|
0005f790  0a 49 6e 20 45 61 73 79  20 43 2c 20 4d 61 6b 65  |.In Easy C, Make|
0005f7a0  20 46 69 6c 65 73 20 63  61 6e 20 62 65 20 63 72  | Files can be cr|
0005f7b0  65 61 74 65 64 20 61 75  74 6f 6d 61 74 69 63 61  |eated automatica|
0005f7c0  6c 6c 79 20 66 6f 72 20  79 6f 75 2e 20 53 69 6d  |lly for you. Sim|
0005f7d0  70 6c 79 20 64 72 61 67  20 74 68 65 20 66 69 6c  |ply drag the fil|
0005f7e0  65 73 20 79 6f 75 20 77  61 6e 74 20 74 6f 20 63  |es you want to c|
0005f7f0  6f 6d 70 69 6c 65 20 61  6e 64 20 6c 69 6e 6b 20  |ompile and link |
0005f800  74 6f 20 74 68 65 20 53  6f 75 72 63 65 20 61 6e  |to the Source an|
0005f810  64 20 4f 62 6a 65 63 74  20 77 69 6e 64 6f 77 73  |d Object windows|
0005f820  20 61 6e 64 20 74 68 65  6e 20 63 6c 69 63 6b 20  | and then click |
0005f830  43 72 65 61 74 65 2e 20  57 68 65 6e 20 79 6f 75  |Create. When you|
0005f840  20 70 65 72 66 6f 72 6d  20 61 20 4d 61 6b 65 2c  | perform a Make,|
0005f850  20 74 68 65 20 4d 61 6b  65 20 66 61 63 69 6c 69  | the Make facili|
0005f860  74 79 20 6f 6e 6c 79 20  63 6f 6d 70 69 6c 65 73  |ty only compiles|
0005f870  2f 6c 69 6e 6b 73 20 74  68 6f 73 65 20 70 61 72  |/links those par|
0005f880  74 73 20 77 68 69 63 68  20 61 72 65 20 6e 6f 74  |ts which are not|
0005f890  20 75 70 20 74 6f 20 64  61 74 65 2e 0a 0a 45 61  | up to date...Ea|
0005f8a0  73 79 20 43 20 4d 61 6b  65 20 66 69 6c 65 73 20  |sy C Make files |
0005f8b0  68 61 76 65 20 74 68 65  20 66 6f 6c 6c 6f 77 69  |have the followi|
0005f8c0  6e 67 20 66 6f 72 6d 61  74 3a 0a 0a 20 20 20 20  |ng format:..    |
0005f8d0  4d 61 63 72 6f 20 64 65  66 69 6e 69 74 69 6f 6e  |Macro definition|
0005f8e0  73 0a 20 20 20 20 54 61  72 67 65 74 73 0a 20 20  |s.    Targets.  |
0005f8f0  20 20 44 65 70 65 6e 64  65 6e 63 69 65 73 0a 0a  |  Dependencies..|
0005f900  4d 61 63 72 6f 20 64 65  66 69 6e 69 74 69 6f 6e  |Macro definition|
0005f910  73 20 61 72 65 20 69 6e  20 74 68 65 20 66 6f 72  |s are in the for|
0005f920  6d 3a 0a 7b 66 43 6f 64  65 7d 4d 41 43 52 4f 4e  |m:.{fCode}MACRON|
0005f930  41 4d 45 20 3d 20 5c 3c  64 65 66 69 6e 69 74 69  |AME = \<definiti|
0005f940  6f 6e 3e 7b 66 7d 0a 0a  54 61 72 67 65 74 73 20  |on>{f}..Targets |
0005f950  73 70 65 63 69 66 79 20  77 68 61 74 20 65 78 65  |specify what exe|
0005f960  63 75 74 61 62 6c 65 20  66 69 6c 65 73 20 61 72  |cutable files ar|
0005f970  65 20 63 72 65 61 74 65  64 20 66 72 6f 6d 20 77  |e created from w|
0005f980  68 61 74 20 6f 62 6a 65  63 74 73 2e 20 54 68 65  |hat objects. The|
0005f990  79 20 61 72 65 20 69 6e  20 74 68 65 20 66 6f 72  |y are in the for|
0005f9a0  6d 3a 0a 7b 66 43 6f 64  65 7d 5c 3c 74 61 72 67  |m:.{fCode}\<targ|
0005f9b0  65 74 3e 20 3a 20 5c 3c  6c 69 73 74 20 6f 66 20  |et> : \<list of |
0005f9c0  6f 62 6a 65 63 74 73 3e  7b 66 7d 0a 54 68 65 20  |objects>{f}.The |
0005f9d0  6c 69 73 74 20 6f 66 20  6f 62 6a 65 63 74 73 20  |list of objects |
0005f9e0  61 72 65 20 6f 62 6a 65  63 74 20 6e 61 6d 65 73  |are object names|
0005f9f0  20 28 73 70 65 63 69 66  69 65 64 20 69 6e 20 74  | (specified in t|
0005fa00  68 65 20 70 72 6f 70 65  72 20 52 49 53 43 20 4f  |he proper RISC O|
0005fa10  53 20 77 61 79 20 65 67  20 22 6f 2e 6f 62 6a 65  |S way eg "o.obje|
0005fa20  63 74 22 29 20 73 65 70  61 72 61 74 65 64 20 62  |ct") separated b|
0005fa30  79 20 73 70 61 63 65 73  2e 0a 0a 44 65 70 65 6e  |y spaces...Depen|
0005fa40  64 65 6e 63 69 65 73 20  61 72 65 20 69 6e 20 74  |dencies are in t|
0005fa50  68 65 20 66 6f 72 6d 3a  0a 7b 66 43 6f 64 65 7d  |he form:.{fCode}|
0005fa60  5c 3c 6f 62 6a 65 63 74  20 66 69 6c 65 3e 20 3a  |\<object file> :|
0005fa70  20 5c 3c 68 65 61 64 65  72 20 66 69 6c 65 3e 7b  | \<header file>{|
0005fa80  66 7d 0a 49 66 20 74 68  65 20 73 70 65 63 69 66  |f}.If the specif|
0005fa90  69 65 64 20 68 65 61 64  65 72 20 66 69 6c 65 20  |ied header file |
0005faa0  69 73 20 61 6c 74 65 72  65 64 20 74 68 65 6e 20  |is altered then |
0005fab0  74 68 65 20 4d 61 6b 65  20 66 61 63 69 6c 69 74  |the Make facilit|
0005fac0  79 20 72 65 63 6f 67 6e  69 73 65 73 20 74 68 61  |y recognises tha|
0005fad0  74 20 74 68 65 20 6f 62  6a 65 63 74 20 66 69 6c  |t the object fil|
0005fae0  65 20 6e 65 65 64 73 20  74 6f 20 62 65 20 72 65  |e needs to be re|
0005faf0  63 6f 6d 70 69 6c 65 64  2f 6c 69 6e 6b 65 64 2e  |compiled/linked.|
0005fb00  44 41 54 41 f1 00 00 00  4d 61 6b 65 41 53 43 49  |DATA....MakeASCI|
0005fb10  49 5a 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |IZ.Syntax:.void |
0005fb20  4d 61 6b 65 41 53 43 49  49 5a 20 28 63 68 61 72  |MakeASCIIZ (char|
0005fb30  20 2a 73 2c 20 69 6e 74  20 6d 61 78 5f 6c 65 6e  | *s, int max_len|
0005fb40  29 3b 0a 48 65 61 64 65  72 3a 09 3c 54 69 6d 73  |);.Header:.<Tims|
0005fb50  4c 69 62 3a 4c 69 62 2e  68 3d 3e 4c 69 62 3e 0a  |Lib:Lib.h=>Lib>.|
0005fb60  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
0005fb70  6f 6e 76 65 72 74 73 20  74 68 65 20 63 61 72 72  |onverts the carr|
0005fb80  69 61 67 65 20 72 65 74  75 72 6e 2d 74 65 72 6d  |iage return-term|
0005fb90  69 6e 61 74 65 64 20 73  74 72 69 6e 67 20 70 6f  |inated string po|
0005fba0  69 6e 74 65 64 20 74 6f  20 62 79 20 2f 73 2f 20  |inted to by /s/ |
0005fbb0  69 6e 74 6f 20 61 20 7a  65 72 6f 2d 74 65 72 6d  |into a zero-term|
0005fbc0  69 6e 61 74 65 64 20 73  74 72 69 6e 67 2e 20 3c  |inated string. <|
0005fbd0  4d 61 6b 65 43 52 3e 28  29 20 63 6f 6e 76 65 72  |MakeCR>() conver|
0005fbe0  74 73 20 74 68 65 20 6f  74 68 65 72 20 77 61 79  |ts the other way|
0005fbf0  2e 00 00 00 44 41 54 41  ed 00 00 00 4d 61 6b 65  |....DATA....Make|
0005fc00  43 52 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |CR.Syntax:.void |
0005fc10  4d 61 6b 65 43 52 20 28  63 68 61 72 20 2a 73 2c  |MakeCR (char *s,|
0005fc20  20 69 6e 74 20 6d 61 78  5f 6c 65 6e 29 3b 0a 48  | int max_len);.H|
0005fc30  65 61 64 65 72 3a 09 3c  54 69 6d 73 4c 69 62 3a  |eader:.<TimsLib:|
0005fc40  4c 69 62 2e 68 3d 3e 4c  69 62 3e 0a 0a 54 68 69  |Lib.h=>Lib>..Thi|
0005fc50  73 20 66 75 6e 63 74 69  6f 6e 20 63 6f 6e 76 65  |s function conve|
0005fc60  72 74 73 20 74 68 65 20  7a 65 72 6f 2d 74 65 72  |rts the zero-ter|
0005fc70  6d 69 6e 61 74 65 64 20  73 74 72 69 6e 67 20 70  |minated string p|
0005fc80  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 2f 73 2f  |ointed to by /s/|
0005fc90  20 69 6e 74 6f 20 61 20  63 61 72 72 69 61 67 65  | into a carriage|
0005fca0  20 72 65 74 75 72 6e 2d  74 65 72 6d 69 6e 61 74  | return-terminat|
0005fcb0  65 64 20 73 74 72 69 6e  67 2e 20 3c 4d 61 6b 65  |ed string. <Make|
0005fcc0  41 53 43 49 49 5a 3e 28  29 20 63 6f 6e 76 65 72  |ASCIIZ>() conver|
0005fcd0  74 73 20 74 68 65 20 6f  74 68 65 72 20 77 61 79  |ts the other way|
0005fce0  2e 00 00 00 44 41 54 41  e7 00 00 00 6d 61 6c 6c  |....DATA....mall|
0005fcf0  6f 63 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |oc.Syntax:.void |
0005fd00  2a 6d 61 6c 6c 6f 63 20  28 3c 73 69 7a 65 5f 74  |*malloc (<size_t|
0005fd10  3e 20 73 69 7a 65 29 3b  0a 48 65 61 64 65 72 3a  |> size);.Header:|
0005fd20  09 3c 73 74 64 6c 69 62  2e 68 3d 3e 73 74 64 6c  |.<stdlib.h=>stdl|
0005fd30  69 62 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |ib>..Returns:.Po|
0005fd40  69 6e 74 65 72 20 74 6f  20 73 70 61 63 65 2c 20  |inter to space, |
0005fd50  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 66 61 69  |or <NULL> if fai|
0005fd60  6c 65 64 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |led...This funct|
0005fd70  69 6f 6e 20 61 6c 6c 6f  63 61 74 65 73 20 61 6e  |ion allocates an|
0005fd80  20 61 72 65 61 20 6f 66  20 6d 65 6d 6f 72 79 20  | area of memory |
0005fd90  6f 66 20 73 69 7a 65 20  73 70 65 63 69 66 69 65  |of size specifie|
0005fda0  64 2e 20 54 68 65 20 63  6f 6e 74 65 6e 74 73 20  |d. The contents |
0005fdb0  6f 66 20 74 68 65 20 73  70 61 63 65 20 61 72 65  |of the space are|
0005fdc0  20 75 6e 64 65 66 69 6e  65 64 2e 00 44 41 54 41  | undefined..DATA|
0005fdd0  11 02 00 00 54 69 6d 73  4c 69 62 3a 4d 61 6c 6c  |....TimsLib:Mall|
0005fde0  6f 63 44 62 75 67 2e 68  0a 54 68 69 73 20 68 65  |ocDbug.h.This he|
0005fdf0  61 64 65 72 20 70 72 6f  76 69 64 65 73 20 66 61  |ader provides fa|
0005fe00  63 69 6c 69 74 69 65 73  20 66 6f 72 20 74 72 61  |cilities for tra|
0005fe10  63 6b 69 6e 67 20 6d 65  6d 6f 72 79 20 61 6c 6c  |cking memory all|
0005fe20  6f 63 61 74 69 6f 6e 2e  0a 0a 46 75 6e 63 74 69  |ocation...Functi|
0005fe30  6f 6e 73 3a 0a 0a 23 49  6e 64 65 6e 74 20 37 0a  |ons:..#Indent 7.|
0005fe40  23 54 61 62 6c 65 20 63  6f 6c 75 6d 6e 73 20 33  |#Table columns 3|
0005fe50  0a 3c 4d 61 6c 6c 6f 63  44 62 75 67 3d 3e 6d 61  |.<MallocDbug=>ma|
0005fe60  6c 6c 6f 63 64 62 75 67  5f 3e 0a 3c 46 72 65 65  |llocdbug_>.<Free|
0005fe70  44 62 75 67 3e 0a 3c 4d  65 6d 6f 72 79 44 75 6d  |Dbug>.<MemoryDum|
0005fe80  70 3e 0a 23 45 6e 64 54  61 62 6c 65 0a 0a 23 69  |p>.#EndTable..#i|
0005fe90  6e 64 65 6e 74 20 30 0a  4d 61 63 72 6f 73 3a 0a  |ndent 0.Macros:.|
0005fea0  0a 23 69 6e 64 65 6e 74  20 31 36 0a 23 74 61 62  |.#indent 16.#tab|
0005feb0  6c 65 20 31 20 31 35 0a  3c 6d 61 6c 6c 6f 63 64  |le 1 15.<mallocd|
0005fec0  62 75 67 3d 3e 6d 61 6c  6c 6f 63 64 62 75 67 5f  |bug=>mallocdbug_|
0005fed0  3e 0a 3c 66 72 65 65 64  62 75 67 3e 0a 23 65 6e  |>.<freedbug>.#en|
0005fee0  64 74 61 62 6c 65 0a 23  69 6e 64 65 6e 74 20 30  |dtable.#indent 0|
0005fef0  0a 0a 4f 6e 20 65 78 69  74 20 66 72 6f 6d 20 79  |..On exit from y|
0005ff00  6f 75 72 20 70 72 6f 67  72 61 6d 2c 20 79 6f 75  |our program, you|
0005ff10  20 63 61 6e 20 63 61 6c  6c 20 3c 4d 65 6d 6f 72  | can call <Memor|
0005ff20  79 44 75 6d 70 3e 2c 20  77 68 69 63 68 20 77 69  |yDump>, which wi|
0005ff30  6c 6c 20 74 65 6c 6c 20  79 6f 75 20 61 6e 79 20  |ll tell you any |
0005ff40  6d 65 6d 6f 72 79 20 77  68 69 63 68 20 68 61 73  |memory which has|
0005ff50  20 62 65 65 6e 20 6d 61  6c 6c 6f 63 64 20 62 75  | been mallocd bu|
0005ff60  74 20 6e 6f 74 20 66 72  65 65 64 2e 20 54 68 69  |t not freed. Thi|
0005ff70  73 20 6d 6f 64 75 6c 65  20 75 73 65 20 3c 54 72  |s module use <Tr|
0005ff80  61 63 65 3d 3e 54 72 61  63 65 5f 54 4c 3e 20 74  |ace=>Trace_TL> t|
0005ff90  6f 20 64 6f 20 61 6c 6c  20 69 74 73 20 6f 75 74  |o do all its out|
0005ffa0  70 75 74 20 61 6e 64 20  73 6f 20 77 69 6c 6c 20  |put and so will |
0005ffb0  6e 6f 74 20 77 6f 72 6b  20 75 6e 6c 65 73 73 20  |not work unless |
0005ffc0  79 6f 75 20 68 61 76 65  20 61 20 63 6f 70 79 20  |you have a copy |
0005ffd0  6f 66 20 56 44 55 53 74  72 65 61 6d 2e 00 00 00  |of VDUStream....|
0005ffe0  44 49 52 24 2c 00 00 00  2c 00 00 00 0c 00 06 00  |DIR$,...,.......|
0005fff0  46 fd ff ff 2d db 56 26  ba 01 00 00 13 00 00 00  |F...-.V&........|
00060000  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
00060010  ba 01 00 00 4d 61 6c 6c  6f 63 44 62 75 67 0a 53  |....MallocDbug.S|
00060020  79 6e 74 61 78 3a 09 76  6f 69 64 20 2a 4d 61 6c  |yntax:.void *Mal|
00060030  6c 6f 63 44 62 75 67 20  28 3c 73 69 7a 65 5f 74  |locDbug (<size_t|
00060040  3e 20 73 69 7a 65 2c 20  63 68 61 72 20 2a 66 69  |> size, char *fi|
00060050  6c 65 6e 61 6d 65 2c 20  69 6e 74 20 6c 69 6e 65  |lename, int line|
00060060  29 3b 0a 48 65 61 64 65  72 3a 09 3c 54 69 6d 73  |);.Header:.<Tims|
00060070  4c 69 62 3a 4d 61 6c 6c  6f 63 44 62 75 67 2e 68  |Lib:MallocDbug.h|
00060080  3d 3e 4d 61 6c 6c 6f 63  44 62 75 67 3e 0a 0a 52  |=>MallocDbug>..R|
00060090  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
000600a0  74 6f 20 74 68 65 20 61  6c 6c 6f 63 61 74 65 64  |to the allocated|
000600b0  20 62 6c 6f 63 6b 2e 0a  0a 54 68 69 73 20 66 75  | block...This fu|
000600c0  6e 63 74 69 6f 6e 20 69  73 20 69 64 65 6e 74 69  |nction is identi|
000600d0  63 61 6c 20 74 6f 20 3c  6d 61 6c 6c 6f 63 3e 28  |cal to <malloc>(|
000600e0  29 2c 20 62 75 74 20 72  65 6d 65 6d 62 65 72 73  |), but remembers|
000600f0  20 74 68 65 20 66 69 6c  65 20 61 6e 64 20 6c 69  | the file and li|
00060100  6e 65 20 61 74 20 77 68  69 63 68 20 74 68 65 20  |ne at which the |
00060110  63 61 6c 6c 20 6f 63 63  75 72 72 65 64 2e 0a 0a  |call occurred...|
00060120  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 77 69  |This function wi|
00060130  6c 6c 20 6e 6f 72 6d 61  6c 6c 79 20 62 65 20 63  |ll normally be c|
00060140  61 6c 6c 65 64 20 74 72  61 6e 73 70 61 72 65 6e  |alled transparen|
00060150  74 6c 79 2e 20 54 68 65  20 6d 61 63 72 6f 20 7b  |tly. The macro {|
00060160  2a 7d 6d 61 6c 6c 6f 63  64 62 75 67 7b 2a 7d 20  |*}mallocdbug{*} |
00060170  69 73 20 64 65 66 69 6e  65 64 20 74 6f 20 63 61  |is defined to ca|
00060180  6c 6c 20 74 68 69 73 20  66 75 6e 63 74 69 6f 6e  |ll this function|
00060190  20 69 6e 20 64 65 62 75  67 20 62 75 69 6c 64 73  | in debug builds|
000601a0  2c 20 61 6e 64 20 6e 6f  72 6d 61 6c 20 6d 61 6c  |, and normal mal|
000601b0  6c 6f 63 20 69 6e 20 72  65 6c 65 61 73 65 20 62  |loc in release b|
000601c0  75 69 6c 64 73 2e 00 00  44 41 54 41 66 03 00 00  |uilds...DATAf...|
000601d0  6d 61 74 68 0a 54 68 65  20 5c 3c 6d 61 74 68 2e  |math.The \<math.|
000601e0  68 5c 3e 20 68 65 61 64  65 72 20 64 65 63 6c 61  |h\> header decla|
000601f0  72 65 73 20 61 20 6e 75  6d 62 65 72 20 6f 66 20  |res a number of |
00060200  66 75 6e 63 74 69 6f 6e  73 20 66 6f 72 20 66 6c  |functions for fl|
00060210  6f 61 74 69 6e 67 20 70  6f 69 6e 74 20 61 72 69  |oating point ari|
00060220  74 68 6d 65 74 69 63 2e  20 41 6c 6c 20 74 68 65  |thmetic. All the|
00060230  20 66 75 6e 63 74 69 6f  6e 73 20 61 63 63 65 70  | functions accep|
00060240  74 20 61 6e 64 20 72 65  74 75 72 6e 20 2f 64 6f  |t and return /do|
00060250  75 62 6c 65 2f 20 76 61  6c 75 65 73 2e 20 49 6e  |uble/ values. In|
00060260  20 61 64 64 69 74 69 6f  6e 2c 20 6f 6e 65 20 6d  | addition, one m|
00060270  61 63 72 6f 20 69 73 20  64 65 66 69 6e 65 64 2e  |acro is defined.|
00060280  0a 0a 46 75 6e 63 74 69  6f 6e 73 3a 0a 0a 23 49  |..Functions:..#I|
00060290  6e 64 65 6e 74 20 33 0a  23 54 61 62 6c 65 20 33  |ndent 3.#Table 3|
000602a0  20 32 35 0a 3c 54 72 69  67 6f 6e 6f 6d 65 74 72  | 25.<Trigonometr|
000602b0  69 63 3d 3e 6d 5f 74 72  69 67 5f 3e 0a 3c 48 79  |ic=>m_trig_>.<Hy|
000602c0  70 65 72 62 6f 6c 69 63  3d 3e 6d 5f 68 79 70 65  |perbolic=>m_hype|
000602d0  72 5f 3e 0a 3c 45 78 70  6f 6e 65 6e 74 69 61 6c  |r_>.<Exponential|
000602e0  2f 4c 6f 67 61 72 69 74  68 6d 69 63 3d 3e 6d 5f  |/Logarithmic=>m_|
000602f0  65 78 70 2f 6c 6f 67 5f  3e 0a 3c 50 6f 77 65 72  |exp/log_>.<Power|
00060300  3d 3e 6d 5f 70 6f 77 65  72 5f 3e 0a 3c 4d 69 73  |=>m_power_>.<Mis|
00060310  63 65 6c 6c 61 6e 65 6f  75 73 3d 3e 6d 5f 6d 69  |cellaneous=>m_mi|
00060320  73 63 5f 3e 0a 23 45 6e  64 54 61 62 6c 65 0a 23  |sc_>.#EndTable.#|
00060330  49 6e 64 65 6e 74 20 30  0a 0a 4d 61 63 72 6f 3a  |Indent 0..Macro:|
00060340  0a 0a 20 20 20 3c 48 55  47 45 5f 56 41 4c 3e 0a  |..   <HUGE_VAL>.|
00060350  0a 49 66 20 74 68 65 20  69 6e 70 75 74 20 61 72  |.If the input ar|
00060360  67 75 6d 65 6e 74 73 20  61 72 65 20 6f 75 74 73  |guments are outs|
00060370  69 64 65 20 61 20 73 75  69 74 61 62 6c 65 20 72  |ide a suitable r|
00060380  61 6e 67 65 20 66 6f 72  20 74 68 65 20 66 75 6e  |ange for the fun|
00060390  63 74 69 6f 6e 20 28 74  68 65 20 64 6f 6d 61 69  |ction (the domai|
000603a0  6e 29 2c 20 74 68 65 20  76 61 6c 75 65 20 6f 66  |n), the value of|
000603b0  20 74 68 65 20 6d 61 63  72 6f 20 3c 45 44 4f 4d  | the macro <EDOM|
000603c0  3e 20 69 73 20 73 74 6f  72 65 64 20 69 6e 20 3c  |> is stored in <|
000603d0  65 72 72 6e 6f 3e 2e 0a  0a 53 69 6d 69 6c 61 72  |errno>...Similar|
000603e0  6c 79 2c 20 69 66 20 74  68 65 20 72 65 73 75 6c  |ly, if the resul|
000603f0  74 20 69 73 20 74 6f 6f  20 62 69 67 20 74 6f 20  |t is too big to |
00060400  62 65 20 73 74 6f 72 65  64 20 69 6e 20 61 20 2f  |be stored in a /|
00060410  64 6f 75 62 6c 65 2f 2c  20 74 68 65 20 66 75 6e  |double/, the fun|
00060420  63 74 69 6f 6e 20 72 65  74 75 72 6e 73 20 74 68  |ction returns th|
00060430  65 20 76 61 6c 75 65 20  6f 66 20 74 68 65 20 6d  |e value of the m|
00060440  61 63 72 6f 20 3c 48 55  47 45 5f 56 41 4c 3e 20  |acro <HUGE_VAL> |
00060450  77 69 74 68 20 74 68 65  20 73 61 6d 65 20 73 69  |with the same si|
00060460  67 6e 20 61 73 20 74 68  65 20 74 72 75 65 20 72  |gn as the true r|
00060470  65 73 75 6c 74 20 2d 20  69 65 20 2d 7b 2a 7d 48  |esult - ie -{*}H|
00060480  55 47 45 5f 56 41 4c 7b  2a 7d 20 69 66 20 74 68  |UGE_VAL{*} if th|
00060490  65 20 72 65 73 75 6c 74  20 69 73 20 6e 65 67 61  |e result is nega|
000604a0  74 69 76 65 2e 20 54 68  65 20 76 61 6c 75 65 20  |tive. The value |
000604b0  6f 66 20 74 68 65 20 6d  61 63 72 6f 20 3c 45 52  |of the macro <ER|
000604c0  41 4e 47 45 3e 20 69 73  20 73 74 6f 72 65 64 20  |ANGE> is stored |
000604d0  69 6e 20 3c 65 72 72 6e  6f 3e 2e 0a 0a 49 66 20  |in <errno>...If |
000604e0  74 68 65 20 72 65 73 75  6c 74 20 69 73 20 74 6f  |the result is to|
000604f0  6f 20 73 6d 61 6c 6c 20  74 6f 20 62 65 20 73 74  |o small to be st|
00060500  6f 72 65 64 20 69 6e 20  61 20 2f 64 6f 75 62 6c  |ored in a /doubl|
00060510  65 2f 2c 20 74 68 65 20  66 75 6e 63 74 69 6f 6e  |e/, the function|
00060520  20 72 65 74 75 72 6e 73  20 7a 65 72 6f 2e 00 00  | returns zero...|
00060530  44 41 54 41 bc 00 00 00  4d 41 58 0a 54 68 69 73  |DATA....MAX.This|
00060540  20 6d 61 63 72 6f 20 69  73 20 64 65 66 69 6e 65  | macro is define|
00060550  64 20 69 6e 20 3c 54 69  6d 73 4c 69 62 3a 43 6f  |d in <TimsLib:Co|
00060560  72 65 2e 68 3d 3e 43 6f  72 65 5f 54 4c 3e 20 61  |re.h=>Core_TL> a|
00060570  6e 64 20 3c 44 65 73 6b  4c 69 62 3a 43 6f 72 65  |nd <DeskLib:Core|
00060580  2e 68 3d 3e 43 6f 72 65  3e 2e 20 49 74 20 69 73  |.h=>Core>. It is|
00060590  20 75 73 65 64 20 74 6f  20 66 69 6e 64 20 74 68  | used to find th|
000605a0  65 20 6d 61 78 69 6d 75  6d 20 6f 66 20 74 77 6f  |e maximum of two|
000605b0  20 76 61 6c 75 65 73 2e  20 4d 41 58 28 78 2c 79  | values. MAX(x,y|
000605c0  29 20 77 69 6c 6c 20 67  69 76 65 20 79 6f 75 20  |) will give you |
000605d0  2f 78 2f 20 69 66 20 78  3e 79 2c 20 6f 72 20 2f  |/x/ if x>y, or /|
000605e0  79 2f 20 69 66 20 78 5c  3c 3d 79 2e 44 49 52 24  |y/ if x\<=y.DIR$|
000605f0  30 00 00 00 30 00 00 00  1c 06 06 00 46 ff ff ff  |0...0.......F...|
00060600  19 55 55 26 8d 00 00 00  13 00 00 00 00 00 00 00  |.UU&............|
00060610  50 41 54 48 5f 4c 45 4e  00 00 00 00 44 41 54 41  |PATH_LEN....DATA|
00060620  8d 00 00 00 4d 41 58 5f  50 41 54 48 5f 4c 45 4e  |....MAX_PATH_LEN|
00060630  0a 54 68 69 73 20 6d 61  63 72 6f 20 69 73 20 64  |.This macro is d|
00060640  65 66 69 6e 65 64 20 69  6e 20 3c 54 69 6d 73 4c  |efined in <TimsL|
00060650  69 62 3a 46 69 6c 65 2e  68 3d 3e 46 69 6c 65 5f  |ib:File.h=>File_|
00060660  54 4c 3e 20 61 73 20 74  68 65 20 6d 61 78 69 6d  |TL> as the maxim|
00060670  75 6d 20 6c 65 6e 67 74  68 20 6f 66 20 61 20 70  |um length of a p|
00060680  61 74 68 6e 61 6d 65 2e  20 49 74 20 69 73 20 61  |athname. It is a|
00060690  63 74 75 61 6c 6c 79 20  64 65 66 69 6e 65 64 20  |ctually defined |
000606a0  61 73 20 28 32 35 36 29  2e 00 00 00 44 49 52 24  |as (256)....DIR$|
000606b0  4c 00 00 00 4c 00 00 00  f8 06 06 00 46 ff ff ff  |L...L.......F...|
000606c0  17 83 df 22 0c 01 00 00  13 00 00 00 00 00 00 00  |..."............|
000606d0  43 55 52 5f 4d 41 58 00  04 08 06 00 46 ff ff ff  |CUR_MAX.....F...|
000606e0  88 f9 bc 22 99 00 00 00  13 00 00 00 00 00 00 00  |..."............|
000606f0  4c 45 4e 5f 4d 41 58 00  44 41 54 41 0c 01 00 00  |LEN_MAX.DATA....|
00060700  4d 42 5f 43 55 52 5f 4d  41 58 0a 54 68 65 20 6d  |MB_CUR_MAX.The m|
00060710  61 63 72 6f 20 7b 2f 7d  4d 42 5f 43 55 52 5f 4d  |acro {/}MB_CUR_M|
00060720  41 58 7b 2f 7d 20 69 73  20 64 65 66 69 6e 65 64  |AX{/} is defined|
00060730  20 69 6e 20 3c 73 74 64  6c 69 62 2e 68 3d 3e 73  | in <stdlib.h=>s|
00060740  74 64 6c 69 62 3e 20 61  73 20 61 20 6d 61 63 72  |tdlib> as a macr|
00060750  6f 20 77 68 69 63 68 20  72 65 70 72 65 73 65 6e  |o which represen|
00060760  74 73 20 74 68 65 20 6d  61 78 69 6d 75 6d 20 6e  |ts the maximum n|
00060770  75 6d 62 65 72 20 6f 66  20 62 79 74 65 73 20 69  |umber of bytes i|
00060780  6e 20 61 20 6d 75 6c 74  69 62 79 74 65 20 63 68  |n a multibyte ch|
00060790  61 72 61 63 74 65 72 20  73 70 65 63 69 66 69 65  |aracter specifie|
000607a0  64 20 62 79 20 74 68 65  20 63 75 72 72 65 6e 74  |d by the current|
000607b0  20 6c 6f 63 61 6c 65 2e  20 49 74 73 20 76 61 6c  | locale. Its val|
000607c0  75 65 20 69 73 20 6e 65  76 65 72 20 67 72 65 61  |ue is never grea|
000607d0  74 65 72 20 74 68 61 6e  20 3c 4d 42 5f 4c 45 4e  |ter than <MB_LEN|
000607e0  5f 4d 41 58 3e 2e 20 49  6e 20 45 61 73 79 20 43  |_MAX>. In Easy C|
000607f0  20 69 74 20 69 73 20 64  65 66 69 6e 65 64 20 61  | it is defined a|
00060800  73 20 31 2e 44 41 54 41  99 00 00 00 4d 42 5f 4c  |s 1.DATA....MB_L|
00060810  45 4e 5f 4d 41 58 0a 54  68 69 73 20 6d 61 63 72  |EN_MAX.This macr|
00060820  6f 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |o is defined in |
00060830  3c 6c 69 6d 69 74 73 2e  68 3e 20 61 6e 64 20 72  |<limits.h> and r|
00060840  65 70 72 65 73 65 6e 74  73 20 74 68 65 20 6d 61  |epresents the ma|
00060850  78 69 6d 75 6d 20 6c 65  6e 67 74 68 20 69 6e 20  |ximum length in |
00060860  62 79 74 65 73 20 6f 66  20 61 20 6d 75 6c 74 69  |bytes of a multi|
00060870  62 79 74 65 20 63 68 61  72 61 63 74 65 72 2e 20  |byte character. |
00060880  49 6e 20 45 61 73 79 20  43 20 69 74 20 69 73 20  |In Easy C it is |
00060890  64 65 66 69 6e 65 64 20  61 73 20 31 2e 00 00 00  |defined as 1....|
000608a0  44 41 54 41 17 02 00 00  6d 62 6c 65 6e 0a 53 79  |DATA....mblen.Sy|
000608b0  6e 74 61 78 3a 09 69 6e  74 20 6d 62 6c 65 6e 20  |ntax:.int mblen |
000608c0  28 63 68 61 72 20 2a 73  2c 20 3c 73 69 7a 65 5f  |(char *s, <size_|
000608d0  74 3e 20 6e 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |t> n);.Header:.<|
000608e0  73 74 64 6c 69 62 2e 68  3d 3e 73 74 64 6c 69 62  |stdlib.h=>stdlib|
000608f0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 53 65 65 20  |>..Returns:.See |
00060900  62 65 6c 6f 77 2e 0a 0a  49 66 20 2f 73 2f 20 69  |below...If /s/ i|
00060910  73 20 6e 6f 74 20 61 20  6e 75 6c 6c 20 70 6f 69  |s not a null poi|
00060920  6e 74 65 72 2c 20 74 68  65 6e 20 74 68 69 73 20  |nter, then this |
00060930  66 75 6e 63 74 69 6f 6e  20 64 65 74 65 72 6d 69  |function determi|
00060940  6e 65 73 20 74 68 65 20  6e 75 6d 62 65 72 20 6f  |nes the number o|
00060950  66 20 62 79 74 65 73 20  63 6f 6d 70 72 69 73 69  |f bytes comprisi|
00060960  6e 67 20 74 68 65 20 74  68 65 20 6d 75 6c 74 69  |ng the the multi|
00060970  62 79 74 65 20 63 68 61  72 61 63 74 65 72 20 70  |byte character p|
00060980  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 2f 73 2f  |ointed to by /s/|
00060990  2e 20 49 74 20 72 65 74  75 72 6e 73 20 61 20 30  |. It returns a 0|
000609a0  20 69 66 20 2f 73 2f 20  70 6f 69 6e 74 73 20 74  | if /s/ points t|
000609b0  6f 20 61 20 6e 75 6c 6c  20 63 68 61 72 61 63 74  |o a null charact|
000609c0  65 72 2c 20 6f 72 20 74  68 65 20 6e 75 6d 62 65  |er, or the numbe|
000609d0  72 20 6f 66 20 62 79 74  65 73 2e 20 49 66 20 2f  |r of bytes. If /|
000609e0  73 2f 20 69 73 20 6e 6f  74 20 61 20 76 61 6c 69  |s/ is not a vali|
000609f0  64 20 6d 75 6c 74 69 62  79 74 65 20 63 68 61 72  |d multibyte char|
00060a00  61 63 74 65 72 20 69 74  20 72 65 74 75 72 6e 73  |acter it returns|
00060a10  20 2d 20 31 2e 20 41 74  20 6d 6f 73 74 20 2f 6e  | - 1. At most /n|
00060a20  2f 20 62 79 74 65 73 20  77 69 6c 6c 20 62 65 20  |/ bytes will be |
00060a30  65 78 61 6d 69 6e 65 64  2e 0a 0a 49 66 20 2f 73  |examined...If /s|
00060a40  2f 20 69 73 20 61 20 6e  75 6c 6c 20 70 6f 69 6e  |/ is a null poin|
00060a50  74 65 72 2c 20 74 68 69  73 20 66 75 6e 63 74 69  |ter, this functi|
00060a60  6f 6e 20 72 65 74 75 72  6e 73 20 7a 65 72 6f 20  |on returns zero |
00060a70  69 66 20 6d 75 6c 74 69  62 79 74 65 20 63 68 61  |if multibyte cha|
00060a80  72 61 63 74 65 72 20 65  6e 63 6f 64 69 6e 67 73  |racter encodings|
00060a90  20 64 6f 20 6e 6f 74 20  68 61 76 65 20 73 74 61  | do not have sta|
00060aa0  74 65 2d 64 65 70 65 6e  64 65 6e 74 20 65 6e 63  |te-dependent enc|
00060ab0  6f 64 69 6e 67 73 2e 00  44 41 54 41 b3 02 00 00  |odings..DATA....|
00060ac0  6d 62 73 74 6f 77 63 73  0a 53 79 6e 74 61 78 3a  |mbstowcs.Syntax:|
00060ad0  09 3c 73 69 7a 65 5f 74  3e 20 6d 62 73 74 6f 77  |.<size_t> mbstow|
00060ae0  63 73 20 28 3c 77 63 68  61 72 5f 74 3e 20 2a 70  |cs (<wchar_t> *p|
00060af0  77 63 73 2c 20 63 68 61  72 20 2a 73 2c 20 73 69  |wcs, char *s, si|
00060b00  7a 65 5f 74 20 6e 29 3b  0a 48 65 61 64 65 72 3a  |ze_t n);.Header:|
00060b10  09 3c 73 74 64 6c 69 62  2e 68 3d 3e 73 74 64 6c  |.<stdlib.h=>stdl|
00060b20  69 62 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 53 65  |ib>..Returns:.Se|
00060b30  65 20 62 65 6c 6f 77 2e  0a 0a 43 6f 6e 76 65 72  |e below...Conver|
00060b40  74 73 20 61 20 73 65 71  75 65 6e 63 65 20 6f 66  |ts a sequence of|
00060b50  20 6d 75 6c 74 69 62 79  74 65 20 63 68 61 72 61  | multibyte chara|
00060b60  63 74 65 72 73 20 74 68  61 74 20 62 65 67 69 6e  |cters that begin|
00060b70  73 20 69 6e 20 74 68 65  20 69 6e 69 74 69 61 6c  |s in the initial|
00060b80  20 73 68 69 66 74 20 73  74 61 74 65 20 66 72 6f  | shift state fro|
00060b90  6d 20 74 68 65 20 61 72  72 61 79 20 70 6f 69 6e  |m the array poin|
00060ba0  74 65 64 20 74 6f 20 62  79 20 2f 73 2f 20 69 6e  |ted to by /s/ in|
00060bb0  74 6f 20 61 20 73 65 71  75 65 6e 63 65 20 6f 66  |to a sequence of|
00060bc0  20 63 6f 72 72 65 73 70  6f 6e 64 69 6e 67 20 63  | corresponding c|
00060bd0  6f 64 65 73 20 61 6e 64  20 73 74 6f 72 65 73 20  |odes and stores |
00060be0  6e 6f 74 20 6d 6f 72 65  20 74 68 61 6e 20 2f 6e  |not more than /n|
00060bf0  2f 20 63 6f 64 65 73 20  69 6e 74 6f 20 74 68 65  |/ codes into the|
00060c00  20 61 72 72 61 79 20 70  6f 69 6e 74 65 64 20 74  | array pointed t|
00060c10  6f 20 62 79 20 2f 70 77  63 73 2f 2e 20 4e 6f 20  |o by /pwcs/. No |
00060c20  6d 75 6c 74 69 62 79 74  65 20 63 68 61 72 61 63  |multibyte charac|
00060c30  74 65 72 20 74 68 61 74  20 66 6f 6c 6c 6f 77 73  |ter that follows|
00060c40  20 61 20 6e 75 6c 6c 20  63 68 61 72 61 63 74 65  | a null characte|
00060c50  72 20 28 77 68 69 63 68  20 69 73 20 63 6f 6e 76  |r (which is conv|
00060c60  65 72 74 65 64 20 69 6e  74 6f 20 61 20 63 6f 64  |erted into a cod|
00060c70  65 20 77 69 74 68 20 76  61 6c 75 65 20 7a 65 72  |e with value zer|
00060c80  6f 29 20 77 69 6c 6c 20  62 65 20 65 78 61 6d 69  |o) will be exami|
00060c90  6e 65 64 20 6f 72 20 63  6f 6e 76 65 72 74 65 64  |ned or converted|
00060ca0  2e 20 45 61 63 68 20 6d  75 6c 74 69 62 79 74 65  |. Each multibyte|
00060cb0  20 63 68 61 72 61 63 74  65 72 20 69 73 20 63 6f  | character is co|
00060cc0  6e 76 65 72 74 65 64 20  61 73 20 69 66 20 62 79  |nverted as if by|
00060cd0  20 61 20 63 61 6c 6c 20  74 6f 20 74 68 65 20 3c  | a call to the <|
00060ce0  6d 62 74 6f 77 63 3e 20  66 75 6e 63 74 69 6f 6e  |mbtowc> function|
00060cf0  2e 0a 0a 49 66 20 61 6e  20 69 6e 76 61 6c 69 64  |...If an invalid|
00060d00  20 6d 75 6c 74 69 62 79  74 65 20 63 68 61 72 61  | multibyte chara|
00060d10  63 74 65 72 20 69 73 20  66 6f 75 6e 64 2c 20 74  |cter is found, t|
00060d20  68 69 73 20 72 65 74 75  72 6e 73 20 2d 31 2c 20  |his returns -1, |
00060d30  6f 74 68 65 72 77 69 73  65 20 69 74 20 72 65 74  |otherwise it ret|
00060d40  75 72 6e 73 20 74 68 65  20 6e 75 6d 62 65 72 20  |urns the number |
00060d50  6f 66 20 61 72 72 61 79  20 65 6c 65 6d 65 6e 74  |of array element|
00060d60  73 20 6d 6f 64 69 66 69  65 64 2e 00 44 41 54 41  |s modified..DATA|
00060d70  bd 02 00 00 6d 62 74 6f  77 63 0a 53 79 6e 74 61  |....mbtowc.Synta|
00060d80  78 3a 09 69 6e 74 20 6d  62 74 6f 77 63 20 28 3c  |x:.int mbtowc (<|
00060d90  77 63 68 61 72 5f 74 3e  20 2a 70 77 63 2c 20 63  |wchar_t> *pwc, c|
00060da0  68 61 72 20 2a 73 2c 20  3c 73 69 7a 65 5f 74 3e  |har *s, <size_t>|
00060db0  20 6e 29 3b 0a 48 65 61  64 65 72 3a 09 3c 73 74  | n);.Header:.<st|
00060dc0  64 6c 69 62 2e 68 3d 3e  73 74 64 6c 69 62 3e 0a  |dlib.h=>stdlib>.|
00060dd0  0a 52 65 74 75 72 6e 73  3a 09 53 65 65 20 62 65  |.Returns:.See be|
00060de0  6c 6f 77 2e 0a 0a 49 66  20 2f 73 2f 20 69 73 20  |low...If /s/ is |
00060df0  6e 6f 74 20 61 20 6e 75  6c 6c 20 70 6f 69 6e 74  |not a null point|
00060e00  65 72 2c 20 74 68 65 6e  20 74 68 69 73 20 66 75  |er, then this fu|
00060e10  6e 63 74 69 6f 6e 20 64  65 74 65 72 6d 69 6e 65  |nction determine|
00060e20  73 20 74 68 65 20 6e 75  6d 62 65 72 20 6f 66 20  |s the number of |
00060e30  62 79 74 65 73 20 63 6f  6d 70 72 69 73 69 6e 67  |bytes comprising|
00060e40  20 74 68 65 20 74 68 65  20 6d 75 6c 74 69 62 79  | the the multiby|
00060e50  74 65 20 63 68 61 72 61  63 74 65 72 20 70 6f 69  |te character poi|
00060e60  6e 74 65 64 20 74 6f 20  62 79 20 2f 73 2f 20 61  |nted to by /s/ a|
00060e70  6e 64 20 61 6c 73 6f 20  64 65 74 65 72 6d 69 6e  |nd also determin|
00060e80  65 73 20 74 68 65 20 76  61 6c 75 65 20 6f 66 20  |es the value of |
00060e90  74 79 70 65 20 2f 77 63  68 61 72 5f 74 2f 20 77  |type /wchar_t/ w|
00060ea0  68 69 63 68 20 63 6f 72  72 65 73 70 6f 6e 64 73  |hich corresponds|
00060eb0  20 74 6f 20 74 68 61 74  20 63 68 61 72 61 63 74  | to that charact|
00060ec0  65 72 20 61 6e 64 20 73  74 6f 72 65 73 20 69 74  |er and stores it|
00060ed0  20 69 6e 20 7b 2f 7d 2a  70 77 63 7b 2f 7d 2c 20  | in {/}*pwc{/}, |
00060ee0  69 66 20 2f 70 77 63 2f  20 69 73 20 6e 6f 74 20  |if /pwc/ is not |
00060ef0  3c 4e 55 4c 4c 3e 2e 20  49 74 20 72 65 74 75 72  |<NULL>. It retur|
00060f00  6e 73 20 61 20 30 20 69  66 20 2f 73 2f 20 70 6f  |ns a 0 if /s/ po|
00060f10  69 6e 74 73 20 74 6f 20  61 20 6e 75 6c 6c 20 63  |ints to a null c|
00060f20  68 61 72 61 63 74 65 72  2c 20 6f 72 20 74 68 65  |haracter, or the|
00060f30  20 6e 75 6d 62 65 72 20  6f 66 20 62 79 74 65 73  | number of bytes|
00060f40  2e 20 49 66 20 2f 73 2f  20 69 73 20 6e 6f 74 20  |. If /s/ is not |
00060f50  61 20 76 61 6c 69 64 20  6d 75 6c 74 69 62 79 74  |a valid multibyt|
00060f60  65 20 63 68 61 72 61 63  74 65 72 20 69 74 20 72  |e character it r|
00060f70  65 74 75 72 6e 73 20 2d  31 2e 20 41 74 20 6d 6f  |eturns -1. At mo|
00060f80  73 74 20 2f 6e 2f 20 62  79 74 65 73 20 6f 66 20  |st /n/ bytes of |
00060f90  74 68 65 20 61 72 72 61  79 20 77 69 6c 6c 20 62  |the array will b|
00060fa0  65 20 65 78 61 6d 69 6e  65 64 2e 0a 0a 49 66 20  |e examined...If |
00060fb0  2f 73 2f 20 69 73 20 61  20 6e 75 6c 6c 20 70 6f  |/s/ is a null po|
00060fc0  69 6e 74 65 72 2c 20 74  68 69 73 20 66 75 6e 63  |inter, this func|
00060fd0  74 69 6f 6e 20 72 65 74  75 72 6e 73 20 7a 65 72  |tion returns zer|
00060fe0  6f 20 69 66 20 6d 75 6c  74 69 62 79 74 65 20 63  |o if multibyte c|
00060ff0  68 61 72 61 63 74 65 72  20 65 6e 63 6f 64 69 6e  |haracter encodin|
00061000  67 73 20 64 6f 20 6e 6f  74 20 68 61 76 65 20 73  |gs do not have s|
00061010  74 61 74 65 2d 64 65 70  65 6e 64 65 6e 74 20 65  |tate-dependent e|
00061020  6e 63 6f 64 69 6e 67 73  2e 00 00 00 44 41 54 41  |ncodings....DATA|
00061030  5e 02 00 00 44 65 73 6b  4c 69 62 3a 4d 65 6d 2e  |^...DeskLib:Mem.|
00061040  68 0a 56 65 72 73 69 6f  6e 3a 20 31 2e 30 31 20  |h.Version: 1.01 |
00061050  28 32 32 20 4d 61 79 20  31 39 39 34 29 0a 23 6c  |(22 May 1994).#l|
00061060  69 6e 65 0a 54 68 69 73  20 68 65 61 64 65 72 20  |ine.This header |
00061070  64 65 63 6c 61 72 65 73  20 66 75 6e 63 74 69 6f  |declares functio|
00061080  6e 73 20 61 6e 64 20 74  79 70 65 73 20 66 6f 72  |ns and types for|
00061090  20 64 79 6e 61 6d 69 63  20 6d 65 6d 6f 72 79 20  | dynamic memory |
000610a0  6d 61 6e 61 67 65 6d 65  6e 74 2e 0a 0a 46 75 6e  |management...Fun|
000610b0  63 74 69 6f 6e 73 3a 0a  0a 23 49 6e 64 65 6e 74  |ctions:..#Indent|
000610c0  20 32 20 0a 23 54 61 62  6c 65 20 63 6f 6c 75 6d  | 2 .#Table colum|
000610d0  6e 73 20 33 0a 3c 4d 65  6d 5f 49 6e 69 74 69 61  |ns 3.<Mem_Initia|
000610e0  6c 69 73 65 3e 0a 3c 4d  65 6d 5f 41 6c 6c 6f 63  |lise>.<Mem_Alloc|
000610f0  3e 0a 3c 4d 65 6d 5f 4d  69 64 45 78 74 65 6e 64  |>.<Mem_MidExtend|
00061100  3e 0a 3c 4d 65 6d 5f 4d  6f 76 65 41 6e 63 68 6f  |>.<Mem_MoveAncho|
00061110  72 3e 0a 3c 4d 65 6d 5f  46 72 65 65 3e 0a 3c 4d  |r>.<Mem_Free>.<M|
00061120  65 6d 5f 43 6f 6d 70 61  63 74 3e 0a 3c 4d 65 6d  |em_Compact>.<Mem|
00061130  5f 53 69 7a 65 3e 0a 3c  4d 65 6d 5f 43 68 65 63  |_Size>.<Mem_Chec|
00061140  6b 48 65 61 70 3e 0a 23  45 6e 64 54 61 62 6c 65  |kHeap>.#EndTable|
00061150  0a 23 49 6e 64 65 6e 74  20 30 0a 0a 54 79 70 65  |.#Indent 0..Type|
00061160  73 3a 0a 0a 23 49 6e 64  65 6e 74 20 31 34 20 0a  |s:..#Indent 14 .|
00061170  23 54 61 62 6c 65 20 31  20 32 31 0a 3c 6d 65 6d  |#Table 1 21.<mem|
00061180  5f 61 6e 63 68 6f 72 3e  0a 3c 6d 65 6d 5f 63 6f  |_anchor>.<mem_co|
00061190  6d 70 61 63 74 69 6f 6e  3e 0a 23 45 6e 64 54 61  |mpaction>.#EndTa|
000611a0  62 6c 65 0a 0a 23 49 6e  64 65 6e 74 20 30 0a 56  |ble..#Indent 0.V|
000611b0  61 72 69 61 62 6c 65 3a  0a 0a 7b 61 6c 69 67 6e  |ariable:..{align|
000611c0  20 63 65 6e 74 72 65 7d  3c 6d 65 6d 5f 61 75 74  | centre}<mem_aut|
000611d0  6f 63 6f 6d 70 61 63 74  3e 7b 61 6c 69 67 6e 7d  |ocompact>{align}|
000611e0  0a 0a 54 68 65 20 61 64  76 61 6e 74 61 67 65 20  |..The advantage |
000611f0  6f 66 20 74 68 65 73 65  20 66 75 6e 63 74 69 6f  |of these functio|
00061200  6e 20 6f 76 65 72 20 74  68 65 20 73 74 61 6e 64  |n over the stand|
00061210  61 72 64 20 41 4e 53 49  20 66 75 6e 63 74 69 6f  |ard ANSI functio|
00061220  6e 73 20 3c 6d 61 6c 6c  6f 63 3e 20 65 74 63 2c  |ns <malloc> etc,|
00061230  20 69 73 20 74 68 61 74  20 74 68 65 73 65 20 61  | is that these a|
00061240  64 6a 75 73 74 20 74 68  65 20 70 72 6f 67 72 61  |djust the progra|
00061250  6d 27 73 20 57 69 6d 70  53 6c 6f 74 20 61 73 20  |m's WimpSlot as |
00061260  6e 65 65 64 65 64 2c 20  62 6f 74 68 20 69 6e 63  |needed, both inc|
00061270  72 65 61 73 69 6e 67 20  61 6e 64 20 64 65 63 72  |reasing and decr|
00061280  65 61 73 69 6e 67 20 69  74 2e 00 00 44 49 52 24  |easing it...DIR$|
00061290  84 01 00 00 84 01 00 00  10 14 06 00 46 ff ff ff  |............F...|
000612a0  ad 14 40 25 e8 01 00 00  13 00 00 00 00 00 00 00  |..@%............|
000612b0  41 6c 6c 6f 63 00 00 00  f8 15 06 00 46 ff ff ff  |Alloc.......F...|
000612c0  c5 59 40 25 cf 00 00 00  13 00 00 00 00 00 00 00  |.Y@%............|
000612d0  61 6e 63 68 6f 72 00 00  c8 16 06 00 46 ff ff ff  |anchor......F...|
000612e0  70 a7 40 25 cb 01 00 00  13 00 00 00 00 00 00 00  |p.@%............|
000612f0  61 75 74 6f 63 6f 6d 70  61 63 74 00 94 18 06 00  |autocompact.....|
00061300  46 ff ff ff 55 4c 40 25  ea 00 00 00 13 00 00 00  |F...UL@%........|
00061310  00 00 00 00 43 68 65 63  6b 48 65 61 70 00 00 00  |....CheckHeap...|
00061320  80 19 06 00 46 ff ff ff  1d 43 40 25 cc 01 00 00  |....F....C@%....|
00061330  13 00 00 00 00 00 00 00  43 6f 6d 70 61 63 74 00  |........Compact.|
00061340  4c 1b 06 00 46 ff ff ff  6b d2 b5 22 86 00 00 00  |L...F...k.."....|
00061350  13 00 00 00 00 00 00 00  63 6f 6d 70 61 63 74 69  |........compacti|
00061360  6f 6e 00 00 d4 1b 06 00  46 ff ff ff 10 3e 40 25  |on......F....>@%|
00061370  0b 01 00 00 13 00 00 00  00 00 00 00 46 72 65 65  |............Free|
00061380  00 00 00 00 e0 1c 06 00  46 ff ff ff 84 0b 40 25  |........F.....@%|
00061390  b1 00 00 00 13 00 00 00  00 00 00 00 49 6e 69 74  |............Init|
000613a0  69 61 6c 69 73 65 00 00  94 1d 06 00 46 ff ff ff  |ialise......F...|
000613b0  d7 27 40 25 f1 01 00 00  13 00 00 00 00 00 00 00  |.'@%............|
000613c0  4d 69 64 45 78 74 65 6e  64 00 00 00 88 1f 06 00  |MidExtend.......|
000613d0  46 ff ff ff b5 37 40 25  05 02 00 00 13 00 00 00  |F....7@%........|
000613e0  00 00 00 00 4d 6f 76 65  41 6e 63 68 6f 72 00 00  |....MoveAnchor..|
000613f0  90 21 06 00 46 ff ff ff  ad 48 40 25 be 00 00 00  |.!..F....H@%....|
00061400  13 00 00 00 00 00 00 00  53 69 7a 65 00 00 00 00  |........Size....|
00061410  44 41 54 41 e8 01 00 00  4d 65 6d 5f 41 6c 6c 6f  |DATA....Mem_Allo|
00061420  63 0a 53 79 6e 74 61 78  3a 09 3c 42 4f 4f 4c 3e  |c.Syntax:.<BOOL>|
00061430  20 4d 65 6d 5f 41 6c 6c  6f 63 20 28 3c 6d 65 6d  | Mem_Alloc (<mem|
00061440  5f 61 6e 63 68 6f 72 3e  20 2a 61 6e 63 68 6f 72  |_anchor> *anchor|
00061450  2c 20 69 6e 74 20 73 69  7a 65 29 3b 0a 48 65 61  |, int size);.Hea|
00061460  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 4d 65  |der:.<DeskLib:Me|
00061470  6d 2e 68 3d 3e 4d 65 6d  3e 0a 0a 52 65 74 75 72  |m.h=>Mem>..Retur|
00061480  6e 73 3a 09 3c 54 52 55  45 3e 20 69 66 20 73 75  |ns:.<TRUE> if su|
00061490  63 63 65 65 64 65 64 2e  0a 0a 54 68 69 73 20 66  |cceeded...This f|
000614a0  75 6e 63 74 69 6f 6e 20  61 74 74 65 6d 70 74 73  |unction attempts|
000614b0  20 74 6f 20 61 6c 6c 6f  63 61 74 65 20 74 68 65  | to allocate the|
000614c0  20 67 69 76 65 6e 20 61  6d 6f 75 6e 74 20 6f 66  | given amount of|
000614d0  20 6d 65 6d 6f 72 79 20  28 7b 2f 7d 73 69 7a 65  | memory ({/}size|
000614e0  7b 2f 7d 20 62 79 74 65  73 29 20 69 6e 20 74 68  |{/} bytes) in th|
000614f0  65 20 4d 65 6d 20 68 65  61 70 2e 20 54 68 65 20  |e Mem heap. The |
00061500  61 6e 63 68 6f 72 20 77  68 6f 73 65 20 70 6f 69  |anchor whose poi|
00061510  6e 74 65 72 20 69 73 20  67 69 76 65 6e 20 77 69  |nter is given wi|
00061520  6c 6c 20 70 6f 69 6e 74  20 74 6f 20 74 68 69 73  |ll point to this|
00061530  20 62 6c 6f 63 6b 2c 20  6f 72 20 77 69 6c 6c 20  | block, or will |
00061540  63 6f 6e 74 61 69 6e 20  3c 4e 55 4c 4c 3e 20 69  |contain <NULL> i|
00061550  66 20 74 68 65 20 66 75  6e 63 74 69 6f 6e 20 66  |f the function f|
00061560  61 69 6c 73 2e 20 54 68  65 20 61 6c 6c 6f 63 61  |ails. The alloca|
00061570  74 65 64 20 62 6c 6f 63  6b 20 69 73 20 67 75 61  |ted block is gua|
00061580  72 61 6e 74 65 65 64 20  74 6f 20 62 65 20 77 6f  |ranteed to be wo|
00061590  72 64 2d 61 6c 69 67 6e  65 64 2e 0a 0a 44 65 70  |rd-aligned...Dep|
000615a0  65 6e 64 69 6e 67 20 6f  6e 20 74 68 65 20 73 65  |ending on the se|
000615b0  74 74 69 6e 67 20 6f 66  20 3c 6d 65 6d 5f 61 75  |tting of <mem_au|
000615c0  74 6f 63 6f 6d 70 61 63  74 3e 2c 20 74 68 69 73  |tocompact>, this|
000615d0  20 66 75 6e 63 74 69 6f  6e 20 6d 61 79 20 72 65  | function may re|
000615e0  6c 6f 63 61 74 65 20 6f  74 68 65 72 20 4d 65 6d  |locate other Mem|
000615f0  20 62 6c 6f 63 6b 73 2e  44 41 54 41 cf 00 00 00  | blocks.DATA....|
00061600  6d 65 6d 5f 61 6e 63 68  6f 72 0a 54 68 65 20 74  |mem_anchor.The t|
00061610  79 70 65 20 7b 2a 7d 6d  65 6d 5f 61 6e 63 68 6f  |ype {*}mem_ancho|
00061620  72 7b 2a 7d 20 69 73 20  64 65 66 69 6e 65 64 20  |r{*} is defined |
00061630  69 6e 20 3c 44 65 73 6b  4c 69 62 3a 4d 65 6d 2e  |in <DeskLib:Mem.|
00061640  68 3d 3e 4d 65 6d 3e 20  61 73 20 61 20 74 79 70  |h=>Mem> as a typ|
00061650  65 20 63 61 70 61 62 6c  65 20 6f 66 20 68 6f 6c  |e capable of hol|
00061660  64 69 6e 67 20 61 20 70  6f 69 6e 74 65 72 20 74  |ding a pointer t|
00061670  6f 20 61 20 62 6c 6f 63  6b 20 6f 66 20 6d 65 6d  |o a block of mem|
00061680  6f 72 79 20 61 6c 6c 6f  63 61 74 65 64 20 62 79  |ory allocated by|
00061690  20 3c 4d 65 6d 5f 41 6c  6c 6f 63 3e 2e 20 49 74  | <Mem_Alloc>. It|
000616a0  20 69 73 20 61 63 74 75  61 6c 6c 79 20 64 65 66  | is actually def|
000616b0  69 6e 65 64 20 61 73 20  61 20 7b 2f 7d 76 6f 69  |ined as a {/}voi|
000616c0  64 20 2a 7b 2f 7d 2e 00  44 41 54 41 cb 01 00 00  |d *{/}..DATA....|
000616d0  6d 65 6d 5f 61 75 74 6f  63 6f 6d 70 61 63 74 0a  |mem_autocompact.|
000616e0  54 68 69 73 20 76 61 72  69 61 62 6c 65 20 69 73  |This variable is|
000616f0  20 64 65 63 6c 61 72 65  64 20 62 79 20 3c 44 65  | declared by <De|
00061700  73 6b 4c 69 62 3a 4d 65  6d 2e 68 3d 3e 4d 65 6d  |skLib:Mem.h=>Mem|
00061710  3e 20 61 6e 64 20 64 65  66 69 6e 65 73 20 74 68  |> and defines th|
00061720  65 20 65 78 74 65 6e 74  20 74 6f 20 77 68 69 63  |e extent to whic|
00061730  68 20 4d 65 6d 20 77 69  6c 6c 20 61 75 74 6f 2d  |h Mem will auto-|
00061740  63 6f 6d 70 61 63 74 2e  20 49 74 20 63 61 6e 20  |compact. It can |
00061750  74 61 6b 65 20 76 61 6c  75 65 73 3a 0a 0a 20 09  |take values:.. .|
00061760  6d 65 6d 5f 4e 4f 43 4f  4d 50 41 43 54 20 3d 20  |mem_NOCOMPACT = |
00061770  30 09 3a 09 43 6f 6d 70  61 63 74 20 6f 6e 6c 79  |0.:.Compact only|
00061780  20 77 68 65 6e 20 3c 4d  65 6d 5f 43 6f 6d 70 61  | when <Mem_Compa|
00061790  63 74 3e 20 69 73 20 63  61 6c 6c 65 64 2e 0a 20  |ct> is called.. |
000617a0  09 6d 65 6d 5f 46 41 53  54 43 4f 4d 50 41 43 54  |.mem_FASTCOMPACT|
000617b0  0a 7b 77 72 61 70 20 6f  66 66 7d 20 09 6d 65 6d  |.{wrap off} .mem|
000617c0  5f 50 41 52 54 43 4f 4d  50 41 43 54 20 3d 20 31  |_PARTCOMPACT = 1|
000617d0  09 3a 09 2a 2a 20 44 45  46 41 55 4c 54 20 53 45  |.:.** DEFAULT SE|
000617e0  54 54 49 4e 47 20 2a 2a  0a 7b 77 72 61 70 7d 20  |TTING **.{wrap} |
000617f0  09 09 09 20 09 20 09 09  43 6f 6d 70 61 63 74 20  |... . ..Compact |
00061800  6f 6e 6c 79 20 77 68 65  6e 20 6e 65 63 65 73 73  |only when necess|
00061810  61 72 79 20 74 6f 20 61  6c 6c 6f 63 61 74 65 20  |ary to allocate |
00061820  6d 65 6d 6f 72 79 2e 0a  20 09 6d 65 6d 5f 46 55  |memory.. .mem_FU|
00061830  4c 4c 43 4f 4d 50 41 43  54 20 3d 20 32 09 3a 09  |LLCOMPACT = 2.:.|
00061840  43 6f 6d 70 61 63 74 20  65 76 65 72 79 20 74 69  |Compact every ti|
00061850  6d 65 20 73 70 61 63 65  20 69 73 20 66 72 65 65  |me space is free|
00061860  64 2e 0a 0a 43 68 61 6e  67 65 73 20 74 6f 20 74  |d...Changes to t|
00061870  68 69 73 20 76 61 72 69  61 62 6c 65 20 74 61 6b  |his variable tak|
00061880  65 20 69 6d 6d 65 64 69  61 74 65 20 65 66 66 65  |e immediate effe|
00061890  63 74 2e 00 44 41 54 41  ea 00 00 00 4d 65 6d 5f  |ct..DATA....Mem_|
000618a0  43 68 65 63 6b 48 65 61  70 0a 53 79 6e 74 61 78  |CheckHeap.Syntax|
000618b0  3a 09 3c 42 4f 4f 4c 3e  20 4d 65 6d 5f 43 68 65  |:.<BOOL> Mem_Che|
000618c0  63 6b 48 65 61 70 20 28  76 6f 69 64 29 3b 0a 48  |ckHeap (void);.H|
000618d0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
000618e0  4d 65 6d 2e 68 3d 3e 4d  65 6d 3e 0a 0a 52 65 74  |Mem.h=>Mem>..Ret|
000618f0  75 72 6e 73 3a 09 3c 54  52 55 45 3e 20 69 66 20  |urns:.<TRUE> if |
00061900  68 65 61 70 20 69 73 20  76 61 6c 69 64 2e 0a 0a  |heap is valid...|
00061910  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 73 20 63  |This functions c|
00061920  68 65 63 6b 73 20 74 68  65 20 68 65 61 70 20 64  |hecks the heap d|
00061930  61 74 61 20 73 74 72 75  63 74 75 72 65 2c 20 69  |ata structure, i|
00061940  65 20 63 68 65 63 6b 73  20 74 68 61 74 20 61 6c  |e checks that al|
00061950  6c 20 6c 69 6e 6b 73 20  61 72 65 20 69 6e 74 61  |l links are inta|
00061960  63 74 20 61 6e 64 20 61  6e 63 68 6f 72 73 20 61  |ct and anchors a|
00061970  72 65 20 63 6f 6e 73 69  73 74 65 6e 74 2e 00 00  |re consistent...|
00061980  44 41 54 41 cc 01 00 00  4d 65 6d 5f 43 6f 6d 70  |DATA....Mem_Comp|
00061990  61 63 74 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |act.Syntax:.void|
000619a0  20 4d 65 6d 5f 43 6f 6d  70 61 63 74 20 28 76 6f  | Mem_Compact (vo|
000619b0  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |id);.Header:.<De|
000619c0  73 6b 4c 69 62 3a 4d 65  6d 2e 68 3d 3e 4d 65 6d  |skLib:Mem.h=>Mem|
000619d0  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
000619e0  20 63 6f 6d 70 61 63 74  73 20 74 68 65 20 4d 65  | compacts the Me|
000619f0  6d 20 77 6f 72 6b 73 70  61 63 65 2c 20 6d 6f 76  |m workspace, mov|
00061a00  69 6e 67 20 61 6c 6c 20  66 72 65 65 20 73 70 61  |ing all free spa|
00061a10  63 65 20 74 6f 20 74 68  65 20 65 6e 64 20 6f 66  |ce to the end of|
00061a20  20 74 68 65 20 77 6f 72  6b 73 70 61 63 65 20 61  | the workspace a|
00061a30  6e 64 20 66 72 65 65 69  6e 67 20 6d 65 6d 6f 72  |nd freeing memor|
00061a40  79 20 62 61 63 6b 20 74  6f 20 74 68 65 20 72 65  |y back to the re|
00061a50  73 74 20 6f 66 20 74 68  65 20 57 49 4d 50 20 69  |st of the WIMP i|
00061a60  66 20 70 6f 73 73 69 62  6c 65 2e 20 41 6e 63 68  |f possible. Anch|
00061a70  6f 72 73 20 77 69 6c 6c  20 62 65 20 75 70 64 61  |ors will be upda|
00061a80  74 65 64 20 74 6f 20 72  65 66 6c 65 63 74 20 74  |ted to reflect t|
00061a90  68 65 20 6e 65 77 20 70  6f 73 69 74 69 6f 6e 73  |he new positions|
00061aa0  20 6f 66 20 62 6c 6f 63  6b 73 2e 0a 0a 49 64 65  | of blocks...Ide|
00061ab0  61 6c 6c 79 2c 20 74 68  69 73 20 73 68 6f 75 6c  |ally, this shoul|
00061ac0  64 20 62 65 20 63 61 6c  6c 65 64 20 62 65 66 6f  |d be called befo|
00061ad0  72 65 20 65 61 63 68 20  74 69 6d 65 20 79 6f 75  |re each time you|
00061ae0  20 70 6f 6c 6c 20 74 68  65 20 57 49 4d 50 2e 20  | poll the WIMP. |
00061af0  49 74 20 6d 61 79 20 61  6c 73 6f 20 62 65 20 63  |It may also be c|
00061b00  61 6c 6c 65 64 20 62 79  20 6f 74 68 65 72 20 4d  |alled by other M|
00061b10  65 6d 20 66 75 6e 63 74  69 6f 6e 73 2c 20 64 65  |em functions, de|
00061b20  70 65 6e 64 69 6e 67 20  6f 6e 20 74 68 65 20 73  |pending on the s|
00061b30  65 74 74 69 6e 67 20 6f  66 20 3c 6d 65 6d 5f 61  |etting of <mem_a|
00061b40  75 74 6f 63 6f 6d 70 61  63 74 3e 2e 44 41 54 41  |utocompact>.DATA|
00061b50  86 00 00 00 6d 65 6d 5f  63 6f 6d 70 61 63 74 69  |....mem_compacti|
00061b60  6f 6e 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |on.This type is |
00061b70  64 65 66 69 6e 65 64 20  62 79 20 3c 44 65 73 6b  |defined by <Desk|
00061b80  4c 69 62 3a 4d 65 6d 2e  68 3d 3e 4d 65 6d 3e 2e  |Lib:Mem.h=>Mem>.|
00061b90  20 49 74 20 69 73 20 61  6e 0a 65 6e 75 6d 65 72  | It is an.enumer|
00061ba0  61 74 65 64 20 74 79 70  65 20 75 73 65 64 20 66  |ated type used f|
00061bb0  6f 72 20 74 68 65 20 3c  6d 65 6d 5f 61 75 74 6f  |or the <mem_auto|
00061bc0  63 6f 6d 70 61 63 74 3e  0a 76 61 72 69 61 62 6c  |compact>.variabl|
00061bd0  65 2e 00 00 44 41 54 41  0b 01 00 00 4d 65 6d 5f  |e...DATA....Mem_|
00061be0  46 72 65 65 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |Free.Syntax:.voi|
00061bf0  64 20 4d 65 6d 5f 46 72  65 65 20 28 3c 6d 65 6d  |d Mem_Free (<mem|
00061c00  5f 61 6e 63 68 6f 72 3e  20 2a 61 6e 63 68 6f 72  |_anchor> *anchor|
00061c10  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00061c20  4c 69 62 3a 4d 65 6d 2e  68 3d 3e 4d 65 6d 3e 0a  |Lib:Mem.h=>Mem>.|
00061c30  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
00061c40  65 6c 65 61 73 65 73 20  61 20 62 6c 6f 63 6b 20  |eleases a block |
00061c50  6f 66 20 6d 65 6d 6f 72  79 20 77 68 6f 73 65 20  |of memory whose |
00061c60  61 6e 63 68 6f 72 20 69  73 20 70 6f 69 6e 74 65  |anchor is pointe|
00061c70  64 20 74 6f 2e 20 54 68  65 20 61 6e 63 68 6f 72  |d to. The anchor|
00061c80  20 77 69 6c 6c 20 6e 6f  77 20 63 6f 6e 74 61 69  | will now contai|
00061c90  6e 20 3c 4e 55 4c 4c 3e  2e 0a 0a 54 68 69 73 20  |n <NULL>...This |
00061ca0  63 61 6c 6c 20 6d 61 79  20 72 65 6c 6f 63 61 74  |call may relocat|
00061cb0  65 20 6f 74 68 65 72 20  62 6c 6f 63 6b 73 2c 20  |e other blocks, |
00061cc0  61 63 63 6f 72 64 69 6e  67 20 74 6f 20 3c 6d 65  |according to <me|
00061cd0  6d 5f 61 75 74 6f 63 6f  6d 70 61 63 74 3e 2e 00  |m_autocompact>..|
00061ce0  44 41 54 41 b1 00 00 00  4d 65 6d 5f 49 6e 69 74  |DATA....Mem_Init|
00061cf0  69 61 6c 69 73 65 0a 53  79 6e 74 61 78 3a 09 3c  |ialise.Syntax:.<|
00061d00  42 4f 4f 4c 3e 20 4d 65  6d 5f 49 6e 69 74 69 61  |BOOL> Mem_Initia|
00061d10  6c 69 73 65 20 28 76 6f  69 64 29 3b 0a 48 65 61  |lise (void);.Hea|
00061d20  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 4d 65  |der:.<DeskLib:Me|
00061d30  6d 2e 68 3d 3e 4d 65 6d  3e 0a 0a 52 65 74 75 72  |m.h=>Mem>..Retur|
00061d40  6e 73 3a 09 3c 46 41 4c  53 45 3e 20 69 66 20 69  |ns:.<FALSE> if i|
00061d50  74 20 66 61 69 6c 73 2e  0a 0a 54 68 69 73 20 66  |t fails...This f|
00061d60  75 6e 63 74 69 6f 6e 20  69 6e 69 74 69 61 6c 69  |unction initiali|
00061d70  73 65 73 20 74 68 65 20  4d 65 6d 20 73 79 73 74  |ses the Mem syst|
00061d80  65 6d 20 72 65 61 64 79  20 66 6f 72 20 75 73 65  |em ready for use|
00061d90  2e 00 00 00 44 41 54 41  f1 01 00 00 4d 65 6d 5f  |....DATA....Mem_|
00061da0  4d 69 64 45 78 74 65 6e  64 0a 53 79 6e 74 61 78  |MidExtend.Syntax|
00061db0  3a 09 3c 42 4f 4f 4c 3e  20 4d 65 6d 5f 4d 69 64  |:.<BOOL> Mem_Mid|
00061dc0  45 78 74 65 6e 64 20 28  3c 6d 65 6d 5f 61 6e 63  |Extend (<mem_anc|
00061dd0  68 6f 72 3e 20 2a 61 6e  63 68 6f 72 2c 20 69 6e  |hor> *anchor, in|
00061de0  74 20 61 74 2c 20 69 6e  74 20 62 79 29 3b 0a 48  |t at, int by);.H|
00061df0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00061e00  4d 65 6d 2e 68 3d 3e 4d  65 6d 3e 0a 0a 52 65 74  |Mem.h=>Mem>..Ret|
00061e10  75 72 6e 73 3a 09 3c 54  52 55 45 3e 20 69 66 20  |urns:.<TRUE> if |
00061e20  73 75 63 63 65 73 73 66  75 6c 2e 0a 0a 54 68 69  |successful...Thi|
00061e30  73 20 66 75 6e 63 74 69  6f 6e 20 61 74 74 65 6d  |s function attem|
00061e40  70 74 73 20 74 6f 20 61  6c 74 65 72 20 74 68 65  |pts to alter the|
00061e50  20 73 69 7a 65 20 6f 66  20 61 20 4d 65 6d 20 62  | size of a Mem b|
00061e60  6c 6f 63 6b 2c 20 62 79  20 69 6e 73 65 72 74 69  |lock, by inserti|
00061e70  6e 67 20 61 20 62 6c 6f  63 6b 20 6f 66 20 2f 62  |ng a block of /b|
00061e80  79 2f 20 62 79 74 65 73  20 61 74 20 6f 66 66 73  |y/ bytes at offs|
00061e90  65 74 20 2f 61 74 2f 20  77 69 74 68 69 6e 20 74  |et /at/ within t|
00061ea0  68 65 20 62 6c 6f 63 6b  2e 20 49 66 20 2f 62 79  |he block. If /by|
00061eb0  2f 20 69 73 20 6e 65 67  61 74 69 76 65 20 74 68  |/ is negative th|
00061ec0  65 6e 20 74 68 65 20 7b  2f 7d 2d 62 79 7b 2f 7d  |en the {/}-by{/}|
00061ed0  20 62 79 74 65 73 20 5f  62 65 6c 6f 77 5f 20 2f  | bytes _below_ /|
00061ee0  61 74 2f 20 77 69 6c 6c  20 62 65 20 64 65 6c 65  |at/ will be dele|
00061ef0  74 65 64 2e 20 45 69 74  68 65 72 20 77 61 79 2c  |ted. Either way,|
00061f00  20 65 78 69 73 74 69 6e  67 20 64 61 74 61 20 28  | existing data (|
00061f10  65 78 63 65 70 74 20 74  68 61 74 20 64 65 6c 65  |except that dele|
00061f20  74 65 64 29 20 69 73 20  70 72 65 73 65 72 76 65  |ted) is preserve|
00061f30  64 2e 0a 0a 54 68 69 73  20 63 61 6c 6c 20 6d 61  |d...This call ma|
00061f40  79 20 72 65 6c 6f 63 61  74 65 20 6f 74 68 65 72  |y relocate other|
00061f50  20 62 6c 6f 63 6b 73 2c  20 64 65 70 65 6e 64 69  | blocks, dependi|
00061f60  6e 67 20 6f 6e 20 74 68  65 20 76 61 6c 75 65 20  |ng on the value |
00061f70  6f 66 20 3c 6d 65 6d 5f  61 75 74 6f 63 6f 6d 70  |of <mem_autocomp|
00061f80  61 63 74 3e 2e 00 00 00  44 41 54 41 05 02 00 00  |act>....DATA....|
00061f90  4d 65 6d 5f 4d 6f 76 65  41 6e 63 68 6f 72 0a 53  |Mem_MoveAnchor.S|
00061fa0  79 6e 74 61 78 3a 09 76  6f 69 64 20 4d 65 6d 5f  |yntax:.void Mem_|
00061fb0  4d 6f 76 65 41 6e 63 68  6f 72 20 28 3c 6d 65 6d  |MoveAnchor (<mem|
00061fc0  5f 61 6e 63 68 6f 72 3e  20 2a 66 72 6f 6d 2c 20  |_anchor> *from, |
00061fd0  3c 6d 65 6d 5f 61 6e 63  68 6f 72 3e 20 2a 74 6f  |<mem_anchor> *to|
00061fe0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00061ff0  4c 69 62 3a 4d 65 6d 2e  68 3d 3e 4d 65 6d 3e 0a  |Lib:Mem.h=>Mem>.|
00062000  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
00062010  6f 70 69 65 73 20 6d 6f  76 65 73 20 61 6e 20 61  |opies moves an a|
00062020  6e 63 68 6f 72 20 66 72  6f 6d 20 6f 6e 65 20 76  |nchor from one v|
00062030  61 72 69 61 62 6c 65 20  74 6f 20 61 6e 6f 74 68  |ariable to anoth|
00062040  65 72 2e 20 54 68 69 73  20 69 73 20 6e 65 63 65  |er. This is nece|
00062050  73 73 61 72 79 20 62 65  63 61 75 73 65 2c 20 64  |ssary because, d|
00062060  75 65 20 74 6f 20 74 68  65 20 72 65 6c 6f 63 61  |ue to the reloca|
00062070  74 69 6e 67 20 6e 61 74  75 72 65 20 6f 66 20 4d  |ting nature of M|
00062080  65 6d 20 63 68 75 6e 6b  73 2c 20 61 6e 63 68 6f  |em chunks, ancho|
00062090  72 73 20 61 72 65 20 61  75 74 6f 6d 61 74 69 63  |rs are automatic|
000620a0  61 6c 6c 79 20 75 70 64  61 74 65 64 2e 20 49 66  |ally updated. If|
000620b0  20 79 6f 75 20 73 69 6d  70 6c 79 20 63 6f 70 79  | you simply copy|
000620c0  20 74 68 65 20 76 61 6c  75 65 2c 20 74 68 65 20  | the value, the |
000620d0  6e 65 77 20 61 6e 63 68  6f 72 20 77 69 6c 6c 20  |new anchor will |
000620e0  6e 6f 74 20 62 65 20 75  70 64 61 74 65 64 2e 0a  |not be updated..|
000620f0  0a 49 66 20 74 68 69 73  20 66 75 6e 63 74 69 6f  |.If this functio|
00062100  6e 20 77 6f 72 6b 73 2c  20 74 68 65 20 61 6e 63  |n works, the anc|
00062110  68 6f 72 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |hor pointed to b|
00062120  79 20 2f 66 72 6f 6d 2f  20 77 69 6c 6c 20 63 6f  |y /from/ will co|
00062130  6e 74 61 69 6e 20 3c 4e  55 4c 4c 3e 2c 20 61 6e  |ntain <NULL>, an|
00062140  64 20 74 68 65 20 61 6e  63 68 6f 72 20 70 6f 69  |d the anchor poi|
00062150  6e 74 65 64 20 74 6f 20  62 79 20 2f 74 6f 2f 20  |nted to by /to/ |
00062160  77 69 6c 6c 20 63 6f 6e  74 61 69 6e 20 74 68 65  |will contain the|
00062170  20 70 72 65 76 69 6f 75  73 20 63 6f 6e 74 65 6e  | previous conten|
00062180  74 73 20 6f 66 20 2f 66  72 6f 6d 2f 2e 00 00 00  |ts of /from/....|
00062190  44 41 54 41 be 00 00 00  4d 65 6d 5f 53 69 7a 65  |DATA....Mem_Size|
000621a0  0a 53 79 6e 74 61 78 3a  09 69 6e 74 20 4d 65 6d  |.Syntax:.int Mem|
000621b0  5f 53 69 7a 65 20 28 3c  6d 65 6d 5f 61 6e 63 68  |_Size (<mem_anch|
000621c0  6f 72 3e 20 2a 61 6e 63  68 6f 72 29 3b 0a 48 65  |or> *anchor);.He|
000621d0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 4d  |ader:.<DeskLib:M|
000621e0  65 6d 2e 68 3d 3e 4d 65  6d 3e 0a 0a 52 65 74 75  |em.h=>Mem>..Retu|
000621f0  72 6e 73 3a 09 53 69 7a  65 20 69 6e 20 62 79 74  |rns:.Size in byt|
00062200  65 73 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |es..This functio|
00062210  6e 20 66 69 6e 64 73 20  74 68 65 20 73 69 7a 65  |n finds the size|
00062220  20 6f 66 20 61 20 4d 65  6d 20 62 6c 6f 63 6b 20  | of a Mem block |
00062230  77 68 6f 73 65 20 61 6e  63 68 6f 72 20 70 6f 69  |whose anchor poi|
00062240  6e 74 65 72 20 69 73 20  67 69 76 65 6e 2e 00 00  |nter is given...|
00062250  44 41 54 41 2d 01 00 00  6d 65 6d 63 68 72 0a 53  |DATA-...memchr.S|
00062260  79 6e 74 61 78 3a 09 76  6f 69 64 20 2a 6d 65 6d  |yntax:.void *mem|
00062270  63 68 72 20 28 76 6f 69  64 20 2a 70 74 72 2c 20  |chr (void *ptr, |
00062280  69 6e 74 20 63 2c 20 3c  73 69 7a 65 5f 74 3e 20  |int c, <size_t> |
00062290  6e 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 74 72  |n);.Header:.<str|
000622a0  69 6e 67 2e 68 3d 3e 73  74 72 69 6e 67 3e 0a 0a  |ing.h=>string>..|
000622b0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
000622c0  20 74 6f 20 74 68 65 20  66 6f 75 6e 64 20 63 68  | to the found ch|
000622d0  61 72 61 63 74 65 72 2c  20 6f 72 20 61 20 6e 75  |aracter, or a nu|
000622e0  6c 6c 20 70 6f 69 6e 74  65 72 20 69 66 20 6e 6f  |ll pointer if no|
000622f0  74 20 66 6f 75 6e 64 2e  0a 0a 54 68 69 73 20 66  |t found...This f|
00062300  75 6e 63 74 69 6f 6e 20  73 65 61 72 63 68 65 73  |unction searches|
00062310  20 66 6f 72 20 2f 63 2f  20 28 63 6f 6e 76 65 72  | for /c/ (conver|
00062320  74 65 64 20 74 6f 20 61  6e 20 7b 2f 7d 75 6e 73  |ted to an {/}uns|
00062330  69 67 6e 65 64 20 63 68  61 72 7b 2f 7d 29 20 69  |igned char{/}) i|
00062340  6e 20 74 68 65 20 66 69  72 73 74 20 2f 6e 2f 20  |n the first /n/ |
00062350  63 68 61 72 61 63 74 65  72 73 20 6f 66 20 74 68  |characters of th|
00062360  65 20 6f 62 6a 65 63 74  20 70 6f 69 6e 74 65 64  |e object pointed|
00062370  20 74 6f 20 62 79 20 2f  70 74 72 2f 2e 00 00 00  | to by /ptr/....|
00062380  44 41 54 41 74 01 00 00  6d 65 6d 63 6d 70 0a 53  |DATAt...memcmp.S|
00062390  79 6e 74 61 78 3a 09 69  6e 74 20 6d 65 6d 63 6d  |yntax:.int memcm|
000623a0  70 20 28 76 6f 69 64 20  2a 70 74 72 31 2c 20 76  |p (void *ptr1, v|
000623b0  6f 69 64 20 2a 70 74 72  32 2c 20 3c 73 69 7a 65  |oid *ptr2, <size|
000623c0  5f 74 3e 20 6e 29 3b 0a  48 65 61 64 65 72 3a 09  |_t> n);.Header:.|
000623d0  3c 73 74 72 69 6e 67 2e  68 3d 3e 73 74 72 69 6e  |<string.h=>strin|
000623e0  67 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 47 72 65  |g>..Returns:.Gre|
000623f0  61 74 65 72 20 74 68 61  6e 2c 20 6c 65 73 73 20  |ater than, less |
00062400  74 68 61 6e 20 6f 72 20  65 71 75 61 6c 20 74 6f  |than or equal to|
00062410  20 7a 65 72 6f 2c 20 64  65 70 65 6e 64 69 6e 67  | zero, depending|
00062420  20 69 66 20 74 68 65 20  6f 62 6a 65 63 74 20 70  | if the object p|
00062430  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 7b 2f 7d  |ointed to by {/}|
00062440  70 74 72 31 7b 2f 7d 20  69 73 20 67 72 65 61 74  |ptr1{/} is great|
00062450  65 72 20 74 68 61 6e 2c  20 6c 65 73 73 20 74 68  |er than, less th|
00062460  61 6e 20 6f 72 20 65 71  75 61 6c 20 74 6f 20 74  |an or equal to t|
00062470  68 65 20 6f 62 6a 65 63  74 20 70 6f 69 6e 74 65  |he object pointe|
00062480  64 20 74 6f 20 62 79 20  7b 2f 7d 70 74 72 32 7b  |d to by {/}ptr2{|
00062490  2f 7d 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |/}...This functi|
000624a0  6f 6e 20 63 6f 6d 70 61  72 65 73 20 74 68 65 20  |on compares the |
000624b0  66 69 72 73 74 20 2f 6e  2f 20 63 68 61 72 61 63  |first /n/ charac|
000624c0  74 65 72 73 20 6f 66 20  65 61 63 68 20 6f 62 6a  |ters of each obj|
000624d0  65 63 74 20 61 6e 64 20  72 65 74 75 72 6e 73 20  |ect and returns |
000624e0  61 20 76 61 6c 75 65 20  61 63 63 6f 72 64 69 6e  |a value accordin|
000624f0  67 6c 79 2e 44 41 54 41  20 01 00 00 6d 65 6d 63  |gly.DATA ...memc|
00062500  70 79 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |py.Syntax:.void |
00062510  2a 6d 65 6d 63 70 79 20  28 76 6f 69 64 20 2a 70  |*memcpy (void *p|
00062520  74 72 31 2c 20 76 6f 69  64 20 2a 70 74 72 32 2c  |tr1, void *ptr2,|
00062530  20 3c 73 69 7a 65 5f 74  3e 20 6e 29 3b 0a 48 65  | <size_t> n);.He|
00062540  61 64 65 72 3a 09 3c 73  74 72 69 6e 67 2e 68 3d  |ader:.<string.h=|
00062550  3e 73 74 72 69 6e 67 3e  0a 0a 52 65 74 75 72 6e  |>string>..Return|
00062560  73 3a 09 70 74 72 31 0a  0a 54 68 69 73 20 66 75  |s:.ptr1..This fu|
00062570  6e 63 74 69 6f 6e 20 63  6f 70 69 65 73 20 2f 6e  |nction copies /n|
00062580  2f 20 63 68 61 72 61 63  74 65 72 73 20 66 72 6f  |/ characters fro|
00062590  6d 20 7b 2f 7d 70 74 72  32 7b 2f 7d 20 74 6f 20  |m {/}ptr2{/} to |
000625a0  7b 2f 7d 70 74 72 31 7b  2f 7d 2e 20 54 68 65 20  |{/}ptr1{/}. The |
000625b0  61 72 65 61 73 20 74 6f  20 62 65 20 63 6f 70 69  |areas to be copi|
000625c0  65 64 20 6d 75 73 74 20  6e 6f 74 20 6f 76 65 72  |ed must not over|
000625d0  6c 61 70 2e 20 49 66 20  79 6f 75 20 77 61 6e 74  |lap. If you want|
000625e0  20 74 6f 20 63 6f 70 79  20 62 65 74 77 65 65 6e  | to copy between|
000625f0  20 6f 76 65 72 6c 61 70  70 69 6e 67 20 6f 62 6a  | overlapping obj|
00062600  65 63 74 73 2c 20 75 73  65 20 3c 6d 65 6d 6d 6f  |ects, use <memmo|
00062610  76 65 3e 2e 44 41 54 41  70 01 00 00 6d 65 6d 6d  |ve>.DATAp...memm|
00062620  6f 76 65 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |ove.Syntax:.void|
00062630  20 2a 6d 65 6d 6d 6f 76  65 20 28 76 6f 69 64 20  | *memmove (void |
00062640  2a 70 74 72 31 2c 20 76  6f 69 64 20 2a 70 74 72  |*ptr1, void *ptr|
00062650  32 2c 20 3c 73 69 7a 65  5f 74 3e 20 6e 29 3b 0a  |2, <size_t> n);.|
00062660  48 65 61 64 65 72 3a 09  3c 73 74 72 69 6e 67 2e  |Header:.<string.|
00062670  68 3d 3e 73 74 72 69 6e  67 3e 0a 0a 52 65 74 75  |h=>string>..Retu|
00062680  72 6e 73 3a 09 70 74 72  31 0a 0a 54 68 69 73 20  |rns:.ptr1..This |
00062690  66 75 6e 63 74 69 6f 6e  20 63 6f 70 69 65 73 20  |function copies |
000626a0  2f 6e 2f 20 63 68 61 72  61 63 74 65 72 73 20 66  |/n/ characters f|
000626b0  72 6f 6d 20 7b 2f 7d 70  74 72 32 7b 2f 7d 20 74  |rom {/}ptr2{/} t|
000626c0  6f 20 7b 2f 7d 70 74 72  31 7b 2f 7d 2e 20 54 68  |o {/}ptr1{/}. Th|
000626d0  65 20 61 72 65 61 73 20  74 6f 20 62 65 20 63 6f  |e areas to be co|
000626e0  70 69 65 64 20 6d 61 79  20 6f 76 65 72 6c 61 70  |pied may overlap|
000626f0  2c 20 62 65 63 61 75 73  65 20 69 74 20 66 69 72  |, because it fir|
00062700  73 74 20 6f 66 20 61 6c  6c 20 63 6f 70 69 65 73  |st of all copies|
00062710  20 66 72 6f 6d 20 7b 2f  7d 70 74 72 32 7b 2f 7d  | from {/}ptr2{/}|
00062720  20 74 6f 20 61 20 74 65  6d 70 6f 72 61 72 79 20  | to a temporary |
00062730  62 75 66 66 65 72 20 61  6e 64 20 74 68 65 6e 20  |buffer and then |
00062740  63 6f 70 69 65 73 20 66  72 6f 6d 20 74 68 65 72  |copies from ther|
00062750  65 20 74 6f 20 7b 2f 7d  70 74 72 31 7b 2f 7d 2e  |e to {/}ptr1{/}.|
00062760  20 54 68 69 73 20 6d 61  6b 65 73 20 69 74 20 73  | This makes it s|
00062770  6c 6f 77 65 72 20 74 68  61 6e 20 3c 6d 65 6d 63  |lower than <memc|
00062780  70 79 3e 2e 44 41 54 41  e9 00 00 00 4d 65 6d 6f  |py>.DATA....Memo|
00062790  72 79 44 75 6d 70 0a 53  79 6e 74 61 78 3a 09 76  |ryDump.Syntax:.v|
000627a0  6f 69 64 20 4d 65 6d 6f  72 79 44 75 6d 70 20 28  |oid MemoryDump (|
000627b0  76 6f 69 64 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |void);.Header:.<|
000627c0  54 69 6d 73 4c 69 62 3a  4d 61 6c 6c 6f 63 44 62  |TimsLib:MallocDb|
000627d0  75 67 2e 68 3d 3e 4d 61  6c 6c 6f 63 44 62 75 67  |ug.h=>MallocDbug|
000627e0  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
000627f0  20 73 63 61 6e 73 20 74  68 72 6f 75 67 68 20 74  | scans through t|
00062800  68 65 20 6d 65 6d 6f 72  79 20 61 6c 6c 6f 63 61  |he memory alloca|
00062810  74 65 64 20 62 79 20 3c  4d 61 6c 6c 6f 63 44 62  |ted by <MallocDb|
00062820  75 67 3d 3e 4d 61 6c 6c  6f 63 44 62 75 67 5f 3e  |ug=>MallocDbug_>|
00062830  20 61 6e 64 20 70 72 69  6e 74 73 20 61 20 6c 69  | and prints a li|
00062840  73 74 20 6f 66 20 62 6c  6f 63 6b 73 20 6e 6f 74  |st of blocks not|
00062850  20 64 65 61 6c 6c 6f 63  61 74 65 64 20 77 69 74  | deallocated wit|
00062860  68 20 3c 46 72 65 65 44  62 75 67 3e 2e 00 00 00  |h <FreeDbug>....|
00062870  44 41 54 41 f7 00 00 00  6d 65 6d 73 65 74 0a 53  |DATA....memset.S|
00062880  79 6e 74 61 78 3a 09 76  6f 69 64 20 2a 6d 65 6d  |yntax:.void *mem|
00062890  73 65 74 20 28 76 6f 69  64 20 2a 70 74 72 2c 20  |set (void *ptr, |
000628a0  69 6e 74 20 63 2c 20 3c  73 69 7a 65 5f 74 3e 20  |int c, <size_t> |
000628b0  6e 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 74 72  |n);.Header:.<str|
000628c0  69 6e 67 2e 68 3d 3e 73  74 72 69 6e 67 3e 0a 0a  |ing.h=>string>..|
000628d0  52 65 74 75 72 6e 73 3a  09 70 74 72 0a 0a 54 68  |Returns:.ptr..Th|
000628e0  69 73 20 66 75 6e 63 74  69 6f 6e 20 73 65 74 73  |is function sets|
000628f0  20 74 68 65 20 66 69 72  73 74 20 2f 6e 2f 20 63  | the first /n/ c|
00062900  68 61 72 61 63 74 65 72  73 20 6f 66 20 74 68 65  |haracters of the|
00062910  20 6f 62 6a 65 63 74 20  70 6f 69 6e 74 65 64 20  | object pointed |
00062920  74 6f 20 62 79 20 2f 70  74 72 2f 2c 20 74 6f 20  |to by /ptr/, to |
00062930  74 68 65 20 76 61 6c 75  65 20 69 6e 20 2f 63 2f  |the value in /c/|
00062940  20 28 63 6f 6e 76 65 72  74 65 64 20 74 6f 20 61  | (converted to a|
00062950  6e 20 7b 2f 7d 75 6e 73  69 67 6e 65 64 20 63 68  |n {/}unsigned ch|
00062960  61 72 7b 2f 7d 29 2e 00  44 41 54 41 d9 01 00 00  |ar{/})..DATA....|
00062970  6d 65 6e 75 0a 54 68 65  20 74 79 70 65 20 6d 65  |menu.The type me|
00062980  6e 75 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |nu is defined in|
00062990  20 3c 6d 65 6e 75 2e 68  3d 3e 6d 65 6e 75 5f 68  | <menu.h=>menu_h|
000629a0  3e 20 28 44 65 73 6b 74  6f 70 20 43 29 20 61 6e  |> (Desktop C) an|
000629b0  64 20 3c 54 69 6d 73 4c  69 62 3a 4d 65 6e 75 2e  |d <TimsLib:Menu.|
000629c0  68 3d 3e 4d 65 6e 75 5f  54 4c 3e 20 61 73 20 61  |h=>Menu_TL> as a|
000629d0  20 74 79 70 65 20 63 61  70 61 62 6c 65 20 6f 66  | type capable of|
000629e0  20 68 6f 6c 64 69 6e 67  20 61 6e 20 61 62 73 74  | holding an abst|
000629f0  72 61 63 74 20 6d 65 6e  75 20 68 61 6e 64 6c 65  |ract menu handle|
00062a00  2e 20 49 6e 20 44 65 73  6b 74 6f 70 20 43 20 69  |. In Desktop C i|
00062a10  74 20 69 73 20 64 65 66  69 6e 65 64 20 61 73 20  |t is defined as |
00062a20  74 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 73 74  |the following st|
00062a30  72 75 63 74 75 72 65 3a  0a 0a 5c 7b 0a 20 20 20  |ructure:..\{.   |
00062a40  20 3c 77 69 6d 70 5f 6d  65 6e 75 68 64 72 3e 20  | <wimp_menuhdr> |
00062a50  2a 6d 3b 09 2f 2a 20 54  68 65 20 61 63 74 75 61  |*m;./* The actua|
00062a60  6c 20 6d 65 6e 75 20 2a  2f 0a 20 20 20 20 69 6e  |l menu */.    in|
00062a70  74 20 6e 69 74 65 6d 73  3b 0a 20 20 20 20 76 6f  |t nitems;.    vo|
00062a80  69 64 20 2a 65 6e 74 72  79 73 70 61 63 65 3b 09  |id *entryspace;.|
00062a90  2f 2a 20 53 75 62 6d 65  6e 75 73 2f 49 6e 64 69  |/* Submenus/Indi|
00062aa0  72 65 63 74 65 64 20 2a  2f 0a 20 20 20 20 69 6e  |rected */.    in|
00062ab0  74 20 6e 62 79 74 65 73  3b 0a 20 20 20 20 69 6e  |t nbytes;.    in|
00062ac0  74 20 6d 61 78 65 6e 74  72 79 77 69 64 74 68 3b  |t maxentrywidth;|
00062ad0  0a 7d 0a 0a 61 6e 64 20  69 6e 20 54 69 6d 73 4c  |.}..and in TimsL|
00062ae0  69 62 20 69 74 20 69 73  20 64 65 66 69 6e 65 64  |ib it is defined|
00062af0  20 61 73 20 61 6e 20 2f  69 6e 74 2f 2c 20 61 6c  | as an /int/, al|
00062b00  74 68 6f 75 67 68 20 69  74 20 63 61 6e 20 62 65  |though it can be|
00062b10  20 63 61 73 74 20 61 73  20 61 20 3c 6d 65 6e 75  | cast as a <menu|
00062b20  5f 70 74 72 3e 20 66 6f  72 20 6c 6f 77 2d 6c 65  |_ptr> for low-le|
00062b30  76 65 6c 20 6d 61 6e 69  70 75 6c 61 74 69 6f 6e  |vel manipulation|
00062b40  2e 00 00 00 44 49 52 24  e4 08 00 00 e4 08 00 00  |....DIR$........|
00062b50  28 34 06 00 46 ff ff ff  87 7f 57 26 0f 01 00 00  |(4..F.....W&....|
00062b60  13 00 00 00 00 00 00 00  41 64 64 44 69 61 6c 6f  |........AddDialo|
00062b70  67 42 6f 78 00 00 00 00  38 35 06 00 46 ff ff ff  |gBox....85..F...|
00062b80  0a c5 57 26 60 01 00 00  13 00 00 00 00 00 00 00  |..W&`...........|
00062b90  41 64 64 44 79 6e 61 6d  69 63 44 69 61 6c 6f 67  |AddDynamicDialog|
00062ba0  42 6f 78 00 98 36 06 00  46 ff ff ff 23 ca 41 25  |Box..6..F...#.A%|
00062bb0  e4 00 00 00 13 00 00 00  00 00 00 00 41 64 64 53  |............AddS|
00062bc0  75 62 4d 65 6e 75 00 00  7c 37 06 00 46 ff ff ff  |ubMenu..|7..F...|
00062bd0  85 eb 57 26 07 01 00 00  13 00 00 00 00 00 00 00  |..W&............|
00062be0  61 64 6a 75 73 74 5f 70  72 65 73 73 65 64 00 00  |adjust_pressed..|
00062bf0  84 38 06 00 46 ff ff ff  b4 ae 57 26 e8 01 00 00  |.8..F.....W&....|
00062c00  13 00 00 00 00 00 00 00  41 74 74 61 63 68 4d 65  |........AttachMe|
00062c10  6e 75 00 00 6c 3a 06 00  46 ff ff ff 17 be 57 26  |nu..l:..F.....W&|
00062c20  73 02 00 00 13 00 00 00  00 00 00 00 41 74 74 61  |s...........Atta|
00062c30  63 68 4d 65 6e 75 4d 61  6b 65 72 00 e0 3c 06 00  |chMenuMaker..<..|
00062c40  46 ff ff ff e4 f2 45 26  20 02 00 00 13 00 00 00  |F.....E& .......|
00062c50  00 00 00 00 62 6c 6f 63  6b 00 00 00 00 3f 06 00  |....block....?..|
00062c60  46 ff ff ff b8 34 42 25  2d 01 00 00 13 00 00 00  |F....4B%-.......|
00062c70  00 00 00 00 43 61 6c 63  48 65 69 67 68 74 00 00  |....CalcHeight..|
00062c80  30 40 06 00 46 ff ff ff  1a 5c 57 26 5f 01 00 00  |0@..F....\W&_...|
00062c90  13 00 00 00 00 00 00 00  43 6f 6c 6f 75 72 4d 65  |........ColourMe|
00062ca0  6e 75 00 00 90 41 06 00  46 ff ff ff f1 f1 57 26  |nu...A..F.....W&|
00062cb0  cb 00 00 00 13 00 00 00  00 00 00 00 63 75 72 72  |............curr|
00062cc0  65 6e 74 5f 69 63 6f 6e  00 00 00 00 5c 42 06 00  |ent_icon....\B..|
00062cd0  46 ff ff ff 7f ee 57 26  d1 00 00 00 13 00 00 00  |F.....W&........|
00062ce0  00 00 00 00 63 75 72 72  65 6e 74 5f 77 69 6e 64  |....current_wind|
00062cf0  6f 77 00 00 30 43 06 00  46 ff ff ff b3 81 43 25  |ow..0C..F.....C%|
00062d00  a2 00 00 00 13 00 00 00  00 00 00 00 63 75 72 72  |............curr|
00062d10  65 6e 74 6f 70 65 6e 00  d4 43 06 00 46 ff ff ff  |entopen..C..F...|
00062d20  b3 7c 43 25 b1 00 00 00  13 00 00 00 00 00 00 00  |.|C%............|
00062d30  63 75 72 72 65 6e 74 70  6f 73 00 00 88 44 06 00  |currentpos...D..|
00062d40  46 fd ff ff a1 25 41 25  a0 01 00 00 13 00 00 00  |F....%A%........|
00062d50  00 00 00 00 64 65 73 63  5f 00 00 00 28 46 06 00  |....desc_...(F..|
00062d60  46 ff ff ff da cc 57 26  6f 01 00 00 13 00 00 00  |F.....W&o.......|
00062d70  00 00 00 00 44 65 74 61  63 68 4d 65 6e 75 00 00  |....DetachMenu..|
00062d80  98 47 06 00 46 ff ff ff  8a 1a b1 24 48 01 00 00  |.G..F......$H...|
00062d90  13 00 00 00 00 00 00 00  64 69 73 70 6f 73 65 00  |........dispose.|
00062da0  e0 48 06 00 46 ff ff ff  42 38 41 25 81 01 00 00  |.H..F...B8A%....|
00062db0  13 00 00 00 00 00 00 00  45 78 74 65 6e 64 00 00  |........Extend..|
00062dc0  64 4a 06 00 46 ff ff ff  ab 22 b1 24 06 01 00 00  |dJ..F....".$....|
00062dd0  13 00 00 00 00 00 00 00  65 78 74 65 6e 64 5f 00  |........extend_.|
00062de0  6c 4b 06 00 46 ff ff ff  a9 8c 57 26 af 00 00 00  |lK..F.....W&....|
00062df0  13 00 00 00 00 00 00 00  46 61 64 65 45 6e 74 72  |........FadeEntr|
00062e00  79 00 00 00 1c 4c 06 00  46 ff ff ff 11 9f 45 26  |y....L..F.....E&|
00062e10  2f 04 00 00 13 00 00 00  00 00 00 00 66 6c 61 67  |/...........flag|
00062e20  73 00 00 00 4c 50 06 00  46 ff ff ff ff 22 42 25  |s...LP..F...."B%|
00062e30  23 01 00 00 13 00 00 00  00 00 00 00 47 65 74 46  |#...........GetF|
00062e40  6c 61 67 73 00 00 00 00  70 51 06 00 46 ff ff ff  |lags....pQ..F...|
00062e50  e5 2e 42 25 cf 00 00 00  13 00 00 00 00 00 00 00  |..B%............|
00062e60  47 65 74 54 65 78 74 00  40 52 06 00 46 ff ff ff  |GetText.@R..F...|
00062e70  0d 0b b1 24 7f 01 00 00  13 00 00 00 00 00 00 00  |...$............|
00062e80  68 00 00 00 c0 53 06 00  46 ff ff ff 58 db 57 26  |h....S..F...X.W&|
00062e90  3c 01 00 00 13 00 00 00  00 00 00 00 68 61 6e 64  |<...........hand|
00062ea0  6c 65 72 00 fc 54 06 00  46 ff ff ff a0 d6 45 26  |ler..T..F.....E&|
00062eb0  11 02 00 00 13 00 00 00  00 00 00 00 69 74 65 6d  |............item|
00062ec0  00 00 00 00 10 57 06 00  46 ff ff ff 28 2f b1 24  |.....W..F...(/.$|
00062ed0  25 01 00 00 13 00 00 00  00 00 00 00 6d 61 6b 65  |%...........make|
00062ee0  5f 73 70 72 69 74 65 00  38 58 06 00 46 ff ff ff  |_sprite.8X..F...|
00062ef0  45 3e b1 24 74 01 00 00  13 00 00 00 00 00 00 00  |E>.$t...........|
00062f00  6d 61 6b 65 5f 77 72 69  74 65 61 62 6c 65 00 00  |make_writeable..|
00062f10  ac 59 06 00 46 ff ff ff  26 e4 57 26 27 01 00 00  |.Y..F...&.W&'...|
00062f20  13 00 00 00 00 00 00 00  6d 61 6b 65 72 00 00 00  |........maker...|
00062f30  d4 5a 06 00 46 ff ff ff  4e 03 42 25 b5 01 00 00  |.Z..F...N.B%....|
00062f40  13 00 00 00 00 00 00 00  4d 61 6b 65 57 72 69 74  |........MakeWrit|
00062f50  61 62 6c 65 00 00 00 00  8c 5c 06 00 46 ff ff ff  |able.....\..F...|
00062f60  f3 11 41 25 53 02 00 00  13 00 00 00 00 00 00 00  |..A%S...........|
00062f70  4e 65 77 00 e0 5e 06 00  46 fd ff ff a6 50 b1 24  |New..^..F....P.$|
00062f80  bd 01 00 00 13 00 00 00  00 00 00 00 6e 65 77 5f  |............new_|
00062f90  00 00 00 00 a0 60 06 00  46 fd ff ff f4 4a 57 26  |.....`..F....JW&|
00062fa0  6b 01 00 00 13 00 00 00  00 00 00 00 4e 65 77 5f  |k...........New_|
00062fb0  5f 00 00 00 0c 62 06 00  46 ff ff ff 9c e6 47 23  |_....b..F.....G#|
00062fc0  62 00 00 00 13 00 00 00  00 00 00 00 70 74 72 00  |b...........ptr.|
00062fd0  70 62 06 00 46 ff ff ff  c8 6b 42 25 fb 00 00 00  |pb..F....kB%....|
00062fe0  13 00 00 00 00 00 00 00  52 65 6d 6f 76 65 49 74  |........RemoveIt|
00062ff0  65 6d 00 00 6c 63 06 00  46 ff ff ff f6 48 42 25  |em..lc..F....HB%|
00063000  05 01 00 00 13 00 00 00  00 00 00 00 53 44 69 73  |............SDis|
00063010  70 6f 73 65 00 00 00 00  74 64 06 00 46 ff ff ff  |pose....td..F...|
00063020  07 f5 57 26 1a 01 00 00  13 00 00 00 00 00 00 00  |..W&............|
00063030  73 65 6c 65 63 74 69 6f  6e 00 00 00 90 65 06 00  |selection....e..|
00063040  46 ff ff ff fd 15 42 25  90 01 00 00 13 00 00 00  |F.....B%........|
00063050  00 00 00 00 53 65 74 46  6c 61 67 73 00 00 00 00  |....SetFlags....|
00063060  20 67 06 00 46 ff ff ff  76 63 b1 24 61 01 00 00  | g..F...vc.$a...|
00063070  13 00 00 00 00 00 00 00  73 65 74 66 6c 61 67 73  |........setflags|
00063080  5f 00 00 00 84 68 06 00  46 ff ff ff f1 28 42 25  |_....h..F....(B%|
00063090  cf 00 00 00 13 00 00 00  00 00 00 00 53 65 74 54  |............SetT|
000630a0  65 78 74 00 54 69 06 00  46 ff ff ff 91 47 41 25  |ext.Ti..F....GA%|
000630b0  3f 01 00 00 13 00 00 00  00 00 00 00 53 68 6f 77  |?...........Show|
000630c0  00 00 00 00 94 6a 06 00  46 fd ff ff 81 99 57 26  |.....j..F.....W&|
000630d0  50 01 00 00 13 00 00 00  00 00 00 00 53 68 6f 77  |P...........Show|
000630e0  5f 00 00 00 e4 6b 06 00  46 ff ff ff a7 4f 41 25  |_....k..F....OA%|
000630f0  00 01 00 00 13 00 00 00  00 00 00 00 53 68 6f 77  |............Show|
00063100  4c 61 73 74 00 00 00 00  e4 6c 06 00 46 ff ff ff  |Last.....l..F...|
00063110  3c 72 b1 24 b0 01 00 00  13 00 00 00 00 00 00 00  |<r.$............|
00063120  73 75 62 6d 65 6e 75 00  94 6e 06 00 46 fd ff ff  |submenu..n..F...|
00063130  a7 b4 45 26 69 01 00 00  13 00 00 00 00 00 00 00  |..E&i...........|
00063140  73 75 62 6d 65 6e 75 5f  00 00 00 00 00 70 06 00  |submenu_.....p..|
00063150  46 ff ff ff 45 f8 57 26  e9 00 00 00 13 00 00 00  |F...E.W&........|
00063160  00 00 00 00 73 75 62 6d  65 6e 75 70 6f 73 00 00  |....submenupos..|
00063170  ec 70 06 00 46 ff ff ff  16 82 b1 24 fc 00 00 00  |.p..F......$....|
00063180  13 00 00 00 00 00 00 00  73 79 73 68 61 6e 64 6c  |........syshandl|
00063190  65 00 00 00 e8 71 06 00  46 fd ff ff bf 42 42 25  |e....q..F....BB%|
000631a0  3b 01 00 00 13 00 00 00  00 00 00 00 53 79 73 48  |;...........SysH|
000631b0  61 6e 64 6c 65 5f 00 00  24 73 06 00 46 ff ff ff  |andle_..$s..F...|
000631c0  6d a2 57 26 39 01 00 00  13 00 00 00 00 00 00 00  |m.W&9...........|
000631d0  53 79 73 48 61 6e 64 6c  65 5f 5f 00 60 74 06 00  |SysHandle__.`t..|
000631e0  46 ff ff ff be 85 57 26  ae 00 00 00 13 00 00 00  |F.....W&........|
000631f0  00 00 00 00 54 69 63 6b  45 6e 74 72 79 00 00 00  |....TickEntry...|
00063200  10 75 06 00 46 ff ff ff  ae e0 7f 2c 8b 03 00 00  |.u..F......,....|
00063210  13 00 00 00 00 00 00 00  54 4c 00 00 9c 78 06 00  |........TL...x..|
00063220  46 ff ff ff 5c 90 57 26  b5 00 00 00 13 00 00 00  |F...\.W&........|
00063230  00 00 00 00 55 6e 46 61  64 65 45 6e 74 72 79 00  |....UnFadeEntry.|
00063240  54 79 06 00 46 ff ff ff  af 89 57 26 b4 00 00 00  |Ty..F.....W&....|
00063250  13 00 00 00 00 00 00 00  55 6e 54 69 63 6b 45 6e  |........UnTickEn|
00063260  74 72 79 00 08 7a 06 00  46 ff ff ff b7 73 42 25  |try..z..F....sB%|
00063270  74 01 00 00 13 00 00 00  00 00 00 00 57 61 72 6e  |t...........Warn|
00063280  00 00 00 00 7c 7b 06 00  46 ff ff ff cc 8c 41 25  |....|{..F.....A%|
00063290  ee 00 00 00 13 00 00 00  00 00 00 00 50 6f 70 55  |............PopU|
000632a0  70 00 00 00 6c 7c 06 00  46 ff ff ff 8a bb 41 25  |p...l|..F.....A%|
000632b0  19 01 00 00 13 00 00 00  00 00 00 00 50 6f 70 55  |............PopU|
000632c0  70 41 75 74 6f 00 00 00  88 7d 06 00 46 ff ff ff  |pAuto....}..F...|
000632d0  c3 f3 41 25 ff 00 00 00  13 00 00 00 00 00 00 00  |..A%............|
000632e0  4d 61 6b 65 49 6e 64 69  72 65 63 74 65 64 00 00  |MakeIndirected..|
000632f0  88 7e 06 00 46 ff ff ff  b3 63 42 25 ef 00 00 00  |.~..F....cB%....|
00063300  13 00 00 00 00 00 00 00  46 75 6c 6c 44 69 73 70  |........FullDisp|
00063310  6f 73 65 00 78 7f 06 00  46 ff ff ff 01 95 42 25  |ose.x...F.....B%|
00063320  fe 00 00 00 13 00 00 00  00 00 00 00 52 65 76 69  |............Revi|
00063330  73 65 57 69 64 74 68 00  78 80 06 00 46 ff ff ff  |seWidth.x...F...|
00063340  70 06 43 25 a1 01 00 00  13 00 00 00 00 00 00 00  |p.C%............|
00063350  46 6f 6e 74 4d 65 6e 75  00 00 00 00 1c 82 06 00  |FontMenu........|
00063360  46 ff ff ff 0a 0d 43 25  86 01 00 00 13 00 00 00  |F.....C%........|
00063370  00 00 00 00 46 6f 6e 74  4d 65 6e 75 33 00 00 00  |....FontMenu3...|
00063380  a4 83 06 00 46 ff ff ff  82 28 43 25 2b 01 00 00  |....F....(C%+...|
00063390  13 00 00 00 00 00 00 00  46 6f 6e 74 4d 65 6e 75  |........FontMenu|
000633a0  44 65 63 6f 64 65 00 00  d0 84 06 00 46 ff ff ff  |Decode......F...|
000633b0  59 2f 43 25 02 01 00 00  13 00 00 00 00 00 00 00  |Y/C%............|
000633c0  46 6f 6e 74 4d 65 6e 75  44 65 63 6f 64 65 33 00  |FontMenuDecode3.|
000633d0  d4 85 06 00 46 ff ff ff  46 66 43 25 a2 00 00 00  |....F...FfC%....|
000633e0  13 00 00 00 00 00 00 00  46 6f 6e 74 4d 65 6e 75  |........FontMenu|
000633f0  5f 4e 4f 54 49 43 4b 00  78 86 06 00 46 ff ff ff  |_NOTICK.x...F...|
00063400  ff 70 43 25 c1 00 00 00  13 00 00 00 00 00 00 00  |.pC%............|
00063410  46 6f 6e 74 4d 65 6e 75  5f 54 49 43 4b 53 59 53  |FontMenu_TICKSYS|
00063420  46 4f 4e 54 00 00 00 00  44 41 54 41 0f 01 00 00  |FONT....DATA....|
00063430  4d 65 6e 75 5f 41 64 64  44 69 61 6c 6f 67 42 6f  |Menu_AddDialogBo|
00063440  78 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 4d  |x.Syntax:.void M|
00063450  65 6e 75 5f 41 64 64 44  69 61 6c 6f 67 42 6f 78  |enu_AddDialogBox|
00063460  20 28 3c 6d 65 6e 75 3e  20 6d 2c 20 69 6e 74 20  | (<menu> m, int |
00063470  65 6e 74 72 79 2c 20 3c  77 69 6e 64 6f 77 5f 68  |entry, <window_h|
00063480  61 6e 64 6c 65 3e 20 77  69 6e 29 3b 0a 48 65 61  |andle> win);.Hea|
00063490  64 65 72 3a 09 3c 54 69  6d 73 4c 69 62 3a 4d 65  |der:.<TimsLib:Me|
000634a0  6e 75 2e 68 3d 3e 4d 65  6e 75 5f 54 4c 3e 0a 0a  |nu.h=>Menu_TL>..|
000634b0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 61 74  |This function at|
000634c0  74 61 63 68 65 73 20 61  20 77 69 6e 64 6f 77 20  |taches a window |
000634d0  77 68 6f 73 65 20 68 61  6e 64 6c 65 20 69 73 20  |whose handle is |
000634e0  67 69 76 65 6e 20 69 6e  20 2f 77 69 6e 2f 20 61  |given in /win/ a|
000634f0  73 20 61 20 73 75 62 6d  65 6e 75 20 69 74 65 6d  |s a submenu item|
00063500  20 28 64 69 61 6c 6f 67  75 65 20 62 6f 78 29 20  | (dialogue box) |
00063510  74 6f 20 74 68 65 20 6d  65 6e 75 20 2f 6d 2f 20  |to the menu /m/ |
00063520  61 74 20 74 68 65 20 65  6e 74 72 79 20 73 70 65  |at the entry spe|
00063530  63 69 66 69 65 64 2e 00  44 41 54 41 60 01 00 00  |cified..DATA`...|
00063540  4d 65 6e 75 5f 41 64 64  44 79 6e 61 6d 69 63 44  |Menu_AddDynamicD|
00063550  69 61 6c 6f 67 42 6f 78  0a 53 79 6e 74 61 78 3a  |ialogBox.Syntax:|
00063560  09 76 6f 69 64 20 4d 65  6e 75 5f 41 64 64 44 79  |.void Menu_AddDy|
00063570  6e 61 6d 69 63 44 69 61  6c 6f 67 42 6f 78 20 28  |namicDialogBox (|
00063580  3c 77 69 6e 64 6f 77 5f  68 61 6e 64 6c 65 3e 20  |<window_handle> |
00063590  77 69 6e 29 3b 0a 48 65  61 64 65 72 3a 09 3c 54  |win);.Header:.<T|
000635a0  69 6d 73 4c 69 62 3a 4d  65 6e 75 2e 68 3d 3e 4d  |imsLib:Menu.h=>M|
000635b0  65 6e 75 5f 54 4c 3e 0a  0a 54 68 69 73 20 66 75  |enu_TL>..This fu|
000635c0  6e 63 74 69 6f 6e 20 73  68 6f 77 73 20 61 20 77  |nction shows a w|
000635d0  69 6e 64 6f 77 20 61 73  20 61 20 64 69 61 6c 6f  |indow as a dialo|
000635e0  67 75 65 20 62 6f 78 2e  20 49 74 20 73 68 6f 75  |gue box. It shou|
000635f0  6c 64 20 6f 6e 6c 79 20  62 65 20 63 61 6c 6c 65  |ld only be calle|
00063600  64 20 62 79 20 61 20 6d  65 6e 75 20 73 65 6c 65  |d by a menu sele|
00063610  63 74 69 6f 6e 20 68 61  6e 64 6c 65 72 20 77 68  |ction handler wh|
00063620  65 6e 20 61 20 6d 65 6e  75 20 77 61 72 6e 69 6e  |en a menu warnin|
00063630  67 20 6d 65 73 73 61 67  65 20 69 73 20 72 65 63  |g message is rec|
00063640  65 69 76 65 64 2e 20 54  68 65 20 68 61 6e 64 6c  |eived. The handl|
00063650  65 72 20 73 68 6f 75 6c  64 20 63 72 65 61 74 65  |er should create|
00063660  20 74 68 65 20 77 69 6e  64 6f 77 20 6e 65 65 64  | the window need|
00063670  65 64 20 61 6e 64 20 70  61 73 73 20 69 74 73 20  |ed and pass its |
00063680  68 61 6e 64 6c 65 20 74  6f 20 74 68 69 73 20 66  |handle to this f|
00063690  75 6e 63 74 69 6f 6e 2e  44 41 54 41 e4 00 00 00  |unction.DATA....|
000636a0  4d 65 6e 75 5f 41 64 64  53 75 62 4d 65 6e 75 0a  |Menu_AddSubMenu.|
000636b0  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 4d 65 6e  |Syntax:.void Men|
000636c0  75 5f 41 64 64 53 75 62  4d 65 6e 75 20 28 3c 6d  |u_AddSubMenu (<m|
000636d0  65 6e 75 5f 70 74 72 3e  20 6d 65 6e 75 2c 20 69  |enu_ptr> menu, i|
000636e0  6e 74 20 65 6e 74 72 79  2c 20 6d 65 6e 75 5f 70  |nt entry, menu_p|
000636f0  74 72 20 73 75 62 6d 65  6e 75 29 3b 0a 48 65 61  |tr submenu);.Hea|
00063700  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 4d 65  |der:.<DeskLib:Me|
00063710  6e 75 2e 68 3d 3e 44 4c  5f 4d 65 6e 75 3e 0a 0a  |nu.h=>DL_Menu>..|
00063720  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 61 64  |This function ad|
00063730  64 73 20 61 20 73 75 62  6d 65 6e 75 20 74 6f 20  |ds a submenu to |
00063740  65 78 69 73 74 69 6e 67  20 6d 65 6e 75 20 61 74  |existing menu at|
00063750  20 70 6f 73 69 74 69 6f  6e 20 2f 65 6e 74 72 79  | position /entry|
00063760  2f 20 28 74 68 65 20 66  69 72 73 74 20 65 6e 74  |/ (the first ent|
00063770  72 79 20 62 65 69 6e 67  20 30 29 2e 44 41 54 41  |ry being 0).DATA|
00063780  07 01 00 00 6d 65 6e 75  5f 61 64 6a 75 73 74 5f  |....menu_adjust_|
00063790  70 72 65 73 73 65 64 0a  54 68 69 73 20 76 61 72  |pressed.This var|
000637a0  69 61 62 6c 65 20 6f 66  20 74 79 70 65 20 3c 42  |iable of type <B|
000637b0  4f 4f 4c 3e 20 69 73 20  64 65 66 69 6e 65 64 20  |OOL> is defined |
000637c0  69 6e 20 3c 54 69 6d 73  4c 69 62 3a 4d 65 6e 75  |in <TimsLib:Menu|
000637d0  2e 68 3d 3e 4d 65 6e 75  5f 54 4c 3e 2e 20 49 74  |.h=>Menu_TL>. It|
000637e0  20 63 6f 6e 74 61 69 6e  73 20 3c 54 52 55 45 3e  | contains <TRUE>|
000637f0  20 69 66 20 74 68 65 20  6d 65 6e 75 20 69 73 20  | if the menu is |
00063800  62 65 69 6e 67 20 73 68  6f 77 6e 20 62 65 63 61  |being shown beca|
00063810  75 73 65 20 69 74 20 69  73 20 62 65 69 6e 67 20  |use it is being |
00063820  72 65 63 72 65 61 74 65  64 20 64 75 65 20 74 6f  |recreated due to|
00063830  20 61 6e 20 61 64 6a 75  73 74 20 63 6c 69 63 6b  | an adjust click|
00063840  2e 20 41 20 6d 65 6e 75  20 6d 61 6b 65 72 20 63  |. A menu maker c|
00063850  61 6e 20 73 65 74 20 74  68 69 73 20 74 6f 20 3c  |an set this to <|
00063860  46 41 4c 53 45 3e 20 74  6f 20 70 72 65 76 65 6e  |FALSE> to preven|
00063870  74 20 74 68 65 20 6d 65  6e 75 20 6f 70 65 6e 69  |t the menu openi|
00063880  6e 67 2e 00 44 41 54 41  e8 01 00 00 4d 65 6e 75  |ng..DATA....Menu|
00063890  5f 41 74 74 61 63 68 4d  65 6e 75 0a 53 79 6e 74  |_AttachMenu.Synt|
000638a0  61 78 3a 09 3c 42 4f 4f  4c 3e 20 4d 65 6e 75 5f  |ax:.<BOOL> Menu_|
000638b0  41 74 74 61 63 68 4d 65  6e 75 20 28 3c 6d 65 6e  |AttachMenu (<men|
000638c0  75 3e 20 6d 2c 20 3c 77  69 6e 64 6f 77 5f 68 61  |u> m, <window_ha|
000638d0  6e 64 6c 65 3e 20 77 69  6e 2c 20 3c 69 63 6f 6e  |ndle> win, <icon|
000638e0  5f 68 61 6e 64 6c 65 3e  20 69 63 6f 6e 2c 20 3c  |_handle> icon, <|
000638f0  6d 65 6e 75 5f 68 61 6e  64 6c 65 72 3e 20 68 61  |menu_handler> ha|
00063900  6e 64 6c 65 72 2c 20 76  6f 69 64 20 2a 72 65 66  |ndler, void *ref|
00063910  29 3b 0a 48 65 61 64 65  72 3a 09 3c 54 69 6d 73  |);.Header:.<Tims|
00063920  4c 69 62 3a 4d 65 6e 75  2e 68 3d 3e 4d 65 6e 75  |Lib:Menu.h=>Menu|
00063930  5f 54 4c 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 3c  |_TL>..Returns:.<|
00063940  54 52 55 45 3e 20 69 66  20 73 75 63 63 65 73 73  |TRUE> if success|
00063950  66 75 6c 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |ful...This funct|
00063960  69 6f 6e 20 61 74 74 61  63 68 65 73 20 61 20 6d  |ion attaches a m|
00063970  65 6e 75 20 74 6f 20 61  20 70 61 72 74 69 63 75  |enu to a particu|
00063980  6c 61 72 20 77 69 6e 64  6f 77 20 61 6e 64 20 69  |lar window and i|
00063990  63 6f 6e 2e 20 45 69 74  68 65 72 20 6f 66 20 74  |con. Either of t|
000639a0  68 65 73 65 20 63 61 6e  20 62 65 20 7b 2a 7d 65  |hese can be {*}e|
000639b0  76 65 6e 74 5f 41 4e 59  7b 2a 7d 20 69 66 20 74  |vent_ANY{*} if t|
000639c0  68 65 79 20 61 72 65 20  72 65 71 75 69 72 65 64  |hey are required|
000639d0  20 74 6f 20 62 65 20 6e  6f 6e 2d 73 70 65 63 69  | to be non-speci|
000639e0  66 69 63 2e 20 54 68 65  20 6d 65 6e 75 20 2f 6d  |fic. The menu /m|
000639f0  2f 20 77 69 6c 6c 20 62  65 20 73 68 6f 77 6e 20  |/ will be shown |
00063a00  77 68 65 6e 65 76 65 72  20 74 68 65 20 75 73 65  |whenever the use|
00063a10  72 20 63 6c 69 63 6b 73  20 69 6e 20 74 68 65 20  |r clicks in the |
00063a20  70 6c 61 63 65 73 20 73  70 65 63 69 66 69 65 64  |places specified|
00063a30  2e 20 41 20 73 65 6c 65  63 74 69 6f 6e 20 6f 66  |. A selection of|
00063a40  66 20 74 68 65 20 6d 65  6e 75 20 77 69 6c 6c 20  |f the menu will |
00063a50  62 65 20 68 61 6e 64 6c  65 64 20 62 79 20 74 68  |be handled by th|
00063a60  65 20 2f 68 61 6e 64 6c  65 72 2f 2e 44 41 54 41  |e /handler/.DATA|
00063a70  73 02 00 00 4d 65 6e 75  5f 41 74 74 61 63 68 4d  |s...Menu_AttachM|
00063a80  65 6e 75 4d 61 6b 65 72  0a 53 79 6e 74 61 78 3a  |enuMaker.Syntax:|
00063a90  09 3c 42 4f 4f 4c 3e 20  4d 65 6e 75 5f 41 74 74  |.<BOOL> Menu_Att|
00063aa0  61 63 68 4d 65 6e 75 4d  61 6b 65 72 20 28 3c 6d  |achMenuMaker (<m|
00063ab0  65 6e 75 5f 6d 61 6b 65  72 3e 20 6d 61 6b 65 72  |enu_maker> maker|
00063ac0  2c 20 3c 77 69 6e 64 6f  77 5f 68 61 6e 64 6c 65  |, <window_handle|
00063ad0  3e 20 77 69 6e 2c 20 3c  69 63 6f 6e 5f 68 61 6e  |> win, <icon_han|
00063ae0  64 6c 65 3e 20 69 63 6f  6e 2c 20 3c 6d 65 6e 75  |dle> icon, <menu|
00063af0  5f 68 61 6e 64 6c 65 72  3e 20 68 61 6e 64 6c 65  |_handler> handle|
00063b00  72 2c 20 76 6f 69 64 20  2a 72 65 66 29 3b 0a 48  |r, void *ref);.H|
00063b10  65 61 64 65 72 3a 09 3c  54 69 6d 73 4c 69 62 3a  |eader:.<TimsLib:|
00063b20  4d 65 6e 75 2e 68 3d 3e  4d 65 6e 75 5f 54 4c 3e  |Menu.h=>Menu_TL>|
00063b30  0a 0a 52 65 74 75 72 6e  73 3a 09 3c 54 52 55 45  |..Returns:.<TRUE|
00063b40  3e 20 69 66 20 73 75 63  63 65 73 73 66 75 6c 2e  |> if successful.|
00063b50  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00063b60  61 74 74 61 63 68 65 73  20 61 20 6d 65 6e 75 20  |attaches a menu |
00063b70  74 6f 20 61 20 70 61 72  74 69 63 75 6c 61 72 20  |to a particular |
00063b80  77 69 6e 64 6f 77 20 61  6e 64 20 69 63 6f 6e 2e  |window and icon.|
00063b90  20 48 6f 77 65 76 65 72  2c 20 75 6e 6c 69 6b 65  | However, unlike|
00063ba0  20 3c 4d 65 6e 75 5f 41  74 74 61 63 68 4d 65 6e  | <Menu_AttachMen|
00063bb0  75 3e 2c 20 61 20 6e 65  77 20 6d 65 6e 75 20 69  |u>, a new menu i|
00063bc0  73 20 63 72 65 61 74 65  64 20 75 73 69 6e 67 20  |s created using |
00063bd0  74 68 65 20 2f 6d 61 6b  65 72 2f 20 72 61 74 68  |the /maker/ rath|
00063be0  65 72 20 74 68 61 6e 20  61 6e 20 65 78 69 73 74  |er than an exist|
00063bf0  69 6e 67 20 6d 65 6e 75  20 73 68 6f 77 6e 2e 20  |ing menu shown. |
00063c00  45 69 74 68 65 72 20 6f  66 20 74 68 65 73 65 20  |Either of these |
00063c10  63 61 6e 20 62 65 20 7b  2a 7d 65 76 65 6e 74 5f  |can be {*}event_|
00063c20  41 4e 59 7b 2a 7d 20 69  66 20 74 68 65 79 20 61  |ANY{*} if they a|
00063c30  72 65 20 72 65 71 75 69  72 65 64 20 74 6f 20 62  |re required to b|
00063c40  65 20 6e 6f 6e 2d 73 70  65 63 69 66 69 63 2e 20  |e non-specific. |
00063c50  54 68 65 20 66 75 6e 63  74 69 6f 6e 20 2f 6d 61  |The function /ma|
00063c60  6b 65 72 2f 20 77 69 6c  6c 20 62 65 20 73 68 6f  |ker/ will be sho|
00063c70  77 6e 20 77 68 65 6e 65  76 65 72 20 74 68 65 20  |wn whenever the |
00063c80  75 73 65 72 20 63 6c 69  63 6b 73 20 69 6e 20 74  |user clicks in t|
00063c90  68 65 20 70 6c 61 63 65  73 20 73 70 65 63 69 66  |he places specif|
00063ca0  69 65 64 2e 20 41 20 73  65 6c 65 63 74 69 6f 6e  |ied. A selection|
00063cb0  20 6f 66 66 20 74 68 65  20 6d 65 6e 75 20 77 69  | off the menu wi|
00063cc0  6c 6c 20 62 65 20 68 61  6e 64 6c 65 64 20 62 79  |ll be handled by|
00063cd0  20 74 68 65 20 2f 68 61  6e 64 6c 65 72 2f 2e 00  | the /handler/..|
00063ce0  44 41 54 41 20 02 00 00  6d 65 6e 75 5f 62 6c 6f  |DATA ...menu_blo|
00063cf0  63 6b 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |ck.This type is |
00063d00  64 65 66 69 6e 65 64 20  69 6e 20 3c 44 65 73 6b  |defined in <Desk|
00063d10  4c 69 62 3a 57 69 6d 70  2e 68 3d 3e 57 69 6d 70  |Lib:Wimp.h=>Wimp|
00063d20  3e 2e 20 49 74 20 69 73  20 61 20 73 74 72 75 63  |>. It is a struc|
00063d30  74 75 72 65 20 68 6f 6c  64 69 6e 67 20 61 20 63  |ture holding a c|
00063d40  6f 6d 70 6c 65 74 65 20  6d 65 6e 75 20 68 65 61  |omplete menu hea|
00063d50  64 65 72 20 28 61 70 61  72 74 20 66 72 6f 6d 20  |der (apart from |
00063d60  74 68 65 20 6d 65 6e 75  20 69 74 65 6d 73 29 3a  |the menu items):|
00063d70  0a 0a 20 20 5c 7b 0a 20  20 20 20 63 68 61 72 09  |..  \{.    char.|
00063d80  74 69 74 6c 65 20 5b 77  69 6d 70 5f 4d 41 58 4e  |title [wimp_MAXN|
00063d90  41 4d 45 5d 3b 0a 20 20  20 20 63 68 61 72 09 74  |AME];.    char.t|
00063da0  69 74 6c 65 66 6f 72 65  2c 74 69 74 6c 65 62 61  |itlefore,titleba|
00063db0  63 6b 3b 0a 20 20 20 20  63 68 61 72 09 77 6f 72  |ck;.    char.wor|
00063dc0  6b 66 6f 72 65 2c 77 6f  72 6b 62 61 63 6b 3b 0a  |kfore,workback;.|
00063dd0  20 20 20 20 75 6e 73 69  67 6e 65 64 20 69 6e 74  |    unsigned int|
00063de0  09 77 69 64 74 68 3b 0a  20 20 20 20 75 6e 73 69  |.width;.    unsi|
00063df0  67 6e 65 64 20 69 6e 74  09 68 65 69 67 68 74 3b  |gned int.height;|
00063e00  0a 20 20 20 20 75 6e 73  69 67 6e 65 64 20 69 6e  |.    unsigned in|
00063e10  74 09 67 61 70 3b 0a 20  20 7d 0a 0a 54 68 69 73  |t.gap;.  }..This|
00063e20  20 73 68 6f 75 6c 64 20  62 65 20 69 6d 6d 65 64  | should be immed|
00063e30  69 61 74 65 6c 79 20 66  6f 6c 6c 6f 77 65 64 20  |iately followed |
00063e40  69 6e 20 6d 65 6d 6f 72  79 20 62 79 20 74 68 65  |in memory by the|
00063e50  20 3c 6d 65 6e 75 5f 69  74 65 6d 3e 73 2e 0a 0a  | <menu_item>s...|
00063e60  2f 74 69 74 6c 65 66 6f  72 65 2f 20 2d 20 2f 77  |/titlefore/ - /w|
00063e70  6f 72 6b 62 61 63 6b 2f  20 61 72 65 20 74 68 65  |orkback/ are the|
00063e80  20 63 6f 6c 6f 75 72 73  20 6f 66 20 74 68 65 20  | colours of the |
00063e90  6d 65 6e 75 2e 20 46 6f  72 20 61 20 73 74 61 6e  |menu. For a stan|
00063ea0  64 61 72 64 20 6d 65 6e  75 20 74 68 65 79 20 73  |dard menu they s|
00063eb0  68 6f 75 6c 64 20 62 65  20 37 2c 32 2c 37 20 61  |hould be 7,2,7 a|
00063ec0  6e 64 20 31 20 72 65 73  70 65 63 74 69 76 65 6c  |nd 1 respectivel|
00063ed0  79 2e 20 2f 67 61 70 2f  20 73 68 6f 75 6c 64 20  |y. /gap/ should |
00063ee0  62 65 20 30 2c 20 61 6e  64 20 2f 68 65 69 67 68  |be 0, and /heigh|
00063ef0  74 2f 20 73 68 6f 75 6c  64 20 62 65 20 34 34 2e  |t/ should be 44.|
00063f00  44 41 54 41 2d 01 00 00  4d 65 6e 75 5f 43 61 6c  |DATA-...Menu_Cal|
00063f10  63 48 65 69 67 68 74 0a  53 79 6e 74 61 78 3a 09  |cHeight.Syntax:.|
00063f20  69 6e 74 20 4d 65 6e 75  5f 43 61 6c 63 48 65 69  |int Menu_CalcHei|
00063f30  67 68 74 20 28 3c 6d 65  6e 75 5f 70 74 72 3e 20  |ght (<menu_ptr> |
00063f40  6d 65 6e 75 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |menu);.Header:.<|
00063f50  44 65 73 6b 4c 69 62 3a  4d 65 6e 75 2e 68 3d 3e  |DeskLib:Menu.h=>|
00063f60  44 4c 5f 4d 65 6e 75 3e  0a 0a 52 65 74 75 72 6e  |DL_Menu>..Return|
00063f70  73 3a 09 48 65 69 67 68  74 20 69 6e 20 4f 53 20  |s:.Height in OS |
00063f80  63 6f 6f 72 64 73 2e 0a  0a 54 68 69 73 20 66 75  |coords...This fu|
00063f90  6e 63 74 69 6f 6e 20 63  61 6c 63 75 6c 61 74 65  |nction calculate|
00063fa0  73 20 74 68 65 20 68 65  69 67 68 74 20 6f 66 20  |s the height of |
00063fb0  61 20 6d 65 6e 75 20 69  6e 20 4f 53 20 63 6f 6f  |a menu in OS coo|
00063fc0  72 64 73 2e 20 54 68 65  20 6f 6e 6c 79 20 75 73  |rds. The only us|
00063fd0  65 20 66 6f 72 20 74 68  69 73 20 69 73 20 63 61  |e for this is ca|
00063fe0  6c 63 75 6c 61 74 69 6e  67 20 70 6f 73 69 74 69  |lculating positi|
00063ff0  6f 6e 20 66 6f 72 20 69  63 6f 6e 20 62 61 72 20  |on for icon bar |
00064000  6d 65 6e 75 73 2c 20 62  75 74 20 3c 4d 65 6e 75  |menus, but <Menu|
00064010  5f 53 68 6f 77 3e 20 63  61 6e 20 64 6f 20 74 68  |_Show> can do th|
00064020  69 73 20 66 6f 72 20 79  6f 75 2e 2e 2e 00 00 00  |is for you......|
00064030  44 41 54 41 5f 01 00 00  4d 65 6e 75 5f 43 6f 6c  |DATA_...Menu_Col|
00064040  6f 75 72 4d 65 6e 75 0a  53 79 6e 74 61 78 3a 09  |ourMenu.Syntax:.|
00064050  3c 6d 65 6e 75 3e 20 4d  65 6e 75 5f 43 6f 6c 6f  |<menu> Menu_Colo|
00064060  75 72 4d 65 6e 75 20 28  63 68 61 72 20 2a 74 2c  |urMenu (char *t,|
00064070  20 63 68 61 72 20 2a 6c  61 73 74 5f 69 74 65 6d  | char *last_item|
00064080  29 3b 0a 48 65 61 64 65  72 3a 09 3c 54 69 6d 73  |);.Header:.<Tims|
00064090  4c 69 62 3a 4d 65 6e 75  2e 68 3d 3e 4d 65 6e 75  |Lib:Menu.h=>Menu|
000640a0  5f 54 4c 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 4d  |_TL>..Returns:.M|
000640b0  65 6e 75 20 68 61 6e 64  6c 65 20 6f 66 20 74 68  |enu handle of th|
000640c0  65 20 6d 65 6e 75 2e 0a  0a 54 68 69 73 20 66 75  |e menu...This fu|
000640d0  6e 63 74 69 6f 6e 20 63  72 65 61 74 65 73 20 61  |nction creates a|
000640e0  20 6d 65 6e 75 20 63 6f  6e 74 61 69 6e 69 6e 67  | menu containing|
000640f0  20 61 6c 6c 20 31 36 20  57 69 6d 70 20 63 6f 6c  | all 16 Wimp col|
00064100  6f 75 72 73 2c 20 77 69  74 68 20 74 69 74 6c 65  |ours, with title|
00064110  20 2f 74 2f 20 61 6e 64  20 61 64 64 69 74 69 6f  | /t/ and additio|
00064120  6e 61 6c 20 6c 61 73 74  20 69 74 65 6d 20 7b 2f  |nal last item {/|
00064130  7d 6c 61 73 74 5f 69 74  65 6d 7b 2f 7d 20 65 67  |}last_item{/} eg|
00064140  20 22 4e 6f 6e 65 22 2e  20 49 66 20 7b 2f 7d 6c  | "None". If {/}l|
00064150  61 73 74 5f 69 74 65 6d  7b 2f 7d 20 69 73 20 3c  |ast_item{/} is <|
00064160  4e 55 4c 4c 3e 20 74 68  65 6e 20 6f 6e 6c 79 20  |NULL> then only |
00064170  74 68 65 20 31 36 20 63  6f 6c 6f 75 72 20 69 74  |the 16 colour it|
00064180  65 6d 73 20 61 72 65 20  6c 69 73 74 65 64 2e 00  |ems are listed..|
00064190  44 41 54 41 cb 00 00 00  6d 65 6e 75 5f 63 75 72  |DATA....menu_cur|
000641a0  72 65 6e 74 5f 69 63 6f  6e 0a 54 68 69 73 20 76  |rent_icon.This v|
000641b0  61 72 69 61 62 6c 65 20  6f 66 20 74 79 70 65 20  |ariable of type |
000641c0  3c 69 63 6f 6e 5f 68 61  6e 64 6c 65 3e 20 69 73  |<icon_handle> is|
000641d0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 54 69 6d  | defined in <Tim|
000641e0  73 4c 69 62 3a 4d 65 6e  75 2e 68 3d 3e 4d 65 6e  |sLib:Menu.h=>Men|
000641f0  75 5f 54 4c 3e 2e 20 49  74 20 63 6f 6e 74 61 69  |u_TL>. It contai|
00064200  6e 73 20 74 68 65 20 69  63 6f 6e 20 6f 76 65 72  |ns the icon over|
00064210  20 77 68 69 63 68 20 74  68 65 20 6c 61 73 74 20  | which the last |
00064220  6d 65 6e 75 20 77 61 73  20 70 6f 70 70 65 64 20  |menu was popped |
00064230  75 70 20 69 65 20 74 68  65 20 63 75 72 72 65 6e  |up ie the curren|
00064240  74 20 6d 65 6e 75 20 69  66 20 69 74 20 69 73 20  |t menu if it is |
00064250  73 74 69 6c 6c 20 6f 70  65 6e 2e 00 44 41 54 41  |still open..DATA|
00064260  d1 00 00 00 6d 65 6e 75  5f 63 75 72 72 65 6e 74  |....menu_current|
00064270  5f 77 69 6e 64 6f 77 0a  54 68 69 73 20 76 61 72  |_window.This var|
00064280  69 61 62 6c 65 20 6f 66  20 74 79 70 65 20 3c 77  |iable of type <w|
00064290  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 3e 20 69 73  |indow_handle> is|
000642a0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 54 69 6d  | defined in <Tim|
000642b0  73 4c 69 62 3a 4d 65 6e  75 2e 68 3d 3e 4d 65 6e  |sLib:Menu.h=>Men|
000642c0  75 5f 54 4c 3e 2e 20 49  74 20 63 6f 6e 74 61 69  |u_TL>. It contai|
000642d0  6e 73 20 74 68 65 20 77  69 6e 64 6f 77 20 6f 76  |ns the window ov|
000642e0  65 72 20 77 68 69 63 68  20 74 68 65 20 6c 61 73  |er which the las|
000642f0  74 20 6d 65 6e 75 20 77  61 73 20 70 6f 70 70 65  |t menu was poppe|
00064300  64 20 75 70 20 69 65 20  74 68 65 20 63 75 72 72  |d up ie the curr|
00064310  65 6e 74 20 6d 65 6e 75  20 69 66 20 69 74 20 69  |ent menu if it i|
00064320  73 20 73 74 69 6c 6c 20  6f 70 65 6e 2e 00 00 00  |s still open....|
00064330  44 41 54 41 a2 00 00 00  6d 65 6e 75 5f 63 75 72  |DATA....menu_cur|
00064340  72 65 6e 74 6f 70 65 6e  0a 54 68 65 20 76 61 72  |rentopen.The var|
00064350  69 61 62 6c 65 20 7b 2a  7d 6d 65 6e 75 5f 63 75  |iable {*}menu_cu|
00064360  72 72 65 6e 74 6f 70 65  6e 7b 2a 7d 20 69 73 20  |rrentopen{*} is |
00064370  64 65 66 69 6e 65 64 20  69 6e 20 3c 44 65 73 6b  |defined in <Desk|
00064380  4c 69 62 3a 4d 65 6e 75  2e 68 3d 3e 44 4c 5f 4d  |Lib:Menu.h=>DL_M|
00064390  65 6e 75 3e 20 61 73 20  61 20 76 61 72 69 61 62  |enu> as a variab|
000643a0  6c 65 20 68 6f 6c 64 69  6e 67 20 74 68 65 20 3c  |le holding the <|
000643b0  6d 65 6e 75 5f 70 74 72  3e 20 6f 66 20 74 68 65  |menu_ptr> of the|
000643c0  20 6c 61 73 74 20 6d 65  6e 75 20 6f 70 65 6e 65  | last menu opene|
000643d0  64 2e 00 00 44 41 54 41  b1 00 00 00 6d 65 6e 75  |d...DATA....menu|
000643e0  5f 63 75 72 72 65 6e 74  70 6f 73 0a 54 68 69 73  |_currentpos.This|
000643f0  20 76 61 72 69 61 62 6c  65 20 69 73 20 64 65 66  | variable is def|
00064400  69 6e 65 64 20 69 6e 20  3c 44 65 73 6b 4c 69 62  |ined in <DeskLib|
00064410  3a 4d 65 6e 75 2e 68 3d  3e 44 4c 5f 4d 65 6e 75  |:Menu.h=>DL_Menu|
00064420  3e 2e 20 49 74 20 69 73  20 6f 66 20 74 79 70 65  |>. It is of type|
00064430  20 3c 77 69 6d 70 5f 70  6f 69 6e 74 3e 2c 20 61  | <wimp_point>, a|
00064440  6e 64 20 68 6f 6c 64 73  20 74 68 65 20 70 6f 73  |nd holds the pos|
00064450  69 74 69 6f 6e 20 6f 66  20 74 68 65 20 6d 6f 73  |ition of the mos|
00064460  74 20 72 65 63 65 6e 74  20 6d 65 6e 75 20 73 68  |t recent menu sh|
00064470  6f 77 6e 20 77 69 74 68  20 3c 4d 65 6e 75 5f 53  |own with <Menu_S|
00064480  68 6f 77 3e 2e 00 00 00  44 41 54 41 a0 01 00 00  |how>....DATA....|
00064490  4d 65 6e 75 20 44 65 73  63 72 69 70 74 6f 72 0a  |Menu Descriptor.|
000644a0  41 20 6d 65 6e 75 20 64  65 73 63 72 69 70 74 6f  |A menu descripto|
000644b0  72 20 64 65 66 69 6e 65  73 20 61 20 73 65 71 75  |r defines a sequ|
000644c0  65 6e 63 65 20 6f 66 20  65 6e 74 72 69 65 73 20  |ence of entries |
000644d0  69 6e 20 61 20 6d 65 6e  75 2e 20 49 74 20 63 6f  |in a menu. It co|
000644e0  6e 73 69 73 74 73 20 6f  66 20 61 20 73 74 72 69  |nsists of a stri|
000644f0  6e 67 20 77 69 74 68 20  65 61 63 68 20 65 6e 74  |ng with each ent|
00064500  72 79 2c 20 73 65 70 61  72 61 74 65 64 20 62 79  |ry, separated by|
00064510  20 65 69 74 68 65 72 20  27 2c 27 20 6f 72 20 27  | either ',' or '|
00064520  7c 27 2e 0a 0a 45 61 63  68 20 65 6e 74 72 79 20  ||'...Each entry |
00064530  6d 61 79 20 62 65 20 70  72 65 66 69 78 65 64 20  |may be prefixed |
00064540  62 79 20 6f 6e 65 20 6f  72 20 6d 6f 72 65 20 6f  |by one or more o|
00064550  66 20 74 68 65 20 66 6f  6c 6c 6f 77 69 6e 67 3a  |f the following:|
00064560  0a 0a 20 20 20 20 21 09  54 69 63 6b 20 74 68 69  |..    !.Tick thi|
00064570  73 20 65 6e 74 72 79 0a  20 20 20 20 7e 09 53 68  |s entry.    ~.Sh|
00064580  61 64 65 20 74 68 69 73  20 65 6e 74 72 79 20 28  |ade this entry (|
00064590  63 61 6e 6e 6f 74 20 62  65 20 73 65 6c 65 63 74  |cannot be select|
000645a0  65 64 29 0a 20 20 20 20  3e 09 54 68 69 73 20 65  |ed).    >.This e|
000645b0  6e 74 72 79 20 68 61 73  20 61 20 64 69 61 6c 6f  |ntry has a dialo|
000645c0  67 75 65 20 62 6f 78 0a  0a 45 6e 74 72 69 65 73  |gue box..Entries|
000645d0  20 6d 61 79 20 6e 6f 74  20 63 6f 6e 74 61 69 6e  | may not contain|
000645e0  20 27 2c 27 20 6f 72 20  27 7c 27 20 61 6e 64 20  | ',' or '|' and |
000645f0  6d 61 79 20 6e 6f 74 20  73 74 61 72 74 20 77 69  |may not start wi|
00064600  74 68 20 27 21 27 2c 27  7e 27 2c 20 6f 72 20 27  |th '!','~', or '|
00064610  3e 27 2c 20 66 6f 72 20  6f 62 76 69 6f 75 73 20  |>', for obvious |
00064620  72 65 61 73 6f 6e 73 2e  44 41 54 41 6f 01 00 00  |reasons.DATAo...|
00064630  4d 65 6e 75 5f 44 65 74  61 63 68 4d 65 6e 75 0a  |Menu_DetachMenu.|
00064640  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 4d 65 6e  |Syntax:.void Men|
00064650  75 5f 44 65 74 61 63 68  4d 65 6e 75 20 28 3c 77  |u_DetachMenu (<w|
00064660  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 3e 20 77 69  |indow_handle> wi|
00064670  6e 2c 20 3c 69 63 6f 6e  5f 68 61 6e 64 6c 65 3e  |n, <icon_handle>|
00064680  20 69 63 6f 6e 29 3b 0a  48 65 61 64 65 72 3a 09  | icon);.Header:.|
00064690  3c 54 69 6d 73 4c 69 62  3a 4d 65 6e 75 2e 68 3d  |<TimsLib:Menu.h=|
000646a0  3e 4d 65 6e 75 5f 54 4c  3e 0a 0a 54 68 69 73 20  |>Menu_TL>..This |
000646b0  66 75 6e 63 74 69 6f 6e  20 64 65 74 61 63 68 65  |function detache|
000646c0  73 20 61 6e 79 20 6d 65  6e 75 73 20 6f 72 20 6d  |s any menus or m|
000646d0  65 6e 75 20 6d 61 6b 65  72 73 20 66 72 6f 6d 20  |enu makers from |
000646e0  74 68 65 20 67 69 76 65  6e 20 77 69 6e 64 6f 77  |the given window|
000646f0  20 28 61 6e 64 20 6f 70  74 69 6f 6e 61 6c 6c 79  | (and optionally|
00064700  2c 20 74 68 65 20 69 63  6f 6e 20 6d 61 79 20 61  |, the icon may a|
00064710  6c 73 6f 20 62 65 20 73  70 65 63 69 66 69 65 64  |lso be specified|
00064720  29 2e 20 49 66 20 2f 77  69 6e 64 6f 77 2f 20 69  |). If /window/ i|
00064730  73 20 7b 2a 7d 65 76 65  6e 74 5f 41 4e 59 7b 2a  |s {*}event_ANY{*|
00064740  7d 20 74 68 65 6e 20 6f  6e 6c 79 20 68 61 6e 64  |} then only hand|
00064750  6c 65 72 73 20 69 6e 73  74 61 6c 6c 65 64 20 77  |lers installed w|
00064760  69 74 68 20 74 68 65 20  77 69 6e 64 6f 77 20 73  |ith the window s|
00064770  65 74 20 74 6f 20 7b 2a  7d 65 76 65 6e 74 5f 41  |et to {*}event_A|
00064780  4e 59 7b 2a 7d 20 77 69  6c 6c 20 62 65 20 64 65  |NY{*} will be de|
00064790  74 61 63 68 65 64 2e 00  44 41 54 41 48 01 00 00  |tached..DATAH...|
000647a0  6d 65 6e 75 5f 64 69 73  70 6f 73 65 0a 53 79 6e  |menu_dispose.Syn|
000647b0  74 61 78 3a 09 76 6f 69  64 20 6d 65 6e 75 5f 64  |tax:.void menu_d|
000647c0  69 73 70 6f 73 65 20 28  3c 6d 65 6e 75 3e 20 2a  |ispose (<menu> *|
000647d0  6d 2c 20 69 6e 74 20 72  65 63 29 3b 0a 48 65 61  |m, int rec);.Hea|
000647e0  64 65 72 3a 09 3c 6d 65  6e 75 2e 68 3d 3e 6d 65  |der:.<menu.h=>me|
000647f0  6e 75 5f 68 3e 20 28 44  65 73 6b 74 6f 70 20 43  |nu_h> (Desktop C|
00064800  29 0a 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |)..Syntax:.void |
00064810  4d 65 6e 75 5f 44 69 73  70 6f 73 65 20 28 3c 6d  |Menu_Dispose (<m|
00064820  65 6e 75 3e 20 6d 2c 20  3c 42 4f 4f 4c 3e 20 72  |enu> m, <BOOL> r|
00064830  65 63 29 3b 0a 48 65 61  64 65 72 3a 09 3c 54 69  |ec);.Header:.<Ti|
00064840  6d 73 4c 69 62 3a 4d 65  6e 75 2e 68 3d 3e 4d 65  |msLib:Menu.h=>Me|
00064850  6e 75 5f 54 4c 3e 20 28  54 69 6d 73 4c 69 62 29  |nu_TL> (TimsLib)|
00064860  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00064870  64 69 73 70 6f 73 65 73  20 6f 66 20 74 68 65 20  |disposes of the |
00064880  6d 65 6e 75 20 70 6f 69  6e 74 65 64 20 74 6f 20  |menu pointed to |
00064890  62 79 20 2f 6d 2f 2e 20  49 66 20 2f 72 65 63 2f  |by /m/. If /rec/|
000648a0  20 69 73 20 6e 6f 6e 2d  7a 65 72 6f 20 74 68 65  | is non-zero the|
000648b0  6e 20 61 6c 6c 20 73 75  62 6d 65 6e 75 73 20 61  |n all submenus a|
000648c0  72 65 20 72 65 63 75 72  73 69 76 65 6c 79 20 64  |re recursively d|
000648d0  69 73 70 6f 73 65 64 20  6f 66 20 61 6c 73 6f 2e  |isposed of also.|
000648e0  44 41 54 41 81 01 00 00  4d 65 6e 75 5f 45 78 74  |DATA....Menu_Ext|
000648f0  65 6e 64 0a 53 79 6e 74  61 78 3a 09 3c 6d 65 6e  |end.Syntax:.<men|
00064900  75 5f 70 74 72 3e 20 4d  65 6e 75 5f 45 78 74 65  |u_ptr> Menu_Exte|
00064910  6e 64 20 28 6d 65 6e 75  5f 70 74 72 20 6d 65 6e  |nd (menu_ptr men|
00064920  75 2c 20 63 68 61 72 20  2a 64 65 73 63 29 3b 0a  |u, char *desc);.|
00064930  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
00064940  3a 4d 65 6e 75 2e 68 3d  3e 44 4c 5f 4d 65 6e 75  |:Menu.h=>DL_Menu|
00064950  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
00064960  74 65 72 20 74 6f 20 6d  65 6e 75 2e 0a 0a 54 68  |ter to menu...Th|
00064970  69 73 20 66 75 6e 63 74  69 6f 6e 20 61 64 64 73  |is function adds|
00064980  20 74 68 65 20 3c 6d 65  6e 75 20 64 65 73 63 72  | the <menu descr|
00064990  69 70 74 69 6f 6e 3d 3e  6d 65 6e 75 5f 64 65 73  |iption=>menu_des|
000649a0  63 5f 3e 20 69 6e 20 2f  64 65 73 63 2f 20 74 6f  |c_> in /desc/ to|
000649b0  20 74 68 65 20 62 6f 74  74 6f 6d 20 6f 66 20 74  | the bottom of t|
000649c0  68 65 20 6d 65 6e 75 20  77 68 6f 73 65 20 70 6f  |he menu whose po|
000649d0  69 6e 74 65 72 20 69 73  20 67 69 76 65 6e 2e 20  |inter is given. |
000649e0  49 66 20 69 74 20 63 61  6e 6e 6f 74 20 73 75 63  |If it cannot suc|
000649f0  63 65 65 64 2c 20 69 74  20 72 65 74 75 72 6e 73  |ceed, it returns|
00064a00  20 74 68 65 20 70 6f 69  6e 74 65 72 20 74 6f 20  | the pointer to |
00064a10  74 68 65 20 6f 72 69 67  69 6e 61 6c 20 6d 65 6e  |the original men|
00064a20  75 2e 0a 0a 53 65 65 20  61 6c 73 6f 20 74 68 65  |u...See also the|
00064a30  20 44 65 73 6b 74 6f 70  20 43 20 66 75 6e 63 74  | Desktop C funct|
00064a40  69 6f 6e 2c 20 3c 6d 65  6e 75 5f 65 78 74 65 6e  |ion, <menu_exten|
00064a50  64 3d 3e 6d 65 6e 75 5f  65 78 74 65 6e 64 5f 3e  |d=>menu_extend_>|
00064a60  2e 00 00 00 44 41 54 41  06 01 00 00 6d 65 6e 75  |....DATA....menu|
00064a70  5f 65 78 74 65 6e 64 0a  53 79 6e 74 61 78 3a 09  |_extend.Syntax:.|
00064a80  76 6f 69 64 20 6d 65 6e  75 5f 65 78 74 65 6e 64  |void menu_extend|
00064a90  20 28 3c 6d 65 6e 75 3e  20 6d 2c 20 63 68 61 72  | (<menu> m, char|
00064aa0  20 2a 64 65 73 63 29 3b  0a 48 65 61 64 65 72 3a  | *desc);.Header:|
00064ab0  09 3c 6d 65 6e 75 2e 68  3d 3e 6d 65 6e 75 5f 68  |.<menu.h=>menu_h|
00064ac0  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
00064ad0  20 61 64 64 73 20 74 68  65 20 3c 6d 65 6e 75 20  | adds the <menu |
00064ae0  64 65 73 63 72 69 70 74  69 6f 6e 3d 3e 6d 65 6e  |description=>men|
00064af0  75 5f 64 65 73 63 5f 3e  20 67 69 76 65 6e 20 74  |u_desc_> given t|
00064b00  6f 20 74 68 65 20 62 6f  74 74 6f 6d 20 6f 66 20  |o the bottom of |
00064b10  74 68 65 20 6d 65 6e 75  20 73 70 65 63 69 66 69  |the menu specifi|
00064b20  65 64 2e 0a 0a 41 20 6d  65 6e 75 20 77 68 69 63  |ed...A menu whic|
00064b30  68 20 69 73 20 61 6c 72  65 61 64 79 20 61 20 73  |h is already a s|
00064b40  75 62 6d 65 6e 75 20 6f  66 20 61 6e 6f 74 68 65  |ubmenu of anothe|
00064b50  72 20 6d 65 6e 75 20 63  61 6e 6e 6f 74 20 62 65  |r menu cannot be|
00064b60  20 65 78 74 65 6e 64 65  64 2e 00 00 44 41 54 41  | extended...DATA|
00064b70  af 00 00 00 4d 65 6e 75  5f 46 61 64 65 45 6e 74  |....Menu_FadeEnt|
00064b80  72 79 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |ry.Syntax:.void |
00064b90  4d 65 6e 75 5f 46 61 64  65 45 6e 74 72 79 20 28  |Menu_FadeEntry (|
00064ba0  3c 6d 65 6e 75 3e 20 6d  2c 20 69 6e 74 20 65 6e  |<menu> m, int en|
00064bb0  74 72 79 29 3b 0a 48 65  61 64 65 72 3a 09 3c 54  |try);.Header:.<T|
00064bc0  69 6d 73 4c 69 62 3a 4d  65 6e 75 2e 68 3d 3e 4d  |imsLib:Menu.h=>M|
00064bd0  65 6e 75 5f 54 4c 3e 0a  0a 54 68 69 73 20 66 75  |enu_TL>..This fu|
00064be0  6e 63 74 69 6f 6e 2d 6c  69 6b 65 20 6d 61 63 72  |nction-like macr|
00064bf0  6f 20 73 68 61 64 65 73  20 74 68 65 20 67 69 76  |o shades the giv|
00064c00  65 6e 20 65 6e 74 72 79  20 69 6e 20 74 68 65 20  |en entry in the |
00064c10  67 69 76 65 6e 20 6d 65  6e 75 2e 00 44 41 54 41  |given menu..DATA|
00064c20  2f 04 00 00 6d 65 6e 75  5f 66 6c 61 67 73 0a 54  |/...menu_flags.T|
00064c30  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
00064c40  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
00064c50  57 69 6d 70 2e 68 3d 3e  57 69 6d 70 3e 2e 20 49  |Wimp.h=>Wimp>. I|
00064c60  74 20 69 73 20 61 20 74  79 70 65 20 67 69 76 69  |t is a type givi|
00064c70  6e 67 20 65 61 73 79 20  61 63 63 65 73 73 20 74  |ng easy access t|
00064c80  6f 20 69 6e 64 69 76 69  64 75 61 6c 20 6d 65 6e  |o individual men|
00064c90  75 20 66 6c 61 67 73 20  61 6e 64 20 74 68 65 69  |u flags and thei|
00064ca0  72 20 63 6f 6d 62 69 6e  65 64 20 76 61 6c 75 65  |r combined value|
00064cb0  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
00064cc0  61 73 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |as the following|
00064cd0  20 75 6e 69 6f 6e 3a 0a  0a 20 20 5c 7b 0a 20 20  | union:..  \{.  |
00064ce0  20 20 75 6e 73 69 67 6e  65 64 20 69 6e 74 20 76  |  unsigned int v|
00064cf0  61 6c 75 65 3b 0a 20 20  20 20 73 74 72 75 63 74  |alue;.    struct|
00064d00  0a 20 20 20 20 5c 7b 0a  20 20 20 20 20 20 75 6e  |.    \{.      un|
00064d10  73 69 67 6e 65 64 20 69  6e 74 20 74 69 63 6b 65  |signed int ticke|
00064d20  64 09 3a 20 31 3b 0a 20  20 20 20 20 20 75 6e 73  |d.: 1;.      uns|
00064d30  69 67 6e 65 64 20 69 6e  74 20 64 6f 74 74 65 64  |igned int dotted|
00064d40  09 3a 20 31 3b 0a 20 20  20 20 20 20 75 6e 73 69  |.: 1;.      unsi|
00064d50  67 6e 65 64 20 69 6e 74  20 77 72 69 74 61 62 6c  |gned int writabl|
00064d60  65 09 3a 20 31 3b 0a 20  20 20 20 20 20 75 6e 73  |e.: 1;.      uns|
00064d70  69 67 6e 65 64 20 69 6e  74 20 6e 6f 74 69 66 79  |igned int notify|
00064d80  73 75 62 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |sub.: 1;.      u|
00064d90  6e 73 69 67 6e 65 64 20  69 6e 74 20 6f 70 65 6e  |nsigned int open|
00064da0  73 68 61 64 65 64 09 3a  20 31 3b 0a 20 20 20 20  |shaded.: 1;.    |
00064db0  20 20 75 6e 73 69 67 6e  65 64 20 69 6e 74 20 64  |  unsigned int d|
00064dc0  75 6d 6d 79 32 09 3a 20  32 3b 0a 20 20 20 20 20  |ummy2.: 2;.     |
00064dd0  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 6c 61  | unsigned int la|
00064de0  73 74 09 3a 20 31 3b 0a  20 20 20 20 20 20 75 6e  |st.: 1;.      un|
00064df0  73 69 67 6e 65 64 20 69  6e 74 20 69 6e 64 74 69  |signed int indti|
00064e00  74 6c 65 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |tle.: 1;.      u|
00064e10  6e 73 69 67 6e 65 64 20  69 6e 74 20 64 75 6d 6d  |nsigned int dumm|
00064e20  79 31 33 09 3a 20 31 33  3b 0a 20 20 20 20 20 20  |y13.: 13;.      |
00064e30  75 6e 73 69 67 6e 65 64  20 69 6e 74 20 73 68 61  |unsigned int sha|
00064e40  64 65 64 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |ded.: 1;.      u|
00064e50  6e 73 69 67 6e 65 64 20  69 6e 74 20 64 75 6d 6d  |nsigned int dumm|
00064e60  79 31 09 3a 20 31 3b 0a  20 20 20 20 20 20 75 6e  |y1.: 1;.      un|
00064e70  73 69 67 6e 65 64 20 69  6e 74 20 66 6f 72 65 67  |signed int foreg|
00064e80  72 6f 75 6e 64 09 3a 20  34 3b 0a 20 20 20 20 20  |round.: 4;.     |
00064e90  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 62 61  | unsigned int ba|
00064ea0  63 6b 67 72 6f 75 6e 64  09 3a 20 34 3b 0a 20 20  |ckground.: 4;.  |
00064eb0  20 20 7d 20 64 61 74 61  3b 0a 20 20 7d 0a 7b 74  |  } data;.  }.{t|
00064ec0  61 62 7d 0a 8f 09 2f 6e  6f 74 69 66 79 73 75 62  |ab}.../notifysub|
00064ed0  2f 20 77 69 6c 6c 20 63  61 75 73 65 20 74 68 65  |/ will cause the|
00064ee0  20 74 61 73 6b 20 74 6f  20 72 65 63 65 69 76 65  | task to receive|
00064ef0  20 61 20 6d 65 73 73 61  67 65 20 72 61 74 68 65  | a message rathe|
00064f00  72 20 74 68 61 6e 20 6f  70 65 6e 69 6e 67 20 61  |r than opening a|
00064f10  20 73 75 62 6d 65 6e 75  2e 0a 8f 09 2f 6f 70 65  | submenu..../ope|
00064f20  6e 73 68 61 64 65 64 2f  20 61 6c 6c 6f 77 73 20  |nshaded/ allows |
00064f30  74 68 65 20 73 75 62 6d  65 6e 75 20 74 6f 20 62  |the submenu to b|
00064f40  65 20 6f 70 65 6e 65 64  20 65 76 65 6e 20 69 66  |e opened even if|
00064f50  20 74 68 69 73 20 65 6e  74 72 79 20 69 73 20 73  | this entry is s|
00064f60  68 61 64 65 64 2e 0a 8f  09 2f 6c 61 73 74 2f 20  |haded..../last/ |
00064f70  73 68 6f 75 6c 64 20 62  65 20 73 65 74 20 66 6f  |should be set fo|
00064f80  72 20 74 68 65 20 6c 61  73 74 20 65 6e 74 72 79  |r the last entry|
00064f90  20 69 6e 20 74 68 65 20  6d 65 6e 75 2e 0a 8f 09  | in the menu....|
00064fa0  2f 69 6e 64 74 69 74 6c  65 2f 20 69 6e 20 74 68  |/indtitle/ in th|
00064fb0  65 20 5f 66 69 72 73 74  20 6d 65 6e 75 20 65 6e  |e _first menu en|
00064fc0  74 72 79 5f 20 61 6c 6c  6f 77 73 20 74 68 65 20  |try_ allows the |
00064fd0  74 69 74 6c 65 20 74 6f  20 62 65 20 69 6e 64 69  |title to be indi|
00064fe0  72 65 63 74 65 64 2e 0a  8f 09 2f 66 6f 72 65 67  |rected..../foreg|
00064ff0  72 6f 75 6e 64 2f 2c 20  2f 62 61 63 6b 67 72 6f  |round/, /backgro|
00065000  75 6e 64 2f 20 61 6e 64  20 2f 73 68 61 64 65 64  |und/ and /shaded|
00065010  20 61 72 65 20 75 73 65  6c 65 73 73 20 61 6e 64  | are useless and|
00065020  20 68 61 76 65 20 6e 6f  20 70 75 72 70 6f 73 65  | have no purpose|
00065030  2e 20 57 68 61 74 20 61  72 65 20 74 68 65 79 20  |. What are they |
00065040  64 6f 69 6e 67 20 68 65  72 65 3f 00 44 41 54 41  |doing here?.DATA|
00065050  23 01 00 00 4d 65 6e 75  5f 47 65 74 46 6c 61 67  |#...Menu_GetFlag|
00065060  73 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 4d  |s.Syntax:.void M|
00065070  65 6e 75 5f 47 65 74 46  6c 61 67 73 20 28 3c 6d  |enu_GetFlags (<m|
00065080  65 6e 75 5f 70 74 72 3e  20 6d 65 6e 75 2c 20 69  |enu_ptr> menu, i|
00065090  6e 74 20 65 6e 74 72 79  2c 20 69 6e 74 20 2a 74  |nt entry, int *t|
000650a0  69 63 6b 2c 20 69 6e 74  20 2a 73 68 61 64 65 29  |ick, int *shade)|
000650b0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000650c0  69 62 3a 4d 65 6e 75 2e  68 3d 3e 44 4c 5f 4d 65  |ib:Menu.h=>DL_Me|
000650d0  6e 75 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |nu>..This functi|
000650e0  6f 6e 20 72 65 61 64 73  20 74 68 65 20 73 74 61  |on reads the sta|
000650f0  74 65 20 6f 66 20 2f 65  6e 74 72 79 2f 20 69 6e  |te of /entry/ in|
00065100  20 74 68 65 20 67 69 76  65 6e 20 6d 65 6e 75 2e  | the given menu.|
00065110  20 49 74 20 77 69 6c 6c  20 73 65 74 20 7b 2f 7d  | It will set {/}|
00065120  2a 74 69 63 6b 7b 2f 7d  20 6f 72 20 7b 2f 7d 2a  |*tick{/} or {/}*|
00065130  73 68 61 64 65 7b 2f 7d  20 74 6f 20 31 20 69 66  |shade{/} to 1 if|
00065140  20 74 68 65 20 65 6e 74  72 79 20 69 73 20 74 69  | the entry is ti|
00065150  63 6b 65 64 20 6f 72 20  73 68 61 64 65 64 2c 20  |cked or shaded, |
00065160  61 73 20 61 70 70 72 6f  70 72 69 61 74 65 2e 00  |as appropriate..|
00065170  44 41 54 41 cf 00 00 00  4d 65 6e 75 5f 47 65 74  |DATA....Menu_Get|
00065180  54 65 78 74 0a 53 79 6e  74 61 78 3a 09 63 68 61  |Text.Syntax:.cha|
00065190  72 20 2a 4d 65 6e 75 5f  47 65 74 54 65 78 74 20  |r *Menu_GetText |
000651a0  28 3c 6d 65 6e 75 5f 70  74 72 3e 20 6d 65 6e 75  |(<menu_ptr> menu|
000651b0  2c 20 69 6e 74 20 65 6e  74 72 79 29 3b 0a 48 65  |, int entry);.He|
000651c0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 4d  |ader:.<DeskLib:M|
000651d0  65 6e 75 2e 68 3d 3e 44  4c 5f 4d 65 6e 75 3e 0a  |enu.h=>DL_Menu>.|
000651e0  0a 52 65 74 75 72 73 3a  09 50 6f 69 6e 74 65 72  |.Returs:.Pointer|
000651f0  20 74 6f 20 74 65 78 74  2e 0a 0a 54 68 69 73 20  | to text...This |
00065200  66 75 6e 63 74 69 6f 6e  20 72 65 74 75 72 6e 73  |function returns|
00065210  20 61 20 70 6f 69 6e 74  65 72 20 74 6f 20 74 68  | a pointer to th|
00065220  65 20 74 65 78 74 20 6f  66 20 74 68 65 20 67 69  |e text of the gi|
00065230  76 65 6e 20 6d 65 6e 75  20 65 6e 74 72 79 2e 00  |ven menu entry..|
00065240  44 41 54 41 7f 01 00 00  6d 65 6e 75 2e 68 0a 54  |DATA....menu.h.T|
00065250  68 65 20 5c 3c 6d 65 6e  75 2e 68 3e 20 68 65 61  |he \<menu.h> hea|
00065260  64 65 72 20 64 65 63 6c  61 72 65 73 20 61 20 6e  |der declares a n|
00065270  75 6d 62 65 72 20 6f 66  20 66 75 6e 63 74 69 6f  |umber of functio|
00065280  6e 73 20 66 6f 72 20 68  61 6e 64 6c 69 6e 67 20  |ns for handling |
00065290  6d 65 6e 75 73 2e 20 49  74 20 61 6c 73 6f 20 64  |menus. It also d|
000652a0  65 66 69 6e 65 73 20 6f  6e 65 20 74 79 70 65 20  |efines one type |
000652b0  72 65 6c 61 74 69 6e 67  20 74 6f 20 6d 65 6e 75  |relating to menu|
000652c0  73 2e 0a 0a 46 75 6e 63  74 69 6f 6e 73 3a 0a 7b  |s...Functions:.{|
000652d0  69 6e 64 65 6e 74 20 39  7d 0a 23 54 61 62 6c 65  |indent 9}.#Table|
000652e0  20 34 0a 3c 6d 65 6e 75  5f 64 69 73 70 6f 73 65  | 4.<menu_dispose|
000652f0  3e 0a 3c 6d 65 6e 75 5f  65 78 74 65 6e 64 3d 3e  |>.<menu_extend=>|
00065300  6d 65 6e 75 5f 65 78 74  65 6e 64 5f 3e 0a 3c 6d  |menu_extend_>.<m|
00065310  65 6e 75 5f 6d 61 6b 65  5f 73 70 72 69 74 65 3e  |enu_make_sprite>|
00065320  0a 3c 6d 65 6e 75 5f 6d  61 6b 65 5f 77 72 69 74  |.<menu_make_writ|
00065330  65 61 62 6c 65 3e 0a 3c  6d 65 6e 75 5f 6e 65 77  |eable>.<menu_new|
00065340  3d 3e 6d 65 6e 75 5f 6e  65 77 5f 3e 0a 3c 6d 65  |=>menu_new_>.<me|
00065350  6e 75 5f 73 65 74 66 6c  61 67 73 3d 3e 6d 65 6e  |nu_setflags=>men|
00065360  75 5f 73 65 74 66 6c 61  67 73 5f 3e 0a 3c 6d 65  |u_setflags_>.<me|
00065370  6e 75 5f 73 75 62 6d 65  6e 75 3e 0a 3c 6d 65 6e  |nu_submenu>.<men|
00065380  75 5f 73 79 73 68 61 6e  64 6c 65 3e 0a 23 45 6e  |u_syshandle>.#En|
00065390  64 54 61 62 6c 65 0a 0a  23 69 6e 64 65 6e 74 20  |dTable..#indent |
000653a0  30 0a 54 79 70 65 3a 0a  0a 7b 61 6c 69 67 6e 20  |0.Type:..{align |
000653b0  63 65 6e 74 72 65 7d 3c  6d 65 6e 75 3e 0a 0a 00  |centre}<menu>...|
000653c0  44 41 54 41 3c 01 00 00  6d 65 6e 75 5f 68 61 6e  |DATA<...menu_han|
000653d0  64 6c 65 72 0a 54 68 69  73 20 74 79 70 65 20 69  |dler.This type i|
000653e0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 54 69  |s defined in <Ti|
000653f0  6d 73 4c 69 62 3a 4d 65  6e 75 2e 68 3d 3e 4d 65  |msLib:Menu.h=>Me|
00065400  6e 75 5f 54 4c 3e 2e 20  49 74 20 69 73 20 61 20  |nu_TL>. It is a |
00065410  66 75 6e 63 74 69 6f 6e  20 75 73 65 64 20 77 68  |function used wh|
00065420  65 6e 20 73 65 6c 65 63  74 69 6f 6e 73 20 61 72  |en selections ar|
00065430  65 20 6d 61 64 65 20 66  72 6f 6d 20 61 20 6d 65  |e made from a me|
00065440  6e 75 2e 20 49 74 20 68  61 73 20 74 68 65 20 66  |nu. It has the f|
00065450  6f 72 6d 3a 0a 0a 7b 66  43 6f 64 65 3b 61 6c 69  |orm:..{fCode;ali|
00065460  67 6e 20 63 65 6e 74 72  65 7d 76 6f 69 64 20 6d  |gn centre}void m|
00065470  79 66 75 6e 63 20 28 76  6f 69 64 20 2a 72 65 66  |yfunc (void *ref|
00065480  65 72 65 6e 63 65 2c 20  69 6e 74 20 2a 68 69 74  |erence, int *hit|
00065490  29 3b 7b 66 3b 61 6c 69  67 6e 7d 0a 0a 77 68 65  |);{f;align}..whe|
000654a0  72 65 20 2f 72 65 66 65  72 65 6e 63 65 2f 20 69  |re /reference/ i|
000654b0  73 20 61 20 75 73 65 72  20 64 65 66 69 6e 65 64  |s a user defined|
000654c0  20 76 61 6c 75 65 20 61  6e 64 20 2f 68 69 74 2f  | value and /hit/|
000654d0  20 69 73 20 61 20 2d 31  20 74 65 72 6d 69 6e 61  | is a -1 termina|
000654e0  74 65 64 20 6c 69 73 74  20 6f 66 20 6d 65 6e 75  |ted list of menu|
000654f0  20 73 65 6c 65 63 74 69  6f 6e 73 2e 44 41 54 41  | selections.DATA|
00065500  11 02 00 00 6d 65 6e 75  5f 69 74 65 6d 0a 54 68  |....menu_item.Th|
00065510  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
00065520  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 57  |ed in <DeskLib:W|
00065530  69 6d 70 2e 68 3d 3e 57  69 6d 70 3e 2e 20 49 74  |imp.h=>Wimp>. It|
00065540  20 69 73 20 61 20 73 74  72 75 63 74 75 72 65 20  | is a structure |
00065550  63 6f 6e 74 61 69 6e 69  6e 67 20 74 68 65 20 64  |containing the d|
00065560  65 66 69 6e 69 74 69 6f  6e 20 6f 66 20 61 20 6d  |efinition of a m|
00065570  65 6e 75 20 69 74 65 6d  3a 0a 0a 20 20 5c 7b 0a  |enu item:..  \{.|
00065580  20 20 20 20 3c 6d 65 6e  75 5f 66 6c 61 67 73 3e  |    <menu_flags>|
00065590  09 6d 65 6e 75 66 6c 61  67 73 3b 0a 20 20 20 20  |.menuflags;.    |
000655a0  3c 6d 65 6e 75 5f 73 75  62 6d 65 6e 75 3d 3e 6d  |<menu_submenu=>m|
000655b0  65 6e 75 5f 73 75 62 6d  65 6e 75 5f 3e 09 73 75  |enu_submenu_>.su|
000655c0  62 6d 65 6e 75 3b 0a 20  20 20 20 3c 69 63 6f 6e  |bmenu;.    <icon|
000655d0  5f 66 6c 61 67 73 3e 09  69 63 6f 6e 66 6c 61 67  |_flags>.iconflag|
000655e0  73 3b 0a 20 20 20 20 3c  69 63 6f 6e 5f 64 61 74  |s;.    <icon_dat|
000655f0  61 3e 09 69 63 6f 6e 64  61 74 61 3b 0a 20 20 7d  |a>.icondata;.  }|
00065600  0a 0a 49 66 20 74 68 65  20 65 6e 74 72 79 20 68  |..If the entry h|
00065610  61 73 20 6e 6f 20 73 75  62 6d 65 6e 75 2f 77 69  |as no submenu/wi|
00065620  6e 64 6f 77 2c 20 7b 2f  7d 73 75 62 6d 65 6e 75  |ndow, {/}submenu|
00065630  2e 76 61 6c 75 65 7b 2f  7d 20 73 68 6f 75 6c 64  |.value{/} should|
00065640  20 62 65 20 73 65 74 20  74 6f 20 2d 31 2e 0a 0a  | be set to -1...|
00065650  53 6f 6d 65 20 62 69 74  73 20 6f 66 20 74 68 65  |Some bits of the|
00065660  20 69 63 6f 6e 66 6c 61  67 73 20 61 72 65 20 69  | iconflags are i|
00065670  67 6e 6f 72 65 64 3a 0a  7b 74 61 62 7d 0a 8f 09  |gnored:.{tab}...|
00065680  49 63 6f 6e 20 69 73 20  61 6c 77 61 79 73 20 76  |Icon is always v|
00065690  65 72 74 69 63 61 6c 6c  79 20 63 65 6e 74 72 65  |ertically centre|
000656a0  64 2e 0a 8f 09 49 63 6f  6e 20 6e 65 76 65 72 20  |d....Icon never |
000656b0  6e 65 65 64 73 20 68 65  6c 70 20 66 6f 72 20 72  |needs help for r|
000656c0  65 64 72 61 77 69 6e 67  0a 8f 09 42 75 74 74 6f  |edrawing...Butto|
000656d0  6e 20 74 79 70 65 20 69  73 20 61 6c 77 61 79 73  |n type is always|
000656e0  20 39 0a 8f 09 45 53 47  20 69 73 20 61 6c 77 61  | 9...ESG is alwa|
000656f0  79 73 20 30 0a 8f 09 44  65 6c 65 74 65 64 20 62  |ys 0...Deleted b|
00065700  69 74 20 69 73 20 69 67  6e 6f 72 65 64 00 00 00  |it is ignored...|
00065710  44 41 54 41 25 01 00 00  6d 65 6e 75 5f 6d 61 6b  |DATA%...menu_mak|
00065720  65 5f 73 70 72 69 74 65  0a 53 79 6e 74 61 78 3a  |e_sprite.Syntax:|
00065730  09 76 6f 69 64 20 6d 65  6e 75 5f 6d 61 6b 65 5f  |.void menu_make_|
00065740  73 70 72 69 74 65 20 28  3c 6d 65 6e 75 3e 20 6d  |sprite (<menu> m|
00065750  2c 20 69 6e 74 20 65 6e  74 72 79 2c 20 63 68 61  |, int entry, cha|
00065760  72 20 2a 73 70 72 29 3b  0a 48 65 61 64 65 72 3a  |r *spr);.Header:|
00065770  09 3c 6d 65 6e 75 2e 68  3d 3e 6d 65 6e 75 5f 68  |.<menu.h=>menu_h|
00065780  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
00065790  20 6d 61 6b 65 73 20 6f  6e 65 20 6d 65 6e 75 20  | makes one menu |
000657a0  65 6e 74 72 79 20 69 6e  20 74 68 65 20 73 70 65  |entry in the spe|
000657b0  63 69 66 69 65 64 20 6d  65 6e 75 20 69 6e 74 6f  |cified menu into|
000657c0  20 61 20 73 70 72 69 74  65 2e 20 45 6e 74 72 79  | a sprite. Entry|
000657d0  20 69 73 20 74 68 65 20  65 6e 74 72 79 20 6e 75  | is the entry nu|
000657e0  6d 62 65 72 20 61 6e 64  20 2f 73 70 72 2f 20 69  |mber and /spr/ i|
000657f0  73 20 61 20 70 6f 69 6e  74 65 72 20 74 6f 20 74  |s a pointer to t|
00065800  68 65 20 73 70 72 69 74  65 20 6e 61 6d 65 2e 20  |he sprite name. |
00065810  54 68 65 20 73 70 72 69  74 65 20 69 73 20 66 72  |The sprite is fr|
00065820  6f 6d 20 74 68 65 20 3c  72 65 73 73 70 72 5f 61  |om the <resspr_a|
00065830  72 65 61 3e 2e 00 00 00  44 41 54 41 74 01 00 00  |rea>....DATAt...|
00065840  6d 65 6e 75 5f 6d 61 6b  65 5f 77 72 69 74 65 61  |menu_make_writea|
00065850  62 6c 65 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |ble.Syntax:.void|
00065860  20 6d 65 6e 75 5f 6d 61  6b 65 5f 77 72 69 74 65  | menu_make_write|
00065870  61 62 6c 65 20 28 3c 6d  65 6e 75 3e 20 6d 2c 20  |able (<menu> m, |
00065880  69 6e 74 20 65 6e 74 72  79 2c 20 63 68 61 72 20  |int entry, char |
00065890  2a 62 75 66 2c 20 69 6e  74 20 62 75 66 6c 65 6e  |*buf, int buflen|
000658a0  2c 20 63 68 61 72 20 2a  76 61 6c 73 74 72 29 3b  |, char *valstr);|
000658b0  0a 48 65 61 64 65 72 3a  09 3c 6d 65 6e 75 2e 68  |.Header:.<menu.h|
000658c0  3d 3e 6d 65 6e 75 5f 68  3e 0a 0a 54 68 69 73 20  |=>menu_h>..This |
000658d0  66 75 6e 63 74 69 6f 6e  20 6d 61 6b 65 73 20 6f  |function makes o|
000658e0  6e 65 20 6f 66 20 74 68  65 20 65 6e 74 72 69 65  |ne of the entrie|
000658f0  73 20 69 6e 20 74 68 65  20 67 69 76 65 6e 20 6d  |s in the given m|
00065900  65 6e 75 20 69 6e 74 6f  20 61 20 77 72 69 74 65  |enu into a write|
00065910  61 62 6c 65 20 65 6e 74  72 79 2e 20 2f 62 75 66  |able entry. /buf|
00065920  2f 20 69 73 20 61 20 70  6f 69 6e 74 65 72 20 74  |/ is a pointer t|
00065930  6f 20 61 20 62 75 66 66  65 72 20 28 6f 66 20 6c  |o a buffer (of l|
00065940  65 6e 67 74 68 20 7b 2f  7d 62 75 66 6c 65 6e 7b  |ength {/}buflen{|
00065950  2f 7d 29 20 74 6f 20 68  6f 6c 64 20 74 68 65 20  |/}) to hold the |
00065960  74 65 78 74 2e 20 2f 76  61 6c 73 74 72 2f 20 70  |text. /valstr/ p|
00065970  6f 69 6e 74 73 20 74 6f  20 74 68 65 20 3c 76 61  |oints to the <va|
00065980  6c 69 64 61 74 69 6f 6e  20 73 74 72 69 6e 67 3d  |lidation string=|
00065990  3e 53 57 49 3a 77 69 6d  70 5f 76 61 6c 69 64 61  |>SWI:wimp_valida|
000659a0  74 69 6f 6e 73 74 72 69  6e 67 3e 2e 44 41 54 41  |tionstring>.DATA|
000659b0  27 01 00 00 6d 65 6e 75  5f 6d 61 6b 65 72 0a 54  |'...menu_maker.T|
000659c0  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
000659d0  6e 65 64 20 69 6e 20 3c  54 69 6d 73 4c 69 62 3a  |ned in <TimsLib:|
000659e0  4d 65 6e 75 2e 68 3d 3e  4d 65 6e 75 5f 54 4c 3e  |Menu.h=>Menu_TL>|
000659f0  2e 20 49 74 20 69 73 20  61 20 66 75 6e 63 74 69  |. It is a functi|
00065a00  6f 6e 20 75 73 65 64 20  77 68 65 6e 20 61 20 6d  |on used when a m|
00065a10  65 6e 75 20 6e 65 65 64  73 20 74 6f 20 62 65 20  |enu needs to be |
00065a20  63 72 65 61 74 65 64 2e  20 49 74 20 68 61 73 20  |created. It has |
00065a30  74 68 65 20 66 6f 72 6d  3a 0a 0a 7b 66 43 6f 64  |the form:..{fCod|
00065a40  65 3b 61 6c 69 67 6e 20  63 65 6e 74 72 65 7d 3c  |e;align centre}<|
00065a50  6d 65 6e 75 3e 20 6d 79  66 75 6e 63 20 28 76 6f  |menu> myfunc (vo|
00065a60  69 64 20 2a 72 65 66 65  72 65 6e 63 65 29 3b 7b  |id *reference);{|
00065a70  66 3b 61 6c 69 67 6e 7d  0a 0a 77 68 65 72 65 20  |f;align}..where |
00065a80  2f 72 65 66 65 72 65 6e  63 65 2f 20 69 73 20 61  |/reference/ is a|
00065a90  20 75 73 65 72 20 64 65  66 69 6e 65 64 20 76 61  | user defined va|
00065aa0  6c 75 65 20 61 6e 64 20  74 68 65 20 66 75 6e 63  |lue and the func|
00065ab0  74 69 6f 6e 20 72 65 74  75 72 6e 73 20 74 68 65  |tion returns the|
00065ac0  20 6e 65 77 20 6d 65 6e  75 27 73 20 68 61 6e 64  | new menu's hand|
00065ad0  6c 65 2e 00 44 41 54 41  b5 01 00 00 4d 65 6e 75  |le..DATA....Menu|
00065ae0  5f 4d 61 6b 65 57 72 69  74 61 62 6c 65 0a 53 79  |_MakeWritable.Sy|
00065af0  6e 74 61 78 3a 09 76 6f  69 64 20 4d 65 6e 75 5f  |ntax:.void Menu_|
00065b00  4d 61 6b 65 57 72 69 74  61 62 6c 65 20 28 3c 6d  |MakeWritable (<m|
00065b10  65 6e 75 5f 70 74 72 3e  20 6d 65 6e 75 2c 20 69  |enu_ptr> menu, i|
00065b20  6e 74 20 65 6e 74 72 79  2c 20 63 68 61 72 20 2a  |nt entry, char *|
00065b30  74 2c 20 69 6e 74 20 73  69 7a 65 2c 20 63 68 61  |t, int size, cha|
00065b40  72 20 2a 76 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |r *v);.Header:.<|
00065b50  44 65 73 6b 4c 69 62 3a  4d 65 6e 75 2e 68 3d 3e  |DeskLib:Menu.h=>|
00065b60  44 4c 5f 4d 65 6e 75 3e  0a 0a 53 79 6e 74 61 78  |DL_Menu>..Syntax|
00065b70  3a 09 76 6f 69 64 20 4d  65 6e 75 5f 4d 61 6b 65  |:.void Menu_Make|
00065b80  57 72 69 74 61 62 6c 65  20 28 3c 6d 65 6e 75 3e  |Writable (<menu>|
00065b90  20 6d 2c 20 69 6e 74 20  65 6e 74 72 79 2c 20 63  | m, int entry, c|
00065ba0  68 61 72 20 2a 74 2c 20  69 6e 74 20 73 69 7a 65  |har *t, int size|
00065bb0  2c 20 63 68 61 72 20 2a  76 29 3b 0a 48 65 61 64  |, char *v);.Head|
00065bc0  65 72 3a 09 3c 54 69 6d  73 4c 69 62 3a 4d 65 6e  |er:.<TimsLib:Men|
00065bd0  75 2e 68 3d 3e 4d 65 6e  75 5f 54 4c 3e 0a 0a 54  |u.h=>Menu_TL>..T|
00065be0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 6d 61 6b  |his function mak|
00065bf0  65 73 20 61 20 6d 65 6e  75 20 69 74 65 6d 20 77  |es a menu item w|
00065c00  72 69 74 65 61 62 6c 65  2e 20 49 74 65 6d 20 2f  |riteable. Item /|
00065c10  65 6e 74 72 79 2f 20 77  69 6c 6c 20 62 65 63 6f  |entry/ will beco|
00065c20  6d 65 20 61 6e 20 69 6e  64 69 72 65 63 74 65 64  |me an indirected|
00065c30  20 77 72 69 74 65 61 62  6c 65 20 69 63 6f 6e 2c  | writeable icon,|
00065c40  20 77 69 74 68 20 64 61  74 61 20 70 6f 69 6e 74  | with data point|
00065c50  65 72 20 2f 74 2f 2c 20  76 61 6c 69 64 61 74 69  |er /t/, validati|
00065c60  6f 6e 20 73 74 72 69 6e  67 20 2f 76 2f 2c 20 61  |on string /v/, a|
00065c70  6e 64 20 6d 61 78 69 6d  75 6d 20 6c 65 6e 67 74  |nd maximum lengt|
00065c80  68 20 2f 73 69 7a 65 2f  2e 00 00 00 44 41 54 41  |h /size/....DATA|
00065c90  53 02 00 00 4d 65 6e 75  5f 4e 65 77 0a 53 79 6e  |S...Menu_New.Syn|
00065ca0  74 61 78 3a 09 3c 6d 65  6e 75 5f 70 74 72 3e 20  |tax:.<menu_ptr> |
00065cb0  4d 65 6e 75 5f 4e 65 77  28 63 68 61 72 20 2a 74  |Menu_New(char *t|
00065cc0  2c 20 63 68 61 72 20 2a  64 65 73 63 29 3b 0a 48  |, char *desc);.H|
00065cd0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00065ce0  4d 65 6e 75 2e 68 3d 3e  44 4c 5f 4d 65 6e 75 3e  |Menu.h=>DL_Menu>|
00065cf0  0a 0a 52 65 74 75 72 6e  73 3a 09 4d 65 6e 75 20  |..Returns:.Menu |
00065d00  70 6f 69 6e 74 65 72 2c  20 6f 72 20 3c 4e 55 4c  |pointer, or <NUL|
00065d10  4c 3e 20 69 66 20 66 61  69 6c 65 64 2e 0a 0a 54  |L> if failed...T|
00065d20  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 72 65  |his function cre|
00065d30  61 74 65 73 20 61 20 6e  65 77 20 6d 65 6e 75 2e  |ates a new menu.|
00065d40  20 54 68 65 20 74 69 74  6c 65 20 6f 66 20 74 68  | The title of th|
00065d50  65 20 6d 65 6e 75 20 69  73 20 67 69 76 65 6e 20  |e menu is given |
00065d60  69 6e 20 74 68 65 20 73  74 72 69 6e 67 20 70 6f  |in the string po|
00065d70  69 6e 74 65 64 20 74 6f  20 62 79 20 2f 74 2f 2c  |inted to by /t/,|
00065d80  20 61 6e 64 20 74 68 65  20 3c 6d 65 6e 75 20 64  | and the <menu d|
00065d90  65 73 63 72 69 70 74 6f  72 3d 3e 6d 65 6e 75 5f  |escriptor=>menu_|
00065da0  64 65 73 63 5f 3e 20 69  73 20 67 69 76 65 6e 20  |desc_> is given |
00065db0  69 6e 20 2f 64 65 73 63  2f 2e 20 54 68 65 20 6d  |in /desc/. The m|
00065dc0  65 6e 75 20 63 61 6e 20  62 65 20 64 69 73 70 6c  |enu can be displ|
00065dd0  61 79 65 64 20 75 73 69  6e 67 20 3c 4d 65 6e 75  |ayed using <Menu|
00065de0  5f 53 68 6f 77 3e 2e 0a  0a 4e 42 3a 20 54 68 69  |_Show>...NB: Thi|
00065df0  73 20 66 75 6e 63 74 69  6f 6e 20 6e 65 65 64 73  |s function needs|
00065e00  20 3c 44 65 73 6b 4c 69  62 3a 53 63 72 65 65 6e  | <DeskLib:Screen|
00065e10  2e 68 3d 3e 53 63 72 65  65 6e 3e 20 66 75 6e 63  |.h=>Screen> func|
00065e20  74 69 6f 6e 73 2e 20 59  6f 75 20 6d 75 73 74 20  |tions. You must |
00065e30  68 61 76 65 20 63 61 6c  6c 65 64 20 3c 53 63 72  |have called <Scr|
00065e40  65 65 6e 5f 43 61 63 68  65 4d 6f 64 65 49 6e 66  |een_CacheModeInf|
00065e50  6f 3e 20 62 65 66 6f 72  65 20 75 73 69 6e 67 20  |o> before using |
00065e60  4d 65 6e 75 20 66 75 6e  63 74 69 6f 6e 73 2e 0a  |Menu functions..|
00065e70  0a 53 65 65 20 61 6c 73  6f 20 74 68 65 20 44 65  |.See also the De|
00065e80  73 6b 74 6f 70 20 43 20  66 75 6e 63 74 69 6f 6e  |sktop C function|
00065e90  2c 20 3c 6d 65 6e 75 5f  6e 65 77 3d 3e 6d 65 6e  |, <menu_new=>men|
00065ea0  75 5f 6e 65 77 5f 3e 2e  0a 53 65 65 20 61 6c 73  |u_new_>..See als|
00065eb0  6f 20 74 68 65 20 54 69  6d 73 4c 69 62 20 66 75  |o the TimsLib fu|
00065ec0  6e 63 74 69 6f 6e 2c 20  3c 4d 65 6e 75 5f 4e 65  |nction, <Menu_Ne|
00065ed0  77 3d 3e 4d 65 6e 75 5f  4e 65 77 5f 5f 3e 2e 00  |w=>Menu_New__>..|
00065ee0  44 41 54 41 bd 01 00 00  6d 65 6e 75 5f 6e 65 77  |DATA....menu_new|
00065ef0  0a 53 79 6e 74 61 78 3a  09 3c 6d 65 6e 75 3e 20  |.Syntax:.<menu> |
00065f00  6d 65 6e 75 5f 6e 65 77  20 28 63 68 61 72 20 2a  |menu_new (char *|
00065f10  74 2c 20 63 68 61 72 20  2a 64 65 73 63 29 3b 0a  |t, char *desc);.|
00065f20  48 65 61 64 65 72 3a 09  3c 6d 65 6e 75 2e 68 3d  |Header:.<menu.h=|
00065f30  3e 6d 65 6e 75 5f 68 3e  0a 0a 52 65 74 75 72 6e  |>menu_h>..Return|
00065f40  73 3a 09 54 68 65 20 6d  65 6e 75 20 68 61 6e 64  |s:.The menu hand|
00065f50  6c 65 20 6f 66 20 74 68  65 20 6d 65 6e 75 2e 0a  |le of the menu..|
00065f60  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
00065f70  72 65 61 74 65 73 20 61  20 6e 65 77 20 6d 65 6e  |reates a new men|
00065f80  75 2e 20 54 68 65 20 74  69 74 6c 65 20 6f 66 20  |u. The title of |
00065f90  74 68 65 20 6d 65 6e 75  20 69 73 20 67 69 76 65  |the menu is give|
00065fa0  6e 20 69 6e 20 74 68 65  20 73 74 72 69 6e 67 20  |n in the string |
00065fb0  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 2f 74  |pointed to by /t|
00065fc0  2f 2c 20 61 6e 64 20 74  68 65 20 3c 6d 65 6e 75  |/, and the <menu|
00065fd0  20 64 65 73 63 72 69 70  74 6f 72 3d 3e 6d 65 6e  | descriptor=>men|
00065fe0  75 5f 64 65 73 63 5f 3e  20 69 73 20 67 69 76 65  |u_desc_> is give|
00065ff0  6e 20 69 6e 20 2f 64 65  73 63 2f 2e 20 54 68 65  |n in /desc/. The|
00066000  20 65 6e 74 72 69 65 73  20 61 72 65 20 69 6e 64  | entries are ind|
00066010  65 78 65 64 20 66 72 6f  6d 20 31 2e 20 41 20 68  |exed from 1. A h|
00066020  61 6e 64 6c 65 72 20 6e  65 65 64 73 20 74 6f 20  |andler needs to |
00066030  62 65 20 61 74 74 61 63  68 65 64 20 75 73 69 6e  |be attached usin|
00066040  67 20 3c 65 76 65 6e 74  5f 61 74 74 61 63 68 6d  |g <event_attachm|
00066050  65 6e 75 3e 2e 0a 0a 45  78 61 6d 70 6c 65 3a 0a  |enu>...Example:.|
00066060  7b 66 43 6f 64 65 3b 61  6c 69 67 6e 20 63 65 6e  |{fCode;align cen|
00066070  74 72 65 7d 6d 3d 6d 65  6e 75 5f 6e 65 77 28 22  |tre}m=menu_new("|
00066080  45 64 69 74 22 2c 22 3e  49 6e 66 6f 2c 43 72 65  |Edit",">Info,Cre|
00066090  61 74 65 2c 51 75 69 74  22 29 3b 0a 0a 00 00 00  |ate,Quit");.....|
000660a0  44 41 54 41 6b 01 00 00  4d 65 6e 75 5f 4e 65 77  |DATAk...Menu_New|
000660b0  0a 53 79 6e 74 61 78 3a  09 3c 6d 65 6e 75 3e 20  |.Syntax:.<menu> |
000660c0  4d 65 6e 75 5f 4e 65 77  20 28 63 68 61 72 20 2a  |Menu_New (char *|
000660d0  74 2c 20 63 68 61 72 20  2a 64 65 73 63 29 3b 0a  |t, char *desc);.|
000660e0  48 65 61 64 65 72 3a 09  3c 54 69 6d 73 4c 69 62  |Header:.<TimsLib|
000660f0  3a 4d 65 6e 75 2e 68 3d  3e 4d 65 6e 75 5f 54 4c  |:Menu.h=>Menu_TL|
00066100  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 54 68 65 20  |>..Returns:.The |
00066110  6d 65 6e 75 20 68 61 6e  64 6c 65 20 6f 66 20 74  |menu handle of t|
00066120  68 65 20 6d 65 6e 75 2e  0a 0a 54 68 69 73 20 66  |he menu...This f|
00066130  75 6e 63 74 69 6f 6e 20  63 72 65 61 74 65 73 20  |unction creates |
00066140  61 20 6e 65 77 20 6d 65  6e 75 2e 20 54 68 65 20  |a new menu. The |
00066150  74 69 74 6c 65 20 6f 66  20 74 68 65 20 6d 65 6e  |title of the men|
00066160  75 20 69 73 20 67 69 76  65 6e 20 69 6e 20 74 68  |u is given in th|
00066170  65 20 73 74 72 69 6e 67  20 70 6f 69 6e 74 65 64  |e string pointed|
00066180  20 74 6f 20 62 79 20 2f  74 2f 2c 20 61 6e 64 20  | to by /t/, and |
00066190  74 68 65 20 3c 6d 65 6e  75 20 64 65 73 63 72 69  |the <menu descri|
000661a0  70 74 6f 72 3d 3e 6d 65  6e 75 5f 64 65 73 63 5f  |ptor=>menu_desc_|
000661b0  3e 20 69 73 20 67 69 76  65 6e 20 69 6e 20 2f 64  |> is given in /d|
000661c0  65 73 63 2f 2e 0a 0a 45  78 61 6d 70 6c 65 3a 0a  |esc/...Example:.|
000661d0  7b 66 43 6f 64 65 3b 61  6c 69 67 6e 20 63 65 6e  |{fCode;align cen|
000661e0  74 72 65 7d 6d 3d 4d 65  6e 75 5f 4e 65 77 28 22  |tre}m=Menu_New("|
000661f0  45 64 69 74 22 2c 22 3e  49 6e 66 6f 2c 43 72 65  |Edit",">Info,Cre|
00066200  61 74 65 2c 51 75 69 74  22 29 3b 00 44 41 54 41  |ate,Quit");.DATA|
00066210  62 00 00 00 6d 65 6e 75  5f 70 74 72 0a 54 68 69  |b...menu_ptr.Thi|
00066220  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
00066230  64 20 69 6e 20 3c 44 65  73 6b 4c 69 62 3a 57 69  |d in <DeskLib:Wi|
00066240  6d 70 2e 68 3d 3e 57 69  6d 70 3e 20 61 73 20 61  |mp.h=>Wimp> as a|
00066250  20 70 6f 69 6e 74 65 72  20 74 6f 20 74 79 70 65  | pointer to type|
00066260  20 3c 6d 65 6e 75 5f 62  6c 6f 63 6b 3e 2e 00 00  | <menu_block>...|
00066270  44 41 54 41 fb 00 00 00  4d 65 6e 75 5f 52 65 6d  |DATA....Menu_Rem|
00066280  6f 76 65 49 74 65 6d 0a  53 79 6e 74 61 78 3a 09  |oveItem.Syntax:.|
00066290  76 6f 69 64 20 4d 65 6e  75 5f 52 65 6d 6f 76 65  |void Menu_Remove|
000662a0  49 74 65 6d 20 28 3c 6d  65 6e 75 5f 70 74 72 3e  |Item (<menu_ptr>|
000662b0  20 6d 65 6e 75 2c 20 69  6e 74 20 65 6e 74 72 79  | menu, int entry|
000662c0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
000662d0  4c 69 62 3a 4d 65 6e 75  2e 68 3d 3e 44 4c 5f 4d  |Lib:Menu.h=>DL_M|
000662e0  65 6e 75 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |enu>..This funct|
000662f0  69 6f 6e 20 72 65 6d 6f  76 65 73 20 6f 6e 65 20  |ion removes one |
00066300  69 74 65 6d 20 66 72 6f  6d 20 61 20 6d 65 6e 75  |item from a menu|
00066310  2c 20 70 72 6f 76 69 64  65 64 20 74 68 65 72 65  |, provided there|
00066320  20 69 73 20 6d 6f 72 65  20 74 68 61 6e 20 6f 6e  | is more than on|
00066330  65 20 69 74 65 6d 20 69  6e 20 69 74 2c 20 61 6e  |e item in it, an|
00066340  64 20 73 68 75 66 66 6c  65 73 20 74 68 65 20 6f  |d shuffles the o|
00066350  74 68 65 72 73 20 75 70  20 74 6f 20 66 69 6c 6c  |thers up to fill|
00066360  20 74 68 65 20 73 70 61  63 65 2e 00 44 41 54 41  | the space..DATA|
00066370  05 01 00 00 4d 65 6e 75  5f 53 44 69 73 70 6f 73  |....Menu_SDispos|
00066380  65 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 4d  |e.Syntax:.void M|
00066390  65 6e 75 5f 53 44 69 73  70 6f 73 65 20 28 3c 6d  |enu_SDispose (<m|
000663a0  65 6e 75 5f 70 74 72 3e  20 6d 65 6e 75 29 3b 0a  |enu_ptr> menu);.|
000663b0  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
000663c0  3a 4d 65 6e 75 2e 68 3d  3e 44 4c 5f 4d 65 6e 75  |:Menu.h=>DL_Menu|
000663d0  3e 0a 0a 54 68 69 73 20  69 73 20 61 20 56 45 52  |>..This is a VER|
000663e0  59 20 73 69 6d 70 6c 65  20 64 69 73 70 6f 73 65  |Y simple dispose|
000663f0  20 66 75 6e 63 74 69 6f  6e 2e 20 49 74 20 64 6f  | function. It do|
00066400  65 73 20 6e 6f 74 20 66  72 65 65 20 6d 65 6d 6f  |es not free memo|
00066410  72 79 20 75 73 65 64 20  62 79 20 73 75 62 6d 65  |ry used by subme|
00066420  6e 75 73 2c 20 6f 72 20  62 79 20 69 6e 64 69 72  |nus, or by indir|
00066430  65 63 74 65 64 20 69 63  6f 6e 20 74 65 78 74 2e  |ected icon text.|
00066440  20 49 6e 20 66 61 63 74  20 69 74 20 69 73 20 6a  | In fact it is j|
00066450  75 73 74 20 61 20 6d 61  63 72 6f 20 77 68 69 63  |ust a macro whic|
00066460  68 20 63 61 6c 6c 73 20  3c 66 72 65 65 3e 28 29  |h calls <free>()|
00066470  2e 00 00 00 44 41 54 41  1a 01 00 00 6d 65 6e 75  |....DATA....menu|
00066480  5f 73 65 6c 65 63 74 69  6f 6e 0a 54 68 69 73 20  |_selection.This |
00066490  76 61 72 69 61 62 6c 65  20 6f 66 20 74 79 70 65  |variable of type|
000664a0  20 3c 42 4f 4f 4c 3e 20  69 73 20 64 65 66 69 6e  | <BOOL> is defin|
000664b0  65 64 20 69 6e 20 3c 54  69 6d 73 4c 69 62 3a 4d  |ed in <TimsLib:M|
000664c0  65 6e 75 2e 68 3d 3e 4d  65 6e 75 5f 54 4c 3e 2e  |enu.h=>Menu_TL>.|
000664d0  20 49 74 20 63 6f 6e 74  61 69 6e 73 20 3c 54 52  | It contains <TR|
000664e0  55 45 3e 20 69 66 20 74  68 65 20 6d 65 6e 75 20  |UE> if the menu |
000664f0  68 61 6e 64 6c 65 72 20  69 73 20 62 65 69 6e 67  |handler is being|
00066500  20 63 61 6c 6c 65 64 20  61 73 20 74 68 65 20 72  | called as the r|
00066510  65 73 75 6c 74 20 6f 66  20 61 6e 20 61 63 74 69  |esult of an acti|
00066520  76 65 20 73 65 6c 65 63  74 69 6f 6e 20 6f 66 66  |ve selection off|
00066530  20 61 20 6d 65 6e 75 20  28 69 65 20 61 20 63 6c  | a menu (ie a cl|
00066540  69 63 6b 29 20 6f 72 20  3c 46 41 4c 53 45 3e 20  |ick) or <FALSE> |
00066550  69 66 20 69 74 20 69 73  20 64 75 65 20 74 6f 20  |if it is due to |
00066560  61 20 73 75 62 6d 65 6e  75 20 62 65 69 6e 67 20  |a submenu being |
00066570  6f 70 65 6e 65 64 20 28  61 20 6d 65 6e 75 20 77  |opened (a menu w|
00066580  61 72 6e 69 6e 67 20 65  76 65 6e 74 29 2e 00 00  |arning event)...|
00066590  44 41 54 41 90 01 00 00  4d 65 6e 75 5f 53 65 74  |DATA....Menu_Set|
000665a0  46 6c 61 67 73 0a 53 79  6e 74 61 78 3a 09 76 6f  |Flags.Syntax:.vo|
000665b0  69 64 20 4d 65 6e 75 5f  53 65 74 46 6c 61 67 73  |id Menu_SetFlags|
000665c0  20 28 3c 6d 65 6e 75 5f  70 74 72 3e 20 6d 65 6e  | (<menu_ptr> men|
000665d0  75 2c 20 69 6e 74 20 65  6e 74 72 79 2c 20 69 6e  |u, int entry, in|
000665e0  74 20 74 69 63 6b 2c 20  69 6e 74 20 73 68 61 64  |t tick, int shad|
000665f0  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |e);.Header:.<Des|
00066600  6b 4c 69 62 3a 4d 65 6e  75 2e 68 3d 3e 44 4c 5f  |kLib:Menu.h=>DL_|
00066610  4d 65 6e 75 3e 0a 0a 53  79 6e 74 61 78 3a 09 76  |Menu>..Syntax:.v|
00066620  6f 69 64 20 4d 65 6e 75  5f 53 65 74 46 6c 61 67  |oid Menu_SetFlag|
00066630  73 20 28 3c 6d 65 6e 75  3e 20 6d 2c 20 69 6e 74  |s (<menu> m, int|
00066640  20 65 6e 74 72 79 2c 20  3c 42 4f 4f 4c 3e 20 74  | entry, <BOOL> t|
00066650  69 63 6b 2c 20 42 4f 4f  4c 20 73 68 61 64 65 29  |ick, BOOL shade)|
00066660  3b 0a 48 65 61 64 65 72  3a 09 3c 54 69 6d 73 4c  |;.Header:.<TimsL|
00066670  69 62 3a 4d 65 6e 75 2e  68 3d 3e 4d 65 6e 75 5f  |ib:Menu.h=>Menu_|
00066680  54 4c 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |TL>..This functi|
00066690  6f 6e 20 61 6c 74 65 72  73 20 74 68 65 20 73 74  |on alters the st|
000666a0  61 74 65 20 6f 66 20 2f  65 6e 74 72 79 2f 20 6f  |ate of /entry/ o|
000666b0  6e 20 74 68 65 20 6d 65  6e 75 20 67 69 76 65 6e  |n the menu given|
000666c0  2e 20 53 65 74 74 69 6e  67 20 2f 74 69 63 6b 2f  |. Setting /tick/|
000666d0  20 6f 72 20 2f 73 68 61  64 65 2f 20 74 6f 20 31  | or /shade/ to 1|
000666e0  20 73 65 74 73 20 74 68  65 20 65 6e 74 72 79 20  | sets the entry |
000666f0  74 6f 20 68 61 76 65 20  74 68 6f 73 65 20 73 74  |to have those st|
00066700  61 74 65 73 2c 20 30 20  75 6e 74 69 63 6b 73 20  |ates, 0 unticks |
00066710  61 6e 64 2f 6f 72 20 75  6e 73 68 61 64 65 73 2e  |and/or unshades.|
00066720  44 41 54 41 61 01 00 00  6d 65 6e 75 5f 73 65 74  |DATAa...menu_set|
00066730  66 6c 61 67 73 0a 53 79  6e 74 61 78 3a 09 76 6f  |flags.Syntax:.vo|
00066740  69 64 20 6d 65 6e 75 5f  73 65 74 66 6c 61 67 73  |id menu_setflags|
00066750  20 28 3c 6d 65 6e 75 3e  20 6d 2c 20 69 6e 74 20  | (<menu> m, int |
00066760  65 6e 74 72 79 2c 20 69  6e 74 20 74 69 63 6b 2c  |entry, int tick,|
00066770  20 69 6e 74 20 66 61 64  65 29 3b 0a 48 65 61 64  | int fade);.Head|
00066780  65 72 3a 09 3c 6d 65 6e  75 2e 68 3d 3e 6d 65 6e  |er:.<menu.h=>men|
00066790  75 5f 68 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |u_h>..This funct|
000667a0  69 6f 6e 20 73 65 74 73  20 74 68 65 20 66 6c 61  |ion sets the fla|
000667b0  67 73 20 66 6f 72 20 61  20 70 61 72 74 69 63 75  |gs for a particu|
000667c0  6c 61 72 20 6d 65 6e 75  20 65 6e 74 72 79 20 28  |lar menu entry (|
000667d0  73 70 65 63 69 66 69 65  64 20 62 79 20 7b 2f 7d  |specified by {/}|
000667e0  6d 7b 2f 7d 20 61 6e 64  20 7b 2f 7d 65 6e 74 72  |m{/} and {/}entr|
000667f0  79 7b 2f 7d 29 2e 20 49  66 20 2f 74 69 63 6b 2f  |y{/}). If /tick/|
00066800  20 69 73 20 6e 6f 6e 2d  7a 65 72 6f 20 74 68 65  | is non-zero the|
00066810  6e 20 74 68 65 20 65 6e  74 72 79 20 69 73 20 74  |n the entry is t|
00066820  69 63 6b 65 64 2c 20 61  6e 64 20 69 66 20 2f 66  |icked, and if /f|
00066830  61 64 65 2f 20 69 73 20  6e 6f 6e 2d 7a 65 72 6f  |ade/ is non-zero|
00066840  20 74 68 65 6e 20 74 68  65 20 65 6e 74 72 79 20  | then the entry |
00066850  69 73 20 66 61 64 65 64  20 28 73 68 61 64 65 64  |is faded (shaded|
00066860  29 20 73 6f 20 74 68 61  74 20 69 74 20 63 61 6e  |) so that it can|
00066870  20 6e 6f 74 20 62 65 20  73 65 6c 65 63 74 65 64  | not be selected|
00066880  2e 00 00 00 44 41 54 41  cf 00 00 00 4d 65 6e 75  |....DATA....Menu|
00066890  5f 53 65 74 54 65 78 74  0a 53 79 6e 74 61 78 3a  |_SetText.Syntax:|
000668a0  09 76 6f 69 64 20 4d 65  6e 75 5f 53 65 74 54 65  |.void Menu_SetTe|
000668b0  78 74 20 28 3c 6d 65 6e  75 5f 70 74 72 3e 20 6d  |xt (<menu_ptr> m|
000668c0  65 6e 75 2c 20 69 6e 74  20 65 6e 74 72 79 2c 20  |enu, int entry, |
000668d0  63 68 61 72 20 2a 74 65  78 74 29 3b 0a 48 65 61  |char *text);.Hea|
000668e0  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 4d 65  |der:.<DeskLib:Me|
000668f0  6e 75 2e 68 3d 3e 44 4c  5f 4d 65 6e 75 3e 0a 0a  |nu.h=>DL_Menu>..|
00066900  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 73 65  |This function se|
00066910  74 73 20 74 68 65 20 74  65 78 74 20 66 6f 72 20  |ts the text for |
00066920  61 20 67 69 76 65 6e 20  6d 65 6e 75 20 65 6e 74  |a given menu ent|
00066930  72 79 20 74 6f 20 62 65  20 74 68 61 74 20 70 6f  |ry to be that po|
00066940  69 6e 74 65 64 20 74 6f  20 62 79 20 2f 74 65 78  |inted to by /tex|
00066950  74 2f 2e 00 44 41 54 41  3f 01 00 00 4d 65 6e 75  |t/..DATA?...Menu|
00066960  5f 53 68 6f 77 0a 53 79  6e 74 61 78 3a 09 76 6f  |_Show.Syntax:.vo|
00066970  69 64 20 4d 65 6e 75 5f  53 68 6f 77 20 28 3c 6d  |id Menu_Show (<m|
00066980  65 6e 75 5f 70 74 72 3e  20 6d 65 6e 75 2c 20 69  |enu_ptr> menu, i|
00066990  6e 74 20 78 2c 20 69 6e  74 20 79 29 3b 0a 48 65  |nt x, int y);.He|
000669a0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 4d  |ader:.<DeskLib:M|
000669b0  65 6e 75 2e 68 3d 3e 44  4c 5f 4d 65 6e 75 3e 0a  |enu.h=>DL_Menu>.|
000669c0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 73  |.This function s|
000669d0  68 6f 77 73 20 74 68 65  20 67 69 76 65 6e 20 6d  |hows the given m|
000669e0  65 6e 75 20 6f 6e 20 73  63 72 65 65 6e 2c 20 61  |enu on screen, a|
000669f0  74 20 74 68 65 20 67 69  76 65 6e 20 2f 78 2f 20  |t the given /x/ |
00066a00  61 6e 64 20 2f 79 2f 20  70 6f 73 69 74 69 6f 6e  |and /y/ position|
00066a10  2e 20 49 66 20 2f 79 2f  20 69 73 20 2d 31 20 74  |. If /y/ is -1 t|
00066a20  68 65 6e 20 74 68 65 20  68 65 69 67 68 74 20 69  |hen the height i|
00066a30  73 20 63 6f 72 72 65 63  74 20 66 6f 72 20 69 63  |s correct for ic|
00066a40  6f 6e 20 62 61 72 20 69  63 6f 6e 73 20 28 76 65  |on bar icons (ve|
00066a50  72 79 20 68 61 6e 64 79  29 2e 0a 0a 53 65 65 20  |ry handy)...See |
00066a60  61 6c 73 6f 20 74 68 65  20 54 69 6d 73 4c 69 62  |also the TimsLib|
00066a70  20 66 75 6e 63 74 69 6f  6e 2c 20 3c 4d 65 6e 75  | function, <Menu|
00066a80  5f 53 68 6f 77 3d 3e 4d  65 6e 75 5f 53 68 6f 77  |_Show=>Menu_Show|
00066a90  5f 3e 2e 00 44 41 54 41  50 01 00 00 4d 65 6e 75  |_>..DATAP...Menu|
00066aa0  5f 53 68 6f 77 0a 53 79  6e 74 61 78 3a 09 76 6f  |_Show.Syntax:.vo|
00066ab0  69 64 20 4d 65 6e 75 5f  53 68 6f 77 20 28 3c 6d  |id Menu_Show (<m|
00066ac0  65 6e 75 3e 20 6d 2c 20  3c 77 69 6d 70 5f 70 6f  |enu> m, <wimp_po|
00066ad0  69 6e 74 3e 20 6d 6f 75  73 65 5f 70 6f 73 2c 20  |int> mouse_pos, |
00066ae0  3c 42 4f 4f 4c 3e 20 69  63 6f 6e 62 61 72 29 3b  |<BOOL> iconbar);|
00066af0  0a 48 65 61 64 65 72 3a  09 3c 54 69 6d 73 4c 69  |.Header:.<TimsLi|
00066b00  62 3a 4d 65 6e 75 2e 68  3d 3e 4d 65 6e 75 5f 54  |b:Menu.h=>Menu_T|
00066b10  4c 3e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |L>..This functio|
00066b20  6e 20 73 68 6f 77 73 20  74 68 65 20 6d 65 6e 75  |n shows the menu|
00066b30  20 2f 6d 2f 20 6f 6e 20  73 63 72 65 65 6e 2c 20  | /m/ on screen, |
00066b40  75 73 69 6e 67 20 74 68  65 20 6d 6f 75 73 65 20  |using the mouse |
00066b50  70 6f 73 69 74 69 6f 6e  20 67 69 76 65 6e 2e 20  |position given. |
00066b60  49 66 20 2f 69 63 6f 6e  62 61 72 2f 20 69 73 20  |If /iconbar/ is |
00066b70  3c 54 52 55 45 3e 20 74  68 65 6e 20 74 68 65 20  |<TRUE> then the |
00066b80  76 65 72 74 69 63 61 6c  20 6d 6f 75 73 65 20 70  |vertical mouse p|
00066b90  6f 73 69 74 69 6f 6e 20  69 73 20 69 67 6e 6f 72  |osition is ignor|
00066ba0  65 64 20 61 6e 64 20 74  68 65 20 6d 65 6e 75 20  |ed and the menu |
00066bb0  69 73 20 70 6c 61 63 65  64 20 69 6e 20 74 68 65  |is placed in the|
00066bc0  20 63 6f 72 72 65 63 74  20 70 6f 73 69 74 69 6f  | correct positio|
00066bd0  6e 20 6f 76 65 72 20 74  68 65 20 69 63 6f 6e 20  |n over the icon |
00066be0  62 61 72 2e 44 41 54 41  00 01 00 00 4d 65 6e 75  |bar.DATA....Menu|
00066bf0  5f 53 68 6f 77 4c 61 73  74 0a 53 79 6e 74 61 78  |_ShowLast.Syntax|
00066c00  3a 09 76 6f 69 64 20 4d  65 6e 75 5f 53 68 6f 77  |:.void Menu_Show|
00066c10  4c 61 73 74 20 28 76 6f  69 64 29 3b 0a 48 65 61  |Last (void);.Hea|
00066c20  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 4d 65  |der:.<DeskLib:Me|
00066c30  6e 75 2e 68 3d 3e 44 4c  5f 4d 65 6e 75 3e 0a 0a  |nu.h=>DL_Menu>..|
00066c40  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 73 68  |This function sh|
00066c50  6f 77 73 20 74 68 65 20  6c 61 73 74 20 6d 65 6e  |ows the last men|
00066c60  75 20 73 68 6f 77 6e 20  77 69 74 68 20 3c 4d 65  |u shown with <Me|
00066c70  6e 75 5f 53 68 6f 77 3e  2c 20 69 6e 20 74 68 65  |nu_Show>, in the|
00066c80  20 73 61 6d 65 20 70 6c  61 63 65 20 61 73 20 62  | same place as b|
00066c90  65 66 6f 72 65 2e 20 49  74 20 69 73 20 69 6e 74  |efore. It is int|
00066ca0  65 6e 64 65 64 20 74 68  61 74 20 74 68 69 73 20  |ended that this |
00066cb0  73 68 6f 75 6c 64 20 62  65 20 63 61 6c 6c 65 64  |should be called|
00066cc0  20 77 68 65 6e 20 2a 41  64 6a 75 73 74 2a 20 69  | when *Adjust* i|
00066cd0  73 20 63 6c 69 63 6b 65  64 20 6f 6e 20 61 20 6d  |s clicked on a m|
00066ce0  65 6e 75 2e 44 41 54 41  b0 01 00 00 6d 65 6e 75  |enu.DATA....menu|
00066cf0  5f 73 75 62 6d 65 6e 75  0a 53 79 6e 74 61 78 3a  |_submenu.Syntax:|
00066d00  09 76 6f 69 64 20 6d 65  6e 75 5f 73 75 62 6d 65  |.void menu_subme|
00066d10  6e 75 20 28 3c 6d 65 6e  75 3e 20 6d 2c 20 69 6e  |nu (<menu> m, in|
00066d20  74 20 65 6e 74 72 79 2c  20 6d 65 6e 75 20 73 75  |t entry, menu su|
00066d30  62 6d 65 6e 75 29 3b 0a  48 65 61 64 65 72 3a 09  |bmenu);.Header:.|
00066d40  3c 6d 65 6e 75 2e 68 3d  3e 6d 65 6e 75 5f 68 3e  |<menu.h=>menu_h>|
00066d50  20 28 44 65 73 6b 74 6f  70 20 43 29 0a 09 3c 54  | (Desktop C)..<T|
00066d60  69 6d 73 4c 69 62 3a 4d  65 6e 75 2e 68 3d 3e 4d  |imsLib:Menu.h=>M|
00066d70  65 6e 75 5f 54 4c 3e 20  28 54 69 6d 73 4c 69 62  |enu_TL> (TimsLib|
00066d80  29 0a 0a 4b 6e 6f 77 6e  20 69 6e 20 54 69 6d 73  |)..Known in Tims|
00066d90  4c 69 62 20 61 73 20 7b  2a 7d 4d 65 6e 75 5f 53  |Lib as {*}Menu_S|
00066da0  75 62 4d 65 6e 75 7b 2a  7d 2e 0a 0a 54 68 69 73  |ubMenu{*}...This|
00066db0  20 66 75 6e 63 74 69 6f  6e 20 61 74 74 61 63 68  | function attach|
00066dc0  65 73 20 74 68 65 20 73  75 62 6d 65 6e 75 20 77  |es the submenu w|
00066dd0  68 6f 73 65 20 6d 65 6e  75 20 68 61 6e 64 6c 65  |hose menu handle|
00066de0  20 69 73 20 67 69 76 65  6e 20 74 6f 20 74 68 65  | is given to the|
00066df0  20 6d 65 6e 75 20 2f 6d  2f 2c 20 61 74 20 74 68  | menu /m/, at th|
00066e00  65 20 65 6e 74 72 79 20  73 70 65 63 69 66 69 65  |e entry specifie|
00066e10  64 2e 20 49 66 20 2f 73  75 62 6d 65 6e 75 2f 20  |d. If /submenu/ |
00066e20  69 73 20 7a 65 72 6f 20  74 68 65 6e 20 74 68 65  |is zero then the|
00066e30  20 65 78 69 73 74 69 6e  67 20 73 75 62 6d 65 6e  | existing submen|
00066e40  75 20 69 73 20 72 65 6d  6f 76 65 64 2e 0a 0a 4f  |u is removed...O|
00066e50  6e 63 65 20 61 74 74 61  63 68 65 64 2c 20 61 20  |nce attached, a |
00066e60  73 75 62 6d 65 6e 75 20  63 61 6e 6e 6f 74 20 62  |submenu cannot b|
00066e70  65 20 65 78 74 65 6e 64  65 64 2c 20 6f 72 20 64  |e extended, or d|
00066e80  65 6c 65 74 65 64 20 28  6f 6e 20 69 74 73 20 6f  |eleted (on its o|
00066e90  77 6e 29 2e 44 41 54 41  69 01 00 00 6d 65 6e 75  |wn).DATAi...menu|
00066ea0  5f 73 75 62 6d 65 6e 75  0a 54 68 69 73 20 74 79  |_submenu.This ty|
00066eb0  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
00066ec0  20 3c 44 65 73 6b 4c 69  62 3a 57 69 6d 70 2e 68  | <DeskLib:Wimp.h|
00066ed0  3d 3e 57 69 6d 70 3e 2e  20 49 74 20 69 73 20 75  |=>Wimp>. It is u|
00066ee0  73 65 64 20 61 73 20 70  61 72 74 20 6f 66 20 61  |sed as part of a|
00066ef0  20 6d 65 6e 75 20 64 65  66 69 6e 69 74 69 6f 6e  | menu definition|
00066f00  20 74 6f 20 69 6e 64 69  63 61 74 65 20 74 68 65  | to indicate the|
00066f10  20 73 75 62 6d 65 6e 75  20 6f 72 20 73 75 62 77  | submenu or subw|
00066f20  69 6e 64 6f 77 20 61 74  74 61 63 68 65 64 20 74  |indow attached t|
00066f30  6f 20 61 20 70 61 72 74  69 63 75 6c 61 72 20 65  |o a particular e|
00066f40  6e 74 72 79 2e 20 49 74  20 69 73 20 64 65 66 69  |ntry. It is defi|
00066f50  6e 65 64 20 61 73 20 74  68 65 20 66 6f 6c 6c 6f  |ned as the follo|
00066f60  77 69 6e 67 20 75 6e 69  6f 6e 3a 0a 0a 20 20 5c  |wing union:..  \|
00066f70  7b 0a 20 20 20 20 3c 6d  65 6e 75 5f 70 74 72 3e  |{.    <menu_ptr>|
00066f80  09 6d 65 6e 75 3b 0a 20  20 20 20 3c 77 69 6e 64  |.menu;.    <wind|
00066f90  6f 77 5f 68 61 6e 64 6c  65 3e 09 77 69 6e 64 6f  |ow_handle>.windo|
00066fa0  77 3b 0a 20 20 20 20 69  6e 74 09 76 61 6c 75 65  |w;.    int.value|
00066fb0  3b 0a 20 20 7d 0a 0a 2f  76 61 6c 75 65 2f 20 73  |;.  }../value/ s|
00066fc0  68 6f 75 6c 64 20 62 65  20 73 65 74 20 74 6f 20  |hould be set to |
00066fd0  2d 31 20 69 66 20 6e 6f  20 73 75 62 6d 65 6e 75  |-1 if no submenu|
00066fe0  2f 73 75 62 77 69 6e 64  6f 77 20 69 73 20 74 6f  |/subwindow is to|
00066ff0  20 62 65 20 61 74 74 61  63 68 65 64 2e 00 00 00  | be attached....|
00067000  44 41 54 41 e9 00 00 00  6d 65 6e 75 5f 73 75 62  |DATA....menu_sub|
00067010  6d 65 6e 75 70 6f 73 0a  54 68 69 73 20 76 61 72  |menupos.This var|
00067020  69 61 62 6c 65 20 6f 66  20 74 79 70 65 20 3c 77  |iable of type <w|
00067030  69 6d 70 5f 70 6f 69 6e  74 3e 20 69 73 20 64 65  |imp_point> is de|
00067040  66 69 6e 65 64 20 69 6e  20 3c 54 69 6d 73 4c 69  |fined in <TimsLi|
00067050  62 3a 4d 65 6e 75 2e 68  3d 3e 4d 65 6e 75 5f 54  |b:Menu.h=>Menu_T|
00067060  4c 3e 2e 20 49 74 20 63  6f 6e 74 61 69 6e 73 20  |L>. It contains |
00067070  74 68 65 20 70 6f 73 69  74 69 6f 6e 20 70 61 73  |the position pas|
00067080  73 65 64 20 62 79 20 61  6e 79 20 4d 65 6e 75 57  |sed by any MenuW|
00067090  61 72 6e 69 6e 67 20 6d  65 73 73 61 67 65 73 20  |arning messages |
000670a0  69 65 20 74 68 65 20 70  6f 73 69 74 69 6f 6e 20  |ie the position |
000670b0  61 20 73 75 62 6d 65 6e  75 20 73 68 6f 75 6c 64  |a submenu should|
000670c0  20 62 65 20 6f 70 65 6e  65 64 20 61 74 20 69 6e  | be opened at in|
000670d0  20 72 65 73 70 6f 6e 73  65 20 74 6f 20 74 68 65  | response to the|
000670e0  20 6d 65 73 73 61 67 65  2e 00 00 00 44 41 54 41  | message....DATA|
000670f0  fc 00 00 00 6d 65 6e 75  5f 73 79 73 68 61 6e 64  |....menu_syshand|
00067100  6c 65 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |le.Syntax:.void |
00067110  2a 6d 65 6e 75 5f 73 79  73 68 61 6e 64 6c 65 20  |*menu_syshandle |
00067120  28 3c 6d 65 6e 75 3e 20  6d 29 3b 0a 48 65 61 64  |(<menu> m);.Head|
00067130  65 72 3a 09 3c 6d 65 6e  75 2e 68 3d 3e 6d 65 6e  |er:.<menu.h=>men|
00067140  75 5f 68 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 41  |u_h>..Returns:.A|
00067150  20 70 6f 69 6e 74 65 72  20 74 6f 20 61 20 3c 77  | pointer to a <w|
00067160  69 6d 70 5f 6d 65 6e 75  73 74 72 3e 2e 0a 0a 54  |imp_menustr>...T|
00067170  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 67 65 74  |his function get|
00067180  73 20 74 68 65 20 6d 65  6e 75 20 70 6f 69 6e 74  |s the menu point|
00067190  65 72 20 66 6f 72 20 61  20 67 69 76 65 6e 20 6d  |er for a given m|
000671a0  65 6e 75 2e 0a 0a 53 65  65 20 61 6c 73 6f 20 74  |enu...See also t|
000671b0  68 65 20 54 69 6d 73 4c  69 62 20 66 75 6e 63 74  |he TimsLib funct|
000671c0  69 6f 6e 2c 20 3c 4d 65  6e 75 5f 53 79 73 48 61  |ion, <Menu_SysHa|
000671d0  6e 64 6c 65 3d 3e 4d 65  6e 75 5f 53 79 73 48 61  |ndle=>Menu_SysHa|
000671e0  6e 64 6c 65 5f 5f 3e 2e  44 41 54 41 3b 01 00 00  |ndle__>.DATA;...|
000671f0  4d 65 6e 75 5f 53 79 73  48 61 6e 64 6c 65 0a 53  |Menu_SysHandle.S|
00067200  79 6e 74 61 78 3a 09 3c  6d 65 6e 75 5f 70 74 72  |yntax:.<menu_ptr|
00067210  3e 20 4d 65 6e 75 5f 53  79 73 48 61 6e 64 6c 65  |> Menu_SysHandle|
00067220  20 28 6d 65 6e 75 5f 70  74 72 20 6d 29 3b 0a 48  | (menu_ptr m);.H|
00067230  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00067240  4d 65 6e 75 2e 68 3d 3e  44 4c 5f 4d 65 6e 75 3e  |Menu.h=>DL_Menu>|
00067250  0a 0a 52 65 74 75 72 6e  73 3a 09 54 68 65 20 76  |..Returns:.The v|
00067260  61 6c 75 65 20 70 61 73  73 65 64 2c 20 2f 6d 2f  |alue passed, /m/|
00067270  21 0a 0a 54 68 69 73 20  69 73 20 61 20 70 6f 69  |!..This is a poi|
00067280  6e 74 6c 65 73 73 20 66  75 6e 63 74 69 6f 6e 2c  |ntless function,|
00067290  20 72 65 74 61 69 6e 65  64 20 6f 6e 6c 79 20 66  | retained only f|
000672a0  6f 72 20 63 6f 6d 70 61  74 69 62 69 6c 69 74 79  |or compatibility|
000672b0  20 77 69 74 68 20 44 65  73 6b 74 6f 70 20 43 27  | with Desktop C'|
000672c0  73 20 3c 6d 65 6e 75 5f  73 79 73 68 61 6e 64 6c  |s <menu_syshandl|
000672d0  65 3e 2c 20 73 69 6e 63  65 20 7b 2a 7d 6d 65 6e  |e>, since {*}men|
000672e0  75 5f 70 74 72 7b 2a 7d  73 20 69 6e 20 44 65 73  |u_ptr{*}s in Des|
000672f0  6b 4c 69 62 20 61 72 65  20 70 6f 69 6e 74 65 72  |kLib are pointer|
00067300  20 74 6f 20 74 68 65 20  75 6e 64 65 72 6c 79 69  | to the underlyi|
00067310  6e 67 20 57 69 6d 70 20  64 65 66 69 6e 69 74 69  |ng Wimp definiti|
00067320  6f 6e 2e 00 44 41 54 41  39 01 00 00 4d 65 6e 75  |on..DATA9...Menu|
00067330  5f 53 79 73 48 61 6e 64  6c 65 0a 53 79 6e 74 61  |_SysHandle.Synta|
00067340  78 3a 09 3c 6d 65 6e 75  5f 70 74 72 3e 20 4d 65  |x:.<menu_ptr> Me|
00067350  6e 75 5f 53 79 73 48 61  6e 64 6c 65 20 28 3c 6d  |nu_SysHandle (<m|
00067360  65 6e 75 3e 20 6d 29 3b  0a 48 65 61 64 65 72 3a  |enu> m);.Header:|
00067370  09 3c 54 69 6d 73 4c 69  62 3a 4d 65 6e 75 2e 68  |.<TimsLib:Menu.h|
00067380  3d 3e 4d 65 6e 75 5f 54  4c 3e 0a 0a 52 65 74 75  |=>Menu_TL>..Retu|
00067390  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000673a0  74 68 65 20 6d 65 6e 75  2e 0a 0a 54 68 69 73 20  |the menu...This |
000673b0  66 75 6e 63 74 69 6f 6e  20 72 65 74 75 72 6e 73  |function returns|
000673c0  20 61 20 70 6f 69 6e 74  65 72 20 74 6f 20 74 68  | a pointer to th|
000673d0  65 20 6d 65 6e 75 20 73  74 72 75 63 74 75 72 65  |e menu structure|
000673e0  20 69 74 73 65 6c 66 2c  20 66 6f 72 20 79 6f 75  | itself, for you|
000673f0  20 74 6f 20 6d 6f 64 69  66 79 20 69 66 20 6e 65  | to modify if ne|
00067400  65 64 65 64 2e 20 49 74  20 69 73 20 61 63 74 75  |eded. It is actu|
00067410  61 6c 6c 79 20 64 65 66  69 6e 65 64 20 61 73 20  |ally defined as |
00067420  61 20 66 75 6e 63 74 69  6f 6e 20 6c 69 6b 65 20  |a function like |
00067430  6d 61 63 72 6f 20 72 65  74 75 72 6e 69 6e 67 20  |macro returning |
00067440  2f 6d 2f 20 63 61 73 74  20 61 73 20 61 20 7b 2a  |/m/ cast as a {*|
00067450  7d 6d 65 6e 75 5f 70 74  72 7b 2a 7d 2e 00 00 00  |}menu_ptr{*}....|
00067460  44 41 54 41 ae 00 00 00  4d 65 6e 75 5f 54 69 63  |DATA....Menu_Tic|
00067470  6b 45 6e 74 72 79 0a 53  79 6e 74 61 78 3a 09 76  |kEntry.Syntax:.v|
00067480  6f 69 64 20 4d 65 6e 75  5f 54 69 63 6b 45 6e 74  |oid Menu_TickEnt|
00067490  72 79 20 28 3c 6d 65 6e  75 3e 20 6d 2c 20 69 6e  |ry (<menu> m, in|
000674a0  74 20 65 6e 74 72 79 29  3b 0a 48 65 61 64 65 72  |t entry);.Header|
000674b0  3a 09 3c 54 69 6d 73 4c  69 62 3a 4d 65 6e 75 2e  |:.<TimsLib:Menu.|
000674c0  68 3d 3e 4d 65 6e 75 5f  54 4c 3e 0a 0a 54 68 69  |h=>Menu_TL>..Thi|
000674d0  73 20 66 75 6e 63 74 69  6f 6e 2d 6c 69 6b 65 20  |s function-like |
000674e0  6d 61 63 72 6f 20 74 69  63 6b 73 20 74 68 65 20  |macro ticks the |
000674f0  67 69 76 65 6e 20 65 6e  74 72 79 20 69 6e 20 74  |given entry in t|
00067500  68 65 20 67 69 76 65 6e  20 6d 65 6e 75 2e 00 00  |he given menu...|
00067510  44 41 54 41 8b 03 00 00  54 69 6d 73 4c 69 62 3a  |DATA....TimsLib:|
00067520  4d 65 6e 75 2e 68 0a 54  68 69 73 20 68 65 61 64  |Menu.h.This head|
00067530  65 72 20 69 73 20 61 20  63 6f 6d 70 6c 65 74 65  |er is a complete|
00067540  20 72 65 70 6c 61 63 65  6d 65 6e 74 20 66 6f 72  | replacement for|
00067550  20 62 6f 74 68 20 44 65  73 6b 74 6f 70 20 43 27  | both Desktop C'|
00067560  73 20 3c 6d 65 6e 75 2e  68 3d 3e 6d 65 6e 75 5f  |s <menu.h=>menu_|
00067570  68 3e 20 61 6e 64 20 44  65 73 6b 4c 69 62 27 73  |h> and DeskLib's|
00067580  20 3c 4d 65 6e 75 2e 68  3d 3e 44 4c 5f 4d 65 6e  | <Menu.h=>DL_Men|
00067590  75 3e 2e 20 49 74 20 70  72 6f 76 69 64 65 73 20  |u>. It provides |
000675a0  73 75 70 65 72 69 6f 72  20 6d 65 6e 75 20 68 61  |superior menu ha|
000675b0  6e 64 6c 69 6e 67 20 66  61 63 69 6c 69 74 69 65  |ndling facilitie|
000675c0  73 20 74 6f 20 74 68 65  20 73 74 61 6e 64 61 72  |s to the standar|
000675d0  64 20 44 65 73 6b 4c 69  62 20 66 75 6e 63 74 69  |d DeskLib functi|
000675e0  6f 6e 73 2c 20 61 6c 6c  6f 77 69 6e 67 20 6d 65  |ons, allowing me|
000675f0  6e 75 73 20 74 6f 20 62  65 20 61 74 74 61 63 68  |nus to be attach|
00067600  65 64 20 69 6e 20 61 20  73 69 6d 69 6c 61 72 20  |ed in a similar |
00067610  77 61 79 20 74 6f 20 74  68 65 20 3c 45 76 65 6e  |way to the <Even|
00067620  74 3e 20 6d 6f 64 75 6c  65 2e 0a 0a 46 75 6e 63  |t> module...Func|
00067630  74 69 6f 6e 73 3a 0a 0a  23 69 6e 64 65 6e 74 20  |tions:..#indent |
00067640  34 0a 23 54 61 62 6c 65  20 39 20 32 30 0a 3c 4d  |4.#Table 9 20.<M|
00067650  65 6e 75 5f 4e 65 77 3d  3e 4d 65 6e 75 5f 4e 65  |enu_New=>Menu_Ne|
00067660  77 5f 5f 3e 0a 3c 4d 65  6e 75 5f 43 6f 6c 6f 75  |w__>.<Menu_Colou|
00067670  72 4d 65 6e 75 3e 0a 3c  4d 65 6e 75 5f 44 69 73  |rMenu>.<Menu_Dis|
00067680  70 6f 73 65 3e 0a 3c 4d  65 6e 75 5f 53 75 62 4d  |pose>.<Menu_SubM|
00067690  65 6e 75 3e 0a 3c 4d 65  6e 75 5f 41 64 64 44 69  |enu>.<Menu_AddDi|
000676a0  61 6c 6f 67 42 6f 78 3e  0a 3c 4d 65 6e 75 5f 53  |alogBox>.<Menu_S|
000676b0  65 74 46 6c 61 67 73 3e  0a 3c 4d 65 6e 75 5f 54  |etFlags>.<Menu_T|
000676c0  69 63 6b 45 6e 74 72 79  3e 0a 3c 4d 65 6e 75 5f  |ickEntry>.<Menu_|
000676d0  55 6e 54 69 63 6b 45 6e  74 72 79 3e 0a 3c 4d 65  |UnTickEntry>.<Me|
000676e0  6e 75 5f 46 61 64 65 45  6e 74 72 79 3e 0a 3c 4d  |nu_FadeEntry>.<M|
000676f0  65 6e 75 5f 55 6e 46 61  64 65 45 6e 74 72 79 3e  |enu_UnFadeEntry>|
00067700  0a 3c 4d 65 6e 75 5f 4d  61 6b 65 57 72 69 74 61  |.<Menu_MakeWrita|
00067710  62 6c 65 3e 0a 3c 4d 65  6e 75 5f 53 68 6f 77 3d  |ble>.<Menu_Show=|
00067720  3e 4d 65 6e 75 5f 53 68  6f 77 5f 3e 0a 3c 4d 65  |>Menu_Show_>.<Me|
00067730  6e 75 5f 53 79 73 48 61  6e 64 6c 65 3d 3e 4d 65  |nu_SysHandle=>Me|
00067740  6e 75 5f 53 79 73 48 61  6e 64 6c 65 5f 5f 3e 0a  |nu_SysHandle__>.|
00067750  3c 4d 65 6e 75 5f 41 74  74 61 63 68 4d 65 6e 75  |<Menu_AttachMenu|
00067760  3e 0a 3c 4d 65 6e 75 5f  41 74 74 61 63 68 4d 65  |>.<Menu_AttachMe|
00067770  6e 75 4d 61 6b 65 72 3e  0a 3c 4d 65 6e 75 5f 41  |nuMaker>.<Menu_A|
00067780  64 64 44 79 6e 61 6d 69  63 44 69 61 6c 6f 67 42  |ddDynamicDialogB|
00067790  6f 78 3e 0a 3c 4d 65 6e  75 5f 44 65 74 61 63 68  |ox>.<Menu_Detach|
000677a0  4d 65 6e 75 3e 0a 23 45  6e 64 54 61 62 6c 65 0a  |Menu>.#EndTable.|
000677b0  23 69 6e 64 65 6e 74 0a  0a 54 79 70 65 73 3a 0a  |#indent..Types:.|
000677c0  0a 23 69 6e 64 65 6e 74  20 31 31 0a 23 74 61 62  |.#indent 11.#tab|
000677d0  6c 65 20 6c 69 6e 65 73  20 31 0a 3c 6d 65 6e 75  |le lines 1.<menu|
000677e0  3e 0a 3c 6d 65 6e 75 5f  68 61 6e 64 6c 65 72 3e  |>.<menu_handler>|
000677f0  0a 3c 6d 65 6e 75 5f 6d  61 6b 65 72 3e 0a 23 65  |.<menu_maker>.#e|
00067800  6e 64 74 61 62 6c 65 0a  23 69 6e 64 65 6e 74 0a  |ndtable.#indent.|
00067810  0a 56 61 72 69 61 62 6c  65 73 3a 0a 0a 23 74 61  |.Variables:..#ta|
00067820  62 6c 65 20 63 6f 6c 75  6d 6e 73 20 33 0a 3c 6d  |ble columns 3.<m|
00067830  65 6e 75 5f 61 64 6a 75  73 74 5f 70 72 65 73 73  |enu_adjust_press|
00067840  65 64 3e 0a 3c 6d 65 6e  75 5f 63 75 72 72 65 6e  |ed>.<menu_curren|
00067850  74 5f 77 69 6e 64 6f 77  3e 0a 3c 6d 65 6e 75 5f  |t_window>.<menu_|
00067860  63 75 72 72 65 6e 74 5f  69 63 6f 6e 3e 0a 3c 6d  |current_icon>.<m|
00067870  65 6e 75 5f 73 65 6c 65  63 74 69 6f 6e 3e 0a 3c  |enu_selection>.<|
00067880  6d 65 6e 75 5f 73 75 62  6d 65 6e 75 70 6f 73 3e  |menu_submenupos>|
00067890  0a 0a 23 45 6e 64 54 61  62 6c 65 00 44 41 54 41  |..#EndTable.DATA|
000678a0  b5 00 00 00 4d 65 6e 75  5f 55 6e 46 61 64 65 45  |....Menu_UnFadeE|
000678b0  6e 74 72 79 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |ntry.Syntax:.voi|
000678c0  64 20 4d 65 6e 75 5f 55  6e 46 61 64 65 45 6e 74  |d Menu_UnFadeEnt|
000678d0  72 79 20 28 3c 6d 65 6e  75 3e 20 6d 2c 20 69 6e  |ry (<menu> m, in|
000678e0  74 20 65 6e 74 72 79 29  3b 0a 48 65 61 64 65 72  |t entry);.Header|
000678f0  3a 09 3c 54 69 6d 73 4c  69 62 3a 4d 65 6e 75 2e  |:.<TimsLib:Menu.|
00067900  68 3d 3e 4d 65 6e 75 5f  54 4c 3e 0a 0a 54 68 69  |h=>Menu_TL>..Thi|
00067910  73 20 66 75 6e 63 74 69  6f 6e 2d 6c 69 6b 65 20  |s function-like |
00067920  6d 61 63 72 6f 20 75 6e  73 68 61 64 65 73 20 74  |macro unshades t|
00067930  68 65 20 67 69 76 65 6e  20 65 6e 74 72 79 20 69  |he given entry i|
00067940  6e 20 74 68 65 20 67 69  76 65 6e 20 6d 65 6e 75  |n the given menu|
00067950  2e 00 00 00 44 41 54 41  b4 00 00 00 4d 65 6e 75  |....DATA....Menu|
00067960  5f 55 6e 54 69 63 6b 45  6e 74 72 79 0a 53 79 6e  |_UnTickEntry.Syn|
00067970  74 61 78 3a 09 76 6f 69  64 20 4d 65 6e 75 5f 55  |tax:.void Menu_U|
00067980  6e 54 69 63 6b 45 6e 74  72 79 20 28 3c 6d 65 6e  |nTickEntry (<men|
00067990  75 3e 20 6d 2c 20 69 6e  74 20 65 6e 74 72 79 29  |u> m, int entry)|
000679a0  3b 0a 48 65 61 64 65 72  3a 09 3c 54 69 6d 73 4c  |;.Header:.<TimsL|
000679b0  69 62 3a 4d 65 6e 75 2e  68 3d 3e 4d 65 6e 75 5f  |ib:Menu.h=>Menu_|
000679c0  54 4c 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |TL>..This functi|
000679d0  6f 6e 2d 6c 69 6b 65 20  6d 61 63 72 6f 20 75 6e  |on-like macro un|
000679e0  74 69 63 6b 73 20 74 68  65 20 67 69 76 65 6e 20  |ticks the given |
000679f0  65 6e 74 72 79 20 69 6e  20 74 68 65 20 67 69 76  |entry in the giv|
00067a00  65 6e 20 6d 65 6e 75 2e  44 41 54 41 74 01 00 00  |en menu.DATAt...|
00067a10  4d 65 6e 75 5f 57 61 72  6e 0a 53 79 6e 74 61 78  |Menu_Warn.Syntax|
00067a20  3a 09 76 6f 69 64 20 4d  65 6e 75 5f 57 61 72 6e  |:.void Menu_Warn|
00067a30  20 28 3c 6d 65 6e 75 5f  70 74 72 3e 20 6d 65 6e  | (<menu_ptr> men|
00067a40  75 2c 20 69 6e 74 20 65  6e 74 72 79 2c 20 3c 42  |u, int entry, <B|
00067a50  4f 4f 4c 3e 20 79 6e 2c  20 3c 65 76 65 6e 74 5f  |OOL> yn, <event_|
00067a60  68 61 6e 64 6c 65 72 3e  20 68 61 6e 64 6c 65 72  |handler> handler|
00067a70  2c 20 76 6f 69 64 20 2a  72 65 66 29 3b 0a 48 65  |, void *ref);.He|
00067a80  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 4d  |ader:.<DeskLib:M|
00067a90  65 6e 75 2e 68 3d 3e 44  4c 5f 4d 65 6e 75 3e 0a  |enu.h=>DL_Menu>.|
00067aa0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
00067ab0  6c 61 69 6d 73 20 74 68  65 20 4d 65 6e 75 20 57  |laims the Menu W|
00067ac0  61 72 6e 69 6e 67 20 6d  65 73 73 61 67 65 20 75  |arning message u|
00067ad0  73 69 6e 67 20 3c 45 76  65 6e 74 4d 73 67 3e 20  |sing <EventMsg> |
00067ae0  61 6e 64 20 61 74 74 61  63 68 65 73 20 74 68 65  |and attaches the|
00067af0  20 67 69 76 65 6e 20 68  61 6e 64 6c 65 72 20 74  | given handler t|
00067b00  6f 20 74 68 65 20 67 69  76 65 6e 20 6d 65 6e 75  |o the given menu|
00067b10  20 65 6e 74 72 79 2c 20  6d 61 6b 69 6e 67 20 69  | entry, making i|
00067b20  74 20 4d 65 6e 75 20 57  61 72 6e 69 6e 67 20 6d  |t Menu Warning m|
00067b30  65 73 73 61 67 65 73 2e  20 49 66 20 2f 79 6e 2f  |essages. If /yn/|
00067b40  20 69 73 20 3c 54 52 55  45 3e 20 69 74 20 61 74  | is <TRUE> it at|
00067b50  74 61 63 68 65 73 20 74  68 65 20 68 61 6e 64 6c  |taches the handl|
00067b60  65 72 2c 20 6f 74 68 65  72 77 69 73 65 20 69 74  |er, otherwise it|
00067b70  20 72 65 6d 6f 76 65 73  20 69 74 2e 44 41 54 41  | removes it.DATA|
00067b80  ee 00 00 00 4d 65 6e 75  5f 50 6f 70 55 70 0a 53  |....Menu_PopUp.S|
00067b90  79 6e 74 61 78 3a 09 76  6f 69 64 20 4d 65 6e 75  |yntax:.void Menu|
00067ba0  5f 50 6f 70 55 70 20 28  3c 6d 65 6e 75 5f 70 74  |_PopUp (<menu_pt|
00067bb0  72 3e 20 6d 65 6e 75 2c  20 3c 77 69 6e 64 6f 77  |r> menu, <window|
00067bc0  5f 68 61 6e 64 6c 65 3e  20 77 69 6e 2c 20 3c 69  |_handle> win, <i|
00067bd0  63 6f 6e 5f 68 61 6e 64  6c 65 3e 20 69 63 6f 6e  |con_handle> icon|
00067be0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00067bf0  4c 69 62 3a 4d 65 6e 75  2e 68 3d 3e 44 4c 5f 4d  |Lib:Menu.h=>DL_M|
00067c00  65 6e 75 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |enu>..This funct|
00067c10  69 6f 6e 20 70 6f 70 73  20 74 68 65 20 6d 65 6e  |ion pops the men|
00067c20  75 20 2f 6d 65 6e 75 2f  20 75 70 20 6a 75 73 74  |u /menu/ up just|
00067c30  20 62 65 73 69 64 65 20  74 68 65 20 67 69 76 65  | beside the give|
00067c40  6e 20 69 63 6f 6e 2c 20  61 73 20 72 65 63 6f 6d  |n icon, as recom|
00067c50  6d 65 6e 64 65 64 20 69  6e 20 74 68 65 20 73 74  |mended in the st|
00067c60  79 6c 65 20 67 75 69 64  65 2e 00 00 44 41 54 41  |yle guide...DATA|
00067c70  19 01 00 00 4d 65 6e 75  5f 50 6f 70 55 70 41 75  |....Menu_PopUpAu|
00067c80  74 6f 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |to.Syntax:.void |
00067c90  4d 65 6e 75 5f 50 6f 70  55 70 41 75 74 6f 20 28  |Menu_PopUpAuto (|
00067ca0  3c 6d 65 6e 75 5f 70 74  72 3e 20 6d 65 6e 75 29  |<menu_ptr> menu)|
00067cb0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
00067cc0  69 62 3a 4d 65 6e 75 2e  68 3d 3e 44 4c 5f 4d 65  |ib:Menu.h=>DL_Me|
00067cd0  6e 75 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |nu>..This functi|
00067ce0  6f 6e 20 70 6f 70 73 20  74 68 65 20 6d 65 6e 75  |on pops the menu|
00067cf0  20 2f 6d 65 6e 75 2f 20  75 70 20 6a 75 73 74 20  | /menu/ up just |
00067d00  62 65 73 69 64 65 20 74  68 65 20 69 63 6f 6e 20  |beside the icon |
00067d10  77 68 69 63 68 20 69 73  20 64 65 74 65 72 6d 69  |which is determi|
00067d20  6e 65 64 20 62 79 20 74  68 65 20 6c 61 73 74 20  |ned by the last |
00067d30  57 69 6d 70 20 65 76 65  6e 74 20 70 72 6f 63 65  |Wimp event proce|
00067d40  73 73 65 64 20 62 79 20  74 68 65 20 3c 45 76 65  |ssed by the <Eve|
00067d50  6e 74 3e 20 6d 6f 64 75  6c 65 2e 20 49 66 20 6e  |nt> module. If n|
00067d60  6f 20 69 6e 66 6f 20 63  61 6e 20 62 65 20 66 6f  |o info can be fo|
00067d70  75 6e 64 2c 20 6e 6f 74  68 69 6e 67 20 68 61 70  |und, nothing hap|
00067d80  70 65 6e 73 2e 00 00 00  44 41 54 41 ff 00 00 00  |pens....DATA....|
00067d90  4d 65 6e 75 5f 4d 61 6b  65 49 6e 64 69 72 65 63  |Menu_MakeIndirec|
00067da0  74 65 64 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |ted.Syntax:.void|
00067db0  20 4d 65 6e 75 5f 4d 61  6b 65 49 6e 64 69 72 65  | Menu_MakeIndire|
00067dc0  63 74 65 64 20 28 3c 6d  65 6e 75 5f 70 74 72 3e  |cted (<menu_ptr>|
00067dd0  20 6d 65 6e 75 2c 20 69  6e 74 20 65 6e 74 72 79  | menu, int entry|
00067de0  2c 20 63 68 61 72 20 2a  62 75 66 2c 20 69 6e 74  |, char *buf, int|
00067df0  20 73 69 7a 65 29 3b 0a  48 65 61 64 65 72 3a 09  | size);.Header:.|
00067e00  3c 44 65 73 6b 4c 69 62  3a 4d 65 6e 75 2e 68 3d  |<DeskLib:Menu.h=|
00067e10  3e 44 4c 5f 4d 65 6e 75  3e 0a 0a 54 68 69 73 20  |>DL_Menu>..This |
00067e20  66 75 6e 63 74 69 6f 6e  20 63 6f 6e 76 65 72 74  |function convert|
00067e30  73 20 74 68 65 20 67 69  76 65 6e 20 6d 65 6e 75  |s the given menu|
00067e40  20 65 6e 74 72 79 20 69  6e 74 6f 20 61 6e 20 69  | entry into an i|
00067e50  6e 64 69 72 65 63 74 65  64 20 69 74 65 6d 20 75  |ndirected item u|
00067e60  73 69 6e 67 20 74 68 65  20 62 75 66 66 65 72 20  |sing the buffer |
00067e70  2f 62 75 66 2f 20 6f 66  20 6c 65 6e 67 74 68 20  |/buf/ of length |
00067e80  2f 73 69 7a 65 2f 2e 00  44 41 54 41 ef 00 00 00  |/size/..DATA....|
00067e90  4d 65 6e 75 5f 46 75 6c  6c 44 69 73 70 6f 73 65  |Menu_FullDispose|
00067ea0  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 4d 65  |.Syntax:.void Me|
00067eb0  6e 75 5f 46 75 6c 6c 44  69 73 70 6f 73 65 20 28  |nu_FullDispose (|
00067ec0  3c 6d 65 6e 75 5f 70 74  72 3e 20 6d 65 6e 75 29  |<menu_ptr> menu)|
00067ed0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
00067ee0  69 62 3a 4d 65 6e 75 2e  68 3d 3e 44 4c 5f 4d 65  |ib:Menu.h=>DL_Me|
00067ef0  6e 75 3e 0a 0a 54 68 69  73 20 66 72 65 65 73 20  |nu>..This frees |
00067f00  75 70 20 74 68 65 20 6d  65 6d 6f 72 79 20 75 73  |up the memory us|
00067f10  65 64 20 62 79 20 61 20  6d 65 6e 75 2e 20 49 74  |ed by a menu. It|
00067f20  20 64 6f 65 73 6e 27 74  20 72 65 63 75 72 73 69  | doesn't recursi|
00067f30  76 65 6c 79 20 64 69 73  70 6f 73 65 20 6f 66 20  |vely dispose of |
00067f40  73 75 62 6d 65 6e 75 73  20 62 75 74 20 69 74 20  |submenus but it |
00067f50  5f 64 6f 65 73 5f 20 64  69 73 70 6f 73 65 20 6f  |_does_ dispose o|
00067f60  66 20 69 6e 64 69 72 65  63 74 65 64 20 6d 65 6e  |f indirected men|
00067f70  75 20 64 61 74 61 2e 00  44 41 54 41 fe 00 00 00  |u data..DATA....|
00067f80  4d 65 6e 75 5f 52 65 76  69 73 65 57 69 64 74 68  |Menu_ReviseWidth|
00067f90  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 4d 65  |.Syntax:.void Me|
00067fa0  6e 75 5f 52 65 76 69 73  65 57 69 64 74 68 20 28  |nu_ReviseWidth (|
00067fb0  3c 6d 65 6e 75 5f 70 74  72 3e 20 6d 65 6e 75 29  |<menu_ptr> menu)|
00067fc0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
00067fd0  69 62 3a 4d 65 6e 75 2e  68 3d 3e 44 4c 5f 4d 65  |ib:Menu.h=>DL_Me|
00067fe0  6e 75 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |nu>..This functi|
00067ff0  6f 6e 20 72 65 73 63 61  6e 73 20 74 68 72 6f 75  |on rescans throu|
00068000  67 68 20 61 20 6d 65 6e  75 20 64 65 66 69 6e 69  |gh a menu defini|
00068010  74 69 6f 6e 20 61 6e 64  20 72 65 76 69 73 65 73  |tion and revises|
00068020  20 69 74 73 20 77 69 64  74 68 20 62 61 73 65 64  | its width based|
00068030  20 6f 6e 20 74 68 65 20  74 69 74 6c 65 20 61 6e  | on the title an|
00068040  64 20 69 74 65 6d 20 6c  65 6e 67 74 68 73 2e 20  |d item lengths. |
00068050  41 74 20 6c 65 61 73 74  20 6f 6e 65 20 69 74 65  |At least one ite|
00068060  6d 20 6d 75 73 74 20 62  65 20 69 6e 20 74 68 65  |m must be in the|
00068070  20 6d 65 6e 75 2e 00 00  44 41 54 41 a1 01 00 00  | menu...DATA....|
00068080  4d 65 6e 75 5f 46 6f 6e  74 4d 65 6e 75 0a 53 79  |Menu_FontMenu.Sy|
00068090  6e 74 61 78 3a 09 3c 6d  65 6e 75 5f 70 74 72 3e  |ntax:.<menu_ptr>|
000680a0  20 4d 65 6e 75 5f 46 6f  6e 74 4d 65 6e 75 20 28  | Menu_FontMenu (|
000680b0  3c 42 4f 4f 4c 3e 20 73  79 73 66 6f 6e 74 2c 20  |<BOOL> sysfont, |
000680c0  63 68 61 72 20 2a 74 69  63 6b 29 3b 0a 48 65 61  |char *tick);.Hea|
000680d0  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 4d 65  |der:.<DeskLib:Me|
000680e0  6e 75 2e 68 3d 3e 44 4c  5f 4d 65 6e 75 3e 0a 0a  |nu.h=>DL_Menu>..|
000680f0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00068100  20 74 6f 20 6d 65 6e 75  2c 20 6f 72 20 30 20 69  | to menu, or 0 i|
00068110  66 20 66 61 69 6c 65 64  2e 0a 0a 54 68 69 73 20  |f failed...This |
00068120  66 75 6e 63 74 69 6f 6e  20 63 72 65 61 74 65 73  |function creates|
00068130  20 61 20 66 6f 6e 74 20  6d 65 6e 75 2c 20 69 6e  | a font menu, in|
00068140  63 6c 75 64 69 6e 67 20  27 53 79 73 74 65 6d 20  |cluding 'System |
00068150  66 6f 6e 74 27 20 69 66  20 2f 73 79 73 66 6f 6e  |font' if /sysfon|
00068160  74 2f 20 69 73 20 3c 54  52 55 45 3e 2e 20 2f 74  |t/ is <TRUE>. /t|
00068170  69 63 6b 2f 20 69 6e 64  69 63 61 74 65 73 20 74  |ick/ indicates t|
00068180  68 65 20 66 6f 6e 74 20  6e 61 6d 65 20 74 6f 20  |he font name to |
00068190  62 65 20 74 69 63 6b 65  64 2c 20 6f 72 20 3c 4d  |be ticked, or <M|
000681a0  65 6e 75 5f 46 6f 6e 74  4d 65 6e 75 5f 4e 4f 54  |enu_FontMenu_NOT|
000681b0  49 43 4b 3e 2c 20 6f 72  20 3c 4d 65 6e 75 5f 46  |ICK>, or <Menu_F|
000681c0  6f 6e 74 4d 65 6e 75 5f  54 49 43 4b 53 59 53 46  |ontMenu_TICKSYSF|
000681d0  4f 4e 54 3e 2e 20 49 66  20 79 6f 75 20 64 6f 6e  |ONT>. If you don|
000681e0  27 74 20 6e 65 65 64 20  74 6f 20 62 65 20 52 49  |'t need to be RI|
000681f0  53 43 20 4f 53 20 32 20  63 6f 6d 70 61 74 69 62  |SC OS 2 compatib|
00068200  6c 65 2c 20 75 73 65 20  3c 4d 65 6e 75 5f 46 6f  |le, use <Menu_Fo|
00068210  6e 74 4d 65 6e 75 33 3e  2e 00 00 00 44 41 54 41  |ntMenu3>....DATA|
00068220  86 01 00 00 4d 65 6e 75  5f 46 6f 6e 74 4d 65 6e  |....Menu_FontMen|
00068230  75 33 0a 53 79 6e 74 61  78 3a 09 3c 6d 65 6e 75  |u3.Syntax:.<menu|
00068240  5f 70 74 72 3e 20 4d 65  6e 75 5f 46 6f 6e 74 4d  |_ptr> Menu_FontM|
00068250  65 6e 75 33 20 28 3c 42  4f 4f 4c 3e 20 73 79 73  |enu3 (<BOOL> sys|
00068260  66 6f 6e 74 2c 20 63 68  61 72 20 2a 74 69 63 6b  |font, char *tick|
00068270  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00068280  4c 69 62 3a 4d 65 6e 75  2e 68 3d 3e 44 4c 5f 4d  |Lib:Menu.h=>DL_M|
00068290  65 6e 75 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |enu>..Returns:.P|
000682a0  6f 69 6e 74 65 72 20 74  6f 20 6d 65 6e 75 2c 20  |ointer to menu, |
000682b0  6f 72 20 30 20 69 66 20  66 61 69 6c 65 64 2e 0a  |or 0 if failed..|
000682c0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
000682d0  72 65 61 74 65 73 20 61  20 66 6f 6e 74 20 6d 65  |reates a font me|
000682e0  6e 75 2c 20 69 6e 63 6c  75 64 69 6e 67 20 27 53  |nu, including 'S|
000682f0  79 73 74 65 6d 20 66 6f  6e 74 27 20 69 66 20 2f  |ystem font' if /|
00068300  73 79 73 66 6f 6e 74 2f  20 69 73 20 3c 54 52 55  |sysfont/ is <TRU|
00068310  45 3e 2e 20 2f 74 69 63  6b 2f 20 69 6e 64 69 63  |E>. /tick/ indic|
00068320  61 74 65 73 20 74 68 65  20 66 6f 6e 74 20 6e 61  |ates the font na|
00068330  6d 65 20 74 6f 20 62 65  20 74 69 63 6b 65 64 2c  |me to be ticked,|
00068340  20 6f 72 20 3c 4d 65 6e  75 5f 46 6f 6e 74 4d 65  | or <Menu_FontMe|
00068350  6e 75 5f 4e 4f 54 49 43  4b 3e 2c 20 6f 72 20 3c  |nu_NOTICK>, or <|
00068360  4d 65 6e 75 5f 46 6f 6e  74 4d 65 6e 75 5f 54 49  |Menu_FontMenu_TI|
00068370  43 4b 53 59 53 46 4f 4e  54 3e 2e 20 54 68 69 73  |CKSYSFONT>. This|
00068380  20 66 75 6e 63 74 69 6f  6e 20 77 6f 6e 27 74 20  | function won't |
00068390  77 6f 72 6b 20 6f 6e 20  52 49 53 43 20 4f 53 20  |work on RISC OS |
000683a0  32 2e 00 00 44 41 54 41  2b 01 00 00 4d 65 6e 75  |2...DATA+...Menu|
000683b0  5f 46 6f 6e 74 4d 65 6e  75 44 65 63 6f 64 65 0a  |_FontMenuDecode.|
000683c0  53 79 6e 74 61 78 3a 09  63 68 61 72 20 2a 4d 65  |Syntax:.char *Me|
000683d0  6e 75 5f 46 6f 6e 74 4d  65 6e 75 44 65 63 6f 64  |nu_FontMenuDecod|
000683e0  65 20 28 69 6e 74 20 2a  73 65 6c 29 3b 0a 48 65  |e (int *sel);.He|
000683f0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 4d  |ader:.<DeskLib:M|
00068400  65 6e 75 2e 68 3d 3e 44  4c 5f 4d 65 6e 75 3e 0a  |enu.h=>DL_Menu>.|
00068410  0a 52 65 74 75 72 6e 73  3a 09 46 6f 6e 74 20 6e  |.Returns:.Font n|
00068420  61 6d 65 2c 20 6f 72 20  30 20 69 66 20 61 6e 20  |ame, or 0 if an |
00068430  65 72 72 6f 72 2e 0a 0a  54 68 69 73 20 66 75 6e  |error...This fun|
00068440  63 74 69 6f 6e 2c 20 67  69 76 65 6e 20 61 20 6c  |ction, given a l|
00068450  69 73 74 20 6f 66 20 73  65 6c 65 63 74 69 6f 6e  |ist of selection|
00068460  73 20 66 72 6f 6d 20 74  68 65 20 66 6f 6e 74 20  |s from the font |
00068470  6d 65 6e 75 2c 20 72 65  74 75 72 6e 73 20 74 68  |menu, returns th|
00068480  65 20 66 6f 6e 74 20 6e  61 6d 65 2e 20 49 66 20  |e font name. If |
00068490  79 6f 75 20 6f 6e 6c 79  20 6e 65 65 64 20 74 6f  |you only need to|
000684a0  20 73 75 70 70 6f 72 74  20 52 49 53 43 20 4f 53  | support RISC OS|
000684b0  20 33 2c 20 75 73 65 20  3c 4d 65 6e 75 5f 46 6f  | 3, use <Menu_Fo|
000684c0  6e 74 4d 65 6e 75 44 65  63 6f 64 65 33 3e 2e 00  |ntMenuDecode3>..|
000684d0  44 41 54 41 02 01 00 00  4d 65 6e 75 5f 46 6f 6e  |DATA....Menu_Fon|
000684e0  74 4d 65 6e 75 44 65 63  6f 64 65 33 0a 53 79 6e  |tMenuDecode3.Syn|
000684f0  74 61 78 3a 09 63 68 61  72 20 2a 4d 65 6e 75 5f  |tax:.char *Menu_|
00068500  46 6f 6e 74 4d 65 6e 75  44 65 63 6f 64 65 33 20  |FontMenuDecode3 |
00068510  28 69 6e 74 20 2a 73 65  6c 29 3b 0a 48 65 61 64  |(int *sel);.Head|
00068520  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 4d 65 6e  |er:.<DeskLib:Men|
00068530  75 2e 68 3d 3e 44 4c 5f  4d 65 6e 75 3e 0a 0a 52  |u.h=>DL_Menu>..R|
00068540  65 74 75 72 6e 73 3a 09  46 6f 6e 74 20 6e 61 6d  |eturns:.Font nam|
00068550  65 2c 20 6f 72 20 30 20  69 66 20 61 6e 20 65 72  |e, or 0 if an er|
00068560  72 6f 72 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |ror...This funct|
00068570  69 6f 6e 2c 20 67 69 76  65 6e 20 61 20 6c 69 73  |ion, given a lis|
00068580  74 20 6f 66 20 73 65 6c  65 63 74 69 6f 6e 73 20  |t of selections |
00068590  66 72 6f 6d 20 74 68 65  20 66 6f 6e 74 20 6d 65  |from the font me|
000685a0  6e 75 2c 20 72 65 74 75  72 6e 73 20 74 68 65 20  |nu, returns the |
000685b0  66 6f 6e 74 20 6e 61 6d  65 2e 20 54 68 69 73 20  |font name. This |
000685c0  69 73 20 52 49 53 43 20  4f 53 20 33 20 6f 6e 6c  |is RISC OS 3 onl|
000685d0  79 2e 00 00 44 41 54 41  a2 00 00 00 4d 65 6e 75  |y...DATA....Menu|
000685e0  5f 46 6f 6e 74 4d 65 6e  75 5f 4e 4f 54 49 43 4b  |_FontMenu_NOTICK|
000685f0  0a 54 68 69 73 20 6d 61  63 72 6f 20 69 73 20 64  |.This macro is d|
00068600  65 66 69 6e 65 64 20 69  6e 20 3c 44 65 73 6b 4c  |efined in <DeskL|
00068610  69 62 3a 4d 65 6e 75 2e  68 3d 3e 44 4c 5f 4d 65  |ib:Menu.h=>DL_Me|
00068620  6e 75 3e 2e 20 49 74 20  73 70 65 63 69 66 69 65  |nu>. It specifie|
00068630  73 20 74 68 61 74 20 6e  6f 20 65 6e 74 72 79 20  |s that no entry |
00068640  6f 6e 20 74 68 65 20 66  6f 6e 74 20 6d 65 6e 75  |on the font menu|
00068650  20 73 68 6f 75 6c 64 20  62 65 20 74 69 63 6b 65  | should be ticke|
00068660  64 20 61 6e 64 20 69 73  20 64 65 66 69 6e 65 64  |d and is defined|
00068670  20 61 73 20 30 2e 00 00  44 41 54 41 c1 00 00 00  | as 0...DATA....|
00068680  4d 65 6e 75 5f 46 6f 6e  74 4d 65 6e 75 5f 54 49  |Menu_FontMenu_TI|
00068690  43 4b 53 59 53 46 4f 4e  54 0a 54 68 69 73 20 6d  |CKSYSFONT.This m|
000686a0  61 63 72 6f 20 69 73 20  64 65 66 69 6e 65 64 20  |acro is defined |
000686b0  69 6e 20 3c 44 65 73 6b  4c 69 62 3a 4d 65 6e 75  |in <DeskLib:Menu|
000686c0  2e 68 3d 3e 44 4c 5f 4d  65 6e 75 3e 2e 20 49 74  |.h=>DL_Menu>. It|
000686d0  20 73 70 65 63 69 66 69  65 73 20 74 68 61 74 20  | specifies that |
000686e0  74 68 65 20 27 53 79 73  74 65 6d 20 66 6f 6e 74  |the 'System font|
000686f0  27 20 65 6e 74 72 79 20  6f 6e 20 74 68 65 20 66  |' entry on the f|
00068700  6f 6e 74 20 6d 65 6e 75  20 73 68 6f 75 6c 64 20  |ont menu should |
00068710  62 65 20 74 69 63 6b 65  64 20 61 6e 64 20 69 73  |be ticked and is|
00068720  20 64 65 66 69 6e 65 64  20 61 73 20 28 28 63 68  | defined as ((ch|
00068730  61 72 20 2a 29 20 31 29  2e 00 00 00 44 49 52 24  |ar *) 1)....DIR$|
00068740  a8 02 00 00 a8 02 00 00  e4 89 06 00 46 ff ff ff  |............F...|
00068750  ae c5 46 26 16 08 00 00  13 00 00 00 00 00 00 00  |..F&............|
00068760  61 63 74 69 6f 6e 00 00  fc 91 06 00 46 ff ff ff  |action......F...|
00068770  a9 16 48 26 ac 03 00 00  13 00 00 00 00 00 00 00  |..H&............|
00068780  62 6c 6f 63 6b 00 00 00  a8 95 06 00 46 ff ff ff  |block.......F...|
00068790  10 18 47 26 60 01 00 00  13 00 00 00 00 00 00 00  |..G&`...........|
000687a0  64 61 74 61 6c 6f 61 64  00 00 00 00 08 97 06 00  |dataload........|
000687b0  46 ff ff ff 4d 2f 47 26  a3 00 00 00 13 00 00 00  |F...M/G&........|
000687c0  00 00 00 00 64 61 74 61  6f 70 65 6e 00 00 00 00  |....dataopen....|
000687d0  ac 97 06 00 46 ff ff ff  dc f9 46 26 a6 02 00 00  |....F.....F&....|
000687e0  13 00 00 00 00 00 00 00  64 61 74 61 73 61 76 65  |........datasave|
000687f0  00 00 00 00 54 9a 06 00  46 ff ff ff ee 0c 47 26  |....T...F.....G&|
00068800  ad 01 00 00 13 00 00 00  00 00 00 00 64 61 74 61  |............data|
00068810  73 61 76 65 61 63 6b 00  04 9c 06 00 46 ff ff ff  |saveack.....F...|
00068820  46 d9 46 26 be 00 00 00  13 00 00 00 00 00 00 00  |F.F&............|
00068830  64 65 73 74 69 6e 65 65  00 00 00 00 c4 9c 06 00  |destinee........|
00068840  46 ff ff ff 6d e2 46 26  3d 01 00 00 13 00 00 00  |F...m.F&=.......|
00068850  00 00 00 00 68 65 61 64  65 72 00 00 04 9e 06 00  |....header......|
00068860  46 ff ff ff 25 4a 47 26  5a 01 00 00 13 00 00 00  |F...%JG&Z.......|
00068870  00 00 00 00 68 65 6c 70  72 65 70 6c 79 00 00 00  |....helpreply...|
00068880  60 9f 06 00 46 ff ff ff  dc 44 47 26 15 01 00 00  |`...F....DG&....|
00068890  13 00 00 00 00 00 00 00  68 65 6c 70 72 65 71 75  |........helprequ|
000688a0  65 73 74 00 78 a0 06 00  46 ff ff ff 55 63 47 26  |est.x...F...UcG&|
000688b0  66 01 00 00 13 00 00 00  00 00 00 00 6d 65 6e 75  |f...........menu|
000688c0  77 61 72 6e 00 00 00 00  e0 a1 06 00 46 ff ff ff  |warn........F...|
000688d0  15 e7 61 25 62 01 00 00  13 00 00 00 00 00 00 00  |..a%b...........|
000688e0  70 6f 70 75 70 72 65 71  75 65 73 74 00 00 00 00  |popuprequest....|
000688f0  44 a3 06 00 46 ff ff ff  45 ee 61 25 74 01 00 00  |D...F...E.a%t...|
00068900  13 00 00 00 00 00 00 00  70 6f 70 75 70 73 74 61  |........popupsta|
00068910  74 65 00 00 b8 a4 06 00  46 ff ff ff f5 51 47 26  |te......F....QG&|
00068920  c3 00 00 00 13 00 00 00  00 00 00 00 70 72 69 6e  |............prin|
00068930  74 00 00 00 7c a5 06 00  46 ff ff ff cd 35 47 26  |t...|...F....5G&|
00068940  aa 00 00 00 13 00 00 00  00 00 00 00 72 61 6d 66  |............ramf|
00068950  65 74 63 68 00 00 00 00  28 a6 06 00 46 ff ff ff  |etch....(...F...|
00068960  6d 3f 47 26 b4 00 00 00  13 00 00 00 00 00 00 00  |m?G&............|
00068970  72 61 6d 74 72 61 6e 73  6d 69 74 00 dc a6 06 00  |ramtransmit.....|
00068980  46 ff ff ff f4 25 47 26  13 01 00 00 13 00 00 00  |F....%G&........|
00068990  00 00 00 00 64 61 74 61  6c 6f 61 64 61 63 6b 00  |....dataloadack.|
000689a0  f0 a7 06 00 46 ff ff ff  27 a8 47 26 61 01 00 00  |....F...'.G&a...|
000689b0  13 00 00 00 00 00 00 00  69 63 6f 6e 69 7a 65 00  |........iconize.|
000689c0  54 a9 06 00 46 ff ff ff  c3 e4 47 26 9b 01 00 00  |T...F.....G&....|
000689d0  13 00 00 00 00 00 00 00  77 69 6e 64 6f 77 69 6e  |........windowin|
000689e0  66 6f 00 00 44 41 54 41  16 08 00 00 6d 65 73 73  |fo..DATA....mess|
000689f0  61 67 65 5f 61 63 74 69  6f 6e 0a 54 68 69 73 20  |age_action.This |
00068a00  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
00068a10  69 6e 20 3c 44 65 73 6b  4c 69 62 3a 57 69 6d 70  |in <DeskLib:Wimp|
00068a20  2e 68 3e 2e 20 49 74 20  69 73 20 61 6e 20 65 6e  |.h>. It is an en|
00068a30  75 6d 65 72 61 74 65 64  20 74 79 70 65 20 63 6f  |umerated type co|
00068a40  6e 74 61 69 6e 69 6e 67  20 76 61 6c 75 65 73 20  |ntaining values |
00068a50  66 6f 72 20 63 6f 6d 6d  6f 6e 20 57 69 6d 70 20  |for common Wimp |
00068a60  6d 65 73 73 61 67 65 73  2e 0a 7b 77 72 61 70 20  |messages..{wrap |
00068a70  6f 66 66 7d 0a 20 5c 7b  0a 20 20 6d 65 73 73 61  |off}. \{.  messa|
00068a80  67 65 5f 51 55 49 54 09  09 09 3d 20 30 2c 09 09  |ge_QUIT...= 0,..|
00068a90  2f 2a 20 51 75 69 74 20  2a 2f 0a 20 20 6d 65 73  |/* Quit */.  mes|
00068aa0  73 61 67 65 5f 43 4c 4f  53 45 44 4f 57 4e 09 09  |sage_CLOSEDOWN..|
00068ab0  3d 20 30 2c 20 20 20 20  0a 20 20 6d 65 73 73 61  |= 0,    .  messa|
00068ac0  67 65 5f 44 41 54 41 53  41 56 45 09 09 3d 20 31  |ge_DATASAVE..= 1|
00068ad0  2c 09 09 2f 2a 20 44 61  74 61 53 61 76 65 20 2a  |,../* DataSave *|
00068ae0  2f 0a 20 20 6d 65 73 73  61 67 65 5f 44 41 54 41  |/.  message_DATA|
00068af0  53 41 56 45 41 43 4b 09  09 3d 20 32 2c 09 09 2f  |SAVEACK..= 2,../|
00068b00  2a 20 44 61 74 61 53 61  76 65 41 63 6b 20 2a 2f  |* DataSaveAck */|
00068b10  0a 20 20 6d 65 73 73 61  67 65 5f 44 41 54 41 53  |.  message_DATAS|
00068b20  41 56 45 4f 4b 09 09 3d  20 32 2c 20 20 20 20 0a  |AVEOK..= 2,    .|
00068b30  20 20 6d 65 73 73 61 67  65 5f 44 41 54 41 4c 4f  |  message_DATALO|
00068b40  41 44 09 09 3d 20 33 2c  09 09 2f 2a 20 44 61 74  |AD..= 3,../* Dat|
00068b50  61 4c 6f 61 64 20 2a 2f  0a 20 20 6d 65 73 73 61  |aLoad */.  messa|
00068b60  67 65 5f 44 41 54 41 4c  4f 41 44 41 43 4b 09 09  |ge_DATALOADACK..|
00068b70  3d 20 34 2c 09 09 2f 2a  20 44 61 74 61 4c 6f 61  |= 4,../* DataLoa|
00068b80  64 41 63 6b 20 2a 2f 0a  20 20 6d 65 73 73 61 67  |dAck */.  messag|
00068b90  65 5f 44 41 54 41 4c 4f  41 44 4f 4b 09 09 3d 20  |e_DATALOADOK..= |
00068ba0  34 2c 20 20 20 20 0a 20  20 6d 65 73 73 61 67 65  |4,    .  message|
00068bb0  5f 44 41 54 41 4f 50 45  4e 2c 09 09 20 09 09 2f  |_DATAOPEN,.. ../|
00068bc0  2a 20 44 61 74 61 4f 70  65 6e 20 2a 2f 0a 20 20  |* DataOpen */.  |
00068bd0  6d 65 73 73 61 67 65 5f  52 41 4d 46 45 54 43 48  |message_RAMFETCH|
00068be0  2c 09 09 20 09 09 2f 2a  20 52 41 4d 46 65 74 63  |,.. ../* RAMFetc|
00068bf0  68 20 2a 2f 0a 20 20 6d  65 73 73 61 67 65 5f 52  |h */.  message_R|
00068c00  41 4d 54 52 41 4e 53 4d  49 54 2c 09 09 20 09 09  |AMTRANSMIT,.. ..|
00068c10  2f 2a 20 52 41 4d 54 72  61 6e 73 6d 69 74 20 2a  |/* RAMTransmit *|
00068c20  2f 0a 20 20 6d 65 73 73  61 67 65 5f 50 52 45 51  |/.  message_PREQ|
00068c30  55 49 54 2c 09 09 20 09  09 2f 2a 20 50 72 65 51  |UIT,.. ../* PreQ|
00068c40  75 69 74 20 2a 2f 0a 20  20 6d 65 73 73 61 67 65  |uit */.  message|
00068c50  5f 50 41 4c 45 54 54 45  43 48 41 4e 47 45 2c 09  |_PALETTECHANGE,.|
00068c60  20 09 09 2f 2a 20 50 61  6c 65 74 74 65 43 68 61  | ../* PaletteCha|
00068c70  6e 67 65 20 2a 2f 0a 20  20 6d 65 73 73 61 67 65  |nge */.  message|
00068c80  5f 53 41 56 45 44 45 53  4b 2c 09 09 20 09 09 2f  |_SAVEDESK,.. ../|
00068c90  2a 20 53 61 76 65 44 65  73 6b 74 6f 70 20 2a 2f  |* SaveDesktop */|
00068ca0  0a 20 20 6d 65 73 73 61  67 65 5f 44 45 56 49 43  |.  message_DEVIC|
00068cb0  45 43 4c 41 49 4d 2c 09  09 20 09 09 2f 2a 20 44  |ECLAIM,.. ../* D|
00068cc0  65 76 69 63 65 43 6c 61  69 6d 20 2a 2f 0a 20 20  |eviceClaim */.  |
00068cd0  6d 65 73 73 61 67 65 5f  44 45 56 49 43 45 49 4e  |message_DEVICEIN|
00068ce0  55 53 45 2c 09 09 20 09  09 2f 2a 20 44 65 76 69  |USE,.. ../* Devi|
00068cf0  63 65 49 6e 55 73 65 20  2a 2f 0a 20 20 6d 65 73  |ceInUse */.  mes|
00068d00  73 61 67 65 5f 44 41 54  41 53 41 56 45 44 2c 09  |sage_DATASAVED,.|
00068d10  09 20 09 09 2f 2a 20 44  61 74 61 53 61 76 65 64  |. ../* DataSaved|
00068d20  20 2a 2f 0a 20 20 6d 65  73 73 61 67 65 5f 46 49  | */.  message_FI|
00068d30  4c 45 52 4f 50 45 4e 44  49 52 09 09 3d 20 30 78  |LEROPENDIR..= 0x|
00068d40  34 30 30 2c 09 2f 2a 20  46 69 6c 65 72 4f 70 65  |400,./* FilerOpe|
00068d50  6e 44 69 72 20 2a 2f 0a  20 20 6d 65 73 73 61 67  |nDir */.  messag|
00068d60  65 5f 46 49 4c 45 52 43  4c 4f 53 45 44 49 52 2c  |e_FILERCLOSEDIR,|
00068d70  09 20 09 09 2f 2a 20 46  69 6c 65 72 43 6c 6f 73  |. ../* FilerClos|
00068d80  65 44 69 72 20 2a 2f 0a  20 20 6d 65 73 73 61 67  |eDir */.  messag|
00068d90  65 5f 48 45 4c 50 52 45  51 55 45 53 54 09 09 3d  |e_HELPREQUEST..=|
00068da0  20 30 78 35 30 32 2c 09  2f 2a 20 48 65 6c 70 52  | 0x502,./* HelpR|
00068db0  65 71 75 65 73 74 20 2a  2f 0a 20 20 6d 65 73 73  |equest */.  mess|
00068dc0  61 67 65 5f 48 45 4c 50  52 45 50 4c 59 2c 09 09  |age_HELPREPLY,..|
00068dd0  20 09 09 2f 2a 20 48 65  6c 70 52 65 70 6c 79 20  | ../* HelpReply |
00068de0  2a 2f 0a 20 20 6d 65 73  73 61 67 65 5f 4e 4f 54  |*/.  message_NOT|
00068df0  49 46 59 09 09 3d 20 30  78 34 30 30 34 30 2c 09  |IFY..= 0x40040,.|
00068e00  2f 2a 20 4e 6f 74 69 66  79 20 2a 2f 0a 20 20 6d  |/* Notify */.  m|
00068e10  65 73 73 61 67 65 5f 4d  45 4e 55 57 41 52 4e 49  |essage_MENUWARNI|
00068e20  4e 47 09 09 3d 20 30 78  34 30 30 43 30 2c 09 2f  |NG..= 0x400C0,./|
00068e30  2a 20 4d 65 6e 75 57 61  72 6e 69 6e 67 20 2a 2f  |* MenuWarning */|
00068e40  0a 20 20 6d 65 73 73 61  67 65 5f 4d 45 4e 55 57  |.  message_MENUW|
00068e50  41 52 4e 09 09 3d 20 30  78 34 30 30 43 30 2c 0a  |ARN..= 0x400C0,.|
00068e60  20 20 6d 65 73 73 61 67  65 5f 4d 4f 44 45 43 48  |  message_MODECH|
00068e70  41 4e 47 45 2c 09 09 20  09 09 2f 2a 20 4d 6f 64  |ANGE,.. ../* Mod|
00068e80  65 43 68 61 6e 67 65 20  2a 2f 0a 20 20 6d 65 73  |eChange */.  mes|
00068e90  73 61 67 65 5f 54 41 53  4b 49 4e 49 54 49 41 4c  |sage_TASKINITIAL|
00068ea0  49 53 45 09 3d 20 30 78  34 30 30 43 32 2c 09 2f  |ISE.= 0x400C2,./|
00068eb0  2a 20 54 61 73 6b 49 6e  69 74 69 61 6c 69 73 65  |* TaskInitialise|
00068ec0  20 2a 2f 0a 20 20 6d 65  73 73 61 67 65 5f 49 4e  | */.  message_IN|
00068ed0  49 54 54 41 53 4b 09 09  3d 20 30 78 34 30 30 43  |ITTASK..= 0x400C|
00068ee0  32 2c 0a 20 20 6d 65 73  73 61 67 65 5f 54 41 53  |2,.  message_TAS|
00068ef0  4b 43 4c 4f 53 45 44 4f  57 4e 09 09 3d 20 30 78  |KCLOSEDOWN..= 0x|
00068f00  34 30 30 43 33 2c 09 2f  2a 20 54 61 73 6b 43 6c  |400C3,./* TaskCl|
00068f10  6f 73 65 44 6f 77 6e 20  2a 2f 0a 20 20 6d 65 73  |oseDown */.  mes|
00068f20  73 61 67 65 5f 43 4c 4f  53 45 54 41 53 4b 09 09  |sage_CLOSETASK..|
00068f30  3d 20 30 78 34 30 30 43  33 2c 0a 20 20 6d 65 73  |= 0x400C3,.  mes|
00068f40  73 61 67 65 5f 53 4c 4f  54 53 49 5a 45 09 09 3d  |sage_SLOTSIZE..=|
00068f50  20 30 78 34 30 30 43 34  2c 09 2f 2a 20 53 6c 6f  | 0x400C4,./* Slo|
00068f60  74 53 69 7a 65 20 2a 2f  0a 20 20 6d 65 73 73 61  |tSize */.  messa|
00068f70  67 65 5f 53 4c 4f 54 43  48 41 4e 47 45 09 09 3d  |ge_SLOTCHANGE..=|
00068f80  20 30 78 34 30 30 43 34  2c 0a 20 20 6d 65 73 73  | 0x400C4,.  mess|
00068f90  61 67 65 5f 53 45 54 53  4c 4f 54 09 09 3d 20 30  |age_SETSLOT..= 0|
00068fa0  78 34 30 30 43 35 2c 09  2f 2a 20 53 65 74 53 6c  |x400C5,./* SetSl|
00068fb0  6f 74 20 2a 2f 0a 20 20  6d 65 73 73 61 67 65 5f  |ot */.  message_|
00068fc0  54 41 53 4b 4e 41 4d 45  52 51 2c 09 09 20 09 09  |TASKNAMERQ,.. ..|
00068fd0  2f 2a 20 54 61 73 6b 4e  61 6d 65 52 71 20 2a 2f  |/* TaskNameRq */|
00068fe0  0a 20 20 6d 65 73 73 61  67 65 5f 54 41 53 4b 4e  |.  message_TASKN|
00068ff0  41 4d 45 49 53 2c 09 09  20 09 09 2f 2a 20 54 61  |AMEIS,.. ../* Ta|
00069000  73 6b 4e 61 6d 65 49 73  20 2a 2f 0a 20 20 6d 65  |skNameIs */.  me|
00069010  73 73 61 67 65 5f 54 41  53 4b 53 54 41 52 54 45  |ssage_TASKSTARTE|
00069020  44 2c 09 09 20 09 09 2f  2a 20 54 61 73 6b 53 74  |D,.. ../* TaskSt|
00069030  61 72 74 65 64 20 2a 2f  0a 20 20 6d 65 73 73 61  |arted */.  messa|
00069040  67 65 5f 4d 45 4e 55 53  44 45 4c 45 54 45 44 2c  |ge_MENUSDELETED,|
00069050  09 09 20 09 09 2f 2a 20  4d 65 6e 75 73 44 65 6c  |.. ../* MenusDel|
00069060  65 74 65 64 20 2a 2f 0a  20 20 6d 65 73 73 61 67  |eted */.  messag|
00069070  65 5f 57 49 4e 44 4f 57  49 4e 46 4f 09 09 3d 20  |e_WINDOWINFO..= |
00069080  30 78 34 30 30 43 43 2c  09 2f 2a 20 57 69 6e 64  |0x400CC,./* Wind|
00069090  6f 77 49 6e 66 6f 20 2a  2f 0a 20 20 6d 65 73 73  |owInfo */.  mess|
000690a0  61 67 65 5f 50 4f 50 55  50 52 51 09 09 3d 20 30  |age_POPUPRQ..= 0|
000690b0  78 34 36 44 34 30 2c 0a  20 20 6d 65 73 73 61 67  |x46D40,.  messag|
000690c0  65 5f 50 4f 50 55 50 52  45 51 55 45 53 54 09 09  |e_POPUPREQUEST..|
000690d0  3d 20 30 78 34 36 44 34  30 2c 0a 20 20 6d 65 73  |= 0x46D40,.  mes|
000690e0  73 61 67 65 5f 50 4f 50  55 50 53 54 41 54 45 2c  |sage_POPUPSTATE,|
000690f0  0a 20 20 6d 65 73 73 61  67 65 5f 50 4f 50 55 50  |.  message_POPUP|
00069100  43 4c 4f 53 45 44 2c 20  20 0a 20 20 6d 65 73 73  |CLOSED,  .  mess|
00069110  61 67 65 5f 50 52 49 4e  54 46 49 4c 45 09 09 3d  |age_PRINTFILE..=|
00069120  20 30 78 38 30 31 34 30  2c 09 2f 2a 20 50 72 69  | 0x80140,./* Pri|
00069130  6e 74 46 69 6c 65 20 2a  2f 0a 20 20 6d 65 73 73  |ntFile */.  mess|
00069140  61 67 65 5f 57 49 4c 4c  50 52 49 4e 54 2c 09 09  |age_WILLPRINT,..|
00069150  20 09 09 2f 2a 20 57 69  6c 6c 50 72 69 6e 74 20  | ../* WillPrint |
00069160  2a 2f 0a 20 20 6d 65 73  73 61 67 65 5f 50 52 49  |*/.  message_PRI|
00069170  4e 54 54 59 50 45 4f 44  44 09 09 3d 20 30 78 38  |NTTYPEODD..= 0x8|
00069180  30 31 34 35 2c 09 2f 2a  20 50 72 69 6e 74 54 79  |0145,./* PrintTy|
00069190  70 65 4f 64 64 20 2a 2f  0a 20 20 6d 65 73 73 61  |peOdd */.  messa|
000691a0  67 65 5f 50 52 49 4e 54  54 59 50 45 4b 4e 4f 57  |ge_PRINTTYPEKNOW|
000691b0  4e 2c 09 20 09 09 2f 2a  20 50 72 69 6e 74 54 79  |N,. ../* PrintTy|
000691c0  70 65 4b 6e 6f 77 6e 20  2a 2f 0a 20 20 6d 65 73  |peKnown */.  mes|
000691d0  73 61 67 65 5f 50 52 49  4e 54 45 52 43 48 41 4e  |sage_PRINTERCHAN|
000691e0  47 45 09 09 20 09 09 2f  2a 20 53 65 74 50 72 69  |GE.. ../* SetPri|
000691f0  6e 74 65 72 20 2a 2f 0a  20 7d 00 00 44 41 54 41  |nter */. }..DATA|
00069200  ac 03 00 00 6d 65 73 73  61 67 65 5f 62 6c 6f 63  |....message_bloc|
00069210  6b 0a 54 68 69 73 20 74  79 70 65 20 69 73 20 64  |k.This type is d|
00069220  65 66 69 6e 65 64 20 69  6e 20 3c 44 65 73 6b 4c  |efined in <DeskL|
00069230  69 62 3a 57 69 6d 70 2e  68 3d 3e 57 69 6d 70 3e  |ib:Wimp.h=>Wimp>|
00069240  2e 20 49 74 20 69 73 20  74 68 65 20 73 74 72 75  |. It is the stru|
00069250  63 74 75 72 65 20 75 73  65 64 20 66 6f 72 20 57  |cture used for W|
00069260  69 6d 70 20 6d 65 73 73  61 67 65 73 2e 0a 0a 20  |imp messages... |
00069270  20 5c 7b 0a 20 20 20 20  3c 6d 65 73 73 61 67 65  | \{.    <message|
00069280  5f 68 65 61 64 65 72 3e  20 20 68 65 61 64 65 72  |_header>  header|
00069290  3b 0a 20 20 20 20 75 6e  69 6f 6e 0a 20 20 20 20  |;.    union.    |
000692a0  5c 7b 0a 20 20 20 20 20  20 63 68 61 72 09 09 09  |\{.      char...|
000692b0  62 79 74 65 73 20 5b 32  33 36 5d 3b 0a 20 20 20  |bytes [236];.   |
000692c0  20 20 20 69 6e 74 09 09  09 77 6f 72 64 73 20 5b  |   int...words [|
000692d0  35 39 5d 3b 0a 20 20 20  20 20 20 3c 6d 65 73 73  |59];.      <mess|
000692e0  61 67 65 5f 64 61 74 61  73 61 76 65 3e 09 64 61  |age_datasave>.da|
000692f0  74 61 73 61 76 65 3b 0a  20 20 20 20 20 20 3c 6d  |tasave;.      <m|
00069300  65 73 73 61 67 65 5f 64  61 74 61 73 61 76 65 61  |essage_datasavea|
00069310  63 6b 3e 09 64 61 74 61  73 61 76 65 61 63 6b 3b  |ck>.datasaveack;|
00069320  0a 20 20 20 20 20 20 3c  6d 65 73 73 61 67 65 5f  |.      <message_|
00069330  64 61 74 61 6c 6f 61 64  3e 09 64 61 74 61 6c 6f  |dataload>.datalo|
00069340  61 64 3b 0a 20 20 20 20  20 20 3c 6d 65 73 73 61  |ad;.      <messa|
00069350  67 65 5f 64 61 74 61 6f  70 65 6e 3e 09 64 61 74  |ge_dataopen>.dat|
00069360  61 6f 70 65 6e 3b 0a 20  20 20 20 20 20 3c 6d 65  |aopen;.      <me|
00069370  73 73 61 67 65 5f 72 61  6d 66 65 74 63 68 3e 09  |ssage_ramfetch>.|
00069380  72 61 6d 66 65 74 63 68  3b 0a 20 20 20 20 20 20  |ramfetch;.      |
00069390  3c 6d 65 73 73 61 67 65  5f 72 61 6d 74 72 61 6e  |<message_ramtran|
000693a0  73 6d 69 74 3e 09 72 61  6d 74 72 61 6e 73 6d 69  |smit>.ramtransmi|
000693b0  74 3b 0a 20 20 20 20 20  20 3c 6d 65 73 73 61 67  |t;.      <messag|
000693c0  65 5f 68 65 6c 70 72 65  71 75 65 73 74 3e 09 68  |e_helprequest>.h|
000693d0  65 6c 70 72 65 71 75 65  73 74 3b 0a 20 20 20 20  |elprequest;.    |
000693e0  20 20 3c 6d 65 73 73 61  67 65 5f 68 65 6c 70 72  |  <message_helpr|
000693f0  65 70 6c 79 3e 09 68 65  6c 70 72 65 70 6c 79 3b  |eply>.helpreply;|
00069400  0a 20 20 20 20 20 20 3c  6d 65 73 73 61 67 65 5f  |.      <message_|
00069410  70 72 69 6e 74 3e 09 09  70 72 69 6e 74 3b 0a 20  |print>..print;. |
00069420  20 20 20 20 20 3c 6d 65  73 73 61 67 65 5f 6d 65  |     <message_me|
00069430  6e 75 77 61 72 6e 3e 09  6d 65 6e 75 77 61 72 6e  |nuwarn>.menuwarn|
00069440  3b 0a 20 20 20 20 20 20  3c 6d 65 73 73 61 67 65  |;.      <message|
00069450  5f 69 63 6f 6e 69 7a 65  3e 09 09 69 63 6f 6e 69  |_iconize>..iconi|
00069460  7a 65 3b 0a 20 20 20 20  20 20 3c 6d 65 73 73 61  |ze;.      <messa|
00069470  67 65 5f 77 69 6e 64 6f  77 69 6e 66 6f 3e 09 77  |ge_windowinfo>.w|
00069480  69 6e 64 6f 77 69 6e 66  6f 3b 0a 20 20 20 20 7d  |indowinfo;.    }|
00069490  20 64 61 74 61 3b 0a 20  20 7d 0a 0a 41 73 20 63  | data;.  }..As c|
000694a0  61 6e 20 62 65 20 73 65  65 6e 2c 20 63 65 72 74  |an be seen, cert|
000694b0  61 69 6e 20 6d 65 73 73  61 67 65 73 20 68 61 76  |ain messages hav|
000694c0  65 20 74 68 65 69 72 20  6f 77 6e 20 74 79 70 65  |e their own type|
000694d0  73 20 70 72 65 64 65 66  69 6e 65 64 2e 20 46 6f  |s predefined. Fo|
000694e0  72 20 6f 74 68 65 72 73  2c 20 64 65 66 69 6e 65  |r others, define|
000694f0  20 79 6f 75 72 20 6f 77  6e 20 61 6e 64 20 63 61  | your own and ca|
00069500  73 74 20 7b 2f 7d 64 61  74 61 2e 62 79 74 65 73  |st {/}data.bytes|
00069510  7b 2f 7d 20 69 6e 74 6f  20 74 68 69 73 20 74 79  |{/} into this ty|
00069520  70 65 2c 20 6f 72 20 6a  75 73 74 20 61 63 63 65  |pe, or just acce|
00069530  73 73 20 74 68 65 20 64  61 74 61 20 64 69 72 65  |ss the data dire|
00069540  63 74 6c 79 20 66 72 6f  6d 20 7b 2f 7d 64 61 74  |ctly from {/}dat|
00069550  61 2e 62 79 74 65 73 7b  2f 7d 20 6f 72 20 7b 2f  |a.bytes{/} or {/|
00069560  7d 64 61 74 61 2e 77 6f  72 64 73 7b 2f 7d 2e 0a  |}data.words{/}..|
00069570  0a 3c 64 61 74 61 6c 6f  61 64 61 63 6b 3d 3e 6d  |.<dataloadack=>m|
00069580  65 73 73 61 67 65 5f 64  61 74 61 6c 6f 61 64 61  |essage_dataloada|
00069590  63 6b 3e 20 69 73 20 73  74 72 61 6e 67 65 6c 79  |ck> is strangely|
000695a0  20 61 62 73 65 6e 74 2e  44 41 54 41 60 01 00 00  | absent.DATA`...|
000695b0  6d 65 73 73 61 67 65 5f  64 61 74 61 6c 6f 61 64  |message_dataload|
000695c0  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
000695d0  66 69 6e 65 64 20 69 6e  20 3c 44 65 73 6b 4c 69  |fined in <DeskLi|
000695e0  62 3a 57 69 6d 70 2e 68  3d 3e 57 69 6d 70 3e 20  |b:Wimp.h=>Wimp> |
000695f0  61 73 20 61 20 73 74 72  75 63 74 75 72 65 20 68  |as a structure h|
00069600  6f 6c 64 69 6e 67 20 64  61 74 61 20 66 72 6f 6d  |olding data from|
00069610  20 61 20 44 61 74 61 4c  6f 61 64 20 6d 65 73 73  | a DataLoad mess|
00069620  61 67 65 2e 0a 0a 20 20  5c 7b 0a 20 20 20 20 3c  |age...  \{.    <|
00069630  77 69 6e 64 6f 77 5f 68  61 6e 64 6c 65 3e 09 77  |window_handle>.w|
00069640  69 6e 64 6f 77 3b 0a 20  20 20 20 3c 69 63 6f 6e  |indow;.    <icon|
00069650  5f 68 61 6e 64 6c 65 3e  09 69 63 6f 6e 3b 0a 20  |_handle>.icon;. |
00069660  20 20 20 3c 77 69 6d 70  5f 70 6f 69 6e 74 3e 09  |   <wimp_point>.|
00069670  70 6f 73 3b 0a 20 20 20  20 69 6e 74 09 09 09 73  |pos;.    int...s|
00069680  69 7a 65 3b 0a 20 20 20  20 69 6e 74 09 09 09 66  |ize;.    int...f|
00069690  69 6c 65 74 79 70 65 3b  0a 20 20 20 20 63 68 61  |iletype;.    cha|
000696a0  72 09 09 66 69 6c 65 6e  61 6d 65 5b 32 31 32 5d  |r..filename[212]|
000696b0  3b 0a 20 20 7d 0a 0a 54  68 65 20 72 65 63 65 69  |;.  }..The recei|
000696c0  76 65 72 20 6f 66 20 74  68 69 73 20 6d 65 73 73  |ver of this mess|
000696d0  61 67 65 20 73 68 6f 75  6c 64 20 6c 6f 61 64 20  |age should load |
000696e0  74 68 65 20 66 69 6c 65  20 61 6e 64 20 73 65 6e  |the file and sen|
000696f0  64 20 61 20 44 61 74 61  4c 6f 61 64 41 63 6b 20  |d a DataLoadAck |
00069700  6d 65 73 73 61 67 65 2e  44 41 54 41 a3 00 00 00  |message.DATA....|
00069710  6d 65 73 73 61 67 65 5f  64 61 74 61 6f 70 65 6e  |message_dataopen|
00069720  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
00069730  66 69 6e 65 64 20 69 6e  20 3c 44 65 73 6b 4c 69  |fined in <DeskLi|
00069740  62 3a 57 69 6d 70 2e 68  3d 3e 57 69 6d 70 3e 20  |b:Wimp.h=>Wimp> |
00069750  61 73 20 61 20 73 74 72  75 63 74 75 72 65 20 68  |as a structure h|
00069760  6f 6c 64 69 6e 67 20 64  61 74 61 20 66 72 6f 6d  |olding data from|
00069770  20 61 20 44 61 74 61 4f  70 65 6e 20 6d 65 73 73  | a DataOpen mess|
00069780  61 67 65 2e 20 49 74 20  69 73 20 64 65 66 69 6e  |age. It is defin|
00069790  65 64 20 61 73 20 61 20  3c 6d 65 73 73 61 67 65  |ed as a <message|
000697a0  5f 64 61 74 61 6c 6f 61  64 3e 2e 00 44 41 54 41  |_dataload>..DATA|
000697b0  a6 02 00 00 6d 65 73 73  61 67 65 5f 64 61 74 61  |....message_data|
000697c0  73 61 76 65 0a 54 68 69  73 20 69 73 20 61 20 74  |save.This is a t|
000697d0  79 70 65 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  |ype defined in <|
000697e0  44 65 73 6b 4c 69 62 3a  57 69 6d 70 2e 68 3d 3e  |DeskLib:Wimp.h=>|
000697f0  57 69 6d 70 3e 20 61 73  20 61 20 74 79 70 65 20  |Wimp> as a type |
00069800  73 75 69 74 61 62 6c 65  20 66 6f 72 20 68 6f 6c  |suitable for hol|
00069810  64 69 6e 67 20 64 61 74  61 20 66 72 6f 6d 20 61  |ding data from a|
00069820  20 44 61 74 61 53 61 76  65 20 6d 65 73 73 61 67  | DataSave messag|
00069830  65 2e 20 49 74 20 69 73  20 64 65 66 69 6e 65 64  |e. It is defined|
00069840  20 61 73 20 74 68 65 20  66 6f 6c 6c 6f 77 69 6e  | as the followin|
00069850  67 20 73 74 72 75 63 74  75 72 65 3a 0a 0a 20 20  |g structure:..  |
00069860  5c 7b 0a 20 20 20 20 3c  77 69 6e 64 6f 77 5f 68  |\{.    <window_h|
00069870  61 6e 64 6c 65 3e 09 77  69 6e 64 6f 77 3b 0a 20  |andle>.window;. |
00069880  20 20 20 3c 69 63 6f 6e  5f 68 61 6e 64 6c 65 3e  |   <icon_handle>|
00069890  09 69 63 6f 6e 3b 0a 20  20 20 20 3c 77 69 6d 70  |.icon;.    <wimp|
000698a0  5f 70 6f 69 6e 74 3e 09  70 6f 73 3b 0a 20 20 20  |_point>.pos;.   |
000698b0  20 69 6e 74 09 09 09 65  73 74 73 69 7a 65 3b 0a  | int...estsize;.|
000698c0  20 20 20 20 69 6e 74 09  09 09 66 69 6c 65 74 79  |    int...filety|
000698d0  70 65 3b 0a 20 20 20 20  63 68 61 72 09 09 6c 65  |pe;.    char..le|
000698e0  61 66 6e 61 6d 65 5b 31  32 5d 3b 0a 20 20 7d 0a  |afname[12];.  }.|
000698f0  0a 54 68 69 73 20 6d 65  73 73 61 67 65 20 69 6e  |.This message in|
00069900  64 69 63 61 74 65 73 20  74 68 61 74 20 74 68 65  |dicates that the|
00069910  20 73 65 6e 64 65 72 20  77 61 6e 74 73 20 74 6f  | sender wants to|
00069920  20 73 61 76 65 20 64 61  74 61 20 74 6f 20 74 68  | save data to th|
00069930  65 20 72 65 63 65 69 76  65 72 2e 20 54 68 65 20  |e receiver. The |
00069940  72 65 63 65 69 76 65 72  20 73 68 6f 75 6c 64 20  |receiver should |
00069950  72 65 73 70 6f 6e 64 20  77 69 74 68 20 61 20 44  |respond with a D|
00069960  61 74 61 53 61 76 65 41  63 6b 20 6f 72 20 52 61  |ataSaveAck or Ra|
00069970  6d 46 65 74 63 68 20 6d  65 73 73 61 67 65 2e 0a  |mFetch message..|
00069980  0a 54 68 65 20 2f 77 69  6e 64 6f 77 2f 2c 20 2f  |.The /window/, /|
00069990  69 63 6f 6e 2f 2c 20 61  6e 64 20 2f 70 6f 73 2f  |icon/, and /pos/|
000699a0  20 63 6f 6d 65 20 66 72  6f 6d 20 3c 57 69 6d 70  | come from <Wimp|
000699b0  5f 47 65 74 50 6f 69 6e  74 65 72 49 6e 66 6f 3e  |_GetPointerInfo>|
000699c0  2e 20 54 68 65 20 72 65  73 74 20 73 68 6f 75 6c  |. The rest shoul|
000699d0  64 20 62 65 20 66 69 6c  6c 65 64 20 69 6e 20 62  |d be filled in b|
000699e0  79 20 74 68 65 20 73 61  76 69 6e 67 20 74 61 73  |y the saving tas|
000699f0  6b 2e 20 2f 66 69 6c 65  74 79 70 65 2f 20 63 61  |k. /filetype/ ca|
00069a00  6e 20 62 65 20 30 78 31  30 30 30 20 66 6f 72 20  |n be 0x1000 for |
00069a10  61 20 64 69 72 65 63 74  6f 72 79 2c 20 30 78 32  |a directory, 0x2|
00069a20  30 30 30 20 66 6f 72 20  61 6e 20 61 70 70 6c 69  |000 for an appli|
00069a30  63 61 74 69 6f 6e 2c 20  6f 72 20 30 78 66 66 66  |cation, or 0xfff|
00069a40  66 66 66 66 66 20 66 6f  72 20 75 6e 74 79 70 65  |fffff for untype|
00069a50  64 2e 00 00 44 41 54 41  ad 01 00 00 6d 65 73 73  |d...DATA....mess|
00069a60  61 67 65 5f 64 61 74 61  73 61 76 65 61 63 6b 0a  |age_datasaveack.|
00069a70  54 68 69 73 20 69 73 20  61 20 73 74 72 75 63 74  |This is a struct|
00069a80  75 72 65 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  |ure defined in <|
00069a90  44 65 73 6b 4c 69 62 3a  57 69 6d 70 2e 68 3d 3e  |DeskLib:Wimp.h=>|
00069aa0  57 69 6d 70 3e 2c 20 75  73 65 64 20 66 6f 72 20  |Wimp>, used for |
00069ab0  68 6f 6c 64 69 6e 67 20  64 61 74 61 20 66 72 6f  |holding data fro|
00069ac0  6d 20 61 20 44 61 74 61  53 61 76 65 41 63 6b 20  |m a DataSaveAck |
00069ad0  6d 65 73 73 61 67 65 2e  0a 0a 20 20 5c 7b 0a 20  |message...  \{. |
00069ae0  20 20 20 3c 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |   <window_handl|
00069af0  65 3e 09 77 69 6e 64 6f  77 3b 0a 20 20 20 20 3c  |e>.window;.    <|
00069b00  69 63 6f 6e 5f 68 61 6e  64 6c 65 3e 09 69 63 6f  |icon_handle>.ico|
00069b10  6e 3b 0a 20 20 20 20 3c  77 69 6d 70 5f 70 6f 69  |n;.    <wimp_poi|
00069b20  6e 74 3e 09 70 6f 73 3b  0a 20 20 20 20 69 6e 74  |nt>.pos;.    int|
00069b30  09 09 09 65 73 74 73 69  7a 65 3b 0a 20 20 20 20  |...estsize;.    |
00069b40  69 6e 74 09 09 09 66 69  6c 65 74 79 70 65 3b 0a  |int...filetype;.|
00069b50  20 20 20 20 63 68 61 72  09 09 66 69 6c 65 6e 61  |    char..filena|
00069b60  6d 65 5b 32 31 32 5d 3b  0a 20 20 7d 0a 0a 54 68  |me[212];.  }..Th|
00069b70  69 73 20 6d 65 73 73 61  67 65 20 61 63 6b 6e 6f  |is message ackno|
00069b80  77 6c 65 64 67 65 73 20  61 20 44 61 74 61 53 61  |wledges a DataSa|
00069b90  76 65 20 6d 65 73 73 61  67 65 2e 20 54 68 65 20  |ve message. The |
00069ba0  72 65 63 65 69 76 65 72  20 73 68 6f 75 6c 64 20  |receiver should |
00069bb0  72 65 73 70 6f 6e 64 20  77 69 74 68 20 61 20 44  |respond with a D|
00069bc0  61 74 61 4c 6f 61 64 20  6d 65 73 73 61 67 65 2e  |ataLoad message.|
00069bd0  0a 0a 2f 65 73 74 73 69  7a 65 2f 20 77 69 6c 6c  |../estsize/ will|
00069be0  20 62 65 20 2d 31 20 69  66 20 74 68 65 20 66 69  | be -1 if the fi|
00069bf0  6c 65 20 69 73 20 6e 6f  74 20 27 73 61 66 65 27  |le is not 'safe'|
00069c00  2e 00 00 00 44 41 54 41  be 00 00 00 6d 65 73 73  |....DATA....mess|
00069c10  61 67 65 5f 64 65 73 74  69 6e 65 65 0a 54 68 69  |age_destinee.Thi|
00069c20  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
00069c30  64 20 69 6e 20 3c 44 65  73 6b 4c 69 62 3a 57 69  |d in <DeskLib:Wi|
00069c40  6d 70 2e 68 3d 3e 57 69  6d 70 3e 20 61 73 20 61  |mp.h=>Wimp> as a|
00069c50  20 74 79 70 65 20 63 61  70 61 62 6c 65 20 6f 66  | type capable of|
00069c60  20 68 6f 6c 64 69 6e 67  20 61 20 6d 65 73 73 61  | holding a messa|
00069c70  67 65 20 64 65 73 74 69  6e 61 74 69 6f 6e 20 68  |ge destination h|
00069c80  61 6e 64 6c 65 20 28 65  69 74 68 65 72 20 61 20  |andle (either a |
00069c90  77 69 6e 64 6f 77 20 6f  72 20 74 61 73 6b 20 68  |window or task h|
00069ca0  61 6e 64 6c 65 29 2e 20  49 74 20 69 73 20 64 65  |andle). It is de|
00069cb0  66 69 6e 65 64 20 61 73  20 61 6e 20 2f 69 6e 74  |fined as an /int|
00069cc0  2f 2e 00 00 44 41 54 41  3d 01 00 00 6d 65 73 73  |/...DATA=...mess|
00069cd0  61 67 65 5f 68 65 61 64  65 72 0a 54 68 69 73 20  |age_header.This |
00069ce0  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
00069cf0  69 6e 20 3c 44 65 73 6b  4c 69 62 3a 57 69 6d 70  |in <DeskLib:Wimp|
00069d00  2e 68 3d 3e 57 69 6d 70  3e 20 61 73 20 61 20 74  |.h=>Wimp> as a t|
00069d10  79 70 65 20 73 75 69 74  61 62 6c 65 20 66 6f 72  |ype suitable for|
00069d20  20 68 6f 6c 64 69 6e 67  20 61 20 57 69 6d 70 20  | holding a Wimp |
00069d30  6d 65 73 73 61 67 65 20  68 65 61 64 65 72 2e 20  |message header. |
00069d40  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It is defined as|
00069d50  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 73  | the following s|
00069d60  74 72 75 63 74 75 72 65  3a 0a 0a 20 20 20 20 5c  |tructure:..    \|
00069d70  7b 0a 20 20 20 20 20 20  75 6e 73 69 67 6e 65 64  |{.      unsigned|
00069d80  20 69 6e 74 09 73 69 7a  65 3b 0a 20 20 20 20 20  | int.size;.     |
00069d90  20 3c 74 61 73 6b 5f 68  61 6e 64 6c 65 3e 09 73  | <task_handle>.s|
00069da0  65 6e 64 65 72 3b 0a 20  20 20 20 20 20 75 6e 73  |ender;.      uns|
00069db0  69 67 6e 65 64 20 69 6e  74 09 6d 79 72 65 66 3b  |igned int.myref;|
00069dc0  0a 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |.      unsigned |
00069dd0  69 6e 74 09 79 6f 75 72  72 65 66 3b 0a 20 20 20  |int.yourref;.   |
00069de0  20 20 20 3c 6d 65 73 73  61 67 65 5f 61 63 74 69  |   <message_acti|
00069df0  6f 6e 3e 09 61 63 74 69  6f 6e 3b 0a 20 20 20 20  |on>.action;.    |
00069e00  7d 00 00 00 44 41 54 41  5a 01 00 00 6d 65 73 73  |}...DATAZ...mess|
00069e10  61 67 65 5f 68 65 6c 70  72 65 70 6c 79 0a 54 68  |age_helpreply.Th|
00069e20  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
00069e30  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 57  |ed in <DeskLib:W|
00069e40  69 6d 70 2e 68 3d 3e 57  69 6d 70 3e 20 61 73 20  |imp.h=>Wimp> as |
00069e50  61 20 73 74 72 75 63 74  75 72 65 20 68 6f 6c 64  |a structure hold|
00069e60  69 6e 67 20 64 61 74 61  20 66 6f 72 20 61 20 48  |ing data for a H|
00069e70  65 6c 70 52 65 70 6c 79  20 6d 65 73 73 61 67 65  |elpReply message|
00069e80  2e 0a 0a 20 20 5c 7b 0a  20 20 20 20 63 68 61 72  |...  \{.    char|
00069e90  20 74 65 78 74 5b 32 30  30 5d 3b 0a 20 20 7d 0a  | text[200];.  }.|
00069ea0  0a 54 68 69 73 20 6d 65  73 73 61 67 65 20 69 73  |.This message is|
00069eb0  20 75 73 65 64 20 74 6f  20 70 72 6f 76 69 64 65  | used to provide|
00069ec0  20 69 6e 74 65 72 61 63  74 69 76 65 20 68 65 6c  | interactive hel|
00069ed0  70 2e 20 59 6f 75 20 72  65 70 6c 79 20 74 6f 20  |p. You reply to |
00069ee0  61 20 48 65 6c 70 52 65  71 75 65 73 74 20 6d 65  |a HelpRequest me|
00069ef0  73 73 61 67 65 20 77 69  74 68 20 74 68 69 73 20  |ssage with this |
00069f00  6d 65 73 73 61 67 65 20  77 68 69 63 68 20 69 6e  |message which in|
00069f10  64 69 63 61 74 65 73 20  74 68 65 20 68 65 6c 70  |dicates the help|
00069f20  20 74 6f 20 62 65 20 64  69 73 70 6c 61 79 65 64  | to be displayed|
00069f30  2e 20 22 7c 4d 22 20 77  69 74 68 69 6e 20 74 68  |. "|M" within th|
00069f40  65 20 74 65 78 74 20 69  6e 64 69 63 61 74 65 73  |e text indicates|
00069f50  20 61 20 6c 69 6e 65 20  62 72 65 61 6b 2e 00 00  | a line break...|
00069f60  44 41 54 41 15 01 00 00  6d 65 73 73 61 67 65 5f  |DATA....message_|
00069f70  68 65 6c 70 72 65 71 75  65 73 74 0a 54 68 69 73  |helprequest.This|
00069f80  20 74 79 70 65 20 69 73  20 64 65 66 69 6e 65 64  | type is defined|
00069f90  20 69 6e 20 3c 44 65 73  6b 4c 69 62 3a 57 69 6d  | in <DeskLib:Wim|
00069fa0  70 2e 68 3d 3e 57 69 6d  70 3e 20 61 73 20 61 0a  |p.h=>Wimp> as a.|
00069fb0  73 74 72 75 63 74 75 72  65 20 68 6f 6c 64 69 6e  |structure holdin|
00069fc0  67 20 64 61 74 61 20 66  6f 72 20 61 20 48 65 6c  |g data for a Hel|
00069fd0  70 52 65 71 75 65 73 74  0a 6d 65 73 73 61 67 65  |pRequest.message|
00069fe0  2e 0a 0a 20 20 5c 7b 0a  20 20 20 20 3c 6d 6f 75  |...  \{.    <mou|
00069ff0  73 65 5f 62 6c 6f 63 6b  3e 20 77 68 65 72 65 3b  |se_block> where;|
0006a000  0a 20 20 7d 0a 0a 54 68  69 73 20 6d 65 73 73 61  |.  }..This messa|
0006a010  67 65 20 69 73 20 75 73  65 64 20 74 6f 20 70 72  |ge is used to pr|
0006a020  6f 76 69 64 65 20 69 6e  74 65 72 61 63 74 69 76  |ovide interactiv|
0006a030  65 0a 68 65 6c 70 2e 20  2f 77 68 65 72 65 2f 20  |e.help. /where/ |
0006a040  74 65 6c 6c 73 20 79 6f  75 20 66 6f 72 20 77 68  |tells you for wh|
0006a050  69 63 68 20 77 69 6e 64  6f 77 20 61 6e 64 0a 69  |ich window and.i|
0006a060  63 6f 6e 20 68 65 6c 70  20 69 73 20 72 65 71 75  |con help is requ|
0006a070  69 72 65 64 2e 00 00 00  44 41 54 41 66 01 00 00  |ired....DATAf...|
0006a080  6d 65 73 73 61 67 65 5f  6d 65 6e 75 77 61 72 6e  |message_menuwarn|
0006a090  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
0006a0a0  66 69 6e 65 64 20 69 6e  20 3c 44 65 73 6b 4c 69  |fined in <DeskLi|
0006a0b0  62 3a 57 69 6d 70 2e 68  3d 3e 57 69 6d 70 3e 20  |b:Wimp.h=>Wimp> |
0006a0c0  61 73 20 61 20 73 74 72  75 63 74 75 72 65 20 68  |as a structure h|
0006a0d0  6f 6c 64 69 6e 67 20 64  61 74 61 20 66 6f 72 20  |olding data for |
0006a0e0  61 20 4d 65 6e 75 57 61  72 6e 69 6e 67 20 6d 65  |a MenuWarning me|
0006a0f0  73 73 61 67 65 2e 0a 0a  20 20 5c 7b 0a 20 20 20  |ssage...  \{.   |
0006a100  20 69 6e 74 09 09 09 69  64 3b 0a 20 20 20 20 3c  | int...id;.    <|
0006a110  77 69 6d 70 5f 70 6f 69  6e 74 3e 09 6f 70 65 6e  |wimp_point>.open|
0006a120  70 6f 73 3b 0a 20 20 20  20 69 6e 74 09 09 09 73  |pos;.    int...s|
0006a130  65 6c 65 63 74 69 6f 6e  5b 31 30 5d 3b 0a 20 20  |election[10];.  |
0006a140  7d 0a 7b 74 61 62 7d 0a  8f 09 2f 69 64 2f 20 69  |}.{tab}.../id/ i|
0006a150  73 20 74 68 65 20 6e 75  6d 62 65 72 20 67 69 76  |s the number giv|
0006a160  65 6e 20 74 6f 20 57 69  6d 70 5f 43 72 65 61 74  |en to Wimp_Creat|
0006a170  65 4d 65 6e 75 2e 0a 8f  09 2f 6f 70 65 6e 70 6f  |eMenu..../openpo|
0006a180  73 2f 20 69 73 20 74 68  65 20 70 6f 73 69 74 69  |s/ is the positi|
0006a190  6f 6e 20 74 6f 20 6f 70  65 6e 20 73 75 62 6d 65  |on to open subme|
0006a1a0  6e 75 20 61 74 2e 0a 8f  09 2f 73 65 6c 65 63 74  |nu at..../select|
0006a1b0  69 6f 6e 2f 20 69 73 20  61 20 6c 69 73 74 20 6f  |ion/ is a list o|
0006a1c0  66 20 73 65 6c 65 63 74  69 6f 6e 73 2c 20 74 65  |f selections, te|
0006a1d0  72 6d 69 6e 61 74 65 64  20 62 79 20 2d 31 00 00  |rminated by -1..|
0006a1e0  44 41 54 41 62 01 00 00  6d 65 73 73 61 67 65 5f  |DATAb...message_|
0006a1f0  70 6f 70 75 70 72 65 71  75 65 73 74 0a 54 68 69  |popuprequest.Thi|
0006a200  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
0006a210  64 20 69 6e 20 3c 44 65  73 6b 4c 69 62 3a 50 6f  |d in <DeskLib:Po|
0006a220  70 55 70 2e 68 3d 3e 50  6f 70 55 70 3e 2e 20 49  |pUp.h=>PopUp>. I|
0006a230  74 20 69 73 20 61 20 73  74 72 75 63 74 75 72 65  |t is a structure|
0006a240  20 75 73 65 64 20 74 6f  20 63 6f 6e 74 61 69 6e  | used to contain|
0006a250  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 70 61 73  | information pas|
0006a260  73 65 64 20 62 79 20 61  20 6d 65 73 73 61 67 65  |sed by a message|
0006a270  5f 50 4f 50 55 50 52 45  51 55 45 53 54 20 65 76  |_POPUPREQUEST ev|
0006a280  65 6e 74 3a 0a 0a 20 20  5c 7b 0a 20 20 20 20 3c  |ent:..  \{.    <|
0006a290  77 69 6e 64 6f 77 5f 68  61 6e 64 6c 65 3e 09 77  |window_handle>.w|
0006a2a0  69 6e 64 6f 77 3b 0a 20  20 20 20 3c 77 69 6d 70  |indow;.    <wimp|
0006a2b0  5f 70 6f 69 6e 74 3e 09  6f 70 65 6e 70 6f 73 3b  |_point>.openpos;|
0006a2c0  0a 20 20 7d 0a 0a 59 6f  75 20 73 68 6f 75 6c 64  |.  }..You should|
0006a2d0  20 63 61 73 74 20 74 68  65 20 3c 65 76 65 6e 74  | cast the <event|
0006a2e0  5f 70 6f 6c 6c 62 6c 6f  63 6b 3e 2e 64 61 74 61  |_pollblock>.data|
0006a2f0  2e 6d 65 73 73 61 67 65  2e 64 61 74 61 20 75 6e  |.message.data un|
0006a300  69 6f 6e 20 69 6e 74 6f  20 74 68 69 73 20 74 79  |ion into this ty|
0006a310  70 65 2e 0a 0a 53 65 65  20 74 68 65 20 50 6f 70  |pe...See the Pop|
0006a320  55 70 20 64 6f 63 75 6d  65 6e 74 61 74 69 6f 6e  |Up documentation|
0006a330  20 66 6f 72 20 6d 6f 72  65 20 64 65 74 61 69 6c  | for more detail|
0006a340  73 2e 00 00 44 41 54 41  74 01 00 00 6d 65 73 73  |s...DATAt...mess|
0006a350  61 67 65 5f 70 6f 70 75  70 73 74 61 74 65 0a 54  |age_popupstate.T|
0006a360  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
0006a370  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
0006a380  50 6f 70 55 70 2e 68 3d  3e 50 6f 70 55 70 3e 2e  |PopUp.h=>PopUp>.|
0006a390  20 49 74 20 69 73 20 61  20 73 74 72 75 63 74 75  | It is a structu|
0006a3a0  72 65 20 75 73 65 64 20  74 6f 20 63 6f 6e 74 61  |re used to conta|
0006a3b0  69 6e 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 70  |in information p|
0006a3c0  61 73 73 65 64 20 62 79  20 61 20 6d 65 73 73 61  |assed by a messa|
0006a3d0  67 65 5f 50 4f 50 55 50  53 54 41 54 45 20 65 76  |ge_POPUPSTATE ev|
0006a3e0  65 6e 74 3a 0a 0a 20 20  5c 7b 0a 20 20 20 20 3c  |ent:..  \{.    <|
0006a3f0  70 6f 70 75 70 5f 68 61  6e 64 6c 65 3e 09 68 61  |popup_handle>.ha|
0006a400  6e 64 6c 65 3b 0a 20 20  20 20 63 68 61 72 09 09  |ndle;.    char..|
0006a410  6e 61 6d 65 5b 31 32 5d  3b 0a 20 20 20 20 3c 70  |name[12];.    <p|
0006a420  6f 70 75 70 5f 72 65 74  75 72 6e 64 61 74 61 3e  |opup_returndata>|
0006a430  09 64 61 74 61 3b 0a 20  20 7d 0a 0a 59 6f 75 20  |.data;.  }..You |
0006a440  73 68 6f 75 6c 64 20 63  61 73 74 20 74 68 65 20  |should cast the |
0006a450  3c 65 76 65 6e 74 5f 70  6f 6c 6c 62 6c 6f 63 6b  |<event_pollblock|
0006a460  3e 2e 64 61 74 61 2e 6d  65 73 73 61 67 65 2e 64  |>.data.message.d|
0006a470  61 74 61 20 75 6e 69 6f  6e 20 69 6e 74 6f 20 74  |ata union into t|
0006a480  68 69 73 20 74 79 70 65  2e 0a 0a 53 65 65 20 74  |his type...See t|
0006a490  68 65 20 50 6f 70 55 70  20 64 6f 63 75 6d 65 6e  |he PopUp documen|
0006a4a0  74 61 74 69 6f 6e 20 66  6f 72 20 6d 6f 72 65 20  |tation for more |
0006a4b0  64 65 74 61 69 6c 73 2e  44 41 54 41 c3 00 00 00  |details.DATA....|
0006a4c0  6d 65 73 73 61 67 65 5f  70 72 69 6e 74 0a 54 68  |message_print.Th|
0006a4d0  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
0006a4e0  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 57  |ed in <DeskLib:W|
0006a4f0  69 6d 70 2e 68 3d 3e 57  69 6d 70 3e 20 61 73 20  |imp.h=>Wimp> as |
0006a500  61 20 73 74 72 75 63 74  75 72 65 20 68 6f 6c 64  |a structure hold|
0006a510  69 6e 67 20 64 61 74 61  20 66 6f 72 20 61 20 50  |ing data for a P|
0006a520  72 69 6e 74 54 79 70 65  4f 64 64 20 6d 65 73 73  |rintTypeOdd mess|
0006a530  61 67 65 2e 0a 0a 20 20  5c 7b 0a 20 20 20 20 69  |age...  \{.    i|
0006a540  6e 74 20 66 69 6c 6c 65  72 5b 35 5d 3b 0a 20 20  |nt filler[5];.  |
0006a550  20 20 69 6e 74 20 66 69  6c 65 74 79 70 65 3b 0a  |  int filetype;.|
0006a560  20 20 20 20 63 68 61 72  20 66 69 6c 65 6e 61 6d  |    char filenam|
0006a570  65 5b 32 31 32 5d 3b 0a  20 20 7d 00 44 41 54 41  |e[212];.  }.DATA|
0006a580  aa 00 00 00 6d 65 73 73  61 67 65 5f 72 61 6d 66  |....message_ramf|
0006a590  65 74 63 68 0a 54 68 69  73 20 74 79 70 65 20 69  |etch.This type i|
0006a5a0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 44 65  |s defined in <De|
0006a5b0  73 6b 4c 69 62 3a 57 69  6d 70 2e 68 3d 3e 57 69  |skLib:Wimp.h=>Wi|
0006a5c0  6d 70 3e 20 61 73 20 61  20 73 74 72 75 63 74 75  |mp> as a structu|
0006a5d0  72 65 20 68 6f 6c 64 69  6e 67 20 64 61 74 61 20  |re holding data |
0006a5e0  66 6f 72 20 61 20 52 41  4d 46 65 74 63 68 20 6d  |for a RAMFetch m|
0006a5f0  65 73 73 61 67 65 2e 0a  0a 20 20 5c 7b 0a 20 20  |essage...  \{.  |
0006a600  20 20 63 68 61 72 09 2a  62 75 66 66 65 72 3b 0a  |  char.*buffer;.|
0006a610  20 20 20 20 69 6e 74 09  09 62 75 66 66 73 69 7a  |    int..buffsiz|
0006a620  65 3b 0a 20 20 7d 00 00  44 41 54 41 b4 00 00 00  |e;.  }..DATA....|
0006a630  6d 65 73 73 61 67 65 5f  72 61 6d 74 72 61 6e 73  |message_ramtrans|
0006a640  6d 69 74 0a 54 68 69 73  20 74 79 70 65 20 69 73  |mit.This type is|
0006a650  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 44 65 73  | defined in <Des|
0006a660  6b 4c 69 62 3a 57 69 6d  70 2e 68 3d 3e 57 69 6d  |kLib:Wimp.h=>Wim|
0006a670  70 3e 20 61 73 20 61 20  73 74 72 75 63 74 75 72  |p> as a structur|
0006a680  65 20 68 6f 6c 64 69 6e  67 20 64 61 74 61 20 66  |e holding data f|
0006a690  6f 72 20 61 20 52 41 4d  54 72 61 6e 73 6d 69 74  |or a RAMTransmit|
0006a6a0  20 6d 65 73 73 61 67 65  2e 0a 0a 20 20 5c 7b 0a  | message...  \{.|
0006a6b0  20 20 20 20 63 68 61 72  09 2a 62 75 66 66 65 72  |    char.*buffer|
0006a6c0  3b 0a 20 20 20 20 69 6e  74 09 09 62 79 74 65 73  |;.    int..bytes|
0006a6d0  77 72 69 74 74 65 6e 3b  0a 20 20 7d 44 41 54 41  |written;.  }DATA|
0006a6e0  13 01 00 00 6d 65 73 73  61 67 65 5f 64 61 74 61  |....message_data|
0006a6f0  6c 6f 61 64 61 63 6b 0a  54 68 69 73 20 74 79 70  |loadack.This typ|
0006a700  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
0006a710  3c 44 65 73 6b 4c 69 62  3a 57 69 6d 70 2e 68 3d  |<DeskLib:Wimp.h=|
0006a720  3e 57 69 6d 70 3e 20 61  73 20 61 20 73 74 72 75  |>Wimp> as a stru|
0006a730  63 74 75 72 65 20 68 6f  6c 64 69 6e 67 20 64 61  |cture holding da|
0006a740  74 61 20 66 72 6f 6d 20  61 20 44 61 74 61 4c 6f  |ta from a DataLo|
0006a750  61 64 41 63 6b 20 6d 65  73 73 61 67 65 2e 0a 0a  |adAck message...|
0006a760  20 20 5c 7b 0a 20 20 20  20 3c 77 69 6e 64 6f 77  |  \{.    <window|
0006a770  5f 68 61 6e 64 6c 65 3e  09 77 69 6e 64 6f 77 3b  |_handle>.window;|
0006a780  0a 20 20 20 20 3c 69 63  6f 6e 5f 68 61 6e 64 6c  |.    <icon_handl|
0006a790  65 3e 09 69 63 6f 6e 3b  0a 20 20 20 20 3c 77 69  |e>.icon;.    <wi|
0006a7a0  6d 70 5f 70 6f 69 6e 74  3e 09 70 6f 73 3b 0a 20  |mp_point>.pos;. |
0006a7b0  20 20 20 69 6e 74 09 09  09 73 69 7a 65 3b 0a 20  |   int...size;. |
0006a7c0  20 20 20 69 6e 74 09 09  09 66 69 6c 65 74 79 70  |   int...filetyp|
0006a7d0  65 3b 0a 20 20 20 20 63  68 61 72 09 09 66 69 6c  |e;.    char..fil|
0006a7e0  65 6e 61 6d 65 5b 32 31  32 5d 3b 0a 20 20 7d 00  |ename[212];.  }.|
0006a7f0  44 41 54 41 61 01 00 00  6d 65 73 73 61 67 65 5f  |DATAa...message_|
0006a800  69 63 6f 6e 69 7a 65 0a  54 68 69 73 20 74 79 70  |iconize.This typ|
0006a810  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
0006a820  3c 44 65 73 6b 4c 69 62  3a 57 69 6d 70 2e 68 3d  |<DeskLib:Wimp.h=|
0006a830  3e 57 69 6d 70 3e 20 61  73 20 61 20 73 74 72 75  |>Wimp> as a stru|
0006a840  63 74 75 72 65 20 68 6f  6c 64 69 6e 67 20 64 61  |cture holding da|
0006a850  74 61 20 66 6f 72 20 61  6e 20 49 63 6f 6e 69 7a  |ta for an Iconiz|
0006a860  65 20 6d 65 73 73 61 67  65 2e 0a 0a 20 20 5c 7b  |e message...  \{|
0006a870  0a 20 20 20 20 3c 77 69  6e 64 6f 77 5f 68 61 6e  |.    <window_han|
0006a880  64 6c 65 3e 09 77 69 6e  64 6f 77 3b 0a 20 20 20  |dle>.window;.   |
0006a890  20 3c 74 61 73 6b 5f 68  61 6e 64 6c 65 3e 09 74  | <task_handle>.t|
0006a8a0  61 73 6b 3b 0a 20 20 20  20 63 68 61 72 09 09 74  |ask;.    char..t|
0006a8b0  69 74 6c 65 5b 32 30 5d  3b 0a 20 20 7d 0a 7b 74  |itle[20];.  }.{t|
0006a8c0  61 62 7d 0a 8f 09 2f 77  69 6e 64 6f 77 2f 20 69  |ab}.../window/ i|
0006a8d0  73 20 74 68 65 20 77 69  6e 64 6f 77 20 74 6f 20  |s the window to |
0006a8e0  69 63 6f 6e 69 7a 65 2e  0a 8f 09 2f 74 61 73 6b  |iconize..../task|
0006a8f0  2f 20 69 73 20 74 68 65  20 74 61 73 6b 20 6f 77  |/ is the task ow|
0006a900  6e 69 6e 67 20 74 68 65  20 77 69 6e 64 6f 77 2e  |ning the window.|
0006a910  0a 8f 09 2f 74 69 74 6c  65 2f 20 69 73 20 32 30  |.../title/ is 20|
0006a920  20 62 79 74 65 73 20 6f  66 20 74 69 74 6c 65 20  | bytes of title |
0006a930  73 74 72 69 6e 67 20 28  6c 61 73 74 20 70 61 72  |string (last par|
0006a940  74 20 6f 66 20 66 69 72  73 74 20 77 6f 72 64 29  |t of first word)|
0006a950  2e 00 00 00 44 41 54 41  9b 01 00 00 6d 65 73 73  |....DATA....mess|
0006a960  61 67 65 5f 77 69 6e 64  6f 77 69 6e 66 6f 0a 54  |age_windowinfo.T|
0006a970  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
0006a980  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
0006a990  57 69 6d 70 2e 68 3d 3e  57 69 6d 70 3e 20 61 73  |Wimp.h=>Wimp> as|
0006a9a0  20 61 20 73 74 72 75 63  74 75 72 65 20 68 6f 6c  | a structure hol|
0006a9b0  64 69 6e 67 20 64 61 74  61 20 66 6f 72 20 61 6e  |ding data for an|
0006a9c0  20 57 69 6e 64 6f 77 49  6e 66 6f 20 6d 65 73 73  | WindowInfo mess|
0006a9d0  61 67 65 2e 0a 0a 20 20  5c 7b 0a 20 20 20 20 3c  |age...  \{.    <|
0006a9e0  77 69 6e 64 6f 77 5f 68  61 6e 64 6c 65 3e 09 77  |window_handle>.w|
0006a9f0  69 6e 64 6f 77 3b 0a 20  20 20 20 69 6e 74 09 09  |indow;.    int..|
0006aa00  09 64 75 6d 6d 79 3b 0a  20 20 20 20 63 68 61 72  |.dummy;.    char|
0006aa10  09 09 73 70 72 69 74 65  6e 61 6d 65 5b 38 5d 3b  |..spritename[8];|
0006aa20  0a 20 20 20 20 63 68 61  72 09 09 74 69 74 6c 65  |.    char..title|
0006aa30  5b 32 30 5d 3b 0a 20 20  7d 0a 7b 74 61 62 7d 0a  |[20];.  }.{tab}.|
0006aa40  8f 09 2f 77 69 6e 64 6f  77 2f 20 69 73 20 74 68  |../window/ is th|
0006aa50  65 20 77 69 6e 64 6f 77  20 74 6f 20 69 63 6f 6e  |e window to icon|
0006aa60  69 7a 65 2e 0a 8f 09 2f  64 75 6d 6d 79 2f 20 69  |ize..../dummy/ i|
0006aa70  73 20 72 65 73 65 72 76  65 64 20 61 6e 64 20 6d  |s reserved and m|
0006aa80  75 73 74 20 62 65 20 30  2e 0a 8f 09 2f 73 70 72  |ust be 0..../spr|
0006aa90  69 74 65 6e 61 6d 65 2f  20 69 73 20 74 68 65 20  |itename/ is the |
0006aaa0  73 70 72 69 74 65 20 74  6f 20 75 73 65 2e 0a 8f  |sprite to use...|
0006aab0  09 2f 74 69 74 6c 65 2f  20 69 73 20 32 30 20 62  |./title/ is 20 b|
0006aac0  79 74 65 73 20 6f 66 20  74 69 74 6c 65 20 73 74  |ytes of title st|
0006aad0  72 69 6e 67 20 28 6c 61  73 74 20 70 61 72 74 20  |ring (last part |
0006aae0  6f 66 20 66 69 72 73 74  20 77 6f 72 64 29 2e 00  |of first word)..|
0006aaf0  44 41 54 41 bc 00 00 00  4d 49 4e 0a 54 68 69 73  |DATA....MIN.This|
0006ab00  20 6d 61 63 72 6f 20 69  73 20 64 65 66 69 6e 65  | macro is define|
0006ab10  64 20 69 6e 20 3c 54 69  6d 73 4c 69 62 3a 43 6f  |d in <TimsLib:Co|
0006ab20  72 65 2e 68 3d 3e 43 6f  72 65 5f 54 4c 3e 20 61  |re.h=>Core_TL> a|
0006ab30  6e 64 20 3c 44 65 73 6b  4c 69 62 3a 43 6f 72 65  |nd <DeskLib:Core|
0006ab40  2e 68 3d 3e 43 6f 72 65  3e 2e 20 49 74 20 69 73  |.h=>Core>. It is|
0006ab50  20 75 73 65 64 20 74 6f  20 66 69 6e 64 20 74 68  | used to find th|
0006ab60  65 20 6d 69 6e 69 6d 75  6d 20 6f 66 20 74 77 6f  |e minimum of two|
0006ab70  20 76 61 6c 75 65 73 2e  20 4d 49 4e 28 78 2c 79  | values. MIN(x,y|
0006ab80  29 20 77 69 6c 6c 20 67  69 76 65 20 79 6f 75 20  |) will give you |
0006ab90  2f 78 2f 20 69 66 20 78  5c 3c 79 2c 20 6f 72 20  |/x/ if x\<y, or |
0006aba0  2f 79 2f 20 69 66 20 78  3e 3d 79 2e 44 41 54 41  |/y/ if x>=y.DATA|
0006abb0  e8 01 00 00 6d 6b 74 69  6d 65 0a 53 79 6e 74 61  |....mktime.Synta|
0006abc0  78 3a 09 3c 74 69 6d 65  5f 74 3e 20 6d 6b 74 69  |x:.<time_t> mkti|
0006abd0  6d 65 20 28 3c 73 74 72  75 63 74 a0 74 6d 3e 20  |me (<struct.tm> |
0006abe0  2a 74 70 74 72 29 3b 0a  48 65 61 64 65 72 3a 09  |*tptr);.Header:.|
0006abf0  3c 74 69 6d 65 2e 68 3d  3e 74 69 6d 65 5f 68 3e  |<time.h=>time_h>|
0006ac00  0a 0a 52 65 74 75 72 6e  73 3a 09 54 68 65 20 63  |..Returns:.The c|
0006ac10  61 6c 65 6e 64 61 72 20  74 69 6d 65 2e 0a 0a 54  |alendar time...T|
0006ac20  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 74 61 6b  |his function tak|
0006ac30  65 73 20 74 68 65 20 62  72 6f 6b 65 6e 2d 64 6f  |es the broken-do|
0006ac40  77 6e 20 74 69 6d 65 20  28 65 78 70 72 65 73 73  |wn time (express|
0006ac50  65 64 20 61 73 20 6c 6f  63 61 6c 20 74 69 6d 65  |ed as local time|
0006ac60  29 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 79 20  |) pointed to by |
0006ac70  2f 74 70 74 72 2f 20 61  6e 64 20 63 6f 6e 76 65  |/tptr/ and conve|
0006ac80  72 74 73 20 69 6e 20 69  6e 74 6f 20 61 20 63 61  |rts in into a ca|
0006ac90  6c 65 6e 64 61 72 20 74  69 6d 65 20 76 61 6c 75  |lendar time valu|
0006aca0  65 2e 20 7b 2f 7d 74 70  74 72 2d 3e 74 6d 5f 77  |e. {/}tptr->tm_w|
0006acb0  64 61 79 7b 2f 7d 20 61  6e 64 20 7b 2f 7d 74 70  |day{/} and {/}tp|
0006acc0  74 72 2d 3e 74 6d 5f 79  64 61 79 7b 2f 7d 20 61  |tr->tm_yday{/} a|
0006acd0  72 65 20 69 67 6e 6f 72  65 64 20 6f 6e 20 65 6e  |re ignored on en|
0006ace0  74 72 79 2e 0a 0a 54 68  65 20 76 61 6c 75 65 73  |try...The values|
0006acf0  20 69 6e 20 74 68 65 20  62 72 6f 6b 65 6e 2d 64  | in the broken-d|
0006ad00  6f 77 6e 20 74 69 6d 65  20 73 74 72 75 63 74 75  |own time structu|
0006ad10  72 65 20 6d 61 79 20 62  65 20 61 6c 74 65 72 65  |re may be altere|
0006ad20  64 20 73 6f 20 74 68 61  74 20 74 68 65 79 20 66  |d so that they f|
0006ad30  69 74 20 77 69 74 68 69  6e 20 74 68 65 20 6e 6f  |it within the no|
0006ad40  72 6d 61 6c 20 72 61 6e  67 65 73 2e 20 41 6c 73  |rmal ranges. Als|
0006ad50  6f 20 7b 2f 7d 74 6d 5f  77 64 61 79 7b 2f 7d 20  |o {/}tm_wday{/} |
0006ad60  61 6e 64 20 7b 2f 7d 74  6d 5f 79 64 61 79 7b 2f  |and {/}tm_yday{/|
0006ad70  7d 20 77 69 6c 6c 20 62  65 20 73 65 74 20 74 6f  |} will be set to|
0006ad80  20 74 68 65 20 63 6f 72  72 65 63 74 20 76 61 6c  | the correct val|
0006ad90  75 65 73 2e 44 41 54 41  48 01 00 00 6d 6f 64 66  |ues.DATAH...modf|
0006ada0  0a 53 79 6e 74 61 78 3a  09 64 6f 75 62 6c 65 20  |.Syntax:.double |
0006adb0  6d 6f 64 66 20 28 64 6f  75 62 6c 65 20 78 2c 20  |modf (double x, |
0006adc0  64 6f 75 62 6c 65 20 2a  69 29 3b 0a 48 65 61 64  |double *i);.Head|
0006add0  65 72 3a 09 3c 6d 61 74  68 2e 68 3d 3e 6d 61 74  |er:.<math.h=>mat|
0006ade0  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 54 68 65  |h>..Returns:.The|
0006adf0  20 66 72 61 63 74 69 6f  6e 61 6c 20 70 61 72 74  | fractional part|
0006ae00  20 6f 66 20 78 2e 0a 0a  54 68 69 73 20 66 75 6e  | of x...This fun|
0006ae10  63 74 69 6f 6e 20 73 70  6c 69 74 73 20 74 68 65  |ction splits the|
0006ae20  20 66 6c 6f 61 74 69 6e  67 20 70 6f 69 6e 74 20  | floating point |
0006ae30  6e 75 6d 62 65 72 20 69  6e 20 78 20 69 6e 74 6f  |number in x into|
0006ae40  20 61 6e 20 69 6e 74 65  67 65 72 20 70 61 72 74  | an integer part|
0006ae50  20 61 6e 64 20 61 20 66  72 61 63 74 69 6f 6e 61  | and a fractiona|
0006ae60  6c 20 70 61 72 74 2e 20  49 74 20 73 74 6f 72 65  |l part. It store|
0006ae70  73 20 74 68 65 20 69 6e  74 65 67 65 72 20 70 61  |s the integer pa|
0006ae80  72 74 20 28 61 73 20 61  20 64 6f 75 62 6c 65 21  |rt (as a double!|
0006ae90  29 20 69 6e 20 74 68 65  20 76 61 72 69 61 62 6c  |) in the variabl|
0006aea0  65 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 79 20  |e pointed to by |
0006aeb0  69 2e 20 54 68 65 20 66  75 6e 63 74 69 6f 6e 20  |i. The function |
0006aec0  72 65 74 75 72 6e 73 20  74 68 65 20 66 72 61 63  |returns the frac|
0006aed0  74 69 6f 6e 61 6c 20 70  61 72 74 2e 44 41 54 41  |tional part.DATA|
0006aee0  87 01 00 00 6d 6f 64 69  66 69 65 72 73 0a 54 68  |....modifiers.Th|
0006aef0  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
0006af00  65 64 20 69 6e 20 3c 54  69 6d 73 4c 69 62 3a 4b  |ed in <TimsLib:K|
0006af10  62 64 2e 68 3d 3e 4b 62  64 5f 54 4c 3e 2e 20 49  |bd.h=>Kbd_TL>. I|
0006af20  74 20 69 73 20 61 20 73  74 72 75 63 74 75 72 65  |t is a structure|
0006af30  20 75 73 65 64 20 74 6f  20 68 6f 6c 64 20 74 68  | used to hold th|
0006af40  65 20 73 74 61 74 75 73  20 6f 66 20 74 68 65 20  |e status of the |
0006af50  6d 6f 64 69 66 69 65 72  20 6b 65 79 73 20 61 73  |modifier keys as|
0006af60  20 66 6f 6c 6c 6f 77 73  3a 0a 0a 20 20 5c 7b 0a  | follows:..  \{.|
0006af70  20 20 20 20 75 6e 73 69  67 6e 65 64 20 61 6c 74  |    unsigned alt|
0006af80  09 3a 20 31 3b 0a 20 20  20 20 75 6e 73 69 67 6e  |.: 1;.    unsign|
0006af90  65 64 20 63 74 72 6c 09  3a 20 31 3b 0a 20 20 20  |ed ctrl.: 1;.   |
0006afa0  20 75 6e 73 69 67 6e 65  64 20 73 68 69 66 74 09  | unsigned shift.|
0006afb0  3a 20 31 3b 0a 20 20 20  20 75 6e 73 69 67 6e 65  |: 1;.    unsigne|
0006afc0  64 20 6c 65 66 74 5f 61  6c 74 09 3a 20 31 3b 0a  |d left_alt.: 1;.|
0006afd0  20 20 20 20 75 6e 73 69  67 6e 65 64 20 6c 65 66  |    unsigned lef|
0006afe0  74 5f 63 74 72 6c 09 3a  20 31 3b 0a 20 20 20 20  |t_ctrl.: 1;.    |
0006aff0  75 6e 73 69 67 6e 65 64  20 6c 65 66 74 5f 73 68  |unsigned left_sh|
0006b000  69 66 74 09 3a 20 31 3b  0a 20 20 20 20 75 6e 73  |ift.: 1;.    uns|
0006b010  69 67 6e 65 64 20 72 69  67 68 74 5f 61 6c 74 09  |igned right_alt.|
0006b020  3a 20 31 3b 0a 20 20 20  20 75 6e 73 69 67 6e 65  |: 1;.    unsigne|
0006b030  64 20 72 69 67 68 74 5f  63 74 72 6c 09 3a 20 31  |d right_ctrl.: 1|
0006b040  3b 0a 20 20 20 20 75 6e  73 69 67 6e 65 64 20 72  |;.    unsigned r|
0006b050  69 67 68 74 5f 73 68 69  66 74 09 3a 20 31 3b 0a  |ight_shift.: 1;.|
0006b060  20 20 7d 00 44 41 54 41  b1 00 00 00 44 65 73 6b  |  }.DATA....Desk|
0006b070  4c 69 62 3a 4d 6f 64 75  6c 65 2e 68 0a 56 65 72  |Lib:Module.h.Ver|
0006b080  73 69 6f 6e 3a 20 31 2e  30 30 20 28 32 33 20 4e  |sion: 1.00 (23 N|
0006b090  6f 76 20 31 39 39 33 29  0a 23 6c 69 6e 65 0a 54  |ov 1993).#line.T|
0006b0a0  68 69 73 20 68 65 61 64  65 72 20 64 65 63 6c 61  |his header decla|
0006b0b0  72 65 73 20 61 20 66 65  77 20 76 65 6e 65 65 72  |res a few veneer|
0006b0c0  73 20 66 6f 72 20 74 68  65 20 3c 4f 53 5f 4d 6f  |s for the <OS_Mo|
0006b0d0  64 75 6c 65 3d 3e 53 57  49 3a 4f 53 5f 4d 6f 64  |dule=>SWI:OS_Mod|
0006b0e0  75 6c 65 3e 20 53 57 49  2e 0a 0a 7b 61 6c 69 67  |ule> SWI...{alig|
0006b0f0  6e 20 63 65 6e 74 72 65  7d 3c 4d 6f 64 75 6c 65  |n centre}<Module|
0006b100  5f 43 6c 61 69 6d 3e 0a  3c 4d 6f 64 75 6c 65 5f  |_Claim>.<Module_|
0006b110  46 72 65 65 3e 00 00 00  44 49 52 24 4c 00 00 00  |Free>...DIR$L...|
0006b120  4c 00 00 00 64 b1 06 00  46 ff ff ff 42 a0 43 25  |L...d...F...B.C%|
0006b130  33 01 00 00 13 00 00 00  00 00 00 00 43 6c 61 69  |3...........Clai|
0006b140  6d 00 00 00 98 b2 06 00  46 ff ff ff 1a a6 43 25  |m.......F.....C%|
0006b150  0f 01 00 00 13 00 00 00  00 00 00 00 46 72 65 65  |............Free|
0006b160  00 00 00 00 44 41 54 41  33 01 00 00 4d 6f 64 75  |....DATA3...Modu|
0006b170  6c 65 5f 43 6c 61 69 6d  0a 53 79 6e 74 61 78 3a  |le_Claim.Syntax:|
0006b180  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 4d 6f 64  |.<os_error> *Mod|
0006b190  75 6c 65 5f 43 6c 61 69  6d 20 28 75 6e 73 69 67  |ule_Claim (unsig|
0006b1a0  6e 65 64 20 73 69 7a 65  2c 20 76 6f 69 64 20 2a  |ned size, void *|
0006b1b0  2a 62 6c 6f 63 6b 29 3b  0a 48 65 61 64 65 72 3a  |*block);.Header:|
0006b1c0  09 3c 44 65 73 6b 4c 69  62 3a 4d 6f 64 75 6c 65  |.<DeskLib:Module|
0006b1d0  2e 68 3d 3e 4d 6f 64 75  6c 65 3e 0a 0a 52 65 74  |.h=>Module>..Ret|
0006b1e0  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
0006b1f0  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
0006b200  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
0006b210  20 66 75 6e 63 74 69 6f  6e 20 63 6c 61 69 6d 73  | function claims|
0006b220  20 61 6e 20 61 72 65 61  20 6f 66 20 52 4d 41 20  | an area of RMA |
0006b230  73 70 61 63 65 20 6f 66  20 73 69 7a 65 20 73 70  |space of size sp|
0006b240  65 63 69 66 69 65 64 20  61 6e 64 20 72 65 74 75  |ecified and retu|
0006b250  72 6e 73 20 61 20 70 6f  69 6e 74 65 72 20 74 6f  |rns a pointer to|
0006b260  20 69 74 20 69 6e 20 7b  2f 7d 2a 62 6c 6f 63 6b  | it in {/}*block|
0006b270  7b 2f 7d 2e 20 2f 62 6c  6f 63 6b 2f 20 69 73 20  |{/}. /block/ is |
0006b280  61 20 70 6f 69 6e 74 65  72 20 74 6f 20 61 20 70  |a pointer to a p|
0006b290  6f 69 6e 74 65 72 2e 00  44 41 54 41 0f 01 00 00  |ointer..DATA....|
0006b2a0  4d 6f 64 75 6c 65 5f 46  72 65 65 0a 53 79 6e 74  |Module_Free.Synt|
0006b2b0  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
0006b2c0  4d 6f 64 75 6c 65 5f 46  72 65 65 20 28 76 6f 69  |Module_Free (voi|
0006b2d0  64 20 2a 62 6c 6f 63 6b  29 3b 0a 48 65 61 64 65  |d *block);.Heade|
0006b2e0  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 4d 6f 64 75  |r:.<DeskLib:Modu|
0006b2f0  6c 65 2e 68 3d 3e 4d 6f  64 75 6c 65 3e 0a 0a 52  |le.h=>Module>..R|
0006b300  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
0006b310  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
0006b320  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
0006b330  69 73 20 66 75 6e 63 74  69 6f 6e 20 72 65 6c 65  |is function rele|
0006b340  61 73 65 73 20 61 20 62  6c 6f 63 6b 20 6f 66 20  |ases a block of |
0006b350  52 4d 41 20 73 70 61 63  65 20 70 72 65 76 69 6f  |RMA space previo|
0006b360  75 73 6c 79 20 63 6c 61  69 6d 65 64 20 75 73 69  |usly claimed usi|
0006b370  6e 67 20 3c 4d 6f 64 75  6c 65 5f 43 6c 61 69 6d  |ng <Module_Claim|
0006b380  3e 2e 20 2f 62 6c 6f 63  6b 2f 20 69 73 20 74 68  |>. /block/ is th|
0006b390  65 20 70 6f 69 6e 74 65  72 20 74 6f 20 74 68 65  |e pointer to the|
0006b3a0  20 62 6c 6f 63 6b 2e 00  44 49 52 24 2c 00 00 00  | block..DIR$,...|
0006b3b0  2c 00 00 00 d4 b3 06 00  46 ff ff ff eb 10 42 26  |,.......F.....B&|
0006b3c0  0e 01 00 00 13 00 00 00  00 00 00 00 62 6c 6f 63  |............bloc|
0006b3d0  6b 00 00 00 44 41 54 41  0e 01 00 00 6d 6f 75 73  |k...DATA....mous|
0006b3e0  65 5f 62 6c 6f 63 6b 0a  54 68 69 73 20 74 79 70  |e_block.This typ|
0006b3f0  65 20 69 73 20 64 65 66  69 6e 65 64 20 62 79 20  |e is defined by |
0006b400  3c 44 65 73 6b 4c 69 62  3a 57 69 6d 70 2e 68 3d  |<DeskLib:Wimp.h=|
0006b410  3e 57 69 6d 70 3e 2e 20  49 74 20 69 73 20 61 20  |>Wimp>. It is a |
0006b420  73 74 72 75 63 74 75 72  65 20 75 73 65 64 20 74  |structure used t|
0006b430  6f 20 63 6f 6e 74 61 69  6e 20 69 6e 66 6f 72 6d  |o contain inform|
0006b440  61 74 69 6f 6e 20 6f 6e  20 74 68 65 20 6d 6f 75  |ation on the mou|
0006b450  73 65 20 70 6f 73 69 74  69 6f 6e 20 61 6e 64 20  |se position and |
0006b460  73 74 61 74 75 73 2c 20  61 73 20 66 6f 6c 6c 6f  |status, as follo|
0006b470  77 73 3a 0a 0a 20 20 5c  7b 0a 20 20 20 20 3c 77  |ws:..  \{.    <w|
0006b480  69 6d 70 5f 70 6f 69 6e  74 3e 09 70 6f 73 3b 0a  |imp_point>.pos;.|
0006b490  20 20 20 20 3c 62 75 74  74 6f 6e 5f 73 74 61 74  |    <button_stat|
0006b4a0  65 3e 09 62 75 74 74 6f  6e 3b 0a 20 20 20 20 3c  |e>.button;.    <|
0006b4b0  77 69 6e 64 6f 77 5f 68  61 6e 64 6c 65 3e 09 77  |window_handle>.w|
0006b4c0  69 6e 64 6f 77 3b 0a 20  20 20 20 3c 69 63 6f 6e  |indow;.    <icon|
0006b4d0  5f 68 61 6e 64 6c 65 3e  09 69 63 6f 6e 3b 0a 20  |_handle>.icon;. |
0006b4e0  20 7d 00 00 44 41 54 41  35 02 00 00 44 65 73 6b  | }..DATA5...Desk|
0006b4f0  4c 69 62 3a 4d 73 67 73  2e 68 0a 56 65 72 73 69  |Lib:Msgs.h.Versi|
0006b500  6f 6e 3a 20 31 2e 30 31  20 28 30 34 20 41 75 67  |on: 1.01 (04 Aug|
0006b510  20 31 39 39 33 29 0a 23  6c 69 6e 65 0a 54 68 69  | 1993).#line.Thi|
0006b520  73 20 68 65 61 64 65 72  20 64 65 63 6c 61 72 65  |s header declare|
0006b530  73 20 66 75 6e 63 74 69  6f 6e 73 20 66 6f 72 20  |s functions for |
0006b540  68 61 6e 64 6c 69 6e 67  20 6d 65 73 73 61 67 65  |handling message|
0006b550  20 66 69 6c 65 73 2e 20  4e 6f 74 65 20 74 68 61  | files. Note tha|
0006b560  74 20 74 68 65 73 65 20  66 75 6e 63 74 69 6f 6e  |t these function|
0006b570  73 20 64 6f 20 6e 6f 74  20 75 73 65 20 3c 4d 65  |s do not use <Me|
0006b580  73 73 61 67 65 54 72 61  6e 73 3d 3e 53 57 49 3a  |ssageTrans=>SWI:|
0006b590  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 3e 2e 0a  |MessageTrans_>..|
0006b5a0  0a 46 75 6e 63 74 69 6f  6e 73 3a 0a 0a 23 69 6e  |.Functions:..#in|
0006b5b0  64 65 6e 74 20 34 0a 23  54 61 62 6c 65 20 63 6f  |dent 4.#Table co|
0006b5c0  6c 75 6d 6e 73 20 33 0a  3c 4d 73 67 73 5f 4c 6f  |lumns 3.<Msgs_Lo|
0006b5d0  6f 6b 75 70 3e 0a 3c 4d  73 67 73 5f 70 72 69 6e  |okup>.<Msgs_prin|
0006b5e0  74 66 3e 0a 3c 4d 73 67  73 5f 4c 6f 61 64 46 69  |tf>.<Msgs_LoadFi|
0006b5f0  6c 65 3e 0a 3c 4d 73 67  73 5f 44 72 6f 70 47 72  |le>.<Msgs_DropGr|
0006b600  6f 75 70 3e 0a 3c 4d 73  67 73 5f 52 65 70 6f 72  |oup>.<Msgs_Repor|
0006b610  74 3e 0a 3c 4d 73 67 73  5f 52 65 70 6f 72 74 46  |t>.<Msgs_ReportF|
0006b620  61 74 61 6c 3e 0a 23 45  6e 64 54 61 62 6c 65 0a  |atal>.#EndTable.|
0006b630  23 69 6e 64 65 6e 74 20  30 0a 0a 41 63 6f 72 6e  |#indent 0..Acorn|
0006b640  20 72 65 63 6f 6d 6d 65  6e 64 20 74 68 61 74 20  | recommend that |
0006b650  6d 65 73 73 61 67 65 20  66 69 6c 65 73 20 73 68  |message files sh|
0006b660  6f 75 6c 64 20 62 65 20  75 73 65 64 20 66 6f 72  |ould be used for|
0006b670  20 61 6c 6c 20 74 65 78  74 75 61 6c 20 6d 65 73  | all textual mes|
0006b680  73 61 67 65 73 20 65 67  20 6d 65 6e 75 73 2c 20  |sages eg menus, |
0006b690  65 72 72 6f 72 73 20 65  74 63 20 77 69 74 68 69  |errors etc withi|
0006b6a0  6e 20 70 72 6f 67 72 61  6d 73 20 73 6f 20 74 68  |n programs so th|
0006b6b0  61 74 20 76 65 72 73 69  6f 6e 73 20 69 6e 20 6f  |at versions in o|
0006b6c0  74 68 65 72 20 6c 61 6e  67 75 61 67 65 73 20 63  |ther languages c|
0006b6d0  61 6e 20 62 65 20 70 72  6f 64 75 63 65 64 20 65  |an be produced e|
0006b6e0  61 73 69 6c 79 20 62 79  20 75 73 65 72 73 20 77  |asily by users w|
0006b6f0  69 74 68 6f 75 74 20 61  63 63 65 73 73 20 74 6f  |ithout access to|
0006b700  20 74 68 65 20 70 72 6f  67 72 61 6d 20 73 6f 75  | the program sou|
0006b710  72 63 65 20 63 6f 64 65  2e 00 00 00 44 49 52 24  |rce code....DIR$|
0006b720  b4 01 00 00 b4 01 00 00  d0 b8 06 00 46 ff ff ff  |............F...|
0006b730  0b 26 44 25 1b 01 00 00  13 00 00 00 00 00 00 00  |.&D%............|
0006b740  44 72 6f 70 47 72 6f 75  70 00 00 00 ec b9 06 00  |DropGroup.......|
0006b750  46 fd ff ff 14 b5 b1 24  ea 01 00 00 13 00 00 00  |F......$........|
0006b760  00 00 00 00 68 00 00 00  d8 bb 06 00 46 ff ff ff  |....h.......F...|
0006b770  0f cd b1 24 6c 01 00 00  13 00 00 00 00 00 00 00  |...$l...........|
0006b780  69 6e 69 74 00 00 00 00  44 bd 06 00 46 ff ff ff  |init....D...F...|
0006b790  62 12 44 25 fd 01 00 00  13 00 00 00 00 00 00 00  |b.D%............|
0006b7a0  4c 6f 61 64 46 69 6c 65  00 00 00 00 44 bf 06 00  |LoadFile....D...|
0006b7b0  46 ff ff ff 3c f4 43 25  b8 02 00 00 13 00 00 00  |F...<.C%........|
0006b7c0  00 00 00 00 4c 6f 6f 6b  75 70 00 00 fc c1 06 00  |....Lookup......|
0006b7d0  46 fd ff ff e6 fb b1 24  d5 01 00 00 13 00 00 00  |F......$........|
0006b7e0  00 00 00 00 6c 6f 6f 6b  75 70 5f 00 d4 c3 06 00  |....lookup_.....|
0006b7f0  46 ff ff ff 41 07 b2 24  78 00 00 00 13 00 00 00  |F...A..$x.......|
0006b800  00 00 00 00 4d 53 47 5f  4d 41 58 00 4c c4 06 00  |....MSG_MAX.L...|
0006b810  46 ff ff ff 63 ff 43 25  02 01 00 00 13 00 00 00  |F...c.C%........|
0006b820  00 00 00 00 70 72 69 6e  74 66 00 00 50 c5 06 00  |....printf..P...|
0006b830  46 ff ff ff 66 e0 b1 24  76 01 00 00 13 00 00 00  |F...f..$v.......|
0006b840  00 00 00 00 72 65 61 64  66 69 6c 65 00 00 00 00  |....readfile....|
0006b850  c8 c6 06 00 46 ff ff ff  e2 2d 44 25 ea 00 00 00  |....F....-D%....|
0006b860  13 00 00 00 00 00 00 00  52 65 70 6f 72 74 00 00  |........Report..|
0006b870  b4 c7 06 00 46 ff ff ff  39 35 44 25 f9 00 00 00  |....F...95D%....|
0006b880  13 00 00 00 00 00 00 00  52 65 70 6f 72 74 46 61  |........ReportFa|
0006b890  74 61 6c 00 b0 c8 06 00  46 ff ff ff bc 04 b2 24  |tal.....F......$|
0006b8a0  7b 00 00 00 13 00 00 00  00 00 00 00 54 41 47 5f  |{...........TAG_|
0006b8b0  4d 41 58 00 2c c9 06 00  46 fd ff ff d7 01 58 26  |MAX.,...F.....X&|
0006b8c0  dc 00 00 00 13 00 00 00  00 00 00 00 54 4c 00 00  |............TL..|
0006b8d0  44 41 54 41 1b 01 00 00  4d 73 67 73 5f 44 72 6f  |DATA....Msgs_Dro|
0006b8e0  70 47 72 6f 75 70 0a 53  79 6e 74 61 78 3a 09 76  |pGroup.Syntax:.v|
0006b8f0  6f 69 64 20 4d 73 67 73  5f 44 72 6f 70 47 72 6f  |oid Msgs_DropGro|
0006b900  75 70 20 28 63 68 61 72  20 2a 67 72 6f 75 70 29  |up (char *group)|
0006b910  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
0006b920  69 62 3a 4d 73 67 73 2e  68 3d 3e 4d 73 67 73 3e  |ib:Msgs.h=>Msgs>|
0006b930  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0006b940  64 65 6c 65 74 65 73 20  61 20 63 6f 6d 70 6c 65  |deletes a comple|
0006b950  74 65 20 6d 65 73 73 61  67 65 20 67 72 6f 75 70  |te message group|
0006b960  20 66 72 6f 6d 20 6d 65  6d 6f 72 79 2e 20 2f 67  | from memory. /g|
0006b970  72 6f 75 70 2f 20 70 6f  69 6e 74 73 20 74 6f 20  |roup/ points to |
0006b980  74 68 65 20 67 72 6f 75  70 20 6e 61 6d 65 2e 20  |the group name. |
0006b990  69 65 20 74 68 69 73 20  66 75 6e 63 74 69 6f 6e  |ie this function|
0006b9a0  20 64 65 6c 65 74 65 73  20 61 6c 6c 20 6d 65 73  | deletes all mes|
0006b9b0  73 61 67 65 73 20 6f 66  20 74 68 65 20 66 6f 72  |sages of the for|
0006b9c0  6d 3a 20 7b 66 43 6f 64  65 7d 67 72 6f 75 70 2e  |m: {fCode}group.|
0006b9d0  2a 7b 66 7d 2c 20 77 68  65 72 65 20 22 2a 22 20  |*{f}, where "*" |
0006b9e0  69 73 20 61 6e 79 20 74  61 67 2e 00 44 41 54 41  |is any tag..DATA|
0006b9f0  ea 01 00 00 6d 73 67 73  2e 68 0a 54 68 69 73 20  |....msgs.h.This |
0006ba00  68 65 61 64 65 72 20 64  65 63 6c 61 72 65 73 20  |header declares |
0006ba10  66 75 6e 63 74 69 6f 6e  73 20 66 6f 72 20 68 61  |functions for ha|
0006ba20  6e 64 6c 69 6e 67 20 6d  65 73 73 61 67 65 20 66  |ndling message f|
0006ba30  69 6c 65 73 2e 0a 0a 46  75 6e 63 74 69 6f 6e 73  |iles...Functions|
0006ba40  3a 0a 0a 23 69 6e 64 65  6e 74 20 38 3b 74 61 62  |:..#indent 8;tab|
0006ba50  6c 65 20 6c 69 6e 65 73  20 31 0a 3c 6d 73 67 73  |le lines 1.<msgs|
0006ba60  5f 69 6e 69 74 3e 0a 3c  6d 73 67 73 5f 72 65 61  |_init>.<msgs_rea|
0006ba70  64 66 69 6c 65 3e 0a 3c  6d 73 67 73 5f 6c 6f 6f  |dfile>.<msgs_loo|
0006ba80  6b 75 70 3d 3e 6d 73 67  73 5f 6c 6f 6f 6b 75 70  |kup=>msgs_lookup|
0006ba90  5f 3e 0a 23 65 6e 64 74  61 62 6c 65 0a 23 69 6e  |_>.#endtable.#in|
0006baa0  64 65 6e 74 0a 0a 4d 61  63 72 6f 73 3a 0a 0a 23  |dent..Macros:..#|
0006bab0  69 6e 64 65 6e 74 20 39  3b 74 61 62 6c 65 20 6c  |indent 9;table l|
0006bac0  69 6e 65 73 20 31 0a 3c  6d 73 67 73 5f 54 41 47  |ines 1.<msgs_TAG|
0006bad0  5f 4d 41 58 3e 0a 3c 6d  73 67 73 5f 4d 53 47 5f  |_MAX>.<msgs_MSG_|
0006bae0  4d 41 58 3e 0a 23 65 6e  64 74 61 62 6c 65 0a 23  |MAX>.#endtable.#|
0006baf0  69 6e 64 65 6e 74 0a 0a  41 63 6f 72 6e 20 72 65  |indent..Acorn re|
0006bb00  63 6f 6d 6d 65 6e 64 20  74 68 61 74 20 6d 65 73  |commend that mes|
0006bb10  73 61 67 65 20 66 69 6c  65 73 20 73 68 6f 75 6c  |sage files shoul|
0006bb20  64 20 62 65 20 75 73 65  64 20 66 6f 72 20 61 6c  |d be used for al|
0006bb30  6c 20 74 65 78 74 75 61  6c 20 6d 65 73 73 61 67  |l textual messag|
0006bb40  65 73 20 65 67 20 6d 65  6e 75 73 2c 20 65 72 72  |es eg menus, err|
0006bb50  6f 72 73 20 65 74 63 20  77 69 74 68 69 6e 20 70  |ors etc within p|
0006bb60  72 6f 67 72 61 6d 73 20  73 6f 20 74 68 61 74 20  |rograms so that |
0006bb70  76 65 72 73 69 6f 6e 73  20 69 6e 20 6f 74 68 65  |versions in othe|
0006bb80  72 20 6c 61 6e 67 75 61  67 65 73 20 63 61 6e 20  |r languages can |
0006bb90  62 65 20 70 72 6f 64 75  63 65 64 20 65 61 73 69  |be produced easi|
0006bba0  6c 79 20 62 79 20 75 73  65 72 73 20 77 69 74 68  |ly by users with|
0006bbb0  6f 75 74 20 61 63 63 65  73 73 20 74 6f 20 74 68  |out access to th|
0006bbc0  65 20 70 72 6f 67 72 61  6d 20 73 6f 75 72 63 65  |e program source|
0006bbd0  20 63 6f 64 65 2e 00 00  44 41 54 41 6c 01 00 00  | code...DATAl...|
0006bbe0  6d 73 67 73 5f 69 6e 69  74 0a 53 79 6e 74 61 78  |msgs_init.Syntax|
0006bbf0  3a 09 76 6f 69 64 20 6d  73 67 73 5f 69 6e 69 74  |:.void msgs_init|
0006bc00  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
0006bc10  09 3c 6d 73 67 73 2e 68  3d 3e 6d 73 67 73 5f 68  |.<msgs.h=>msgs_h|
0006bc20  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
0006bc30  20 72 65 61 64 73 20 69  6e 20 74 68 65 20 6d 65  | reads in the me|
0006bc40  73 73 61 67 65 73 20 69  6e 20 74 68 65 20 72 65  |ssages in the re|
0006bc50  73 6f 75 72 63 65 20 66  69 6c 65 20 22 4d 65 73  |source file "Mes|
0006bc60  73 61 67 65 73 22 2e 20  49 74 20 65 78 70 65 63  |sages". It expec|
0006bc70  74 73 20 6c 69 6e 65 73  20 6f 66 20 74 68 65 20  |ts lines of the |
0006bc80  66 6f 72 6d 3a 0a 7b 77  72 61 70 20 6f 66 66 7d  |form:.{wrap off}|
0006bc90  0a 7b 66 43 6f 64 65 3b  61 6c 69 67 6e 20 63 65  |.{fCode;align ce|
0006bca0  6e 74 72 65 7d 74 61 67  31 2f 74 61 67 32 2f 74  |ntre}tag1/tag2/t|
0006bcb0  61 67 33 3a 4d 65 73 73  61 67 65 20 74 65 78 74  |ag3:Message text|
0006bcc0  20 75 6e 74 69 6c 20 6e  65 77 6c 69 6e 65 7b 66  | until newline{f|
0006bcd0  3b 61 6c 69 67 6e 3b 77  72 61 70 7d 0a 0a 57 68  |;align;wrap}..Wh|
0006bce0  65 72 65 20 7b 2f 7d 74  61 67 31 7b 2f 7d 2c 20  |ere {/}tag1{/}, |
0006bcf0  7b 2f 7d 74 61 67 32 7b  2f 7d 20 61 6e 64 20 7b  |{/}tag2{/} and {|
0006bd00  2f 7d 74 61 67 33 7b 2f  7d 20 28 75 70 20 74 6f  |/}tag3{/} (up to|
0006bd10  20 38 20 63 61 6e 20 62  65 20 75 73 65 64 29 20  | 8 can be used) |
0006bd20  61 72 65 20 61 6c 6c 20  69 64 65 6e 74 69 66 69  |are all identifi|
0006bd30  65 72 73 20 66 6f 72 20  74 68 65 20 6d 65 73 73  |ers for the mess|
0006bd40  61 67 65 2e 44 41 54 41  fd 01 00 00 4d 73 67 73  |age.DATA....Msgs|
0006bd50  5f 4c 6f 61 64 46 69 6c  65 0a 53 79 6e 74 61 78  |_LoadFile.Syntax|
0006bd60  3a 09 3c 42 4f 4f 4c 3e  20 4d 73 67 73 5f 4c 6f  |:.<BOOL> Msgs_Lo|
0006bd70  61 64 46 69 6c 65 20 28  63 68 61 72 20 2a 6c 65  |adFile (char *le|
0006bd80  61 66 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |af);.Header:.<De|
0006bd90  73 6b 4c 69 62 3a 4d 73  67 73 2e 68 3d 3e 4d 73  |skLib:Msgs.h=>Ms|
0006bda0  67 73 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |gs>..This functi|
0006bdb0  6f 6e 20 61 64 64 73 20  74 68 65 20 6d 65 73 73  |on adds the mess|
0006bdc0  61 67 65 20 69 6e 20 74  68 65 20 66 69 6c 65 20  |age in the file |
0006bdd0  73 70 65 63 69 66 69 65  64 20 69 6e 74 6f 20 74  |specified into t|
0006bde0  68 65 20 63 75 72 72 65  6e 74 20 6c 69 73 74 20  |he current list |
0006bdf0  6f 66 20 6d 65 73 73 61  67 65 73 2c 20 77 69 74  |of messages, wit|
0006be00  68 20 6e 65 77 20 6d 65  73 73 61 67 65 73 20 6f  |h new messages o|
0006be10  76 65 72 77 72 69 74 69  6e 67 20 6f 6c 64 20 6f  |verwriting old o|
0006be20  6e 65 73 20 6f 66 20 74  68 65 20 73 61 6d 65 20  |nes of the same |
0006be30  6e 61 6d 65 2e 20 45 78  70 65 63 74 73 20 6c 69  |name. Expects li|
0006be40  6e 65 73 20 6f 66 20 74  68 65 20 66 6f 72 6d 3a  |nes of the form:|
0006be50  0a 7b 66 43 6f 64 65 3b  61 6c 69 67 6e 20 63 65  |.{fCode;align ce|
0006be60  6e 74 72 65 7d 67 72 6f  75 70 2e 74 61 67 3a 20  |ntre}group.tag: |
0006be70  6d 65 73 73 61 67 65 20  74 65 78 74 20 75 6e 74  |message text unt|
0006be80  69 6c 20 6e 65 77 6c 69  6e 65 7b 66 3b 61 6c 69  |il newline{f;ali|
0006be90  67 6e 7d 0a 0a 4c 65 61  64 69 6e 67 20 73 70 61  |gn}..Leading spa|
0006bea0  63 65 73 20 61 72 65 20  73 74 72 69 70 70 65 64  |ces are stripped|
0006beb0  2e 20 43 6f 6d 6d 65 6e  74 73 20 63 61 6e 20 62  |. Comments can b|
0006bec0  65 20 69 6e 63 6c 75 64  65 64 20 69 66 20 74 68  |e included if th|
0006bed0  65 20 6c 69 6e 65 20 73  74 61 72 74 73 20 77 69  |e line starts wi|
0006bee0  74 68 20 22 23 22 2e 0a  0a 54 68 65 20 66 69 6c  |th "#"...The fil|
0006bef0  65 20 69 73 20 66 6f 75  6e 64 20 75 73 69 6e 67  |e is found using|
0006bf00  20 74 68 65 20 3c 72 65  73 6f 75 72 63 65 5f 70  | the <resource_p|
0006bf10  61 74 68 6e 61 6d 65 3e  2c 20 61 6e 64 20 2f 6c  |athname>, and /l|
0006bf20  65 61 66 2f 20 77 68 69  63 68 20 63 6f 6e 74 61  |eaf/ which conta|
0006bf30  69 6e 73 20 74 68 65 20  6c 65 61 66 6e 61 6d 65  |ins the leafname|
0006bf40  2e 00 00 00 44 41 54 41  b8 02 00 00 4d 73 67 73  |....DATA....Msgs|
0006bf50  5f 4c 6f 6f 6b 75 70 0a  53 79 6e 74 61 78 3a 09  |_Lookup.Syntax:.|
0006bf60  3c 42 4f 4f 4c 3e 20 4d  73 67 73 5f 4c 6f 6f 6b  |<BOOL> Msgs_Look|
0006bf70  75 70 20 28 63 68 61 72  20 2a 74 61 67 2c 20 63  |up (char *tag, c|
0006bf80  68 61 72 20 2a 72 65 73  75 6c 74 2c 20 69 6e 74  |har *result, int|
0006bf90  20 6d 61 78 6c 65 6e 67  74 68 29 3b 0a 48 65 61  | maxlength);.Hea|
0006bfa0  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 4d 73  |der:.<DeskLib:Ms|
0006bfb0  67 73 2e 68 3d 3e 4d 73  67 73 3e 0a 0a 52 65 74  |gs.h=>Msgs>..Ret|
0006bfc0  75 72 6e 73 3a 09 3c 54  52 55 45 3e 20 69 66 20  |urns:.<TRUE> if |
0006bfd0  73 75 63 63 65 73 73 66  75 6c 2e 0a 0a 53 65 65  |successful...See|
0006bfe0  20 61 6c 73 6f 20 74 68  65 20 44 65 73 6b 74 6f  | also the Deskto|
0006bff0  70 20 43 20 66 75 6e 63  74 69 6f 6e 2c 20 3c 6d  |p C function, <m|
0006c000  73 67 73 5f 6c 6f 6f 6b  75 70 3d 3e 6d 73 67 73  |sgs_lookup=>msgs|
0006c010  5f 6c 6f 6f 6b 75 70 5f  3e 2e 0a 0a 54 68 69 73  |_lookup_>...This|
0006c020  20 66 75 6e 63 74 69 6f  6e 20 6c 6f 6f 6b 73 20  | function looks |
0006c030  69 6e 20 74 68 65 20 6d  65 73 73 61 67 65 20 6c  |in the message l|
0006c040  69 73 74 20 28 6c 6f 61  64 65 64 20 77 69 74 68  |ist (loaded with|
0006c050  20 3c 4d 73 67 73 5f 4c  6f 61 64 46 69 6c 65 3e  | <Msgs_LoadFile>|
0006c060  29 20 66 6f 72 20 74 68  65 20 74 61 67 20 73 70  |) for the tag sp|
0006c070  65 63 69 66 69 65 64 2e  20 49 74 20 74 68 65 6e  |ecified. It then|
0006c080  20 63 6f 70 69 65 73 20  75 70 20 74 6f 20 2f 6d  | copies up to /m|
0006c090  61 78 6c 65 6e 67 74 68  2f 20 63 68 61 72 61 63  |axlength/ charac|
0006c0a0  74 65 72 73 20 6f 66 20  74 68 65 20 61 73 73 6f  |ters of the asso|
0006c0b0  63 69 61 74 65 64 20 6d  65 73 73 61 67 65 20 69  |ciated message i|
0006c0c0  6e 74 6f 20 2f 72 65 73  75 6c 74 2f 2e 20 54 61  |nto /result/. Ta|
0006c0d0  67 73 20 73 68 6f 75 6c  64 20 62 65 20 6f 66 20  |gs should be of |
0006c0e0  74 68 65 20 66 6f 72 6d  3a 0a 0a 7b 66 43 6f 64  |the form:..{fCod|
0006c0f0  65 7d 20 20 67 72 6f 75  70 2e 74 61 67 3a 7b 66  |e}  group.tag:{f|
0006c100  7d 0a 0a 4d 65 73 73 61  67 65 73 20 63 61 6e 20  |}..Messages can |
0006c110  69 6e 63 6c 75 64 65 20  6f 74 68 65 72 20 6d 65  |include other me|
0006c120  73 73 61 67 65 73 20 62  79 20 65 6e 63 6c 6f 73  |ssages by enclos|
0006c130  69 6e 67 20 74 68 65 69  72 20 74 61 67 20 69 6e  |ing their tag in|
0006c140  20 5c 3c 3e 73 3a 0a 0a  7b 66 43 6f 64 65 7d 20  | \<>s:..{fCode} |
0006c150  20 65 72 72 2e 70 72 65  66 3a 4e 61 73 74 79 20  | err.pref:Nasty |
0006c160  65 72 72 6f 72 20 61 6c  65 72 74 3a 0a 20 20 65  |error alert:.  e|
0006c170  72 72 2e 77 61 6c 6c 79  3a 5c 3c 65 72 72 2e 70  |rr.wally:\<err.p|
0006c180  72 65 66 3e 20 54 68 65  72 65 27 73 20 61 20 77  |ref> There's a w|
0006c190  61 6c 6c 79 20 61 62 6f  75 74 2e 7b 66 7d 0a 0a  |ally about.{f}..|
0006c1a0  55 73 69 6e 67 20 74 68  69 73 20 66 75 6e 63 74  |Using this funct|
0006c1b0  69 6f 6e 20 6f 6e 20 22  65 72 72 2e 77 61 6c 6c  |ion on "err.wall|
0006c1c0  79 22 20 77 69 6c 6c 20  72 65 74 75 72 6e 20 22  |y" will return "|
0006c1d0  4e 61 73 74 79 20 65 72  72 6f 72 20 61 6c 65 72  |Nasty error aler|
0006c1e0  74 3a 20 54 68 65 72 65  27 73 20 61 20 77 61 6c  |t: There's a wal|
0006c1f0  6c 79 20 61 62 6f 75 74  2e 22 0a 0a 44 41 54 41  |ly about."..DATA|
0006c200  d5 01 00 00 6d 73 67 73  5f 6c 6f 6f 6b 75 70 0a  |....msgs_lookup.|
0006c210  53 79 6e 74 61 78 3a 09  63 68 61 72 20 2a 6d 73  |Syntax:.char *ms|
0006c220  67 73 5f 6c 6f 6f 6b 75  70 20 28 63 68 61 72 20  |gs_lookup (char |
0006c230  2a 74 61 67 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |*tag);.Header:.<|
0006c240  6d 73 67 73 2e 68 3d 3e  6d 73 67 73 5f 68 3e 0a  |msgs.h=>msgs_h>.|
0006c250  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
0006c260  72 20 74 6f 20 74 68 65  20 6d 65 73 73 61 67 65  |r to the message|
0006c270  20 74 65 78 74 2e 0a 0a  54 68 69 73 20 66 75 6e  | text...This fun|
0006c280  63 74 69 6f 6e 20 66 69  6e 64 73 20 74 68 65 20  |ction finds the |
0006c290  67 69 76 65 6e 20 74 61  67 20 69 6e 20 74 68 65  |given tag in the|
0006c2a0  20 6c 69 73 74 20 6f 66  20 6d 65 73 73 61 67 65  | list of message|
0006c2b0  73 20 61 6e 64 20 72 65  74 75 72 6e 73 20 74 68  |s and returns th|
0006c2c0  65 20 6d 65 73 73 61 67  65 20 61 73 73 6f 63 69  |e message associ|
0006c2d0  61 74 65 64 20 77 69 74  68 20 69 74 2e 20 2f 74  |ated with it. /t|
0006c2e0  61 67 2f 20 63 61 6e 20  62 65 20 66 6f 6c 6c 6f  |ag/ can be follo|
0006c2f0  77 65 64 20 62 79 20 61  20 63 6f 6c 6f 6e 20 61  |wed by a colon a|
0006c300  6e 64 20 61 20 6d 65 73  73 61 67 65 20 2d 20 74  |nd a message - t|
0006c310  68 69 73 20 69 73 20 75  73 65 64 20 61 73 20 61  |his is used as a|
0006c320  20 64 65 66 61 75 6c 74  20 69 66 20 74 68 65 20  | default if the |
0006c330  74 61 67 20 69 73 20 6e  6f 74 20 66 6f 75 6e 64  |tag is not found|
0006c340  20 65 67 0a 7b 77 72 61  70 20 6f 66 66 7d 0a 7b  | eg.{wrap off}.{|
0006c350  66 43 6f 64 65 3b 61 6c  69 67 6e 20 63 65 6e 74  |fCode;align cent|
0006c360  72 65 7d 6d 73 67 73 5f  6c 6f 6f 6b 75 70 28 22  |re}msgs_lookup("|
0006c370  45 52 52 4f 52 30 31 3a  57 68 6f 6f 70 73 21 22  |ERROR01:Whoops!"|
0006c380  29 3b 7b 66 3b 61 6c 69  67 6e 7d 0a 7b 77 72 61  |);{f;align}.{wra|
0006c390  70 7d 0a 54 68 69 73 20  77 69 6c 6c 20 72 65 74  |p}.This will ret|
0006c3a0  75 72 6e 20 22 57 68 6f  6f 70 73 21 22 20 69 66  |urn "Whoops!" if|
0006c3b0  20 74 68 65 20 74 61 67  20 45 52 52 4f 52 30 31  | the tag ERROR01|
0006c3c0  20 63 61 6e 6e 6f 74 20  62 65 20 66 6f 75 6e 64  | cannot be found|
0006c3d0  2e 00 00 00 44 41 54 41  78 00 00 00 6d 73 67 73  |....DATAx...msgs|
0006c3e0  5f 4d 53 47 5f 4d 41 58  0a 54 68 69 73 20 6d 61  |_MSG_MAX.This ma|
0006c3f0  63 72 6f 20 69 73 20 64  65 66 69 6e 65 64 20 69  |cro is defined i|
0006c400  6e 20 3c 6d 73 67 73 2e  68 3d 3e 6d 73 67 73 5f  |n <msgs.h=>msgs_|
0006c410  68 3e 20 61 73 20 74 68  65 20 6d 61 78 69 6d 75  |h> as the maximu|
0006c420  6d 20 6c 65 6e 67 74 68  20 6f 66 20 61 20 6d 65  |m length of a me|
0006c430  73 73 61 67 65 2e 20 49  74 20 69 73 20 64 65 66  |ssage. It is def|
0006c440  69 6e 65 64 20 61 73 20  32 35 35 2e 44 41 54 41  |ined as 255.DATA|
0006c450  02 01 00 00 4d 73 67 73  5f 70 72 69 6e 74 66 0a  |....Msgs_printf.|
0006c460  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 4d 73 67  |Syntax:.void Msg|
0006c470  73 5f 70 72 69 6e 74 66  20 28 63 68 61 72 20 2a  |s_printf (char *|
0006c480  6f 75 74 2c 20 63 68 61  72 20 2a 66 6f 72 6d 61  |out, char *forma|
0006c490  74 2c 20 2e 2e 2e 29 3b  0a 48 65 61 64 65 72 3a  |t, ...);.Header:|
0006c4a0  09 3c 44 65 73 6b 4c 69  62 3a 4d 73 67 73 2e 68  |.<DeskLib:Msgs.h|
0006c4b0  3d 3e 4d 73 67 73 3e 0a  0a 54 68 69 73 20 66 75  |=>Msgs>..This fu|
0006c4c0  6e 63 74 69 6f 6e 20 69  73 20 65 71 75 69 76 61  |nction is equiva|
0006c4d0  6c 65 6e 74 20 74 6f 20  3c 73 70 72 69 6e 74 66  |lent to <sprintf|
0006c4e0  3e 2c 20 62 75 74 20 74  68 65 20 66 6f 72 6d 61  |>, but the forma|
0006c4f0  74 20 73 74 72 69 6e 67  20 69 73 20 61 20 74 61  |t string is a ta|
0006c500  67 20 77 68 69 63 68 20  69 73 20 6c 6f 6f 6b 65  |g which is looke|
0006c510  64 20 75 70 20 62 79 20  3c 4d 73 67 73 5f 4c 6f  |d up by <Msgs_Lo|
0006c520  6f 6b 75 70 3e 20 74 6f  20 67 65 74 20 74 68 65  |okup> to get the|
0006c530  20 72 65 61 6c 20 3c 66  6f 72 6d 61 74 20 73 74  | real <format st|
0006c540  72 69 6e 67 3d 3e 70 66  6f 72 6d 5f 3e 2e 00 00  |ring=>pform_>...|
0006c550  44 41 54 41 76 01 00 00  6d 73 67 73 5f 72 65 61  |DATAv...msgs_rea|
0006c560  64 66 69 6c 65 0a 53 79  6e 74 61 78 3a 09 76 6f  |dfile.Syntax:.vo|
0006c570  69 64 20 6d 73 67 73 5f  72 65 61 64 66 69 6c 65  |id msgs_readfile|
0006c580  20 28 63 68 61 72 20 2a  6e 61 6d 65 29 3b 0a 48  | (char *name);.H|
0006c590  65 61 64 65 72 3a 09 3c  6d 73 67 73 2e 68 3d 3e  |eader:.<msgs.h=>|
0006c5a0  6d 73 67 73 5f 68 3e 0a  0a 54 68 69 73 20 66 75  |msgs_h>..This fu|
0006c5b0  6e 63 74 69 6f 6e 20 72  65 61 64 73 20 69 6e 20  |nction reads in |
0006c5c0  74 68 65 20 6d 65 73 73  61 67 65 73 20 69 6e 20  |the messages in |
0006c5d0  74 68 65 20 72 65 73 6f  75 72 63 65 20 66 69 6c  |the resource fil|
0006c5e0  65 20 2f 6e 61 6d 65 2f  2e 20 49 74 20 65 78 70  |e /name/. It exp|
0006c5f0  65 63 74 73 20 6c 69 6e  65 73 20 6f 66 20 74 68  |ects lines of th|
0006c600  65 20 66 6f 72 6d 3a 0a  7b 77 72 61 70 20 6f 66  |e form:.{wrap of|
0006c610  66 7d 0a 7b 66 43 6f 64  65 3b 61 6c 69 67 6e 20  |f}.{fCode;align |
0006c620  63 65 6e 74 72 65 7d 74  61 67 31 2f 74 61 67 32  |centre}tag1/tag2|
0006c630  2f 74 61 67 33 3a 4d 65  73 73 61 67 65 20 74 65  |/tag3:Message te|
0006c640  78 74 20 75 6e 74 69 6c  20 6e 65 77 6c 69 6e 65  |xt until newline|
0006c650  7b 66 3b 61 6c 69 67 6e  3b 77 72 61 70 7d 0a 0a  |{f;align;wrap}..|
0006c660  57 68 65 72 65 20 7b 2f  7d 74 61 67 31 7b 2f 7d  |Where {/}tag1{/}|
0006c670  2c 20 7b 2f 7d 74 61 67  32 7b 2f 7d 20 61 6e 64  |, {/}tag2{/} and|
0006c680  20 7b 2f 7d 74 61 67 33  7b 2f 7d 20 28 75 70 20  | {/}tag3{/} (up |
0006c690  74 6f 20 38 20 63 61 6e  20 62 65 20 75 73 65 64  |to 8 can be used|
0006c6a0  29 20 61 72 65 20 61 6c  6c 20 69 64 65 6e 74 69  |) are all identi|
0006c6b0  66 69 65 72 73 20 66 6f  72 20 74 68 65 20 6d 65  |fiers for the me|
0006c6c0  73 73 61 67 65 2e 00 00  44 41 54 41 ea 00 00 00  |ssage...DATA....|
0006c6d0  4d 73 67 73 5f 52 65 70  6f 72 74 0a 53 79 6e 74  |Msgs_Report.Synt|
0006c6e0  61 78 3a 09 76 6f 69 64  20 4d 73 67 73 5f 52 65  |ax:.void Msgs_Re|
0006c6f0  70 6f 72 74 20 28 69 6e  74 20 65 72 72 6e 6f 2c  |port (int errno,|
0006c700  20 63 68 61 72 20 2a 72  65 70 6f 72 74 2c 20 2e  | char *report, .|
0006c710  2e 2e 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |..);.Header:.<De|
0006c720  73 6b 4c 69 62 3a 4d 73  67 73 2e 68 3d 3e 4d 73  |skLib:Msgs.h=>Ms|
0006c730  67 73 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |gs>..This functi|
0006c740  6f 6e 20 63 61 6c 6c 73  20 3c 45 72 72 6f 72 5f  |on calls <Error_|
0006c750  52 65 70 6f 72 74 3e 2c  20 62 75 74 20 2f 72 65  |Report>, but /re|
0006c760  70 6f 72 74 2f 20 69 73  20 61 20 6d 65 73 73 61  |port/ is a messa|
0006c770  67 65 20 74 61 67 20 77  68 69 63 68 20 69 73 20  |ge tag which is |
0006c780  6c 6f 6f 6b 65 64 20 75  70 20 74 6f 20 67 65 74  |looked up to get|
0006c790  20 74 68 65 20 72 65 61  6c 20 3c 66 6f 72 6d 61  | the real <forma|
0006c7a0  74 20 73 74 72 69 6e 67  3d 3e 70 66 6f 72 6d 5f  |t string=>pform_|
0006c7b0  3e 2e 00 00 44 41 54 41  f9 00 00 00 4d 73 67 73  |>...DATA....Msgs|
0006c7c0  5f 52 65 70 6f 72 74 46  61 74 61 6c 0a 53 79 6e  |_ReportFatal.Syn|
0006c7d0  74 61 78 3a 09 76 6f 69  64 20 4d 73 67 73 5f 52  |tax:.void Msgs_R|
0006c7e0  65 70 6f 72 74 46 61 74  61 6c 20 28 69 6e 74 20  |eportFatal (int |
0006c7f0  65 72 72 6e 6f 2c 20 63  68 61 72 20 2a 72 65 70  |errno, char *rep|
0006c800  6f 72 74 2c 20 2e 2e 2e  29 3b 0a 48 65 61 64 65  |ort, ...);.Heade|
0006c810  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 4d 73 67 73  |r:.<DeskLib:Msgs|
0006c820  2e 68 3d 3e 4d 73 67 73  3e 0a 0a 54 68 69 73 20  |.h=>Msgs>..This |
0006c830  66 75 6e 63 74 69 6f 6e  20 63 61 6c 6c 73 20 3c  |function calls <|
0006c840  45 72 72 6f 72 5f 52 65  70 6f 72 74 46 61 74 61  |Error_ReportFata|
0006c850  6c 3e 2c 20 62 75 74 20  2f 72 65 70 6f 72 74 2f  |l>, but /report/|
0006c860  20 69 73 20 61 20 6d 65  73 73 61 67 65 20 74 61  | is a message ta|
0006c870  67 20 77 68 69 63 68 20  69 73 20 6c 6f 6f 6b 65  |g which is looke|
0006c880  64 20 75 70 20 74 6f 20  67 65 74 20 74 68 65 20  |d up to get the |
0006c890  72 65 61 6c 20 3c 66 6f  72 6d 61 74 20 73 74 72  |real <format str|
0006c8a0  69 6e 67 3d 3e 70 66 6f  72 6d 5f 3e 2e 00 00 00  |ing=>pform_>....|
0006c8b0  44 41 54 41 7b 00 00 00  6d 73 67 73 5f 54 41 47  |DATA{...msgs_TAG|
0006c8c0  5f 4d 41 58 0a 54 68 69  73 20 6d 61 63 72 6f 20  |_MAX.This macro |
0006c8d0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 6d  |is defined in <m|
0006c8e0  73 67 73 2e 68 3d 3e 6d  73 67 73 5f 68 3e 20 61  |sgs.h=>msgs_h> a|
0006c8f0  73 20 74 68 65 20 6d 61  78 69 6d 75 6d 20 6c 65  |s the maximum le|
0006c900  6e 67 74 68 20 6f 66 20  61 20 6d 65 73 73 61 67  |ngth of a messag|
0006c910  65 20 74 61 67 2e 20 49  74 20 69 73 20 64 65 66  |e tag. It is def|
0006c920  69 6e 65 64 20 61 73 20  31 30 2e 00 44 41 54 41  |ined as 10..DATA|
0006c930  dc 00 00 00 54 69 6d 73  4c 69 62 3a 4d 73 67 73  |....TimsLib:Msgs|
0006c940  2e 68 0a 54 68 69 73 20  68 65 61 64 65 72 20 64  |.h.This header d|
0006c950  65 63 6c 61 72 65 73 20  6f 6e 65 20 6d 61 63 72  |eclares one macr|
0006c960  6f 20 63 61 6c 6c 65 64  20 7b 2a 7d 6d 73 67 73  |o called {*}msgs|
0006c970  5f 6c 6f 6f 6b 75 70 7b  2a 7d 2e 20 54 68 69 73  |_lookup{*}. This|
0006c980  20 61 6c 6c 6f 77 73 20  79 6f 75 20 74 6f 20 63  | allows you to c|
0006c990  61 6c 6c 20 61 20 44 65  73 6b 74 6f 70 20 43 2d  |all a Desktop C-|
0006c9a0  73 74 79 6c 65 20 3c 6d  73 67 73 5f 6c 6f 6f 6b  |style <msgs_look|
0006c9b0  75 70 3d 3e 6d 73 67 73  5f 6c 6f 6f 6b 75 70 5f  |up=>msgs_lookup_|
0006c9c0  3e 20 66 75 6e 63 74 69  6f 6e 20 61 6e 64 20 69  |> function and i|
0006c9d0  74 20 6d 61 70 73 20 74  68 69 73 20 63 61 6c 6c  |t maps this call|
0006c9e0  20 6f 6e 74 6f 20 61 20  63 61 6c 6c 20 74 6f 20  | onto a call to |
0006c9f0  44 65 73 6b 4c 69 62 27  73 20 3c 4d 73 67 73 5f  |DeskLib's <Msgs_|
0006ca00  4c 6f 6f 6b 75 70 3e 2e  44 41 54 41 b8 01 00 00  |Lookup>.DATA....|
0006ca10  6d 6f 64 65 5f 76 61 72  69 61 62 6c 65 0a 54 68  |mode_variable.Th|
0006ca20  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
0006ca30  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 4b  |ed in <DeskLib:K|
0006ca40  65 72 6e 65 6c 53 57 49  73 2e 68 3d 3e 4b 65 72  |ernelSWIs.h=>Ker|
0006ca50  6e 65 6c 53 57 49 73 3e  2e 20 49 74 20 69 73 20  |nelSWIs>. It is |
0006ca60  61 6e 20 65 6e 75 6d 65  72 61 74 65 64 0a 74 79  |an enumerated.ty|
0006ca70  70 65 20 67 69 76 69 6e  67 20 6e 61 6d 65 73 20  |pe giving names |
0006ca80  74 6f 20 74 68 65 20 6d  6f 64 65 20 76 61 72 69  |to the mode vari|
0006ca90  61 62 6c 65 20 6e 75 6d  62 65 72 73 2e 0a 0a 5c  |able numbers...\|
0006caa0  7b 0a 20 20 6d 6f 64 65  76 61 72 5f 4d 4f 44 45  |{.  modevar_MODE|
0006cab0  46 4c 41 47 53 20 3d 20  30 2c 0a 20 20 6d 6f 64  |FLAGS = 0,.  mod|
0006cac0  65 76 61 72 5f 52 49 47  48 54 43 4f 4c 55 4d 4e  |evar_RIGHTCOLUMN|
0006cad0  2c 0a 20 20 6d 6f 64 65  76 61 72 5f 42 4f 54 54  |,.  modevar_BOTT|
0006cae0  4f 4d 52 4f 57 2c 0a 20  20 6d 6f 64 65 76 61 72  |OMROW,.  modevar|
0006caf0  5f 4e 43 4f 4c 4f 55 52  2c 0a 20 20 6d 6f 64 65  |_NCOLOUR,.  mode|
0006cb00  76 61 72 5f 58 45 49 47  46 41 43 54 4f 52 2c 0a  |var_XEIGFACTOR,.|
0006cb10  20 20 6d 6f 64 65 76 61  72 5f 59 45 49 47 46 41  |  modevar_YEIGFA|
0006cb20  43 54 4f 52 2c 0a 20 20  6d 6f 64 65 76 61 72 5f  |CTOR,.  modevar_|
0006cb30  4c 49 4e 45 4c 45 4e 47  54 48 2c 0a 20 20 6d 6f  |LINELENGTH,.  mo|
0006cb40  64 65 76 61 72 5f 53 43  52 45 45 4e 53 49 5a 45  |devar_SCREENSIZE|
0006cb50  2c 0a 20 20 6d 6f 64 65  76 61 72 5f 59 53 48 49  |,.  modevar_YSHI|
0006cb60  46 54 46 41 43 54 4f 52  2c 0a 20 20 6d 6f 64 65  |FTFACTOR,.  mode|
0006cb70  76 61 72 5f 4c 4f 47 32  42 50 50 2c 0a 20 20 6d  |var_LOG2BPP,.  m|
0006cb80  6f 64 65 76 61 72 5f 4c  4f 47 32 42 50 43 2c 0a  |odevar_LOG2BPC,.|
0006cb90  20 20 6d 6f 64 65 76 61  72 5f 58 57 49 4e 44 4f  |  modevar_XWINDO|
0006cba0  57 4c 49 4d 49 54 2c 0a  20 20 6d 6f 64 65 76 61  |WLIMIT,.  modeva|
0006cbb0  72 5f 59 57 49 4e 44 4f  57 4c 49 4d 49 54 0a 7d  |r_YWINDOWLIMIT.}|
0006cbc0  44 49 52 24 6c 01 00 00  6c 01 00 00 2c cd 06 00  |DIR$l...l...,...|
0006cbd0  46 fd ff ff 35 b5 84 2f  30 00 00 00 13 01 00 00  |F...5../0.......|
0006cbe0  00 00 00 00 4e 4f 5f 00  20 ce 06 00 46 ff ff ff  |....NO_. ...F...|
0006cbf0  96 a0 f1 24 9b 00 00 00  13 00 00 00 00 00 00 00  |...$............|
0006cc00  4e 4f 45 52 52 4f 52 00  bc ce 06 00 46 ff ff ff  |NOERROR.....F...|
0006cc10  cc 5d c0 22 f0 00 00 00  13 00 00 00 00 00 00 00  |.]."............|
0006cc20  4e 55 4c 4c 00 00 00 00  ac cf 06 00 46 ff ff ff  |NULL........F...|
0006cc30  05 61 56 26 24 01 00 00  13 00 00 00 00 00 00 00  |.aV&$...........|
0006cc40  4e 75 6d 46 72 6f 6d 48  65 78 44 69 67 69 74 00  |NumFromHexDigit.|
0006cc50  d0 d0 06 00 46 fd ff ff  89 b5 84 2f 2c 00 00 00  |....F....../,...|
0006cc60  13 01 00 00 00 00 00 00  6f 62 6a 65 63 74 5f 00  |........object_.|
0006cc70  38 d2 06 00 46 ff ff ff  de 6f c0 22 49 01 00 00  |8...F....o."I...|
0006cc80  13 00 00 00 00 00 00 00  6f 66 66 73 65 74 6f 66  |........offsetof|
0006cc90  00 00 00 00 84 d3 06 00  46 ff ff ff 74 62 b2 24  |........F...tb.$|
0006cca0  80 02 00 00 13 00 00 00  00 00 00 00 6f 73 00 00  |............os..|
0006ccb0  04 d6 06 00 46 fd ff ff  f3 b5 84 2f 50 06 00 00  |....F....../P...|
0006ccc0  13 01 00 00 00 00 00 00  6f 73 5f 00 8c 25 07 00  |........os_..%..|
0006ccd0  46 fd ff ff 9b b9 84 2f  2c 00 00 00 13 01 00 00  |F....../,.......|
0006cce0  00 00 00 00 6f 73 62 79  74 65 5f 00 9c 33 07 00  |....osbyte_..3..|
0006ccf0  46 ff ff ff ad d2 f1 24  16 01 00 00 13 00 00 00  |F......$........|
0006cd00  00 00 00 00 4f 53 43 4c  49 00 00 00 b4 34 07 00  |....OSCLI....4..|
0006cd10  46 fd ff ff e2 b9 84 2f  2c 00 00 00 13 01 00 00  |F....../,.......|
0006cd20  00 00 00 00 6f 73 77 6f  72 64 5f 00 44 49 52 24  |....osword_.DIR$|
0006cd30  30 00 00 00 30 00 00 00  5c cd 06 00 46 ff ff ff  |0...0...\...F...|
0006cd40  da 99 55 26 c2 00 00 00  13 00 00 00 00 00 00 00  |..U&............|
0006cd50  49 43 4f 4e 5f 44 41 54  41 00 00 00 44 41 54 41  |ICON_DATA...DATA|
0006cd60  c2 00 00 00 4e 4f 5f 49  43 4f 4e 5f 44 41 54 41  |....NO_ICON_DATA|
0006cd70  0a 54 68 69 73 20 6d 61  63 72 6f 20 69 73 20 64  |.This macro is d|
0006cd80  65 66 69 6e 65 64 20 69  6e 20 3c 54 69 6d 73 4c  |efined in <TimsL|
0006cd90  69 62 3a 49 63 6f 6e 2e  68 3d 3e 49 63 6f 6e 5f  |ib:Icon.h=>Icon_|
0006cda0  54 4c 3e 2e 20 49 74 20  69 73 20 74 68 65 20 76  |TL>. It is the v|
0006cdb0  61 6c 75 65 20 74 68 65  20 72 65 74 75 72 6e 65  |alue the returne|
0006cdc0  64 20 62 79 20 3c 49 43  4f 4e 5f 54 59 50 45 3e  |d by <ICON_TYPE>|
0006cdd0  20 77 68 65 6e 20 74 68  65 20 69 63 6f 6e 20 69  | when the icon i|
0006cde0  6e 20 71 75 65 73 74 69  6f 6e 20 69 73 20 61 20  |n question is a |
0006cdf0  27 6e 6f 20 74 65 78 74  2c 20 6e 6f 20 73 70 72  |'no text, no spr|
0006ce00  69 74 65 27 20 69 63 6f  6e 2e 20 49 74 20 69 73  |ite' icon. It is|
0006ce10  20 64 65 66 69 6e 65 64  20 61 73 20 30 2e 00 00  | defined as 0...|
0006ce20  44 41 54 41 9b 00 00 00  4e 4f 45 52 52 4f 52 0a  |DATA....NOERROR.|
0006ce30  54 68 65 20 6d 61 63 72  6f 20 4e 4f 45 52 52 4f  |The macro NOERRO|
0006ce40  52 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |R is defined in |
0006ce50  3c 44 65 73 6b 4c 69 62  3a 43 6f 72 65 2e 68 3d  |<DeskLib:Core.h=|
0006ce60  3e 43 6f 72 65 3e 20 61  73 20 61 20 76 61 6c 75  |>Core> as a valu|
0006ce70  65 20 72 65 70 72 65 73  65 6e 74 69 6e 67 20 74  |e representing t|
0006ce80  68 65 20 73 74 61 74 65  20 74 68 61 74 20 6e 6f  |he state that no|
0006ce90  20 65 72 72 6f 72 20 65  78 69 73 74 73 2e 20 49  | error exists. I|
0006cea0  74 20 69 73 20 61 63 74  75 61 6c 6c 79 20 64 65  |t is actually de|
0006ceb0  66 69 6e 65 64 20 61 73  20 30 2e 00 44 41 54 41  |fined as 0..DATA|
0006cec0  f0 00 00 00 4e 55 4c 4c  0a 54 68 65 20 6d 61 63  |....NULL.The mac|
0006ced0  72 6f 20 4e 55 4c 4c 20  69 73 20 64 65 66 69 6e  |ro NULL is defin|
0006cee0  65 64 20 69 6e 20 3c 73  74 64 69 6f 2e 68 3d 3e  |ed in <stdio.h=>|
0006cef0  73 74 64 69 6f 3e 2c 20  3c 73 74 64 6c 69 62 2e  |stdio>, <stdlib.|
0006cf00  68 3d 3e 73 74 64 6c 69  62 3e 2c 20 3c 73 74 64  |h=>stdlib>, <std|
0006cf10  64 65 66 2e 68 3d 3e 73  74 64 64 65 66 3e 2c 20  |def.h=>stddef>, |
0006cf20  3c 73 74 72 69 6e 67 2e  68 3d 3e 73 74 72 69 6e  |<string.h=>strin|
0006cf30  67 3e 2c 20 3c 44 65 73  6b 4c 69 62 3a 43 6f 72  |g>, <DeskLib:Cor|
0006cf40  65 2e 68 3d 3e 43 6f 72  65 3e 2c 20 61 6e 64 20  |e.h=>Core>, and |
0006cf50  3c 54 69 6d 73 4c 69 62  3a 43 6f 72 65 2e 68 3d  |<TimsLib:Core.h=|
0006cf60  3e 43 6f 72 65 5f 54 4c  3e 20 61 6e 64 20 75 73  |>Core_TL> and us|
0006cf70  65 64 20 61 73 20 61 20  6e 75 6c 6c 20 70 6f 69  |ed as a null poi|
0006cf80  6e 74 65 72 2e 20 49 6e  20 45 61 73 79 a0 43 20  |nter. In Easy.C |
0006cf90  69 74 20 69 73 20 61 63  74 75 61 6c 6c 79 20 64  |it is actually d|
0006cfa0  65 66 69 6e 65 64 20 61  73 20 30 2e 44 41 54 41  |efined as 0.DATA|
0006cfb0  24 01 00 00 4e 75 6d 46  72 6f 6d 48 65 78 44 69  |$...NumFromHexDi|
0006cfc0  67 69 74 0a 53 79 6e 74  61 78 3a 09 69 6e 74 20  |git.Syntax:.int |
0006cfd0  4e 75 6d 46 72 6f 6d 48  65 78 44 69 67 69 74 20  |NumFromHexDigit |
0006cfe0  28 63 68 61 72 20 64 69  67 69 74 29 3b 0a 48 65  |(char digit);.He|
0006cff0  61 64 65 72 3a 09 3c 54  69 6d 73 4c 69 62 3a 4c  |ader:.<TimsLib:L|
0006d000  69 62 2e 68 3d 3e 4c 69  62 3e 0a 0a 52 65 74 75  |ib.h=>Lib>..Retu|
0006d010  72 6e 73 3a 09 56 61 6c  75 65 20 6f 66 20 74 68  |rns:.Value of th|
0006d020  65 20 68 65 78 61 64 65  63 69 6d 61 6c 20 63 68  |e hexadecimal ch|
0006d030  61 72 61 63 74 65 72 2e  0a 0a 54 68 69 73 20 66  |aracter...This f|
0006d040  75 6e 63 74 69 6f 6e 20  74 61 6b 65 73 20 61 20  |unction takes a |
0006d050  63 68 61 72 61 63 74 65  72 20 2f 64 69 67 69 74  |character /digit|
0006d060  2f 20 77 68 69 63 68 20  69 73 20 61 20 68 65 78  |/ which is a hex|
0006d070  61 64 65 63 69 6d 61 6c  20 64 69 67 69 74 20 28  |adecimal digit (|
0006d080  30 2d 46 29 2e 20 49 74  20 72 65 74 75 72 6e 73  |0-F). It returns|
0006d090  20 74 68 65 20 76 61 6c  75 65 20 6f 66 20 74 68  | the value of th|
0006d0a0  69 73 20 28 30 2d 31 35  29 2e 20 2d 31 20 69 73  |is (0-15). -1 is|
0006d0b0  20 72 65 74 75 72 6e 65  64 20 69 66 20 2f 64 69  | returned if /di|
0006d0c0  67 69 74 2f 20 69 73 20  69 6e 76 61 6c 69 64 2e  |git/ is invalid.|
0006d0d0  44 49 52 24 2c 00 00 00  2c 00 00 00 fc d0 06 00  |DIR$,...,.......|
0006d0e0  46 ff ff ff 51 5d 55 26  3a 01 00 00 13 00 00 00  |F...Q]U&:.......|
0006d0f0  00 00 00 00 69 6e 66 6f  00 00 00 00 44 41 54 41  |....info....DATA|
0006d100  3a 01 00 00 6f 62 6a 65  63 74 5f 69 6e 66 6f 0a  |:...object_info.|
0006d110  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
0006d120  69 6e 65 64 20 69 6e 20  3c 54 69 6d 73 4c 69 62  |ined in <TimsLib|
0006d130  3a 46 69 6c 65 2e 68 3d  3e 46 69 6c 65 5f 54 4c  |:File.h=>File_TL|
0006d140  3e 2e 20 49 74 20 63 6f  6e 74 61 69 6e 73 20 69  |>. It contains i|
0006d150  6e 66 6f 72 6d 61 74 69  6f 6e 20 6f 6e 20 61 20  |nformation on a |
0006d160  66 69 6c 65 20 61 73 20  72 65 74 75 72 6e 65 64  |file as returned|
0006d170  20 62 79 20 74 68 65 20  66 75 6e 63 74 69 6f 6e  | by the function|
0006d180  20 3c 52 65 61 64 45 6e  74 72 69 65 73 3e 2e 20  | <ReadEntries>. |
0006d190  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It is defined as|
0006d1a0  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 73  | the following s|
0006d1b0  74 72 75 63 74 75 72 65  3a 0a 0a 20 20 5c 7b 0a  |tructure:..  \{.|
0006d1c0  20 20 20 20 75 6e 73 69  67 6e 65 64 09 6c 6f 61  |    unsigned.loa|
0006d1d0  64 3b 0a 20 20 20 20 75  6e 73 69 67 6e 65 64 09  |d;.    unsigned.|
0006d1e0  65 78 65 63 3b 0a 20 20  20 20 75 6e 73 69 67 6e  |exec;.    unsign|
0006d1f0  65 64 09 6c 65 6e 67 74  68 3b 0a 20 20 20 20 75  |ed.length;.    u|
0006d200  6e 73 69 67 6e 65 64 09  61 74 74 72 3b 0a 20 20  |nsigned.attr;.  |
0006d210  20 20 75 6e 73 69 67 6e  65 64 09 74 79 70 65 3b  |  unsigned.type;|
0006d220  0a 20 20 20 20 63 68 61  72 09 6e 61 6d 65 5b 31  |.    char.name[1|
0006d230  5d 3b 0a 20 20 7d 00 00  44 41 54 41 49 01 00 00  |];.  }..DATAI...|
0006d240  6f 66 66 73 65 74 6f 66  0a 53 79 6e 74 61 78 3a  |offsetof.Syntax:|
0006d250  20 6f 66 66 73 65 74 6f  66 28 74 79 70 65 2c 20  | offsetof(type, |
0006d260  69 64 29 3b 0a 0a 54 68  69 73 20 66 75 6e 63 74  |id);..This funct|
0006d270  69 6f 6e 2d 6c 69 6b 65  20 6d 61 63 72 6f 20 69  |ion-like macro i|
0006d280  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 73 74  |s defined in <st|
0006d290  64 64 65 66 2e 68 3d 3e  73 74 64 64 65 66 3e 20  |ddef.h=>stddef> |
0006d2a0  66 6f 72 20 74 68 65 20  70 75 72 70 6f 73 65 20  |for the purpose |
0006d2b0  6f 66 20 66 69 6e 64 69  6e 67 20 74 68 65 20 6f  |of finding the o|
0006d2c0  66 66 73 65 74 20 69 6e  20 62 79 74 65 73 20 66  |ffset in bytes f|
0006d2d0  72 6f 6d 20 74 68 65 20  62 65 67 69 6e 6e 69 6e  |rom the beginnin|
0006d2e0  67 20 6f 66 20 61 20 73  74 72 75 63 74 75 72 65  |g of a structure|
0006d2f0  20 74 6f 20 6f 6e 65 20  6f 66 20 69 74 73 20 6d  | to one of its m|
0006d300  65 6d 62 65 72 73 2e 20  54 68 65 20 70 61 72 61  |embers. The para|
0006d310  6d 65 74 65 72 73 20 61  72 65 20 2f 74 79 70 65  |meters are /type|
0006d320  2f 2c 20 74 68 65 20 73  74 72 75 63 74 75 72 65  |/, the structure|
0006d330  20 74 79 70 65 20 65 67  2e 20 2f 73 74 72 75 63  | type eg. /struc|
0006d340  74 20 6d 79 73 74 72 75  63 74 2f 20 6f 72 20 2f  |t mystruct/ or /|
0006d350  46 49 4c 45 2f 3b 20 61  6e 64 20 2f 69 64 2f 2c  |FILE/; and /id/,|
0006d360  20 74 68 65 20 6d 65 6d  62 65 72 20 77 69 74 68  | the member with|
0006d370  69 6e 20 74 68 65 20 73  74 72 75 63 74 75 72 65  |in the structure|
0006d380  2e 00 00 00 44 41 54 41  80 02 00 00 6f 73 2e 68  |....DATA....os.h|
0006d390  0a 54 68 65 20 5c 3c 6f  73 2e 68 3e 20 68 65 61  |.The \<os.h> hea|
0006d3a0  64 65 72 20 64 65 63 6c  61 72 65 73 20 66 75 6e  |der declares fun|
0006d3b0  63 74 69 6f 6e 73 20 66  6f 72 20 61 63 63 65 73  |ctions for acces|
0006d3c0  73 69 6e 67 20 4f 70 65  72 61 74 69 6e 67 20 53  |sing Operating S|
0006d3d0  79 73 74 65 6d 20 72 6f  75 74 69 6e 65 73 2e 20  |ystem routines. |
0006d3e0  49 74 20 69 73 20 69 6e  74 65 6e 64 65 64 20 61  |It is intended a|
0006d3f0  73 20 61 6e 20 61 6c 74  65 72 6e 61 74 69 76 65  |s an alternative|
0006d400  20 74 6f 20 5c 3c 6b 65  72 6e 65 6c 2e 68 3e 2e  | to \<kernel.h>.|
0006d410  0a 0a 46 75 6e 63 74 69  6f 6e 73 3a 0a 0a 23 49  |..Functions:..#I|
0006d420  6e 64 65 6e 74 20 31 30  0a 23 54 61 62 6c 65 20  |ndent 10.#Table |
0006d430  33 20 31 32 0a 3c 6f 73  5f 73 77 69 20 3e 0a 3c  |3 12.<os_swi >.<|
0006d440  6f 73 5f 62 79 74 65 3e  0a 3c 6f 73 5f 77 6f 72  |os_byte>.<os_wor|
0006d450  64 3e 0a 3c 6f 73 5f 67  62 70 62 3e 0a 3c 6f 73  |d>.<os_gbpb>.<os|
0006d460  5f 66 69 6c 65 3e 0a 3c  6f 73 5f 61 72 67 73 3e  |_file>.<os_args>|
0006d470  0a 3c 6f 73 5f 66 69 6e  64 3e 0a 3c 6f 73 5f 63  |.<os_find>.<os_c|
0006d480  6c 69 3e 0a 3c 6f 73 5f  72 65 61 64 5f 76 61 72  |li>.<os_read_var|
0006d490  5f 76 61 6c 3e 0a 23 45  6e 64 54 61 62 6c 65 0a  |_val>.#EndTable.|
0006d4a0  0a 23 49 6e 64 65 6e 74  20 30 0a 4d 61 63 72 6f  |.#Indent 0.Macro|
0006d4b0  73 3a 0a 0a 23 49 6e 64  65 6e 74 20 37 0a 23 54  |s:..#Indent 7.#T|
0006d4c0  61 62 6c 65 20 63 6f 6c  75 6d 6e 73 20 34 0a 3c  |able columns 4.<|
0006d4d0  42 4f 4f 4c 3e 0a 3c 54  52 55 45 3e 0a 3c 46 41  |BOOL>.<TRUE>.<FA|
0006d4e0  4c 53 45 3e 0a 3c 4f 53  5f 43 4c 49 3d 3e 6f 73  |LSE>.<OS_CLI=>os|
0006d4f0  5f 6d 61 63 72 6f 73 5f  3e 0a 3c 4f 53 5f 42 79  |_macros_>.<OS_By|
0006d500  74 65 3d 3e 6f 73 5f 6d  61 63 72 6f 73 5f 3e 0a  |te=>os_macros_>.|
0006d510  3c 4f 53 5f 57 6f 72 64  3d 3e 6f 73 5f 6d 61 63  |<OS_Word=>os_mac|
0006d520  72 6f 73 5f 3e 0a 3c 4f  53 5f 46 69 6c 65 3d 3e  |ros_>.<OS_File=>|
0006d530  6f 73 5f 6d 61 63 72 6f  73 5f 3e 0a 3c 4f 53 5f  |os_macros_>.<OS_|
0006d540  41 72 67 73 3d 3e 6f 73  5f 6d 61 63 72 6f 73 5f  |Args=>os_macros_|
0006d550  3e 0a 3c 4f 53 5f 47 42  50 42 3d 3e 6f 73 5f 6d  |>.<OS_GBPB=>os_m|
0006d560  61 63 72 6f 73 5f 3e 0a  3c 4f 53 5f 46 69 6e 64  |acros_>.<OS_Find|
0006d570  3d 3e 6f 73 5f 6d 61 63  72 6f 73 5f 3e 0a 3c 6f  |=>os_macros_>.<o|
0006d580  73 5f 58 3d 3e 6f 73 5f  6d 61 63 72 6f 73 5f 3e  |s_X=>os_macros_>|
0006d590  0a 0a 23 45 6e 64 54 61  62 6c 65 0a 23 49 6e 64  |..#EndTable.#Ind|
0006d5a0  65 6e 74 20 30 0a 0a 54  79 70 65 73 3a 0a 0a 23  |ent 0..Types:..#|
0006d5b0  49 6e 64 65 6e 74 20 37  0a 23 54 61 62 6c 65 20  |Indent 7.#Table |
0006d5c0  63 6f 6c 75 6d 6e 73 20  34 0a 3c 6f 73 5f 72 65  |columns 4.<os_re|
0006d5d0  67 73 65 74 3e 0a 3c 6f  73 5f 65 72 72 6f 72 3e  |gset>.<os_error>|
0006d5e0  0a 3c 6f 73 5f 67 62 70  62 73 74 72 3e 0a 3c 6f  |.<os_gbpbstr>.<o|
0006d5f0  73 5f 66 69 6c 65 73 74  72 3e 0a 23 45 6e 64 54  |s_filestr>.#EndT|
0006d600  61 62 6c 65 44 49 52 24  50 06 00 00 50 06 00 00  |ableDIR$P...P...|
0006d610  54 dc 06 00 46 ff ff ff  4e d6 ee 24 9d 02 00 00  |T...F...N..$....|
0006d620  13 00 00 00 00 00 00 00  61 64 76 61 6c 00 00 00  |........adval...|
0006d630  f4 de 06 00 46 ff ff ff  a7 43 b3 24 40 01 00 00  |....F....C.$@...|
0006d640  13 00 00 00 00 00 00 00  61 72 67 73 00 00 00 00  |........args....|
0006d650  34 e0 06 00 46 ff ff ff  11 fe b2 24 b8 01 00 00  |4...F......$....|
0006d660  13 00 00 00 00 00 00 00  62 79 74 65 00 00 00 00  |........byte....|
0006d670  ec e1 06 00 46 ff ff ff  31 83 3e 25 d5 01 00 00  |....F...1.>%....|
0006d680  13 00 00 00 00 00 00 00  42 79 74 65 5f 00 00 00  |........Byte_...|
0006d690  c4 e3 06 00 46 ff ff ff  d8 33 ed 24 e5 00 00 00  |....F....3.$....|
0006d6a0  13 00 00 00 00 00 00 00  63 69 72 63 6c 65 00 00  |........circle..|
0006d6b0  ac e4 06 00 46 ff ff ff  5c 3d ed 24 f9 00 00 00  |....F...\=.$....|
0006d6c0  13 00 00 00 00 00 00 00  63 69 72 63 6c 65 66 69  |........circlefi|
0006d6d0  6c 6c 00 00 a8 e5 06 00  46 ff ff ff fb 42 ed 24  |ll......F....B.$|
0006d6e0  b1 00 00 00 13 00 00 00  00 00 00 00 63 6c 67 00  |............clg.|
0006d6f0  5c e6 06 00 46 ff ff ff  16 5c b3 24 75 01 00 00  |\...F....\.$u...|
0006d700  13 00 00 00 00 00 00 00  63 6c 69 00 d4 e7 06 00  |........cli.....|
0006d710  46 ff ff ff 2f 46 ed 24  aa 00 00 00 13 00 00 00  |F.../F.$........|
0006d720  00 00 00 00 63 6c 73 00  80 e8 06 00 46 ff ff ff  |....cls.....F...|
0006d730  65 52 ed 24 13 01 00 00  13 00 00 00 00 00 00 00  |eR.$............|
0006d740  63 6f 6c 6f 75 72 00 00  94 e9 06 00 46 ff ff ff  |colour......F...|
0006d750  0c 66 ed 24 26 01 00 00  13 00 00 00 00 00 00 00  |.f.$&...........|
0006d760  63 75 72 73 6f 72 00 00  bc ea 06 00 46 ff ff ff  |cursor......F...|
0006d770  10 72 ed 24 ea 00 00 00  13 00 00 00 00 00 00 00  |.r.$............|
0006d780  64 72 61 77 00 00 00 00  a8 eb 06 00 46 ff ff ff  |draw........F...|
0006d790  f1 79 ed 24 08 01 00 00  13 00 00 00 00 00 00 00  |.y.$............|
0006d7a0  64 72 61 77 62 79 00 00  b0 ec 06 00 46 ff ff ff  |drawby......F...|
0006d7b0  2c bf b3 24 cc 01 00 00  13 00 00 00 00 00 00 00  |,..$............|
0006d7c0  65 72 72 6f 72 00 00 00  7c ee 06 00 46 ff ff ff  |error...|...F...|
0006d7d0  4a 33 b3 24 50 01 00 00  13 00 00 00 00 00 00 00  |J3.$P...........|
0006d7e0  66 69 6c 65 00 00 00 00  cc ef 06 00 46 ff ff ff  |file........F...|
0006d7f0  f3 28 b4 24 ac 02 00 00  13 00 00 00 00 00 00 00  |.(.$............|
0006d800  66 69 6c 65 73 74 72 00  78 f2 06 00 46 ff ff ff  |filestr.x...F...|
0006d810  8b 80 ed 24 b9 00 00 00  13 00 00 00 00 00 00 00  |...$............|
0006d820  66 69 6c 6c 00 00 00 00  34 f3 06 00 46 ff ff ff  |fill....4...F...|
0006d830  34 4f b3 24 4c 01 00 00  13 00 00 00 00 00 00 00  |4O.$L...........|
0006d840  66 69 6e 64 00 00 00 00  80 f4 06 00 46 ff ff ff  |find........F...|
0006d850  df 27 b3 24 50 01 00 00  13 00 00 00 00 00 00 00  |.'.$P...........|
0006d860  67 62 70 62 00 00 00 00  d0 f5 06 00 46 ff ff ff  |gbpb........F...|
0006d870  d5 22 b4 24 41 02 00 00  13 00 00 00 00 00 00 00  |.".$A...........|
0006d880  67 62 70 62 73 74 72 00  14 f8 06 00 46 ff ff ff  |gbpbstr.....F...|
0006d890  d9 a6 ed 24 f9 00 00 00  13 00 00 00 00 00 00 00  |...$............|
0006d8a0  67 63 6f 6c 00 00 00 00  10 f9 06 00 46 ff ff ff  |gcol........F...|
0006d8b0  ba e3 ee 24 7d 01 00 00  13 00 00 00 00 00 00 00  |...$}...........|
0006d8c0  67 65 74 00 90 fa 06 00  46 ff ff ff ff ff ee 24  |get.....F......$|
0006d8d0  73 03 00 00 13 00 00 00  00 00 00 00 69 6e 6b 65  |s...........inke|
0006d8e0  79 00 00 00 04 fe 06 00  46 fd ff ff a4 a5 b3 24  |y.......F......$|
0006d8f0  af 01 00 00 13 00 00 00  00 00 00 00 6d 61 63 72  |............macr|
0006d900  6f 73 5f 00 b4 ff 06 00  46 ff ff ff a6 af ed 24  |os_.....F......$|
0006d910  e5 00 00 00 13 00 00 00  00 00 00 00 6d 6f 64 65  |............mode|
0006d920  00 00 00 00 9c 00 07 00  46 ff ff ff 47 b9 ed 24  |........F...G..$|
0006d930  c3 00 00 00 13 00 00 00  00 00 00 00 6d 6f 76 65  |............move|
0006d940  00 00 00 00 60 01 07 00  46 ff ff ff 24 bf ed 24  |....`...F...$..$|
0006d950  df 00 00 00 13 00 00 00  00 00 00 00 6d 6f 76 65  |............move|
0006d960  62 79 00 00 40 02 07 00  46 ff ff ff 10 c6 ed 24  |by..@...F......$|
0006d970  2a 01 00 00 13 00 00 00  00 00 00 00 6f 72 69 67  |*...........orig|
0006d980  69 6e 00 00 6c 03 07 00  46 ff ff ff 54 f1 ed 24  |in..l...F...T..$|
0006d990  ee 02 00 00 13 00 00 00  00 00 00 00 70 61 6c 65  |............pale|
0006d9a0  74 74 65 00 5c 06 07 00  46 ff ff ff eb 1a ee 24  |tte.\...F......$|
0006d9b0  18 01 00 00 13 00 00 00  00 00 00 00 70 6c 6f 74  |............plot|
0006d9c0  00 00 00 00 74 07 07 00  46 ff ff ff 9a 25 ee 24  |....t...F....%.$|
0006d9d0  07 01 00 00 13 00 00 00  00 00 00 00 70 6f 69 6e  |............poin|
0006d9e0  74 00 00 00 7c 08 07 00  46 ff ff ff f6 29 ee 24  |t...|...F....).$|
0006d9f0  d1 00 00 00 13 00 00 00  00 00 00 00 70 6f 73 00  |............pos.|
0006da00  50 09 07 00 46 ff ff ff  2c 6c b3 24 bc 01 00 00  |P...F...,l.$....|
0006da10  13 00 00 00 00 00 00 00  72 65 61 64 5f 76 61 72  |........read_var|
0006da20  5f 76 61 6c 00 00 00 00  0c 0b 07 00 46 ff ff ff  |_val........F...|
0006da30  68 97 3e 25 32 01 00 00  13 00 00 00 00 00 00 00  |h.>%2...........|
0006da40  52 65 61 64 56 61 72 56  61 6c 00 00 40 0c 07 00  |ReadVarVal..@...|
0006da50  46 ff ff ff 43 3e ee 24  39 01 00 00 13 00 00 00  |F...C>.$9.......|
0006da60  00 00 00 00 72 65 63 74  61 6e 67 6c 65 00 00 00  |....rectangle...|
0006da70  7c 0d 07 00 46 ff ff ff  6a 6a ee 24 47 01 00 00  ||...F...jj.$G...|
0006da80  13 00 00 00 00 00 00 00  72 65 63 74 61 6e 67 6c  |........rectangl|
0006da90  65 66 69 6c 6c 00 00 00  c4 0e 07 00 46 ff ff ff  |efill.......F...|
0006daa0  a9 b4 b3 24 06 01 00 00  13 00 00 00 00 00 00 00  |...$............|
0006dab0  72 65 67 73 65 74 00 00  cc 0f 07 00 46 ff ff ff  |regset......F...|
0006dac0  76 1e ef 24 65 01 00 00  13 00 00 00 00 00 00 00  |v..$e...........|
0006dad0  72 6e 64 00 34 11 07 00  46 ff ff ff 33 2d ef 24  |rnd.4...F...3-.$|
0006dae0  e8 02 00 00 13 00 00 00  00 00 00 00 73 6f 75 6e  |............soun|
0006daf0  64 00 00 00 1c 14 07 00  46 ff ff ff ba 78 b2 24  |d.......F....x.$|
0006db00  09 02 00 00 13 00 00 00  00 00 00 00 73 77 69 00  |............swi.|
0006db10  28 16 07 00 46 fd ff ff  e4 9c b2 24 9c 02 00 00  |(...F......$....|
0006db20  13 00 00 00 00 00 00 00  73 77 69 5f 00 00 00 00  |........swi_....|
0006db30  c4 18 07 00 46 ff ff ff  65 46 ef 24 e6 01 00 00  |....F...eF.$....|
0006db40  13 00 00 00 00 00 00 00  73 77 69 78 00 00 00 00  |........swix....|
0006db50  ac 1a 07 00 46 ff ff ff  c7 75 ee 24 11 01 00 00  |....F....u.$....|
0006db60  13 00 00 00 00 00 00 00  74 61 62 00 c0 1b 07 00  |........tab.....|
0006db70  46 ff ff ff a0 88 ee 24  3c 02 00 00 13 00 00 00  |F......$<.......|
0006db80  00 00 00 00 74 69 6e 74  00 00 00 00 fc 1d 07 00  |....tint........|
0006db90  46 ff ff ff be 99 ee 24  0e 01 00 00 13 00 00 00  |F......$........|
0006dba0  00 00 00 00 76 64 75 00  0c 1f 07 00 46 ff ff ff  |....vdu.....F...|
0006dbb0  bd a1 ee 24 f3 00 00 00  13 00 00 00 00 00 00 00  |...$............|
0006dbc0  76 64 75 71 00 00 00 00  00 20 07 00 46 ff ff ff  |vduq..... ..F...|
0006dbd0  3e ad ee 24 2d 01 00 00  13 00 00 00 00 00 00 00  |>..$-...........|
0006dbe0  76 64 75 77 00 00 00 00  30 21 07 00 46 ff ff ff  |vduw....0!..F...|
0006dbf0  fa b0 ee 24 cd 00 00 00  13 00 00 00 00 00 00 00  |...$............|
0006dc00  76 70 6f 73 00 00 00 00  00 22 07 00 46 ff ff ff  |vpos....."..F...|
0006dc10  32 10 b3 24 1a 02 00 00  13 00 00 00 00 00 00 00  |2..$............|
0006dc20  77 6f 72 64 00 00 00 00  1c 24 07 00 46 ff ff ff  |word.....$..F...|
0006dc30  e9 39 3f 25 70 01 00 00  13 00 00 00 00 00 00 00  |.9?%p...........|
0006dc40  52 65 61 64 4d 6f 64 65  56 61 72 69 61 62 6c 65  |ReadModeVariable|
0006dc50  00 00 00 00 44 41 54 41  9d 02 00 00 6f 73 5f 61  |....DATA....os_a|
0006dc60  64 76 61 6c 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |dval.Syntax:.int|
0006dc70  20 6f 73 5f 61 64 76 61  6c 20 28 69 6e 74 20 62  | os_adval (int b|
0006dc80  75 66 29 3b 0a 48 65 61  64 65 72 3a 09 3c 72 6f  |uf);.Header:.<ro|
0006dc90  73 6c 69 62 2e 68 3d 3e  72 6f 73 6c 69 62 3e 0a  |slib.h=>roslib>.|
0006dca0  0a 52 65 74 75 72 6e 73  3a 09 41 20 76 61 6c 75  |.Returns:.A valu|
0006dcb0  65 2c 20 64 65 70 65 6e  64 69 6e 67 20 6f 6e 20  |e, depending on |
0006dcc0  74 68 65 20 76 61 6c 75  65 20 6f 66 20 2f 62 75  |the value of /bu|
0006dcd0  66 2f 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |f/...This functi|
0006dce0  6f 6e 20 72 65 61 64 73  20 74 68 65 20 63 6f 6e  |on reads the con|
0006dcf0  74 65 6e 74 73 20 61 6e  64 20 73 74 61 74 75 73  |tents and status|
0006dd00  20 6f 66 20 76 61 72 69  6f 75 73 20 62 75 66 66  | of various buff|
0006dd10  65 72 73 2c 20 64 65 70  65 6e 64 69 6e 67 20 6f  |ers, depending o|
0006dd20  6e 20 74 68 65 20 76 61  6c 75 65 20 6f 66 20 2f  |n the value of /|
0006dd30  62 75 66 2f 3a 0a 0a 23  69 6e 64 65 6e 74 20 34  |buf/:..#indent 4|
0006dd40  3b 74 61 62 0a 37 09 58  20 63 6f 6f 72 64 69 6e  |;tab.7.X coordin|
0006dd50  61 74 65 20 6f 66 20 6d  6f 75 73 65 20 28 64 6f  |ate of mouse (do|
0006dd60  20 6e 6f 74 20 75 73 65  29 0a 38 09 59 20 63 6f  | not use).8.Y co|
0006dd70  6f 72 64 69 6e 61 74 65  20 6f 66 20 6d 6f 75 73  |ordinate of mous|
0006dd80  65 20 28 64 6f 20 6e 6f  74 20 75 73 65 29 0a 32  |e (do not use).2|
0006dd90  34 36 09 42 79 74 65 73  20 66 72 65 65 20 69 6e  |46.Bytes free in|
0006dda0  20 6d 6f 75 73 65 20 62  75 66 66 65 72 0a 32 35  | mouse buffer.25|
0006ddb0  32 09 42 79 74 65 73 20  66 72 65 65 20 69 6e 20  |2.Bytes free in |
0006ddc0  70 72 69 6e 74 65 72 20  62 75 66 66 65 72 0a 32  |printer buffer.2|
0006ddd0  35 33 09 42 79 74 65 73  20 66 72 65 65 20 69 6e  |53.Bytes free in|
0006dde0  20 52 53 34 32 33 20 6f  75 74 70 75 74 20 62 75  | RS423 output bu|
0006ddf0  66 66 65 72 0a 32 35 34  09 42 79 74 65 73 20 69  |ffer.254.Bytes i|
0006de00  6e 20 52 53 34 32 33 20  69 6e 70 75 74 20 62 75  |n RS423 input bu|
0006de10  66 66 65 72 0a 32 35 35  09 42 79 74 65 73 20 69  |ffer.255.Bytes i|
0006de20  6e 20 6b 65 79 62 6f 61  72 64 20 62 75 66 66 65  |n keyboard buffe|
0006de30  72 0a 23 69 6e 64 65 6e  74 0a 0a 49 74 20 69 73  |r.#indent..It is|
0006de40  20 72 65 63 6f 6d 6d 65  6e 64 65 64 20 62 79 20  | recommended by |
0006de50  41 63 6f 72 6e 20 74 68  61 74 20 79 6f 75 20 64  |Acorn that you d|
0006de60  6f 20 6e 6f 74 20 75 73  65 20 6f 73 5f 61 64 76  |o not use os_adv|
0006de70  61 6c 20 37 20 61 6e 64  20 38 20 74 6f 20 72 65  |al 7 and 8 to re|
0006de80  61 64 20 74 68 65 20 6d  6f 75 73 65 20 70 6f 73  |ad the mouse pos|
0006de90  69 74 69 6f 6e 2c 20 62  75 74 20 63 61 6c 6c 20  |ition, but call |
0006dea0  74 68 65 20 4f 53 5f 4d  6f 75 73 65 20 53 57 49  |the OS_Mouse SWI|
0006deb0  20 69 6e 73 74 65 61 64  2e 0a 0a 54 68 69 73 20  | instead...This |
0006dec0  63 61 6c 6c 20 69 73 20  65 71 75 69 76 61 6c 65  |call is equivale|
0006ded0  6e 74 20 74 6f 20 3c 4f  53 5f 42 79 74 65 3d 3e  |nt to <OS_Byte=>|
0006dee0  53 57 49 3a 4f 53 5f 42  79 74 65 3e 20 31 32 38  |SWI:OS_Byte> 128|
0006def0  2e 00 00 00 44 41 54 41  40 01 00 00 6f 73 5f 61  |....DATA@...os_a|
0006df00  72 67 73 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |rgs.Syntax:.<os_|
0006df10  65 72 72 6f 72 3e 20 2a  6f 73 5f 61 72 67 73 20  |error> *os_args |
0006df20  28 3c 6f 73 5f 72 65 67  73 65 74 3e 20 2a 72 29  |(<os_regset> *r)|
0006df30  3b 0a 48 65 61 64 65 72  3a 09 3c 72 6f 73 6c 69  |;.Header:.<rosli|
0006df40  62 2e 68 3d 3e 72 6f 73  6c 69 62 3e 09 28 45 61  |b.h=>roslib>.(Ea|
0006df50  73 79 20 43 29 0a 09 3c  6f 73 2e 68 3d 3e 6f 73  |sy C)..<os.h=>os|
0006df60  3e 09 28 44 65 73 6b 74  6f 70 20 43 29 0a 0a 52  |>.(Desktop C)..R|
0006df70  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
0006df80  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
0006df90  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
0006dfa0  69 73 20 66 75 6e 63 74  69 6f 6e 20 63 61 6c 6c  |is function call|
0006dfb0  73 20 74 68 65 20 3c 4f  53 5f 41 72 67 73 3d 3e  |s the <OS_Args=>|
0006dfc0  53 57 49 3a 4f 53 5f 41  72 67 73 3e 20 53 57 49  |SWI:OS_Args> SWI|
0006dfd0  20 77 68 69 63 68 20 70  65 72 66 6f 72 6d 73 20  | which performs |
0006dfe0  76 61 72 69 6f 75 73 20  66 75 6e 63 74 69 6f 6e  |various function|
0006dff0  73 2e 20 54 68 65 20 72  65 67 69 73 74 65 72 73  |s. The registers|
0006e000  20 52 30 2d 52 39 20 61  72 65 20 73 65 74 20 74  | R0-R9 are set t|
0006e010  6f 20 74 68 65 20 76 61  6c 75 65 73 20 69 6e 20  |o the values in |
0006e020  2f 72 2f 20 62 65 66 6f  72 65 20 74 68 65 20 63  |/r/ before the c|
0006e030  61 6c 6c 2e 44 41 54 41  b8 01 00 00 6f 73 5f 62  |all.DATA....os_b|
0006e040  79 74 65 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |yte.Syntax:.<os_|
0006e050  65 72 72 6f 72 3e 20 2a  6f 73 5f 62 79 74 65 20  |error> *os_byte |
0006e060  28 69 6e 74 20 72 30 2c  20 69 6e 74 20 2a 72 31  |(int r0, int *r1|
0006e070  2c 20 69 6e 74 20 2a 72  32 29 3b 0a 48 65 61 64  |, int *r2);.Head|
0006e080  65 72 3a 09 3c 72 6f 73  6c 69 62 2e 68 3d 3e 72  |er:.<roslib.h=>r|
0006e090  6f 73 6c 69 62 3e 09 28  45 61 73 79 20 43 29 0a  |oslib>.(Easy C).|
0006e0a0  09 3c 6f 73 2e 68 3d 3e  6f 73 2e 68 3e 09 28 44  |.<os.h=>os.h>.(D|
0006e0b0  65 73 6b 74 6f 70 20 43  29 0a 0a 52 65 74 75 72  |esktop C)..Retur|
0006e0c0  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
0006e0d0  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
0006e0e0  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
0006e0f0  75 6e 63 74 69 6f 6e 20  63 61 6c 6c 73 20 74 68  |unction calls th|
0006e100  65 20 3c 4f 53 5f 42 79  74 65 3d 3e 53 57 49 3a  |e <OS_Byte=>SWI:|
0006e110  4f 53 5f 42 79 74 65 3e  20 53 57 49 20 77 69 74  |OS_Byte> SWI wit|
0006e120  68 20 74 68 65 20 72 65  67 69 73 74 65 72 20 52  |h the register R|
0006e130  30 20 73 65 74 20 74 6f  20 74 68 65 20 76 61 6c  |0 set to the val|
0006e140  75 65 20 70 61 73 73 65  64 20 69 6e 20 72 30 2c  |ue passed in r0,|
0006e150  20 61 6e 64 20 72 65 67  69 73 74 65 72 73 20 52  | and registers R|
0006e160  31 20 61 6e 64 20 52 32  20 73 65 74 20 74 6f 20  |1 and R2 set to |
0006e170  74 68 65 20 76 61 6c 75  65 73 20 70 6f 69 6e 74  |the values point|
0006e180  65 64 20 74 6f 20 62 79  20 7b 2f 7d 72 31 7b 2f  |ed to by {/}r1{/|
0006e190  7d 20 61 6e 64 20 7b 2f  7d 72 32 7b 2f 7d 2e 20  |} and {/}r2{/}. |
0006e1a0  56 61 6c 75 65 73 20 6d  61 79 20 61 6c 73 6f 20  |Values may also |
0006e1b0  62 65 20 72 65 74 75 72  6e 65 64 20 69 6e 20 74  |be returned in t|
0006e1c0  68 65 20 69 6e 74 73 20  70 6f 69 6e 74 65 64 20  |he ints pointed |
0006e1d0  74 6f 20 62 79 20 7b 2f  7d 72 31 7b 2f 7d 20 61  |to by {/}r1{/} a|
0006e1e0  6e 64 20 7b 2f 7d 72 32  7b 2f 7d 2e 44 41 54 41  |nd {/}r2{/}.DATA|
0006e1f0  d5 01 00 00 4f 53 5f 42  79 74 65 0a 53 79 6e 74  |....OS_Byte.Synt|
0006e200  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
0006e210  4f 53 5f 42 79 74 65 20  28 3c 6f 73 62 79 74 65  |OS_Byte (<osbyte|
0006e220  5f 6e 75 6d 62 65 72 3e  20 72 30 2c 20 69 6e 74  |_number> r0, int|
0006e230  20 72 31 69 6e 2c 20 69  6e 74 20 72 32 69 6e 2c  | r1in, int r2in,|
0006e240  20 69 6e 74 20 2a 72 31  6f 75 74 2c 20 69 6e 74  | int *r1out, int|
0006e250  20 2a 72 32 6f 75 74 29  3b 0a 48 65 61 64 65 72  | *r2out);.Header|
0006e260  3a 09 3c 44 65 73 6b 4c  69 62 3a 4b 65 72 6e 65  |:.<DeskLib:Kerne|
0006e270  6c 53 57 49 73 2e 68 3d  3e 4b 65 72 6e 65 6c 53  |lSWIs.h=>KernelS|
0006e280  57 49 73 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |WIs>..Returns:.P|
0006e290  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
0006e2a0  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
0006e2b0  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
0006e2c0  6f 6e 20 63 61 6c 6c 73  20 74 68 65 20 3c 4f 53  |on calls the <OS|
0006e2d0  5f 42 79 74 65 3d 3e 53  57 49 3a 4f 53 5f 42 79  |_Byte=>SWI:OS_By|
0006e2e0  74 65 3e 20 53 57 49 20  77 69 74 68 20 74 68 65  |te> SWI with the|
0006e2f0  20 72 65 67 69 73 74 65  72 20 52 30 20 73 65 74  | register R0 set|
0006e300  20 74 68 65 20 74 68 65  20 76 61 6c 75 65 20 70  | the the value p|
0006e310  61 73 73 65 64 20 69 6e  20 7b 2f 7d 72 30 7b 2f  |assed in {/}r0{/|
0006e320  7d 2c 20 61 6e 64 20 72  65 67 69 73 74 65 72 73  |}, and registers|
0006e330  20 52 31 20 61 6e 64 20  52 32 20 73 65 74 20 74  | R1 and R2 set t|
0006e340  6f 20 74 68 65 20 76 61  6c 75 65 73 20 70 61 73  |o the values pas|
0006e350  73 65 64 20 69 6e 20 7b  2f 7d 72 31 69 6e 7b 2f  |sed in {/}r1in{/|
0006e360  7d 20 61 6e 64 20 7b 2f  7d 72 32 69 6e 7b 2f 7d  |} and {/}r2in{/}|
0006e370  2e 20 56 61 6c 75 65 73  20 6d 61 79 20 62 65 20  |. Values may be |
0006e380  72 65 74 75 72 6e 65 64  20 69 6e 20 74 68 65 20  |returned in the |
0006e390  2f 69 6e 74 73 2f 20 70  6f 69 6e 74 65 64 20 74  |/ints/ pointed t|
0006e3a0  6f 20 62 79 20 7b 2f 7d  72 31 6f 75 74 7b 2f 7d  |o by {/}r1out{/}|
0006e3b0  20 61 6e 64 20 7b 2f 7d  72 32 6f 75 74 7b 2f 7d  | and {/}r2out{/}|
0006e3c0  2e 00 00 00 44 41 54 41  e5 00 00 00 6f 73 5f 63  |....DATA....os_c|
0006e3d0  69 72 63 6c 65 0a 53 79  6e 74 61 78 3a 09 76 6f  |ircle.Syntax:.vo|
0006e3e0  69 64 20 6f 73 5f 63 69  72 63 6c 65 20 28 69 6e  |id os_circle (in|
0006e3f0  74 20 78 2c 20 69 6e 74  20 79 2c 20 69 6e 74 20  |t x, int y, int |
0006e400  72 29 3b 0a 48 65 61 64  65 72 3a 09 3c 72 6f 73  |r);.Header:.<ros|
0006e410  6c 69 62 2e 68 3d 3e 72  6f 73 6c 69 62 3e 0a 0a  |lib.h=>roslib>..|
0006e420  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 64 72  |This function dr|
0006e430  61 77 73 20 61 20 63 69  72 63 6c 65 20 77 69 74  |aws a circle wit|
0006e440  68 20 63 65 6e 74 72 65  20 61 74 20 73 63 72 65  |h centre at scre|
0006e450  65 6e 20 63 6f 6f 72 64  69 6e 61 74 65 73 20 7b  |en coordinates {|
0006e460  2f 7d 28 78 2c 79 29 7b  2f 7d 20 61 6e 64 20 72  |/}(x,y){/} and r|
0006e470  61 64 69 75 73 20 2f 72  2f 2e 20 45 71 75 69 76  |adius /r/. Equiv|
0006e480  61 6c 65 6e 74 20 74 6f  20 3c 43 49 52 43 4c 45  |alent to <CIRCLE|
0006e490  3d 3e 42 61 73 69 63 3a  43 49 52 43 4c 45 3e 20  |=>Basic:CIRCLE> |
0006e4a0  69 6e 20 42 61 73 69 63  2e 00 00 00 44 41 54 41  |in Basic....DATA|
0006e4b0  f9 00 00 00 6f 73 5f 63  69 72 63 6c 65 66 69 6c  |....os_circlefil|
0006e4c0  6c 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 6f  |l.Syntax:.void o|
0006e4d0  73 5f 63 69 72 63 6c 65  66 69 6c 6c 20 28 69 6e  |s_circlefill (in|
0006e4e0  74 20 78 2c 20 69 6e 74  20 79 2c 20 69 6e 74 20  |t x, int y, int |
0006e4f0  72 29 3b 0a 48 65 61 64  65 72 3a 09 3c 72 6f 73  |r);.Header:.<ros|
0006e500  6c 69 62 2e 68 3d 3e 72  6f 73 6c 69 62 3e 0a 0a  |lib.h=>roslib>..|
0006e510  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 64 72  |This function dr|
0006e520  61 77 73 20 61 20 66 69  6c 6c 65 64 20 63 69 72  |aws a filled cir|
0006e530  63 6c 65 20 77 69 74 68  20 63 65 6e 74 72 65 20  |cle with centre |
0006e540  61 74 20 73 63 72 65 65  6e 20 63 6f 6f 72 64 69  |at screen coordi|
0006e550  6e 61 74 65 73 20 7b 2f  7d 28 78 2c 79 29 7b 2f  |nates {/}(x,y){/|
0006e560  7d 20 61 6e 64 20 72 61  64 69 75 73 20 2f 72 2f  |} and radius /r/|
0006e570  2e 20 45 71 75 69 76 61  6c 65 6e 74 20 74 6f 20  |. Equivalent to |
0006e580  3c 43 49 52 43 4c 45 20  46 49 4c 4c 3d 3e 42 61  |<CIRCLE FILL=>Ba|
0006e590  73 69 63 3a 43 49 52 43  4c 45 3e 20 69 6e 20 42  |sic:CIRCLE> in B|
0006e5a0  61 73 69 63 2e 00 00 00  44 41 54 41 b1 00 00 00  |asic....DATA....|
0006e5b0  6f 73 5f 63 6c 67 0a 53  79 6e 74 61 78 3a 09 76  |os_clg.Syntax:.v|
0006e5c0  6f 69 64 20 6f 73 5f 63  6c 67 20 28 76 6f 69 64  |oid os_clg (void|
0006e5d0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 72 6f 73 6c  |);.Header:.<rosl|
0006e5e0  69 62 2e 68 3d 3e 72 6f  73 6c 69 62 3e 0a 0a 54  |ib.h=>roslib>..T|
0006e5f0  68 69 73 20 66 75 6e 63  74 69 6f 6e 73 20 63 6c  |his functions cl|
0006e600  65 61 72 73 20 74 68 65  20 67 72 61 70 68 69 63  |ears the graphic|
0006e610  73 20 77 69 6e 64 6f 77  20 74 6f 20 74 68 65 20  |s window to the |
0006e620  63 75 72 72 65 6e 74 20  62 61 63 6b 67 72 6f 75  |current backgrou|
0006e630  6e 64 20 67 72 61 70 68  69 63 73 20 63 6f 6c 6f  |nd graphics colo|
0006e640  75 72 20 28 73 65 74 20  75 73 69 6e 67 20 3c 6f  |ur (set using <o|
0006e650  73 5f 67 63 6f 6c 3e 29  2e 00 00 00 44 41 54 41  |s_gcol>)....DATA|
0006e660  75 01 00 00 6f 73 5f 63  6c 69 0a 53 79 6e 74 61  |u...os_cli.Synta|
0006e670  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 6f  |x:.<os_error> *o|
0006e680  73 5f 63 6c 69 20 28 63  68 61 72 20 2a 63 6f 6d  |s_cli (char *com|
0006e690  6d 61 6e 64 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |mand);.Header:.<|
0006e6a0  72 6f 73 6c 69 62 2e 68  3d 3e 72 6f 73 6c 69 62  |roslib.h=>roslib|
0006e6b0  3e 09 28 45 61 73 79 20  43 29 0a 09 3c 6f 73 2e  |>.(Easy C)..<os.|
0006e6c0  68 3d 3e 6f 73 3e 09 28  44 65 73 6b 74 6f 70 20  |h=>os>.(Desktop |
0006e6d0  43 29 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |C)..Returns:.Poi|
0006e6e0  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
0006e6f0  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
0006e700  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
0006e710  73 20 70 61 73 73 65 73  20 74 68 65 20 73 74 72  |s passes the str|
0006e720  69 6e 67 20 67 69 76 65  6e 20 74 6f 20 74 68 65  |ing given to the|
0006e730  20 6f 70 65 72 61 74 69  6e 67 20 73 79 73 74 65  | operating syste|
0006e740  6d 20 43 4c 49 20 74 6f  20 62 65 20 65 78 65 63  |m CLI to be exec|
0006e750  75 74 65 64 20 61 73 20  69 66 20 69 74 20 68 61  |uted as if it ha|
0006e760  64 20 62 65 65 6e 20 74  79 70 65 64 20 69 6e 20  |d been typed in |
0006e770  61 73 20 61 20 22 73 74  61 72 20 63 6f 6d 6d 61  |as a "star comma|
0006e780  6e 64 22 2e 20 46 6f 72  20 69 6e 73 74 61 6e 63  |nd". For instanc|
0006e790  65 2c 20 7b 66 43 6f 64  65 7d 6f 73 5f 63 6c 69  |e, {fCode}os_cli|
0006e7a0  28 22 4d 6f 64 75 6c 65  73 22 29 7b 66 7d 20 68  |("Modules"){f} h|
0006e7b0  61 73 20 74 68 65 20 73  61 6d 65 20 65 66 66 65  |as the same effe|
0006e7c0  63 74 20 61 73 20 3c 2a  4d 6f 64 75 6c 65 73 3e  |ct as <*Modules>|
0006e7d0  2e 00 00 00 44 41 54 41  aa 00 00 00 6f 73 5f 63  |....DATA....os_c|
0006e7e0  6c 73 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |ls.Syntax:.void |
0006e7f0  6f 73 5f 63 6c 73 20 28  76 6f 69 64 29 3b 0a 48  |os_cls (void);.H|
0006e800  65 61 64 65 72 3a 09 3c  72 6f 73 6c 69 62 2e 68  |eader:.<roslib.h|
0006e810  3d 3e 72 6f 73 6c 69 62  3e 0a 0a 54 68 69 73 20  |=>roslib>..This |
0006e820  66 75 6e 63 74 69 6f 6e  20 63 6c 65 61 72 73 20  |function clears |
0006e830  74 68 65 20 74 65 78 74  20 77 69 6e 64 6f 77 20  |the text window |
0006e840  74 6f 20 74 68 65 20 63  75 72 72 65 6e 74 20 62  |to the current b|
0006e850  61 63 6b 67 72 6f 75 6e  64 20 74 65 78 74 20 63  |ackground text c|
0006e860  6f 6c 6f 75 72 20 28 73  65 74 20 75 73 69 6e 67  |olour (set using|
0006e870  20 3c 6f 73 5f 63 6f 6c  6f 75 72 3e 29 2e 00 00  | <os_colour>)...|
0006e880  44 41 54 41 13 01 00 00  6f 73 5f 63 6f 6c 6f 75  |DATA....os_colou|
0006e890  72 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 6f  |r.Syntax:.void o|
0006e8a0  73 5f 63 6f 6c 6f 75 72  20 28 69 6e 74 20 63 29  |s_colour (int c)|
0006e8b0  3b 0a 48 65 61 64 65 72  3a 09 3c 72 6f 73 6c 69  |;.Header:.<rosli|
0006e8c0  62 2e 68 3d 3e 72 6f 73  6c 69 62 3e 0a 0a 54 68  |b.h=>roslib>..Th|
0006e8d0  69 73 20 66 75 6e 63 74  69 6f 6e 20 73 65 74 73  |is function sets|
0006e8e0  20 74 68 65 20 63 75 72  72 65 6e 74 20 74 65 78  | the current tex|
0006e8f0  74 20 63 6f 6c 6f 75 72  20 74 6f 20 74 68 65 20  |t colour to the |
0006e900  76 61 6c 75 65 20 69 6e  20 2f 63 2f 2e 20 46 6f  |value in /c/. Fo|
0006e910  72 20 2f 63 2f 20 5c 3c  20 31 32 37 20 74 68 69  |r /c/ \< 127 thi|
0006e920  73 20 61 6c 74 65 72 73  20 74 68 65 20 74 65 78  |s alters the tex|
0006e930  74 20 66 6f 72 65 67 72  6f 75 6e 64 20 63 6f 6c  |t foreground col|
0006e940  6f 75 72 20 74 6f 20 2f  63 2f 2c 20 61 6e 64 20  |our to /c/, and |
0006e950  66 6f 72 20 2f 63 2f 20  5c 3e 20 31 32 37 20 74  |for /c/ \> 127 t|
0006e960  68 69 73 20 61 6c 74 65  72 73 20 74 68 65 20 74  |his alters the t|
0006e970  65 78 74 20 62 61 63 6b  67 72 6f 75 6e 64 20 63  |ext background c|
0006e980  6f 6c 6f 75 72 20 74 6f  20 2f 63 2f 20 2d 20 31  |olour to /c/ - 1|
0006e990  32 38 2e 00 44 41 54 41  26 01 00 00 6f 73 5f 63  |28..DATA&...os_c|
0006e9a0  75 72 73 6f 72 0a 53 79  6e 74 61 78 3a 09 76 6f  |ursor.Syntax:.vo|
0006e9b0  69 64 20 6f 73 5f 63 75  72 73 6f 72 20 28 69 6e  |id os_cursor (in|
0006e9c0  74 20 6e 29 3b 0a 48 65  61 64 65 72 3a 09 3c 72  |t n);.Header:.<r|
0006e9d0  6f 73 6c 69 62 2e 68 3d  3e 72 6f 73 6c 69 62 3e  |oslib.h=>roslib>|
0006e9e0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0006e9f0  63 68 61 6e 67 65 73 20  74 68 65 20 61 70 70 65  |changes the appe|
0006ea00  61 72 61 6e 63 65 20 6f  66 20 74 68 65 20 74 65  |arance of the te|
0006ea10  78 74 20 63 75 72 73 6f  72 20 64 65 70 65 6e 64  |xt cursor depend|
0006ea20  69 6e 67 20 6f 6e 20 2f  6e 2f 2e 20 50 6f 73 73  |ing on /n/. Poss|
0006ea30  69 62 6c 65 20 76 61 6c  75 65 73 20 61 72 65 3a  |ible values are:|
0006ea40  0a 0a 23 69 6e 64 65 6e  74 20 32 3b 74 61 62 0a  |..#indent 2;tab.|
0006ea50  30 09 48 69 64 65 20 63  75 72 73 6f 72 0a 31 09  |0.Hide cursor.1.|
0006ea60  53 68 6f 77 20 63 75 72  73 6f 72 0a 32 09 53 74  |Show cursor.2.St|
0006ea70  65 61 64 79 20 63 75 72  73 6f 72 0a 33 09 46 6c  |eady cursor.3.Fl|
0006ea80  61 73 68 69 6e 67 20 63  75 72 73 6f 72 7b 69 6e  |ashing cursor{in|
0006ea90  64 65 6e 74 7d 0a 0a 45  71 75 69 76 61 6c 65 6e  |dent}..Equivalen|
0006eaa0  74 20 74 6f 20 3c 56 44  55 20 32 33 2c 31 3d 3e  |t to <VDU 23,1=>|
0006eab0  56 44 55 3a 32 33 2c 31  3e 2e 00 00 44 41 54 41  |VDU:23,1>...DATA|
0006eac0  ea 00 00 00 6f 73 5f 64  72 61 77 0a 53 79 6e 74  |....os_draw.Synt|
0006ead0  61 78 3a 09 76 6f 69 64  20 6f 73 5f 64 72 61 77  |ax:.void os_draw|
0006eae0  20 28 69 6e 74 20 78 2c  20 69 6e 74 20 79 29 3b  | (int x, int y);|
0006eaf0  0a 48 65 61 64 65 72 3a  09 3c 72 6f 73 6c 69 62  |.Header:.<roslib|
0006eb00  2e 68 3d 3e 72 6f 73 6c  69 62 3e 0a 0a 54 68 69  |.h=>roslib>..Thi|
0006eb10  73 20 66 75 6e 63 74 69  6f 6e 20 64 72 61 77 73  |s function draws|
0006eb20  20 61 20 6c 69 6e 65 20  69 6e 20 74 68 65 20 63  | a line in the c|
0006eb30  75 72 72 65 6e 74 20 66  6f 72 65 67 72 6f 75 6e  |urrent foregroun|
0006eb40  64 20 67 72 61 70 68 69  63 73 20 63 6f 6c 6f 75  |d graphics colou|
0006eb50  72 20 66 72 6f 6d 20 74  68 65 20 63 75 72 72 65  |r from the curre|
0006eb60  6e 74 20 70 6f 73 69 74  69 6f 6e 20 74 6f 20 7b  |nt position to {|
0006eb70  2f 7d 28 78 2c 79 29 7b  2f 7d 2e 20 45 71 75 69  |/}(x,y){/}. Equi|
0006eb80  76 61 6c 65 6e 74 20 74  6f 20 3c 44 52 41 57 3d  |valent to <DRAW=|
0006eb90  3e 42 61 73 69 63 3a 44  52 41 57 3e 20 69 6e 20  |>Basic:DRAW> in |
0006eba0  42 61 73 69 63 2e 00 00  44 41 54 41 08 01 00 00  |Basic...DATA....|
0006ebb0  6f 73 5f 64 72 61 77 62  79 0a 53 79 6e 74 61 78  |os_drawby.Syntax|
0006ebc0  3a 09 76 6f 69 64 20 6f  73 5f 64 72 61 77 62 79  |:.void os_drawby|
0006ebd0  20 28 69 6e 74 20 78 2c  20 69 6e 74 20 79 29 3b  | (int x, int y);|
0006ebe0  0a 48 65 61 64 65 72 3a  09 3c 72 6f 73 6c 69 62  |.Header:.<roslib|
0006ebf0  2e 68 3d 3e 72 6f 73 6c  69 62 3e 0a 0a 54 68 69  |.h=>roslib>..Thi|
0006ec00  73 20 66 75 6e 63 74 69  6f 6e 20 64 72 61 77 73  |s function draws|
0006ec10  20 61 20 6c 69 6e 65 20  69 6e 20 74 68 65 20 63  | a line in the c|
0006ec20  75 72 72 65 6e 74 20 66  6f 72 65 67 72 6f 75 6e  |urrent foregroun|
0006ec30  64 20 67 72 61 70 68 69  63 73 20 63 6f 6c 6f 75  |d graphics colou|
0006ec40  72 20 66 72 6f 6d 20 74  68 65 20 63 75 72 72 65  |r from the curre|
0006ec50  6e 74 20 70 6f 73 69 74  69 6f 6e 20 72 65 6c 61  |nt position rela|
0006ec60  74 69 76 65 6c 79 20 62  79 20 7b 2f 7d 28 78 2c  |tively by {/}(x,|
0006ec70  79 29 7b 2f 7d 20 63 6f  6f 72 64 69 6e 61 74 65  |y){/} coordinate|
0006ec80  73 2e 20 45 71 75 69 76  61 6c 65 6e 74 20 74 6f  |s. Equivalent to|
0006ec90  20 3c 44 52 41 57 20 42  59 3d 3e 42 61 73 69 63  | <DRAW BY=>Basic|
0006eca0  3a 44 52 41 57 3e 20 69  6e 20 42 61 73 69 63 2e  |:DRAW> in Basic.|
0006ecb0  44 41 54 41 cc 01 00 00  6f 73 5f 65 72 72 6f 72  |DATA....os_error|
0006ecc0  0a 54 68 65 20 74 79 70  65 20 7b 2a 7d 6f 73 5f  |.The type {*}os_|
0006ecd0  65 72 72 6f 72 7b 2a 7d  20 69 73 20 64 65 66 69  |error{*} is defi|
0006ece0  6e 65 64 20 69 6e 20 3c  72 6f 73 6c 69 62 2e 68  |ned in <roslib.h|
0006ecf0  3d 3e 72 6f 73 6c 69 62  3e 20 28 45 61 73 79 0a  |=>roslib> (Easy.|
0006ed00  43 29 2c 20 3c 6f 73 2e  68 3d 3e 6f 73 3e 20 28  |C), <os.h=>os> (|
0006ed10  44 65 73 6b 74 6f 70 20  43 29 20 61 6e 64 20 3c  |Desktop C) and <|
0006ed20  44 65 73 6b 4c 69 62 3a  43 6f 72 65 2e 68 3d 3e  |DeskLib:Core.h=>|
0006ed30  43 6f 72 65 3e 20 61 73  20 61 6e 0a 6f 62 6a 65  |Core> as an.obje|
0006ed40  63 74 20 68 6f 6c 64 69  6e 67 20 61 20 73 74 61  |ct holding a sta|
0006ed50  6e 64 61 72 64 20 52 49  53 43 20 4f 53 20 65 72  |ndard RISC OS er|
0006ed60  72 6f 72 20 62 6c 6f 63  6b 2e 0a 49 74 20 69 73  |ror block..It is|
0006ed70  20 64 65 66 69 6e 65 64  20 61 73 20 74 68 65 20  | defined as the |
0006ed80  66 6f 6c 6c 6f 77 69 6e  67 20 73 74 72 75 63 74  |following struct|
0006ed90  75 72 65 20 69 6e 0a 72  6f 73 6c 69 62 2e 68 3a  |ure in.roslib.h:|
0006eda0  0a 0a 5c 7b 0a 20 20 20  20 69 6e 74 20 65 72 72  |..\{.    int err|
0006edb0  6e 75 6d 3b 09 2f 2a 20  45 72 72 6f 72 20 6e 75  |num;./* Error nu|
0006edc0  6d 62 65 72 20 20 2a 2f  0a 20 20 20 20 63 68 61  |mber  */.    cha|
0006edd0  72 20 65 72 72 6d 65 73  73 5b 32 35 35 5d 3b 09  |r errmess[255];.|
0006ede0  2f 2a 20 45 72 72 6f 72  20 6d 65 73 73 61 67 65  |/* Error message|
0006edf0  20 2a 2f 0a 7d 0a 0a 61  6e 64 20 69 6e 20 6f 73  | */.}..and in os|
0006ee00  2e 68 20 61 6e 64 20 44  65 73 6b 4c 69 62 3a 43  |.h and DeskLib:C|
0006ee10  6f 72 65 2e 68 20 69 74  20 69 73 20 64 65 66 69  |ore.h it is defi|
0006ee20  6e 65 64 20 61 73 3a 0a  0a 5c 7b 0a 20 20 20 20  |ned as:..\{.    |
0006ee30  69 6e 74 20 65 72 72 6e  75 6d 3b 09 2f 2a 20 45  |int errnum;./* E|
0006ee40  72 72 6f 72 20 6e 75 6d  62 65 72 20 20 2a 2f 0a  |rror number  */.|
0006ee50  20 20 20 20 63 68 61 72  20 65 72 72 6d 65 73 73  |    char errmess|
0006ee60  5b 32 35 32 5d 3b 09 2f  2a 20 45 72 72 6f 72 20  |[252];./* Error |
0006ee70  6d 65 73 73 61 67 65 20  2a 2f 0a 7d 44 41 54 41  |message */.}DATA|
0006ee80  50 01 00 00 6f 73 5f 66  69 6c 65 0a 53 79 6e 74  |P...os_file.Synt|
0006ee90  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
0006eea0  6f 73 5f 66 69 6c 65 20  28 3c 6f 73 5f 66 69 6c  |os_file (<os_fil|
0006eeb0  65 73 74 72 3e 20 2a 62  6c 6b 29 3b 0a 48 65 61  |estr> *blk);.Hea|
0006eec0  64 65 72 3a 09 3c 72 6f  73 6c 69 62 2e 68 3d 3e  |der:.<roslib.h=>|
0006eed0  72 6f 73 6c 69 62 3e 09  28 45 61 73 79 20 43 29  |roslib>.(Easy C)|
0006eee0  0a 09 3c 6f 73 2e 68 3d  3e 6f 73 3e 09 28 44 65  |..<os.h=>os>.(De|
0006eef0  73 6b 74 6f 70 20 43 29  0a 0a 52 65 74 75 72 6e  |sktop C)..Return|
0006ef00  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
0006ef10  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
0006ef20  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
0006ef30  6e 63 74 69 6f 6e 20 63  61 6c 6c 73 20 74 68 65  |nction calls the|
0006ef40  20 3c 4f 53 5f 46 69 6c  65 3d 3e 53 57 49 3a 4f  | <OS_File=>SWI:O|
0006ef50  53 5f 46 69 6c 65 3e 20  53 57 49 20 77 68 69 63  |S_File> SWI whic|
0006ef60  68 20 70 65 72 66 6f 72  6d 73 20 76 61 72 69 6f  |h performs vario|
0006ef70  75 73 20 66 75 6e 63 74  69 6f 6e 73 20 6f 6e 20  |us functions on |
0006ef80  77 68 6f 6c 65 20 66 69  6c 65 73 2e 20 54 68 65  |whole files. The|
0006ef90  20 70 61 72 61 6d 65 74  65 72 73 20 66 6f 72 20  | parameters for |
0006efa0  74 68 65 20 63 61 6c 6c  20 61 72 65 20 73 65 74  |the call are set|
0006efb0  20 66 72 6f 6d 20 61 6e  64 20 72 65 74 75 72 6e  | from and return|
0006efc0  65 64 20 69 6e 20 2f 62  6c 6b 2f 2e 44 41 54 41  |ed in /blk/.DATA|
0006efd0  ac 02 00 00 6f 73 5f 66  69 6c 65 73 74 72 0a 54  |....os_filestr.T|
0006efe0  68 65 20 74 79 70 65 20  6f 73 5f 66 69 6c 65 73  |he type os_files|
0006eff0  74 72 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |tr is defined in|
0006f000  20 3c 72 6f 73 6c 69 62  2e 68 3d 3e 72 6f 73 6c  | <roslib.h=>rosl|
0006f010  69 62 3e 20 28 45 61 73  79 20 43 29 20 61 6e 64  |ib> (Easy C) and|
0006f020  20 3c 6f 73 2e 68 3d 3e  6f 73 3e 20 28 44 65 73  | <os.h=>os> (Des|
0006f030  6b 74 6f 70 20 43 29 20  61 73 20 61 6e 20 6f 62  |ktop C) as an ob|
0006f040  6a 65 63 74 20 68 6f 6c  64 69 6e 67 20 69 6e 66  |ject holding inf|
0006f050  6f 72 6d 61 74 69 6f 6e  20 74 6f 20 62 65 20 70  |ormation to be p|
0006f060  61 73 73 65 64 20 74 6f  20 74 68 65 20 66 75 6e  |assed to the fun|
0006f070  63 74 69 6f 6e 20 3c 6f  73 5f 66 69 6c 65 3e 2e  |ction <os_file>.|
0006f080  20 49 74 20 69 73 20 64  65 66 69 6e 65 64 20 61  | It is defined a|
0006f090  73 20 74 68 65 20 66 6f  6c 6c 6f 77 69 6e 67 20  |s the following |
0006f0a0  73 74 72 75 63 74 75 72  65 3a 0a 0a 23 69 6e 64  |structure:..#ind|
0006f0b0  65 6e 74 20 31 30 0a 23  74 61 62 6c 65 20 63 6f  |ent 10.#table co|
0006f0c0  6c 75 6d 6e 73 20 32 0a  45 61 73 79 20 43 3a 20  |lumns 2.Easy C: |
0006f0d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0006f0e0  20 0a 5c 7b 20 20 20 20  20 20 20 20 20 20 20 20  | .\{            |
0006f0f0  20 20 20 20 20 20 20 20  20 20 20 20 0a 20 20 20  |            .   |
0006f100  20 69 6e 74 20 61 63 74  69 6f 6e 3b 20 20 20 20  | int action;    |
0006f110  20 20 20 20 20 20 0a 20  20 20 20 63 68 61 72 20  |      .    char |
0006f120  2a 6f 62 6a 6e 61 6d 65  3b 20 20 20 20 20 20 20  |*objname;       |
0006f130  0a 20 20 20 20 69 6e 74  20 6c 6f 61 64 61 64 64  |.    int loadadd|
0006f140  72 3b 20 20 20 20 20 20  20 20 0a 20 20 20 20 69  |r;        .    i|
0006f150  6e 74 20 65 78 65 63 61  64 64 72 3b 20 20 20 20  |nt execaddr;    |
0006f160  20 20 20 20 0a 20 20 20  20 69 6e 74 20 73 74 61  |    .    int sta|
0006f170  72 74 61 64 64 72 3b 20  20 20 20 20 20 20 0a 20  |rtaddr;       . |
0006f180  20 20 20 69 6e 74 20 65  6e 64 61 64 64 72 3b 20  |   int endaddr; |
0006f190  20 20 20 20 20 20 20 20  0a 20 20 20 20 69 6e 74  |        .    int|
0006f1a0  20 72 65 73 65 72 76 65  64 5b 34 5d 3b 20 20 20  | reserved[4];   |
0006f1b0  20 20 0a 7d 20 20 20 20  20 20 20 20 20 20 20 20  |  .}            |
0006f1c0  20 20 20 20 20 20 20 20  20 20 20 20 0a 44 65 73  |            .Des|
0006f1d0  6b 74 6f 70 20 43 0a 5c  7b 0a 20 20 20 20 69 6e  |ktop C.\{.    in|
0006f1e0  74 20 61 63 74 69 6f 6e  3b 20 20 20 20 20 0a 20  |t action;     . |
0006f1f0  20 20 20 63 68 61 72 20  2a 6e 61 6d 65 3b 20 20  |   char *name;  |
0006f200  20 20 20 0a 20 20 20 20  69 6e 74 20 6c 6f 61 64  |   .    int load|
0006f210  61 64 64 72 3b 20 20 20  0a 20 20 20 20 69 6e 74  |addr;   .    int|
0006f220  20 65 78 65 63 61 64 64  72 3b 20 20 20 0a 20 20  | execaddr;   .  |
0006f230  20 20 69 6e 74 20 73 74  61 72 74 3b 20 20 20 20  |  int start;    |
0006f240  20 20 0a 20 20 20 20 69  6e 74 20 65 6e 64 3b 20  |  .    int end; |
0006f250  20 20 20 20 20 20 20 0a  20 20 20 20 69 6e 74 20  |       .    int |
0006f260  72 65 73 65 72 76 65 64  5b 34 5d 3b 0a 7d 0a 23  |reserved[4];.}.#|
0006f270  65 6e 64 74 61 62 6c 65  44 41 54 41 b9 00 00 00  |endtableDATA....|
0006f280  6f 73 5f 66 69 6c 6c 0a  53 79 6e 74 61 78 3a 09  |os_fill.Syntax:.|
0006f290  76 6f 69 64 20 6f 73 5f  66 69 6c 6c 20 28 69 6e  |void os_fill (in|
0006f2a0  74 20 78 2c 20 69 6e 74  20 79 29 3b 0a 48 65 61  |t x, int y);.Hea|
0006f2b0  64 65 72 3a 09 3c 72 6f  73 6c 69 62 2e 68 3d 3e  |der:.<roslib.h=>|
0006f2c0  72 6f 73 6c 69 62 3e 0a  0a 54 68 69 73 20 66 75  |roslib>..This fu|
0006f2d0  6e 63 74 69 6f 6e 73 20  66 6c 6f 6f 64 20 66 69  |nctions flood fi|
0006f2e0  6c 6c 73 20 61 6e 20 61  72 65 61 20 77 69 74 68  |lls an area with|
0006f2f0  20 74 68 65 20 63 75 72  72 65 6e 74 20 66 6f 72  | the current for|
0006f300  65 67 72 6f 75 6e 64 20  67 72 61 70 68 69 63 73  |eground graphics|
0006f310  20 63 6f 6c 6f 75 72 2c  20 73 74 61 72 74 69 6e  | colour, startin|
0006f320  67 20 61 74 20 7b 2f 7d  28 78 2c 79 29 7b 2f 7d  |g at {/}(x,y){/}|
0006f330  2e 00 00 00 44 41 54 41  4c 01 00 00 6f 73 5f 66  |....DATAL...os_f|
0006f340  69 6e 64 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |ind.Syntax:.<os_|
0006f350  65 72 72 6f 72 3e 20 2a  6f 73 5f 66 69 6e 64 20  |error> *os_find |
0006f360  28 3c 6f 73 5f 72 65 67  73 65 74 3e 20 2a 72 29  |(<os_regset> *r)|
0006f370  3b 0a 48 65 61 64 65 72  3a 09 3c 72 6f 73 6c 69  |;.Header:.<rosli|
0006f380  62 2e 68 3d 3e 72 6f 73  6c 69 62 3e 09 28 45 61  |b.h=>roslib>.(Ea|
0006f390  73 79 20 43 29 0a 09 3c  6f 73 2e 68 3d 3e 6f 73  |sy C)..<os.h=>os|
0006f3a0  3e 09 28 44 65 73 6b 74  6f 70 20 43 29 0a 0a 52  |>.(Desktop C)..R|
0006f3b0  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
0006f3c0  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
0006f3d0  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
0006f3e0  69 73 20 66 75 6e 63 74  69 6f 6e 20 63 61 6c 6c  |is function call|
0006f3f0  73 20 74 68 65 20 3c 4f  53 5f 46 69 6e 64 3d 3e  |s the <OS_Find=>|
0006f400  53 57 49 3a 4f 53 5f 46  69 6e 64 3e 20 53 57 49  |SWI:OS_Find> SWI|
0006f410  20 77 68 69 63 68 20 68  61 6e 64 6c 65 73 20 6f  | which handles o|
0006f420  70 65 6e 69 6e 67 20 61  6e 64 20 63 6c 6f 73 69  |pening and closi|
0006f430  6e 67 20 6f 66 20 72 61  6e 64 6f 6d 20 61 63 63  |ng of random acc|
0006f440  65 73 73 20 66 69 6c 65  73 2e 20 54 68 65 20 72  |ess files. The r|
0006f450  65 67 69 73 74 65 72 73  20 52 30 2d 52 39 20 61  |egisters R0-R9 a|
0006f460  72 65 20 73 65 74 20 66  72 6f 6d 20 61 6e 64 20  |re set from and |
0006f470  72 65 74 75 72 6e 65 64  20 69 6e 20 2f 72 2f 2e  |returned in /r/.|
0006f480  44 41 54 41 50 01 00 00  6f 73 5f 67 62 70 62 0a  |DATAP...os_gbpb.|
0006f490  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
0006f4a0  72 3e 20 2a 6f 73 5f 67  62 70 62 20 28 3c 6f 73  |r> *os_gbpb (<os|
0006f4b0  5f 67 62 70 62 73 74 72  3e 20 2a 62 6c 6b 29 3b  |_gbpbstr> *blk);|
0006f4c0  0a 48 65 61 64 65 72 3a  09 3c 72 6f 73 6c 69 62  |.Header:.<roslib|
0006f4d0  2e 68 3d 3e 72 6f 73 6c  69 62 3e 09 28 45 61 73  |.h=>roslib>.(Eas|
0006f4e0  79 20 43 29 0a 09 3c 6f  73 2e 68 3d 3e 6f 73 3e  |y C)..<os.h=>os>|
0006f4f0  09 28 44 65 73 6b 74 6f  70 20 43 29 0a 0a 52 65  |.(Desktop C)..Re|
0006f500  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
0006f510  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
0006f520  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
0006f530  73 20 66 75 6e 63 74 69  6f 6e 20 63 61 6c 6c 73  |s function calls|
0006f540  20 74 68 65 20 3c 4f 53  5f 47 42 50 42 3d 3e 53  | the <OS_GBPB=>S|
0006f550  57 49 3a 4f 53 5f 47 42  50 42 3e 20 53 57 49 20  |WI:OS_GBPB> SWI |
0006f560  77 68 69 63 68 20 70 65  72 66 6f 72 6d 73 20 61  |which performs a|
0006f570  20 6d 79 72 69 61 64 20  6f 66 20 64 69 66 66 65  | myriad of diffe|
0006f580  72 65 6e 74 20 6f 70 65  72 61 74 69 6f 6e 73 2e  |rent operations.|
0006f590  20 54 68 65 20 70 61 72  61 6d 65 74 65 72 73 20  | The parameters |
0006f5a0  66 6f 72 20 74 68 65 20  63 61 6c 6c 20 61 72 65  |for the call are|
0006f5b0  20 73 65 74 20 66 72 6f  6d 20 61 6e 64 20 72 65  | set from and re|
0006f5c0  74 75 72 6e 65 64 20 69  6e 20 2f 62 6c 6b 2f 2e  |turned in /blk/.|
0006f5d0  44 41 54 41 41 02 00 00  6f 73 5f 67 62 70 62 73  |DATAA...os_gbpbs|
0006f5e0  74 72 0a 54 68 65 20 74  79 70 65 20 6f 73 5f 67  |tr.The type os_g|
0006f5f0  62 70 62 73 74 72 20 69  73 20 64 65 66 69 6e 65  |bpbstr is define|
0006f600  64 20 69 6e 20 3c 72 6f  73 6c 69 62 2e 68 3d 3e  |d in <roslib.h=>|
0006f610  72 6f 73 6c 69 62 3e 20  28 45 61 73 79 20 43 29  |roslib> (Easy C)|
0006f620  20 61 6e 64 20 3c 6f 73  2e 68 3d 3e 6f 73 3e 20  | and <os.h=>os> |
0006f630  28 44 65 73 6b 74 6f 70  20 43 29 20 61 73 20 61  |(Desktop C) as a|
0006f640  6e 20 6f 62 6a 65 63 74  20 68 6f 6c 64 69 6e 67  |n object holding|
0006f650  20 64 61 74 61 20 74 6f  20 62 65 20 70 61 73 73  | data to be pass|
0006f660  65 64 20 74 6f 20 74 68  65 20 66 75 6e 63 74 69  |ed to the functi|
0006f670  6f 6e 20 3c 6f 73 5f 67  62 70 62 3e 2e 20 49 74  |on <os_gbpb>. It|
0006f680  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 20 74  | is defined as t|
0006f690  68 65 20 66 6f 6c 6c 6f  77 69 6e 67 20 73 74 72  |he following str|
0006f6a0  75 63 74 75 72 65 3a 0a  0a 23 69 6e 64 65 6e 74  |ucture:..#indent|
0006f6b0  20 39 0a 23 74 61 62 6c  65 20 63 6f 6c 75 6d 6e  | 9.#table column|
0006f6c0  73 20 32 0a 45 61 73 79  20 43 3a 0a 5c 7b 0a 20  |s 2.Easy C:.\{. |
0006f6d0  20 20 20 69 6e 74 20 61  63 74 69 6f 6e 3b 0a 20  |   int action;. |
0006f6e0  20 20 20 69 6e 74 20 68  61 6e 64 6c 65 3b 0a 20  |   int handle;. |
0006f6f0  20 20 20 76 6f 69 64 20  2a 73 74 61 72 74 61 64  |   void *startad|
0006f700  64 72 3b 0a 20 20 20 20  69 6e 74 20 6e 75 6d 62  |dr;.    int numb|
0006f710  65 72 3b 0a 20 20 20 20  69 6e 74 20 70 6f 69 6e  |er;.    int poin|
0006f720  74 65 72 3b 0a 20 20 20  20 69 6e 74 20 62 75 66  |ter;.    int buf|
0006f730  5f 6c 65 6e 3b 0a 20 20  20 20 63 68 61 72 20 2a  |_len;.    char *|
0006f740  77 69 6c 64 63 61 72 64  3b 0a 20 20 20 20 69 6e  |wildcard;.    in|
0006f750  74 20 72 65 73 65 72 76  65 64 5b 33 5d 3b 0a 7d  |t reserved[3];.}|
0006f760  0a 44 65 73 6b 74 6f 70  20 43 3a 0a 5c 7b 0a 20  |.Desktop C:.\{. |
0006f770  20 20 20 69 6e 74 20 61  63 74 69 6f 6e 3b 0a 20  |   int action;. |
0006f780  20 20 20 69 6e 74 20 66  69 6c 65 5f 68 61 6e 64  |   int file_hand|
0006f790  6c 65 3b 0a 20 20 20 20  76 6f 69 64 20 2a 64 61  |le;.    void *da|
0006f7a0  74 61 5f 61 64 64 72 3b  0a 20 20 20 20 69 6e 74  |ta_addr;.    int|
0006f7b0  20 6e 75 6d 62 65 72 3b  0a 20 20 20 20 69 6e 74  | number;.    int|
0006f7c0  20 73 65 71 5f 70 6f 69  6e 74 3b 0a 20 20 20 20  | seq_point;.    |
0006f7d0  69 6e 74 20 62 75 66 5f  6c 65 6e 3b 0a 20 20 20  |int buf_len;.   |
0006f7e0  20 63 68 61 72 20 2a 77  69 6c 64 5f 66 6c 64 3b  | char *wild_fld;|
0006f7f0  0a 20 20 20 20 69 6e 74  20 72 65 73 65 72 76 65  |.    int reserve|
0006f800  64 5b 33 5d 3b 0a 7d 0a  23 65 6e 64 74 61 62 6c  |d[3];.}.#endtabl|
0006f810  65 00 00 00 44 41 54 41  f9 00 00 00 6f 73 5f 67  |e...DATA....os_g|
0006f820  63 6f 6c 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |col.Syntax:.void|
0006f830  20 6f 73 5f 67 63 6f 6c  20 28 69 6e 74 20 61 2c  | os_gcol (int a,|
0006f840  20 69 6e 74 20 63 29 3b  0a 48 65 61 64 65 72 3a  | int c);.Header:|
0006f850  09 3c 72 6f 73 6c 69 62  2e 68 3d 3e 72 6f 73 6c  |.<roslib.h=>rosl|
0006f860  69 62 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ib>..This functi|
0006f870  6f 6e 20 63 68 61 6e 67  65 73 20 74 68 65 20 63  |on changes the c|
0006f880  75 72 72 65 6e 74 20 67  72 61 70 68 69 63 73 20  |urrent graphics |
0006f890  66 6f 72 65 67 72 6f 75  6e 64 20 63 6f 6c 6f 75  |foreground colou|
0006f8a0  72 20 28 69 6e 20 7b 2f  7d 63 7b 2f 7d 29 20 61  |r (in {/}c{/}) a|
0006f8b0  6e 64 20 3c 61 63 74 69  6f 6e 3d 3e 56 44 55 3a  |nd <action=>VDU:|
0006f8c0  31 38 61 3e 20 28 7b 2f  7d 61 7b 2f 7d 29 2e 20  |18a> ({/}a{/}). |
0006f8d0  49 66 20 2f 63 2f 20 5c  3e a0 31 32 38 20 74 68  |If /c/ \>.128 th|
0006f8e0  65 6e 20 74 68 65 20 62  61 63 6b 67 72 6f 75 6e  |en the backgroun|
0006f8f0  64 20 63 6f 6c 6f 75 72  20 69 73 20 73 65 74 20  |d colour is set |
0006f900  74 6f 20 2f 63 2f 20 2d  a0 31 32 38 2e 00 00 00  |to /c/ -.128....|
0006f910  44 41 54 41 7d 01 00 00  6f 73 5f 67 65 74 0a 53  |DATA}...os_get.S|
0006f920  79 6e 74 61 78 3a 09 69  6e 74 20 6f 73 5f 67 65  |yntax:.int os_ge|
0006f930  74 20 28 76 6f 69 64 29  3b 0a 48 65 61 64 65 72  |t (void);.Header|
0006f940  3a 09 3c 72 6f 73 6c 69  62 2e 68 3d 3e 72 6f 73  |:.<roslib.h=>ros|
0006f950  6c 69 62 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 54  |lib>..Returns:.T|
0006f960  68 65 20 63 68 61 72 61  63 74 65 72 20 72 65 61  |he character rea|
0006f970  64 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |d...This functio|
0006f980  6e 20 72 65 61 64 73 20  61 20 63 68 61 72 61 63  |n reads a charac|
0006f990  74 65 72 20 66 72 6f 6d  20 74 68 65 20 63 75 72  |ter from the cur|
0006f9a0  72 65 6e 74 20 69 6e 70  75 74 20 73 74 72 65 61  |rent input strea|
0006f9b0  6d 2e 20 49 74 20 77 61  69 74 73 20 75 6e 74 69  |m. It waits unti|
0006f9c0  6c 20 6f 6e 65 20 69 73  20 61 76 61 69 6c 61 62  |l one is availab|
0006f9d0  6c 65 2c 20 73 6f 20 6d  61 79 20 68 61 6c 74 20  |le, so may halt |
0006f9e0  74 68 65 20 70 72 6f 67  72 61 6d 20 74 65 6d 70  |the program temp|
0006f9f0  6f 72 61 72 69 6c 79 2e  20 49 66 20 61 6e 20 65  |orarily. If an e|
0006fa00  73 63 61 70 65 20 63 6f  6e 64 69 74 69 6f 6e 20  |scape condition |
0006fa10  6f 63 63 75 72 73 2c 20  74 68 65 20 66 75 6e 63  |occurs, the func|
0006fa20  74 69 6f 6e 20 72 65 74  75 72 6e 73 20 61 20 76  |tion returns a v|
0006fa30  61 6c 75 65 20 67 72 65  61 74 65 72 20 74 68 61  |alue greater tha|
0006fa40  6e 20 32 35 35 2e 0a 0a  54 68 69 73 20 66 75 6e  |n 255...This fun|
0006fa50  63 74 69 6f 6e 20 69 73  20 69 64 65 6e 74 69 63  |ction is identic|
0006fa60  61 6c 20 74 6f 20 4f 53  5f 52 65 61 64 43 2c 20  |al to OS_ReadC, |
0006fa70  6f 72 20 3c 47 45 54 3d  3e 42 61 73 69 63 3a 47  |or <GET=>Basic:G|
0006fa80  45 54 3e 20 69 6e 20 42  61 73 69 63 2e 00 00 00  |ET> in Basic....|
0006fa90  44 41 54 41 73 03 00 00  6f 73 5f 69 6e 6b 65 79  |DATAs...os_inkey|
0006faa0  0a 53 79 6e 74 61 78 3a  09 69 6e 74 20 6f 73 5f  |.Syntax:.int os_|
0006fab0  69 6e 6b 65 79 20 28 69  6e 74 20 6e 29 3b 0a 48  |inkey (int n);.H|
0006fac0  65 61 64 65 72 3a 09 3c  72 6f 73 6c 69 62 2e 68  |eader:.<roslib.h|
0006fad0  3d 3e 72 6f 73 6c 69 62  3e 0a 0a 52 65 74 75 72  |=>roslib>..Retur|
0006fae0  6e 73 3a 09 6e 3e 3d 30  09 54 68 65 20 63 68 61  |ns:.n>=0.The cha|
0006faf0  72 61 63 74 65 72 20 72  65 61 64 2e 0a 09 6e 5c  |racter read...n\|
0006fb00  3c 30 09 2d 31 20 69 66  20 74 68 65 20 6b 65 79  |<0.-1 if the key|
0006fb10  20 69 73 20 62 65 69 6e  67 20 70 72 65 73 73 65  | is being presse|
0006fb20  64 2c 20 6f 72 20 30 20  69 66 20 6e 6f 74 2e 0a  |d, or 0 if not..|
0006fb30  09 6e 3d 3d 32 35 36 09  54 68 65 20 4f 70 65 72  |.n==256.The Oper|
0006fb40  61 74 69 6e 67 20 53 79  73 74 65 6d 20 76 65 72  |ating System ver|
0006fb50  73 69 6f 6e 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |sion...This func|
0006fb60  74 69 6f 6e 20 65 69 74  68 65 72 20 72 65 61 64  |tion either read|
0006fb70  73 20 61 20 63 68 61 72  61 63 74 65 72 20 66 72  |s a character fr|
0006fb80  6f 6d 20 74 68 65 20 69  6e 70 75 74 20 73 74 72  |om the input str|
0006fb90  65 61 6d 20 77 69 74 68  69 6e 20 61 20 74 69 6d  |eam within a tim|
0006fba0  65 20 6c 69 6d 69 74 2c  20 74 65 73 74 73 20 61  |e limit, tests a|
0006fbb0  20 73 70 65 63 69 66 69  63 20 6b 65 79 2c 20 6f  | specific key, o|
0006fbc0  72 20 72 65 61 64 73 20  74 68 65 20 4f 70 65 72  |r reads the Oper|
0006fbd0  61 74 69 6e 67 20 53 79  73 74 65 6d 20 76 65 72  |ating System ver|
0006fbe0  73 69 6f 6e 2e 0a 0a 54  6f 20 72 65 61 64 20 61  |sion...To read a|
0006fbf0  20 63 68 61 72 61 63 74  65 72 20 77 69 74 68 69  | character withi|
0006fc00  6e 20 61 20 74 69 6d 65  20 6c 69 6d 69 74 2c 20  |n a time limit, |
0006fc10  2f 6e 2f 20 73 68 6f 75  6c 64 20 62 65 20 74 68  |/n/ should be th|
0006fc20  65 20 74 69 6d 65 20 6c  69 6d 69 74 20 69 6e 20  |e time limit in |
0006fc30  63 65 6e 74 69 73 65 63  6f 6e 64 73 20 28 75 70  |centiseconds (up|
0006fc40  20 74 6f 20 33 32 37 36  37 20 2d 20 69 74 20 63  | to 32767 - it c|
0006fc50  61 6e 20 62 65 20 30 29  2e 20 54 68 65 20 70 72  |an be 0). The pr|
0006fc60  6f 67 72 61 6d 20 77 69  6c 6c 20 77 61 69 74 20  |ogram will wait |
0006fc70  75 6e 74 69 6c 20 61 20  63 68 61 72 61 63 74 65  |until a characte|
0006fc80  72 20 69 73 20 69 6e 70  75 74 2c 20 66 6f 72 20  |r is input, for |
0006fc90  61 20 6d 61 78 69 6d 75  6d 20 6f 66 20 2f 6e 2f  |a maximum of /n/|
0006fca0  20 63 65 6e 74 69 73 65  63 6f 6e 64 73 2c 20 61  | centiseconds, a|
0006fcb0  6e 64 20 72 65 74 75 72  6e 20 74 68 65 20 41 53  |nd return the AS|
0006fcc0  43 49 49 20 76 61 6c 75  65 20 6f 66 20 74 68 65  |CII value of the|
0006fcd0  20 6b 65 79 2e 0a 0a 54  6f 20 74 65 73 74 20 61  | key...To test a|
0006fce0  20 73 70 65 63 69 66 69  63 20 6b 65 79 2c 20 2f  | specific key, /|
0006fcf0  6e 2f 20 73 68 6f 75 6c  64 20 62 65 20 61 20 76  |n/ should be a v|
0006fd00  61 6c 75 65 20 66 72 6f  6d 20 2d 32 35 35 20 74  |alue from -255 t|
0006fd10  6f 20 2d 31 2c 20 61 6e  64 20 74 68 65 20 6b 65  |o -1, and the ke|
0006fd20  79 20 72 65 70 72 65 73  65 6e 74 65 64 20 62 79  |y represented by|
0006fd30  20 74 68 61 74 20 76 61  6c 75 65 20 77 69 6c 6c  | that value will|
0006fd40  20 62 65 20 74 65 73 74  65 64 2e 20 54 68 65 20  | be tested. The |
0006fd50  76 61 6c 75 65 20 73 68  6f 75 6c 64 20 62 65 20  |value should be |
0006fd60  28 2d 31 20 2d 20 3c 6b  65 79 20 6e 72 3d 3e 53  |(-1 - <key nr=>S|
0006fd70  57 49 3a 6f 73 5f 62 79  74 65 31 32 31 61 3e 29  |WI:os_byte121a>)|
0006fd80  0a 0a 54 6f 20 72 65 61  64 20 74 68 65 20 4f 53  |..To read the OS|
0006fd90  20 76 65 72 73 69 6f 6e  2c 20 2f 6e 2f 20 3d a0  | version, /n/ =.|
0006fda0  2d 32 35 36 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |-256...This func|
0006fdb0  74 69 6f 6e 20 69 73 20  65 71 75 69 76 61 6c 65  |tion is equivale|
0006fdc0  6e 74 20 74 6f 20 3c 4f  53 5f 42 79 74 65 3d 3e  |nt to <OS_Byte=>|
0006fdd0  53 57 49 3a 4f 53 5f 42  79 74 65 3e 20 31 32 39  |SWI:OS_Byte> 129|
0006fde0  2c 20 6f 72 20 3c 49 4e  4b 45 59 3d 3e 42 61 73  |, or <INKEY=>Bas|
0006fdf0  69 63 3a 49 4e 4b 45 59  3e 20 69 6e 20 42 61 73  |ic:INKEY> in Bas|
0006fe00  69 63 2e 00 44 41 54 41  af 01 00 00 6f 73 2e 68  |ic..DATA....os.h|
0006fe10  20 4d 61 63 72 6f 73 0a  45 69 67 68 74 20 6d 61  | Macros.Eight ma|
0006fe20  63 72 6f 73 20 61 72 65  20 64 65 66 69 6e 65 64  |cros are defined|
0006fe30  20 72 65 6c 61 74 69 6e  67 20 74 6f 20 53 57 49  | relating to SWI|
0006fe40  20 6e 75 6d 62 65 72 73  2e 20 54 68 65 20 66 6f  | numbers. The fo|
0006fe50  6c 6c 6f 77 69 6e 67 20  6d 61 63 72 6f 73 20 61  |llowing macros a|
0006fe60  72 65 20 64 65 66 69 6e  65 64 20 61 73 20 74 68  |re defined as th|
0006fe70  65 20 6e 75 6d 62 65 72  20 6f 66 20 74 68 65 69  |e number of thei|
0006fe80  72 20 6e 61 6d 65 73 61  6b 65 27 73 20 53 57 49  |r namesake's SWI|
0006fe90  3a 0a 0a 23 49 6e 64 65  6e 74 20 37 0a 23 54 61  |:..#Indent 7.#Ta|
0006fea0  62 6c 65 20 63 6f 6c 75  6d 6e 73 20 33 0a 7b 2a  |ble columns 3.{*|
0006feb0  7d 4f 53 5f 43 4c 49 7b  2a 7d 0a 7b 2a 7d 4f 53  |}OS_CLI{*}.{*}OS|
0006fec0  5f 42 79 74 65 7b 2a 7d  0a 7b 2a 7d 4f 53 5f 57  |_Byte{*}.{*}OS_W|
0006fed0  6f 72 64 7b 2a 7d 0a 7b  2a 7d 4f 53 5f 46 69 6c  |ord{*}.{*}OS_Fil|
0006fee0  65 7b 2a 7d 0a 7b 2a 7d  4f 53 5f 41 72 67 73 7b  |e{*}.{*}OS_Args{|
0006fef0  2a 7d 0a 7b 2a 7d 4f 53  5f 47 42 50 42 7b 2a 7d  |*}.{*}OS_GBPB{*}|
0006ff00  0a 7b 2a 7d 4f 53 5f 46  69 6e 64 7b 2a 7d 0a 23  |.{*}OS_Find{*}.#|
0006ff10  45 6e 64 54 61 62 6c 65  0a 23 49 6e 64 65 6e 74  |EndTable.#Indent|
0006ff20  20 30 0a 0a 54 68 65 20  6d 61 63 72 6f 20 7b 2a  | 0..The macro {*|
0006ff30  7d 6f 73 5f 58 7b 2a 7d  20 69 73 20 74 68 65 20  |}os_X{*} is the |
0006ff40  76 61 6c 75 65 20 6f 66  20 74 68 65 20 27 58 20  |value of the 'X |
0006ff50  62 69 74 27 20 69 6e 20  53 57 49 20 6e 75 6d 62  |bit' in SWI numb|
0006ff60  65 72 73 2e 20 49 74 20  73 68 6f 75 6c 64 20 62  |ers. It should b|
0006ff70  65 20 6c 6f 67 69 63 61  6c 6c 79 20 4f 52 65 64  |e logically ORed|
0006ff80  20 77 69 74 68 20 74 68  65 20 53 57 49 20 6e 75  | with the SWI nu|
0006ff90  6d 62 65 72 20 74 6f 20  63 61 6c 6c 20 74 68 65  |mber to call the|
0006ffa0  20 58 20 66 6f 72 6d 20  6f 66 20 74 68 65 20 53  | X form of the S|
0006ffb0  57 49 2e 00 44 41 54 41  e5 00 00 00 6f 73 5f 6d  |WI..DATA....os_m|
0006ffc0  6f 64 65 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |ode.Syntax:.void|
0006ffd0  20 6f 73 5f 6d 6f 64 65  20 28 69 6e 74 20 6d 29  | os_mode (int m)|
0006ffe0  3b 0a 48 65 61 64 65 72  3a 09 3c 72 6f 73 6c 69  |;.Header:.<rosli|
0006fff0  62 2e 68 3d 3e 72 6f 73  6c 69 62 3e 0a 0a 54 68  |b.h=>roslib>..Th|
00070000  69 73 20 66 75 6e 63 74  69 6f 6e 20 63 68 61 6e  |is function chan|
00070010  67 65 73 20 74 68 65 20  63 75 72 72 65 6e 74 20  |ges the current |
00070020  3c 73 63 72 65 65 6e 20  6d 6f 64 65 3d 3e 56 44  |<screen mode=>VD|
00070030  55 3a 32 32 61 3e 20 74  6f 20 74 68 65 20 6f 6e  |U:22a> to the on|
00070040  65 20 73 70 65 63 69 66  69 65 64 20 69 6e 20 2f  |e specified in /|
00070050  6d 2f 2e 20 49 74 20 69  73 20 65 71 75 69 76 61  |m/. It is equiva|
00070060  6c 65 6e 74 20 74 6f 20  3c 4d 4f 44 45 3d 3e 42  |lent to <MODE=>B|
00070070  61 73 69 63 3a 4d 4f 44  45 3e 20 69 6e 20 42 61  |asic:MODE> in Ba|
00070080  73 69 63 2c 20 6f 72 20  3c 56 44 55 20 32 32 3d  |sic, or <VDU 22=|
00070090  3e 56 44 55 3a 32 32 3e  2e 00 00 00 44 41 54 41  |>VDU:22>....DATA|
000700a0  c3 00 00 00 6f 73 5f 6d  6f 76 65 0a 53 79 6e 74  |....os_move.Synt|
000700b0  61 78 3a 09 76 6f 69 64  20 6f 73 5f 6d 6f 76 65  |ax:.void os_move|
000700c0  20 28 69 6e 74 20 78 2c  20 69 6e 74 20 79 29 3b  | (int x, int y);|
000700d0  0a 48 65 61 64 65 72 3a  09 3c 72 6f 73 6c 69 62  |.Header:.<roslib|
000700e0  2e 68 3d 3e 72 6f 73 6c  69 62 3e 0a 0a 54 68 69  |.h=>roslib>..Thi|
000700f0  73 20 66 75 6e 63 74 69  6f 6e 20 6d 6f 76 65 73  |s function moves|
00070100  20 74 68 65 20 67 72 61  70 68 69 63 73 20 63 75  | the graphics cu|
00070110  72 73 6f 72 20 74 6f 20  74 68 65 20 70 6f 73 69  |rsor to the posi|
00070120  74 69 6f 6e 20 67 69 76  65 6e 20 62 79 20 28 78  |tion given by (x|
00070130  2c 79 29 2e 20 45 71 75  69 76 61 6c 65 6e 74 20  |,y). Equivalent |
00070140  74 6f 20 3c 4d 4f 56 45  3d 3e 42 61 73 69 63 3a  |to <MOVE=>Basic:|
00070150  4d 4f 56 45 3e 20 69 6e  20 42 61 73 69 63 2e 00  |MOVE> in Basic..|
00070160  44 41 54 41 df 00 00 00  6f 73 5f 6d 6f 76 65 62  |DATA....os_moveb|
00070170  79 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 6f  |y.Syntax:.void o|
00070180  73 5f 6d 6f 76 65 62 79  20 28 69 6e 74 20 78 2c  |s_moveby (int x,|
00070190  20 69 6e 74 20 79 29 3b  0a 48 65 61 64 65 72 3a  | int y);.Header:|
000701a0  09 3c 72 6f 73 6c 69 62  2e 68 3d 3e 72 6f 73 6c  |.<roslib.h=>rosl|
000701b0  69 62 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ib>..This functi|
000701c0  6f 6e 20 6d 6f 76 65 73  20 74 68 65 20 67 72 61  |on moves the gra|
000701d0  70 68 69 63 73 20 63 75  72 73 6f 72 20 66 72 6f  |phics cursor fro|
000701e0  6d 20 74 68 65 20 63 75  72 72 65 6e 74 20 70 6f  |m the current po|
000701f0  73 69 74 69 6f 6e 20 72  65 6c 61 74 69 76 65 6c  |sition relativel|
00070200  79 20 62 79 20 7b 2f 7d  28 78 2c 79 29 7b 2f 7d  |y by {/}(x,y){/}|
00070210  2e 20 45 71 75 69 76 61  6c 65 6e 74 20 74 6f 20  |. Equivalent to |
00070220  3c 4d 4f 56 45 20 42 59  3d 3e 42 61 73 69 63 3a  |<MOVE BY=>Basic:|
00070230  4d 4f 56 45 3e 20 69 6e  20 42 61 73 69 63 2e 00  |MOVE> in Basic..|
00070240  44 41 54 41 2a 01 00 00  6f 73 5f 6f 72 69 67 69  |DATA*...os_origi|
00070250  6e 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 6f  |n.Syntax:.void o|
00070260  73 5f 6f 72 69 67 69 6e  20 28 69 6e 74 20 78 2c  |s_origin (int x,|
00070270  20 69 6e 74 20 79 29 3b  0a 48 65 61 64 65 72 3a  | int y);.Header:|
00070280  09 3c 72 6f 73 6c 69 62  2e 68 3d 3e 72 6f 73 6c  |.<roslib.h=>rosl|
00070290  69 62 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ib>..This functi|
000702a0  6f 6e 20 6d 6f 76 65 73  20 74 68 65 20 63 75 72  |on moves the cur|
000702b0  72 65 6e 74 20 67 72 61  70 68 69 63 73 20 6f 72  |rent graphics or|
000702c0  69 67 69 6e 20 28 69 65  20 74 68 65 20 70 6f 73  |igin (ie the pos|
000702d0  69 74 69 6f 6e 20 6f 66  20 28 30 2c 30 29 20 6f  |ition of (0,0) o|
000702e0  6e 20 74 68 65 20 73 63  72 65 65 6e 29 20 74 6f  |n the screen) to|
000702f0  20 7b 2f 7d 28 78 2c 79  29 7b 2f 7d 2e 20 54 68  | {/}(x,y){/}. Th|
00070300  65 20 63 6f 6f 72 64 69  6e 61 74 65 73 20 61 72  |e coordinates ar|
00070310  65 20 67 69 76 65 6e 20  72 65 6c 61 74 69 76 65  |e given relative|
00070320  20 74 6f 20 74 68 65 20  73 63 72 65 65 6e 20 62  | to the screen b|
00070330  6f 74 74 6f 6d 20 6c 65  66 74 2e 20 45 71 75 69  |ottom left. Equi|
00070340  76 61 6c 65 6e 74 20 74  6f 20 3c 4f 52 49 47 49  |valent to <ORIGI|
00070350  4e 3d 3e 42 61 73 69 63  3a 4f 52 49 47 49 4e 3e  |N=>Basic:ORIGIN>|
00070360  20 69 6e 20 42 61 73 69  63 2e 00 00 44 41 54 41  | in Basic...DATA|
00070370  ee 02 00 00 6f 73 5f 70  61 6c 65 74 74 65 0a 53  |....os_palette.S|
00070380  79 6e 74 61 78 3a 09 76  6f 69 64 20 6f 73 5f 70  |yntax:.void os_p|
00070390  61 6c 65 74 74 65 20 28  69 6e 74 20 63 2c 20 69  |alette (int c, i|
000703a0  6e 74 20 6d 2c 20 69 6e  74 20 72 2c 20 69 6e 74  |nt m, int r, int|
000703b0  20 67 2c 20 69 6e 74 20  62 29 3b 0a 48 65 61 64  | g, int b);.Head|
000703c0  65 72 3a 09 3c 72 6f 73  6c 69 62 2e 68 3d 3e 72  |er:.<roslib.h=>r|
000703d0  6f 73 6c 69 62 3e 0a 0a  54 68 69 73 20 66 75 6e  |oslib>..This fun|
000703e0  63 74 69 6f 6e 20 72 65  64 65 66 69 6e 65 64 20  |ction redefined |
000703f0  74 68 65 20 63 6f 6c 6f  75 72 20 73 70 65 63 69  |the colour speci|
00070400  66 69 65 64 20 69 6e 20  63 20 65 69 74 68 65 72  |fied in c either|
00070410  20 74 6f 20 74 68 65 20  70 68 79 73 69 63 61 6c  | to the physical|
00070420  20 63 6f 6c 6f 75 72 20  69 6e 20 2f 6d 2f 20 28  | colour in /m/ (|
00070430  69 66 20 2f 6d 2f 20 5c  3c a0 31 36 29 20 6f 72  |if /m/ \<.16) or|
00070440  20 74 6f 20 74 68 65 20  63 6f 6c 6f 75 72 20 77  | to the colour w|
00070450  68 6f 73 65 20 72 65 64  2c 20 67 72 65 65 6e 2c  |hose red, green,|
00070460  20 61 6e 64 20 62 6c 75  65 20 63 6f 6d 70 6f 6e  | and blue compon|
00070470  65 6e 74 73 20 61 72 65  20 67 69 76 65 6e 20 62  |ents are given b|
00070480  79 20 2f 72 2f 2c 20 2f  67 2f 2c 20 61 6e 64 20  |y /r/, /g/, and |
00070490  2f 62 2f 2e 20 2f 6d 2f  20 63 61 6e 20 62 65 20  |/b/. /m/ can be |
000704a0  6f 6e 65 20 6f 66 20 74  68 65 20 66 6f 6c 6c 6f  |one of the follo|
000704b0  77 69 6e 67 3a 0a 0a 23  69 6e 64 65 6e 74 20 32  |wing:..#indent 2|
000704c0  3b 74 61 62 0a 30 2d 31  35 09 43 6f 6c 6f 75 72  |;tab.0-15.Colour|
000704d0  20 2f 63 2f 20 69 73 20  72 65 64 65 66 69 6e 65  | /c/ is redefine|
000704e0  64 20 74 6f 20 62 65 20  74 68 65 20 70 68 79 73  |d to be the phys|
000704f0  69 63 61 6c 20 63 6f 6c  6f 75 72 20 69 6e 20 2f  |ical colour in /|
00070500  6d 2f 2e 0a 31 36 09 43  6f 6c 6f 75 72 20 2f 63  |m/..16.Colour /c|
00070510  2f 20 69 73 20 72 65 64  65 66 69 6e 65 64 20 74  |/ is redefined t|
00070520  6f 20 7b 2f 7d 28 72 2c  67 2c 62 29 7b 2f 7d 2e  |o {/}(r,g,b){/}.|
00070530  0a 31 37 09 46 69 72 73  74 20 66 6c 61 73 68 20  |.17.First flash |
00070540  63 6f 6c 6f 75 72 20 66  6f 72 20 2f 63 2f 20 69  |colour for /c/ i|
00070550  73 20 7b 2f 7d 28 72 2c  67 2c 62 29 7b 2f 7d 2e  |s {/}(r,g,b){/}.|
00070560  0a 31 38 09 53 65 63 6f  6e 64 20 66 6c 61 73 68  |.18.Second flash|
00070570  20 63 6f 6c 6f 75 72 20  66 6f 72 20 2f 63 2f 20  | colour for /c/ |
00070580  69 73 20 7b 2f 7d 28 72  2c 67 2c 62 29 7b 2f 7d  |is {/}(r,g,b){/}|
00070590  2e 0a 32 34 09 42 6f 72  64 65 72 20 63 6f 6c 6f  |..24.Border colo|
000705a0  75 72 20 69 73 20 7b 2f  7d 28 72 2c 67 2c 62 29  |ur is {/}(r,g,b)|
000705b0  7b 2f 7d 2e 20 2f 63 2f  20 69 73 20 69 67 6e 6f  |{/}. /c/ is igno|
000705c0  72 65 64 2e 0a 32 35 09  4d 6f 75 73 65 20 63 6f  |red..25.Mouse co|
000705d0  6c 6f 75 72 20 2f 63 2f  20 69 73 20 7b 2f 7d 28  |lour /c/ is {/}(|
000705e0  72 2c 67 2c 62 29 7b 2f  7d 2e 0a 23 69 6e 64 65  |r,g,b){/}..#inde|
000705f0  6e 74 0a 0a 31 32 38 20  61 64 64 65 64 20 74 6f  |nt..128 added to|
00070600  20 61 6e 79 20 6f 66 20  74 68 65 20 61 62 6f 76  | any of the abov|
00070610  65 20 73 65 74 73 20 74  68 65 20 73 75 70 72 65  |e sets the supre|
00070620  6d 61 63 79 20 62 69 74  2e 0a 0a 54 68 69 73 20  |macy bit...This |
00070630  63 6f 6d 6d 61 6e 64 20  69 73 20 65 71 75 69 76  |command is equiv|
00070640  61 6c 65 6e 74 20 74 6f  20 3c 56 44 55 20 31 39  |alent to <VDU 19|
00070650  3d 3e 56 44 55 3a 31 39  3e 2e 00 00 44 41 54 41  |=>VDU:19>...DATA|
00070660  18 01 00 00 6f 73 5f 70  6c 6f 74 0a 53 79 6e 74  |....os_plot.Synt|
00070670  61 78 3a 09 76 6f 69 64  20 6f 73 5f 70 6c 6f 74  |ax:.void os_plot|
00070680  20 28 69 6e 74 20 6e 2c  20 69 6e 74 20 78 2c 20  | (int n, int x, |
00070690  69 6e 74 20 79 29 3b 0a  48 65 61 64 65 72 3a 09  |int y);.Header:.|
000706a0  3c 72 6f 73 6c 69 62 2e  68 3d 3e 72 6f 73 6c 69  |<roslib.h=>rosli|
000706b0  62 3e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |b>..This functio|
000706c0  6e 20 64 6f 65 73 20 6c  6f 74 73 20 6f 66 20 74  |n does lots of t|
000706d0  68 69 6e 67 73 2e 20 49  74 20 69 73 20 74 68 65  |hings. It is the|
000706e0  20 73 61 6d 65 20 61 73  20 3c 50 4c 4f 54 3d 3e  | same as <PLOT=>|
000706f0  42 61 73 69 63 3a 50 4c  4f 54 3e 20 69 6e 20 42  |Basic:PLOT> in B|
00070700  61 73 69 63 2c 20 6f 72  20 74 68 65 20 53 57 49  |asic, or the SWI|
00070710  20 3c 4f 53 5f 50 6c 6f  74 3d 3e 53 57 49 3a 4f  | <OS_Plot=>SWI:O|
00070720  53 5f 50 6c 6f 74 3e 2e  20 2f 6e 2f 20 69 73 20  |S_Plot>. /n/ is |
00070730  74 68 65 20 3c 70 6c 6f  74 20 74 79 70 65 3d 3e  |the <plot type=>|
00070740  53 57 49 3a 6f 73 5f 70  6c 6f 74 2e 69 6e 64 65  |SWI:os_plot.inde|
00070750  78 3e 2c 20 61 6e 64 20  2f 78 2f 20 61 6e 64 20  |x>, and /x/ and |
00070760  2f 79 2f 20 61 72 65 20  63 6f 6f 72 64 69 6e 61  |/y/ are coordina|
00070770  74 65 73 2e 44 41 54 41  07 01 00 00 6f 73 5f 70  |tes.DATA....os_p|
00070780  6f 69 6e 74 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |oint.Syntax:.int|
00070790  20 6f 73 5f 70 6f 69 6e  74 20 28 69 6e 74 20 78  | os_point (int x|
000707a0  2c 20 69 6e 74 20 79 29  3b 0a 48 65 61 64 65 72  |, int y);.Header|
000707b0  3a 09 3c 72 6f 73 6c 69  62 2e 68 3d 3e 72 6f 73  |:.<roslib.h=>ros|
000707c0  6c 69 62 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 54  |lib>..Returns:.T|
000707d0  68 65 20 63 6f 6c 6f 75  72 20 6f 66 20 74 68 65  |he colour of the|
000707e0  20 70 69 78 65 6c 2e 0a  0a 54 68 69 73 20 66 75  | pixel...This fu|
000707f0  6e 63 74 69 6f 6e 20 72  65 61 64 73 20 74 68 65  |nction reads the|
00070800  20 6c 6f 67 69 63 61 6c  20 63 6f 6c 6f 75 72 20  | logical colour |
00070810  6f 66 20 70 69 78 65 6c  20 61 74 20 63 6f 6f 72  |of pixel at coor|
00070820  64 69 6e 61 74 65 73 20  7b 2f 7d 28 78 2c 79 29  |dinates {/}(x,y)|
00070830  7b 2f 7d 2e 20 49 66 20  74 68 65 20 63 6f 6f 72  |{/}. If the coor|
00070840  64 69 6e 61 74 65 73 20  61 72 65 20 6f 75 74 73  |dinates are outs|
00070850  69 64 65 20 74 68 65 20  67 72 61 70 68 69 63 73  |ide the graphics|
00070860  20 77 69 6e 64 6f 77 20  74 68 65 6e 20 69 74 20  | window then it |
00070870  72 65 74 75 72 6e 73 20  2d 31 2e 00 44 41 54 41  |returns -1..DATA|
00070880  d1 00 00 00 6f 73 5f 70  6f 73 0a 53 79 6e 74 61  |....os_pos.Synta|
00070890  78 3a 09 69 6e 74 20 6f  73 5f 70 6f 73 20 28 76  |x:.int os_pos (v|
000708a0  6f 69 64 29 3b 0a 48 65  61 64 65 72 3a 09 3c 72  |oid);.Header:.<r|
000708b0  6f 73 6c 69 62 2e 68 3d  3e 72 6f 73 6c 69 62 3e  |oslib.h=>roslib>|
000708c0  0a 0a 52 65 74 75 72 6e  73 3a 09 54 68 65 20 63  |..Returns:.The c|
000708d0  75 72 73 6f 72 20 70 6f  73 69 74 69 6f 6e 2e 0a  |ursor position..|
000708e0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
000708f0  65 61 64 73 20 74 68 65  20 58 20 63 6f 6f 72 64  |eads the X coord|
00070900  69 6e 61 74 65 20 6f 66  20 74 68 65 20 74 65 78  |inate of the tex|
00070910  74 20 63 75 72 73 6f 72  2c 20 66 72 6f 6d 20 74  |t cursor, from t|
00070920  68 65 20 6c 65 66 74 20  68 61 6e 64 20 65 64 67  |he left hand edg|
00070930  65 20 6f 66 20 74 68 65  20 63 75 72 72 65 6e 74  |e of the current|
00070940  20 74 65 78 74 20 77 69  6e 64 6f 77 2e 00 00 00  | text window....|
00070950  44 41 54 41 bc 01 00 00  6f 73 5f 72 65 61 64 5f  |DATA....os_read_|
00070960  76 61 72 5f 76 61 6c 0a  53 79 6e 74 61 78 3a 09  |var_val.Syntax:.|
00070970  76 6f 69 64 20 6f 73 5f  72 65 61 64 5f 76 61 72  |void os_read_var|
00070980  5f 76 61 6c 20 28 63 68  61 72 20 2a 6e 61 6d 65  |_val (char *name|
00070990  2c 20 63 68 61 72 20 2a  62 75 66 2c 20 69 6e 74  |, char *buf, int|
000709a0  20 6c 65 6e 29 3b 0a 48  65 61 64 65 72 3a 09 3c  | len);.Header:.<|
000709b0  6f 73 2e 68 3d 3e 6f 73  3e 0a 0a 54 68 69 73 20  |os.h=>os>..This |
000709c0  66 75 6e 63 74 69 6f 6e  20 67 65 74 73 20 74 68  |function gets th|
000709d0  65 20 76 61 6c 75 65 20  6f 66 20 73 79 73 74 65  |e value of syste|
000709e0  6d 20 76 61 72 69 61 62  6c 65 20 77 68 6f 73 65  |m variable whose|
000709f0  20 6e 61 6d 65 20 69 73  20 73 70 65 63 69 66 69  | name is specifi|
00070a00  65 64 20 61 6e 64 20 70  6c 61 63 65 73 20 69 74  |ed and places it|
00070a10  20 69 6e 20 74 68 65 20  63 68 61 72 61 63 74 65  | in the characte|
00070a20  72 20 61 72 72 61 79 20  70 6f 69 6e 74 65 64 20  |r array pointed |
00070a30  74 6f 20 62 79 20 2f 62  75 66 2f 2e 20 54 68 65  |to by /buf/. The|
00070a40  20 6c 65 6e 67 74 68 20  6f 66 20 74 68 65 20 61  | length of the a|
00070a50  72 72 61 79 20 69 73 20  67 69 76 65 6e 20 62 79  |rray is given by|
00070a60  20 2f 6c 65 6e 2f 2e 20  57 68 65 6e 20 72 65 61  | /len/. When rea|
00070a70  64 69 6e 67 20 74 68 65  20 76 61 72 69 61 62 6c  |ding the variabl|
00070a80  65 73 20 69 74 20 63 6f  6e 76 65 72 74 73 20 6e  |es it converts n|
00070a90  75 6d 62 65 72 73 20 74  6f 20 73 74 72 69 6e 67  |umbers to string|
00070aa0  73 20 61 6e 64 20 65 78  70 61 6e 64 73 20 6d 61  |s and expands ma|
00070ab0  63 72 6f 73 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |cros...This func|
00070ac0  74 69 6f 6e 20 69 73 20  65 71 75 69 76 61 6c 65  |tion is equivale|
00070ad0  6e 74 20 74 6f 20 74 68  65 20 53 57 49 20 3c 4f  |nt to the SWI <O|
00070ae0  53 5f 52 65 61 64 56 61  72 56 61 6c 3d 3e 53 57  |S_ReadVarVal=>SW|
00070af0  49 3a 4f 53 5f 52 65 61  64 56 61 72 56 61 6c 3e  |I:OS_ReadVarVal>|
00070b00  2c 20 77 69 74 68 20 52  34 3d 33 2e 44 41 54 41  |, with R4=3.DATA|
00070b10  32 01 00 00 4f 53 5f 52  65 61 64 56 61 72 56 61  |2...OS_ReadVarVa|
00070b20  6c 0a 53 79 6e 74 61 78  3a 09 3c 42 4f 4f 4c 3e  |l.Syntax:.<BOOL>|
00070b30  20 4f 53 5f 52 65 61 64  56 61 72 56 61 6c 20 28  | OS_ReadVarVal (|
00070b40  63 68 61 72 20 2a 76 61  72 2c 20 63 68 61 72 20  |char *var, char |
00070b50  2a 62 75 66 2c 20 69 6e  74 20 62 75 66 73 69 7a  |*buf, int bufsiz|
00070b60  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |e);.Header:.<Des|
00070b70  6b 4c 69 62 3a 4b 65 72  6e 65 6c 53 57 49 73 2e  |kLib:KernelSWIs.|
00070b80  68 3d 3e 4b 65 72 6e 65  6c 53 57 49 73 3e 0a 0a  |h=>KernelSWIs>..|
00070b90  52 65 74 75 72 6e 73 3a  09 3c 54 52 55 45 3e 20  |Returns:.<TRUE> |
00070ba0  69 66 20 73 75 63 63 65  73 73 66 75 6c 2e 0a 0a  |if successful...|
00070bb0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 72 65  |This function re|
00070bc0  61 64 73 20 74 68 65 20  76 61 6c 75 65 20 6f 66  |ads the value of|
00070bd0  20 74 68 65 20 73 79 73  74 65 6d 20 76 61 72 69  | the system vari|
00070be0  61 62 6c 65 20 77 68 6f  73 65 20 6e 61 6d 65 20  |able whose name |
00070bf0  69 73 20 67 69 76 65 6e  20 69 6e 20 2f 76 61 72  |is given in /var|
00070c00  2f 20 61 6e 64 20 72 65  74 75 72 6e 73 20 69 74  |/ and returns it|
00070c10  20 69 6e 20 74 68 65 20  62 75 66 66 65 72 20 2f  | in the buffer /|
00070c20  62 75 66 2f 2c 20 77 68  6f 73 65 20 73 69 7a 65  |buf/, whose size|
00070c30  20 69 73 20 2f 62 75 66  73 69 7a 65 2f 2e 00 00  | is /bufsize/...|
00070c40  44 41 54 41 39 01 00 00  6f 73 5f 72 65 63 74 61  |DATA9...os_recta|
00070c50  6e 67 6c 65 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |ngle.Syntax:.voi|
00070c60  64 20 6f 73 5f 72 65 63  74 61 6e 67 6c 65 20 28  |d os_rectangle (|
00070c70  69 6e 74 20 78 2c 20 69  6e 74 20 79 2c 20 69 6e  |int x, int y, in|
00070c80  74 20 77 2c 20 69 6e 74  20 68 29 3b 0a 48 65 61  |t w, int h);.Hea|
00070c90  64 65 72 3a 09 3c 72 6f  73 6c 69 62 2e 68 3d 3e  |der:.<roslib.h=>|
00070ca0  72 6f 73 6c 69 62 3e 0a  0a 54 68 69 73 20 66 75  |roslib>..This fu|
00070cb0  6e 63 74 69 6f 6e 20 64  72 61 77 73 20 61 20 72  |nction draws a r|
00070cc0  65 63 74 61 6e 67 6c 65  20 6f 6e 20 74 68 65 20  |ectangle on the |
00070cd0  73 63 72 65 65 6e 2c 20  77 69 74 68 20 74 68 65  |screen, with the|
00070ce0  20 62 6f 74 74 6f 6d 20  6c 65 66 74 20 61 74 20  | bottom left at |
00070cf0  70 6f 73 69 74 69 6f 6e  20 7b 2f 7d 28 78 2c 79  |position {/}(x,y|
00070d00  29 7b 2f 7d 20 61 6e 64  20 77 69 64 74 68 20 61  |){/} and width a|
00070d10  6e 64 20 68 65 69 67 68  74 20 61 73 20 67 69 76  |nd height as giv|
00070d20  65 6e 20 62 79 20 2f 77  2f 20 61 6e 64 20 2f 68  |en by /w/ and /h|
00070d30  2f 2e 20 45 71 75 69 76  61 6c 65 6e 74 20 74 6f  |/. Equivalent to|
00070d40  20 7b 66 43 6f 64 65 7d  3c 52 45 43 54 41 4e 47  | {fCode}<RECTANG|
00070d50  4c 45 3d 3e 42 61 73 69  63 3a 52 45 43 54 41 4e  |LE=>Basic:RECTAN|
00070d60  47 4c 45 3e 20 78 2c 79  2c 77 2c 68 7b 66 7d 20  |GLE> x,y,w,h{f} |
00070d70  69 6e 20 42 61 73 69 63  2e 00 00 00 44 41 54 41  |in Basic....DATA|
00070d80  47 01 00 00 6f 73 5f 72  65 63 74 61 6e 67 6c 65  |G...os_rectangle|
00070d90  66 69 6c 6c 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |fill.Syntax:.voi|
00070da0  64 20 6f 73 5f 72 65 63  74 61 6e 67 6c 65 66 69  |d os_rectanglefi|
00070db0  6c 6c 20 28 69 6e 74 20  78 2c 20 69 6e 74 20 79  |ll (int x, int y|
00070dc0  2c 20 69 6e 74 20 77 2c  20 69 6e 74 20 68 29 3b  |, int w, int h);|
00070dd0  0a 48 65 61 64 65 72 3a  09 3c 72 6f 73 6c 69 62  |.Header:.<roslib|
00070de0  2e 68 3d 3e 72 6f 73 6c  69 62 3e 0a 0a 54 68 69  |.h=>roslib>..Thi|
00070df0  73 20 66 75 6e 63 74 69  6f 6e 20 64 72 61 77 73  |s function draws|
00070e00  20 61 20 66 69 6c 6c 65  64 20 72 65 63 74 61 6e  | a filled rectan|
00070e10  67 6c 65 20 6f 6e 20 74  68 65 20 73 63 72 65 65  |gle on the scree|
00070e20  6e 2c 20 77 69 74 68 20  62 6f 74 74 6f 6d 20 6c  |n, with bottom l|
00070e30  65 66 74 20 61 74 20 7b  2f 7d 28 78 2c 79 29 7b  |eft at {/}(x,y){|
00070e40  2f 7d 20 61 6e 64 20 77  69 64 74 68 20 61 6e 64  |/} and width and|
00070e50  20 68 65 69 67 68 74 20  73 70 65 63 69 66 69 65  | height specifie|
00070e60  64 20 62 79 20 2f 77 2f  20 61 6e 64 20 2f 68 2f  |d by /w/ and /h/|
00070e70  2e 20 49 74 20 69 73 20  65 71 75 69 76 61 6c 65  |. It is equivale|
00070e80  6e 74 20 74 6f 20 7b 66  43 6f 64 65 7d 3c 52 45  |nt to {fCode}<RE|
00070e90  43 54 41 4e 47 4c 45 20  46 49 4c 4c 3d 3e 42 61  |CTANGLE FILL=>Ba|
00070ea0  73 69 63 3a 52 45 43 54  41 4e 47 4c 45 3e 20 78  |sic:RECTANGLE> x|
00070eb0  2c 79 2c 77 2c 68 7b 66  7d 20 69 6e 20 42 61 73  |,y,w,h{f} in Bas|
00070ec0  69 63 2e 00 44 41 54 41  06 01 00 00 6f 73 5f 72  |ic..DATA....os_r|
00070ed0  65 67 73 65 74 0a 54 68  65 20 74 79 70 65 20 6f  |egset.The type o|
00070ee0  73 5f 72 65 67 73 65 74  20 69 73 20 64 65 66 69  |s_regset is defi|
00070ef0  6e 65 64 20 69 6e 20 3c  72 6f 73 6c 69 62 2e 68  |ned in <roslib.h|
00070f00  3d 3e 72 6f 73 6c 69 62  3e 20 28 45 61 73 79 20  |=>roslib> (Easy |
00070f10  43 29 20 61 6e 64 20 3c  6f 73 2e 68 3d 3e 6f 73  |C) and <os.h=>os|
00070f20  3e 20 28 44 65 73 6b 74  6f 70 20 43 29 20 61 73  |> (Desktop C) as|
00070f30  20 61 6e 20 6f 62 6a 65  63 74 20 63 61 70 61 62  | an object capab|
00070f40  6c 65 20 6f 66 20 68 6f  6c 64 69 6e 67 20 74 68  |le of holding th|
00070f50  65 20 72 65 67 69 73 74  65 72 73 20 52 30 2d 52  |e registers R0-R|
00070f60  39 20 73 6f 20 74 68 61  74 20 74 68 65 79 20 63  |9 so that they c|
00070f70  61 6e 20 62 65 20 70 61  73 73 65 64 20 74 6f 20  |an be passed to |
00070f80  74 68 65 20 6f 70 65 72  61 74 69 6e 67 20 73 79  |the operating sy|
00070f90  73 74 65 6d 2e 20 49 74  20 69 73 20 64 65 66 69  |stem. It is defi|
00070fa0  6e 65 64 20 61 73 20 74  68 65 20 73 74 72 75 63  |ned as the struc|
00070fb0  74 75 72 65 3a 0a 0a 5c  7b 0a 20 20 20 20 69 6e  |ture:..\{.    in|
00070fc0  74 20 72 5b 31 30 5d 3b  0a 7d 00 00 44 41 54 41  |t r[10];.}..DATA|
00070fd0  65 01 00 00 6f 73 5f 72  6e 64 0a 53 79 6e 74 61  |e...os_rnd.Synta|
00070fe0  78 3a 09 75 6e 73 69 67  6e 65 64 20 6f 73 5f 72  |x:.unsigned os_r|
00070ff0  6e 64 20 28 69 6e 74 20  6e 29 3b 0a 48 65 61 64  |nd (int n);.Head|
00071000  65 72 3a 09 3c 72 6f 73  6c 69 62 2e 68 3d 3e 72  |er:.<roslib.h=>r|
00071010  6f 73 6c 69 62 3e 0a 0a  52 65 74 75 72 6e 73 3a  |oslib>..Returns:|
00071020  09 41 20 72 61 6e 64 6f  6d 20 6e 75 6d 62 65 72  |.A random number|
00071030  2c 20 6f 72 20 30 20 69  66 20 2f 6e 2f 20 69 73  |, or 0 if /n/ is|
00071040  20 6e 65 67 61 74 69 76  65 2e 0a 0a 54 68 69 73  | negative...This|
00071050  20 66 75 6e 63 74 69 6f  6e 20 67 65 6e 65 72 61  | function genera|
00071060  74 65 73 20 72 61 6e 64  6f 6d 20 6e 75 6d 62 65  |tes random numbe|
00071070  72 73 20 69 6e 20 74 68  65 20 72 61 6e 67 65 20  |rs in the range |
00071080  30 20 74 6f 20 2f 6e 2f  20 2d a0 31 2e 20 49 66  |0 to /n/ -.1. If|
00071090  20 2f 6e 2f 20 69 73 20  6e 65 67 61 74 69 76 65  | /n/ is negative|
000710a0  20 74 68 65 6e 20 69 74  20 72 65 73 65 65 64 73  | then it reseeds|
000710b0  20 74 68 65 20 72 61 6e  64 6f 6d 20 6e 75 6d 62  | the random numb|
000710c0  65 72 20 67 65 6e 65 72  61 74 6f 72 2e 20 41 66  |er generator. Af|
000710d0  74 65 72 20 72 65 73 65  65 64 69 6e 67 20 77 69  |ter reseeding wi|
000710e0  74 68 20 74 68 65 20 73  61 6d 65 20 6e 75 6d 62  |th the same numb|
000710f0  65 72 2c 20 74 68 65 20  73 61 6d 65 20 73 65 71  |er, the same seq|
00071100  75 65 6e 63 65 20 6f 66  20 72 61 6e 64 6f 6d 20  |uence of random |
00071110  6e 75 6d 62 65 72 73 20  77 69 6c 6c 20 61 6c 77  |numbers will alw|
00071120  61 79 73 20 62 65 20 67  65 6e 65 72 61 74 65 64  |ays be generated|
00071130  2e 00 00 00 44 41 54 41  e8 02 00 00 6f 73 5f 73  |....DATA....os_s|
00071140  6f 75 6e 64 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |ound.Syntax:.<os|
00071150  5f 65 72 72 6f 72 3e 20  2a 6f 73 5f 73 6f 75 6e  |_error> *os_soun|
00071160  64 20 28 69 6e 74 20 63  2c 20 69 6e 74 20 61 2c  |d (int c, int a,|
00071170  20 69 6e 74 20 70 2c 20  69 6e 74 20 64 29 3b 0a  | int p, int d);.|
00071180  48 65 61 64 65 72 3a 09  3c 72 6f 73 6c 69 62 2e  |Header:.<roslib.|
00071190  68 3d 3e 72 6f 73 6c 69  62 3e 0a 0a 52 65 74 75  |h=>roslib>..Retu|
000711a0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000711b0  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
000711c0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
000711d0  66 75 6e 63 74 69 6f 6e  20 67 65 6e 65 72 61 74  |function generat|
000711e0  65 73 20 61 20 73 6f 75  6e 64 20 77 69 74 68 20  |es a sound with |
000711f0  63 68 61 6e 6e 65 6c 2c  20 61 6d 70 6c 69 74 75  |channel, amplitu|
00071200  64 65 2c 20 70 69 74 63  68 20 61 6e 64 20 64 75  |de, pitch and du|
00071210  72 61 74 69 6f 6e 20 73  65 74 20 62 79 20 2f 63  |ration set by /c|
00071220  2f 2c 20 2f 61 2f 2c 20  2f 70 2f 20 61 6e 64 20  |/, /a/, /p/ and |
00071230  2f 64 2f 20 72 65 73 70  65 63 74 69 76 65 6c 79  |/d/ respectively|
00071240  2e 0a 0a 41 6d 70 6c 69  74 75 64 65 20 6d 61 79  |...Amplitude may|
00071250  20 62 65 20 65 69 74 68  65 72 20 30 2d 31 35 20  | be either 0-15 |
00071260  66 6f 72 20 6c 69 6e 65  61 72 20 63 6f 6e 74 72  |for linear contr|
00071270  6f 6c 2c 20 6f 72 20 30  78 31 30 30 20 74 6f 20  |ol, or 0x100 to |
00071280  30 78 31 37 46 20 66 6f  72 20 6c 6f 67 61 72 69  |0x17F for logari|
00071290  74 68 6d 69 63 20 63 6f  6e 74 72 6f 6c 20 69 6e  |thmic control in|
000712a0  20 77 68 69 63 68 20 63  61 73 65 20 62 69 74 20  | which case bit |
000712b0  37 20 73 65 74 20 6d 65  61 6e 73 20 73 6d 6f 6f  |7 set means smoo|
000712c0  74 68 20 70 69 74 63 68  20 63 68 61 6e 67 65 73  |th pitch changes|
000712d0  2e 20 49 6e 20 74 68 65  20 6c 6f 67 61 72 69 74  |. In the logarit|
000712e0  68 6d 69 63 20 73 63 61  6c 65 20 61 20 63 68 61  |hmic scale a cha|
000712f0  6e 67 65 20 6f 66 20 30  78 31 30 20 6d 65 61 6e  |nge of 0x10 mean|
00071300  73 20 61 20 64 6f 75 62  6c 69 6e 67 20 6f 72 20  |s a doubling or |
00071310  68 61 6c 76 69 6e 67 20  6f 66 20 76 6f 6c 75 6d  |halving of volum|
00071320  65 2e 0a 0a 3c 50 69 74  63 68 3d 3e 73 6f 75 6e  |e...<Pitch=>soun|
00071330  64 5f 70 69 74 63 68 5f  3e 20 6d 61 79 20 62 65  |d_pitch_> may be|
00071340  20 65 69 74 68 65 72 20  30 2d 32 35 35 20 69 6e  | either 0-255 in|
00071350  20 71 75 61 72 74 65 72  2d 73 65 6d 69 74 6f 6e  | quarter-semiton|
00071360  65 20 73 74 65 70 73 2c  20 6f 72 20 30 78 31 30  |e steps, or 0x10|
00071370  30 20 74 6f 20 30 78 37  46 46 20 66 6f 72 20 66  |0 to 0x7FF for f|
00071380  69 6e 65 20 63 6f 6e 74  72 6f 6c 20 28 34 30 39  |ine control (409|
00071390  36 20 73 74 65 70 73 20  70 65 72 20 6f 63 74 61  |6 steps per octa|
000713a0  76 65 21 29 20 69 6e 20  77 68 69 63 68 20 63 61  |ve!) in which ca|
000713b0  73 65 20 62 69 74 73 20  30 2d 31 31 20 72 65 70  |se bits 0-11 rep|
000713c0  72 65 73 65 6e 74 20 74  68 65 20 6e 6f 74 65 20  |resent the note |
000713d0  61 6e 64 20 62 69 74 73  20 31 32 2d 31 34 20 72  |and bits 12-14 r|
000713e0  65 70 72 65 73 65 6e 74  20 74 68 65 20 6f 63 74  |epresent the oct|
000713f0  61 76 65 2e 0a 0a 44 75  72 61 74 69 6f 6e 20 69  |ave...Duration i|
00071400  73 20 69 6e 20 74 77 65  6e 74 69 65 74 68 73 20  |s in twentieths |
00071410  6f 66 20 61 20 73 65 63  6f 6e 64 2e 44 41 54 41  |of a second.DATA|
00071420  09 02 00 00 6f 73 5f 73  77 69 0a 53 79 6e 74 61  |....os_swi.Synta|
00071430  78 3a 09 76 6f 69 64 20  6f 73 5f 73 77 69 20 28  |x:.void os_swi (|
00071440  69 6e 74 20 6e 2c 20 3c  6f 73 5f 72 65 67 73 65  |int n, <os_regse|
00071450  74 3e 20 2a 72 29 3b 0a  48 65 61 64 65 72 3a 09  |t> *r);.Header:.|
00071460  3c 72 6f 73 6c 69 62 2e  68 3d 3e 72 6f 73 6c 69  |<roslib.h=>rosli|
00071470  62 3e 09 28 45 61 73 79  20 43 29 0a 09 3c 6f 73  |b>.(Easy C)..<os|
00071480  2e 68 3d 3e 6f 73 3e 09  28 44 65 73 6b 74 6f 70  |.h=>os>.(Desktop|
00071490  20 43 29 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  | C)..This functi|
000714a0  6f 6e 20 63 61 6c 6c 73  20 61 20 3c 53 57 49 3d  |on calls a <SWI=|
000714b0  3e 53 57 49 3a 21 52 6f  6f 74 3e 2c 20 77 68 6f  |>SWI:!Root>, who|
000714c0  73 65 20 6e 75 6d 62 65  72 20 69 73 20 67 69 76  |se number is giv|
000714d0  65 6e 20 69 6e 20 2f 6e  2f 2e 20 54 68 65 20 72  |en in /n/. The r|
000714e0  65 67 69 73 74 65 72 73  20 52 30 2d 52 39 20 61  |egisters R0-R9 a|
000714f0  72 65 20 73 65 74 20 74  6f 20 61 6e 64 20 72 65  |re set to and re|
00071500  74 75 72 6e 65 64 20 69  6e 20 74 68 65 20 76 61  |turned in the va|
00071510  6c 75 65 73 20 69 6e 20  2f 72 2f 2e 0a 0a 49 66  |lues in /r/...If|
00071520  20 61 6e 20 65 72 72 6f  72 20 6f 63 63 75 72 73  | an error occurs|
00071530  20 69 74 20 69 73 20 72  65 70 6f 72 74 65 64 20  | it is reported |
00071540  62 79 20 74 68 65 20 6f  70 65 72 61 74 69 6e 67  |by the operating|
00071550  20 73 79 73 74 65 6d 20  61 6e 64 20 79 6f 75 72  | system and your|
00071560  20 70 72 6f 67 72 61 6d  20 77 69 6c 6c 20 68 61  | program will ha|
00071570  6c 74 20 65 78 65 63 75  74 69 6f 6e 2e 0a 0a 41  |lt execution...A|
00071580  20 6e 75 6d 62 65 72 20  6f 66 20 6d 61 63 72 6f  | number of macro|
00071590  73 20 61 6c 6c 6f 77 69  6e 67 20 74 68 65 20 53  |s allowing the S|
000715a0  57 49 20 6e 75 6d 62 65  72 73 20 74 6f 20 62 65  |WI numbers to be|
000715b0  20 6d 61 64 65 20 6d 6f  72 65 20 72 65 61 64 61  | made more reada|
000715c0  62 6c 65 20 74 6f 20 68  75 6d 61 6e 73 20 61 72  |ble to humans ar|
000715d0  65 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 73 77  |e defined in <sw|
000715e0  69 73 2e 68 3d 3e 73 77  69 73 3e 20 28 45 61 73  |is.h=>swis> (Eas|
000715f0  79 20 43 29 2e 0a 0a 44  65 73 6b 74 6f 70 20 43  |y C)...Desktop C|
00071600  20 70 72 6f 76 69 64 65  73 20 3c 6f 74 68 65 72  | provides <other|
00071610  20 53 57 49 20 63 61 6c  6c 73 3d 3e 6f 73 5f 73  | SWI calls=>os_s|
00071620  77 69 5f 3e 2e 00 00 00  44 41 54 41 9c 02 00 00  |wi_>....DATA....|
00071630  44 65 73 6b 74 6f 70 20  43 20 6f 73 5f 73 77 69  |Desktop C os_swi|
00071640  28 29 20 43 61 6c 6c 73  0a 54 68 65 73 65 20 66  |() Calls.These f|
00071650  75 6e 63 74 69 6f 6e 73  20 61 6c 6c 20 70 65 72  |unctions all per|
00071660  66 6f 72 6d 20 53 57 49  73 2e 20 54 68 65 20 66  |form SWIs. The f|
00071670  75 6e 63 74 69 6f 6e 73  20 61 72 65 20 6f 66 20  |unctions are of |
00071680  74 68 65 20 66 6f 72 6d  3a 0a 0a 3c 6f 73 5f 65  |the form:..<os_e|
00071690  72 72 6f 72 3e 20 2a 6f  73 5f 73 77 69 4e 5b 72  |rror> *os_swiN[r|
000716a0  5d 28 69 6e 74 20 6e 2c  20 5b 5c 7b 69 6e 74 7d  |](int n, [\{int}|
000716b0  5d 2c 20 5b 5c 7b 69 6e  74 20 2a 7d 5d 29 3b 0a  |], [\{int *}]);.|
000716c0  0a 57 68 65 72 65 20 2f  4e 2f 20 69 73 20 74 68  |.Where /N/ is th|
000716d0  65 20 6e 75 6d 62 65 72  20 6f 66 20 72 65 67 69  |e number of regi|
000716e0  73 74 65 72 73 20 28 30  2d 34 2c 36 29 20 74 6f  |sters (0-4,6) to|
000716f0  20 62 65 20 70 61 73 73  65 64 20 74 6f 20 74 68  | be passed to th|
00071700  65 20 63 61 6c 6c 20 28  61 6e 64 20 72 65 74 75  |e call (and retu|
00071710  72 6e 65 64 29 2e 20 49  66 20 2f 72 2f 20 69 73  |rned). If /r/ is|
00071720  20 70 72 65 73 65 6e 74  20 74 68 65 6e 20 72 65  | present then re|
00071730  67 69 73 74 65 72 73 20  61 72 65 20 72 65 74 75  |gisters are retu|
00071740  72 6e 65 64 20 61 73 20  77 65 6c 6c 2e 0a 0a 54  |rned as well...T|
00071750  68 65 20 72 65 67 69 73  74 65 72 73 20 74 6f 20  |he registers to |
00071760  62 65 20 70 61 73 73 65  64 20 74 6f 20 74 68 65  |be passed to the|
00071770  20 53 57 49 20 61 72 65  20 67 69 76 65 6e 20 61  | SWI are given a|
00071780  73 20 69 6e 74 65 67 65  72 20 61 72 67 75 6d 65  |s integer argume|
00071790  6e 74 73 2e 20 54 68 65  20 72 65 67 69 73 74 65  |nts. The registe|
000717a0  72 73 20 74 6f 20 62 65  20 70 61 73 73 65 64 20  |rs to be passed |
000717b0  62 61 63 6b 20 61 72 65  20 67 69 76 65 6e 20 61  |back are given a|
000717c0  73 20 69 6e 74 65 67 65  72 20 70 6f 69 6e 74 65  |s integer pointe|
000717d0  72 73 2e 0a 0a 49 66 20  74 68 65 20 53 57 49 20  |rs...If the SWI |
000717e0  6e 75 6d 62 65 72 20 68  61 73 20 69 74 73 20 58  |number has its X|
000717f0  20 62 69 74 20 73 65 74  2c 20 74 68 65 6e 20 74  | bit set, then t|
00071800  68 65 20 58 20 66 6f 72  6d 20 6f 66 20 74 68 65  |he X form of the|
00071810  20 53 57 49 20 77 69 6c  6c 20 62 65 20 63 61 6c  | SWI will be cal|
00071820  6c 65 64 20 61 6e 64 20  61 20 70 6f 69 6e 74 65  |led and a pointe|
00071830  72 20 74 6f 20 61 6e 20  65 72 72 6f 72 20 72 65  |r to an error re|
00071840  74 75 72 6e 65 64 20 69  66 20 74 68 65 72 65 20  |turned if there |
00071850  69 73 20 6f 6e 65 2e 20  4f 74 68 65 72 77 69 73  |is one. Otherwis|
00071860  65 2c 20 74 68 65 20 6e  6f 72 6d 61 6c 20 66 6f  |e, the normal fo|
00071870  72 6d 20 77 69 6c 6c 20  62 65 20 63 61 6c 6c 65  |rm will be calle|
00071880  64 20 61 6e 64 20 74 68  65 20 66 75 6e 63 74 69  |d and the functi|
00071890  6f 6e 20 72 65 74 75 72  6e 73 20 3c 4e 55 4c 4c  |on returns <NULL|
000718a0  3e 2e 20 59 6f 75 20 73  68 6f 75 6c 64 20 61 6c  |>. You should al|
000718b0  77 61 79 73 20 75 73 65  20 74 68 65 20 58 20 66  |ways use the X f|
000718c0  6f 72 6d 2e 44 41 54 41  e6 01 00 00 6f 73 5f 73  |orm.DATA....os_s|
000718d0  77 69 78 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |wix.Syntax:.<os_|
000718e0  65 72 72 6f 72 3e 20 2a  6f 73 5f 73 77 69 78 20  |error> *os_swix |
000718f0  28 69 6e 74 20 6e 2c 20  3c 6f 73 5f 72 65 67 73  |(int n, <os_regs|
00071900  65 74 3e 20 2a 72 29 3b  0a 48 65 61 64 65 72 3a  |et> *r);.Header:|
00071910  09 3c 72 6f 73 6c 69 62  2e 68 3d 3e 72 6f 73 6c  |.<roslib.h=>rosl|
00071920  69 62 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |ib>..Returns:.Po|
00071930  69 6e 74 65 72 20 74 6f  20 61 6e 20 65 72 72 6f  |inter to an erro|
00071940  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
00071950  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
00071960  74 69 6f 6e 20 63 61 6c  6c 73 20 61 20 3c 53 57  |tion calls a <SW|
00071970  49 3d 3e 53 57 49 3a 21  52 6f 6f 74 3e 2c 20 77  |I=>SWI:!Root>, w|
00071980  68 6f 73 65 20 6e 75 6d  62 65 72 20 69 73 20 67  |hose number is g|
00071990  69 76 65 6e 20 69 6e 20  2f 6e 2f 2e 20 54 68 65  |iven in /n/. The|
000719a0  20 72 65 67 69 73 74 65  72 73 20 52 30 2d 52 39  | registers R0-R9|
000719b0  20 61 72 65 20 73 65 74  20 74 6f 20 61 6e 64 20  | are set to and |
000719c0  72 65 74 75 72 6e 65 64  20 69 6e 20 74 68 65 20  |returned in the |
000719d0  76 61 6c 75 65 73 20 69  6e 20 2f 72 2f 2e 0a 0a  |values in /r/...|
000719e0  49 66 20 61 6e 20 65 72  72 6f 72 20 6f 63 63 75  |If an error occu|
000719f0  72 73 20 69 74 20 69 73  20 72 65 74 75 72 6e 65  |rs it is returne|
00071a00  64 20 62 79 20 74 68 65  20 66 75 6e 63 74 69 6f  |d by the functio|
00071a10  6e 20 61 6e 64 20 6e 6f  74 20 72 65 70 6f 72 74  |n and not report|
00071a20  65 64 20 62 79 20 74 68  65 20 6f 70 65 72 61 74  |ed by the operat|
00071a30  69 6e 67 20 73 79 73 74  65 6d 2e 0a 0a 41 20 6e  |ing system...A n|
00071a40  75 6d 62 65 72 20 6f 66  20 6d 61 63 72 6f 73 20  |umber of macros |
00071a50  61 6c 6c 6f 77 69 6e 67  20 74 68 65 20 53 57 49  |allowing the SWI|
00071a60  20 6e 75 6d 62 65 72 73  20 74 6f 20 62 65 20 6d  | numbers to be m|
00071a70  61 64 65 20 6d 6f 72 65  20 72 65 61 64 61 62 6c  |ade more readabl|
00071a80  65 20 74 6f 20 68 75 6d  61 6e 73 20 61 72 65 20  |e to humans are |
00071a90  64 65 66 69 6e 65 64 20  69 6e 20 3c 73 77 69 73  |defined in <swis|
00071aa0  2e 68 3d 3e 73 77 69 73  3e 2e 00 00 44 41 54 41  |.h=>swis>...DATA|
00071ab0  11 01 00 00 6f 73 5f 74  61 62 0a 53 79 6e 74 61  |....os_tab.Synta|
00071ac0  78 3a 09 76 6f 69 64 20  6f 73 5f 74 61 62 20 28  |x:.void os_tab (|
00071ad0  69 6e 74 20 78 2c 20 69  6e 74 20 79 29 3b 0a 48  |int x, int y);.H|
00071ae0  65 61 64 65 72 3a 09 3c  72 6f 73 6c 69 62 2e 68  |eader:.<roslib.h|
00071af0  3d 3e 72 6f 73 6c 69 62  3e 0a 0a 54 68 69 73 20  |=>roslib>..This |
00071b00  66 75 6e 63 74 69 6f 6e  20 6d 6f 76 65 73 20 74  |function moves t|
00071b10  68 65 20 74 65 78 74 20  63 75 72 73 6f 72 20 74  |he text cursor t|
00071b20  6f 20 70 6f 73 69 74 69  6f 6e 20 7b 2f 7d 28 78  |o position {/}(x|
00071b30  2c 79 29 7b 2f 7d 2e 20  49 66 20 2f 78 2f 20 6f  |,y){/}. If /x/ o|
00071b40  72 20 2f 79 2f 20 61 72  65 20 6f 75 74 73 69 64  |r /y/ are outsid|
00071b50  65 20 74 68 65 20 63 75  72 72 65 6e 74 20 74 65  |e the current te|
00071b60  78 74 20 77 69 6e 64 6f  77 2c 20 74 68 65 20 66  |xt window, the f|
00071b70  75 6e 63 74 69 6f 6e 20  64 6f 65 73 20 6e 6f 74  |unction does not|
00071b80  20 6d 6f 76 65 20 74 68  65 20 63 75 72 73 6f 72  | move the cursor|
00071b90  2e 20 54 68 69 73 20 69  73 20 65 71 75 69 76 61  |. This is equiva|
00071ba0  6c 65 6e 74 20 74 6f 20  3c 56 44 55 20 33 31 2c  |lent to <VDU 31,|
00071bb0  78 2c 79 3d 3e 56 44 55  3a 33 31 3e 2e 00 00 00  |x,y=>VDU:31>....|
00071bc0  44 41 54 41 3c 02 00 00  6f 73 5f 74 69 6e 74 0a  |DATA<...os_tint.|
00071bd0  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 6f 73 5f  |Syntax:.void os_|
00071be0  74 69 6e 74 20 28 69 6e  74 20 63 2c 20 69 6e 74  |tint (int c, int|
00071bf0  20 74 29 3b 0a 48 65 61  64 65 72 3a 09 3c 72 6f  | t);.Header:.<ro|
00071c00  73 6c 69 62 2e 68 3d 3e  72 6f 73 6c 69 62 3e 0a  |slib.h=>roslib>.|
00071c10  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 73  |.This function s|
00071c20  65 74 73 20 74 68 65 20  74 69 6e 74 20 28 69 65  |ets the tint (ie|
00071c30  20 74 68 65 20 61 6d 6f  75 6e 74 20 6f 66 20 77  | the amount of w|
00071c40  68 69 74 65 20 61 64 64  65 64 29 20 66 6f 72 20  |hite added) for |
00071c50  61 20 63 6f 6c 6f 75 72  20 28 32 35 36 20 63 6f  |a colour (256 co|
00071c60  6c 6f 75 72 20 6d 6f 64  65 73 20 6f 6e 6c 79 29  |lour modes only)|
00071c70  2e 20 54 68 65 20 63 6f  6c 6f 75 72 20 66 6f 72  |. The colour for|
00071c80  20 77 68 69 63 68 20 74  68 65 20 74 69 6e 74 20  | which the tint |
00071c90  69 73 20 73 65 74 20 69  73 20 73 70 65 63 69 66  |is set is specif|
00071ca0  69 65 64 20 62 79 20 63  2c 20 77 68 69 63 68 20  |ied by c, which |
00071cb0  6d 61 79 20 62 65 20 61  6e 79 20 6f 66 20 74 68  |may be any of th|
00071cc0  65 20 66 6f 6c 6c 6f 77  69 6e 67 3a 0a 0a 23 69  |e following:..#i|
00071cd0  6e 64 65 6e 74 20 34 3b  74 61 62 0a 30 09 54 65  |ndent 4;tab.0.Te|
00071ce0  78 74 20 66 6f 72 65 67  72 6f 75 6e 64 20 63 6f  |xt foreground co|
00071cf0  6c 6f 75 72 0a 31 09 54  65 78 74 20 62 61 63 6b  |lour.1.Text back|
00071d00  67 72 6f 75 6e 64 20 63  6f 6c 6f 75 72 0a 32 09  |ground colour.2.|
00071d10  47 72 61 70 68 69 63 73  20 66 6f 72 65 67 72 6f  |Graphics foregro|
00071d20  75 6e 64 20 63 6f 6c 6f  75 72 0a 33 09 47 72 61  |und colour.3.Gra|
00071d30  70 68 69 63 73 20 62 61  63 6b 67 72 6f 75 6e 64  |phics background|
00071d40  20 63 6f 6c 6f 75 72 2e  0a 23 69 6e 64 65 6e 74  | colour..#indent|
00071d50  0a 0a 54 68 65 20 74 69  6e 74 2c 20 67 69 76 65  |..The tint, give|
00071d60  6e 20 69 6e 20 2f 74 2f  2c 20 73 68 6f 75 6c 64  |n in /t/, should|
00071d70  20 62 65 20 65 69 74 68  65 72 20 30 78 30 30 2c  | be either 0x00,|
00071d80  20 30 78 34 30 2c 20 30  78 38 30 20 6f 72 20 30  | 0x40, 0x80 or 0|
00071d90  78 43 30 2e 20 54 68 65  20 68 69 67 68 65 72 20  |xC0. The higher |
00071da0  69 74 20 69 73 2c 20 74  68 65 20 62 72 69 67 68  |it is, the brigh|
00071db0  74 65 72 20 74 68 65 20  63 6f 6c 6f 75 72 20 69  |ter the colour i|
00071dc0  73 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |s...This functio|
00071dd0  6e 20 69 73 20 65 71 75  69 76 61 6c 65 6e 74 20  |n is equivalent |
00071de0  74 6f 20 3c 56 44 55 20  32 33 2c 31 37 3d 3e 56  |to <VDU 23,17=>V|
00071df0  44 55 3a 32 33 2c 31 37  2c 30 3e 2e 44 41 54 41  |DU:23,17,0>.DATA|
00071e00  0e 01 00 00 6f 73 5f 76  64 75 0a 53 79 6e 74 61  |....os_vdu.Synta|
00071e10  78 3a 09 76 6f 69 64 20  6f 73 5f 76 64 75 20 28  |x:.void os_vdu (|
00071e20  69 6e 74 20 3c 63 3d 3e  56 44 55 3a 21 52 6f 6f  |int <c=>VDU:!Roo|
00071e30  74 3e 29 3b 0a 48 65 61  64 65 72 3a 09 3c 72 6f  |t>);.Header:.<ro|
00071e40  73 6c 69 62 2e 68 3d 3e  72 6f 73 6c 69 62 3e 0a  |slib.h=>roslib>.|
00071e50  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 73  |.This function s|
00071e60  65 6e 64 73 20 74 68 65  20 73 69 6e 67 6c 65 20  |ends the single |
00071e70  63 68 61 72 61 63 74 65  72 20 73 70 65 63 69 66  |character specif|
00071e80  69 65 64 20 69 6e 20 2f  63 2f 20 74 6f 20 74 68  |ied in /c/ to th|
00071e90  65 20 56 44 55 20 64 72  69 76 65 72 73 20 28 61  |e VDU drivers (a|
00071ea0  73 20 69 66 20 3c 4f 53  5f 57 72 69 74 65 43 3d  |s if <OS_WriteC=|
00071eb0  3e 53 57 49 3a 4f 53 5f  57 72 69 74 65 43 3e 20  |>SWI:OS_WriteC> |
00071ec0  68 61 64 20 62 65 65 6e  20 63 61 6c 6c 65 64 29  |had been called)|
00071ed0  2e 20 2f 63 2f 20 69 73  20 61 20 73 69 6e 67 6c  |. /c/ is a singl|
00071ee0  65 20 62 79 74 65 2c 20  61 6c 74 68 6f 75 67 68  |e byte, although|
00071ef0  20 69 74 20 69 73 20 73  74 6f 72 65 64 20 69 6e  | it is stored in|
00071f00  20 61 6e 20 2f 69 6e 74  2f 2e 00 00 44 41 54 41  | an /int/...DATA|
00071f10  f3 00 00 00 6f 73 5f 76  64 75 71 0a 53 79 6e 74  |....os_vduq.Synt|
00071f20  61 78 3a 09 76 6f 69 64  20 6f 73 5f 76 64 75 71  |ax:.void os_vduq|
00071f30  20 28 69 6e 74 20 63 2c  20 2e 2e 2e 29 3b 0a 48  | (int c, ...);.H|
00071f40  65 61 64 65 72 3a 09 3c  72 6f 73 6c 69 62 2e 68  |eader:.<roslib.h|
00071f50  3d 3e 72 6f 73 6c 69 62  3e 0a 0a 54 68 69 73 20  |=>roslib>..This |
00071f60  66 75 6e 63 74 69 6f 6e  20 73 65 6e 64 73 20 61  |function sends a|
00071f70  20 73 65 71 75 65 6e 63  65 20 6f 66 20 62 79 74  | sequence of byt|
00071f80  65 73 20 74 6f 20 74 68  65 20 56 44 55 20 64 72  |es to the VDU dr|
00071f90  69 76 65 72 73 2e 20 45  61 63 68 20 62 79 74 65  |ivers. Each byte|
00071fa0  20 74 61 6b 65 73 20 6f  6e 65 20 61 72 67 75 6d  | takes one argum|
00071fb0  65 6e 74 2e 20 49 74 20  69 73 20 69 64 65 6e 74  |ent. It is ident|
00071fc0  69 63 61 6c 20 69 6e 20  6f 70 65 72 61 74 69 6f  |ical in operatio|
00071fd0  6e 20 74 6f 20 3c 6f 73  5f 76 64 75 3e 2c 20 62  |n to <os_vdu>, b|
00071fe0  75 74 20 63 61 6e 20 73  65 6e 64 20 6d 6f 72 65  |ut can send more|
00071ff0  20 74 68 61 6e 20 6f 6e  65 20 62 79 74 65 2e 00  | than one byte..|
00072000  44 41 54 41 2d 01 00 00  6f 73 5f 76 64 75 77 0a  |DATA-...os_vduw.|
00072010  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 6f 73 5f  |Syntax:.void os_|
00072020  76 64 75 77 20 28 69 6e  74 20 6e 29 3b 0a 48 65  |vduw (int n);.He|
00072030  61 64 65 72 3a 09 3c 72  6f 73 6c 69 62 2e 68 3d  |ader:.<roslib.h=|
00072040  3e 72 6f 73 6c 69 62 3e  0a 0a 54 68 69 73 20 66  |>roslib>..This f|
00072050  75 6e 63 74 69 6f 6e 20  73 65 6e 64 20 74 68 65  |unction send the|
00072060  20 31 36 2d 62 69 74 20  76 61 6c 75 65 20 69 6e  | 16-bit value in|
00072070  20 2f 6e 2f 20 74 6f 20  74 68 65 20 56 44 55 20  | /n/ to the VDU |
00072080  64 72 69 76 65 72 20 61  73 20 74 77 6f 20 62 79  |driver as two by|
00072090  74 65 73 2c 20 6c 6f 77  65 72 20 62 79 74 65 20  |tes, lower byte |
000720a0  66 69 72 73 74 20 28 6c  69 74 74 6c 65 20 65 6e  |first (little en|
000720b0  64 69 61 6e 29 2e 20 49  74 20 77 6f 75 6c 64 20  |dian). It would |
000720c0  74 79 70 69 63 61 6c 6c  79 20 62 65 20 75 73 65  |typically be use|
000720d0  64 20 66 6f 72 20 73 65  6e 64 69 6e 67 20 73 63  |d for sending sc|
000720e0  72 65 65 6e 20 63 6f 6f  72 64 69 6e 61 74 65 73  |reen coordinates|
000720f0  20 74 6f 20 74 68 65 20  56 44 55 20 64 72 69 76  | to the VDU driv|
00072100  65 72 73 2c 20 61 73 20  74 68 65 73 65 20 61 72  |ers, as these ar|
00072110  65 20 61 6c 77 61 79 73  20 74 77 6f 2d 62 79 74  |e always two-byt|
00072120  65 20 71 75 61 6e 74 69  74 69 65 73 2e 00 00 00  |e quantities....|
00072130  44 41 54 41 cd 00 00 00  6f 73 5f 76 70 6f 73 0a  |DATA....os_vpos.|
00072140  53 79 6e 74 61 78 3a 09  69 6e 74 20 6f 73 5f 76  |Syntax:.int os_v|
00072150  70 6f 73 20 28 76 6f 69  64 29 3b 0a 48 65 61 64  |pos (void);.Head|
00072160  65 72 3a 09 3c 72 6f 73  6c 69 62 2e 68 3d 3e 72  |er:.<roslib.h=>r|
00072170  6f 73 6c 69 62 3e 0a 0a  52 65 74 75 72 6e 73 3a  |oslib>..Returns:|
00072180  09 54 68 65 20 63 75 72  73 6f 72 20 70 6f 73 69  |.The cursor posi|
00072190  74 69 6f 6e 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |tion...This func|
000721a0  74 69 6f 6e 20 72 65 61  64 73 20 74 68 65 20 59  |tion reads the Y|
000721b0  20 63 6f 6f 72 64 69 6e  61 74 65 20 6f 66 20 74  | coordinate of t|
000721c0  68 65 20 74 65 78 74 20  63 75 72 73 6f 72 2c 20  |he text cursor, |
000721d0  66 72 6f 6d 20 74 68 65  20 74 6f 70 20 65 64 67  |from the top edg|
000721e0  65 20 6f 66 20 74 68 65  20 63 75 72 72 65 6e 74  |e of the current|
000721f0  20 74 65 78 74 20 77 69  6e 64 6f 77 2e 00 00 00  | text window....|
00072200  44 41 54 41 1a 02 00 00  6f 73 5f 77 6f 72 64 2f  |DATA....os_word/|
00072210  4f 53 5f 57 6f 72 64 0a  53 79 6e 74 61 78 3a 09  |OS_Word.Syntax:.|
00072220  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 6f 73 5f 77  |<os_error> *os_w|
00072230  6f 72 64 20 28 69 6e 74  20 72 30 2c 20 76 6f 69  |ord (int r0, voi|
00072240  64 20 2a 72 31 29 3b 0a  48 65 61 64 65 72 73 3a  |d *r1);.Headers:|
00072250  09 3c 72 6f 73 6c 69 62  2e 68 3d 3e 72 6f 73 6c  |.<roslib.h=>rosl|
00072260  69 62 3e 09 28 45 61 73  79 20 43 29 0a 09 3c 6f  |ib>.(Easy C)..<o|
00072270  73 2e 68 3d 3e 6f 73 3e  09 28 44 65 73 6b 74 6f  |s.h=>os>.(Deskto|
00072280  70 20 43 29 0a 0a 53 79  6e 74 61 78 3a 09 3c 6f  |p C)..Syntax:.<o|
00072290  73 5f 65 72 72 6f 72 3e  20 2a 4f 53 5f 57 6f 72  |s_error> *OS_Wor|
000722a0  64 20 28 3c 6f 73 77 6f  72 64 5f 6e 75 6d 62 65  |d (<osword_numbe|
000722b0  72 3e 20 72 30 2c 20 76  6f 69 64 20 2a 72 31 29  |r> r0, void *r1)|
000722c0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000722d0  69 62 3a 4b 65 72 6e 65  6c 53 57 49 73 2e 68 3d  |ib:KernelSWIs.h=|
000722e0  3e 4b 65 72 6e 65 6c 53  57 49 73 3e 0a 0a 52 65  |>KernelSWIs>..Re|
000722f0  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
00072300  6f 20 61 6e 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |o an error, or <|
00072310  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
00072320  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 63 61  |This function ca|
00072330  6c 6c 73 20 74 68 65 20  3c 4f 53 5f 57 6f 72 64  |lls the <OS_Word|
00072340  3d 3e 53 57 49 3a 4f 53  5f 57 6f 72 64 3e 20 53  |=>SWI:OS_Word> S|
00072350  57 49 20 77 69 74 68 20  74 68 65 20 72 65 67 69  |WI with the regi|
00072360  73 74 65 72 20 52 30 20  73 65 74 20 74 6f 20 74  |ster R0 set to t|
00072370  68 65 20 76 61 6c 75 65  20 70 61 73 73 65 64 20  |he value passed |
00072380  69 6e 20 7b 2f 7d 72 30  7b 2f 7d 2c 20 61 6e 64  |in {/}r0{/}, and|
00072390  20 74 68 65 20 72 65 67  69 73 74 65 72 20 52 31  | the register R1|
000723a0  20 73 65 74 20 74 6f 20  74 68 65 20 70 6f 69 6e  | set to the poin|
000723b0  74 65 72 20 7b 2f 7d 72  31 7b 2f 7d 2c 20 77 68  |ter {/}r1{/}, wh|
000723c0  69 63 68 20 70 6f 69 6e  74 73 20 74 6f 20 61 20  |ich points to a |
000723d0  70 61 72 61 6d 65 74 65  72 20 62 6c 6f 63 6b 2e  |parameter block.|
000723e0  20 56 61 6c 75 65 73 20  61 72 65 20 72 65 61 64  | Values are read|
000723f0  20 66 72 6f 6d 20 61 6e  64 20 72 65 74 75 72 6e  | from and return|
00072400  65 64 20 69 6e 20 74 68  65 20 70 61 72 61 6d 65  |ed in the parame|
00072410  74 65 72 20 62 6c 6f 63  6b 2e 00 00 44 41 54 41  |ter block...DATA|
00072420  70 01 00 00 4f 53 5f 52  65 61 64 4d 6f 64 65 56  |p...OS_ReadModeV|
00072430  61 72 69 61 62 6c 65 0a  53 79 6e 74 61 78 3a 09  |ariable.Syntax:.|
00072440  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 4f 53 5f 52  |<os_error> *OS_R|
00072450  65 61 64 4d 6f 64 65 56  61 72 69 61 62 6c 65 20  |eadModeVariable |
00072460  28 69 6e 74 20 6d 6f 64  65 2c 20 3c 6d 6f 64 65  |(int mode, <mode|
00072470  5f 76 61 72 69 61 62 6c  65 3e 20 76 61 72 2c 20  |_variable> var, |
00072480  69 6e 74 20 2a 76 61 6c  75 65 29 3b 0a 48 65 61  |int *value);.Hea|
00072490  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 4b 65  |der:.<DeskLib:Ke|
000724a0  72 6e 65 6c 53 57 49 73  2e 68 3d 3e 4b 65 72 6e  |rnelSWIs.h=>Kern|
000724b0  65 6c 53 57 49 73 3e 0a  0a 52 65 74 75 72 6e 73  |elSWIs>..Returns|
000724c0  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
000724d0  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
000724e0  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
000724f0  63 74 69 6f 6e 20 72 65  61 64 73 20 61 20 3c 6d  |ction reads a <m|
00072500  6f 64 65 20 76 61 72 69  61 62 6c 65 3d 3e 53 57  |ode variable=>SW|
00072510  49 3a 4f 53 5f 52 65 61  64 4d 6f 64 65 56 61 72  |I:OS_ReadModeVar|
00072520  69 61 62 6c 65 2e 76 61  72 69 61 62 6c 65 73 3e  |iable.variables>|
00072530  20 66 6f 72 20 74 68 65  20 73 63 72 65 65 6e 20  | for the screen |
00072540  6d 6f 64 65 20 2f 6d 6f  64 65 2f 20 28 2d 31 20  |mode /mode/ (-1 |
00072550  66 6f 72 20 74 68 65 20  63 75 72 72 65 6e 74 20  |for the current |
00072560  6d 6f 64 65 29 20 61 6e  64 20 72 65 74 75 72 6e  |mode) and return|
00072570  73 20 69 74 73 20 76 61  6c 75 65 20 69 6e 20 7b  |s its value in {|
00072580  2f 7d 2a 76 61 6c 75 65  7b 2f 7d 2e 44 49 52 24  |/}*value{/}.DIR$|
00072590  2c 00 00 00 2c 00 00 00  b8 25 07 00 46 ff ff ff  |,...,....%..F...|
000725a0  1b 5b 3e 25 e1 0d 00 00  13 00 00 00 00 00 00 00  |.[>%............|
000725b0  6e 75 6d 62 65 72 00 00  44 41 54 41 e1 0d 00 00  |number..DATA....|
000725c0  6f 73 62 79 74 65 5f 6e  75 6d 62 65 72 0a 54 68  |osbyte_number.Th|
000725d0  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
000725e0  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 4b  |ed in <DeskLib:K|
000725f0  65 72 6e 65 6c 53 57 49  73 3d 3e 4b 65 72 6e 65  |ernelSWIs=>Kerne|
00072600  6c 53 57 49 73 3e 2e 20  49 74 20 69 73 20 61 6e  |lSWIs>. It is an|
00072610  20 65 6e 75 6d 65 72 61  74 65 64 20 74 79 70 65  | enumerated type|
00072620  20 67 69 76 69 6e 67 20  6e 61 6d 65 73 20 74 6f  | giving names to|
00072630  20 6d 6f 73 74 20 3c 4f  53 5f 42 79 74 65 3d 3e  | most <OS_Byte=>|
00072640  4f 53 5f 42 79 74 65 5f  3e 20 63 61 6c 6c 73 3a  |OS_Byte_> calls:|
00072650  0a 0a 5c 7b 0a 20 20 6f  73 62 79 74 65 5f 44 49  |..\{.  osbyte_DI|
00072660  53 50 4c 41 59 4f 53 56  45 52 53 49 4f 4e 20 3d  |SPLAYOSVERSION =|
00072670  20 30 2c 0a 20 20 6f 73  62 79 74 65 5f 53 50 45  | 0,.  osbyte_SPE|
00072680  43 49 46 59 49 4e 50 55  54 20 3d 20 32 2c 0a 20  |CIFYINPUT = 2,. |
00072690  20 6f 73 62 79 74 65 5f  53 50 45 43 49 46 59 4f  | osbyte_SPECIFYO|
000726a0  55 54 50 55 54 2c 0a 20  20 6f 73 62 79 74 65 5f  |UTPUT,.  osbyte_|
000726b0  43 55 52 53 4f 52 4b 45  59 53 54 41 54 55 53 2c  |CURSORKEYSTATUS,|
000726c0  0a 20 20 6f 73 62 79 74  65 5f 57 52 49 54 45 50  |.  osbyte_WRITEP|
000726d0  52 49 4e 54 45 52 44 52  49 56 45 52 54 59 50 45  |RINTERDRIVERTYPE|
000726e0  2c 0a 20 20 6f 73 62 79  74 65 5f 57 52 49 54 45  |,.  osbyte_WRITE|
000726f0  50 52 49 4e 54 45 52 49  47 4e 4f 52 45 43 48 41  |PRINTERIGNORECHA|
00072700  52 2c 0a 20 20 6f 73 62  79 74 65 5f 57 52 49 54  |R,.  osbyte_WRIT|
00072710  45 52 53 34 32 33 52 58  52 41 54 45 2c 0a 20 20  |ERS423RXRATE,.  |
00072720  6f 73 62 79 74 65 5f 57  52 49 54 45 52 53 34 32  |osbyte_WRITERS42|
00072730  33 54 58 52 41 54 45 2c  0a 20 20 6f 73 62 79 74  |3TXRATE,.  osbyt|
00072740  65 5f 57 52 49 54 45 44  55 52 41 54 49 4f 4e 31  |e_WRITEDURATION1|
00072750  53 54 46 4c 41 53 48 43  4f 4c 4f 55 52 2c 0a 20  |STFLASHCOLOUR,. |
00072760  20 6f 73 62 79 74 65 5f  57 52 49 54 45 44 55 52  | osbyte_WRITEDUR|
00072770  41 54 49 4f 4e 32 4e 44  46 4c 41 53 48 43 4f 4c  |ATION2NDFLASHCOL|
00072780  4f 55 52 2c 0a 20 20 6f  73 62 79 74 65 5f 57 52  |OUR,.  osbyte_WR|
00072790  49 54 45 4b 45 59 52 45  50 45 41 54 44 45 4c 41  |ITEKEYREPEATDELA|
000727a0  59 2c 0a 20 20 6f 73 62  79 74 65 5f 57 52 49 54  |Y,.  osbyte_WRIT|
000727b0  45 4b 45 59 52 45 50 45  41 54 52 41 54 45 2c 0a  |EKEYREPEATRATE,.|
000727c0  20 20 6f 73 62 79 74 65  5f 44 49 53 41 42 4c 45  |  osbyte_DISABLE|
000727d0  45 56 45 4e 54 2c 0a 20  20 6f 73 62 79 74 65 5f  |EVENT,.  osbyte_|
000727e0  45 4e 41 42 4c 45 45 56  45 4e 54 2c 0a 20 20 6f  |ENABLEEVENT,.  o|
000727f0  73 62 79 74 65 5f 46 4c  55 53 48 42 55 46 46 45  |sbyte_FLUSHBUFFE|
00072800  52 2c 0a 20 20 6f 73 62  79 74 65 5f 52 45 53 45  |R,.  osbyte_RESE|
00072810  54 46 55 4e 43 54 49 4f  4e 4b 45 59 53 20 3d 20  |TFUNCTIONKEYS = |
00072820  31 38 2c 0a 20 20 6f 73  62 79 74 65 5f 57 41 49  |18,.  osbyte_WAI|
00072830  54 46 4f 52 56 53 59 4e  43 2c 0a 20 20 6f 73 62  |TFORVSYNC,.  osb|
00072840  79 74 65 5f 52 45 53 45  54 46 4f 4e 54 44 45 46  |yte_RESETFONTDEF|
00072850  49 4e 49 54 49 4f 4e 53  2c 0a 20 20 6f 73 62 79  |INITIONS,.  osby|
00072860  74 65 5f 46 4c 55 53 48  53 45 4c 45 43 54 45 44  |te_FLUSHSELECTED|
00072870  42 55 46 46 45 52 2c 0a  20 20 6f 73 62 79 74 65  |BUFFER,.  osbyte|
00072880  5f 52 45 53 45 54 47 52  4f 55 50 4f 46 46 4f 4e  |_RESETGROUPOFFON|
00072890  54 44 45 46 49 4e 49 54  49 4f 4e 53 20 3d 20 32  |TDEFINITIONS = 2|
000728a0  35 2c 0a 20 20 6f 73 62  79 74 65 5f 52 57 5f 43  |5,.  osbyte_RW_C|
000728b0  4f 55 4e 54 52 59 4e 55  4d 42 45 52 20 3d 20 37  |OUNTRYNUMBER = 7|
000728c0  30 2c 0a 20 20 6f 73 62  79 74 65 5f 52 57 5f 41  |0,.  osbyte_RW_A|
000728d0  4c 50 48 41 42 45 54 20  3d 20 37 31 2c 0a 20 20  |LPHABET = 71,.  |
000728e0  6f 73 62 79 74 65 5f 52  57 5f 4b 45 59 42 4f 41  |osbyte_RW_KEYBOA|
000728f0  52 44 20 3d 20 37 31 2c  0a 20 20 6f 73 62 79 74  |RD = 71,.  osbyt|
00072900  65 5f 53 45 4c 45 43 54  50 4f 49 4e 54 45 52 20  |e_SELECTPOINTER |
00072910  3d 20 31 30 36 2c 0a 20  20 6f 73 62 79 74 65 5f  |= 106,.  osbyte_|
00072920  41 43 54 49 56 41 54 45  4d 4f 55 53 45 20 3d 20  |ACTIVATEMOUSE = |
00072930  31 30 36 2c 0a 20 20 6f  73 62 79 74 65 5f 57 52  |106,.  osbyte_WR|
00072940  49 54 45 53 48 41 44 4f  57 53 54 41 54 45 2c 0a  |ITESHADOWSTATE,.|
00072950  20 20 6f 73 62 79 74 65  5f 52 45 41 44 56 44 55  |  osbyte_READVDU|
00072960  53 54 41 54 55 53 20 3d  20 31 31 37 2c 0a 20 20  |STATUS = 117,.  |
00072970  6f 73 62 79 74 65 5f 52  45 46 4c 45 43 54 4b 45  |osbyte_REFLECTKE|
00072980  59 42 4f 41 52 44 53 54  41 54 55 53 49 4e 4c 45  |YBOARDSTATUSINLE|
00072990  44 53 2c 0a 20 20 6f 73  62 79 74 65 5f 4b 45 59  |DS,.  osbyte_KEY|
000729a0  42 4f 41 52 44 53 43 41  4e 20 3d 20 31 32 31 2c  |BOARDSCAN = 121,|
000729b0  0a 20 20 6f 73 62 79 74  65 5f 4b 45 59 42 4f 41  |.  osbyte_KEYBOA|
000729c0  52 44 53 43 41 4e 4e 4f  53 48 49 46 54 2c 0a 20  |RDSCANNOSHIFT,. |
000729d0  20 6f 73 62 79 74 65 5f  43 4c 45 41 52 45 53 43  | osbyte_CLEARESC|
000729e0  41 50 45 43 4f 4e 44 49  54 49 4f 4e 20 3d 20 31  |APECONDITION = 1|
000729f0  32 34 2c 0a 20 20 6f 73  62 79 74 65 5f 53 45 54  |24,.  osbyte_SET|
00072a00  45 53 43 41 50 45 43 4f  4e 44 49 54 49 4f 4e 2c  |ESCAPECONDITION,|
00072a10  0a 20 20 6f 73 62 79 74  65 5f 41 43 4b 4e 4f 57  |.  osbyte_ACKNOW|
00072a20  4c 45 44 47 45 45 53 43  41 50 45 43 4f 4e 44 49  |LEDGEESCAPECONDI|
00072a30  54 49 4f 4e 2c 0a 20 20  6f 73 62 79 74 65 5f 43  |TION,.  osbyte_C|
00072a40  48 45 43 4b 46 4f 52 45  4f 46 2c 0a 20 20 6f 73  |HECKFOREOF,.  os|
00072a50  62 79 74 65 5f 47 45 54  42 55 46 46 45 52 4f 52  |byte_GETBUFFEROR|
00072a60  4d 4f 55 53 45 53 54 41  54 55 53 2c 0a 20 20 6f  |MOUSESTATUS,.  o|
00072a70  73 62 79 74 65 5f 53 43  41 4e 46 4f 52 4b 45 59  |sbyte_SCANFORKEY|
00072a80  20 3d 20 31 32 39 2c 0a  20 20 6f 73 62 79 74 65  | = 129,.  osbyte|
00072a90  5f 52 45 41 44 4f 53 49  44 45 4e 54 49 46 49 45  |_READOSIDENTIFIE|
00072aa0  52 20 3d 20 31 32 39 2c  0a 20 20 6f 73 62 79 74  |R = 129,.  osbyt|
00072ab0  65 5f 52 45 41 44 54 45  58 54 43 55 52 53 4f 52  |e_READTEXTCURSOR|
00072ac0  50 4f 53 49 54 49 4f 4e  20 3d 20 31 33 34 2c 0a  |POSITION = 134,.|
00072ad0  20 20 6f 73 62 79 74 65  5f 52 45 41 44 43 48 41  |  osbyte_READCHA|
00072ae0  52 41 43 54 45 52 41 54  54 45 58 54 43 55 52 53  |RACTERATTEXTCURS|
00072af0  4f 52 20 3d 20 31 33 35  2c 0a 20 20 6f 73 62 79  |OR = 135,.  osby|
00072b00  74 65 5f 52 45 41 44 53  43 52 45 45 4e 4d 4f 44  |te_READSCREENMOD|
00072b10  45 20 3d 20 31 33 35 2c  0a 20 20 6f 73 62 79 74  |E = 135,.  osbyt|
00072b20  65 5f 49 4e 53 45 52 54  43 48 41 52 41 43 54 45  |e_INSERTCHARACTE|
00072b30  52 43 4f 44 45 49 4e 54  4f 42 55 46 46 45 52 20  |RCODEINTOBUFFER |
00072b40  3d 20 31 33 38 2c 0a 20  20 6f 73 62 79 74 65 5f  |= 138,.  osbyte_|
00072b50  57 52 49 54 45 46 53 4f  50 54 49 4f 4e 53 2c 0a  |WRITEFSOPTIONS,.|
00072b60  20 20 6f 73 62 79 74 65  5f 49 53 53 55 45 4d 4f  |  osbyte_ISSUEMO|
00072b70  44 55 4c 45 53 45 52 56  49 43 45 43 41 4c 4c 20  |DULESERVICECALL |
00072b80  3d 20 31 34 33 2c 0a 20  20 6f 73 62 79 74 65 5f  |= 143,.  osbyte_|
00072b90  53 45 54 54 56 43 48 41  52 41 43 54 45 52 49 53  |SETTVCHARACTERIS|
00072ba0  54 49 43 53 2c 0a 20 20  6f 73 62 79 74 65 5f 47  |TICS,.  osbyte_G|
00072bb0  45 54 43 48 41 52 41 43  54 45 52 46 52 4f 4d 42  |ETCHARACTERFROMB|
00072bc0  55 46 46 45 52 2c 0a 20  20 6f 73 62 79 74 65 5f  |UFFER,.  osbyte_|
00072bd0  45 58 41 4d 49 4e 45 42  55 46 46 45 52 53 54 41  |EXAMINEBUFFERSTA|
00072be0  54 55 53 20 3d 20 31 35  32 2c 0a 20 20 6f 73 62  |TUS = 152,.  osb|
00072bf0  79 74 65 5f 49 4e 53 45  52 54 43 48 41 52 41 43  |yte_INSERTCHARAC|
00072c00  54 45 52 49 4e 54 4f 42  55 46 46 45 52 2c 0a 20  |TERINTOBUFFER,. |
00072c10  20 6f 73 62 79 74 65 5f  52 57 5f 41 53 59 4e 43  | osbyte_RW_ASYNC|
00072c20  43 4f 4d 4d 53 53 54 41  54 45 20 3d 20 31 35 36  |COMMSSTATE = 156|
00072c30  2c 0a 20 20 6f 73 62 79  74 65 5f 52 45 41 44 56  |,.  osbyte_READV|
00072c40  44 55 56 41 52 49 41 42  4c 45 20 3d 20 31 36 30  |DUVARIABLE = 160|
00072c50  2c 0a 20 20 6f 73 62 79  74 65 5f 52 45 41 44 43  |,.  osbyte_READC|
00072c60  4d 4f 53 52 41 4d 2c 0a  20 20 6f 73 62 79 74 65  |MOSRAM,.  osbyte|
00072c70  5f 57 52 49 54 45 43 4d  4f 53 52 41 4d 2c 0a 20  |_WRITECMOSRAM,. |
00072c80  20 6f 73 62 79 74 65 5f  52 57 5f 47 45 4e 45 52  | osbyte_RW_GENER|
00072c90  41 4c 47 52 41 50 48 49  43 53 49 4e 46 4f 2c 0a  |ALGRAPHICSINFO,.|
00072ca0  20 20 6f 73 62 79 74 65  5f 52 45 41 44 4f 55 54  |  osbyte_READOUT|
00072cb0  50 55 54 43 55 52 53 4f  52 50 4f 53 49 54 49 4f  |PUTCURSORPOSITIO|
00072cc0  4e 20 3d 20 31 36 35 2c  0a 20 20 6f 73 62 79 74  |N = 165,.  osbyt|
00072cd0  65 5f 52 57 5f 35 30 48  5a 43 4f 55 4e 54 45 52  |e_RW_50HZCOUNTER|
00072ce0  20 3d 20 31 37 36 2c 0a  20 20 6f 73 62 79 74 65  | = 176,.  osbyte|
00072cf0  5f 52 45 41 44 49 4e 50  55 54 53 4f 55 52 43 45  |_READINPUTSOURCE|
00072d00  2c 0a 20 20 6f 73 62 79  74 65 5f 52 57 5f 52 53  |,.  osbyte_RW_RS|
00072d10  34 32 33 49 4e 50 55 54  49 4e 54 45 52 50 54 52  |423INPUTINTERPTR|
00072d20  45 54 41 54 49 4f 4e 20  3d 20 31 38 31 2c 0a 20  |ETATION = 181,. |
00072d30  20 6f 73 62 79 74 65 5f  52 57 5f 4e 4f 49 47 4e  | osbyte_RW_NOIGN|
00072d40  4f 52 45 53 54 41 54 45  2c 0a 20 20 6f 73 62 79  |ORESTATE,.  osby|
00072d50  74 65 5f 52 57 5f 52 53  34 32 33 42 55 53 59 46  |te_RW_RS423BUSYF|
00072d60  4c 41 47 20 3d 20 31 39  31 2c 0a 20 20 6f 73 62  |LAG = 191,.  osb|
00072d70  79 74 65 5f 52 45 41 44  52 53 34 32 33 43 4f 4e  |yte_READRS423CON|
00072d80  54 52 4f 4c 42 59 54 45  2c 0a 20 20 6f 73 62 79  |TROLBYTE,.  osby|
00072d90  74 65 5f 52 57 5f 46 4c  41 53 48 43 4f 55 4e 54  |te_RW_FLASHCOUNT|
00072da0  45 52 2c 0a 20 20 6f 73  62 79 74 65 5f 52 45 41  |ER,.  osbyte_REA|
00072db0  44 44 55 52 41 54 49 4f  4e 32 4e 44 46 4c 41 53  |DDURATION2NDFLAS|
00072dc0  48 43 4f 4c 4f 55 52 2c  0a 20 20 6f 73 62 79 74  |HCOLOUR,.  osbyt|
00072dd0  65 5f 52 45 41 44 44 55  52 41 54 49 4f 4e 31 53  |e_READDURATION1S|
00072de0  54 46 4c 41 53 48 43 4f  4c 4f 55 52 2c 0a 20 20  |TFLASHCOLOUR,.  |
00072df0  6f 73 62 79 74 65 5f 52  57 5f 4b 45 59 52 45 50  |osbyte_RW_KEYREP|
00072e00  45 41 54 44 45 4c 41 59  2c 0a 20 20 6f 73 62 79  |EATDELAY,.  osby|
00072e10  74 65 5f 52 57 5f 4b 45  59 52 45 50 45 41 54 52  |te_RW_KEYREPEATR|
00072e20  41 54 45 2c 0a 20 20 6f  73 62 79 74 65 5f 52 57  |ATE,.  osbyte_RW|
00072e30  5f 45 58 45 43 46 49 4c  45 48 41 4e 44 4c 45 2c  |_EXECFILEHANDLE,|
00072e40  0a 20 20 6f 73 62 79 74  65 5f 52 57 5f 53 50 4f  |.  osbyte_RW_SPO|
00072e50  4f 4c 46 49 4c 45 48 41  4e 44 4c 45 2c 0a 20 20  |OLFILEHANDLE,.  |
00072e60  6f 73 62 79 74 65 5f 52  57 5f 42 52 45 41 4b 45  |osbyte_RW_BREAKE|
00072e70  53 43 41 50 45 45 46 46  45 43 54 2c 0a 20 20 6f  |SCAPEEFFECT,.  o|
00072e80  73 62 79 74 65 5f 52 57  5f 4b 45 59 42 4f 41 52  |sbyte_RW_KEYBOAR|
00072e90  44 44 49 53 41 42 4c 45  46 4c 41 47 2c 0a 20 20  |DDISABLEFLAG,.  |
00072ea0  6f 73 62 79 74 65 5f 52  57 5f 4b 45 59 42 4f 41  |osbyte_RW_KEYBOA|
00072eb0  52 44 53 54 41 54 55 53  42 59 54 45 2c 0a 20 20  |RDSTATUSBYTE,.  |
00072ec0  6f 73 62 79 74 65 5f 52  57 5f 52 53 34 32 33 49  |osbyte_RW_RS423I|
00072ed0  4e 50 55 54 42 55 46 46  45 52 4d 49 4e 53 50 41  |NPUTBUFFERMINSPA|
00072ee0  43 45 2c 0a 20 20 6f 73  62 79 74 65 5f 52 57 5f  |CE,.  osbyte_RW_|
00072ef0  52 53 34 32 33 49 47 4e  4f 52 45 46 4c 41 47 2c  |RS423IGNOREFLAG,|
00072f00  0a 20 20 6f 73 62 79 74  65 5f 52 57 5f 42 45 4c  |.  osbyte_RW_BEL|
00072f10  4c 43 48 41 4e 4e 45 4c  20 3d 20 32 31 31 2c 0a  |LCHANNEL = 211,.|
00072f20  20 20 6f 73 62 79 74 65  5f 52 57 5f 42 45 4c 4c  |  osbyte_RW_BELL|
00072f30  56 4f 4c 55 4d 45 2c 0a  20 20 6f 73 62 79 74 65  |VOLUME,.  osbyte|
00072f40  5f 52 57 5f 42 45 4c 4c  46 52 45 51 55 45 4e 43  |_RW_BELLFREQUENC|
00072f50  59 2c 0a 20 20 6f 73 62  79 74 65 5f 52 57 5f 42  |Y,.  osbyte_RW_B|
00072f60  45 4c 4c 44 55 52 41 54  49 4f 4e 2c 0a 20 20 6f  |ELLDURATION,.  o|
00072f70  73 62 79 74 65 5f 52 57  5f 46 55 4e 43 54 49 4f  |sbyte_RW_FUNCTIO|
00072f80  4e 4b 45 59 53 54 52 49  4e 47 4c 45 4e 47 54 48  |NKEYSTRINGLENGTH|
00072f90  20 3d 20 32 31 36 2c 0a  20 20 6f 73 62 79 74 65  | = 216,.  osbyte|
00072fa0  5f 52 57 5f 50 41 47 45  44 4d 4f 44 45 4c 49 4e  |_RW_PAGEDMODELIN|
00072fb0  45 43 4f 55 4e 54 2c 0a  20 20 6f 73 62 79 74 65  |ECOUNT,.  osbyte|
00072fc0  5f 52 57 5f 42 59 54 45  53 49 4e 56 44 55 51 55  |_RW_BYTESINVDUQU|
00072fd0  45 55 45 2c 0a 20 20 6f  73 62 79 74 65 5f 52 57  |EUE,.  osbyte_RW|
00072fe0  5f 54 41 42 4b 45 59 43  4f 44 45 2c 0a 20 20 6f  |_TABKEYCODE,.  o|
00072ff0  73 62 79 74 65 5f 52 57  5f 45 53 43 41 50 45 43  |sbyte_RW_ESCAPEC|
00073000  48 41 52 41 43 54 45 52  2c 0a 20 20 6f 73 62 79  |HARACTER,.  osby|
00073010  74 65 5f 52 57 5f 49 4e  54 45 52 50 52 45 54 41  |te_RW_INTERPRETA|
00073020  54 49 4f 4e 4f 46 42 55  46 46 45 52 43 4f 44 45  |TIONOFBUFFERCODE|
00073030  53 5f 43 30 5f 43 46 2c  0a 20 20 6f 73 62 79 74  |S_C0_CF,.  osbyt|
00073040  65 5f 52 57 5f 49 4e 54  45 52 50 52 45 54 41 54  |e_RW_INTERPRETAT|
00073050  49 4f 4e 4f 46 42 55 46  46 45 52 43 4f 44 45 53  |IONOFBUFFERCODES|
00073060  5f 44 30 5f 44 46 2c 0a  20 20 6f 73 62 79 74 65  |_D0_DF,.  osbyte|
00073070  5f 52 57 5f 49 4e 54 45  52 50 52 45 54 41 54 49  |_RW_INTERPRETATI|
00073080  4f 4e 4f 46 42 55 46 46  45 52 43 4f 44 45 53 5f  |ONOFBUFFERCODES_|
00073090  45 30 5f 45 46 2c 0a 20  20 6f 73 62 79 74 65 5f  |E0_EF,.  osbyte_|
000730a0  52 57 5f 49 4e 54 45 52  50 52 45 54 41 54 49 4f  |RW_INTERPRETATIO|
000730b0  4e 4f 46 42 55 46 46 45  52 43 4f 44 45 53 5f 46  |NOFBUFFERCODES_F|
000730c0  30 5f 46 46 2c 0a 20 20  6f 73 62 79 74 65 5f 52  |0_FF,.  osbyte_R|
000730d0  57 5f 46 55 4e 43 54 49  4f 4e 4b 45 59 49 4e 54  |W_FUNCTIONKEYINT|
000730e0  45 52 50 52 45 54 41 54  49 4f 4e 2c 0a 20 20 6f  |ERPRETATION,.  o|
000730f0  73 62 79 74 65 5f 52 57  5f 53 48 49 46 54 46 55  |sbyte_RW_SHIFTFU|
00073100  4e 43 54 49 4f 4e 4b 45  59 49 4e 54 45 52 50 52  |NCTIONKEYINTERPR|
00073110  45 54 41 54 49 4f 4e 2c  0a 20 20 6f 73 62 79 74  |ETATION,.  osbyt|
00073120  65 5f 52 57 5f 43 54 52  4c 46 55 4e 43 54 49 4f  |e_RW_CTRLFUNCTIO|
00073130  4e 4b 45 59 49 4e 54 45  52 50 52 45 54 41 54 49  |NKEYINTERPRETATI|
00073140  4f 4e 2c 0a 20 20 6f 73  62 79 74 65 5f 52 57 5f  |ON,.  osbyte_RW_|
00073150  43 54 52 4c 53 48 49 46  54 46 55 4e 43 54 49 4f  |CTRLSHIFTFUNCTIO|
00073160  4e 4b 45 59 49 4e 54 45  52 50 52 45 54 41 54 49  |NKEYINTERPRETATI|
00073170  4f 4e 2c 0a 20 20 6f 73  62 79 74 65 5f 52 57 5f  |ON,.  osbyte_RW_|
00073180  45 53 43 41 50 45 4b 45  59 53 54 41 54 55 53 2c  |ESCAPEKEYSTATUS,|
00073190  0a 20 20 6f 73 62 79 74  65 5f 52 57 5f 45 53 43  |.  osbyte_RW_ESC|
000731a0  41 50 45 45 46 46 45 43  54 53 2c 0a 20 20 6f 73  |APEEFFECTS,.  os|
000731b0  62 79 74 65 5f 52 57 5f  43 48 41 52 41 43 54 45  |byte_RW_CHARACTE|
000731c0  52 44 45 53 54 49 4e 41  54 49 4f 4e 53 54 41 54  |RDESTINATIONSTAT|
000731d0  55 53 20 3d 20 32 33 36  2c 0a 20 20 6f 73 62 79  |US = 236,.  osby|
000731e0  74 65 5f 52 57 5f 43 55  52 53 4f 52 4b 45 59 53  |te_RW_CURSORKEYS|
000731f0  54 41 54 55 53 2c 0a 20  20 6f 73 62 79 74 65 5f  |TATUS,.  osbyte_|
00073200  52 57 5f 4e 55 4d 45 52  49 43 4b 45 59 50 41 44  |RW_NUMERICKEYPAD|
00073210  49 4e 54 45 52 50 52 45  54 41 54 49 4f 4e 2c 0a  |INTERPRETATION,.|
00073220  20 20 6f 73 62 79 74 65  5f 52 45 41 44 43 4f 55  |  osbyte_READCOU|
00073230  4e 54 52 59 46 4c 41 47  20 3d 20 32 34 30 2c 0a  |NTRYFLAG = 240,.|
00073240  20 20 6f 73 62 79 74 65  5f 52 45 41 44 52 53 34  |  osbyte_READRS4|
00073250  32 33 42 41 55 44 52 41  54 45 53 20 3d 20 32 34  |23BAUDRATES = 24|
00073260  32 2c 0a 20 20 6f 73 62  79 74 65 5f 52 45 41 44  |2,.  osbyte_READ|
00073270  54 49 4d 45 52 53 57 49  54 43 48 53 54 41 54 45  |TIMERSWITCHSTATE|
00073280  2c 0a 20 20 6f 73 62 79  74 65 5f 52 45 41 44 50  |,.  osbyte_READP|
00073290  52 49 4e 54 45 52 44 52  49 56 45 52 54 59 50 45  |RINTERDRIVERTYPE|
000732a0  20 3d 20 32 34 35 2c 0a  20 20 6f 73 62 79 74 65  | = 245,.  osbyte|
000732b0  5f 52 57 5f 50 52 49 4e  54 45 52 49 47 4e 4f 52  |_RW_PRINTERIGNOR|
000732c0  45 43 48 41 52 41 43 54  45 52 2c 0a 20 20 6f 73  |ECHARACTER,.  os|
000732d0  62 79 74 65 5f 52 57 5f  42 52 45 41 4b 4b 45 59  |byte_RW_BREAKKEY|
000732e0  41 43 54 49 4f 4e 53 2c  0a 20 20 6f 73 62 79 74  |ACTIONS,.  osbyt|
000732f0  65 5f 52 45 41 44 56 44  55 44 52 49 56 45 52 53  |e_READVDUDRIVERS|
00073300  43 52 45 45 4e 42 41 4e  4b 20 3d 20 32 35 30 2c  |CREENBANK = 250,|
00073310  0a 20 20 6f 73 62 79 74  65 5f 52 45 41 44 44 49  |.  osbyte_READDI|
00073320  53 50 4c 41 59 53 43 52  45 45 4e 42 41 4e 4b 2c  |SPLAYSCREENBANK,|
00073330  0a 20 20 6f 73 62 79 74  65 5f 52 45 41 44 4c 41  |.  osbyte_READLA|
00073340  53 54 42 52 45 41 4b 54  59 50 45 20 3d 20 32 35  |STBREAKTYPE = 25|
00073350  33 2c 0a 20 20 6f 73 62  79 74 65 5f 52 57 5f 45  |3,.  osbyte_RW_E|
00073360  46 46 45 43 54 4f 46 53  48 49 46 54 43 54 52 4c  |FFECTOFSHIFTCTRL|
00073370  4f 4e 4e 55 4d 45 52 49  43 4b 45 59 50 41 44 2c  |ONNUMERICKEYPAD,|
00073380  0a 20 20 6f 73 62 79 74  65 5f 52 57 5f 42 4f 4f  |.  osbyte_RW_BOO|
00073390  54 4f 50 54 49 4f 4e 0a  7d 00 00 00 44 41 54 41  |TOPTION.}...DATA|
000733a0  16 01 00 00 4f 53 43 4c  49 0a 54 68 69 73 20 6d  |....OSCLI.This m|
000733b0  61 63 72 6f 20 69 73 20  64 65 66 69 6e 65 64 20  |acro is defined |
000733c0  69 6e 20 3c 54 69 6d 73  4c 69 62 3a 43 6f 72 65  |in <TimsLib:Core|
000733d0  2e 68 3d 3e 43 6f 72 65  5f 54 4c 3e 20 61 6e 64  |.h=>Core_TL> and|
000733e0  20 3c 44 65 73 6b 4c 69  62 3a 43 6f 72 65 2e 68  | <DeskLib:Core.h|
000733f0  3d 3e 43 6f 72 65 3e 2e  20 49 74 20 69 73 20 61  |=>Core>. It is a|
00073400  20 68 61 6e 64 79 20 76  65 6e 65 65 72 20 74 6f  | handy veneer to|
00073410  20 74 68 65 20 4f 53 5f  43 4c 49 20 53 57 49 2e  | the OS_CLI SWI.|
00073420  0a 0a 4f 53 43 4c 49 28  63 6f 6d 6d 61 6e 64 29  |..OSCLI(command)|
00073430  20 63 61 6c 6c 73 20 4f  53 5f 43 4c 49 20 77 69  | calls OS_CLI wi|
00073440  74 68 20 52 30 3d 63 6f  6d 6d 61 6e 64 2e 0a 0a  |th R0=command...|
00073450  49 74 20 69 73 20 61 63  74 75 61 6c 6c 79 20 64  |It is actually d|
00073460  65 66 69 6e 65 64 20 61  73 3a 7b 77 72 61 70 20  |efined as:{wrap |
00073470  6f 66 66 7d 0a 7b 66 43  6f 64 65 7d 3c 23 64 65  |off}.{fCode}<#de|
00073480  66 69 6e 65 3d 3e 64 65  66 69 6e 65 3e 20 4f 53  |fine=>define> OS|
00073490  43 4c 49 28 63 6d 64 29  20 28 3c 53 57 49 3e 28  |CLI(cmd) (<SWI>(|
000734a0  31 2c 30 2c 4f 53 5f 43  4c 49 2c 28 63 6d 64 29  |1,0,OS_CLI,(cmd)|
000734b0  29 29 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |))..DIR$,...,...|
000734c0  e0 34 07 00 46 ff ff ff  20 6f 3e 25 03 02 00 00  |.4..F... o>%....|
000734d0  13 00 00 00 00 00 00 00  6e 75 6d 62 65 72 00 00  |........number..|
000734e0  44 41 54 41 03 02 00 00  6f 73 77 6f 72 64 5f 6e  |DATA....osword_n|
000734f0  75 6d 62 65 72 0a 54 68  69 73 20 74 79 70 65 20  |umber.This type |
00073500  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 44  |is defined in <D|
00073510  65 73 6b 4c 69 62 3a 4b  65 72 6e 65 6c 53 57 49  |eskLib:KernelSWI|
00073520  73 3d 3e 4b 65 72 6e 65  6c 53 57 49 73 3e 2e 20  |s=>KernelSWIs>. |
00073530  49 74 0a 69 73 20 61 6e  20 65 6e 75 6d 65 72 61  |It.is an enumera|
00073540  74 65 64 20 74 79 70 65  20 67 69 76 69 6e 67 20  |ted type giving |
00073550  6e 61 6d 65 73 20 74 6f  20 6d 6f 73 74 0a 3c 4f  |names to most.<O|
00073560  53 5f 57 6f 72 64 5f 3e  20 63 61 6c 6c 73 3a 0a  |S_Word_> calls:.|
00073570  0a 5c 7b 0a 20 20 6f 73  77 6f 72 64 5f 52 45 41  |.\{.  osword_REA|
00073580  44 4c 49 4e 45 20 3d 20  30 2c 0a 20 20 6f 73 77  |DLINE = 0,.  osw|
00073590  6f 72 64 5f 52 45 41 44  53 59 53 43 4c 4f 43 4b  |ord_READSYSCLOCK|
000735a0  2c 0a 20 20 6f 73 77 6f  72 64 5f 57 52 49 54 45  |,.  osword_WRITE|
000735b0  53 59 53 43 4c 4f 43 4b  2c 0a 20 20 6f 73 77 6f  |SYSCLOCK,.  oswo|
000735c0  72 64 5f 52 45 41 44 49  4e 54 45 52 56 41 4c 54  |rd_READINTERVALT|
000735d0  49 4d 45 52 2c 0a 20 20  6f 73 77 6f 72 64 5f 57  |IMER,.  osword_W|
000735e0  52 49 54 45 49 4e 54 45  52 56 41 4c 54 49 4d 45  |RITEINTERVALTIME|
000735f0  52 2c 0a 20 20 6f 73 77  6f 72 64 5f 52 45 41 44  |R,.  osword_READ|
00073600  50 49 58 45 4c 43 4f 4c  4f 55 52 20 3d 20 39 2c  |PIXELCOLOUR = 9,|
00073610  0a 20 20 6f 73 77 6f 72  64 5f 52 45 41 44 43 48  |.  osword_READCH|
00073620  41 52 41 43 54 45 52 44  45 46 4e 2c 0a 20 20 6f  |ARACTERDEFN,.  o|
00073630  73 77 6f 72 64 5f 52 45  41 44 50 41 4c 45 54 54  |sword_READPALETT|
00073640  45 2c 0a 20 20 6f 73 77  6f 72 64 5f 57 52 49 54  |E,.  osword_WRIT|
00073650  45 50 41 4c 45 54 54 45  2c 0a 20 20 6f 73 77 6f  |EPALETTE,.  oswo|
00073660  72 64 5f 52 45 41 44 47  46 58 43 55 52 53 4f 52  |rd_READGFXCURSOR|
00073670  53 2c 0a 20 20 6f 73 77  6f 72 64 5f 52 45 41 44  |S,.  osword_READ|
00073680  43 4d 4f 53 43 4c 4f 43  4b 2c 0a 20 20 6f 73 77  |CMOSCLOCK,.  osw|
00073690  6f 72 64 5f 57 52 49 54  45 43 4d 4f 53 43 4c 4f  |ord_WRITECMOSCLO|
000736a0  43 4b 2c 0a 20 20 6f 73  77 6f 72 64 5f 44 45 46  |CK,.  osword_DEF|
000736b0  49 4e 45 50 4f 49 4e 54  45 52 41 4e 44 4d 4f 55  |INEPOINTERANDMOU|
000736c0  53 45 20 3d 20 32 31 2c  0a 20 20 6f 73 77 6f 72  |SE = 21,.  oswor|
000736d0  64 5f 57 52 49 54 45 53  43 52 45 45 4e 42 41 53  |d_WRITESCREENBAS|
000736e0  45 0a 7d 00 44 49 52 24  14 04 00 00 14 04 00 00  |E.}.DIR$........|
000736f0  f8 3a 07 00 46 fd ff ff  36 ba 84 2f b4 00 00 00  |.:..F...6../....|
00073700  13 01 00 00 00 00 00 00  70 61 63 6b 6d 61 73 6b  |........packmask|
00073710  5f 00 00 00 5c 40 07 00  46 fd ff ff a5 ba 84 2f  |_...\@..F....../|
00073720  b4 00 00 00 13 01 00 00  00 00 00 00 70 61 63 6b  |............pack|
00073730  73 68 66 74 5f 00 00 00  38 45 07 00 46 fd ff ff  |shft_...8E..F...|
00073740  0f bb 84 2f 4c 00 00 00  13 01 00 00 00 00 00 00  |.../L...........|
00073750  70 61 6c 65 74 74 65 5f  00 00 00 00 70 47 07 00  |palette_....pG..|
00073760  46 ff ff ff 09 5e 44 25  a6 03 00 00 13 00 00 00  |F....^D%........|
00073770  00 00 00 00 50 61 6e 65  00 00 00 00 18 4b 07 00  |....Pane.....K..|
00073780  46 fd ff ff 61 bb 84 2f  6c 01 00 00 13 01 00 00  |F...a../l.......|
00073790  00 00 00 00 50 61 6e 65  5f 00 00 00 b8 5c 07 00  |....Pane_....\..|
000737a0  46 fd ff ff 3e bc 84 2f  d4 00 00 00 13 01 00 00  |F...>../........|
000737b0  00 00 00 00 50 61 74 68  5f 00 00 00 f4 63 07 00  |....Path_....c..|
000737c0  46 ff ff ff 18 a6 60 25  01 04 00 00 13 00 00 00  |F.....`%........|
000737d0  00 00 00 00 50 44 72 69  76 65 72 00 f8 67 07 00  |....PDriver..g..|
000737e0  46 fd ff ff d6 bc 84 2f  90 02 00 00 13 01 00 00  |F....../........|
000737f0  00 00 00 00 50 44 72 69  76 65 72 5f 00 00 00 00  |....PDriver_....|
00073800  cc 89 07 00 46 ff ff ff  01 61 c4 22 19 01 00 00  |....F....a."....|
00073810  13 00 00 00 00 00 00 00  70 65 72 72 6f 72 00 00  |........perror..|
00073820  e8 8a 07 00 46 fd ff ff  62 be 84 2f 2c 00 00 00  |....F...b../,...|
00073830  13 01 00 00 00 00 00 00  70 66 6f 72 6d 5f 00 00  |........pform_..|
00073840  58 8d 07 00 46 fd ff ff  8c be 84 2f a8 00 00 00  |X...F....../....|
00073850  13 01 00 00 00 00 00 00  70 66 5f 00 18 99 07 00  |........pf_.....|
00073860  46 ff ff ff 86 3f b4 24  d2 00 00 00 13 00 00 00  |F....?.$........|
00073870  00 00 00 00 70 6f 69 6e  74 65 72 00 ec 99 07 00  |....pointer.....|
00073880  46 fd ff ff 0c bf 84 2f  18 01 00 00 13 01 00 00  |F....../........|
00073890  00 00 00 00 70 6f 69 6e  74 65 72 5f 00 00 00 00  |....pointer_....|
000738a0  34 a3 07 00 46 fd ff ff  ad bf 84 2f 2c 00 00 00  |4...F....../,...|
000738b0  13 01 00 00 00 00 00 00  70 6f 6c 6c 77 6f 72 64  |........pollword|
000738c0  5f 00 00 00 58 a4 07 00  46 ff ff ff 6c 0e 61 25  |_...X...F...l.a%|
000738d0  66 03 00 00 13 00 00 00  00 00 00 00 50 6f 70 55  |f...........PopU|
000738e0  70 00 00 00 c0 a7 07 00  46 fd ff ff ee bf 84 2f  |p.......F....../|
000738f0  dc 00 00 00 13 01 00 00  00 00 00 00 70 6f 70 75  |............popu|
00073900  70 74 63 5f 00 00 00 00  cc ad 07 00 46 fd ff ff  |ptc_........F...|
00073910  77 c0 84 2f 24 03 00 00  13 01 00 00 00 00 00 00  |w../$...........|
00073920  70 6f 70 75 70 5f 00 00  a0 cb 07 00 46 ff ff ff  |popup_......F...|
00073930  b9 37 be 22 d9 00 00 00  13 00 00 00 00 00 00 00  |.7."............|
00073940  70 6f 77 00 7c cc 07 00  46 fd ff ff 5f c2 84 2f  |pow.|...F..._../|
00073950  2c 00 00 00 13 01 00 00  00 00 00 00 70 70 64 69  |,...........ppdi|
00073960  72 5f 00 00 f4 cd 07 00  46 ff ff ff 66 b6 e5 22  |r_......F...f.."|
00073970  1d 01 00 00 13 00 00 00  00 00 00 00 70 72 61 67  |............prag|
00073980  6d 61 00 00 14 cf 07 00  46 fd ff ff 91 c2 84 2f  |ma......F....../|
00073990  4c 00 00 00 13 01 00 00  00 00 00 00 70 72 61 67  |L...........prag|
000739a0  6d 61 5f 00 f8 d3 07 00  46 ff ff ff 1d 7b b4 24  |ma_.....F....{.$|
000739b0  73 02 00 00 13 00 00 00  00 00 00 00 70 72 69 6e  |s...........prin|
000739c0  74 00 00 00 6c d6 07 00  46 fd ff ff de c2 84 2f  |t...l...F....../|
000739d0  98 00 00 00 13 01 00 00  00 00 00 00 70 72 69 6e  |............prin|
000739e0  74 64 72 69 76 65 72 5f  00 00 00 00 dc d9 07 00  |tdriver_........|
000739f0  46 fd ff ff 38 c3 84 2f  2c 00 00 00 13 01 00 00  |F...8../,.......|
00073a00  00 00 00 00 70 72 69 6e  74 65 72 5f 00 00 00 00  |....printer_....|
00073a10  24 dc 07 00 46 ff ff ff  5b e1 c2 22 31 01 00 00  |$...F...[.."1...|
00073a20  13 00 00 00 00 00 00 00  70 72 69 6e 74 66 00 00  |........printf..|
00073a30  58 dd 07 00 46 fd ff ff  79 c3 84 2f 48 01 00 00  |X...F...y../H...|
00073a40  13 01 00 00 00 00 00 00  70 72 69 6e 74 66 65 61  |........printfea|
00073a50  74 5f 00 00 a0 e6 07 00  46 fd ff ff 43 c4 84 2f  |t_......F...C../|
00073a60  a8 03 00 00 13 01 00 00  00 00 00 00 70 72 69 6e  |............prin|
00073a70  74 5f 00 00 68 11 08 00  46 fd ff ff 4f c6 84 2f  |t_..h...F...O../|
00073a80  28 00 00 00 13 01 00 00  00 00 00 00 70 74 72 64  |(...........ptrd|
00073a90  69 66 66 5f 00 00 00 00  78 12 08 00 46 ff ff ff  |iff_....x...F...|
00073aa0  e7 a7 c2 22 bd 01 00 00  13 00 00 00 00 00 00 00  |..."............|
00073ab0  70 75 74 63 00 00 00 00  38 14 08 00 46 ff ff ff  |putc....8...F...|
00073ac0  a1 b1 c2 22 30 01 00 00  13 00 00 00 00 00 00 00  |..."0...........|
00073ad0  70 75 74 63 68 61 72 00  68 15 08 00 46 ff ff ff  |putchar.h...F...|
00073ae0  8f b7 c2 22 e7 00 00 00  13 00 00 00 00 00 00 00  |..."............|
00073af0  70 75 74 73 00 00 00 00  44 49 52 24 b4 00 00 00  |puts....DIR$....|
00073b00  b4 00 00 00 ac 3b 07 00  46 ff ff ff 2c 1e 27 23  |.....;..F...,.'#|
00073b10  f1 00 00 00 13 00 00 00  00 00 00 00 64 61 73 68  |............dash|
00073b20  65 64 00 00 a0 3c 07 00  46 ff ff ff ce 15 27 23  |ed...<..F.....'#|
00073b30  ed 00 00 00 13 00 00 00  00 00 00 00 65 6e 64 63  |............endc|
00073b40  61 70 00 00 90 3d 07 00  46 ff ff ff f1 12 27 23  |ap...=..F.....'#|
00073b50  e8 00 00 00 13 00 00 00  00 00 00 00 6a 6f 69 6e  |............join|
00073b60  00 00 00 00 78 3e 07 00  46 ff ff ff a7 18 27 23  |....x>..F.....'#|
00073b70  f1 00 00 00 13 00 00 00  00 00 00 00 73 74 61 72  |............star|
00073b80  74 63 61 70 00 00 00 00  6c 3f 07 00 46 ff ff ff  |tcap....l?..F...|
00073b90  7f 1b 27 23 ee 00 00 00  13 00 00 00 00 00 00 00  |..'#............|
00073ba0  77 69 6e 64 72 75 6c 65  00 00 00 00 44 41 54 41  |windrule....DATA|
00073bb0  f1 00 00 00 70 61 63 6b  6d 61 73 6b 5f 64 61 73  |....packmask_das|
00073bc0  68 65 64 0a 54 68 69 73  20 6d 61 63 72 6f 20 69  |hed.This macro i|
00073bd0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 64 72  |s defined in <dr|
00073be0  61 77 66 74 79 70 65 73  2e 68 3d 3e 64 72 61 77  |awftypes.h=>draw|
00073bf0  66 74 79 70 65 73 3e 2e  20 49 74 20 69 73 20 61  |ftypes>. It is a|
00073c00  20 76 61 6c 75 65 20 77  68 69 63 68 20 77 68 65  | value which whe|
00073c10  6e 20 6c 6f 67 69 63 61  6c 6c 79 20 41 4e 44 65  |n logically ANDe|
00073c20  64 20 77 69 74 68 20 61  20 70 61 74 68 20 73 74  |d with a path st|
00073c30  79 6c 65 20 64 65 73 63  69 70 74 69 6f 6e 20 77  |yle desciption w|
00073c40  6f 72 64 20 77 69 6c 6c  20 6d 61 73 6b 20 6f 75  |ord will mask ou|
00073c50  74 20 61 6c 6c 20 62 69  74 73 20 62 75 74 20 74  |t all bits but t|
00073c60  68 6f 73 65 20 63 6f 6e  74 61 69 6e 69 6e 67 20  |hose containing |
00073c70  74 68 65 20 64 61 73 68  20 70 61 74 74 65 72 6e  |the dash pattern|
00073c80  20 66 6c 61 67 2e 20 49  74 20 69 73 20 64 65 66  | flag. It is def|
00073c90  69 6e 65 64 20 61 73 20  30 78 38 30 2e 00 00 00  |ined as 0x80....|
00073ca0  44 41 54 41 ed 00 00 00  70 61 63 6b 6d 61 73 6b  |DATA....packmask|
00073cb0  5f 65 6e 64 63 61 70 0a  54 68 69 73 20 6d 61 63  |_endcap.This mac|
00073cc0  72 6f 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |ro is defined in|
00073cd0  20 3c 64 72 61 77 66 74  79 70 65 73 2e 68 3d 3e  | <drawftypes.h=>|
00073ce0  64 72 61 77 66 74 79 70  65 73 3e 2e 20 49 74 20  |drawftypes>. It |
00073cf0  69 73 20 61 20 76 61 6c  75 65 20 77 68 69 63 68  |is a value which|
00073d00  20 77 68 65 6e 20 6c 6f  67 69 63 61 6c 6c 79 20  | when logically |
00073d10  41 4e 44 65 64 20 77 69  74 68 20 61 20 70 61 74  |ANDed with a pat|
00073d20  68 20 73 74 79 6c 65 20  64 65 73 63 69 70 74 69  |h style descipti|
00073d30  6f 6e 20 77 6f 72 64 20  77 69 6c 6c 20 6d 61 73  |on word will mas|
00073d40  6b 20 6f 75 74 20 61 6c  6c 20 62 69 74 73 20 62  |k out all bits b|
00073d50  75 74 20 74 68 6f 73 65  20 63 6f 6e 74 61 69 6e  |ut those contain|
00073d60  69 6e 67 20 74 68 65 20  65 6e 64 20 63 61 70 20  |ing the end cap |
00073d70  73 74 79 6c 65 2e 20 49  74 20 69 73 20 64 65 66  |style. It is def|
00073d80  69 6e 65 64 20 61 73 20  30 78 30 43 2e 00 00 00  |ined as 0x0C....|
00073d90  44 41 54 41 e8 00 00 00  70 61 63 6b 6d 61 73 6b  |DATA....packmask|
00073da0  5f 6a 6f 69 6e 0a 54 68  69 73 20 6d 61 63 72 6f  |_join.This macro|
00073db0  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
00073dc0  64 72 61 77 66 74 79 70  65 73 2e 68 3d 3e 64 72  |drawftypes.h=>dr|
00073dd0  61 77 66 74 79 70 65 73  3e 2e 20 49 74 20 69 73  |awftypes>. It is|
00073de0  20 61 20 76 61 6c 75 65  20 77 68 69 63 68 20 77  | a value which w|
00073df0  68 65 6e 20 6c 6f 67 69  63 61 6c 6c 79 20 41 4e  |hen logically AN|
00073e00  44 65 64 20 77 69 74 68  20 61 20 70 61 74 68 20  |Ded with a path |
00073e10  73 74 79 6c 65 20 64 65  73 63 69 70 74 69 6f 6e  |style desciption|
00073e20  20 77 6f 72 64 20 77 69  6c 6c 20 6d 61 73 6b 20  | word will mask |
00073e30  6f 75 74 20 61 6c 6c 20  62 69 74 73 20 62 75 74  |out all bits but|
00073e40  20 74 68 6f 73 65 20 63  6f 6e 74 61 69 6e 69 6e  | those containin|
00073e50  67 20 74 68 65 20 6a 6f  69 6e 20 73 74 79 6c 65  |g the join style|
00073e60  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
00073e70  61 73 20 30 78 30 33 2e  44 41 54 41 f1 00 00 00  |as 0x03.DATA....|
00073e80  70 61 63 6b 6d 61 73 6b  5f 73 74 61 72 74 63 61  |packmask_startca|
00073e90  70 0a 54 68 69 73 20 6d  61 63 72 6f 20 69 73 20  |p.This macro is |
00073ea0  64 65 66 69 6e 65 64 20  69 6e 20 3c 64 72 61 77  |defined in <draw|
00073eb0  66 74 79 70 65 73 2e 68  3d 3e 64 72 61 77 66 74  |ftypes.h=>drawft|
00073ec0  79 70 65 73 3e 2e 20 49  74 20 69 73 20 61 20 76  |ypes>. It is a v|
00073ed0  61 6c 75 65 20 77 68 69  63 68 20 77 68 65 6e 20  |alue which when |
00073ee0  6c 6f 67 69 63 61 6c 6c  79 20 41 4e 44 65 64 20  |logically ANDed |
00073ef0  77 69 74 68 20 61 20 70  61 74 68 20 73 74 79 6c  |with a path styl|
00073f00  65 20 64 65 73 63 69 70  74 69 6f 6e 20 77 6f 72  |e desciption wor|
00073f10  64 20 77 69 6c 6c 20 6d  61 73 6b 20 6f 75 74 20  |d will mask out |
00073f20  61 6c 6c 20 62 69 74 73  20 62 75 74 20 74 68 6f  |all bits but tho|
00073f30  73 65 20 63 6f 6e 74 61  69 6e 69 6e 67 20 74 68  |se containing th|
00073f40  65 20 73 74 61 72 74 20  63 61 70 20 73 74 79 6c  |e start cap styl|
00073f50  65 2e 20 49 74 20 69 73  20 64 65 66 69 6e 65 64  |e. It is defined|
00073f60  20 61 73 20 30 78 33 30  2e 00 00 00 44 41 54 41  | as 0x30....DATA|
00073f70  ee 00 00 00 70 61 63 6b  6d 61 73 6b 5f 77 69 6e  |....packmask_win|
00073f80  64 72 75 6c 65 0a 54 68  69 73 20 6d 61 63 72 6f  |drule.This macro|
00073f90  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
00073fa0  64 72 61 77 66 74 79 70  65 73 2e 68 3d 3e 64 72  |drawftypes.h=>dr|
00073fb0  61 77 66 74 79 70 65 73  3e 2e 20 49 74 20 69 73  |awftypes>. It is|
00073fc0  20 61 20 76 61 6c 75 65  20 77 68 69 63 68 20 77  | a value which w|
00073fd0  68 65 6e 20 6c 6f 67 69  63 61 6c 6c 79 20 41 4e  |hen logically AN|
00073fe0  44 65 64 20 77 69 74 68  20 61 20 70 61 74 68 20  |Ded with a path |
00073ff0  73 74 79 6c 65 20 64 65  73 63 69 70 74 69 6f 6e  |style desciption|
00074000  20 77 6f 72 64 20 77 69  6c 6c 20 6d 61 73 6b 20  | word will mask |
00074010  6f 75 74 20 61 6c 6c 20  62 69 74 73 20 62 75 74  |out all bits but|
00074020  20 74 68 6f 73 65 20 63  6f 6e 74 61 69 6e 69 6e  | those containin|
00074030  67 20 74 68 65 20 77 69  6e 64 69 6e 67 20 72 75  |g the winding ru|
00074040  6c 65 2e 20 49 74 20 69  73 20 64 65 66 69 6e 65  |le. It is define|
00074050  64 20 61 73 20 30 78 34  30 2e 00 00 44 49 52 24  |d as 0x40...DIR$|
00074060  b4 00 00 00 b4 00 00 00  10 41 07 00 46 ff ff ff  |.........A..F...|
00074070  d2 2d 27 23 d7 00 00 00  13 00 00 00 00 00 00 00  |.-'#............|
00074080  64 61 73 68 65 64 00 00  e8 41 07 00 46 ff ff ff  |dashed...A..F...|
00074090  1f 24 27 23 d3 00 00 00  13 00 00 00 00 00 00 00  |.$'#............|
000740a0  65 6e 64 63 61 70 00 00  bc 42 07 00 46 ff ff ff  |endcap...B..F...|
000740b0  1a 21 27 23 ce 00 00 00  13 00 00 00 00 00 00 00  |.!'#............|
000740c0  6a 6f 69 6e 00 00 00 00  8c 43 07 00 46 ff ff ff  |join.....C..F...|
000740d0  6f 27 27 23 d7 00 00 00  13 00 00 00 00 00 00 00  |o''#............|
000740e0  73 74 61 72 74 63 61 70  00 00 00 00 64 44 07 00  |startcap....dD..|
000740f0  46 ff ff ff 81 2a 27 23  d4 00 00 00 13 00 00 00  |F....*'#........|
00074100  00 00 00 00 77 69 6e 64  72 75 6c 65 00 00 00 00  |....windrule....|
00074110  44 41 54 41 d7 00 00 00  70 61 63 6b 73 68 66 74  |DATA....packshft|
00074120  5f 64 61 73 68 65 64 0a  54 68 69 73 20 6d 61 63  |_dashed.This mac|
00074130  72 6f 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |ro is defined in|
00074140  20 3c 64 72 61 77 66 74  79 70 65 73 2e 68 3d 3e  | <drawftypes.h=>|
00074150  64 72 61 77 66 74 79 70  65 73 3e 2e 20 49 74 20  |drawftypes>. It |
00074160  69 73 20 61 20 76 61 6c  75 65 20 77 68 69 63 68  |is a value which|
00074170  20 69 73 20 74 68 65 20  6c 65 66 74 20 73 68 69  | is the left shi|
00074180  66 74 20 72 65 71 75 69  72 65 64 20 6f 6e 20 61  |ft required on a|
00074190  20 64 61 73 68 20 70 61  74 74 65 72 6e 20 66 6c  | dash pattern fl|
000741a0  61 67 20 74 6f 20 6d 6f  76 65 20 69 74 20 69 6e  |ag to move it in|
000741b0  74 6f 20 74 68 65 20 63  6f 72 72 65 63 74 20 62  |to the correct b|
000741c0  69 74 20 66 6f 72 20 74  68 65 20 70 61 74 68 20  |it for the path |
000741d0  73 74 79 6c 65 20 64 65  73 63 72 69 70 74 69 6f  |style descriptio|
000741e0  6e 20 77 6f 72 64 2e 00  44 41 54 41 d3 00 00 00  |n word..DATA....|
000741f0  70 61 63 6b 73 68 66 74  5f 65 6e 64 63 61 70 0a  |packshft_endcap.|
00074200  54 68 69 73 20 6d 61 63  72 6f 20 69 73 20 64 65  |This macro is de|
00074210  66 69 6e 65 64 20 69 6e  20 3c 64 72 61 77 66 74  |fined in <drawft|
00074220  79 70 65 73 2e 68 3d 3e  64 72 61 77 66 74 79 70  |ypes.h=>drawftyp|
00074230  65 73 3e 2e 20 49 74 20  69 73 20 61 20 76 61 6c  |es>. It is a val|
00074240  75 65 20 77 68 69 63 68  20 69 73 20 74 68 65 20  |ue which is the |
00074250  6c 65 66 74 20 73 68 69  66 74 20 72 65 71 75 69  |left shift requi|
00074260  72 65 64 20 6f 6e 20 61  20 65 6e 64 20 63 61 70  |red on a end cap|
00074270  20 73 74 79 6c 65 20 74  6f 20 6d 6f 76 65 20 69  | style to move i|
00074280  74 20 69 6e 74 6f 20 74  68 65 20 63 6f 72 72 65  |t into the corre|
00074290  63 74 20 62 69 74 20 66  6f 72 20 74 68 65 20 70  |ct bit for the p|
000742a0  61 74 68 20 73 74 79 6c  65 20 64 65 73 63 72 69  |ath style descri|
000742b0  70 74 69 6f 6e 20 77 6f  72 64 2e 00 44 41 54 41  |ption word..DATA|
000742c0  ce 00 00 00 70 61 63 6b  73 68 66 74 5f 6a 6f 69  |....packshft_joi|
000742d0  6e 0a 54 68 69 73 20 6d  61 63 72 6f 20 69 73 20  |n.This macro is |
000742e0  64 65 66 69 6e 65 64 20  69 6e 20 3c 64 72 61 77  |defined in <draw|
000742f0  66 74 79 70 65 73 2e 68  3d 3e 64 72 61 77 66 74  |ftypes.h=>drawft|
00074300  79 70 65 73 3e 2e 20 49  74 20 69 73 20 61 20 76  |ypes>. It is a v|
00074310  61 6c 75 65 20 77 68 69  63 68 20 69 73 20 74 68  |alue which is th|
00074320  65 20 6c 65 66 74 20 73  68 69 66 74 20 72 65 71  |e left shift req|
00074330  75 69 72 65 64 20 6f 6e  20 61 20 6a 6f 69 6e 20  |uired on a join |
00074340  73 74 79 6c 65 20 74 6f  20 6d 6f 76 65 20 69 74  |style to move it|
00074350  20 69 6e 74 6f 20 74 68  65 20 63 6f 72 72 65 63  | into the correc|
00074360  74 20 62 69 74 20 66 6f  72 20 74 68 65 20 70 61  |t bit for the pa|
00074370  74 68 20 73 74 79 6c 65  20 64 65 73 63 72 69 70  |th style descrip|
00074380  74 69 6f 6e 20 77 6f 72  64 2e 00 00 44 41 54 41  |tion word...DATA|
00074390  d7 00 00 00 70 61 63 6b  73 68 66 74 5f 73 74 61  |....packshft_sta|
000743a0  72 74 63 61 70 0a 54 68  69 73 20 6d 61 63 72 6f  |rtcap.This macro|
000743b0  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
000743c0  64 72 61 77 66 74 79 70  65 73 2e 68 3d 3e 64 72  |drawftypes.h=>dr|
000743d0  61 77 66 74 79 70 65 73  3e 2e 20 49 74 20 69 73  |awftypes>. It is|
000743e0  20 61 20 76 61 6c 75 65  20 77 68 69 63 68 20 69  | a value which i|
000743f0  73 20 74 68 65 20 6c 65  66 74 20 73 68 69 66 74  |s the left shift|
00074400  20 72 65 71 75 69 72 65  64 20 6f 6e 20 61 20 73  | required on a s|
00074410  74 61 72 74 20 63 61 70  20 73 74 79 6c 65 20 74  |tart cap style t|
00074420  6f 20 6d 6f 76 65 20 69  74 20 69 6e 74 6f 20 74  |o move it into t|
00074430  68 65 20 63 6f 72 72 65  63 74 20 62 69 74 20 66  |he correct bit f|
00074440  6f 72 20 74 68 65 20 70  61 74 68 20 73 74 79 6c  |or the path styl|
00074450  65 20 64 65 73 63 72 69  70 74 69 6f 6e 20 77 6f  |e description wo|
00074460  72 64 2e 00 44 41 54 41  d4 00 00 00 70 61 63 6b  |rd..DATA....pack|
00074470  73 68 66 74 5f 77 69 6e  64 72 75 6c 65 0a 54 68  |shft_windrule.Th|
00074480  69 73 20 6d 61 63 72 6f  20 69 73 20 64 65 66 69  |is macro is defi|
00074490  6e 65 64 20 69 6e 20 3c  64 72 61 77 66 74 79 70  |ned in <drawftyp|
000744a0  65 73 2e 68 3d 3e 64 72  61 77 66 74 79 70 65 73  |es.h=>drawftypes|
000744b0  3e 2e 20 49 74 20 69 73  20 61 20 76 61 6c 75 65  |>. It is a value|
000744c0  20 77 68 69 63 68 20 69  73 20 74 68 65 20 6c 65  | which is the le|
000744d0  66 74 20 73 68 69 66 74  20 72 65 71 75 69 72 65  |ft shift require|
000744e0  64 20 6f 6e 20 61 20 77  69 6e 64 69 6e 67 20 72  |d on a winding r|
000744f0  75 6c 65 20 74 6f 20 6d  6f 76 65 20 69 74 20 69  |ule to move it i|
00074500  6e 74 6f 20 74 68 65 20  63 6f 72 72 65 63 74 20  |nto the correct |
00074510  62 69 74 20 66 6f 72 20  74 68 65 20 70 61 74 68  |bit for the path|
00074520  20 73 74 79 6c 65 20 64  65 73 63 72 69 70 74 69  | style descripti|
00074530  6f 6e 20 77 6f 72 64 2e  44 49 52 24 4c 00 00 00  |on word.DIR$L...|
00074540  4c 00 00 00 84 45 07 00  46 ff ff ff 59 ab 37 26  |L....E..F...Y.7&|
00074550  f9 00 00 00 13 00 00 00  00 00 00 00 62 6c 6f 63  |............bloc|
00074560  6b 00 00 00 80 46 07 00  46 ff ff ff e7 94 37 26  |k....F..F.....7&|
00074570  ed 00 00 00 13 00 00 00  00 00 00 00 65 6e 74 72  |............entr|
00074580  79 00 00 00 44 41 54 41  f9 00 00 00 70 61 6c 65  |y...DATA....pale|
00074590  74 74 65 5f 62 6c 6f 63  6b 0a 54 68 69 73 20 69  |tte_block.This i|
000745a0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 44 65  |s defined in <De|
000745b0  73 6b 4c 69 62 3a 57 69  6d 70 2e 68 3d 3e 57 69  |skLib:Wimp.h=>Wi|
000745c0  6d 70 3e 20 61 73 20 74  68 65 20 66 6f 6c 6c 6f  |mp> as the follo|
000745d0  77 69 6e 67 20 73 74 72  75 63 74 75 72 65 3a 0a  |wing structure:.|
000745e0  0a 20 20 20 5c 7b 0a 20  20 20 20 20 20 3c 70 61  |.   \{.      <pa|
000745f0  6c 65 74 74 65 5f 65 6e  74 72 79 3e 20 63 6f 6c  |lette_entry> col|
00074600  6f 75 72 5b 31 36 5d 3b  0a 20 20 20 20 20 20 70  |our[16];.      p|
00074610  61 6c 65 74 74 65 5f 65  6e 74 72 79 20 62 6f 72  |alette_entry bor|
00074620  64 65 72 3b 0a 20 20 20  20 20 20 70 61 6c 65 74  |der;.      palet|
00074630  74 65 5f 65 6e 74 72 79  20 6d 6f 75 73 65 31 3b  |te_entry mouse1;|
00074640  0a 20 20 20 20 20 20 70  61 6c 65 74 74 65 5f 65  |.      palette_e|
00074650  6e 74 72 79 20 6d 6f 75  73 65 32 3b 0a 20 20 20  |ntry mouse2;.   |
00074660  20 20 20 70 61 6c 65 74  74 65 5f 65 6e 74 72 79  |   palette_entry|
00074670  20 6d 6f 75 73 65 33 3b  0a 20 20 20 7d 00 00 00  | mouse3;.   }...|
00074680  44 41 54 41 ed 00 00 00  70 61 6c 65 74 74 65 5f  |DATA....palette_|
00074690  65 6e 74 72 79 0a 54 68  69 73 20 74 79 70 65 20  |entry.This type |
000746a0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 44  |is defined in <D|
000746b0  65 73 6b 4c 69 62 3a 57  69 6d 70 2e 68 3d 3e 57  |eskLib:Wimp.h=>W|
000746c0  69 6d 70 3e 20 61 73 20  74 68 65 20 66 6f 6c 6c  |imp> as the foll|
000746d0  6f 77 69 6e 67 20 75 6e  69 6f 6e 3a 0a 0a 20 20  |owing union:..  |
000746e0  20 5c 7b 0a 20 20 20 20  20 20 69 6e 74 20 76 61  | \{.      int va|
000746f0  6c 75 65 3b 0a 20 20 20  20 20 20 73 74 72 75 63  |lue;.      struc|
00074700  74 0a 20 20 20 20 20 20  5c 7b 0a 20 20 20 20 20  |t.      \{.     |
00074710  20 20 20 20 63 68 61 72  20 67 63 6f 6c 3b 0a 20  |    char gcol;. |
00074720  20 20 20 20 20 20 20 20  63 68 61 72 20 72 65 64  |        char red|
00074730  3b 0a 20 20 20 20 20 20  20 20 20 63 68 61 72 20  |;.         char |
00074740  67 72 65 65 6e 3b 0a 20  20 20 20 20 20 20 20 20  |green;.         |
00074750  63 68 61 72 20 62 6c 75  65 3b 0a 20 20 20 20 20  |char blue;.     |
00074760  20 7d 20 64 61 74 61 3b  0a 20 20 20 7d 00 00 00  | } data;.   }...|
00074770  44 41 54 41 a6 03 00 00  44 65 73 6b 4c 69 62 3a  |DATA....DeskLib:|
00074780  50 61 6e 65 2e 68 0a 56  65 72 73 69 6f 6e 3a 20  |Pane.h.Version: |
00074790  31 2e 31 31 20 28 33 30  74 68 20 4d 61 72 63 68  |1.11 (30th March|
000747a0  20 31 39 39 34 29 0a 23  6c 69 6e 65 0a 54 68 69  | 1994).#line.Thi|
000747b0  73 20 68 65 61 64 65 72  20 66 69 6c 65 20 70 72  |s header file pr|
000747c0  6f 76 69 64 65 73 20 66  61 63 69 6c 69 74 69 65  |ovides facilitie|
000747d0  73 20 66 6f 72 20 75 73  69 6e 67 20 6c 69 6e 6b  |s for using link|
000747e0  65 64 20 77 69 6e 64 6f  77 73 20 69 65 20 77 68  |ed windows ie wh|
000747f0  65 6e 20 79 6f 75 20 6f  70 65 6e 20 6f 6e 65 20  |en you open one |
00074800  77 69 6e 64 6f 77 20 61  6e 6f 74 68 65 72 20 6f  |window another o|
00074810  6e 65 20 6f 70 65 6e 73  20 61 73 20 77 65 6c 6c  |ne opens as well|
00074820  20 65 67 20 74 68 65 20  73 74 61 74 75 73 20 62  | eg the status b|
00074830  61 72 20 6f 6e 20 53 74  72 6f 6e 67 45 44 2c 20  |ar on StrongED, |
00074840  74 68 65 20 74 6f 6f 6c  62 6f 78 20 6f 6e 20 44  |the toolbox on D|
00074850  72 61 77 2e 0a 0a 46 75  6e 63 74 69 6f 6e 73 3a  |raw...Functions:|
00074860  0a 0a 23 49 6e 64 65 6e  74 20 36 0a 23 54 61 62  |..#Indent 6.#Tab|
00074870  6c 65 20 34 20 32 31 0a  3c 50 61 6e 65 5f 43 72  |le 4 21.<Pane_Cr|
00074880  65 61 74 65 41 6e 64 4c  69 6e 6b 3e 0a 3c 50 61  |eateAndLink>.<Pa|
00074890  6e 65 5f 44 65 6c 65 74  65 3e 0a 3c 50 61 6e 65  |ne_Delete>.<Pane|
000748a0  5f 47 65 74 53 79 73 48  61 6e 64 6c 65 3e 0a 3c  |_GetSysHandle>.<|
000748b0  50 61 6e 65 5f 48 69 64  65 3e 0a 3c 50 61 6e 65  |Pane_Hide>.<Pane|
000748c0  5f 4c 69 6e 6b 3e 0a 3c  50 61 6e 65 5f 4f 70 65  |_Link>.<Pane_Ope|
000748d0  6e 45 76 65 6e 74 48 61  6e 64 6c 65 72 3e 0a 3c  |nEventHandler>.<|
000748e0  50 61 6e 65 5f 53 65 74  46 6c 61 67 73 3e 0a 3c  |Pane_SetFlags>.<|
000748f0  50 61 6e 65 5f 53 68 6f  77 3e 0a 23 45 6e 64 54  |Pane_Show>.#EndT|
00074900  61 62 6c 65 0a 23 49 6e  64 65 6e 74 20 30 0a 0a  |able.#Indent 0..|
00074910  4d 61 63 72 6f 73 3a 0a  0a 23 49 6e 64 65 6e 74  |Macros:..#Indent|
00074920  20 31 33 0a 23 54 61 62  6c 65 20 33 20 32 31 0a  | 13.#Table 3 21.|
00074930  3c 70 61 6e 65 5f 4f 50  45 4e 3d 3e 70 61 6e 65  |<pane_OPEN=>pane|
00074940  5f 66 6c 61 67 73 5f 3e  0a 3c 70 61 6e 65 5f 46  |_flags_>.<pane_F|
00074950  49 58 45 44 3d 3e 70 61  6e 65 5f 66 6c 61 67 73  |IXED=>pane_flags|
00074960  5f 3e 0a 3c 70 61 6e 65  5f 52 45 53 49 5a 45 3d  |_>.<pane_RESIZE=|
00074970  3e 70 61 6e 65 5f 66 6c  61 67 73 5f 3e 0a 3c 70  |>pane_flags_>.<p|
00074980  61 6e 65 5f 48 4f 52 49  5a 3d 3e 70 61 6e 65 5f  |ane_HORIZ=>pane_|
00074990  66 6c 61 67 73 5f 3e 0a  3c 70 61 6e 65 5f 56 45  |flags_>.<pane_VE|
000749a0  52 54 3d 3e 70 61 6e 65  5f 66 6c 61 67 73 5f 3e  |RT=>pane_flags_>|
000749b0  0a 23 45 6e 64 54 61 62  6c 65 0a 23 49 6e 64 65  |.#EndTable.#Inde|
000749c0  6e 74 20 30 0a 0a 54 79  70 65 73 3a 0a 0a 7b 61  |nt 0..Types:..{a|
000749d0  6c 69 67 6e 20 63 65 6e  74 72 65 7d 3c 70 61 6e  |lign centre}<pan|
000749e0  65 5f 64 61 74 61 3e 7b  61 6c 69 67 6e 7d 0a 0a  |e_data>{align}..|
000749f0  54 6f 20 75 73 65 20 77  69 6e 64 6f 77 73 20 77  |To use windows w|
00074a00  69 74 68 20 70 61 6e 65  73 2c 20 66 69 72 73 74  |ith panes, first|
00074a10  20 6c 69 6e 6b 20 74 77  6f 20 77 69 6e 64 6f 77  | link two window|
00074a20  73 20 75 73 69 6e 67 20  3c 50 61 6e 65 5f 4c 69  |s using <Pane_Li|
00074a30  6e 6b 3e 20 6f 72 20 3c  50 61 6e 65 5f 43 72 65  |nk> or <Pane_Cre|
00074a40  61 74 65 41 6e 64 4c 69  6e 6b 3e 2e 20 59 6f 75  |ateAndLink>. You|
00074a50  20 63 61 6e 20 74 68 65  6e 20 6f 70 65 6e 20 61  | can then open a|
00074a60  6e 64 20 63 6c 6f 73 65  20 74 68 65 6e 20 75 73  |nd close then us|
00074a70  69 6e 67 20 3c 50 61 6e  65 5f 53 68 6f 77 3e 20  |ing <Pane_Show> |
00074a80  61 6e 64 20 3c 50 61 6e  65 5f 48 69 64 65 3e 20  |and <Pane_Hide> |
00074a90  69 6e 73 74 65 61 64 20  6f 66 20 3c 57 69 6e 64  |instead of <Wind|
00074aa0  6f 77 5f 53 68 6f 77 3e  20 61 6e 64 20 3c 57 69  |ow_Show> and <Wi|
00074ab0  6e 64 6f 77 5f 48 69 64  65 3e 2e 20 49 74 20 69  |ndow_Hide>. It i|
00074ac0  73 20 62 65 73 74 20 74  6f 20 69 6e 73 74 61 6c  |s best to instal|
00074ad0  6c 20 3c 50 61 6e 65 5f  4f 70 65 6e 45 76 65 6e  |l <Pane_OpenEven|
00074ae0  74 48 61 6e 64 6c 65 72  3e 20 75 73 69 6e 67 20  |tHandler> using |
00074af0  3c 45 76 65 6e 74 5f 43  6c 61 69 6d 3e 20 66 6f  |<Event_Claim> fo|
00074b00  72 20 65 61 73 79 20 77  69 6e 64 6f 77 20 6f 70  |r easy window op|
00074b10  65 6e 69 6e 67 2e 00 00  44 49 52 24 6c 01 00 00  |ening...DIR$l...|
00074b20  6c 01 00 00 84 4c 07 00  46 ff ff ff 26 75 44 25  |l....L..F...&uD%|
00074b30  35 02 00 00 13 00 00 00  00 00 00 00 43 72 65 61  |5...........Crea|
00074b40  74 65 41 6e 64 4c 69 6e  6b 00 00 00 bc 4e 07 00  |teAndLink....N..|
00074b50  46 ff ff ff 78 14 45 25  09 03 00 00 13 00 00 00  |F...x.E%........|
00074b60  00 00 00 00 64 61 74 61  00 00 00 00 c8 51 07 00  |....data.....Q..|
00074b70  46 ff ff ff 4c 7b 44 25  d9 00 00 00 13 00 00 00  |F...L{D%........|
00074b80  00 00 00 00 44 65 6c 65  74 65 00 00 a4 52 07 00  |....Delete...R..|
00074b90  46 fd ff ff 5f c7 44 25  96 02 00 00 13 00 00 00  |F..._.D%........|
00074ba0  00 00 00 00 66 6c 61 67  73 5f 00 00 3c 55 07 00  |....flags_..<U..|
00074bb0  46 ff ff ff 7e 80 44 25  22 01 00 00 13 00 00 00  |F...~.D%".......|
00074bc0  00 00 00 00 47 65 74 53  79 73 48 61 6e 64 6c 65  |....GetSysHandle|
00074bd0  00 00 00 00 60 56 07 00  46 ff ff ff 48 84 44 25  |....`V..F...H.D%|
00074be0  ae 00 00 00 13 00 00 00  00 00 00 00 48 69 64 65  |............Hide|
00074bf0  00 00 00 00 10 57 07 00  46 ff ff ff 1a 8d 44 25  |.....W..F.....D%|
00074c00  b1 01 00 00 13 00 00 00  00 00 00 00 4c 69 6e 6b  |............Link|
00074c10  00 00 00 00 c4 58 07 00  46 ff ff ff 48 dc 44 25  |.....X..F...H.D%|
00074c20  79 01 00 00 13 00 00 00  00 00 00 00 4f 70 65 6e  |y...........Open|
00074c30  45 76 65 6e 74 48 61 6e  64 6c 65 72 00 00 00 00  |EventHandler....|
00074c40  40 5a 07 00 46 ff ff ff  94 ec 44 25 9d 01 00 00  |@Z..F.....D%....|
00074c50  13 00 00 00 00 00 00 00  53 65 74 46 6c 61 67 73  |........SetFlags|
00074c60  00 00 00 00 e0 5b 07 00  46 ff ff ff 31 f1 44 25  |.....[..F...1.D%|
00074c70  d8 00 00 00 13 00 00 00  00 00 00 00 53 68 6f 77  |............Show|
00074c80  00 00 00 00 44 41 54 41  35 02 00 00 50 61 6e 65  |....DATA5...Pane|
00074c90  5f 43 72 65 61 74 65 41  6e 64 4c 69 6e 6b 0a 53  |_CreateAndLink.S|
00074ca0  79 6e 74 61 78 3a 09 3c  77 69 6e 64 6f 77 5f 68  |yntax:.<window_h|
00074cb0  61 6e 64 6c 65 3e 20 50  61 6e 65 5f 43 72 65 61  |andle> Pane_Crea|
00074cc0  74 65 41 6e 64 4c 69 6e  6b 20 28 63 68 61 72 20  |teAndLink (char |
00074cd0  2a 6d 61 73 74 6e 61 6d  65 2c 20 63 68 61 72 20  |*mastname, char |
00074ce0  2a 70 61 6e 65 6e 61 6d  65 2c 20 69 6e 74 20 6d  |*panename, int m|
00074cf0  61 73 74 6d 61 78 73 69  7a 65 2c 20 69 6e 74 20  |astmaxsize, int |
00074d00  70 61 6e 65 6d 61 78 73  69 7a 65 2c 20 3c 77 69  |panemaxsize, <wi|
00074d10  6d 70 5f 70 6f 69 6e 74  3e 20 2a 6f 66 66 73 65  |mp_point> *offse|
00074d20  74 2c 20 77 69 6d 70 5f  70 6f 69 6e 74 20 2a 73  |t, wimp_point *s|
00074d30  69 7a 65 2c 20 69 6e 74  20 3c 66 6c 61 67 73 3d  |ize, int <flags=|
00074d40  3e 70 61 6e 65 5f 66 6c  61 67 73 5f 3e 29 3b 0a  |>pane_flags_>);.|
00074d50  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
00074d60  3a 50 61 6e 65 2e 68 3d  3e 50 61 6e 65 3e 0a 0a  |:Pane.h=>Pane>..|
00074d70  52 65 74 75 72 6e 73 3a  09 57 69 6e 64 6f 77 20  |Returns:.Window |
00074d80  68 61 6e 64 6c 65 20 6f  66 20 6d 61 73 74 65 72  |handle of master|
00074d90  20 77 69 6e 64 6f 77 2e  0a 0a 54 68 69 73 20 66  | window...This f|
00074da0  75 6e 63 74 69 6f 6e 20  63 72 65 61 74 65 73 20  |unction creates |
00074db0  61 6e 64 20 6c 69 6e 6b  73 20 74 68 65 20 74 77  |and links the tw|
00074dc0  6f 20 77 69 6e 64 6f 77  73 20 67 69 76 65 6e 20  |o windows given |
00074dd0  69 6e 20 2f 6d 61 73 74  6e 61 6d 65 2f 20 61 6e  |in /mastname/ an|
00074de0  64 20 2f 70 61 6e 65 6e  61 6d 65 2f 20 77 69 74  |d /panename/ wit|
00074df0  68 20 74 69 74 6c 65 20  73 69 7a 65 73 20 61 73  |h title sizes as|
00074e00  20 66 6f 72 20 3c 54 65  6d 70 6c 61 74 65 5f 43  | for <Template_C|
00074e10  6c 6f 6e 65 3e 2e 20 2f  6f 66 66 73 65 74 2f 20  |lone>. /offset/ |
00074e20  63 6f 6e 74 61 69 6e 73  20 74 68 65 20 6f 66 66  |contains the off|
00074e30  73 65 74 20 66 72 6f 6d  20 74 68 65 20 6d 61 73  |set from the mas|
00074e40  74 65 72 20 77 69 6e 64  6f 77 20 74 6f 20 74 68  |ter window to th|
00074e50  65 20 70 61 6e 65 20 77  69 6e 64 6f 77 2e 20 49  |e pane window. I|
00074e60  66 20 2f 6f 66 66 73 65  74 2f 20 6f 72 20 2f 73  |f /offset/ or /s|
00074e70  69 7a 65 2f 20 61 72 65  20 3c 4e 55 4c 4c 3e 20  |ize/ are <NULL> |
00074e80  74 68 65 6e 20 74 68 65  20 6f 66 66 73 65 74 20  |then the offset |
00074e90  62 65 74 77 65 65 6e 20  74 68 65 20 74 65 6d 70  |between the temp|
00074ea0  6c 61 74 65 73 20 61 73  20 64 65 66 69 6e 65 64  |lates as defined|
00074eb0  20 69 73 20 75 73 65 64  2e 00 00 00 44 41 54 41  | is used....DATA|
00074ec0  09 03 00 00 70 61 6e 65  5f 64 61 74 61 0a 54 68  |....pane_data.Th|
00074ed0  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
00074ee0  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 50  |ed in <DeskLib:P|
00074ef0  61 6e 65 2e 68 3d 3e 50  61 6e 65 3e 2e 20 49 74  |ane.h=>Pane>. It|
00074f00  20 63 6f 6e 74 61 69 6e  73 20 64 65 74 61 69 6c  | contains detail|
00074f10  73 20 61 62 6f 75 74 20  61 20 6c 69 6e 6b 65 64  |s about a linked|
00074f20  20 77 69 6e 64 6f 77 20  70 61 69 72 20 69 6e 20  | window pair in |
00074f30  74 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 73 74  |the following st|
00074f40  72 75 63 74 75 72 65 3a  0a 0a 5c 7b 0a 20 3c 77  |ructure:..\{. <w|
00074f50  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 3e 09 6d 61  |indow_handle>.ma|
00074f60  73 74 65 72 3b 0a 20 3c  77 69 6e 64 6f 77 5f 68  |ster;. <window_h|
00074f70  61 6e 64 6c 65 3e 09 70  61 6e 65 3b 0a 20 3c 77  |andle>.pane;. <w|
00074f80  69 6d 70 5f 70 6f 69 6e  74 3e 09 09 6f 66 66 73  |imp_point>..offs|
00074f90  65 74 3b 0a 20 3c 77 69  6d 70 5f 70 6f 69 6e 74  |et;. <wimp_point|
00074fa0  3e 09 09 73 69 7a 65 3b  0a 20 75 6e 69 6f 6e 0a  |>..size;. union.|
00074fb0  20 5c 7b 0a 20 20 69 6e  74 20 76 61 6c 75 65 3b  | \{.  int value;|
00074fc0  0a 20 20 73 74 72 75 63  74 0a 20 20 5c 7b 7b 74  |.  struct.  \{{t|
00074fd0  61 62 7d 0a 20 20 20 75  6e 73 69 67 6e 65 64 20  |ab}.   unsigned |
00074fe0  69 73 6f 70 65 6e 09 3a  20 31 3b 09 2f 2a 20 43  |isopen.: 1;./* C|
00074ff0  75 72 72 65 6e 74 6c 79  20 6f 70 65 6e 20 2a 2f  |urrently open */|
00075000  0a 20 20 20 75 6e 73 69  67 6e 65 64 20 66 69 78  |.   unsigned fix|
00075010  65 64 09 3a 20 31 3b 09  2f 2a 20 50 61 6e 65 20  |ed.: 1;./* Pane |
00075020  73 74 61 79 73 20 69 6e  20 70 6c 61 63 65 20 2a  |stays in place *|
00075030  2f 0a 20 20 20 75 6e 73  69 67 6e 65 64 20 72 65  |/.   unsigned re|
00075040  73 69 7a 65 09 3a 20 31  3b 09 2f 2a 20 50 61 6e  |size.: 1;./* Pan|
00075050  65 20 73 68 72 69 6e 6b  73 20 2a 2f 0a 20 20 20  |e shrinks */.   |
00075060  75 6e 73 69 67 6e 65 64  20 68 6f 72 69 7a 09 3a  |unsigned horiz.:|
00075070  20 31 3b 09 2f 2a 20 48  6f 72 69 7a 6f 6e 74 61  | 1;./* Horizonta|
00075080  6c 20 70 61 6e 65 20 2a  2f 0a 20 20 20 75 6e 73  |l pane */.   uns|
00075090  69 67 6e 65 64 20 76 65  72 74 09 3a 20 31 3b 09  |igned vert.: 1;.|
000750a0  2f 2a 20 56 65 72 74 69  63 61 6c 20 70 61 6e 65  |/* Vertical pane|
000750b0  20 2a 2f 0a 20 20 20 75  6e 73 69 67 6e 65 64 20  | */.   unsigned |
000750c0  64 75 6d 6d 79 09 3a 20  32 37 3b 0a 20 20 7d 20  |dummy.: 27;.  } |
000750d0  64 61 74 61 3b 0a 20 7d  20 66 6c 61 67 73 3b 0a  |data;. } flags;.|
000750e0  7d 0a 0a 2f 72 65 73 69  7a 65 2f 20 6d 65 61 6e  |}../resize/ mean|
000750f0  73 20 74 68 61 74 20 74  68 65 20 70 61 6e 65 20  |s that the pane |
00075100  69 73 20 72 65 73 69 7a  65 64 20 77 69 74 68 20  |is resized with |
00075110  74 68 65 20 6d 61 69 6e  20 77 69 6e 64 6f 77 2e  |the main window.|
00075120  20 48 6f 72 69 7a 6f 6e  74 61 6c 2f 56 65 72 74  | Horizontal/Vert|
00075130  69 63 61 6c 20 64 65 66  69 6e 65 73 20 74 68 65  |ical defines the|
00075140  20 77 61 79 20 74 68 65  20 70 61 6e 65 20 77 69  | way the pane wi|
00075150  6e 64 6f 77 20 73 68 72  69 6e 6b 73 20 28 6f 6e  |ndow shrinks (on|
00075160  6c 79 20 69 66 20 2f 72  65 73 69 7a 65 2f 20 73  |ly if /resize/ s|
00075170  65 74 29 2e 20 2f 66 69  78 65 64 2f 20 6d 65 61  |et). /fixed/ mea|
00075180  6e 73 20 74 68 61 74 20  74 68 65 20 70 61 6e 65  |ns that the pane|
00075190  20 6b 65 65 70 73 20 74  68 65 20 73 61 6d 65 20  | keeps the same |
000751a0  72 65 6c 61 74 69 76 65  20 70 6f 73 69 74 69 6f  |relative positio|
000751b0  6e 20 74 6f 20 74 68 65  20 6d 61 69 6e 20 77 69  |n to the main wi|
000751c0  6e 64 6f 77 2e 00 00 00  44 41 54 41 d9 00 00 00  |ndow....DATA....|
000751d0  50 61 6e 65 5f 44 65 6c  65 74 65 0a 53 79 6e 74  |Pane_Delete.Synt|
000751e0  61 78 3a 09 76 6f 69 64  20 50 61 6e 65 5f 44 65  |ax:.void Pane_De|
000751f0  6c 65 74 65 20 28 3c 77  69 6e 64 6f 77 5f 68 61  |lete (<window_ha|
00075200  6e 64 6c 65 3e 20 77 69  6e 29 3b 0a 48 65 61 64  |ndle> win);.Head|
00075210  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 50 61 6e  |er:.<DeskLib:Pan|
00075220  65 2e 68 3d 3e 50 61 6e  65 3e 0a 0a 2f 77 69 6e  |e.h=>Pane>../win|
00075230  2f 20 69 73 20 74 68 65  20 6d 61 73 74 65 72 20  |/ is the master |
00075240  77 69 6e 64 6f 77 20 68  61 6e 64 6c 65 2e 20 54  |window handle. T|
00075250  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 75 6e 6c  |his function unl|
00075260  69 6e 6b 73 20 69 74 20  66 72 6f 6d 20 69 74 73  |inks it from its|
00075270  20 70 61 6e 65 20 61 6e  64 20 63 61 6c 6c 73 20  | pane and calls |
00075280  3c 57 69 6e 64 6f 77 5f  44 65 6c 65 74 65 3e 20  |<Window_Delete> |
00075290  66 6f 72 20 62 6f 74 68  20 77 69 6e 64 6f 77 73  |for both windows|
000752a0  2e 00 00 00 44 41 54 41  96 02 00 00 50 61 6e 65  |....DATA....Pane|
000752b0  20 66 6c 61 67 73 0a 54  68 65 73 65 20 64 65 74  | flags.These det|
000752c0  65 72 6d 69 6e 65 20 74  68 65 20 73 74 61 74 75  |ermine the statu|
000752d0  73 20 6f 66 20 74 68 65  20 6d 61 73 74 65 72 2f  |s of the master/|
000752e0  70 61 6e 65 20 77 69 6e  64 6f 77 20 63 6f 6d 62  |pane window comb|
000752f0  69 6e 61 74 69 6f 6e 2e  20 54 68 65 20 69 6e 64  |ination. The ind|
00075300  69 76 69 64 75 61 6c 20  62 69 74 73 20 68 61 76  |ividual bits hav|
00075310  65 20 74 68 65 20 66 6f  6c 6c 6f 77 69 6e 67 20  |e the following |
00075320  6d 65 61 6e 69 6e 67 3a  0a 0a 23 74 61 62 20 2c  |meaning:..#tab ,|
00075330  61 6c 69 67 6e 20 63 65  6e 74 72 65 2c 61 6c 69  |align centre,ali|
00075340  67 6e 20 63 65 6e 74 72  65 2c 61 6c 69 67 6e 20  |gn centre,align |
00075350  6c 65 66 74 0a 20 09 42  69 74 09 56 61 6c 75 65  |left. .Bit.Value|
00075360  09 4d 61 63 72 6f 0a 20  09 30 09 31 09 70 61 6e  |.Macro. .0.1.pan|
00075370  65 5f 4f 50 45 4e 0a 20  09 31 09 32 09 70 61 6e  |e_OPEN. .1.2.pan|
00075380  65 5f 46 49 58 45 44 0a  20 09 32 09 34 09 70 61  |e_FIXED. .2.4.pa|
00075390  6e 65 5f 52 45 53 49 5a  45 0a 20 09 33 09 38 09  |ne_RESIZE. .3.8.|
000753a0  70 61 6e 65 5f 48 4f 52  49 5a 0a 20 09 34 09 31  |pane_HORIZ. .4.1|
000753b0  36 09 70 61 6e 65 5f 56  45 52 54 0a 0a 54 68 65  |6.pane_VERT..The|
000753c0  20 6d 61 63 72 6f 73 20  61 72 65 20 64 65 66 69  | macros are defi|
000753d0  6e 65 64 20 61 73 20 74  68 65 20 69 6e 64 69 76  |ned as the indiv|
000753e0  69 64 75 61 6c 20 62 69  74 20 76 61 6c 75 65 73  |idual bit values|
000753f0  2e 20 7b 2a 7d 70 61 6e  65 5f 4f 50 45 4e 7b 2a  |. {*}pane_OPEN{*|
00075400  7d 20 69 6e 64 69 63 61  74 65 73 20 74 68 61 74  |} indicates that|
00075410  20 74 68 65 20 63 6f 6d  62 69 6e 61 74 69 6f 6e  | the combination|
00075420  20 69 73 20 63 75 72 72  65 6e 74 6c 79 20 6f 70  | is currently op|
00075430  65 6e 2e 20 7b 2a 7d 70  61 6e 65 5f 46 49 58 45  |en. {*}pane_FIXE|
00075440  44 7b 2a 7d 20 69 6e 64  69 63 61 74 65 73 20 74  |D{*} indicates t|
00075450  68 61 74 20 74 68 65 20  70 61 6e 65 20 73 74 61  |hat the pane sta|
00075460  79 73 20 69 6e 20 70 6c  61 63 65 20 72 65 6c 61  |ys in place rela|
00075470  74 69 76 65 20 74 6f 20  74 68 65 20 74 6f 70 20  |tive to the top |
00075480  6c 65 66 74 20 6f 66 20  74 68 65 20 6d 61 69 6e  |left of the main|
00075490  20 77 69 6e 64 6f 77 2e  20 7b 2a 7d 70 61 6e 65  | window. {*}pane|
000754a0  5f 52 45 53 49 5a 45 7b  2a 7d 20 69 6e 64 69 63  |_RESIZE{*} indic|
000754b0  61 74 65 73 20 74 68 61  74 20 74 68 65 20 70 61  |ates that the pa|
000754c0  6e 65 20 69 73 20 72 65  73 69 7a 65 64 20 77 69  |ne is resized wi|
000754d0  74 68 20 74 68 65 20 6d  61 69 6e 20 77 69 6e 64  |th the main wind|
000754e0  6f 77 2c 20 61 6e 64 20  7b 2a 7d 70 61 6e 65 5f  |ow, and {*}pane_|
000754f0  48 4f 52 49 5a 7b 2a 7d  20 61 6e 64 20 7b 2a 7d  |HORIZ{*} and {*}|
00075500  70 61 6e 65 5f 56 45 52  54 7b 2a 7d 20 69 6e 64  |pane_VERT{*} ind|
00075510  69 63 61 74 65 20 74 68  65 20 64 69 72 65 63 74  |icate the direct|
00075520  69 6f 6e 20 69 6e 20 77  68 69 63 68 20 74 68 65  |ion in which the|
00075530  73 65 20 72 65 73 69 7a  65 2e 00 00 44 41 54 41  |se resize...DATA|
00075540  22 01 00 00 50 61 6e 65  5f 47 65 74 53 79 73 48  |"...Pane_GetSysH|
00075550  61 6e 64 6c 65 0a 53 79  6e 74 61 78 3a 09 3c 70  |andle.Syntax:.<p|
00075560  61 6e 65 5f 64 61 74 61  3e 20 2a 50 61 6e 65 5f  |ane_data> *Pane_|
00075570  47 65 74 53 79 73 48 61  6e 64 6c 65 20 28 3c 77  |GetSysHandle (<w|
00075580  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 3e 20 6d 61  |indow_handle> ma|
00075590  73 74 65 72 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |ster);.Header:.<|
000755a0  44 65 73 6b 4c 69 62 3a  50 61 6e 65 2e 68 3d 3e  |DeskLib:Pane.h=>|
000755b0  50 61 6e 65 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |Pane>..Returns:.|
000755c0  50 6f 69 6e 74 65 72 20  74 6f 20 73 74 72 75 63  |Pointer to struc|
000755d0  74 75 72 65 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 2e  |ture, or <NULL>.|
000755e0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000755f0  67 65 74 73 20 61 20 70  6f 69 6e 74 65 72 20 74  |gets a pointer t|
00075600  6f 20 74 68 65 20 64 61  74 61 20 61 73 73 6f 63  |o the data assoc|
00075610  69 61 74 65 64 20 77 69  74 68 20 74 68 65 20 2f  |iated with the /|
00075620  6d 61 73 74 65 72 2f 20  77 69 6e 64 6f 77 2e 20  |master/ window. |
00075630  49 74 20 72 65 74 75 72  6e 73 20 3c 4e 55 4c 4c  |It returns <NULL|
00075640  3e 20 69 66 20 74 68 65  20 77 69 6e 64 6f 77 20  |> if the window |
00075650  69 73 20 6e 6f 74 20 6c  69 6e 6b 65 64 2e 00 00  |is not linked...|
00075660  44 41 54 41 ae 00 00 00  50 61 6e 65 5f 48 69 64  |DATA....Pane_Hid|
00075670  65 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 50  |e.Syntax:.void P|
00075680  61 6e 65 5f 48 69 64 65  28 3c 77 69 6e 64 6f 77  |ane_Hide(<window|
00075690  5f 68 61 6e 64 6c 65 3e  20 77 69 6e 64 6f 77 29  |_handle> window)|
000756a0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000756b0  69 62 3a 50 61 6e 65 2e  68 3d 3e 50 61 6e 65 3e  |ib:Pane.h=>Pane>|
000756c0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000756d0  63 61 6c 6c 73 20 3c 57  69 6e 64 6f 77 5f 48 69  |calls <Window_Hi|
000756e0  64 65 3e 20 62 6f 74 68  20 74 68 65 20 67 69 76  |de> both the giv|
000756f0  65 6e 20 6d 61 73 74 65  72 20 77 69 6e 64 6f 77  |en master window|
00075700  20 61 6e 64 20 69 74 73  20 70 61 6e 65 2e 00 00  | and its pane...|
00075710  44 41 54 41 b1 01 00 00  50 61 6e 65 5f 4c 69 6e  |DATA....Pane_Lin|
00075720  6b 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 50  |k.Syntax:.void P|
00075730  61 6e 65 5f 4c 69 6e 6b  20 28 3c 77 69 6e 64 6f  |ane_Link (<windo|
00075740  77 5f 68 61 6e 64 6c 65  3e 20 6d 61 73 74 2c 20  |w_handle> mast, |
00075750  77 69 6e 64 6f 77 5f 68  61 6e 64 6c 65 20 70 61  |window_handle pa|
00075760  6e 65 2c 20 3c 77 69 6d  70 5f 70 6f 69 6e 74 3e  |ne, <wimp_point>|
00075770  20 2a 6f 66 66 73 65 74  2c 20 77 69 6d 70 5f 70  | *offset, wimp_p|
00075780  6f 69 6e 74 20 2a 73 69  7a 65 2c 20 69 6e 74 20  |oint *size, int |
00075790  3c 66 6c 61 67 73 3d 3e  70 61 6e 65 5f 66 6c 61  |<flags=>pane_fla|
000757a0  67 73 5f 3e 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |gs_>);.Header:.<|
000757b0  44 65 73 6b 4c 69 62 3a  50 61 6e 65 2e 68 3d 3e  |DeskLib:Pane.h=>|
000757c0  50 61 6e 65 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |Pane>..This func|
000757d0  74 69 6f 6e 20 6c 69 6e  6b 73 20 74 68 65 20 6d  |tion links the m|
000757e0  61 73 74 65 72 20 61 6e  64 20 70 61 6e 65 20 77  |aster and pane w|
000757f0  69 6e 64 6f 77 73 20 77  68 6f 73 65 20 77 69 6e  |indows whose win|
00075800  64 6f 77 20 68 61 6e 64  6c 65 73 20 61 72 65 20  |dow handles are |
00075810  67 69 76 65 6e 2e 20 2f  6f 66 66 73 65 74 2f 20  |given. /offset/ |
00075820  73 70 65 63 69 66 69 65  73 20 74 68 65 20 6f 66  |specifies the of|
00075830  66 73 65 74 20 62 65 74  77 65 65 6e 20 74 68 65  |fset between the|
00075840  20 6d 61 73 74 65 72 20  61 6e 64 20 70 61 6e 65  | master and pane|
00075850  20 77 69 6e 64 6f 77 73  2e 20 49 66 20 2f 6f 66  | windows. If /of|
00075860  66 73 65 74 2f 20 6f 72  20 2f 73 69 7a 65 2f 20  |fset/ or /size/ |
00075870  61 72 65 20 3c 4e 55 4c  4c 3e 20 74 68 65 6e 20  |are <NULL> then |
00075880  74 68 69 73 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |this information|
00075890  20 69 73 20 74 61 6b 65  6e 20 66 72 6f 6d 20 74  | is taken from t|
000758a0  68 65 20 77 69 6e 64 6f  77 20 64 65 66 69 6e 69  |he window defini|
000758b0  74 69 6f 6e 73 20 74 68  65 6d 73 65 6c 76 65 73  |tions themselves|
000758c0  2e 00 00 00 44 41 54 41  79 01 00 00 50 61 6e 65  |....DATAy...Pane|
000758d0  5f 4f 70 65 6e 45 76 65  6e 74 48 61 6e 64 6c 65  |_OpenEventHandle|
000758e0  72 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |r.Header:.<DeskL|
000758f0  69 62 3a 50 61 6e 65 2e  68 3d 3e 50 61 6e 65 3e  |ib:Pane.h=>Pane>|
00075900  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00075910  63 61 6c 6c 73 20 3c 57  69 6d 70 5f 4f 70 65 6e  |calls <Wimp_Open|
00075920  57 69 6e 64 6f 77 3e 20  6f 6e 20 62 6f 74 68 20  |Window> on both |
00075930  74 68 65 20 77 69 6e 64  6f 77 20 67 69 76 65 6e  |the window given|
00075940  20 61 6e 64 20 69 74 73  20 61 73 73 6f 63 69 61  | and its associa|
00075950  74 65 64 20 70 61 6e 65  20 77 69 6e 64 6f 77 2e  |ted pane window.|
00075960  20 41 74 74 61 63 68 20  74 6f 20 74 68 65 20 4f  | Attach to the O|
00075970  70 65 6e 5f 57 69 6e 64  6f 77 5f 52 65 71 75 65  |pen_Window_Reque|
00075980  73 74 20 65 76 65 6e 74  20 66 6f 72 20 74 68 65  |st event for the|
00075990  20 6d 61 73 74 65 72 20  77 69 6e 64 6f 77 20 75  | master window u|
000759a0  73 69 6e 67 3a 0a 0a 7b  66 43 6f 64 65 3b 61 6c  |sing:..{fCode;al|
000759b0  69 67 6e 20 63 65 6e 74  72 65 7d 3c 45 76 65 6e  |ign centre}<Even|
000759c0  74 5f 43 6c 61 69 6d 3e  20 28 65 76 65 6e 74 5f  |t_Claim> (event_|
000759d0  4f 50 45 4e 2c 5b 6d 61  73 74 65 72 5d 2c 65 76  |OPEN,[master],ev|
000759e0  65 6e 74 5f 41 4e 59 2c  20 50 61 6e 65 5f 4f 70  |ent_ANY, Pane_Op|
000759f0  65 6e 45 76 65 6e 74 48  61 6e 64 6c 65 72 2c 3c  |enEventHandler,<|
00075a00  4e 55 4c 4c 3e 29 3b 7b  66 3b 61 6c 69 67 6e 7d  |NULL>);{f;align}|
00075a10  0a 0a 77 68 65 72 65 20  5b 6d 61 73 74 65 72 5d  |..where [master]|
00075a20  20 69 73 20 74 68 65 20  6d 61 73 74 65 72 20 77  | is the master w|
00075a30  69 6e 64 6f 77 20 68 61  6e 64 6c 65 2e 00 00 00  |indow handle....|
00075a40  44 41 54 41 9d 01 00 00  50 61 6e 65 5f 53 65 74  |DATA....Pane_Set|
00075a50  46 6c 61 67 73 0a 53 79  6e 74 61 78 3a 09 69 6e  |Flags.Syntax:.in|
00075a60  74 20 50 61 6e 65 5f 53  65 74 46 6c 61 67 73 20  |t Pane_SetFlags |
00075a70  28 3c 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 3e  |(<window_handle>|
00075a80  20 77 69 6e 2c 20 69 6e  74 20 3c 66 6c 61 67 73  | win, int <flags|
00075a90  3d 3e 70 61 6e 65 5f 66  6c 61 67 73 5f 3e 29 3b  |=>pane_flags_>);|
00075aa0  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
00075ab0  62 3a 50 61 6e 65 2e 68  3d 3e 50 61 6e 65 3e 0a  |b:Pane.h=>Pane>.|
00075ac0  0a 52 65 74 75 72 6e 73  3a 09 43 75 72 72 65 6e  |.Returns:.Curren|
00075ad0  74 20 66 6c 61 67 73 20  6f 72 20 3c 4e 55 4c 4c  |t flags or <NULL|
00075ae0  3e 20 6f 72 20 75 6e 64  65 66 69 6e 65 64 2e 0a  |> or undefined..|
00075af0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 73  |.This function s|
00075b00  65 74 73 20 74 68 65 20  66 6c 61 67 73 20 6f 66  |ets the flags of|
00075b10  20 74 68 65 20 6c 69 6e  6b 65 64 20 77 69 6e 64  | the linked wind|
00075b20  6f 77 73 2e 20 54 68 65  20 6d 61 73 74 65 72 20  |ows. The master |
00075b30  77 69 6e 64 6f 77 20 68  61 6e 64 6c 65 20 69 73  |window handle is|
00075b40  20 67 69 76 65 6e 20 69  6e 20 2f 77 69 6e 2f 20  | given in /win/ |
00075b50  61 6e 64 20 74 68 65 20  66 6c 61 67 73 20 69 6e  |and the flags in|
00075b60  20 2f 66 6c 61 67 73 2f  2e 20 49 66 20 7b 2f 7d  | /flags/. If {/}|
00075b70  66 6c 61 67 73 3d 3d 2d  31 7b 2f 7d 20 74 68 65  |flags==-1{/} the|
00075b80  6e 20 74 68 65 20 63 75  72 72 65 6e 74 20 66 6c  |n the current fl|
00075b90  61 67 73 20 61 72 65 20  72 65 74 75 72 6e 65 64  |ags are returned|
00075ba0  2e 20 49 66 20 74 68 65  20 6d 61 73 74 65 72 20  |. If the master |
00075bb0  77 69 6e 64 6f 77 20 69  73 20 6e 6f 74 20 6c 69  |window is not li|
00075bc0  6e 6b 65 64 20 74 68 65  6e 20 2a 4e 55 4c 4c 2a  |nked then *NULL*|
00075bd0  20 69 73 20 72 65 74 75  72 6e 65 64 2e 00 00 00  | is returned....|
00075be0  44 41 54 41 d8 00 00 00  50 61 6e 65 5f 53 68 6f  |DATA....Pane_Sho|
00075bf0  77 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 50  |w.Syntax:.void P|
00075c00  61 6e 65 5f 53 68 6f 77  20 28 3c 77 69 6e 64 6f  |ane_Show (<windo|
00075c10  77 5f 68 61 6e 64 6c 65  3e 20 77 69 6e 64 6f 77  |w_handle> window|
00075c20  2c 20 3c 77 69 6e 64 6f  77 5f 6f 70 65 6e 70 6f  |, <window_openpo|
00075c30  73 3e 20 6f 70 65 6e 70  6f 73 29 3b 0a 48 65 61  |s> openpos);.Hea|
00075c40  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 50 61  |der:.<DeskLib:Pa|
00075c50  6e 65 2e 68 3d 3e 50 61  6e 65 3e 0a 0a 54 68 69  |ne.h=>Pane>..Thi|
00075c60  73 20 66 75 6e 63 74 69  6f 6e 20 63 61 6c 6c 73  |s function calls|
00075c70  20 3c 57 69 6e 64 6f 77  5f 53 68 6f 77 3e 20 66  | <Window_Show> f|
00075c80  6f 72 20 62 6f 74 68 20  74 68 65 20 67 69 76 65  |or both the give|
00075c90  6e 20 6d 61 73 74 65 72  20 77 69 6e 64 6f 77 20  |n master window |
00075ca0  61 6e 64 20 69 74 73 20  61 73 73 6f 63 69 61 74  |and its associat|
00075cb0  65 64 20 70 61 6e 65 2e  44 49 52 24 d4 00 00 00  |ed pane.DIR$....|
00075cc0  d4 00 00 00 8c 5d 07 00  46 ff ff ff 34 90 28 23  |.....]..F...4.(#|
00075cd0  ec 00 00 00 13 00 00 00  00 00 00 00 63 6c 6f 73  |............clos|
00075ce0  65 73 74 72 00 00 00 00  78 5e 07 00 46 ff ff ff  |estr....x^..F...|
00075cf0  9d 80 28 23 49 01 00 00  13 00 00 00 00 00 00 00  |..(#I...........|
00075d00  63 75 72 76 65 73 74 72  00 00 00 00 c4 5f 07 00  |curvestr....._..|
00075d10  46 ff ff ff 4b ae 28 23  51 01 00 00 13 00 00 00  |F...K.(#Q.......|
00075d20  00 00 00 00 65 6c 65 70  74 72 00 00 18 61 07 00  |....eleptr...a..|
00075d30  46 ff ff ff d2 6c 28 23  f8 00 00 00 13 00 00 00  |F....l(#........|
00075d40  00 00 00 00 6c 69 6e 65  73 74 72 00 10 62 07 00  |....linestr..b..|
00075d50  46 ff ff ff 95 58 28 23  ee 00 00 00 13 00 00 00  |F....X(#........|
00075d60  00 00 00 00 6d 6f 76 65  73 74 72 00 00 63 07 00  |....movestr..c..|
00075d70  46 ff ff ff a6 97 28 23  f2 00 00 00 13 00 00 00  |F.....(#........|
00075d80  00 00 00 00 74 65 72 6d  73 74 72 00 44 41 54 41  |....termstr.DATA|
00075d90  ec 00 00 00 50 61 74 68  5f 63 6c 6f 73 65 73 74  |....Path_closest|
00075da0  72 0a 54 68 69 73 20 74  79 70 65 20 69 73 20 64  |r.This type is d|
00075db0  65 66 69 6e 65 64 20 69  6e 20 3c 64 72 61 77 66  |efined in <drawf|
00075dc0  74 79 70 65 73 2e 68 3d  3e 64 72 61 77 66 74 79  |types.h=>drawfty|
00075dd0  70 65 73 3e 20 61 73 20  61 20 74 79 70 65 20 63  |pes> as a type c|
00075de0  6f 6e 74 61 69 6e 69 6e  67 20 64 61 74 61 20 66  |ontaining data f|
00075df0  6f 72 20 61 20 63 6c 6f  73 65 20 63 6f 6d 70 6f  |or a close compo|
00075e00  6e 65 6e 74 20 6f 66 20  61 20 70 61 74 68 2e 20  |nent of a path. |
00075e10  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It is defined as|
00075e20  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 73  | the following s|
00075e30  74 72 75 63 74 75 72 65  3a 0a 7b 77 72 61 70 20  |tructure:.{wrap |
00075e40  6f 66 66 7d 0a 20 09 5c  7b 0a 20 09 20 09 64 72  |off}. .\{. . .dr|
00075e50  61 77 5f 70 61 74 68 5f  74 61 67 74 79 70 65 20  |aw_path_tagtype |
00075e60  74 61 67 3b 20 20 2f 2a  20 74 61 67 20 3d 3d 20  |tag;  /* tag == |
00075e70  35 20 2a 2f 0a 20 09 7d  44 41 54 41 49 01 00 00  |5 */. .}DATAI...|
00075e80  50 61 74 68 5f 63 75 72  76 65 73 74 72 0a 54 68  |Path_curvestr.Th|
00075e90  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
00075ea0  65 64 20 69 6e 20 3c 64  72 61 77 66 74 79 70 65  |ed in <drawftype|
00075eb0  73 2e 68 3d 3e 64 72 61  77 66 74 79 70 65 73 3e  |s.h=>drawftypes>|
00075ec0  20 61 73 20 61 20 74 79  70 65 20 63 6f 6e 74 61  | as a type conta|
00075ed0  69 6e 69 6e 67 20 64 61  74 61 20 66 6f 72 20 61  |ining data for a|
00075ee0  20 62 65 7a 69 65 72 20  63 75 72 76 65 20 63 6f  | bezier curve co|
00075ef0  6d 70 6f 6e 65 6e 74 20  6f 66 20 61 20 70 61 74  |mponent of a pat|
00075f00  68 2e 20 49 74 20 69 73  20 64 65 66 69 6e 65 64  |h. It is defined|
00075f10  20 61 73 20 74 68 65 20  66 6f 6c 6c 6f 77 69 6e  | as the followin|
00075f20  67 20 73 74 72 75 63 74  75 72 65 3a 0a 7b 77 72  |g structure:.{wr|
00075f30  61 70 20 6f 66 66 7d 0a  20 09 5c 7b 0a 20 09 20  |ap off}. .\{. . |
00075f40  09 3c 64 72 61 77 5f 70  61 74 68 5f 74 61 67 74  |.<draw_path_tagt|
00075f50  79 70 65 3e 09 74 61 67  3b 09 2f 2a 20 74 61 67  |ype>.tag;./* tag|
00075f60  20 3d 3d 20 36 20 2a 2f  0a 20 09 20 09 69 6e 74  | == 6 */. . .int|
00075f70  09 78 31 2c 79 31 3b 09  2f 2a 20 63 6f 6e 74 72  |.x1,y1;./* contr|
00075f80  6f 6c 20 70 6f 69 6e 74  20 2a 2f 0a 20 09 20 09  |ol point */. . .|
00075f90  69 6e 74 09 78 32 2c 79  32 3b 09 2f 2a 20 63 6f  |int.x2,y2;./* co|
00075fa0  6e 74 72 6f 6c 20 70 6f  69 6e 74 20 2a 2f 0a 20  |ntrol point */. |
00075fb0  09 20 09 69 6e 74 09 78  33 2c 79 33 3b 0a 20 09  |. .int.x3,y3;. .|
00075fc0  7d 00 00 00 44 41 54 41  51 01 00 00 50 61 74 68  |}...DATAQ...Path|
00075fd0  5f 65 6c 65 70 74 72 0a  54 68 69 73 20 74 79 70  |_eleptr.This typ|
00075fe0  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
00075ff0  3c 64 72 61 77 66 74 79  70 65 73 2e 68 3d 3e 64  |<drawftypes.h=>d|
00076000  72 61 77 66 74 79 70 65  73 3e 20 61 73 20 61 20  |rawftypes> as a |
00076010  74 79 70 65 20 63 6f 6e  74 61 69 6e 69 6e 67 20  |type containing |
00076020  61 20 70 6f 69 6e 74 65  72 20 74 6f 20 61 20 70  |a pointer to a p|
00076030  61 74 68 20 63 6f 6d 70  6f 6e 65 6e 74 2e 20 49  |ath component. I|
00076040  74 20 69 73 20 64 65 66  69 6e 65 64 20 61 73 20  |t is defined as |
00076050  74 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 75 6e  |the following un|
00076060  69 6f 6e 3a 0a 0a 20 09  5c 7b 0a 20 09 20 09 3c  |ion:.. .\{. . .<|
00076070  50 61 74 68 5f 6d 6f 76  65 73 74 72 3e 09 2a 6d  |Path_movestr>.*m|
00076080  6f 76 65 3b 0a 20 09 20  09 3c 50 61 74 68 5f 6c  |ove;. . .<Path_l|
00076090  69 6e 65 73 74 72 3e 09  2a 6c 69 6e 65 3b 0a 20  |inestr>.*line;. |
000760a0  09 20 09 3c 50 61 74 68  5f 63 75 72 76 65 73 74  |. .<Path_curvest|
000760b0  72 3e 09 2a 63 75 72 76  65 3b 0a 20 09 20 09 3c  |r>.*curve;. . .<|
000760c0  50 61 74 68 5f 63 6c 6f  73 65 73 74 72 3e 09 2a  |Path_closestr>.*|
000760d0  63 6c 6f 73 65 3b 0a 20  09 20 09 3c 50 61 74 68  |close;. . .<Path|
000760e0  5f 74 65 72 6d 73 74 72  3e 09 2a 74 65 72 6d 3b  |_termstr>.*term;|
000760f0  0a 20 09 20 09 63 68 61  72 09 2a 62 79 74 65 70  |. . .char.*bytep|
00076100  3b 0a 20 09 20 09 69 6e  74 09 2a 77 6f 72 64 70  |;. . .int.*wordp|
00076110  3b 0a 20 09 7d 00 00 00  44 41 54 41 f8 00 00 00  |;. .}...DATA....|
00076120  50 61 74 68 5f 6c 69 6e  65 73 74 72 0a 54 68 69  |Path_linestr.Thi|
00076130  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
00076140  64 20 69 6e 20 3c 64 72  61 77 66 74 79 70 65 73  |d in <drawftypes|
00076150  2e 68 3d 3e 64 72 61 77  66 74 79 70 65 73 3e 20  |.h=>drawftypes> |
00076160  61 73 20 61 20 74 79 70  65 20 63 6f 6e 74 61 69  |as a type contai|
00076170  6e 69 6e 67 20 64 61 74  61 20 66 6f 72 20 61 20  |ning data for a |
00076180  6c 69 6e 65 20 63 6f 6d  70 6f 6e 65 6e 74 20 6f  |line component o|
00076190  66 20 61 20 70 61 74 68  2e 20 49 74 20 69 73 20  |f a path. It is |
000761a0  64 65 66 69 6e 65 64 20  61 73 20 74 68 65 20 66  |defined as the f|
000761b0  6f 6c 6c 6f 77 69 6e 67  20 73 74 72 75 63 74 75  |ollowing structu|
000761c0  72 65 3a 0a 7b 77 72 61  70 20 6f 66 66 7d 0a 20  |re:.{wrap off}. |
000761d0  09 5c 7b 0a 20 09 20 09  3c 64 72 61 77 5f 70 61  |.\{. . .<draw_pa|
000761e0  74 68 5f 74 61 67 74 79  70 65 3e 09 74 61 67 3b  |th_tagtype>.tag;|
000761f0  09 2f 2a 20 74 61 67 20  3d 3d 20 38 20 2a 2f 0a  |./* tag == 8 */.|
00076200  20 09 20 09 69 6e 74 09  78 2c 79 3b 0a 20 09 7d  | . .int.x,y;. .}|
00076210  44 41 54 41 ee 00 00 00  50 61 74 68 5f 6d 6f 76  |DATA....Path_mov|
00076220  65 73 74 72 0a 54 68 69  73 20 74 79 70 65 20 69  |estr.This type i|
00076230  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 64 72  |s defined in <dr|
00076240  61 77 66 74 79 70 65 73  2e 68 3d 3e 64 72 61 77  |awftypes.h=>draw|
00076250  66 74 79 70 65 73 3e 20  61 73 20 61 20 74 79 70  |ftypes> as a typ|
00076260  65 20 63 6f 6e 74 61 69  6e 69 6e 67 20 64 61 74  |e containing dat|
00076270  61 20 66 6f 72 20 61 20  6d 6f 76 65 20 63 6f 6d  |a for a move com|
00076280  70 6f 6e 65 6e 74 20 6f  66 20 61 20 70 61 74 68  |ponent of a path|
00076290  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
000762a0  61 73 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |as the following|
000762b0  20 73 74 72 75 63 74 75  72 65 3a 0a 0a 20 09 5c  | structure:.. .\|
000762c0  7b 0a 20 09 20 09 3c 64  72 61 77 5f 70 61 74 68  |{. . .<draw_path|
000762d0  5f 74 61 67 74 79 70 65  3e 09 74 61 67 3b 09 2f  |_tagtype>.tag;./|
000762e0  2a 20 74 61 67 20 3d 3d  20 32 20 2a 2f 0a 20 09  |* tag == 2 */. .|
000762f0  20 09 69 6e 74 09 78 2c  79 3b 0a 20 09 7d 00 00  | .int.x,y;. .}..|
00076300  44 41 54 41 f2 00 00 00  50 61 74 68 5f 74 65 72  |DATA....Path_ter|
00076310  6d 73 74 72 0a 54 68 69  73 20 74 79 70 65 20 69  |mstr.This type i|
00076320  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 64 72  |s defined in <dr|
00076330  61 77 66 74 79 70 65 73  2e 68 3d 3e 64 72 61 77  |awftypes.h=>draw|
00076340  66 74 79 70 65 73 3e 20  61 73 20 61 20 74 79 70  |ftypes> as a typ|
00076350  65 20 63 6f 6e 74 61 69  6e 69 6e 67 20 64 61 74  |e containing dat|
00076360  61 20 66 6f 72 20 61 6e  20 65 6e 64 2d 6f 66 2d  |a for an end-of-|
00076370  70 61 74 68 20 63 6f 6d  70 6f 6e 65 6e 74 20 6f  |path component o|
00076380  66 20 61 20 70 61 74 68  2e 20 49 74 20 69 73 20  |f a path. It is |
00076390  64 65 66 69 6e 65 64 20  61 73 20 74 68 65 20 66  |defined as the f|
000763a0  6f 6c 6c 6f 77 69 6e 67  20 73 74 72 75 63 74 75  |ollowing structu|
000763b0  72 65 3a 0a 7b 77 72 61  70 20 6f 66 66 7d 0a 20  |re:.{wrap off}. |
000763c0  20 5c 7b 0a 20 20 20 20  64 72 61 77 5f 70 61 74  | \{.    draw_pat|
000763d0  68 5f 74 61 67 74 79 70  65 20 74 61 67 3b 20 20  |h_tagtype tag;  |
000763e0  2f 2a 20 74 61 67 20 3d  3d 20 30 20 2a 2f 0a 20  |/* tag == 0 */. |
000763f0  20 7d 00 00 44 41 54 41  01 04 00 00 44 65 73 6b  | }..DATA....Desk|
00076400  4c 69 62 3a 50 44 72 69  76 65 72 2e 68 0a 56 65  |Lib:PDriver.h.Ve|
00076410  72 73 69 6f 6e 3a 20 31  2e 31 31 20 28 32 36 20  |rsion: 1.11 (26 |
00076420  4f 63 74 20 31 39 39 33  29 0a 23 6c 69 6e 65 0a  |Oct 1993).#line.|
00076430  54 68 69 73 20 68 65 61  64 65 72 20 70 72 6f 76  |This header prov|
00076440  69 64 65 73 20 66 75 6e  63 74 69 6f 6e 73 20 61  |ides functions a|
00076450  6e 64 20 74 79 70 65 73  20 66 6f 72 20 61 63 63  |nd types for acc|
00076460  65 73 73 69 6e 67 20 52  49 53 43 20 4f 53 20 70  |essing RISC OS p|
00076470  72 69 6e 74 65 72 20 64  72 69 76 65 72 20 53 57  |rinter driver SW|
00076480  49 73 20 66 72 6f 6d 20  43 2e 0a 0a 46 75 6e 63  |Is from C...Func|
00076490  74 69 6f 6e 73 3a 0a 0a  23 69 6e 64 65 6e 74 20  |tions:..#indent |
000764a0  32 0a 23 54 61 62 6c 65  20 39 20 32 33 0a 3c 50  |2.#Table 9 23.<P|
000764b0  44 72 69 76 65 72 5f 49  6e 66 6f 3e 0a 3c 50 44  |Driver_Info>.<PD|
000764c0  72 69 76 65 72 5f 50 72  69 6e 74 65 72 4e 61 6d  |river_PrinterNam|
000764d0  65 3e 0a 3c 50 44 72 69  76 65 72 5f 43 68 65 63  |e>.<PDriver_Chec|
000764e0  6b 46 65 61 74 75 72 65  73 3e 0a 3c 50 44 72 69  |kFeatures>.<PDri|
000764f0  76 65 72 5f 50 61 67 65  53 69 7a 65 3e 0a 3c 50  |ver_PageSize>.<P|
00076500  44 72 69 76 65 72 5f 53  65 6c 65 63 74 4a 6f 62  |Driver_SelectJob|
00076510  3e 0a 3c 50 44 72 69 76  65 72 5f 43 75 72 72 65  |>.<PDriver_Curre|
00076520  6e 74 4a 6f 62 3e 0a 3c  50 44 72 69 76 65 72 5f  |ntJob>.<PDriver_|
00076530  45 6e 64 4a 6f 62 3e 0a  3c 50 44 72 69 76 65 72  |EndJob>.<PDriver|
00076540  5f 41 62 6f 72 74 4a 6f  62 3e 0a 3c 50 44 72 69  |_AbortJob>.<PDri|
00076550  76 65 72 5f 47 69 76 65  52 65 63 74 61 6e 67 6c  |ver_GiveRectangl|
00076560  65 3e 0a 3c 50 44 72 69  76 65 72 5f 44 72 61 77  |e>.<PDriver_Draw|
00076570  50 61 67 65 3e 0a 3c 50  44 72 69 76 65 72 5f 47  |Page>.<PDriver_G|
00076580  65 74 52 65 63 74 61 6e  67 6c 65 3e 0a 3c 50 44  |etRectangle>.<PD|
00076590  72 69 76 65 72 5f 43 61  6e 63 65 6c 4a 6f 62 3e  |river_CancelJob>|
000765a0  0a 3c 50 44 72 69 76 65  72 5f 53 63 72 65 65 6e  |.<PDriver_Screen|
000765b0  44 75 6d 70 3e 0a 3c 50  44 72 69 76 65 72 5f 45  |Dump>.<PDriver_E|
000765c0  6e 75 6d 65 72 61 74 65  4a 6f 62 73 3e 0a 3c 50  |numerateJobs>.<P|
000765d0  44 72 69 76 65 72 5f 43  61 6e 63 65 6c 4a 6f 62  |Driver_CancelJob|
000765e0  57 69 74 68 45 72 72 6f  72 3e 0a 3c 50 44 72 69  |WithError>.<PDri|
000765f0  76 65 72 5f 53 65 6c 65  63 74 49 6c 6c 75 73 74  |ver_SelectIllust|
00076600  72 61 74 69 6f 6e 3e 0a  3c 50 44 72 69 76 65 72  |ration>.<PDriver|
00076610  5f 49 6e 73 65 72 74 49  6c 6c 75 73 74 72 61 74  |_InsertIllustrat|
00076620  69 6f 6e 3e 0a 23 45 6e  64 54 61 62 6c 65 0a 23  |ion>.#EndTable.#|
00076630  69 6e 64 65 6e 74 0a 0a  4d 61 63 72 6f 73 3a 0a  |indent..Macros:.|
00076640  0a 23 69 6e 64 65 6e 74  20 31 0a 23 54 61 62 6c  |.#indent 1.#Tabl|
00076650  65 20 37 20 32 33 0a 3c  70 72 69 6e 74 64 72 69  |e 7 23.<printdri|
00076660  76 65 72 5f 50 4f 53 54  53 43 52 49 50 54 3e 0a  |ver_POSTSCRIPT>.|
00076670  3c 70 72 69 6e 74 64 72  69 76 65 72 5f 46 58 38  |<printdriver_FX8|
00076680  30 3e 0a 3c 70 72 69 6e  74 64 72 69 76 65 72 5f  |0>.<printdriver_|
00076690  4c 41 53 45 52 4a 45 54  3e 0a 3c 70 72 69 6e 74  |LASERJET>.<print|
000766a0  64 72 69 76 65 72 5f 49  4e 54 45 47 52 45 58 3e  |driver_INTEGREX>|
000766b0  0a 3c 70 72 69 6e 74 66  65 61 74 5f 43 4f 4c 4f  |.<printfeat_COLO|
000766c0  55 52 3e 0a 3c 70 72 69  6e 74 66 65 61 74 5f 4c  |UR>.<printfeat_L|
000766d0  49 4d 49 54 45 44 3e 0a  3c 70 72 69 6e 74 66 65  |IMITED>.<printfe|
000766e0  61 74 5f 44 49 53 43 52  45 54 45 3e 0a 3c 70 72  |at_DISCRETE>.<pr|
000766f0  69 6e 74 66 65 61 74 5f  4e 4f 46 49 4c 4c 3e 0a  |intfeat_NOFILL>.|
00076700  3c 70 72 69 6e 74 66 65  61 74 5f 4e 4f 54 48 49  |<printfeat_NOTHI|
00076710  43 4b 4e 45 53 53 3e 0a  3c 70 72 69 6e 74 66 65  |CKNESS>.<printfe|
00076720  61 74 5f 4e 4f 4f 56 45  52 57 52 49 54 45 3e 0a  |at_NOOVERWRITE>.|
00076730  3c 70 72 69 6e 74 66 65  61 74 5f 53 43 52 45 45  |<printfeat_SCREE|
00076740  4e 44 55 4d 50 3e 0a 3c  70 72 69 6e 74 66 65 61  |NDUMP>.<printfea|
00076750  74 5f 54 52 41 4e 53 46  4f 52 4d 53 3e 0a 3c 70  |t_TRANSFORMS>.<p|
00076760  72 69 6e 74 66 65 61 74  5f 49 4c 4c 55 53 54 52  |rintfeat_ILLUSTR|
00076770  41 54 49 4f 4e 53 3e 0a  23 45 6e 64 54 61 62 6c  |ATIONS>.#EndTabl|
00076780  65 0a 23 69 6e 64 65 6e  74 0a 0a 54 79 70 65 73  |e.#indent..Types|
00076790  3a 0a 0a 23 69 6e 64 65  6e 74 20 38 0a 23 54 61  |:..#indent 8.#Ta|
000767a0  62 6c 65 20 32 20 32 33  0a 3c 70 72 69 6e 74 5f  |ble 2 23.<print_|
000767b0  6a 6f 62 3e 0a 3c 70 72  69 6e 74 5f 74 72 61 6e  |job>.<print_tran|
000767c0  73 66 6f 72 6d 61 74 69  6f 6e 3e 0a 3c 70 72 69  |sformation>.<pri|
000767d0  6e 74 5f 66 65 61 74 75  72 65 73 3e 0a 3c 70 72  |nt_features>.<pr|
000767e0  69 6e 74 65 72 5f 69 6e  66 6f 3e 0a 23 45 6e 64  |inter_info>.#End|
000767f0  54 61 62 6c 65 00 00 00  44 49 52 24 90 02 00 00  |Table...DIR$....|
00076800  90 02 00 00 88 6a 07 00  46 ff ff ff c5 a5 5f 25  |.....j..F....._%|
00076810  64 01 00 00 13 00 00 00  00 00 00 00 41 62 6f 72  |d...........Abor|
00076820  74 4a 6f 62 00 00 00 00  ec 6b 07 00 46 ff ff ff  |tJob.....k..F...|
00076830  07 f4 5f 25 79 01 00 00  13 00 00 00 00 00 00 00  |.._%y...........|
00076840  43 61 6e 63 65 6c 4a 6f  62 00 00 00 68 6d 07 00  |CancelJob...hm..|
00076850  46 ff ff ff 91 0a 60 25  79 01 00 00 13 00 00 00  |F.....`%y.......|
00076860  00 00 00 00 43 61 6e 63  65 6c 4a 6f 62 57 69 74  |....CancelJobWit|
00076870  68 45 72 72 6f 72 00 00  e4 6e 07 00 46 ff ff ff  |hError...n..F...|
00076880  97 58 5f 25 01 02 00 00  13 00 00 00 00 00 00 00  |.X_%............|
00076890  43 68 65 63 6b 46 65 61  74 75 72 65 73 00 00 00  |CheckFeatures...|
000768a0  e8 70 07 00 46 ff ff ff  b7 99 5f 25 44 01 00 00  |.p..F....._%D...|
000768b0  13 00 00 00 00 00 00 00  43 75 72 72 65 6e 74 4a  |........CurrentJ|
000768c0  6f 62 00 00 2c 72 07 00  46 ff ff ff bf d8 5f 25  |ob..,r..F....._%|
000768d0  60 03 00 00 13 00 00 00  00 00 00 00 44 72 61 77  |`...........Draw|
000768e0  50 61 67 65 00 00 00 00  8c 75 07 00 46 ff ff ff  |Page.....u..F...|
000768f0  e6 9f 5f 25 25 01 00 00  13 00 00 00 00 00 00 00  |.._%%...........|
00076900  45 6e 64 4a 6f 62 00 00  b4 76 07 00 46 ff ff ff  |EndJob...v..F...|
00076910  8a 04 60 25 a1 01 00 00  13 00 00 00 00 00 00 00  |..`%............|
00076920  45 6e 75 6d 65 72 61 74  65 4a 6f 62 73 00 00 00  |EnumerateJobs...|
00076930  58 78 07 00 46 ff ff ff  b5 ed 5f 25 25 02 00 00  |Xx..F....._%%...|
00076940  13 00 00 00 00 00 00 00  47 65 74 52 65 63 74 61  |........GetRecta|
00076950  6e 67 6c 65 00 00 00 00  80 7a 07 00 46 ff ff ff  |ngle.....z..F...|
00076960  e7 ba 5f 25 ef 02 00 00  13 00 00 00 00 00 00 00  |.._%............|
00076970  47 69 76 65 52 65 63 74  61 6e 67 6c 65 00 00 00  |GiveRectangle...|
00076980  70 7d 07 00 46 ff ff ff  5c d9 5e 25 72 01 00 00  |p}..F...\.^%r...|
00076990  13 00 00 00 00 00 00 00  49 6e 66 6f 00 00 00 00  |........Info....|
000769a0  e4 7e 07 00 46 ff ff ff  a3 35 60 25 54 02 00 00  |.~..F....5`%T...|
000769b0  13 00 00 00 00 00 00 00  49 6e 73 65 72 74 49 6c  |........InsertIl|
000769c0  6c 75 73 74 72 61 74 69  6f 6e 00 00 38 81 07 00  |lustration..8...|
000769d0  46 ff ff ff 30 6b 5f 25  91 01 00 00 13 00 00 00  |F...0k_%........|
000769e0  00 00 00 00 50 61 67 65  53 69 7a 65 00 00 00 00  |....PageSize....|
000769f0  cc 82 07 00 46 ff ff ff  e7 47 5f 25 6f 01 00 00  |....F....G_%o...|
00076a00  13 00 00 00 00 00 00 00  50 72 69 6e 74 65 72 4e  |........PrinterN|
00076a10  61 6d 65 00 3c 84 07 00  46 ff ff ff f2 f8 5f 25  |ame.<...F....._%|
00076a20  84 01 00 00 13 00 00 00  00 00 00 00 53 63 72 65  |............Scre|
00076a30  65 6e 44 75 6d 70 00 00  c0 85 07 00 46 ff ff ff  |enDump......F...|
00076a40  30 13 60 25 9f 01 00 00  13 00 00 00 00 00 00 00  |0.`%............|
00076a50  53 65 6c 65 63 74 49 6c  6c 75 73 74 72 61 74 69  |SelectIllustrati|
00076a60  6f 6e 00 00 60 87 07 00  46 ff ff ff 62 7d 5f 25  |on..`...F...b}_%|
00076a70  6c 02 00 00 13 00 00 00  00 00 00 00 53 65 6c 65  |l...........Sele|
00076a80  63 74 4a 6f 62 00 00 00  44 41 54 41 64 01 00 00  |ctJob...DATAd...|
00076a90  50 44 72 69 76 65 72 5f  41 62 6f 72 74 4a 6f 62  |PDriver_AbortJob|
00076aa0  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00076ab0  6f 72 3e 20 2a 50 44 72  69 76 65 72 5f 41 62 6f  |or> *PDriver_Abo|
00076ac0  72 74 4a 6f 62 20 28 3c  70 72 69 6e 74 5f 6a 6f  |rtJob (<print_jo|
00076ad0  62 3e 20 6a 6f 62 29 3b  0a 48 65 61 64 65 72 3a  |b> job);.Header:|
00076ae0  09 3c 44 65 73 6b 4c 69  62 3a 50 44 72 69 76 65  |.<DeskLib:PDrive|
00076af0  72 2e 68 3d 3e 50 44 72  69 76 65 72 3e 0a 0a 52  |r.h=>PDriver>..R|
00076b00  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
00076b10  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
00076b20  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
00076b30  69 73 20 66 75 6e 63 74  69 6f 6e 20 65 6e 64 73  |is function ends|
00076b40  20 61 20 70 72 69 6e 74  20 6a 6f 62 20 61 62 6e  | a print job abn|
00076b50  6f 72 6d 61 6c 6c 79 2e  20 49 74 20 73 68 6f 75  |ormally. It shou|
00076b60  6c 64 20 62 65 20 63 61  6c 6c 65 64 20 69 6d 6d  |ld be called imm|
00076b70  65 64 69 61 74 65 6c 79  20 79 6f 75 20 67 65 74  |ediately you get|
00076b80  20 61 6e 20 65 72 72 6f  72 20 77 68 69 6c 65 20  | an error while |
00076b90  70 72 69 6e 74 69 6e 67  20 28 65 76 65 6e 20 62  |printing (even b|
00076ba0  65 66 6f 72 65 20 73 68  6f 77 69 6e 67 20 61 6e  |efore showing an|
00076bb0  20 65 72 72 6f 72 20 6d  65 73 73 61 67 65 29 2e  | error message).|
00076bc0  20 4e 6f 20 66 75 72 74  68 65 72 20 70 72 69 6e  | No further prin|
00076bd0  74 65 72 20 6f 75 74 70  75 74 20 77 69 6c 6c 20  |ter output will |
00076be0  62 65 20 70 72 6f 64 75  63 65 64 2e 44 41 54 41  |be produced.DATA|
00076bf0  79 01 00 00 50 44 72 69  76 65 72 5f 43 61 6e 63  |y...PDriver_Canc|
00076c00  65 6c 4a 6f 62 0a 53 79  6e 74 61 78 3a 09 3c 6f  |elJob.Syntax:.<o|
00076c10  73 5f 65 72 72 6f 72 3e  20 2a 50 44 72 69 76 65  |s_error> *PDrive|
00076c20  72 5f 43 61 6e 63 65 6c  4a 6f 62 20 28 3c 70 72  |r_CancelJob (<pr|
00076c30  69 6e 74 5f 6a 6f 62 3e  20 6a 6f 62 29 3b 0a 48  |int_job> job);.H|
00076c40  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00076c50  50 44 72 69 76 65 72 2e  68 3d 3e 50 44 72 69 76  |PDriver.h=>PDriv|
00076c60  65 72 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |er>..Returns:.Po|
00076c70  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
00076c80  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
00076c90  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
00076ca0  6e 20 63 61 75 73 65 73  20 73 75 62 73 65 71 75  |n causes subsequ|
00076cb0  65 6e 74 20 61 74 74 65  6d 70 74 73 20 74 6f 20  |ent attempts to |
00076cc0  6f 75 74 70 75 74 20 74  6f 20 74 68 65 20 70 72  |output to the pr|
00076cd0  69 6e 74 20 6a 6f 62 20  67 69 76 65 6e 20 74 6f  |int job given to|
00076ce0  20 64 6f 20 6e 6f 74 68  69 6e 67 20 6f 74 68 65  | do nothing othe|
00076cf0  72 20 74 68 61 6e 20 67  65 6e 65 72 61 74 65 20  |r than generate |
00076d00  74 68 65 20 65 72 72 6f  72 20 27 50 72 69 6e 74  |the error 'Print|
00076d10  20 63 61 6e 63 65 6c 6c  65 64 27 2e 20 41 6e 20  | cancelled'. An |
00076d20  61 70 70 6c 69 63 61 74  69 6f 6e 20 69 73 20 65  |application is e|
00076d30  78 70 65 63 74 65 64 20  74 6f 20 72 65 73 70 6f  |xpected to respo|
00076d40  6e 64 20 74 6f 20 74 68  69 73 20 62 79 20 61 62  |nd to this by ab|
00076d50  6f 72 74 69 6e 67 20 74  68 65 20 70 72 69 6e 74  |orting the print|
00076d60  20 6a 6f 62 2e 00 00 00  44 41 54 41 79 01 00 00  | job....DATAy...|
00076d70  50 44 72 69 76 65 72 5f  43 61 6e 63 65 6c 4a 6f  |PDriver_CancelJo|
00076d80  62 57 69 74 68 45 72 72  6f 72 0a 53 79 6e 74 61  |bWithError.Synta|
00076d90  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 50  |x:.<os_error> *P|
00076da0  44 72 69 76 65 72 5f 43  61 6e 63 65 6c 4a 6f 62  |Driver_CancelJob|
00076db0  57 69 74 68 45 72 72 6f  72 20 28 3c 70 72 69 6e  |WithError (<prin|
00076dc0  74 5f 6a 6f 62 3e 20 6a  6f 62 2c 20 6f 73 5f 65  |t_job> job, os_e|
00076dd0  72 72 6f 72 20 2a 65 72  72 6f 72 29 3b 0a 48 65  |rror *error);.He|
00076de0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 50  |ader:.<DeskLib:P|
00076df0  44 72 69 76 65 72 2e 68  3d 3e 50 44 72 69 76 65  |Driver.h=>PDrive|
00076e00  72 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |r>..Returns:.Poi|
00076e10  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
00076e20  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
00076e30  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00076e40  20 63 61 6e 63 65 6c 73  20 61 20 70 72 69 6e 74  | cancels a print|
00076e50  20 6a 6f 62 20 73 6f 20  74 68 61 74 20 61 6e 79  | job so that any|
00076e60  20 61 74 74 65 6d 70 74  20 74 6f 20 6f 75 74 70  | attempt to outp|
00076e70  75 74 20 74 6f 20 69 74  20 77 69 6c 6c 20 64 6f  |ut to it will do|
00076e80  20 6e 6f 74 68 69 6e 67  20 6f 74 68 65 72 20 74  | nothing other t|
00076e90  68 61 6e 20 67 65 6e 65  72 61 74 65 20 74 68 65  |han generate the|
00076ea0  20 65 72 72 6f 72 20 67  69 76 65 6e 20 69 6e 20  | error given in |
00076eb0  2f 65 72 72 6f 72 2f 2e  0a 0a 54 68 69 73 20 66  |/error/...This f|
00076ec0  75 6e 63 74 69 6f 6e 20  69 73 20 52 49 53 43 20  |unction is RISC |
00076ed0  4f 53 20 33 20 6f 6e 6c  79 2c 20 66 6f 6c 6b 73  |OS 3 only, folks|
00076ee0  21 00 00 00 44 41 54 41  01 02 00 00 50 44 72 69  |!...DATA....PDri|
00076ef0  76 65 72 5f 43 68 65 63  6b 46 65 61 74 75 72 65  |ver_CheckFeature|
00076f00  73 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |s.Syntax:.<os_er|
00076f10  72 6f 72 3e 20 2a 50 44  72 69 76 65 72 5f 43 68  |ror> *PDriver_Ch|
00076f20  65 63 6b 46 65 61 74 75  72 65 73 20 28 3c 70 72  |eckFeatures (<pr|
00076f30  69 6e 74 5f 66 65 61 74  75 72 65 73 3e 20 6d 2c  |int_features> m,|
00076f40  20 70 72 69 6e 74 5f 66  65 61 74 75 72 65 73 20  | print_features |
00076f50  76 61 6c 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |val);.Header:.<D|
00076f60  65 73 6b 4c 69 62 3a 50  44 72 69 76 65 72 2e 68  |eskLib:PDriver.h|
00076f70  3d 3e 50 44 72 69 76 65  72 3e 0a 0a 52 65 74 75  |=>PDriver>..Retu|
00076f80  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00076f90  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00076fa0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00076fb0  66 75 6e 63 74 69 6f 6e  20 63 68 65 63 6b 73 20  |function checks |
00076fc0  74 68 65 20 66 65 61 74  75 72 65 73 20 6f 66 20  |the features of |
00076fd0  61 20 70 72 69 6e 74 65  72 2e 20 49 66 20 74 68  |a printer. If th|
00076fe0  6f 73 65 20 62 69 74 73  20 77 68 69 63 68 20 61  |ose bits which a|
00076ff0  72 65 20 73 65 74 20 69  6e 20 2f 6d 2f 20 68 61  |re set in /m/ ha|
00077000  76 65 20 74 68 65 20 73  61 6d 65 20 76 61 6c 75  |ve the same valu|
00077010  65 73 20 69 6e 20 62 6f  74 68 20 74 68 65 20 63  |es in both the c|
00077020  75 72 72 65 6e 74 20 70  72 69 6e 74 65 72 27 73  |urrent printer's|
00077030  20 66 65 61 74 75 72 65  73 20 61 6e 64 20 69 6e  | features and in|
00077040  20 2f 76 61 6c 2f 20 74  68 65 6e 20 6e 6f 20 65  | /val/ then no e|
00077050  72 72 6f 72 20 69 73 20  67 65 6e 65 72 61 74 65  |rror is generate|
00077060  64 2e 20 69 65 20 69 66  20 74 68 65 20 63 75 72  |d. ie if the cur|
00077070  72 65 6e 74 20 70 72 69  6e 74 65 72 20 64 72 69  |rent printer dri|
00077080  76 65 72 27 73 20 66 65  61 74 75 72 65 73 20 61  |ver's features a|
00077090  72 65 20 63 61 6c 6c 65  64 20 2f 66 65 61 74 2f  |re called /feat/|
000770a0  2c 20 74 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |, this function |
000770b0  63 68 65 63 6b 73 20 74  68 61 74 3a 0a 0a 7b 66  |checks that:..{f|
000770c0  43 6f 64 65 3b 61 6c 69  67 6e 20 63 65 6e 74 72  |Code;align centr|
000770d0  65 7d 66 65 61 74 20 26  20 6d 20 3d 3d 20 76 61  |e}feat & m == va|
000770e0  6c 20 26 20 6d 00 00 00  44 41 54 41 44 01 00 00  |l & m...DATAD...|
000770f0  50 44 72 69 76 65 72 5f  43 75 72 72 65 6e 74 4a  |PDriver_CurrentJ|
00077100  6f 62 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |ob.Syntax:.<os_e|
00077110  72 72 6f 72 3e 20 2a 50  44 72 69 76 65 72 5f 43  |rror> *PDriver_C|
00077120  75 72 72 65 6e 74 4a 6f  62 20 3c 70 72 69 6e 74  |urrentJob <print|
00077130  5f 6a 6f 62 3e 20 2a 63  75 72 72 65 6e 74 29 3b  |_job> *current);|
00077140  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
00077150  62 3a 50 44 72 69 76 65  72 2e 68 3d 3e 50 44 72  |b:PDriver.h=>PDr|
00077160  69 76 65 72 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |iver>..Returns:.|
00077170  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
00077180  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
00077190  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
000771a0  69 6f 6e 20 67 65 74 73  20 74 68 65 20 66 69 6c  |ion gets the fil|
000771b0  65 20 68 61 6e 64 6c 65  20 6f 66 20 74 68 65 20  |e handle of the |
000771c0  63 75 72 72 65 6e 74 20  6a 6f 62 20 61 6e 64 20  |current job and |
000771d0  73 74 6f 72 65 73 20 69  74 20 69 6e 20 74 68 65  |stores it in the|
000771e0  20 76 61 72 69 61 62 6c  65 20 70 6f 69 6e 74 65  | variable pointe|
000771f0  64 20 74 6f 20 62 79 20  2f 63 75 72 72 65 6e 74  |d to by /current|
00077200  2f 2e 20 5a 65 72 6f 20  69 73 20 73 74 6f 72 65  |/. Zero is store|
00077210  64 20 69 66 20 6e 6f 20  70 72 69 6e 74 20 6a 6f  |d if no print jo|
00077220  62 20 69 73 20 61 63 74  69 76 65 2e 44 41 54 41  |b is active.DATA|
00077230  60 03 00 00 50 44 72 69  76 65 72 5f 44 72 61 77  |`...PDriver_Draw|
00077240  50 61 67 65 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |Page.Syntax:.<os|
00077250  5f 65 72 72 6f 72 3e 20  2a 50 44 72 69 76 65 72  |_error> *PDriver|
00077260  5f 44 72 61 77 50 61 67  65 20 28 69 6e 74 20 63  |_DrawPage (int c|
00077270  6f 70 69 65 73 2c 20 3c  77 69 6d 70 5f 72 65 63  |opies, <wimp_rec|
00077280  74 3e 20 2a 72 65 63 74  2c 20 69 6e 74 20 73 65  |t> *rect, int se|
00077290  71 2c 20 63 68 61 72 20  2a 70 61 67 65 2c 20 69  |q, char *page, i|
000772a0  6e 74 20 2a 66 69 6e 69  73 68 2c 20 69 6e 74 20  |nt *finish, int |
000772b0  2a 72 65 63 74 5f 69 64  29 3b 0a 48 65 61 64 65  |*rect_id);.Heade|
000772c0  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 50 44 72 69  |r:.<DeskLib:PDri|
000772d0  76 65 72 2e 68 3d 3e 50  44 72 69 76 65 72 3e 0a  |ver.h=>PDriver>.|
000772e0  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
000772f0  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
00077300  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
00077310  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 73 68  |This function sh|
00077320  6f 75 6c 64 20 62 65 20  63 61 6c 6c 65 64 20 61  |ould be called a|
00077330  66 74 65 72 20 61 6c 6c  20 72 65 63 74 61 6e 67  |fter all rectang|
00077340  6c 65 73 20 68 61 76 65  20 62 65 65 6e 20 73 70  |les have been sp|
00077350  65 63 69 66 69 65 64 20  75 73 69 6e 67 20 3c 50  |ecified using <P|
00077360  44 72 69 76 65 72 5f 47  69 76 65 52 65 63 74 61  |Driver_GiveRecta|
00077370  6e 67 6c 65 3e 2e 20 2f  63 6f 70 69 65 73 2f 20  |ngle>. /copies/ |
00077380  63 6f 6e 74 61 69 6e 73  20 74 68 65 20 6e 75 6d  |contains the num|
00077390  62 65 72 20 6f 66 20 63  6f 70 69 65 73 20 74 6f  |ber of copies to|
000773a0  20 70 72 69 6e 74 2c 20  2f 73 65 71 2f 20 73 68  | print, /seq/ sh|
000773b0  6f 75 6c 64 20 62 65 20  7a 65 72 6f 2c 20 6f 72  |ould be zero, or|
000773c0  20 63 6f 6e 74 61 69 6e  20 74 68 65 20 70 61 67  | contain the pag|
000773d0  65 20 6e 75 6d 62 65 72  2c 20 2f 70 61 67 65 2f  |e number, /page/|
000773e0  20 73 68 6f 75 6c 64 20  62 65 20 3c 4e 55 4c 4c  | should be <NULL|
000773f0  3e 20 6f 72 20 67 69 76  65 20 74 68 65 20 70 61  |> or give the pa|
00077400  67 65 20 6e 75 6d 62 65  72 20 69 6e 20 74 65 78  |ge number in tex|
00077410  74 20 66 6f 72 6d 2e 0a  0a 4f 6e 20 72 65 74 75  |t form...On retu|
00077420  72 6e 2c 20 2f 72 65 63  74 2f 20 63 6f 6e 74 61  |rn, /rect/ conta|
00077430  69 6e 73 20 74 68 65 20  72 65 63 74 61 6e 67 6c  |ins the rectangl|
00077440  65 20 74 6f 20 62 65 20  70 72 69 6e 74 65 64 20  |e to be printed |
00077450  28 69 6e 20 4f 53 20 75  6e 69 74 73 29 20 5f 77  |(in OS units) _w|
00077460  69 74 68 69 6e 5f 20 74  68 65 20 72 65 63 74 61  |ithin_ the recta|
00077470  6e 67 6c 65 20 77 68 6f  73 65 20 69 64 20 69 73  |ngle whose id is|
00077480  20 72 65 74 75 72 6e 65  64 20 69 6e 20 7b 2f 7d  | returned in {/}|
00077490  72 65 63 74 5f 69 64 7b  2f 7d 2e 20 2f 66 69 6e  |rect_id{/}. /fin|
000774a0  69 73 68 2f 20 63 6f 6e  74 61 69 6e 73 20 74 68  |ish/ contains th|
000774b0  65 20 6e 75 6d 62 65 72  20 6f 66 20 63 6f 70 69  |e number of copi|
000774c0  65 73 20 73 74 69 6c 6c  20 74 6f 20 62 65 20 70  |es still to be p|
000774d0  72 69 6e 74 65 64 20 68  65 6e 63 65 20 69 74 20  |rinted hence it |
000774e0  69 73 20 7a 65 72 6f 20  77 68 65 6e 20 74 68 65  |is zero when the|
000774f0  20 6a 6f 62 20 69 73 20  66 69 6e 69 73 68 65 64  | job is finished|
00077500  2e 0a 0a 41 66 74 65 72  20 70 6c 6f 74 74 69 6e  |...After plottin|
00077510  67 20 74 68 65 20 70 61  67 65 20 75 73 69 6e 67  |g the page using|
00077520  20 6e 6f 72 6d 61 6c 20  70 6c 6f 74 74 69 6e 67  | normal plotting|
00077530  20 72 6f 75 74 69 6e 65  73 20 28 77 68 69 63 68  | routines (which|
00077540  20 74 68 65 20 70 72 69  6e 74 65 72 20 64 72 69  | the printer dri|
00077550  76 65 72 20 77 69 6c 6c  20 69 6e 74 65 72 63 65  |ver will interce|
00077560  70 74 29 2c 20 79 6f 75  20 73 68 6f 75 6c 64 20  |pt), you should |
00077570  63 61 6c 6c 20 3c 50 44  72 69 76 65 72 5f 47 65  |call <PDriver_Ge|
00077580  74 52 65 63 74 61 6e 67  6c 65 3e 2e 44 41 54 41  |tRectangle>.DATA|
00077590  25 01 00 00 50 44 72 69  76 65 72 5f 45 6e 64 4a  |%...PDriver_EndJ|
000775a0  6f 62 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |ob.Syntax:.<os_e|
000775b0  72 72 6f 72 3e 20 2a 50  44 72 69 76 65 72 5f 45  |rror> *PDriver_E|
000775c0  6e 64 4a 6f 62 20 28 3c  70 72 69 6e 74 5f 6a 6f  |ndJob (<print_jo|
000775d0  62 3e 20 6a 6f 62 29 3b  0a 48 65 61 64 65 72 3a  |b> job);.Header:|
000775e0  09 3c 44 65 73 6b 4c 69  62 3a 50 44 72 69 76 65  |.<DeskLib:PDrive|
000775f0  72 2e 68 3d 3e 50 44 72  69 76 65 72 3e 0a 0a 52  |r.h=>PDriver>..R|
00077600  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
00077610  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
00077620  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
00077630  69 73 20 66 75 6e 63 74  69 6f 6e 20 65 6e 64 73  |is function ends|
00077640  20 61 20 70 72 69 6e 74  20 6a 6f 62 20 6e 6f 72  | a print job nor|
00077650  6d 61 6c 6c 79 2e 20 54  68 69 73 20 6d 61 79 20  |mally. This may |
00077660  72 65 73 75 6c 74 20 69  6e 20 66 75 72 74 68 65  |result in furthe|
00077670  72 20 70 72 69 6e 74 65  72 20 6f 75 74 70 75 74  |r printer output|
00077680  20 28 61 20 50 6f 73 74  53 63 72 69 70 74 20 70  | (a PostScript p|
00077690  72 69 6e 74 65 72 20 64  72 69 76 65 72 20 6f 75  |rinter driver ou|
000776a0  74 70 75 74 73 20 61 20  74 72 61 69 6c 65 72 29  |tputs a trailer)|
000776b0  2e 00 00 00 44 41 54 41  a1 01 00 00 50 44 72 69  |....DATA....PDri|
000776c0  76 65 72 5f 45 6e 75 6d  65 72 61 74 65 4a 6f 62  |ver_EnumerateJob|
000776d0  73 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |s.Syntax:.<os_er|
000776e0  72 6f 72 3e 20 2a 50 44  72 69 76 65 72 5f 45 6e  |ror> *PDriver_En|
000776f0  75 6d 65 72 61 74 65 4a  6f 62 73 20 28 3c 70 72  |umerateJobs (<pr|
00077700  69 6e 74 5f 6a 6f 62 3e  20 2a 6a 6f 62 29 3b 0a  |int_job> *job);.|
00077710  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
00077720  3a 50 44 72 69 76 65 72  2e 68 3d 3e 50 44 72 69  |:PDriver.h=>PDri|
00077730  76 65 72 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |ver>..Returns:.P|
00077740  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
00077750  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
00077760  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
00077770  6f 6e 20 65 6e 75 6d 65  72 61 74 65 73 20 61 6c  |on enumerates al|
00077780  6c 20 74 68 65 20 65 78  69 73 74 69 6e 67 20 70  |l the existing p|
00077790  72 69 6e 74 20 6a 6f 62  73 2e 20 59 6f 75 20 67  |rint jobs. You g|
000777a0  65 74 20 74 68 65 20 63  6f 6d 70 6c 65 74 65 20  |et the complete |
000777b0  6c 69 73 74 20 79 6f 75  20 73 68 6f 75 6c 64 20  |list you should |
000777c0  63 61 6c 6c 20 74 68 65  20 66 75 6e 63 74 69 6f  |call the functio|
000777d0  6e 20 77 69 74 68 20 7b  2f 7d 2a 6a 6f 62 7b 2f  |n with {/}*job{/|
000777e0  7d 3d 30 2c 20 7b 2f 7d  2a 6a 6f 62 7b 2f 7d 20  |}=0, {/}*job{/} |
000777f0  77 69 6c 6c 20 62 65 20  75 70 64 61 74 65 64 20  |will be updated |
00077800  74 6f 20 63 6f 6e 74 61  69 6e 20 74 68 65 20 6e  |to contain the n|
00077810  65 78 74 20 68 61 6e 64  6c 65 2c 20 79 6f 75 20  |ext handle, you |
00077820  73 68 6f 75 6c 64 20 74  68 65 6e 20 63 61 6c 6c  |should then call|
00077830  20 74 68 65 20 66 75 6e  63 74 69 6f 6e 20 61 67  | the function ag|
00077840  61 69 6e 20 77 69 74 68  20 74 68 61 74 20 68 61  |ain with that ha|
00077850  6e 64 6c 65 2e 00 00 00  44 41 54 41 25 02 00 00  |ndle....DATA%...|
00077860  50 44 72 69 76 65 72 5f  47 65 74 52 65 63 74 61  |PDriver_GetRecta|
00077870  6e 67 6c 65 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |ngle.Syntax:.<os|
00077880  5f 65 72 72 6f 72 3e 20  2a 50 44 72 69 76 65 72  |_error> *PDriver|
00077890  5f 47 65 74 52 65 63 74  61 6e 67 6c 65 20 28 3c  |_GetRectangle (<|
000778a0  77 69 6d 70 5f 72 65 63  74 3e 20 2a 72 65 63 74  |wimp_rect> *rect|
000778b0  2c 20 69 6e 74 20 2a 66  69 6e 69 73 68 2c 20 69  |, int *finish, i|
000778c0  6e 74 20 2a 72 65 63 74  5f 69 64 29 3b 0a 48 65  |nt *rect_id);.He|
000778d0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 50  |ader:.<DeskLib:P|
000778e0  44 72 69 76 65 72 2e 68  3d 3e 50 44 72 69 76 65  |Driver.h=>PDrive|
000778f0  72 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |r>..Returns:.Poi|
00077900  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
00077910  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
00077920  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00077930  20 73 68 6f 75 6c 64 20  62 65 20 63 61 6c 6c 65  | should be calle|
00077940  64 20 61 66 74 65 72 20  3c 50 44 72 69 76 65 72  |d after <PDriver|
00077950  5f 44 72 61 77 50 61 67  65 3e 2c 20 61 6e 64 20  |_DrawPage>, and |
00077960  74 68 65 6e 20 63 61 6c  6c 65 64 20 72 65 70 65  |then called repe|
00077970  61 74 65 64 6c 79 20 75  6e 74 69 6c 20 2f 66 69  |atedly until /fi|
00077980  6e 69 73 68 2f 20 72 65  74 75 72 6e 73 20 7a 65  |nish/ returns ze|
00077990  72 6f 2e 0a 0a 4f 6e 20  72 65 74 75 72 6e 2c 20  |ro...On return, |
000779a0  2f 72 65 63 74 2f 20 63  6f 6e 74 61 69 6e 73 20  |/rect/ contains |
000779b0  74 68 65 20 72 65 63 74  61 6e 67 6c 65 20 74 6f  |the rectangle to|
000779c0  20 62 65 20 70 72 69 6e  74 65 64 20 28 69 6e 20  | be printed (in |
000779d0  4f 53 20 75 6e 69 74 73  29 20 5f 77 69 74 68 69  |OS units) _withi|
000779e0  6e 5f 20 74 68 65 20 72  65 63 74 61 6e 67 6c 65  |n_ the rectangle|
000779f0  20 77 68 6f 73 65 20 69  64 20 69 73 20 72 65 74  | whose id is ret|
00077a00  75 72 6e 65 64 20 69 6e  20 7b 2f 7d 72 65 63 74  |urned in {/}rect|
00077a10  5f 69 64 7b 2f 7d 2e 20  2f 66 69 6e 69 73 68 2f  |_id{/}. /finish/|
00077a20  20 63 6f 6e 74 61 69 6e  73 20 74 68 65 20 6e 75  | contains the nu|
00077a30  6d 62 65 72 20 6f 66 20  63 6f 70 69 65 73 20 73  |mber of copies s|
00077a40  74 69 6c 6c 20 74 6f 20  62 65 20 70 72 69 6e 74  |till to be print|
00077a50  65 64 20 68 65 6e 63 65  20 69 74 20 69 73 20 7a  |ed hence it is z|
00077a60  65 72 6f 20 77 68 65 6e  20 74 68 65 20 6a 6f 62  |ero when the job|
00077a70  20 69 73 20 66 69 6e 69  73 68 65 64 2e 00 00 00  | is finished....|
00077a80  44 41 54 41 ef 02 00 00  50 44 72 69 76 65 72 5f  |DATA....PDriver_|
00077a90  47 69 76 65 52 65 63 74  61 6e 67 6c 65 0a 53 79  |GiveRectangle.Sy|
00077aa0  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00077ab0  20 2a 50 44 72 69 76 65  72 5f 47 69 76 65 52 65  | *PDriver_GiveRe|
00077ac0  63 74 61 6e 67 6c 65 20  28 69 6e 74 20 72 65 63  |ctangle (int rec|
00077ad0  74 5f 69 64 2c 20 3c 77  69 6d 70 5f 72 65 63 74  |t_id, <wimp_rect|
00077ae0  3e 20 2a 72 65 63 74 2c  20 3c 70 72 69 6e 74 5f  |> *rect, <print_|
00077af0  74 72 61 6e 73 66 6f 72  6d 61 74 69 6f 6e 3e 20  |transformation> |
00077b00  2a 6d 61 74 72 69 78 2c  20 3c 77 69 6d 70 5f 70  |*matrix, <wimp_p|
00077b10  6f 69 6e 74 3e 20 2a 70  6f 73 2c 20 69 6e 74 20  |oint> *pos, int |
00077b20  62 61 63 6b 63 6f 6c 29  3b 0a 48 65 61 64 65 72  |backcol);.Header|
00077b30  3a 09 3c 44 65 73 6b 4c  69 62 3a 50 44 72 69 76  |:.<DeskLib:PDriv|
00077b40  65 72 2e 68 3d 3e 50 44  72 69 76 65 72 3e 0a 0a  |er.h=>PDriver>..|
00077b50  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00077b60  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00077b70  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00077b80  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 61 6c 6c  |his function all|
00077b90  6f 77 73 20 61 6e 20 61  70 70 6c 69 63 61 74 69  |ows an applicati|
00077ba0  6f 6e 20 74 6f 20 74 65  6c 6c 20 74 68 65 20 70  |on to tell the p|
00077bb0  72 69 6e 74 65 72 20 64  72 69 76 65 72 20 77 68  |rinter driver wh|
00077bc0  61 74 20 69 74 20 77 61  6e 74 73 20 74 6f 20 70  |at it wants to p|
00077bd0  72 69 6e 74 2e 0a 0a 7b  2f 7d 72 65 63 74 5f 69  |rint...{/}rect_i|
00077be0  64 7b 2f 7d 09 69 73 20  61 20 75 73 65 72 2d 64  |d{/}.is a user-d|
00077bf0  65 66 69 6e 65 64 20 76  61 6c 75 65 20 74 6f 20  |efined value to |
00077c00  69 64 65 6e 74 69 66 79  20 65 61 63 68 20 72 65  |identify each re|
00077c10  63 74 61 6e 67 6c 65 20  79 6f 75 20 73 65 6e 64  |ctangle you send|
00077c20  2e 0a 2f 72 65 63 74 2f  09 09 64 65 66 69 6e 65  |../rect/..define|
00077c30  73 20 74 68 65 20 72 65  63 74 61 6e 67 6c 65 20  |s the rectangle |
00077c40  74 6f 20 62 65 20 70 72  69 6e 74 65 64 20 69 6e  |to be printed in|
00077c50  20 4f 53 20 75 6e 69 74  73 2e 0a 2f 6d 61 74 72  | OS units../matr|
00077c60  69 78 2f 09 69 73 20 74  68 65 20 74 72 61 6e 73  |ix/.is the trans|
00077c70  66 6f 72 6d 61 74 69 6f  6e 20 6d 61 74 72 69 78  |formation matrix|
00077c80  2e 0a 2f 70 6f 73 2f 09  09 69 73 20 74 68 65 20  |../pos/..is the |
00077c90  70 6f 73 69 74 69 6f 6e  20 6f 6e 20 74 68 65 20  |position on the |
00077ca0  70 61 67 65 20 69 6e 20  6d 69 6c 6c 69 70 6f 69  |page in millipoi|
00077cb0  6e 74 73 20 28 6f 66 20  74 68 65 20 62 6f 74 74  |nts (of the bott|
00077cc0  6f 6d 20 6c 65 66 74 29  2e 0a 2f 62 61 63 6b 63  |om left)../backc|
00077cd0  6f 6c 2f 09 73 70 65 63  69 66 69 65 73 20 74 68  |ol/.specifies th|
00077ce0  65 20 62 61 63 6b 67 72  6f 75 6e 64 20 63 6f 6c  |e background col|
00077cf0  6f 75 72 2c 20 69 6e 20  74 68 65 20 66 6f 72 6d  |our, in the form|
00077d00  20 30 78 42 42 47 47 52  52 30 30 2e 0a 0a 41 6e  | 0xBBGGRR00...An|
00077d10  20 61 70 70 6c 69 63 61  74 69 6f 6e 20 73 68 6f  | application sho|
00077d20  75 6c 64 20 6d 61 6b 65  20 6f 6e 65 20 6f 72 20  |uld make one or |
00077d30  6d 6f 72 65 20 63 61 6c  6c 73 20 74 6f 20 74 68  |more calls to th|
00077d40  69 73 20 66 75 6e 63 74  69 6f 6e 2c 20 62 65 66  |is function, bef|
00077d50  6f 72 65 20 63 61 6c 6c  69 6e 67 20 3c 50 44 72  |ore calling <PDr|
00077d60  69 76 65 72 5f 44 72 61  77 50 61 67 65 3e 2e 00  |iver_DrawPage>..|
00077d70  44 41 54 41 72 01 00 00  50 44 72 69 76 65 72 5f  |DATAr...PDriver_|
00077d80  49 6e 66 6f 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |Info.Syntax:.<os|
00077d90  5f 65 72 72 6f 72 3e 20  2a 50 44 72 69 76 65 72  |_error> *PDriver|
00077da0  5f 49 6e 66 6f 20 28 3c  70 72 69 6e 74 65 72 5f  |_Info (<printer_|
00077db0  69 6e 66 6f 3e 20 2a 62  6c 6f 63 6b 29 3b 0a 48  |info> *block);.H|
00077dc0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00077dd0  50 44 72 69 76 65 72 2e  68 3d 3e 50 44 72 69 76  |PDriver.h=>PDriv|
00077de0  65 72 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |er>..Returns:.Po|
00077df0  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
00077e00  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
00077e10  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
00077e20  6e 20 67 65 74 73 20 69  6e 66 6f 72 6d 61 74 69  |n gets informati|
00077e30  6f 6e 20 6f 6e 20 74 68  65 20 70 72 69 6e 74 65  |on on the printe|
00077e40  72 20 64 72 69 76 65 72  2e 20 49 74 20 61 6c 6c  |r driver. It all|
00077e50  6f 77 73 20 74 68 65 20  61 70 70 6c 69 63 61 74  |ows the applicat|
00077e60  69 6f 6e 20 74 6f 20 63  68 61 6e 67 65 20 74 68  |ion to change th|
00077e70  65 20 77 61 79 20 69 74  20 6f 75 74 70 75 74 73  |e way it outputs|
00077e80  20 69 74 73 20 64 61 74  61 20 74 6f 20 73 75 69  | its data to sui|
00077e90  74 20 74 68 65 20 70 72  69 6e 74 65 72 2e 20 54  |t the printer. T|
00077ea0  68 65 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 69  |he information i|
00077eb0  73 20 72 65 74 75 72 6e  65 64 20 69 6e 20 74 68  |s returned in th|
00077ec0  65 20 73 74 72 75 63 74  75 72 65 20 70 6f 69 6e  |e structure poin|
00077ed0  74 65 64 20 74 6f 20 62  79 20 2f 62 6c 6f 63 6b  |ted to by /block|
00077ee0  2f 2e 00 00 44 41 54 41  54 02 00 00 50 44 72 69  |/...DATAT...PDri|
00077ef0  76 65 72 5f 49 6e 73 65  72 74 49 6c 6c 75 73 74  |ver_InsertIllust|
00077f00  72 61 74 69 6f 6e 0a 53  79 6e 74 61 78 3a 09 3c  |ration.Syntax:.<|
00077f10  6f 73 5f 65 72 72 6f 72  3e 20 2a 50 44 72 69 76  |os_error> *PDriv|
00077f20  65 72 5f 49 6e 73 65 72  74 49 6c 6c 75 73 74 72  |er_InsertIllustr|
00077f30  61 74 69 6f 6e 20 28 69  6e 74 20 68 61 6e 64 6c  |ation (int handl|
00077f40  65 2c 20 76 6f 69 64 20  2a 64 72 61 77 70 61 74  |e, void *drawpat|
00077f50  68 2c 20 3c 77 69 6d 70  5f 70 6f 69 6e 74 3e 20  |h, <wimp_point> |
00077f60  2a 62 6f 74 5f 6c 65 66  74 2c 20 77 69 6d 70 5f  |*bot_left, wimp_|
00077f70  70 6f 69 6e 74 20 2a 62  6f 74 5f 72 69 67 68 74  |point *bot_right|
00077f80  2c 20 77 69 6d 70 5f 70  6f 69 6e 74 20 2a 74 6f  |, wimp_point *to|
00077f90  70 5f 6c 65 66 74 29 3b  0a 48 65 61 64 65 72 3a  |p_left);.Header:|
00077fa0  09 3c 44 65 73 6b 4c 69  62 3a 50 44 72 69 76 65  |.<DeskLib:PDrive|
00077fb0  72 2e 68 3d 3e 50 44 72  69 76 65 72 3e 0a 0a 52  |r.h=>PDriver>..R|
00077fc0  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
00077fd0  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
00077fe0  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 49 66  |LL> if none...If|
00077ff0  20 74 68 65 20 66 75 6e  63 74 69 6f 6e 20 69 73  | the function is|
00078000  20 73 75 70 70 6f 72 74  65 64 20 28 63 68 65 63  | supported (chec|
00078010  6b 20 74 68 65 20 3c 50  44 72 69 76 65 72 5f 49  |k the <PDriver_I|
00078020  6e 66 6f 3e 29 2c 20 69  74 20 69 6e 73 65 72 74  |nfo>), it insert|
00078030  73 20 61 6e 20 65 78 74  65 72 6e 61 6c 20 66 69  |s an external fi|
00078040  6c 65 20 69 6e 74 6f 20  74 68 65 20 63 75 72 72  |le into the curr|
00078050  65 6e 74 20 6a 6f 62 27  73 20 6f 75 74 70 75 74  |ent job's output|
00078060  2e 0a 0a 2f 68 61 6e 64  6c 65 2f 09 69 73 20 74  |.../handle/.is t|
00078070  68 65 20 66 69 6c 65 20  68 61 6e 64 6c 65 20 6f  |he file handle o|
00078080  66 20 74 68 65 20 69 6c  6c 75 73 74 72 61 74 69  |f the illustrati|
00078090  6f 6e 2e 0a 2f 64 72 61  77 70 61 74 68 2f 09 69  |on../drawpath/.i|
000780a0  73 20 61 20 70 6f 69 6e  74 65 72 20 74 6f 20 61  |s a pointer to a|
000780b0  20 63 6c 69 70 70 69 6e  67 20 70 61 74 68 2c 20  | clipping path, |
000780c0  6f 72 20 30 2e 0a 7b 2f  7d 62 6f 74 5f 6c 65 66  |or 0..{/}bot_lef|
000780d0  74 7b 2f 7d 2c 0a 7b 2f  7d 62 6f 74 5f 72 69 67  |t{/},.{/}bot_rig|
000780e0  68 74 7b 2f 7d 2c 0a 7b  2f 7d 74 6f 70 5f 6c 65  |ht{/},.{/}top_le|
000780f0  66 74 7b 2f 7d 09 64 65  66 69 6e 65 20 74 68 65  |ft{/}.define the|
00078100  20 70 6f 73 69 74 69 6f  6e 20 6f 66 20 74 68 65  | position of the|
00078110  20 69 6c 6c 75 73 74 72  61 74 69 6f 6e 20 69 6e  | illustration in|
00078120  20 31 2f 32 35 36 74 68  73 20 6f 66 20 61 6e 20  | 1/256ths of an |
00078130  4f 53 20 75 6e 69 74 2e  44 41 54 41 91 01 00 00  |OS unit.DATA....|
00078140  50 44 72 69 76 65 72 5f  50 61 67 65 53 69 7a 65  |PDriver_PageSize|
00078150  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00078160  6f 72 3e 20 2a 50 44 72  69 76 65 72 5f 50 61 67  |or> *PDriver_Pag|
00078170  65 53 69 7a 65 20 28 3c  77 69 6d 70 5f 70 6f 69  |eSize (<wimp_poi|
00078180  6e 74 3e 20 2a 73 69 7a  65 2c 20 3c 77 69 6d 70  |nt> *size, <wimp|
00078190  5f 72 65 63 74 3e 20 2a  70 72 69 6e 74 29 3b 0a  |_rect> *print);.|
000781a0  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
000781b0  3a 50 44 72 69 76 65 72  2e 68 3d 3e 50 44 72 69  |:PDriver.h=>PDri|
000781c0  76 65 72 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |ver>..Returns:.P|
000781d0  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
000781e0  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
000781f0  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
00078200  6f 6e 20 66 69 6e 64 73  20 68 6f 77 20 6c 61 72  |on finds how lar|
00078210  67 65 20 74 68 65 20 70  61 70 65 72 20 61 6e 64  |ge the paper and|
00078220  20 70 72 69 6e 74 20 61  72 65 61 20 69 73 2e 20  | print area is. |
00078230  4f 6e 20 65 78 69 74 2c  20 2f 73 69 7a 65 2f 20  |On exit, /size/ |
00078240  63 6f 6e 74 61 69 6e 73  20 74 68 65 20 70 61 70  |contains the pap|
00078250  65 72 20 73 69 7a 65 20  69 6e 20 6d 69 6c 6c 69  |er size in milli|
00078260  70 6f 69 6e 74 73 2c 20  61 6e 64 20 2f 70 72 69  |points, and /pri|
00078270  6e 74 2f 20 63 6f 6e 74  61 69 6e 73 20 74 68 65  |nt/ contains the|
00078280  20 70 72 69 6e 74 61 62  6c 65 20 72 65 63 74 61  | printable recta|
00078290  6e 67 6c 65 20 28 6f 72  69 67 69 6e 20 61 74 20  |ngle (origin at |
000782a0  62 6f 74 74 6f 6d 20 6c  65 66 74 2c 20 63 6f 6f  |bottom left, coo|
000782b0  72 64 69 6e 61 74 65 73  20 69 6e 20 6d 69 6c 6c  |rdinates in mill|
000782c0  69 70 6f 69 6e 74 73 29  2e 00 00 00 44 41 54 41  |ipoints)....DATA|
000782d0  6f 01 00 00 50 44 72 69  76 65 72 5f 50 72 69 6e  |o...PDriver_Prin|
000782e0  74 65 72 4e 61 6d 65 0a  53 79 6e 74 61 78 3a 09  |terName.Syntax:.|
000782f0  63 68 61 72 20 2a 50 44  72 69 76 65 72 5f 50 72  |char *PDriver_Pr|
00078300  69 6e 74 65 72 4e 61 6d  65 20 28 76 6f 69 64 29  |interName (void)|
00078310  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
00078320  69 62 3a 50 44 72 69 76  65 72 2e 68 3d 3e 50 44  |ib:PDriver.h=>PD|
00078330  72 69 76 65 72 3e 0a 0a  52 65 74 75 72 6e 73 3a  |river>..Returns:|
00078340  09 50 6f 69 6e 74 65 72  20 74 6f 20 6e 61 6d 65  |.Pointer to name|
00078350  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00078360  20 72 65 74 75 72 6e 73  20 74 68 65 20 6e 61 6d  | returns the nam|
00078370  65 20 6f 66 20 74 68 65  20 63 75 72 72 65 6e 74  |e of the current|
00078380  20 70 72 69 6e 74 65 72  2e 20 49 66 20 69 74 20  | printer. If it |
00078390  69 73 20 74 6f 20 62 65  20 75 73 65 64 2c 20 61  |is to be used, a|
000783a0  20 63 6f 70 79 20 6f 66  20 69 74 20 73 68 6f 75  | copy of it shou|
000783b0  6c 64 20 62 65 20 74 61  6b 65 6e 20 73 69 6e 63  |ld be taken sinc|
000783c0  65 20 69 74 20 63 61 6e  20 63 68 61 6e 67 65 20  |e it can change |
000783d0  69 6e 20 61 20 6d 75 6c  74 69 70 6c 65 20 70 72  |in a multiple pr|
000783e0  69 6e 74 65 72 20 64 72  69 76 65 72 20 73 79 73  |inter driver sys|
000783f0  74 65 6d 20 28 7b 2a 7d  21 50 72 69 6e 74 65 72  |tem ({*}!Printer|
00078400  73 7b 2a 7d 29 2e 20 5f  49 74 20 6d 75 73 74 20  |s{*}). _It must |
00078410  6e 6f 74 20 75 6e 64 65  72 20 61 6e 79 20 63 69  |not under any ci|
00078420  72 63 75 6d 73 74 61 6e  63 65 73 20 62 65 20 77  |rcumstances be w|
00078430  72 69 74 74 65 6e 20 74  6f 5f 2e 00 44 41 54 41  |ritten to_..DATA|
00078440  84 01 00 00 50 44 72 69  76 65 72 5f 53 63 72 65  |....PDriver_Scre|
00078450  65 6e 44 75 6d 70 0a 53  79 6e 74 61 78 3a 09 3c  |enDump.Syntax:.<|
00078460  6f 73 5f 65 72 72 6f 72  3e 20 2a 50 44 72 69 76  |os_error> *PDriv|
00078470  65 72 5f 53 63 72 65 65  6e 44 75 6d 70 20 28 3c  |er_ScreenDump (<|
00078480  70 72 69 6e 74 5f 6a 6f  62 3e 20 6a 6f 62 29 3b  |print_job> job);|
00078490  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
000784a0  62 3a 50 44 72 69 76 65  72 2e 68 3d 3e 50 44 72  |b:PDriver.h=>PDr|
000784b0  69 76 65 72 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |iver>..Returns:.|
000784c0  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000784d0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000784e0  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
000784f0  69 6f 6e 20 6d 61 6b 65  73 20 74 68 65 20 70 72  |ion makes the pr|
00078500  69 6e 74 65 72 20 64 72  69 76 65 72 20 6f 75 74  |inter driver out|
00078510  70 75 74 20 61 20 73 63  72 65 65 6e 20 64 75 6d  |put a screen dum|
00078520  70 20 74 6f 20 74 68 65  20 6a 6f 62 20 67 69 76  |p to the job giv|
00078530  65 6e 2e 20 4e 6f 74 65  20 74 68 61 74 20 6e 6f  |en. Note that no|
00078540  6e 65 20 6f 66 20 74 68  65 20 73 74 61 6e 64 61  |ne of the standa|
00078550  72 64 20 41 63 6f 72 6e  20 64 72 69 76 65 72 20  |rd Acorn driver |
00078560  73 75 70 70 6f 72 74 20  74 68 69 73 20 66 65 61  |support this fea|
00078570  74 75 72 65 20 28 63 68  65 63 6b 20 74 68 65 20  |ture (check the |
00078580  66 65 61 74 75 72 65 73  20 66 69 72 73 74 20 75  |features first u|
00078590  73 69 6e 67 20 3c 50 44  72 69 76 65 72 5f 43 68  |sing <PDriver_Ch|
000785a0  65 63 6b 46 65 61 74 75  72 65 73 3e 20 6f 72 20  |eckFeatures> or |
000785b0  3c 50 44 72 69 76 65 72  5f 49 6e 66 6f 3e 29 2e  |<PDriver_Info>).|
000785c0  44 41 54 41 9f 01 00 00  50 44 72 69 76 65 72 5f  |DATA....PDriver_|
000785d0  53 65 6c 65 63 74 49 6c  6c 75 73 74 72 61 74 69  |SelectIllustrati|
000785e0  6f 6e 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |on.Syntax:.<os_e|
000785f0  72 72 6f 72 3e 20 2a 50  44 72 69 76 65 72 5f 53  |rror> *PDriver_S|
00078600  65 6c 65 63 74 49 6c 6c  75 73 74 72 61 74 69 6f  |electIllustratio|
00078610  6e 20 28 3c 70 72 69 6e  74 5f 6a 6f 62 3e 20 6e  |n (<print_job> n|
00078620  65 77 2c 20 63 68 61 72  20 2a 74 69 74 6c 65 2c  |ew, char *title,|
00078630  20 70 72 69 6e 74 5f 6a  6f 62 20 2a 6f 6c 64 29  | print_job *old)|
00078640  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
00078650  69 62 3a 50 44 72 69 76  65 72 2e 68 3d 3e 50 44  |ib:PDriver.h=>PD|
00078660  72 69 76 65 72 3e 0a 0a  52 65 74 75 72 6e 73 3a  |river>..Returns:|
00078670  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
00078680  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
00078690  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
000786a0  74 69 6f 6e 20 64 6f 65  73 20 74 68 65 20 73 61  |tion does the sa|
000786b0  6d 65 20 61 73 20 3c 50  44 72 69 76 65 72 5f 53  |me as <PDriver_S|
000786c0  65 6c 65 63 74 4a 6f 62  3e 2c 20 65 78 63 65 70  |electJob>, excep|
000786d0  74 20 74 68 61 74 20 69  66 20 61 20 6e 65 77 20  |t that if a new |
000786e0  70 72 69 6e 74 20 6a 6f  62 20 69 73 20 73 74 61  |print job is sta|
000786f0  72 74 65 64 3a 0a 7b 74  61 62 7d 0a 8f 09 49 74  |rted:.{tab}...It|
00078700  20 6d 75 73 74 20 62 65  20 6f 6e 6c 79 20 6f 6e  | must be only on|
00078710  65 20 70 61 67 65 20 6c  6f 6e 67 2e 0a 8f 09 4f  |e page long....O|
00078720  75 74 70 75 74 20 6d 61  79 20 64 69 66 66 65 72  |utput may differ|
00078730  20 65 67 20 45 50 53 20  69 6e 73 74 65 61 64 20  | eg EPS instead |
00078740  6f 66 20 50 6f 73 74 53  63 72 69 70 74 2e 0a 0a  |of PostScript...|
00078750  52 49 53 43 20 4f 53 20  33 20 6f 6e 6c 79 2e 00  |RISC OS 3 only..|
00078760  44 41 54 41 6c 02 00 00  50 44 72 69 76 65 72 5f  |DATAl...PDriver_|
00078770  53 65 6c 65 63 74 4a 6f  62 0a 53 79 6e 74 61 78  |SelectJob.Syntax|
00078780  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 50 44  |:.<os_error> *PD|
00078790  72 69 76 65 72 5f 53 65  6c 65 63 74 4a 6f 62 20  |river_SelectJob |
000787a0  28 3c 70 72 69 6e 74 5f  6a 6f 62 3e 20 6e 65 77  |(<print_job> new|
000787b0  2c 20 63 68 61 72 20 2a  74 69 74 6c 65 2c 20 70  |, char *title, p|
000787c0  72 69 6e 74 5f 6a 6f 62  20 2a 6f 6c 64 29 3b 0a  |rint_job *old);.|
000787d0  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
000787e0  3a 50 44 72 69 76 65 72  2e 68 3d 3e 50 44 72 69  |:PDriver.h=>PDri|
000787f0  76 65 72 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |ver>..Returns:.P|
00078800  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
00078810  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
00078820  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
00078830  6f 6e 20 6d 61 6b 65 73  20 61 20 67 69 76 65 6e  |on makes a given|
00078840  20 70 72 69 6e 74 20 6a  6f 62 20 74 68 65 20 63  | print job the c|
00078850  75 72 72 65 6e 74 20 6f  6e 65 2e 20 54 68 65 20  |urrent one. The |
00078860  6a 6f 62 20 69 73 20 69  64 65 6e 74 69 66 69 65  |job is identifie|
00078870  64 20 62 79 20 2f 6e 65  77 2f 20 77 68 69 63 68  |d by /new/ which|
00078880  20 6d 75 73 74 20 62 65  20 61 20 66 69 6c 65 20  | must be a file |
00078890  28 65 67 20 7b 2f 7d 70  72 69 6e 74 65 72 3a 7b  |(eg {/}printer:{|
000788a0  2f 7d 29 20 70 72 65 76  69 6f 75 73 6c 79 20 6f  |/}) previously o|
000788b0  70 65 6e 65 64 20 66 6f  72 20 6f 75 74 70 75 74  |pened for output|
000788c0  20 28 65 67 20 62 79 20  3c 46 69 6c 65 5f 4f 70  | (eg by <File_Op|
000788d0  65 6e 3e 29 2e 20 2f 74  69 74 6c 65 2f 20 67 69  |en>). /title/ gi|
000788e0  76 65 73 20 61 20 68 75  6d 61 6e 2d 72 65 61 64  |ves a human-read|
000788f0  61 62 6c 65 20 6e 61 6d  65 20 66 6f 72 20 74 68  |able name for th|
00078900  65 20 6a 6f 62 2e 0a 0a  54 68 65 20 63 75 72 72  |e job...The curr|
00078910  65 6e 74 20 70 72 69 6e  74 20 6a 6f 62 20 69 73  |ent print job is|
00078920  20 73 75 73 70 65 6e 64  65 64 20 61 6e 64 20 74  | suspended and t|
00078930  68 65 20 6e 65 77 20 6a  6f 62 20 28 72 65 29 73  |he new job (re)s|
00078940  74 61 72 74 65 64 2e 20  54 68 65 20 6f 6c 64 20  |tarted. The old |
00078950  6a 6f 62 20 68 61 6e 64  6c 65 20 28 69 66 20 61  |job handle (if a|
00078960  6e 79 29 20 69 73 20 72  65 74 75 72 6e 65 64 20  |ny) is returned |
00078970  69 6e 20 74 68 65 20 76  61 72 69 61 62 6c 65 20  |in the variable |
00078980  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 2f 6f  |pointed to by /o|
00078990  6c 64 2f 2e 0a 0a 4e 42  20 49 66 20 2f 6e 65 77  |ld/...NB If /new|
000789a0  2f 20 69 73 20 7a 65 72  6f 20 74 68 65 6e 20 74  |/ is zero then t|
000789b0  68 65 20 63 75 72 72 65  6e 74 20 6a 6f 62 20 69  |he current job i|
000789c0  73 20 73 75 73 70 65 6e  64 65 64 2e 44 41 54 41  |s suspended.DATA|
000789d0  19 01 00 00 70 65 72 72  6f 72 0a 53 79 6e 74 61  |....perror.Synta|
000789e0  78 3a 09 76 6f 69 64 20  70 65 72 72 6f 72 20 28  |x:.void perror (|
000789f0  63 68 61 72 20 2a 73 74  72 29 3b 0a 48 65 61 64  |char *str);.Head|
00078a00  65 72 3a 09 3c 73 74 64  69 6f 2e 68 3d 3e 73 74  |er:.<stdio.h=>st|
00078a10  64 69 6f 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |dio>..This funct|
00078a20  69 6f 6e 20 77 72 69 74  65 73 20 61 20 64 65 73  |ion writes a des|
00078a30  63 72 69 70 74 69 6f 6e  20 6f 66 20 74 68 65 20  |cription of the |
00078a40  65 72 72 6f 72 20 69 6e  20 3c 65 72 72 6e 6f 3e  |error in <errno>|
00078a50  20 74 6f 20 74 68 65 20  73 74 72 65 61 6d 20 3c  | to the stream <|
00078a60  73 74 64 65 72 72 3e 2e  20 49 66 20 2f 73 74 72  |stderr>. If /str|
00078a70  2f 20 69 73 20 6e 6f 74  20 61 20 6e 75 6c 6c 20  |/ is not a null |
00078a80  70 6f 69 6e 74 65 72 20  74 68 65 6e 20 69 74 20  |pointer then it |
00078a90  70 72 65 66 69 78 65 73  20 74 68 65 20 65 72 72  |prefixes the err|
00078aa0  6f 72 20 64 65 73 63 72  69 70 74 69 6f 6e 20 77  |or description w|
00078ab0  69 74 68 20 74 68 65 20  73 74 72 69 6e 67 20 70  |ith the string p|
00078ac0  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 2f 73 74  |ointed to by /st|
00078ad0  72 2f 20 61 6e 64 20 61  20 63 6f 6c 6f 6e 20 28  |r/ and a colon (|
00078ae0  27 3a 27 29 2e 00 00 00  44 49 52 24 2c 00 00 00  |':')....DIR$,...|
00078af0  2c 00 00 00 14 8b 07 00  46 fd ff ff 2b 06 c3 22  |,.......F...+.."|
00078b00  43 02 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |C...........!Roo|
00078b10  74 00 00 00 44 41 54 41  43 02 00 00 70 72 69 6e  |t...DATAC...prin|
00078b20  74 66 28 29 20 46 6f 72  6d 61 74 20 53 74 72 69  |tf() Format Stri|
00078b30  6e 67 0a 54 68 65 20 66  6f 72 6d 61 74 20 73 74  |ng.The format st|
00078b40  72 69 6e 67 20 69 73 20  63 6f 6d 70 6f 73 65 64  |ring is composed|
00078b50  20 6f 66 20 61 20 73 65  71 75 65 6e 63 65 20 6f  | of a sequence o|
00078b60  66 20 63 68 61 72 61 63  74 65 72 73 2e 20 41 6c  |f characters. Al|
00078b70  6c 20 63 68 61 72 61 63  74 65 72 73 20 65 78 63  |l characters exc|
00078b80  65 70 74 20 27 25 27 20  61 72 65 20 63 6f 70 69  |ept '%' are copi|
00078b90  65 64 20 64 69 72 65 63  74 6c 79 20 74 6f 20 74  |ed directly to t|
00078ba0  68 65 20 6f 75 74 70 75  74 2e 20 27 25 27 20 6d  |he output. '%' m|
00078bb0  61 72 6b 73 20 74 68 65  20 62 65 67 69 6e 6e 69  |arks the beginni|
00078bc0  6e 67 20 6f 66 20 61 20  63 6f 6e 76 65 72 73 69  |ng of a conversi|
00078bd0  6f 6e 20 73 70 65 63 69  66 69 63 61 74 69 6f 6e  |on specification|
00078be0  2e 20 49 66 20 61 20 6c  69 74 65 72 61 6c 20 70  |. If a literal p|
00078bf0  65 72 63 65 6e 74 20 69  73 20 72 65 71 75 69 72  |ercent is requir|
00078c00  65 64 2c 20 74 68 65 6e  20 22 25 25 22 20 73 68  |ed, then "%%" sh|
00078c10  6f 75 6c 64 20 62 65 20  75 73 65 64 2e 0a 0a 41  |ould be used...A|
00078c20  20 63 6f 6e 76 65 72 73  69 6f 6e 20 73 70 65 63  | conversion spec|
00078c30  69 66 69 63 61 74 69 6f  6e 20 72 65 73 75 6c 74  |ification result|
00078c40  73 20 69 6e 20 6f 6e 65  20 61 72 67 75 6d 65 6e  |s in one argumen|
00078c50  74 20 66 72 6f 6d 20 74  68 65 20 61 72 67 75 6d  |t from the argum|
00078c60  65 6e 74 20 6c 69 73 74  20 62 65 69 6e 67 20 70  |ent list being p|
00078c70  72 69 6e 74 65 64 20 61  63 63 6f 72 64 69 6e 67  |rinted according|
00078c80  20 74 6f 20 74 68 65 20  73 70 65 63 69 66 69 63  | to the specific|
00078c90  61 74 69 6f 6e 2e 20 54  68 65 20 73 74 72 75 63  |ation. The struc|
00078ca0  74 75 72 65 20 6f 66 20  61 20 63 6f 6e 76 65 72  |ture of a conver|
00078cb0  73 69 6f 6e 20 73 70 65  63 69 66 69 63 61 74 69  |sion specificati|
00078cc0  6f 6e 20 69 73 20 73 68  6f 77 6e 20 62 65 6c 6f  |on is shown belo|
00078cd0  77 3a 0a 0a 23 77 72 61  70 20 6f 66 66 0a 25 5b  |w:..#wrap off.%[|
00078ce0  3c 66 6c 61 67 73 3d 3e  70 66 5f 66 6c 61 67 73  |<flags=>pf_flags|
00078cf0  5f 3e 5d 5b 3c 66 69 65  6c 64 20 77 69 64 74 68  |_>][<field width|
00078d00  3d 3e 70 66 5f 66 77 5f  3e 5d 5b 3c 2e 70 72 65  |=>pf_fw_>][<.pre|
00078d10  63 69 73 69 6f 6e 3d 3e  70 66 5f 70 72 65 63 5f  |cision=>pf_prec_|
00078d20  3e 5d 5b 3c 6d 6f 64 69  66 69 65 72 3d 3e 70 66  |>][<modifier=>pf|
00078d30  5f 6d 6f 64 5f 3e 5d 5c  3c 3c 63 6f 6e 76 65 72  |_mod_>]\<<conver|
00078d40  73 69 6f 6e 20 63 68 61  72 3d 3e 70 66 5f 63 6f  |sion char=>pf_co|
00078d50  6e 76 5f 3e 5c 3e 20 00  44 49 52 24 a8 00 00 00  |nv_>\> .DIR$....|
00078d60  a8 00 00 00 00 8e 07 00  46 fd ff ff 4e 61 c3 22  |........F...Na."|
00078d70  b9 03 00 00 13 00 00 00  00 00 00 00 63 6f 6e 76  |............conv|
00078d80  5f 00 00 00 bc 91 07 00  46 fd ff ff 29 1f c3 22  |_.......F...).."|
00078d90  d1 02 00 00 13 00 00 00  00 00 00 00 66 6c 61 67  |............flag|
00078da0  73 5f 00 00 90 94 07 00  46 fd ff ff 4f 27 c3 22  |s_......F...O'."|
00078db0  dd 00 00 00 13 00 00 00  00 00 00 00 66 77 5f 00  |............fw_.|
00078dc0  70 95 07 00 46 fd ff ff  c1 3a c3 22 aa 01 00 00  |p...F....:."....|
00078dd0  13 00 00 00 00 00 00 00  6d 6f 64 5f 00 00 00 00  |........mod_....|
00078de0  1c 97 07 00 46 fd ff ff  6e 2b c3 22 fa 01 00 00  |....F...n+."....|
00078df0  13 00 00 00 00 00 00 00  70 72 65 63 5f 00 00 00  |........prec_...|
00078e00  44 41 54 41 b9 03 00 00  46 6f 72 6d 61 74 20 53  |DATA....Format S|
00078e10  74 72 69 6e 67 20 43 6f  6e 76 65 72 73 69 6f 6e  |tring Conversion|
00078e20  20 43 68 61 72 61 63 74  65 72 0a 4f 6e 65 20 6f  | Character.One o|
00078e30  66 20 74 68 65 20 66 6f  6c 6c 6f 77 69 6e 67 3a  |f the following:|
00078e40  0a 0a 64 2c 69 09 54 68  65 20 69 6e 74 20 61 72  |..d,i.The int ar|
00078e50  67 75 6d 65 6e 74 20 69  73 20 6f 75 74 70 75 74  |gument is output|
00078e60  20 61 73 20 61 20 73 69  67 6e 65 64 20 64 65 63  | as a signed dec|
00078e70  69 6d 61 6c 2e 0a 0a 6f  2c 75 2c 78 2c 58 09 54  |imal...o,u,x,X.T|
00078e80  68 65 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |he unsigned int |
00078e90  61 72 67 75 6d 65 6e 74  20 69 73 20 6f 75 74 70  |argument is outp|
00078ea0  75 74 20 61 73 20 6f 63  74 61 6c 20 28 6f 29 2c  |ut as octal (o),|
00078eb0  20 75 6e 73 69 67 6e 65  64 20 64 65 63 69 6d 61  | unsigned decima|
00078ec0  6c 20 28 75 29 2c 20 6f  72 20 75 6e 73 69 67 6e  |l (u), or unsign|
00078ed0  65 64 20 68 65 78 61 64  65 63 69 6d 61 6c 20 28  |ed hexadecimal (|
00078ee0  78 20 6f 72 20 58 29 2e  20 78 20 63 61 75 73 65  |x or X). x cause|
00078ef0  73 20 68 65 78 61 64 65  63 69 6d 61 6c 20 74 6f  |s hexadecimal to|
00078f00  20 62 65 20 6f 75 74 70  75 74 20 69 6e 20 6c 6f  | be output in lo|
00078f10  77 65 72 20 63 61 73 65  2c 20 61 6e 64 20 58 20  |wer case, and X |
00078f20  69 6e 20 75 70 70 65 72  20 63 61 73 65 2e 0a 0a  |in upper case...|
00078f30  66 09 54 68 65 20 64 6f  75 62 6c 65 20 61 72 67  |f.The double arg|
00078f40  75 6d 65 6e 74 20 69 73  20 6f 75 74 70 75 74 20  |ument is output |
00078f50  61 73 20 61 20 73 69 67  6e 65 64 20 64 65 63 69  |as a signed deci|
00078f60  6d 61 6c 2e 20 49 66 20  6e 6f 20 3c 70 72 65 63  |mal. If no <prec|
00078f70  69 73 69 6f 6e 3d 3e 70  66 5f 70 72 65 63 5f 3e  |ision=>pf_prec_>|
00078f80  20 69 73 20 73 70 65 63  69 66 69 65 64 20 69 74  | is specified it|
00078f90  20 64 65 66 61 75 6c 74  73 20 74 6f 20 36 2e 0a  | defaults to 6..|
00078fa0  0a 65 2c 45 09 54 68 65  20 64 6f 75 62 6c 65 20  |.e,E.The double |
00078fb0  61 72 67 75 6d 65 6e 74  20 69 73 20 6f 75 74 70  |argument is outp|
00078fc0  75 74 20 69 6e 20 73 74  61 6e 64 61 72 64 20 66  |ut in standard f|
00078fd0  6f 72 6d 20 6e 6f 74 61  74 69 6f 6e 20 28 73 63  |orm notation (sc|
00078fe0  69 65 6e 74 69 66 69 63  29 2e 20 49 66 20 6e 6f  |ientific). If no|
00078ff0  20 70 72 65 63 69 73 69  6f 6e 20 69 73 20 73 70  | precision is sp|
00079000  65 63 69 66 69 65 64 20  69 74 20 64 65 66 61 75  |ecified it defau|
00079010  6c 74 73 20 74 6f 20 36  2e 0a 0a 67 2c 47 09 54  |lts to 6...g,G.T|
00079020  68 65 20 64 6f 75 62 6c  65 20 61 72 67 75 6d 65  |he double argume|
00079030  6e 74 20 69 73 20 6f 75  74 70 75 74 20 69 6e 20  |nt is output in |
00079040  73 74 79 6c 65 20 66 20  6f 72 20 65 2f 45 2e 20  |style f or e/E. |
00079050  54 68 65 20 73 74 79 6c  65 20 75 73 65 64 20 69  |The style used i|
00079060  73 20 74 68 65 20 6f 6e  65 20 77 68 69 63 68 20  |s the one which |
00079070  70 72 6f 64 75 63 65 73  20 74 68 65 20 6e 65 61  |produces the nea|
00079080  74 65 73 74 20 6f 75 74  70 75 74 2e 0a 0a 63 09  |test output...c.|
00079090  54 68 65 20 69 6e 74 20  61 72 67 75 6d 65 6e 74  |The int argument|
000790a0  20 69 73 20 63 6f 6e 76  65 72 74 65 64 20 74 6f  | is converted to|
000790b0  20 61 6e 20 75 6e 73 69  67 6e 65 64 20 63 68 61  | an unsigned cha|
000790c0  72 20 61 6e 64 20 6f 75  74 70 75 74 2e 0a 0a 73  |r and output...s|
000790d0  09 54 68 65 20 63 68 61  72 2a 20 61 72 67 75 6d  |.The char* argum|
000790e0  65 6e 74 20 69 73 20 6f  75 74 70 75 74 20 61 73  |ent is output as|
000790f0  20 61 20 73 74 72 69 6e  67 2e 0a 0a 70 09 54 68  | a string...p.Th|
00079100  65 20 61 72 67 75 6d 65  6e 74 20 69 73 20 61 20  |e argument is a |
00079110  76 6f 69 64 2a 20 70 6f  69 6e 74 65 72 2c 20 74  |void* pointer, t|
00079120  68 65 20 76 61 6c 75 65  20 6f 66 20 77 68 69 63  |he value of whic|
00079130  68 20 28 6e 6f 74 20 74  68 65 20 76 61 6c 75 65  |h (not the value|
00079140  20 69 74 20 70 6f 69 6e  74 73 20 74 6f 29 20 69  | it points to) i|
00079150  73 20 70 72 69 6e 74 65  64 2e 0a 0a 6e 09 54 68  |s printed...n.Th|
00079160  65 20 6e 75 6d 62 65 72  20 6f 66 20 63 68 61 72  |e number of char|
00079170  61 63 74 65 72 73 20 77  72 69 74 74 65 6e 20 73  |acters written s|
00079180  6f 20 66 61 72 20 69 73  20 77 72 69 74 74 65 6e  |o far is written|
00079190  20 69 6e 74 6f 20 74 68  65 20 69 6e 74 20 70 6f  | into the int po|
000791a0  69 6e 74 65 64 20 74 6f  20 62 79 20 74 68 65 20  |inted to by the |
000791b0  61 72 67 75 6d 65 6e 74  2e 00 00 00 44 41 54 41  |argument....DATA|
000791c0  d1 02 00 00 46 6f 72 6d  61 74 20 53 74 72 69 6e  |....Format Strin|
000791d0  67 20 46 6c 61 67 73 0a  54 68 65 20 66 6f 6c 6c  |g Flags.The foll|
000791e0  6f 77 69 6e 67 20 66 6c  61 67 73 20 6d 61 79 20  |owing flags may |
000791f0  62 65 20 75 73 65 64 3a  0a 0a 2d 09 4c 65 66 74  |be used:..-.Left|
00079200  2d 6a 75 73 74 69 66 79  20 74 68 65 20 72 65 73  |-justify the res|
00079210  75 6c 74 2e 0a 2b 09 42  65 67 69 6e 20 73 69 67  |ult..+.Begin sig|
00079220  6e 65 64 20 72 65 73 75  6c 74 73 20 77 69 74 68  |ned results with|
00079230  20 65 69 74 68 65 72 20  2b 20 6f 72 20 2d 2e 0a  | either + or -..|
00079240  28 73 70 61 63 65 29 09  49 66 20 6e 6f 20 73 69  |(space).If no si|
00079250  67 6e 20 69 73 20 75 73  65 64 2c 20 75 73 65 20  |gn is used, use |
00079260  61 20 73 70 61 63 65 20  69 6e 73 74 65 61 64 2e  |a space instead.|
00079270  0a 23 09 41 6c 74 65 72  73 20 74 68 65 20 6f 75  |.#.Alters the ou|
00079280  74 70 75 74 20 64 65 70  65 6e 64 69 6e 67 20 6f  |tput depending o|
00079290  6e 20 74 68 65 20 3c 63  6f 6e 76 65 72 73 69 6f  |n the <conversio|
000792a0  6e 20 63 68 61 72 61 63  74 65 72 3d 3e 70 66 5f  |n character=>pf_|
000792b0  63 6f 6e 76 5f 3e 2e 20  46 6f 72 20 6f 20 63 6f  |conv_>. For o co|
000792c0  6e 76 65 72 73 69 6f 6e  20 69 74 20 61 64 64 73  |nversion it adds|
000792d0  20 61 20 6c 65 61 64 69  6e 67 20 30 2e 20 46 6f  | a leading 0. Fo|
000792e0  72 20 78 20 63 6f 6e 76  65 72 73 69 6f 6e 20 69  |r x conversion i|
000792f0  74 20 61 64 64 73 20 61  20 6c 65 61 64 69 6e 67  |t adds a leading|
00079300  20 27 30 78 27 2e 20 46  6f 72 20 65 2c 20 45 2c  | '0x'. For e, E,|
00079310  20 66 2c 20 67 2c 20 61  6e 64 20 47 20 63 6f 6e  | f, g, and G con|
00079320  76 65 72 73 69 6f 6e 20  74 68 65 20 72 65 73 75  |version the resu|
00079330  6c 74 20 77 69 6c 6c 20  61 6c 77 61 79 73 20 63  |lt will always c|
00079340  6f 6e 74 61 69 6e 20 61  20 64 65 63 69 6d 61 6c  |ontain a decimal|
00079350  20 70 6f 69 6e 74 2e 20  46 6f 72 20 47 20 61 6e  | point. For G an|
00079360  64 20 67 2c 20 74 72 61  69 6c 69 6e 67 20 7a 65  |d g, trailing ze|
00079370  72 6f 73 20 77 69 6c 6c  20 6e 6f 74 20 62 65 20  |ros will not be |
00079380  72 65 6d 6f 76 65 64 2e  0a 30 09 46 6f 72 20 64  |removed..0.For d|
00079390  2c 20 69 2c 20 6f 2c 20  75 2c 20 78 2c 20 58 2c  |, i, o, u, x, X,|
000793a0  20 65 2c 20 45 2c 20 66  2c 20 67 2c 20 61 6e 64  | e, E, f, g, and|
000793b0  20 47 20 63 6f 6e 76 65  72 73 69 6f 6e 73 2c 20  | G conversions, |
000793c0  6c 65 61 64 69 6e 67 20  7a 65 72 6f 73 20 77 69  |leading zeros wi|
000793d0  6c 6c 20 62 65 20 75 73  65 64 20 61 73 20 70 61  |ll be used as pa|
000793e0  64 64 69 6e 67 20 69 6e  73 74 65 61 64 20 6f 66  |dding instead of|
000793f0  20 73 70 61 63 65 73 2e  20 54 68 69 73 20 77 69  | spaces. This wi|
00079400  6c 6c 20 68 61 76 65 20  6e 6f 20 65 66 66 65 63  |ll have no effec|
00079410  74 20 69 66 20 74 68 65  20 27 2d 27 20 66 6c 61  |t if the '-' fla|
00079420  67 20 69 73 20 75 73 65  64 2c 20 6e 65 69 74 68  |g is used, neith|
00079430  65 72 20 77 69 6c 6c 20  69 74 20 68 61 76 65 20  |er will it have |
00079440  61 6e 79 20 65 66 66 65  63 74 20 69 66 20 61 20  |any effect if a |
00079450  70 72 65 63 69 73 69 6f  6e 20 69 73 20 73 70 65  |precision is spe|
00079460  63 69 66 69 65 64 20 66  6f 72 20 64 2c 20 69 2c  |cified for d, i,|
00079470  20 6f 2c 20 75 2c 20 78  2c 20 61 6e 64 20 58 20  | o, u, x, and X |
00079480  63 6f 6e 76 65 72 73 69  6f 6e 73 2e 2e 00 00 00  |conversions.....|
00079490  44 41 54 41 dd 00 00 00  46 6f 72 6d 61 74 20 53  |DATA....Format S|
000794a0  74 72 69 6e 67 20 46 69  65 6c 64 20 57 69 64 74  |tring Field Widt|
000794b0  68 0a 54 68 69 73 20 69  73 20 61 6e 20 75 6e 73  |h.This is an uns|
000794c0  69 67 6e 65 64 20 69 6e  74 65 67 65 72 20 76 61  |igned integer va|
000794d0  6c 75 65 2e 20 49 66 20  74 68 65 20 63 6f 6e 76  |lue. If the conv|
000794e0  65 72 74 65 64 20 76 61  6c 75 65 20 68 61 73 20  |erted value has |
000794f0  66 65 77 65 72 20 63 68  61 72 61 63 74 65 72 73  |fewer characters|
00079500  20 74 68 61 6e 20 74 68  65 20 66 69 65 6c 64 20  | than the field |
00079510  77 69 64 74 68 2c 20 69  74 20 77 69 6c 6c 20 62  |width, it will b|
00079520  65 20 70 61 64 64 65 64  20 62 79 20 73 70 61 63  |e padded by spac|
00079530  65 73 20 28 6f 6e 20 74  68 65 20 6c 65 66 74 20  |es (on the left |
00079540  75 6e 6c 65 73 73 20 74  68 65 20 3c 27 2d 27 20  |unless the <'-' |
00079550  66 6c 61 67 3d 3e 70 66  5f 66 6c 61 67 73 5f 3e  |flag=>pf_flags_>|
00079560  20 69 73 20 70 72 65 73  65 6e 74 29 2e 00 00 00  | is present)....|
00079570  44 41 54 41 aa 01 00 00  46 6f 72 6d 61 74 20 53  |DATA....Format S|
00079580  74 72 69 6e 67 20 4c 65  6e 67 74 68 20 4d 6f 64  |tring Length Mod|
00079590  69 66 69 65 72 0a 4f 6e  65 20 6f 66 20 74 68 65  |ifier.One of the|
000795a0  20 66 6f 6c 6c 6f 77 69  6e 67 3a 0a 0a 68 09 46  | following:..h.F|
000795b0  6f 72 20 64 2c 20 69 2c  20 6f 2c 20 75 2c 20 78  |or d, i, o, u, x|
000795c0  20 6f 72 20 58 20 63 6f  6e 76 65 72 73 69 6f 6e  | or X conversion|
000795d0  20 73 70 65 63 69 66 69  65 73 20 74 68 61 74 20  | specifies that |
000795e0  74 68 65 20 61 72 67 75  6d 65 6e 74 20 69 73 20  |the argument is |
000795f0  61 20 73 68 6f 72 74 20  69 6e 74 2e 20 46 6f 72  |a short int. For|
00079600  20 6e 20 63 6f 6e 76 65  72 73 69 6f 6e 20 73 70  | n conversion sp|
00079610  65 63 69 66 69 65 73 20  74 68 61 74 20 74 68 65  |ecifies that the|
00079620  20 70 6f 69 6e 74 65 72  20 69 73 20 74 6f 20 61  | pointer is to a|
00079630  20 73 68 6f 72 74 20 69  6e 74 2e 0a 0a 6c 09 46  | short int...l.F|
00079640  6f 72 20 64 2c 20 69 2c  20 6f 2c 20 75 2c 20 78  |or d, i, o, u, x|
00079650  2c 20 6f 72 20 58 20 63  6f 6e 76 65 72 73 69 6f  |, or X conversio|
00079660  6e 20 73 70 65 63 69 66  69 65 73 20 74 68 61 74  |n specifies that|
00079670  20 74 68 65 20 61 72 67  75 6d 65 6e 74 20 69 73  | the argument is|
00079680  20 61 20 6c 6f 6e 67 20  69 6e 74 2e 20 46 6f 72  | a long int. For|
00079690  20 6e 20 63 6f 6e 76 65  72 73 69 6f 6e 20 73 70  | n conversion sp|
000796a0  65 63 69 66 69 65 73 20  74 68 61 74 20 74 68 65  |ecifies that the|
000796b0  20 70 6f 69 6e 74 65 72  20 69 73 20 74 6f 20 61  | pointer is to a|
000796c0  20 6c 6f 6e 67 20 69 6e  74 2e 0a 0a 4c 09 46 6f  | long int...L.Fo|
000796d0  72 20 65 2c 20 45 2c 20  66 2c 20 67 20 6f 72 20  |r e, E, f, g or |
000796e0  47 20 63 6f 6e 76 65 72  73 69 6f 6e 20 73 70 65  |G conversion spe|
000796f0  63 69 66 69 65 73 20 74  68 61 74 20 74 68 65 20  |cifies that the |
00079700  61 72 67 75 6d 65 6e 74  20 69 73 20 61 20 6c 6f  |argument is a lo|
00079710  6e 67 20 64 6f 75 62 6c  65 2e 00 00 44 41 54 41  |ng double...DATA|
00079720  fa 01 00 00 46 6f 72 6d  61 74 20 53 74 72 69 6e  |....Format Strin|
00079730  67 20 50 72 65 63 69 73  69 6f 6e 0a 54 68 69 73  |g Precision.This|
00079740  20 69 73 20 61 20 70 65  72 69 6f 64 20 28 27 2e  | is a period ('.|
00079750  27 29 20 66 6f 6c 6c 6f  77 65 64 20 62 79 20 61  |') followed by a|
00079760  6e 20 69 6e 74 65 67 65  72 2e 20 54 68 65 20 76  |n integer. The v|
00079770  61 6c 75 65 20 68 61 73  20 61 6e 20 65 66 66 65  |alue has an effe|
00079780  63 74 20 64 65 70 65 6e  64 69 6e 67 20 6f 6e 20  |ct depending on |
00079790  74 68 65 20 3c 63 6f 6e  76 65 72 73 69 6f 6e 20  |the <conversion |
000797a0  63 68 61 72 61 63 74 65  72 3d 3e 70 66 5f 63 6f  |character=>pf_co|
000797b0  6e 76 5f 3e 20 61 73 20  66 6f 6c 6c 6f 77 73 3a  |nv_> as follows:|
000797c0  0a 0a 65 2c 20 45 2c 20  66 3a 0a 20 20 20 54 68  |..e, E, f:.   Th|
000797d0  65 20 70 72 65 63 69 73  69 6f 6e 20 69 73 20 74  |e precision is t|
000797e0  68 65 20 6e 75 6d 62 65  72 20 6f 66 20 64 69 67  |he number of dig|
000797f0  69 74 73 20 74 6f 0a 20  20 20 61 70 70 65 61 72  |its to.   appear|
00079800  20 61 66 74 65 72 20 74  68 65 20 64 65 63 69 6d  | after the decim|
00079810  61 6c 20 70 6f 69 6e 74  2e 0a 0a 67 2c 20 47 3a  |al point...g, G:|
00079820  0a 20 20 20 54 68 65 20  70 72 65 63 69 73 69 6f  |.   The precisio|
00079830  6e 20 69 73 20 74 68 65  20 6e 75 6d 62 65 72 20  |n is the number |
00079840  6f 66 20 73 69 67 6e 69  66 69 63 61 6e 74 0a 20  |of significant. |
00079850  20 20 64 69 67 69 74 73  20 74 6f 20 62 65 20 6f  |  digits to be o|
00079860  75 74 70 75 74 2e 0a 0a  73 3a 0a 20 20 20 54 68  |utput...s:.   Th|
00079870  65 20 70 72 65 63 69 73  69 6f 6e 20 69 73 20 74  |e precision is t|
00079880  68 65 20 6d 61 78 69 6d  75 6d 20 6e 75 6d 62 65  |he maximum numbe|
00079890  72 20 6f 66 0a 20 20 20  63 68 61 72 61 63 74 65  |r of.   characte|
000798a0  72 73 20 74 6f 20 62 65  20 6f 75 74 70 75 74 20  |rs to be output |
000798b0  66 72 6f 6d 20 74 68 65  20 73 74 72 69 6e 67 2e  |from the string.|
000798c0  0a 0a 64 2c 20 69 2c 20  6f 2c 20 75 2c 20 78 2c  |..d, i, o, u, x,|
000798d0  20 61 6e 64 20 58 3a 0a  20 20 20 54 68 65 20 70  | and X:.   The p|
000798e0  72 65 63 69 73 69 6f 6e  20 69 73 20 74 68 65 20  |recision is the |
000798f0  6d 69 6e 69 6d 75 6d 20  6e 75 6d 62 65 72 20 6f  |minimum number o|
00079900  66 0a 20 20 20 64 69 67  69 74 73 20 74 6f 20 61  |f.   digits to a|
00079910  70 70 65 61 72 2e 00 00  44 41 54 41 d2 00 00 00  |ppear...DATA....|
00079920  70 6f 69 6e 74 65 72 2e  68 0a 54 68 69 73 20 68  |pointer.h.This h|
00079930  65 61 64 65 72 20 64 65  63 6c 61 72 65 73 20 66  |eader declares f|
00079940  75 6e 63 74 69 6f 6e 73  20 66 6f 72 20 73 65 74  |unctions for set|
00079950  74 69 6e 67 20 74 68 65  20 70 6f 69 6e 74 65 72  |ting the pointer|
00079960  20 73 68 61 70 65 2e 0a  0a 46 75 6e 63 74 69 6f  | shape...Functio|
00079970  6e 73 3a 0a 0a 23 69 6e  64 65 6e 74 20 31 0a 23  |ns:..#indent 1.#|
00079980  74 61 62 6c 65 20 6c 69  6e 65 73 20 31 0a 3c 70  |table lines 1.<p|
00079990  6f 69 6e 74 65 72 5f 73  65 74 5f 73 68 61 70 65  |ointer_set_shape|
000799a0  3e 0a 3c 70 6f 69 6e 74  65 72 5f 72 65 73 65 74  |>.<pointer_reset|
000799b0  5f 73 68 61 70 65 3e 0a  23 65 6e 64 74 61 62 6c  |_shape>.#endtabl|
000799c0  65 0a 0a 4d 61 63 72 6f  3a 0a 7b 61 6c 69 67 6e  |e..Macro:.{align|
000799d0  20 63 65 6e 74 72 65 7d  0a 3c 77 69 6d 70 5f 73  | centre}.<wimp_s|
000799e0  70 72 69 74 65 61 72 65  61 3e 00 00 44 49 52 24  |pritearea>..DIR$|
000799f0  18 01 00 00 18 01 00 00  04 9b 07 00 46 ff ff ff  |............F...|
00079a00  21 4b b4 24 a8 00 00 00  13 00 00 00 00 00 00 00  |!K.$............|
00079a10  72 65 73 65 74 5f 73 68  61 70 65 00 ac 9b 07 00  |reset_shape.....|
00079a20  46 ff ff ff 54 46 b4 24  50 01 00 00 13 00 00 00  |F...TF.$P.......|
00079a30  00 00 00 00 73 65 74 5f  73 68 61 70 65 00 00 00  |....set_shape...|
00079a40  fc 9c 07 00 46 ff ff ff  6e 1e 42 26 00 02 00 00  |....F...n.B&....|
00079a50  13 00 00 00 00 00 00 00  73 68 61 70 65 62 6c 6f  |........shapeblo|
00079a60  63 6b 00 00 fc 9e 07 00  46 ff ff ff a0 aa 52 26  |ck......F.....R&|
00079a70  19 01 00 00 13 00 00 00  00 00 00 00 52 65 73 74  |............Rest|
00079a80  72 69 63 74 54 6f 57 69  6e 64 6f 77 00 00 00 00  |rictToWindow....|
00079a90  18 a0 07 00 46 ff ff ff  dc be 52 26 3f 01 00 00  |....F.....R&?...|
00079aa0  13 00 00 00 00 00 00 00  52 65 73 74 72 69 63 74  |........Restrict|
00079ab0  54 6f 49 63 6f 6e 00 00  58 a1 07 00 46 ff ff ff  |ToIcon..X...F...|
00079ac0  93 cf 52 26 04 01 00 00  13 00 00 00 00 00 00 00  |..R&............|
00079ad0  52 65 73 74 72 69 63 74  54 6f 52 65 63 74 00 00  |RestrictToRect..|
00079ae0  5c a2 07 00 46 ff ff ff  b1 dc 52 26 d7 00 00 00  |\...F.....R&....|
00079af0  13 00 00 00 00 00 00 00  55 6e 72 65 73 74 72 69  |........Unrestri|
00079b00  63 74 00 00 44 41 54 41  a8 00 00 00 70 6f 69 6e  |ct..DATA....poin|
00079b10  74 65 72 5f 72 65 73 65  74 5f 73 68 61 70 65 0a  |ter_reset_shape.|
00079b20  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 70 6f 69  |Syntax:.void poi|
00079b30  6e 74 65 72 5f 72 65 73  65 74 5f 73 68 61 70 65  |nter_reset_shape|
00079b40  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
00079b50  09 3c 70 6f 69 6e 74 65  72 2e 68 3d 3e 70 6f 69  |.<pointer.h=>poi|
00079b60  6e 74 65 72 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |nter>..This func|
00079b70  74 69 6f 6e 20 72 65 73  65 74 73 20 74 68 65 20  |tion resets the |
00079b80  70 6f 69 6e 74 65 72 20  74 6f 20 62 65 20 73 68  |pointer to be sh|
00079b90  61 70 65 20 31 20 28 74  68 65 20 64 65 66 61 75  |ape 1 (the defau|
00079ba0  6c 74 20 70 6f 69 6e 74  65 72 29 2e 44 41 54 41  |lt pointer).DATA|
00079bb0  50 01 00 00 70 6f 69 6e  74 65 72 5f 73 65 74 5f  |P...pointer_set_|
00079bc0  73 68 61 70 65 0a 53 79  6e 74 61 78 3a 09 3c 6f  |shape.Syntax:.<o|
00079bd0  73 5f 65 72 72 6f 72 3e  20 2a 70 6f 69 6e 74 65  |s_error> *pointe|
00079be0  72 5f 73 65 74 5f 73 68  61 70 65 20 28 3c 73 70  |r_set_shape (<sp|
00079bf0  72 69 74 65 5f 61 72 65  61 3e 20 2a 61 72 65 61  |rite_area> *area|
00079c00  2c 20 3c 73 70 72 69 74  65 5f 69 64 3e 20 2a 73  |, <sprite_id> *s|
00079c10  70 72 2c 20 69 6e 74 20  61 63 74 69 76 65 5f 78  |pr, int active_x|
00079c20  2c 20 69 6e 74 20 61 63  74 69 76 65 5f 79 29 3b  |, int active_y);|
00079c30  0a 48 65 61 64 65 72 3a  09 3c 70 6f 69 6e 74 65  |.Header:.<pointe|
00079c40  72 2e 68 3d 3e 70 6f 69  6e 74 65 72 3e 0a 0a 52  |r.h=>pointer>..R|
00079c50  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
00079c60  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
00079c70  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
00079c80  69 73 20 66 75 6e 63 74  69 6f 6e 20 73 65 74 73  |is function sets|
00079c90  20 74 68 65 20 70 6f 69  6e 74 65 72 20 28 75 73  | the pointer (us|
00079ca0  69 6e 67 20 70 6f 69 6e  74 65 72 20 32 29 20 74  |ing pointer 2) t|
00079cb0  6f 20 62 65 20 74 68 65  20 73 70 72 69 74 65 20  |o be the sprite |
00079cc0  73 70 65 63 69 66 69 65  64 2e 20 54 68 65 20 61  |specified. The a|
00079cd0  63 74 69 76 65 20 70 6f  69 6e 74 20 69 73 20 67  |ctive point is g|
00079ce0  69 76 65 6e 20 69 6e 20  28 61 63 74 69 76 65 5f  |iven in (active_|
00079cf0  78 2c 61 63 74 69 76 65  5f 79 29 2e 44 41 54 41  |x,active_y).DATA|
00079d00  00 02 00 00 70 6f 69 6e  74 65 72 5f 73 68 61 70  |....pointer_shap|
00079d10  65 62 6c 6f 63 6b 0a 54  68 69 73 20 69 73 20 64  |eblock.This is d|
00079d20  65 66 69 6e 65 64 20 69  6e 20 3c 44 65 73 6b 4c  |efined in <DeskL|
00079d30  69 62 3a 57 69 6d 70 2e  68 3d 3e 57 69 6d 70 3e  |ib:Wimp.h=>Wimp>|
00079d40  2e 20 49 74 20 69 73 20  61 20 73 74 72 75 63 74  |. It is a struct|
00079d50  75 72 65 20 75 73 65 64  20 62 79 20 3c 57 69 6d  |ure used by <Wim|
00079d60  70 5f 53 65 74 50 6f 69  6e 74 65 72 53 68 61 70  |p_SetPointerShap|
00079d70  65 3e 20 77 68 69 63 68  20 64 65 66 69 6e 65 73  |e> which defines|
00079d80  20 74 68 65 20 73 68 61  70 65 20 61 6e 64 20 73  | the shape and s|
00079d90  69 7a 65 20 6f 66 20 74  68 65 20 70 6f 69 6e 74  |ize of the point|
00079da0  65 72 2e 0a 0a 20 20 20  20 5c 7b 0a 20 20 20 20  |er...    \{.    |
00079db0  20 20 69 6e 74 09 09 73  68 61 70 65 6e 75 6d 62  |  int..shapenumb|
00079dc0  65 72 3b 0a 20 20 20 20  20 20 63 68 61 72 09 09  |er;.      char..|
00079dd0  2a 73 68 61 70 65 64 61  74 61 3b 0a 20 20 20 20  |*shapedata;.    |
00079de0  20 20 75 6e 73 69 67 6e  65 64 20 69 6e 74 09 77  |  unsigned int.w|
00079df0  69 64 74 68 3b 0a 20 20  20 20 20 20 75 6e 73 69  |idth;.      unsi|
00079e00  67 6e 65 64 20 69 6e 74  09 68 65 69 67 68 74 3b  |gned int.height;|
00079e10  0a 20 20 20 20 20 20 3c  77 69 6d 70 5f 70 6f 69  |.      <wimp_poi|
00079e20  6e 74 3e 09 61 63 74 69  76 65 3b 0a 20 20 20 20  |nt>.active;.    |
00079e30  7d 0a 0a 2f 73 68 61 70  65 6e 75 6d 62 65 72 2f  |}../shapenumber/|
00079e40  20 73 68 6f 75 6c 64 20  62 65 20 30 20 74 6f 20  | should be 0 to |
00079e50  73 77 69 74 63 68 20 74  68 65 20 70 6f 69 6e 74  |switch the point|
00079e60  65 72 20 6f 66 66 2c 20  6f 72 20 32 20 74 6f 20  |er off, or 2 to |
00079e70  64 65 66 69 6e 65 20 79  6f 75 72 20 6f 77 6e 20  |define your own |
00079e80  70 6f 69 6e 74 65 72 2e  20 2f 61 63 74 69 76 65  |pointer. /active|
00079e90  2f 20 64 65 66 69 6e 65  73 20 74 68 65 20 6f 66  |/ defines the of|
00079ea0  66 73 65 74 20 28 69 6e  20 70 69 78 65 6c 73 20  |fset (in pixels |
00079eb0  66 72 6f 6d 20 74 68 65  20 74 6f 70 2d 6c 65 66  |from the top-lef|
00079ec0  74 29 20 6f 66 20 74 68  65 20 61 63 74 69 76 65  |t) of the active|
00079ed0  20 70 6f 69 6e 74 2e 20  2f 73 68 61 70 65 64 61  | point. /shapeda|
00079ee0  74 61 2f 20 63 61 6e 20  62 65 20 2d 31 20 66 6f  |ta/ can be -1 fo|
00079ef0  72 20 6e 6f 20 63 68 61  6e 67 65 2e 44 41 54 41  |r no change.DATA|
00079f00  19 01 00 00 50 6f 69 6e  74 65 72 5f 52 65 73 74  |....Pointer_Rest|
00079f10  72 69 63 74 54 6f 57 69  6e 64 6f 77 0a 53 79 6e  |rictToWindow.Syn|
00079f20  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
00079f30  2a 50 6f 69 6e 74 65 72  5f 52 65 73 74 72 69 63  |*Pointer_Restric|
00079f40  74 54 6f 57 69 6e 64 6f  77 20 28 3c 77 69 6e 64  |tToWindow (<wind|
00079f50  6f 77 5f 68 61 6e 64 6c  65 3e 20 77 69 6e 29 3b  |ow_handle> win);|
00079f60  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
00079f70  62 3a 50 6f 69 6e 74 65  72 2e 68 3d 3e 44 4c 5f  |b:Pointer.h=>DL_|
00079f80  50 6f 69 6e 74 65 72 3e  0a 0a 52 65 74 75 72 6e  |Pointer>..Return|
00079f90  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
00079fa0  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
00079fb0  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
00079fc0  6e 63 74 69 6f 6e 20 72  65 73 74 72 69 63 74 73  |nction restricts|
00079fd0  20 74 68 65 20 70 6f 69  6e 74 65 72 20 74 6f 20  | the pointer to |
00079fe0  74 68 65 20 72 65 63 74  61 6e 67 6c 65 20 77 68  |the rectangle wh|
00079ff0  69 63 68 20 69 73 20 74  68 65 20 77 69 6e 64 6f  |ich is the windo|
0007a000  77 20 73 70 65 63 69 66  69 65 64 20 69 6e 20 2f  |w specified in /|
0007a010  77 69 6e 2f 2e 00 00 00  44 41 54 41 3f 01 00 00  |win/....DATA?...|
0007a020  50 6f 69 6e 74 65 72 5f  52 65 73 74 72 69 63 74  |Pointer_Restrict|
0007a030  54 6f 49 63 6f 6e 0a 53  79 6e 74 61 78 3a 09 3c  |ToIcon.Syntax:.<|
0007a040  6f 73 5f 65 72 72 6f 72  3e 20 2a 50 6f 69 6e 74  |os_error> *Point|
0007a050  65 72 5f 52 65 73 74 72  69 63 74 54 6f 49 63 6f  |er_RestrictToIco|
0007a060  6e 20 28 3c 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |n (<window_handl|
0007a070  65 3e 20 77 69 6e 2c 20  3c 69 63 6f 6e 5f 68 61  |e> win, <icon_ha|
0007a080  6e 64 6c 65 3e 20 69 63  6f 6e 29 3b 0a 48 65 61  |ndle> icon);.Hea|
0007a090  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 50 6f  |der:.<DeskLib:Po|
0007a0a0  69 6e 74 65 72 2e 68 3d  3e 44 4c 5f 50 6f 69 6e  |inter.h=>DL_Poin|
0007a0b0  74 65 72 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |ter>..Returns:.P|
0007a0c0  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
0007a0d0  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
0007a0e0  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
0007a0f0  6f 6e 20 72 65 73 74 72  69 63 74 73 20 74 68 65  |on restricts the|
0007a100  20 70 6f 69 6e 74 65 72  20 74 6f 20 74 68 65 20  | pointer to the |
0007a110  72 65 63 74 61 6e 67 6c  65 20 77 68 69 63 68 20  |rectangle which |
0007a120  69 73 20 74 68 65 20 62  6f 75 6e 64 69 6e 67 20  |is the bounding |
0007a130  62 6f 78 20 6f 66 20 74  68 65 20 69 63 6f 6e 20  |box of the icon |
0007a140  2f 69 63 6f 6e 2f 20 69  6e 20 77 69 6e 64 6f 77  |/icon/ in window|
0007a150  20 2f 77 69 6e 2f 2e 00  44 41 54 41 04 01 00 00  | /win/..DATA....|
0007a160  50 6f 69 6e 74 65 72 5f  52 65 73 74 72 69 63 74  |Pointer_Restrict|
0007a170  54 6f 52 65 63 74 0a 53  79 6e 74 61 78 3a 09 3c  |ToRect.Syntax:.<|
0007a180  6f 73 5f 65 72 72 6f 72  3e 20 2a 50 6f 69 6e 74  |os_error> *Point|
0007a190  65 72 5f 52 65 73 74 72  69 63 74 54 6f 52 65 63  |er_RestrictToRec|
0007a1a0  74 20 28 3c 77 69 6d 70  5f 72 65 63 74 3e 20 72  |t (<wimp_rect> r|
0007a1b0  65 63 74 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |ect);.Header:.<D|
0007a1c0  65 73 6b 4c 69 62 3a 50  6f 69 6e 74 65 72 2e 68  |eskLib:Pointer.h|
0007a1d0  3d 3e 44 4c 5f 50 6f 69  6e 74 65 72 3e 0a 0a 52  |=>DL_Pointer>..R|
0007a1e0  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
0007a1f0  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
0007a200  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
0007a210  69 73 20 66 75 6e 63 74  69 6f 6e 20 72 65 73 74  |is function rest|
0007a220  72 69 63 74 73 20 74 68  65 20 70 6f 69 6e 74 65  |ricts the pointe|
0007a230  72 20 74 6f 20 74 68 65  20 72 65 63 74 61 6e 67  |r to the rectang|
0007a240  6c 65 20 77 68 69 63 68  20 69 73 20 67 69 76 65  |le which is give|
0007a250  6e 20 69 6e 20 2f 72 65  63 74 2f 2e 44 41 54 41  |n in /rect/.DATA|
0007a260  d7 00 00 00 50 6f 69 6e  74 65 72 5f 55 6e 72 65  |....Pointer_Unre|
0007a270  73 74 72 69 63 74 0a 53  79 6e 74 61 78 3a 09 3c  |strict.Syntax:.<|
0007a280  6f 73 5f 65 72 72 6f 72  3e 20 2a 50 6f 69 6e 74  |os_error> *Point|
0007a290  65 72 5f 55 6e 72 65 73  74 72 69 63 74 20 28 76  |er_Unrestrict (v|
0007a2a0  6f 69 64 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |oid);.Header:.<D|
0007a2b0  65 73 6b 4c 69 62 3a 50  6f 69 6e 74 65 72 2e 68  |eskLib:Pointer.h|
0007a2c0  3d 3e 44 4c 5f 50 6f 69  6e 74 65 72 3e 0a 0a 52  |=>DL_Pointer>..R|
0007a2d0  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
0007a2e0  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
0007a2f0  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
0007a300  69 73 20 66 75 6e 63 74  69 6f 6e 20 72 65 6d 6f  |is function remo|
0007a310  76 65 73 20 61 6e 79 20  72 65 73 74 72 69 63 74  |ves any restrict|
0007a320  69 6f 6e 20 6f 6e 20 74  68 65 20 70 6f 69 6e 74  |ion on the point|
0007a330  65 72 2e 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |er..DIR$,...,...|
0007a340  60 a3 07 00 46 ff ff ff  f1 59 46 26 f8 00 00 00  |`...F....YF&....|
0007a350  13 00 00 00 00 00 00 00  62 6c 6f 63 6b 00 00 00  |........block...|
0007a360  44 41 54 41 f8 00 00 00  70 6f 6c 6c 77 6f 72 64  |DATA....pollword|
0007a370  5f 62 6c 6f 63 6b 0a 54  68 69 73 20 69 73 20 61  |_block.This is a|
0007a380  20 74 79 70 65 20 64 65  66 69 6e 65 64 20 62 79  | type defined by|
0007a390  20 3c 44 65 73 6b 4c 69  62 3a 57 69 6d 70 2e 68  | <DeskLib:Wimp.h|
0007a3a0  3d 3e 57 69 6d 70 3e 20  77 68 69 63 68 20 63 6f  |=>Wimp> which co|
0007a3b0  6e 74 61 69 6e 73 20 74  68 65 20 64 61 74 61 20  |ntains the data |
0007a3c0  72 65 74 75 72 6e 65 64  20 62 79 20 61 20 50 6f  |returned by a Po|
0007a3d0  6c 6c 57 6f 72 64 5f 4e  6f 6e 5a 65 72 6f 20 65  |llWord_NonZero e|
0007a3e0  76 65 6e 74 2e 0a 7b 77  72 61 70 20 6f 66 66 7d  |vent..{wrap off}|
0007a3f0  0a 20 20 20 5c 7b 0a 20  20 20 20 20 69 6e 74 20  |.   \{.     int |
0007a400  61 64 64 72 65 73 73 3b  09 2f 2a 20 41 64 64 72  |address;./* Addr|
0007a410  65 73 73 20 6f 66 20 70  6f 6c 6c 20 77 6f 72 64  |ess of poll word|
0007a420  20 20 2a 2f 0a 20 20 20  20 20 69 6e 74 20 63 6f  |  */.     int co|
0007a430  6e 74 65 6e 74 73 3b 09  2f 2a 20 43 6f 6e 74 65  |ntents;./* Conte|
0007a440  6e 74 73 20 6f 66 20 70  6f 6c 6c 20 77 6f 72 64  |nts of poll word|
0007a450  20 2a 2f 0a 20 20 20 7d  44 41 54 41 66 03 00 00  | */.   }DATAf...|
0007a460  44 65 73 6b 4c 69 62 3a  50 6f 70 55 70 2e 68 0a  |DeskLib:PopUp.h.|
0007a470  56 65 72 73 69 6f 6e 3a  20 31 2e 30 30 20 28 32  |Version: 1.00 (2|
0007a480  30 20 4d 61 79 20 31 39  39 33 29 0a 23 6c 69 6e  |0 May 1993).#lin|
0007a490  65 0a 54 68 69 73 20 68  65 61 64 65 72 20 70 72  |e.This header pr|
0007a4a0  6f 76 69 64 65 73 20 66  75 6e 63 74 69 6f 6e 73  |ovides functions|
0007a4b0  20 61 6e 64 20 74 79 70  65 73 20 72 65 6c 61 74  | and types relat|
0007a4c0  69 6e 67 20 74 6f 20 4a  61 73 6f 6e 20 57 69 6c  |ing to Jason Wil|
0007a4d0  6c 69 61 6d 73 27 20 50  6f 70 55 70 20 73 79 73  |liams' PopUp sys|
0007a4e0  74 65 6d 2e 0a 0a 46 75  6e 63 74 69 6f 6e 73 3a  |tem...Functions:|
0007a4f0  0a 0a 23 69 6e 64 65 6e  74 20 35 0a 23 54 61 62  |..#indent 5.#Tab|
0007a500  6c 65 20 33 20 32 31 0a  3c 50 6f 70 55 70 5f 4f  |le 3 21.<PopUp_O|
0007a510  70 65 6e 3e 0a 3c 50 6f  70 55 70 5f 43 6c 6f 73  |pen>.<PopUp_Clos|
0007a520  65 3e 0a 3c 50 6f 70 55  70 5f 53 68 6f 77 4d 65  |e>.<PopUp_ShowMe|
0007a530  6e 75 4c 65 61 66 3e 0a  3c 50 6f 70 55 70 5f 53  |nuLeaf>.<PopUp_S|
0007a540  68 6f 77 50 74 72 3e 0a  3c 50 6f 70 55 70 5f 53  |howPtr>.<PopUp_S|
0007a550  68 6f 77 53 74 61 6e 64  61 6c 6f 6e 65 3e 0a 3c  |howStandalone>.<|
0007a560  50 6f 70 55 70 5f 53 68  6f 77 53 74 61 74 69 63  |PopUp_ShowStatic|
0007a570  3e 0a 23 45 6e 64 54 61  62 6c 65 0a 23 69 6e 64  |>.#EndTable.#ind|
0007a580  65 6e 74 0a 0a 4d 61 63  72 6f 73 3a 0a 0a 23 69  |ent..Macros:..#i|
0007a590  6e 64 65 6e 74 20 33 0a  23 54 61 62 6c 65 20 36  |ndent 3.#Table 6|
0007a5a0  20 32 31 0a 3c 70 6f 70  75 70 5f 49 53 4c 45 41  | 21.<popup_ISLEA|
0007a5b0  46 3e 0a 3c 70 6f 70 75  70 5f 49 53 53 54 41 54  |F>.<popup_ISSTAT|
0007a5c0  49 43 3e 0a 3c 70 6f 70  75 70 5f 53 54 41 4e 44  |IC>.<popup_STAND|
0007a5d0  41 4c 4f 4e 45 3e 0a 3c  70 6f 70 75 70 5f 4d 45  |ALONE>.<popup_ME|
0007a5e0  4e 55 4c 45 41 46 3e 0a  3c 70 6f 70 75 70 5f 53  |NULEAF>.<popup_S|
0007a5f0  54 41 54 49 43 3e 0a 3c  70 6f 70 75 70 74 63 5f  |TATIC>.<popuptc_|
0007a600  52 47 42 3e 0a 3c 70 6f  70 75 70 74 63 5f 48 53  |RGB>.<popuptc_HS|
0007a610  56 3e 0a 3c 70 6f 70 75  70 74 63 5f 43 4d 59 4b  |V>.<popuptc_CMYK|
0007a620  3e 0a 3c 70 6f 70 75 70  74 63 5f 54 52 41 4e 53  |>.<popuptc_TRANS|
0007a630  50 41 52 45 4e 54 30 3e  0a 3c 70 6f 70 75 70 74  |PARENT0>.<popupt|
0007a640  63 5f 54 52 41 4e 53 50  41 52 45 4e 54 31 3e 0a  |c_TRANSPARENT1>.|
0007a650  3c 70 6f 70 75 70 74 63  5f 54 52 41 4e 53 50 41  |<popuptc_TRANSPA|
0007a660  52 45 4e 54 32 35 36 3e  0a 23 45 6e 64 54 61 62  |RENT256>.#EndTab|
0007a670  6c 65 0a 23 69 6e 64 65  6e 74 0a 0a 54 79 70 65  |le.#indent..Type|
0007a680  73 3a 0a 0a 23 69 6e 64  65 6e 74 20 37 0a 23 54  |s:..#indent 7.#T|
0007a690  61 62 6c 65 20 39 20 32  31 0a 3c 70 6f 70 75 70  |able 9 21.<popup|
0007a6a0  5f 68 61 6e 64 6c 65 3e  0a 3c 70 6f 70 75 70 5f  |_handle>.<popup_|
0007a6b0  6d 61 67 6e 69 66 79 3e  0a 3c 70 6f 70 75 70 5f  |magnify>.<popup_|
0007a6c0  70 72 6f 67 69 6e 66 6f  3e 0a 3c 70 6f 70 75 70  |proginfo>.<popup|
0007a6d0  5f 72 65 70 6f 72 74 3e  0a 3c 70 6f 70 75 70 5f  |_report>.<popup_|
0007a6e0  73 61 76 65 61 73 3e 0a  3c 70 6f 70 75 70 5f 73  |saveas>.<popup_s|
0007a6f0  61 76 65 61 73 72 65 74  75 72 6e 3e 0a 3c 70 6f  |aveasreturn>.<po|
0007a700  70 75 70 5f 77 69 6d 70  63 6f 6c 6f 75 72 3e 0a  |pup_wimpcolour>.|
0007a710  3c 63 6f 6c 6f 75 72 5f  72 67 62 3e 0a 3c 63 6f  |<colour_rgb>.<co|
0007a720  6c 6f 75 72 5f 68 73 76  3e 0a 3c 63 6f 6c 6f 75  |lour_hsv>.<colou|
0007a730  72 5f 63 6d 79 6b 20 3e  0a 3c 70 6f 70 75 70 5f  |r_cmyk >.<popup_|
0007a740  74 72 75 65 63 6f 6c 6f  75 72 3e 0a 3c 70 6f 70  |truecolour>.<pop|
0007a750  75 70 5f 68 65 61 64 65  72 3e 0a 3c 70 6f 70 75  |up_header>.<popu|
0007a760  70 5f 64 61 74 61 3e 0a  3c 70 6f 70 75 70 5f 72  |p_data>.<popup_r|
0007a770  65 74 75 72 6e 64 61 74  61 3e 0a 3c 6d 65 73 73  |eturndata>.<mess|
0007a780  61 67 65 5f 70 6f 70 75  70 72 65 71 75 65 73 74  |age_popuprequest|
0007a790  3e 0a 3c 6d 65 73 73 61  67 65 5f 70 6f 70 75 70  |>.<message_popup|
0007a7a0  73 74 61 74 65 3e 0a 3c  70 6f 70 75 70 5f 62 6c  |state>.<popup_bl|
0007a7b0  6f 63 6b 3e 0a 23 45 6e  64 54 61 62 6c 65 00 00  |ock>.#EndTable..|
0007a7c0  44 49 52 24 dc 00 00 00  dc 00 00 00 9c a8 07 00  |DIR$............|
0007a7d0  46 ff ff ff a3 5e 61 25  a3 00 00 00 13 00 00 00  |F....^a%........|
0007a7e0  00 00 00 00 43 4d 59 4b  00 00 00 00 40 a9 07 00  |....CMYK....@...|
0007a7f0  46 ff ff ff 6e 5b 61 25  a1 00 00 00 13 00 00 00  |F...n[a%........|
0007a800  00 00 00 00 48 53 56 00  e4 a9 07 00 46 ff ff ff  |....HSV.....F...|
0007a810  0e 58 61 25 a1 00 00 00  13 00 00 00 00 00 00 00  |.Xa%............|
0007a820  52 47 42 00 88 aa 07 00  46 ff ff ff 84 61 61 25  |RGB.....F....aa%|
0007a830  be 00 00 00 13 00 00 00  00 00 00 00 54 52 41 4e  |............TRAN|
0007a840  53 50 41 52 45 4e 54 30  00 00 00 00 48 ab 07 00  |SPARENT0....H...|
0007a850  46 ff ff ff 30 6b 61 25  3b 01 00 00 13 00 00 00  |F...0ka%;.......|
0007a860  00 00 00 00 54 52 41 4e  53 50 41 52 45 4e 54 31  |....TRANSPARENT1|
0007a870  00 00 00 00 84 ac 07 00  46 ff ff ff 32 73 61 25  |........F...2sa%|
0007a880  48 01 00 00 13 00 00 00  00 00 00 00 54 52 41 4e  |H...........TRAN|
0007a890  53 50 41 52 45 4e 54 32  35 36 00 00 44 41 54 41  |SPARENT256..DATA|
0007a8a0  a3 00 00 00 70 6f 70 75  70 74 63 5f 43 4d 59 4b  |....popuptc_CMYK|
0007a8b0  0a 54 68 69 73 20 6d 61  63 72 6f 20 69 73 20 64  |.This macro is d|
0007a8c0  65 66 69 6e 65 64 20 69  6e 20 3c 44 65 73 6b 4c  |efined in <DeskL|
0007a8d0  69 62 3a 50 6f 70 55 70  2e 68 3d 3e 50 6f 70 55  |ib:PopUp.h=>PopU|
0007a8e0  70 3e 2e 20 49 74 20 69  73 20 74 68 65 20 76 61  |p>. It is the va|
0007a8f0  6c 75 65 20 6f 66 20 74  68 65 20 63 6f 6c 6f 75  |lue of the colou|
0007a900  72 20 6d 6f 64 65 6c 20  6e 75 6d 62 65 72 20 72  |r model number r|
0007a910  65 70 72 65 73 65 6e 74  69 6e 67 20 74 68 65 20  |epresenting the |
0007a920  43 4d 59 4b 20 6d 6f 64  65 6c 2e 20 49 74 20 69  |CMYK model. It i|
0007a930  73 20 64 65 66 69 6e 65  64 20 61 73 20 32 2e 00  |s defined as 2..|
0007a940  44 41 54 41 a1 00 00 00  70 6f 70 75 70 74 63 5f  |DATA....popuptc_|
0007a950  48 53 56 0a 54 68 69 73  20 6d 61 63 72 6f 20 69  |HSV.This macro i|
0007a960  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 44 65  |s defined in <De|
0007a970  73 6b 4c 69 62 3a 50 6f  70 55 70 2e 68 3d 3e 50  |skLib:PopUp.h=>P|
0007a980  6f 70 55 70 3e 2e 20 49  74 20 69 73 20 74 68 65  |opUp>. It is the|
0007a990  20 76 61 6c 75 65 20 6f  66 20 74 68 65 20 63 6f  | value of the co|
0007a9a0  6c 6f 75 72 20 6d 6f 64  65 6c 20 6e 75 6d 62 65  |lour model numbe|
0007a9b0  72 20 72 65 70 72 65 73  65 6e 74 69 6e 67 20 74  |r representing t|
0007a9c0  68 65 20 48 53 56 20 6d  6f 64 65 6c 2e 20 49 74  |he HSV model. It|
0007a9d0  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 20 31  | is defined as 1|
0007a9e0  2e 00 00 00 44 41 54 41  a1 00 00 00 70 6f 70 75  |....DATA....popu|
0007a9f0  70 74 63 5f 52 47 42 0a  54 68 69 73 20 6d 61 63  |ptc_RGB.This mac|
0007aa00  72 6f 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |ro is defined in|
0007aa10  20 3c 44 65 73 6b 4c 69  62 3a 50 6f 70 55 70 2e  | <DeskLib:PopUp.|
0007aa20  68 3d 3e 50 6f 70 55 70  3e 2e 20 49 74 20 69 73  |h=>PopUp>. It is|
0007aa30  20 74 68 65 20 76 61 6c  75 65 20 6f 66 20 74 68  | the value of th|
0007aa40  65 20 63 6f 6c 6f 75 72  20 6d 6f 64 65 6c 20 6e  |e colour model n|
0007aa50  75 6d 62 65 72 20 72 65  70 72 65 73 65 6e 74 69  |umber representi|
0007aa60  6e 67 20 74 68 65 20 52  47 42 20 6d 6f 64 65 6c  |ng the RGB model|
0007aa70  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
0007aa80  61 73 20 30 2e 00 00 00  44 41 54 41 be 00 00 00  |as 0....DATA....|
0007aa90  70 6f 70 75 70 74 63 5f  54 52 41 4e 53 50 41 52  |popuptc_TRANSPAR|
0007aaa0  45 4e 54 30 0a 54 68 69  73 20 6d 61 63 72 6f 20  |ENT0.This macro |
0007aab0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 44  |is defined in <D|
0007aac0  65 73 6b 4c 69 62 3a 50  6f 70 55 70 2e 68 3d 3e  |eskLib:PopUp.h=>|
0007aad0  50 6f 70 55 70 3e 2e 20  49 74 20 69 73 20 74 68  |PopUp>. It is th|
0007aae0  65 20 76 61 6c 75 65 20  74 6f 20 4f 52 20 69 6e  |e value to OR in|
0007aaf0  74 6f 20 74 68 65 20 63  6f 6c 6f 75 72 20 6d 6f  |to the colour mo|
0007ab00  64 65 6c 20 6e 75 6d 62  65 72 20 77 68 69 63 68  |del number which|
0007ab10  20 72 65 70 72 65 73 65  6e 74 73 20 6e 6f 20 74  | represents no t|
0007ab20  72 61 6e 73 70 61 72 65  6e 63 79 2e 20 49 74 20  |ransparency. It |
0007ab30  69 73 20 64 65 66 69 6e  65 64 20 61 73 20 30 78  |is defined as 0x|
0007ab40  30 30 30 30 30 2e 00 00  44 41 54 41 3b 01 00 00  |00000...DATA;...|
0007ab50  70 6f 70 75 70 74 63 5f  54 52 41 4e 53 50 41 52  |popuptc_TRANSPAR|
0007ab60  45 4e 54 31 0a 54 68 69  73 20 6d 61 63 72 6f 20  |ENT1.This macro |
0007ab70  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 44  |is defined in <D|
0007ab80  65 73 6b 4c 69 62 3a 50  6f 70 55 70 2e 68 3d 3e  |eskLib:PopUp.h=>|
0007ab90  50 6f 70 55 70 3e 2e 20  49 74 20 69 73 20 74 68  |PopUp>. It is th|
0007aba0  65 20 76 61 6c 75 65 20  74 6f 20 4f 52 20 69 6e  |e value to OR in|
0007abb0  74 6f 20 74 68 65 20 63  6f 6c 6f 75 72 20 6d 6f  |to the colour mo|
0007abc0  64 65 6c 20 6e 75 6d 62  65 72 20 77 68 69 63 68  |del number which|
0007abd0  20 72 65 70 72 65 73 65  6e 74 73 20 6f 6e 65 20  | represents one |
0007abe0  74 72 61 6e 73 70 61 72  65 6e 63 79 2e 20 49 74  |transparency. It|
0007abf0  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 20 30  | is defined as 0|
0007ac00  78 31 30 30 30 30 2e 0a  0a 46 6f 72 20 65 78 61  |x10000...For exa|
0007ac10  6d 70 6c 65 2c 20 61 20  27 21 44 72 61 77 27 20  |mple, a '!Draw' |
0007ac20  73 74 79 6c 65 20 63 6f  6c 6f 75 72 20 77 6f 75  |style colour wou|
0007ac30  6c 64 20 62 65 20 67 69  76 65 6e 20 62 79 3a 0a  |ld be given by:.|
0007ac40  7b 77 72 61 70 20 6f 66  66 7d 0a 7b 66 43 6f 64  |{wrap off}.{fCod|
0007ac50  65 3b 61 6c 69 67 6e 20  63 65 6e 74 72 65 7d 3c  |e;align centre}<|
0007ac60  70 6f 70 75 70 74 63 5f  52 47 42 3e 20 7c 20 70  |popuptc_RGB> | p|
0007ac70  6f 70 75 70 74 63 5f 54  52 41 4e 53 50 41 52 45  |opuptc_TRANSPARE|
0007ac80  4e 54 31 00 44 41 54 41  48 01 00 00 70 6f 70 75  |NT1.DATAH...popu|
0007ac90  70 74 63 5f 54 52 41 4e  53 50 41 52 45 4e 54 32  |ptc_TRANSPARENT2|
0007aca0  35 36 0a 54 68 69 73 20  6d 61 63 72 6f 20 69 73  |56.This macro is|
0007acb0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 44 65 73  | defined in <Des|
0007acc0  6b 4c 69 62 3a 50 6f 70  55 70 2e 68 3d 3e 50 6f  |kLib:PopUp.h=>Po|
0007acd0  70 55 70 3e 2e 20 49 74  20 69 73 20 74 68 65 20  |pUp>. It is the |
0007ace0  76 61 6c 75 65 20 74 6f  20 4f 52 20 69 6e 74 6f  |value to OR into|
0007acf0  20 74 68 65 20 63 6f 6c  6f 75 72 20 6d 6f 64 65  | the colour mode|
0007ad00  6c 20 6e 75 6d 62 65 72  20 77 68 69 63 68 20 72  |l number which r|
0007ad10  65 70 72 65 73 65 6e 74  73 20 66 75 6c 6c 20 74  |epresents full t|
0007ad20  72 61 6e 73 70 61 72 65  6e 63 79 2e 20 49 74 20  |ransparency. It |
0007ad30  69 73 20 64 65 66 69 6e  65 64 20 61 73 20 30 78  |is defined as 0x|
0007ad40  32 30 30 30 30 2e 0a 0a  46 6f 72 20 65 78 61 6d  |20000...For exam|
0007ad50  70 6c 65 2c 20 61 20 66  75 6c 6c 20 74 72 61 6e  |ple, a full tran|
0007ad60  73 70 61 72 65 6e 63 79  20 48 53 56 20 63 6f 6c  |sparency HSV col|
0007ad70  6f 75 72 20 77 6f 75 6c  64 20 62 65 20 67 69 76  |our would be giv|
0007ad80  65 6e 20 62 79 3a 0a 7b  77 72 61 70 20 6f 66 66  |en by:.{wrap off|
0007ad90  7d 0a 7b 66 43 6f 64 65  3b 61 6c 69 67 6e 20 63  |}.{fCode;align c|
0007ada0  65 6e 74 72 65 7d 3c 70  6f 70 75 70 74 63 5f 48  |entre}<popuptc_H|
0007adb0  53 56 3e 20 7c 20 70 6f  70 75 70 74 63 5f 54 52  |SV> | popuptc_TR|
0007adc0  41 4e 53 50 41 52 45 4e  54 32 35 36 44 49 52 24  |ANSPARENT256DIR$|
0007add0  24 03 00 00 24 03 00 00  f0 b0 07 00 46 ff ff ff  |$...$.......F...|
0007ade0  7d f5 61 25 16 01 00 00  13 00 00 00 00 00 00 00  |}.a%............|
0007adf0  62 6c 6f 63 6b 00 00 00  08 b2 07 00 46 ff ff ff  |block.......F...|
0007ae00  95 20 61 25 f8 00 00 00  13 00 00 00 00 00 00 00  |. a%............|
0007ae10  43 6c 6f 73 65 00 00 00  00 b3 07 00 46 ff ff ff  |Close.......F...|
0007ae20  dd c3 61 25 6b 01 00 00  13 00 00 00 00 00 00 00  |..a%k...........|
0007ae30  64 61 74 61 00 00 00 00  6c b4 07 00 46 ff ff ff  |data....l...F...|
0007ae40  e2 78 61 25 ac 00 00 00  13 00 00 00 00 00 00 00  |.xa%............|
0007ae50  68 61 6e 64 6c 65 00 00  18 b5 07 00 46 ff ff ff  |handle......F...|
0007ae60  8b bb 61 25 3a 01 00 00  13 00 00 00 00 00 00 00  |..a%:...........|
0007ae70  68 65 61 64 65 72 00 00  54 b6 07 00 46 ff ff ff  |header..T...F...|
0007ae80  fd 45 61 25 e1 00 00 00  13 00 00 00 00 00 00 00  |.Ea%............|
0007ae90  49 53 4c 45 41 46 00 00  38 b7 07 00 46 ff ff ff  |ISLEAF..8...F...|
0007aea0  66 4a 61 25 de 00 00 00  13 00 00 00 00 00 00 00  |fJa%............|
0007aeb0  49 53 53 54 41 54 49 43  00 00 00 00 18 b8 07 00  |ISSTATIC........|
0007aec0  46 ff ff ff 09 7c 61 25  0f 01 00 00 13 00 00 00  |F....|a%........|
0007aed0  00 00 00 00 6d 61 67 6e  69 66 79 00 28 b9 07 00  |....magnify.(...|
0007aee0  46 ff ff ff 1c 52 61 25  a8 00 00 00 13 00 00 00  |F....Ra%........|
0007aef0  00 00 00 00 4d 45 4e 55  4c 45 41 46 00 00 00 00  |....MENULEAF....|
0007af00  d0 b9 07 00 46 ff ff ff  19 1d 61 25 47 01 00 00  |....F.....a%G...|
0007af10  13 00 00 00 00 00 00 00  4f 70 65 6e 00 00 00 00  |........Open....|
0007af20  18 bb 07 00 46 ff ff ff  c5 7f 61 25 29 01 00 00  |....F.....a%)...|
0007af30  13 00 00 00 00 00 00 00  70 72 6f 67 69 6e 66 6f  |........proginfo|
0007af40  00 00 00 00 44 bc 07 00  46 ff ff ff 19 89 61 25  |....D...F.....a%|
0007af50  c8 01 00 00 13 00 00 00  00 00 00 00 72 65 70 6f  |............repo|
0007af60  72 74 00 00 0c be 07 00  46 ff ff ff 8e e0 61 25  |rt......F.....a%|
0007af70  ed 01 00 00 13 00 00 00  00 00 00 00 72 65 74 75  |............retu|
0007af80  72 6e 64 61 74 61 00 00  fc bf 07 00 46 ff ff ff  |rndata......F...|
0007af90  3a 90 61 25 2b 01 00 00  13 00 00 00 00 00 00 00  |:.a%+...........|
0007afa0  73 61 76 65 61 73 00 00  28 c1 07 00 46 ff ff ff  |saveas..(...F...|
0007afb0  f8 96 61 25 8c 01 00 00  13 00 00 00 00 00 00 00  |..a%............|
0007afc0  73 61 76 65 61 73 72 65  74 75 72 6e 00 00 00 00  |saveasreturn....|
0007afd0  b4 c2 07 00 46 ff ff ff  1c 2e 61 25 6d 01 00 00  |....F.....a%m...|
0007afe0  13 00 00 00 00 00 00 00  53 68 6f 77 4d 65 6e 75  |........ShowMenu|
0007aff0  4c 65 61 66 00 00 00 00  24 c4 07 00 46 ff ff ff  |Leaf....$...F...|
0007b000  49 38 61 25 b6 01 00 00  13 00 00 00 00 00 00 00  |I8a%............|
0007b010  53 68 6f 77 50 74 72 00  dc c5 07 00 46 ff ff ff  |ShowPtr.....F...|
0007b020  09 3e 61 25 05 01 00 00  13 00 00 00 00 00 00 00  |.>a%............|
0007b030  53 68 6f 77 53 74 61 6e  64 61 6c 6f 6e 65 00 00  |ShowStandalone..|
0007b040  e4 c6 07 00 46 ff ff ff  9a 42 61 25 fc 00 00 00  |....F....Ba%....|
0007b050  13 00 00 00 00 00 00 00  53 68 6f 77 53 74 61 74  |........ShowStat|
0007b060  69 63 00 00 e0 c7 07 00  46 ff ff ff f1 4e 61 25  |ic......F....Na%|
0007b070  a7 00 00 00 13 00 00 00  00 00 00 00 53 54 41 4e  |............STAN|
0007b080  44 41 4c 4f 4e 45 00 00  88 c8 07 00 46 ff ff ff  |DALONE......F...|
0007b090  20 55 61 25 b0 00 00 00  13 00 00 00 00 00 00 00  | Ua%............|
0007b0a0  53 54 41 54 49 43 00 00  38 c9 07 00 46 ff ff ff  |STATIC..8...F...|
0007b0b0  89 b7 61 25 6a 01 00 00  13 00 00 00 00 00 00 00  |..a%j...........|
0007b0c0  74 72 75 65 63 6f 6c 6f  75 72 00 00 a4 ca 07 00  |truecolour......|
0007b0d0  46 ff ff ff 22 9b 61 25  fc 00 00 00 13 00 00 00  |F...".a%........|
0007b0e0  00 00 00 00 77 69 6d 70  63 6f 6c 6f 75 72 00 00  |....wimpcolour..|
0007b0f0  44 41 54 41 16 01 00 00  70 6f 70 75 70 5f 62 6c  |DATA....popup_bl|
0007b100  6f 63 6b 0a 54 68 69 73  20 74 79 70 65 20 69 73  |ock.This type is|
0007b110  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 44 65 73  | defined in <Des|
0007b120  6b 4c 69 62 3a 50 6f 70  55 70 2e 68 3d 3e 50 6f  |kLib:PopUp.h=>Po|
0007b130  70 55 70 3e 2e 20 49 74  20 69 73 20 61 20 73 74  |pUp>. It is a st|
0007b140  72 75 63 74 75 72 65 20  75 73 65 64 20 74 6f 20  |ructure used to |
0007b150  63 6f 6e 74 61 69 6e 20  63 6f 6d 70 6c 65 74 65  |contain complete|
0007b160  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 61 62 6f  | information abo|
0007b170  75 74 20 61 20 50 6f 70  55 70 20 72 65 71 75 65  |ut a PopUp reque|
0007b180  73 74 20 61 73 20 73 65  6e 74 20 74 6f 20 3c 50  |st as sent to <P|
0007b190  6f 70 55 70 5f 4f 70 65  6e 3e 2e 0a 0a 20 20 5c  |opUp_Open>...  \|
0007b1a0  7b 0a 20 20 20 20 3c 70  6f 70 75 70 5f 68 65 61  |{.    <popup_hea|
0007b1b0  64 65 72 3e 09 68 65 61  64 65 72 3b 0a 20 20 20  |der>.header;.   |
0007b1c0  20 3c 70 6f 70 75 70 5f  64 61 74 61 3e 09 64 61  | <popup_data>.da|
0007b1d0  74 61 3b 0a 20 20 7d 0a  0a 53 65 65 20 74 68 65  |ta;.  }..See the|
0007b1e0  20 50 6f 70 55 70 20 64  6f 63 75 6d 65 6e 74 61  | PopUp documenta|
0007b1f0  74 69 6f 6e 20 66 6f 72  20 6d 6f 72 65 20 64 65  |tion for more de|
0007b200  74 61 69 6c 73 2e 00 00  44 41 54 41 f8 00 00 00  |tails...DATA....|
0007b210  50 6f 70 55 70 5f 43 6c  6f 73 65 0a 53 79 6e 74  |PopUp_Close.Synt|
0007b220  61 78 3a 09 76 6f 69 64  20 50 6f 70 55 70 5f 43  |ax:.void PopUp_C|
0007b230  6c 6f 73 65 20 28 3c 70  6f 70 75 70 5f 68 61 6e  |lose (<popup_han|
0007b240  64 6c 65 3e 20 68 61 6e  64 6c 65 29 3b 0a 48 65  |dle> handle);.He|
0007b250  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 50  |ader:.<DeskLib:P|
0007b260  6f 70 55 70 2e 68 3d 3e  50 6f 70 55 70 3e 0a 0a  |opUp.h=>PopUp>..|
0007b270  54 68 69 73 20 73 69 6d  70 6c 79 20 63 61 6c 6c  |This simply call|
0007b280  73 20 74 68 65 20 53 57  49 20 50 6f 70 55 70 5f  |s the SWI PopUp_|
0007b290  43 6c 6f 73 65 2e 20 49  74 20 63 6c 6f 73 65 73  |Close. It closes|
0007b2a0  20 61 6e 79 20 50 6f 70  55 70 20 67 69 76 65 6e  | any PopUp given|
0007b2b0  20 74 68 61 74 20 50 6f  70 55 70 27 73 20 68 61  | that PopUp's ha|
0007b2c0  6e 64 6c 65 2e 20 54 68  69 73 20 66 75 6e 63 74  |ndle. This funct|
0007b2d0  69 6f 6e 73 20 73 68 6f  75 6c 64 20 6f 6e 6c 79  |ions should only|
0007b2e0  20 62 65 20 6e 65 63 65  73 73 61 72 79 20 66 6f  | be necessary fo|
0007b2f0  72 20 53 54 41 54 49 43  20 50 6f 70 55 70 73 2e  |r STATIC PopUps.|
0007b300  44 41 54 41 6b 01 00 00  70 6f 70 75 70 5f 64 61  |DATAk...popup_da|
0007b310  74 61 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |ta.This type is |
0007b320  64 65 66 69 6e 65 64 20  69 6e 20 3c 44 65 73 6b  |defined in <Desk|
0007b330  4c 69 62 3a 50 6f 70 55  70 2e 68 3d 3e 50 6f 70  |Lib:PopUp.h=>Pop|
0007b340  55 70 3e 2e 20 49 74 20  69 73 20 61 20 75 6e 69  |Up>. It is a uni|
0007b350  6f 6e 20 75 73 65 64 20  74 6f 20 73 65 6e 64 20  |on used to send |
0007b360  64 61 74 61 20 74 6f 20  74 68 65 20 50 6f 70 55  |data to the PopU|
0007b370  70 20 6d 61 6e 61 67 65  72 2e 0a 0a 20 20 5c 7b  |p manager...  \{|
0007b380  0a 20 20 20 20 3c 70 6f  70 75 70 5f 6d 61 67 6e  |.    <popup_magn|
0007b390  69 66 79 3e 09 6d 61 67  6e 69 66 79 3b 0a 20 20  |ify>.magnify;.  |
0007b3a0  20 20 3c 70 6f 70 75 70  5f 70 72 6f 67 69 6e 66  |  <popup_proginf|
0007b3b0  6f 3e 09 70 72 6f 67 69  6e 66 6f 3b 0a 20 20 20  |o>.proginfo;.   |
0007b3c0  20 3c 70 6f 70 75 70 5f  72 65 70 6f 72 74 3e 09  | <popup_report>.|
0007b3d0  72 65 70 6f 72 74 3b 0a  20 20 20 20 3c 70 6f 70  |report;.    <pop|
0007b3e0  75 70 5f 73 61 76 65 61  73 3e 09 73 61 76 65 61  |up_saveas>.savea|
0007b3f0  73 3b 0a 20 20 20 20 3c  70 6f 70 75 70 5f 77 69  |s;.    <popup_wi|
0007b400  6d 70 63 6f 6c 6f 75 72  3e 09 77 69 6d 70 63 6f  |mpcolour>.wimpco|
0007b410  6c 6f 75 72 3b 0a 20 20  20 20 3c 70 6f 70 75 70  |lour;.    <popup|
0007b420  5f 74 72 75 65 63 6f 6c  6f 75 72 3e 09 74 72 75  |_truecolour>.tru|
0007b430  65 63 6f 6c 6f 75 72 3b  0a 20 20 7d 0a 0a 53 65  |ecolour;.  }..Se|
0007b440  65 20 74 68 65 20 50 6f  70 55 70 20 64 6f 63 75  |e the PopUp docu|
0007b450  6d 65 6e 74 61 74 69 6f  6e 20 66 6f 72 20 6d 6f  |mentation for mo|
0007b460  72 65 20 64 65 74 61 69  6c 73 2e 00 44 41 54 41  |re details..DATA|
0007b470  ac 00 00 00 70 6f 70 75  70 5f 68 61 6e 64 6c 65  |....popup_handle|
0007b480  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
0007b490  66 69 6e 65 64 20 69 6e  20 3c 44 65 73 6b 4c 69  |fined in <DeskLi|
0007b4a0  62 3a 50 6f 70 55 70 2e  68 3d 3e 50 6f 70 55 70  |b:PopUp.h=>PopUp|
0007b4b0  3e 2e 20 49 74 20 69 73  20 61 20 74 79 70 65 20  |>. It is a type |
0007b4c0  63 61 70 61 62 6c 65 20  6f 66 20 68 6f 6c 64 69  |capable of holdi|
0007b4d0  6e 67 20 61 20 75 6e 69  71 75 65 20 69 64 65 6e  |ng a unique iden|
0007b4e0  74 69 66 69 65 72 20 66  6f 72 20 65 61 63 68 20  |tifier for each |
0007b4f0  50 6f 70 55 70 20 6f 70  65 6e 65 64 2e 20 49 74  |PopUp opened. It|
0007b500  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 20 61  | is defined as a|
0007b510  6e 20 2f 69 6e 74 2f 2e  44 41 54 41 3a 01 00 00  |n /int/.DATA:...|
0007b520  70 6f 70 75 70 5f 68 65  61 64 65 72 0a 54 68 69  |popup_header.Thi|
0007b530  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
0007b540  64 20 69 6e 20 3c 44 65  73 6b 4c 69 62 3a 50 6f  |d in <DeskLib:Po|
0007b550  70 55 70 2e 68 3d 3e 50  6f 70 55 70 3e 2e 20 49  |pUp.h=>PopUp>. I|
0007b560  74 20 69 73 20 61 20 73  74 72 75 63 74 75 72 65  |t is a structure|
0007b570  20 75 73 65 64 20 74 6f  20 70 61 73 73 20 73 74  | used to pass st|
0007b580  61 6e 64 61 72 64 20 76  69 74 61 6c 20 69 6e 66  |andard vital inf|
0007b590  6f 72 6d 61 74 69 6f 6e  20 74 6f 20 50 6f 70 55  |ormation to PopU|
0007b5a0  70 2e 0a 0a 20 20 5c 7b  0a 20 20 20 20 63 68 61  |p...  \{.    cha|
0007b5b0  72 20 6e 61 6d 65 5b 31  32 5d 3b 20 20 2f 2a 20  |r name[12];  /* |
0007b5c0  50 6f 70 55 70 20 6e 61  6d 65 20 2a 2f 0a 20 20  |PopUp name */.  |
0007b5d0  20 20 3c 77 69 6d 70 5f  70 6f 69 6e 74 3e 20 6f  |  <wimp_point> o|
0007b5e0  70 65 6e 70 6f 73 3b 0a  20 20 20 20 63 68 61 72  |penpos;.    char|
0007b5f0  20 66 6c 61 67 73 3b 0a  20 20 20 20 63 68 61 72  | flags;.    char|
0007b600  20 72 65 73 65 72 76 65  64 31 2c 72 65 73 65 72  | reserved1,reser|
0007b610  76 65 64 32 2c 72 65 73  65 72 76 65 64 33 3b 0a  |ved2,reserved3;.|
0007b620  20 20 7d 0a 0a 53 65 65  20 74 68 65 20 50 6f 70  |  }..See the Pop|
0007b630  55 70 20 64 6f 63 75 6d  65 6e 74 61 74 69 6f 6e  |Up documentation|
0007b640  20 66 6f 72 20 6d 6f 72  65 20 64 65 74 61 69 6c  | for more detail|
0007b650  73 2e 00 00 44 41 54 41  e1 00 00 00 70 6f 70 75  |s...DATA....popu|
0007b660  70 5f 49 53 4c 45 41 46  0a 54 68 69 73 20 6d 61  |p_ISLEAF.This ma|
0007b670  63 72 6f 20 69 73 20 64  65 66 69 6e 65 64 20 69  |cro is defined i|
0007b680  6e 20 3c 44 65 73 6b 4c  69 62 3a 50 6f 70 55 70  |n <DeskLib:PopUp|
0007b690  2e 68 3d 3e 50 6f 70 55  70 3e 2e 20 49 74 20 69  |.h=>PopUp>. It i|
0007b6a0  73 20 74 68 65 20 76 61  6c 75 65 20 6f 66 20 74  |s the value of t|
0007b6b0  68 65 20 66 6c 61 67 20  62 69 74 20 69 6e 64 69  |he flag bit indi|
0007b6c0  63 61 74 69 6e 67 20 74  68 61 74 20 61 20 50 6f  |cating that a Po|
0007b6d0  70 55 70 20 73 68 6f 75  6c 64 20 62 65 20 6f 70  |pUp should be op|
0007b6e0  65 6e 65 64 20 61 73 20  61 20 6d 65 6e 75 20 6c  |ened as a menu l|
0007b6f0  65 61 66 20 64 69 61 6c  6f 67 75 65 20 62 6f 78  |eaf dialogue box|
0007b700  2e 20 49 74 20 69 73 20  70 72 65 66 65 72 61 62  |. It is preferab|
0007b710  6c 65 20 74 6f 20 75 73  65 20 74 68 65 20 6d 61  |le to use the ma|
0007b720  63 72 6f 20 3c 70 6f 70  75 70 5f 4d 45 4e 55 4c  |cro <popup_MENUL|
0007b730  45 41 46 3e 2e 00 00 00  44 41 54 41 de 00 00 00  |EAF>....DATA....|
0007b740  70 6f 70 75 70 5f 49 53  53 54 41 54 49 43 0a 54  |popup_ISSTATIC.T|
0007b750  68 69 73 20 6d 61 63 72  6f 20 69 73 20 64 65 66  |his macro is def|
0007b760  69 6e 65 64 20 69 6e 20  3c 44 65 73 6b 4c 69 62  |ined in <DeskLib|
0007b770  3a 50 6f 70 55 70 2e 68  3d 3e 50 6f 70 55 70 3e  |:PopUp.h=>PopUp>|
0007b780  2e 20 49 74 20 69 73 20  74 68 65 20 76 61 6c 75  |. It is the valu|
0007b790  65 20 6f 66 20 74 68 65  20 66 6c 61 67 20 62 69  |e of the flag bi|
0007b7a0  74 20 69 6e 64 69 63 61  74 69 6e 67 20 74 68 61  |t indicating tha|
0007b7b0  74 20 61 20 50 6f 70 55  70 20 73 68 6f 75 6c 64  |t a PopUp should|
0007b7c0  20 62 65 20 6f 70 65 6e  65 64 20 61 73 20 61 20  | be opened as a |
0007b7d0  73 74 61 74 69 63 20 64  69 61 6c 6f 67 75 65 20  |static dialogue |
0007b7e0  62 6f 78 2e 20 49 74 20  69 73 20 70 72 65 66 65  |box. It is prefe|
0007b7f0  72 61 62 6c 65 20 74 6f  20 75 73 65 20 74 68 65  |rable to use the|
0007b800  20 6d 61 63 72 6f 20 3c  70 6f 70 75 70 5f 53 54  | macro <popup_ST|
0007b810  41 54 49 43 3e 2e 00 00  44 41 54 41 0f 01 00 00  |ATIC>...DATA....|
0007b820  70 6f 70 75 70 5f 6d 61  67 6e 69 66 79 0a 54 68  |popup_magnify.Th|
0007b830  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
0007b840  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 50  |ed in <DeskLib:P|
0007b850  6f 70 55 70 2e 68 3d 3e  50 6f 70 55 70 3e 2e 20  |opUp.h=>PopUp>. |
0007b860  49 74 20 69 73 20 61 20  73 74 72 75 63 74 75 72  |It is a structur|
0007b870  65 20 75 73 65 64 20 74  6f 20 68 6f 6c 64 20 69  |e used to hold i|
0007b880  6e 66 6f 72 6d 61 74 69  6f 6e 20 66 6f 72 20 74  |nformation for t|
0007b890  68 65 20 22 4d 61 67 6e  69 66 79 22 20 70 6f 70  |he "Magnify" pop|
0007b8a0  75 70 2c 20 61 73 20 66  6f 6c 6c 6f 77 73 3a 0a  |up, as follows:.|
0007b8b0  0a 20 20 5c 7b 0a 20 20  20 20 69 6e 74 20 6d 75  |.  \{.    int mu|
0007b8c0  6c 2c 64 69 76 3b 0a 20  20 20 20 69 6e 74 20 6d  |l,div;.    int m|
0007b8d0  69 6e 6d 75 6c 2c 6d 61  78 6d 75 6c 3b 0a 20 20  |inmul,maxmul;.  |
0007b8e0  20 20 69 6e 74 20 6d 69  6e 64 69 76 2c 6d 61 78  |  int mindiv,max|
0007b8f0  64 69 76 3b 0a 20 20 7d  0a 0a 53 65 65 20 74 68  |div;.  }..See th|
0007b900  65 20 50 6f 70 55 70 20  64 6f 63 75 6d 65 6e 74  |e PopUp document|
0007b910  61 74 69 6f 6e 20 66 6f  72 20 6d 6f 72 65 20 64  |ation for more d|
0007b920  65 74 61 69 6c 73 2e 00  44 41 54 41 a8 00 00 00  |etails..DATA....|
0007b930  70 6f 70 75 70 5f 4d 45  4e 55 4c 45 41 46 0a 54  |popup_MENULEAF.T|
0007b940  68 69 73 20 6d 61 63 72  6f 20 69 73 20 64 65 66  |his macro is def|
0007b950  69 6e 65 64 20 69 6e 20  3c 44 65 73 6b 4c 69 62  |ined in <DeskLib|
0007b960  3a 50 6f 70 55 70 2e 68  3d 3e 50 6f 70 55 70 3e  |:PopUp.h=>PopUp>|
0007b970  2e 20 49 74 20 69 73 20  74 68 65 20 76 61 6c 75  |. It is the valu|
0007b980  65 20 6f 66 20 74 68 65  20 66 6c 61 67 20 62 79  |e of the flag by|
0007b990  74 65 20 6e 65 65 64 65  64 20 74 6f 20 6f 70 65  |te needed to ope|
0007b9a0  6e 20 61 20 50 6f 70 55  70 20 61 73 20 61 20 6d  |n a PopUp as a m|
0007b9b0  65 6e 75 20 6c 65 61 66  2e 20 49 74 20 69 73 20  |enu leaf. It is |
0007b9c0  64 65 66 69 6e 65 64 20  61 73 20 30 78 30 31 2e  |defined as 0x01.|
0007b9d0  44 41 54 41 47 01 00 00  50 6f 70 55 70 5f 4f 70  |DATAG...PopUp_Op|
0007b9e0  65 6e 0a 53 79 6e 74 61  78 3a 09 3c 70 6f 70 75  |en.Syntax:.<popu|
0007b9f0  70 5f 68 61 6e 64 6c 65  3e 20 50 6f 70 55 70 5f  |p_handle> PopUp_|
0007ba00  4f 70 65 6e 20 28 3c 70  6f 70 75 70 5f 62 6c 6f  |Open (<popup_blo|
0007ba10  63 6b 3e 20 2a 62 6c 6b  29 3b 0a 48 65 61 64 65  |ck> *blk);.Heade|
0007ba20  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 50 6f 70 55  |r:.<DeskLib:PopU|
0007ba30  70 2e 68 3d 3e 50 6f 70  55 70 3e 0a 0a 52 65 74  |p.h=>PopUp>..Ret|
0007ba40  75 72 6e 73 3a 09 48 61  6e 64 6c 65 20 6f 66 20  |urns:.Handle of |
0007ba50  63 72 65 61 74 65 64 20  50 6f 70 55 70 2e 0a 0a  |created PopUp...|
0007ba60  54 68 69 73 20 73 69 6d  70 6c 79 20 63 61 6c 6c  |This simply call|
0007ba70  73 20 74 68 65 20 53 57  49 20 50 6f 70 55 70 5f  |s the SWI PopUp_|
0007ba80  4f 70 65 6e 2e 20 59 6f  75 20 73 68 6f 75 64 20  |Open. You shoud |
0007ba90  75 73 65 20 6f 6e 65 20  6f 66 20 74 68 65 20 50  |use one of the P|
0007baa0  6f 70 55 70 53 68 6f 77  20 66 75 6e 63 74 69 6f  |opUpShow functio|
0007bab0  6e 73 20 69 6e 73 74 65  61 64 2e 0a 0a 53 65 65  |ns instead...See|
0007bac0  20 3c 50 6f 70 55 70 5f  53 68 6f 77 4d 65 6e 75  | <PopUp_ShowMenu|
0007bad0  4c 65 61 66 3e 2c 20 3c  50 6f 70 55 70 5f 53 68  |Leaf>, <PopUp_Sh|
0007bae0  6f 77 50 74 72 3e 2c 20  3c 50 6f 70 55 70 5f 53  |owPtr>, <PopUp_S|
0007baf0  68 6f 77 53 74 61 6e 64  61 6c 6f 6e 65 3e 2c 20  |howStandalone>, |
0007bb00  61 6e 64 20 3c 50 6f 70  55 70 5f 53 68 6f 77 53  |and <PopUp_ShowS|
0007bb10  74 61 74 69 63 3e 2e 00  44 41 54 41 29 01 00 00  |tatic>..DATA)...|
0007bb20  70 6f 70 75 70 5f 70 72  6f 67 69 6e 66 6f 0a 54  |popup_proginfo.T|
0007bb30  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
0007bb40  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
0007bb50  50 6f 70 55 70 2e 68 3d  3e 50 6f 70 55 70 3e 2e  |PopUp.h=>PopUp>.|
0007bb60  20 49 74 20 69 73 20 61  20 73 74 72 75 63 74 75  | It is a structu|
0007bb70  72 65 20 75 73 65 64 20  74 6f 20 68 6f 6c 64 20  |re used to hold |
0007bb80  69 6e 66 6f 72 6d 61 74  69 6f 6e 20 66 6f 72 20  |information for |
0007bb90  74 68 65 20 22 50 72 6f  67 49 6e 66 6f 22 20 70  |the "ProgInfo" p|
0007bba0  6f 70 75 70 2c 20 61 73  20 66 6f 6c 6c 6f 77 73  |opup, as follows|
0007bbb0  3a 0a 0a 20 20 5c 7b 0a  20 20 20 20 63 68 61 72  |:..  \{.    char|
0007bbc0  20 61 70 70 6e 61 6d 65  5b 33 32 5d 3b 0a 20 20  | appname[32];.  |
0007bbd0  20 20 63 68 61 72 20 70  75 72 70 6f 73 65 5b 33  |  char purpose[3|
0007bbe0  32 5d 3b 0a 20 20 20 20  63 68 61 72 20 61 75 74  |2];.    char aut|
0007bbf0  68 6f 72 5b 33 32 5d 3b  0a 20 20 20 20 63 68 61  |hor[32];.    cha|
0007bc00  72 20 76 65 72 73 69 6f  6e 5b 33 32 5d 3b 0a 20  |r version[32];. |
0007bc10  20 7d 0a 0a 53 65 65 20  74 68 65 20 50 6f 70 55  | }..See the PopU|
0007bc20  70 20 64 6f 63 75 6d 65  6e 74 61 74 69 6f 6e 20  |p documentation |
0007bc30  66 6f 72 20 6d 6f 72 65  20 64 65 74 61 69 6c 73  |for more details|
0007bc40  2e 00 00 00 44 41 54 41  c8 01 00 00 70 6f 70 75  |....DATA....popu|
0007bc50  70 5f 72 65 70 6f 72 74  0a 54 68 69 73 20 74 79  |p_report.This ty|
0007bc60  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
0007bc70  20 3c 44 65 73 6b 4c 69  62 3a 50 6f 70 55 70 2e  | <DeskLib:PopUp.|
0007bc80  68 3d 3e 50 6f 70 55 70  3e 2e 20 49 74 20 69 73  |h=>PopUp>. It is|
0007bc90  20 61 20 73 74 72 75 63  74 75 72 65 20 75 73 65  | a structure use|
0007bca0  64 20 74 6f 20 68 6f 6c  64 20 69 6e 66 6f 72 6d  |d to hold inform|
0007bcb0  61 74 69 6f 6e 20 66 6f  72 20 74 68 65 20 22 52  |ation for the "R|
0007bcc0  65 70 6f 72 74 22 20 70  6f 70 75 70 2c 20 61 73  |eport" popup, as|
0007bcd0  20 66 6f 6c 6c 6f 77 73  3a 0a 0a 20 20 5c 7b 0a  | follows:..  \{.|
0007bce0  20 20 20 20 73 74 72 75  63 74 0a 20 20 20 20 5c  |    struct.    \|
0007bcf0  7b 0a 20 20 20 20 20 20  75 6e 73 69 67 6e 65 64  |{.      unsigned|
0007bd00  20 69 6e 74 20 63 61 6e  63 65 6c 09 3a 20 31 3b  | int cancel.: 1;|
0007bd10  0a 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |.      unsigned |
0007bd20  69 6e 74 20 6f 6b 09 09  3a 20 31 3b 0a 20 20 20  |int ok..: 1;.   |
0007bd30  20 20 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |   unsigned int |
0007bd40  72 65 73 65 72 76 65 64  09 3a 20 36 3b 0a 20 20  |reserved.: 6;.  |
0007bd50  20 20 20 20 75 6e 73 69  67 6e 65 64 20 69 6e 74  |    unsigned int|
0007bd60  20 75 73 65 72 68 61 6e  64 6c 65 09 3a 20 32 34  | userhandle.: 24|
0007bd70  3b 0a 20 20 20 20 7d 20  66 6c 61 67 73 3b 0a 20  |;.    } flags;. |
0007bd80  20 20 20 63 68 61 72 20  6f 6b 74 65 78 74 5b 31  |   char oktext[1|
0007bd90  32 5d 3b 0a 20 20 20 20  63 68 61 72 20 63 61 6e  |2];.    char can|
0007bda0  63 65 6c 74 65 78 74 5b  31 32 5d 3b 0a 20 20 20  |celtext[12];.   |
0007bdb0  20 63 68 61 72 20 61 70  70 6e 61 6d 65 5b 31 32  | char appname[12|
0007bdc0  5d 3b 0a 20 20 20 20 63  68 61 72 20 6d 65 73 73  |];.    char mess|
0007bdd0  61 67 65 5b 31 38 38 5d  3b 0a 20 20 7d 0a 0a 53  |age[188];.  }..S|
0007bde0  65 65 20 74 68 65 20 50  6f 70 55 70 20 64 6f 63  |ee the PopUp doc|
0007bdf0  75 6d 65 6e 74 61 74 69  6f 6e 20 66 6f 72 20 6d  |umentation for m|
0007be00  6f 72 65 20 64 65 74 61  69 6c 73 2e 44 41 54 41  |ore details.DATA|
0007be10  ed 01 00 00 70 6f 70 75  70 5f 72 65 74 75 72 6e  |....popup_return|
0007be20  64 61 74 61 0a 54 68 69  73 20 74 79 70 65 20 69  |data.This type i|
0007be30  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 44 65  |s defined in <De|
0007be40  73 6b 4c 69 62 3a 50 6f  70 55 70 2e 68 3d 3e 50  |skLib:PopUp.h=>P|
0007be50  6f 70 55 70 3e 2e 20 49  74 20 69 73 20 61 20 73  |opUp>. It is a s|
0007be60  74 72 75 63 74 75 72 65  20 75 73 65 64 20 77 68  |tructure used wh|
0007be70  65 6e 20 72 65 63 65 69  76 69 6e 67 20 64 61 74  |en receiving dat|
0007be80  61 20 66 72 6f 6d 20 74  68 65 20 50 6f 70 55 70  |a from the PopUp|
0007be90  20 6d 61 6e 61 67 65 72  2e 0a 0a 20 20 5c 7b 0a  | manager...  \{.|
0007bea0  20 20 20 20 3c 70 6f 70  75 70 5f 6d 61 67 6e 69  |    <popup_magni|
0007beb0  66 79 3e 09 6d 61 67 6e  69 66 79 3b 0a 20 20 20  |fy>.magnify;.   |
0007bec0  20 3c 70 6f 70 75 70 5f  72 65 70 6f 72 74 3e 09  | <popup_report>.|
0007bed0  72 65 70 6f 72 74 3b 0a  20 20 20 20 3c 70 6f 70  |report;.    <pop|
0007bee0  75 70 5f 73 61 76 65 61  73 3e 09 73 61 76 65 61  |up_saveas>.savea|
0007bef0  73 72 65 74 75 72 6e 3b  0a 20 20 20 20 3c 70 6f  |sreturn;.    <po|
0007bf00  70 75 70 5f 77 69 6d 70  63 6f 6c 6f 75 72 3e 09  |pup_wimpcolour>.|
0007bf10  77 69 6d 70 63 6f 6c 6f  75 72 3b 0a 20 20 20 20  |wimpcolour;.    |
0007bf20  3c 70 6f 70 75 70 5f 74  72 75 65 63 6f 6c 6f 75  |<popup_truecolou|
0007bf30  72 3e 09 74 72 75 65 63  6f 6c 6f 75 72 3b 0a 20  |r>.truecolour;. |
0007bf40  20 7d 0a 0a 4e 6f 74 65  20 74 68 61 74 20 74 68  | }..Note that th|
0007bf50  69 73 20 73 74 72 75 63  74 75 72 65 20 69 73 20  |is structure is |
0007bf60  61 63 74 75 61 6c 6c 79  20 77 72 6f 6e 67 2e 20  |actually wrong. |
0007bf70  54 68 65 20 74 68 69 72  64 20 6c 69 6e 65 20 73  |The third line s|
0007bf80  68 6f 75 6c 64 20 62 65  20 61 20 3c 70 6f 70 75  |hould be a <popu|
0007bf90  70 5f 73 61 76 65 61 73  72 65 74 75 72 6e 3e 2e  |p_saveasreturn>.|
0007bfa0  20 41 6e 64 20 69 74 20  73 68 6f 75 6c 64 20 62  | And it should b|
0007bfb0  65 20 61 20 75 6e 69 6f  6e 20 6e 6f 74 20 61 20  |e a union not a |
0007bfc0  73 74 72 75 63 74 75 72  65 2e 0a 0a 53 65 65 20  |structure...See |
0007bfd0  74 68 65 20 50 6f 70 55  70 20 64 6f 63 75 6d 65  |the PopUp docume|
0007bfe0  6e 74 61 74 69 6f 6e 20  66 6f 72 20 6d 6f 72 65  |ntation for more|
0007bff0  20 64 65 74 61 69 6c 73  2e 00 00 00 44 41 54 41  | details....DATA|
0007c000  2b 01 00 00 70 6f 70 75  70 5f 73 61 76 65 61 73  |+...popup_saveas|
0007c010  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
0007c020  66 69 6e 65 64 20 69 6e  20 3c 44 65 73 6b 4c 69  |fined in <DeskLi|
0007c030  62 3a 50 6f 70 55 70 2e  68 3d 3e 50 6f 70 55 70  |b:PopUp.h=>PopUp|
0007c040  3e 2e 20 49 74 20 69 73  20 61 20 73 74 72 75 63  |>. It is a struc|
0007c050  74 75 72 65 20 75 73 65  64 20 74 6f 20 68 6f 6c  |ture used to hol|
0007c060  64 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 66 6f  |d information fo|
0007c070  72 20 74 68 65 20 22 53  61 76 65 41 73 22 20 70  |r the "SaveAs" p|
0007c080  6f 70 75 70 2c 20 61 73  20 66 6f 6c 6c 6f 77 73  |opup, as follows|
0007c090  3a 0a 0a 20 20 5c 7b 0a  20 20 20 20 63 68 61 72  |:..  \{.    char|
0007c0a0  20 69 63 6f 6e 73 70 72  69 74 65 5b 31 32 5d 3b  | iconsprite[12];|
0007c0b0  0a 20 20 20 20 63 68 61  72 20 66 69 6c 65 6e 61  |.    char filena|
0007c0c0  6d 65 5b 32 31 32 5d 3b  0a 20 20 7d 0a 0a 54 68  |me[212];.  }..Th|
0007c0d0  69 73 20 50 6f 70 55 70  20 72 65 74 75 72 6e 73  |is PopUp returns|
0007c0e0  20 61 20 3c 70 6f 70 75  70 5f 73 61 76 65 61 73  | a <popup_saveas|
0007c0f0  72 65 74 75 72 6e 3e 2e  0a 0a 53 65 65 20 74 68  |return>...See th|
0007c100  65 20 50 6f 70 55 70 20  64 6f 63 75 6d 65 6e 74  |e PopUp document|
0007c110  61 74 69 6f 6e 20 66 6f  72 20 6d 6f 72 65 20 64  |ation for more d|
0007c120  65 74 61 69 6c 73 2e 00  44 41 54 41 8c 01 00 00  |etails..DATA....|
0007c130  70 6f 70 75 70 5f 73 61  76 65 61 73 72 65 74 75  |popup_saveasretu|
0007c140  72 6e 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |rn.This type is |
0007c150  64 65 66 69 6e 65 64 20  69 6e 20 3c 44 65 73 6b  |defined in <Desk|
0007c160  4c 69 62 3a 50 6f 70 55  70 2e 68 3d 3e 50 6f 70  |Lib:PopUp.h=>Pop|
0007c170  55 70 3e 2e 20 49 74 20  69 73 20 61 20 73 74 72  |Up>. It is a str|
0007c180  75 63 74 75 72 65 20 75  73 65 64 20 74 6f 20 68  |ucture used to h|
0007c190  6f 6c 64 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |old information |
0007c1a0  72 65 74 75 72 6e 65 64  20 62 79 20 74 68 65 20  |returned by the |
0007c1b0  22 53 61 76 65 41 73 22  20 70 6f 70 75 70 2c 20  |"SaveAs" popup, |
0007c1c0  61 73 20 66 6f 6c 6c 6f  77 73 3a 0a 0a 20 20 5c  |as follows:..  \|
0007c1d0  7b 0a 20 20 20 20 73 74  72 75 63 74 0a 20 20 20  |{.    struct.   |
0007c1e0  20 5c 7b 0a 20 20 20 20  20 20 75 6e 73 69 67 6e  | \{.      unsign|
0007c1f0  65 64 20 69 6e 74 20 77  61 73 64 72 61 67 67 65  |ed int wasdragge|
0007c200  64 09 3a 20 31 3b 0a 20  20 20 20 20 20 75 6e 73  |d.: 1;.      uns|
0007c210  69 67 6e 65 64 20 69 6e  74 20 73 68 69 66 74 64  |igned int shiftd|
0007c220  6f 77 6e 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |own.: 1;.      u|
0007c230  6e 73 69 67 6e 65 64 20  69 6e 74 20 72 65 73 65  |nsigned int rese|
0007c240  72 76 65 64 09 3a 20 33  30 3b 0a 20 20 20 20 7d  |rved.: 30;.    }|
0007c250  20 66 6c 61 67 73 3b 0a  20 20 20 20 69 6e 74 20  | flags;.    int |
0007c260  72 65 73 65 72 76 65 64  3b 0a 20 20 20 20 63 68  |reserved;.    ch|
0007c270  61 72 20 66 69 6c 65 6e  61 6d 65 5b 32 31 32 5d  |ar filename[212]|
0007c280  3b 0a 20 20 7d 0a 0a 53  65 65 20 74 68 65 20 50  |;.  }..See the P|
0007c290  6f 70 55 70 20 64 6f 63  75 6d 65 6e 74 61 74 69  |opUp documentati|
0007c2a0  6f 6e 20 66 6f 72 20 6d  6f 72 65 20 64 65 74 61  |on for more deta|
0007c2b0  69 6c 73 2e 44 41 54 41  6d 01 00 00 50 6f 70 55  |ils.DATAm...PopU|
0007c2c0  70 5f 53 68 6f 77 4d 65  6e 75 4c 65 61 66 0a 53  |p_ShowMenuLeaf.S|
0007c2d0  79 6e 74 61 78 3a 09 3c  70 6f 70 75 70 5f 68 61  |yntax:.<popup_ha|
0007c2e0  6e 64 6c 65 3e 20 50 6f  70 55 70 5f 53 68 6f 77  |ndle> PopUp_Show|
0007c2f0  4d 65 6e 75 4c 65 61 66  20 28 63 68 61 72 20 2a  |MenuLeaf (char *|
0007c300  6e 61 6d 65 2c 20 3c 70  6f 70 75 70 5f 64 61 74  |name, <popup_dat|
0007c310  61 3e 20 2a 64 65 66 2c  20 3c 6d 65 73 73 61 67  |a> *def, <messag|
0007c320  65 5f 6d 65 6e 75 77 61  72 6e 3e 20 2a 6d 73 67  |e_menuwarn> *msg|
0007c330  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
0007c340  4c 69 62 3a 50 6f 70 55  70 2e 68 3d 3e 50 6f 70  |Lib:PopUp.h=>Pop|
0007c350  55 70 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 48 61  |Up>..Returns:.Ha|
0007c360  6e 64 6c 65 20 6f 66 20  50 6f 70 55 70 2e 0a 0a  |ndle of PopUp...|
0007c370  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 73 20 73  |This functions s|
0007c380  68 6f 77 73 20 61 20 4d  45 4e 55 2d 4c 45 41 46  |hows a MENU-LEAF|
0007c390  20 50 6f 70 55 70 2e 20  2f 6e 61 6d 65 2f 20 69  | PopUp. /name/ i|
0007c3a0  73 20 74 68 65 20 50 6f  70 55 70 20 6e 61 6d 65  |s the PopUp name|
0007c3b0  2c 20 2f 64 65 66 2f 20  69 73 20 74 68 65 20 64  |, /def/ is the d|
0007c3c0  61 74 61 20 66 6f 72 20  74 68 65 20 50 6f 70 55  |ata for the PopU|
0007c3d0  70 20 61 6e 64 20 2f 6d  73 67 2f 20 63 6f 6e 74  |p and /msg/ cont|
0007c3e0  61 69 6e 73 20 74 68 65  20 6d 65 73 73 61 67 65  |ains the message|
0007c3f0  5f 4d 45 4e 55 57 41 52  4e 20 77 68 69 63 68 20  |_MENUWARN which |
0007c400  63 61 75 73 65 64 20 79  6f 75 20 74 6f 20 63 61  |caused you to ca|
0007c410  6c 6c 20 74 68 69 73 20  66 75 6e 63 74 69 6f 6e  |ll this function|
0007c420  2e 00 00 00 44 41 54 41  b6 01 00 00 50 6f 70 55  |....DATA....PopU|
0007c430  70 5f 53 68 6f 77 50 74  72 0a 53 79 6e 74 61 78  |p_ShowPtr.Syntax|
0007c440  3a 09 3c 70 6f 70 75 70  5f 68 61 6e 64 6c 65 3e  |:.<popup_handle>|
0007c450  20 50 6f 70 55 70 5f 53  68 6f 77 50 74 72 20 28  | PopUp_ShowPtr (|
0007c460  63 68 61 72 20 2a 6e 61  6d 65 2c 20 3c 42 4f 4f  |char *name, <BOO|
0007c470  4c 3e 20 73 74 61 74 69  63 2c 20 3c 70 6f 70 75  |L> static, <popu|
0007c480  70 5f 64 61 74 61 3e 20  2a 64 65 66 29 3b 0a 48  |p_data> *def);.H|
0007c490  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
0007c4a0  50 6f 70 55 70 2e 68 3d  3e 50 6f 70 55 70 3e 0a  |PopUp.h=>PopUp>.|
0007c4b0  0a 52 65 74 75 72 6e 73  3a 09 48 61 6e 64 6c 65  |.Returns:.Handle|
0007c4c0  20 6f 66 20 50 6f 70 55  70 2e 0a 0a 54 68 69 73  | of PopUp...This|
0007c4d0  20 66 75 6e 63 74 69 6f  6e 73 20 73 68 6f 77 73  | functions shows|
0007c4e0  20 65 69 74 68 65 72 20  61 20 73 74 61 6e 64 61  | either a standa|
0007c4f0  6c 6f 6e 65 20 74 72 61  6e 73 69 65 6e 74 20 28  |lone transient (|
0007c500  4d 65 6e 75 29 20 50 6f  70 55 70 20 6f 72 20 61  |Menu) PopUp or a|
0007c510  20 73 74 61 74 69 63 20  50 6f 70 55 70 2e 20 2f  | static PopUp. /|
0007c520  6e 61 6d 65 2f 20 69 73  20 74 68 65 20 50 6f 70  |name/ is the Pop|
0007c530  55 70 20 6e 61 6d 65 2c  20 2f 64 65 66 2f 20 69  |Up name, /def/ i|
0007c540  73 20 74 68 65 20 64 61  74 61 20 66 6f 72 20 74  |s the data for t|
0007c550  68 65 20 50 6f 70 55 70  20 61 6e 64 20 2f 73 74  |he PopUp and /st|
0007c560  61 74 69 63 2f 20 63 6f  6e 74 61 69 6e 73 20 3c  |atic/ contains <|
0007c570  54 52 55 45 3e 20 69 66  20 74 68 65 20 50 6f 70  |TRUE> if the Pop|
0007c580  55 70 20 73 68 6f 75 6c  64 20 62 65 20 73 74 61  |Up should be sta|
0007c590  74 69 63 2e 0a 0a 59 6f  75 20 73 68 6f 75 6c 64  |tic...You should|
0007c5a0  20 75 73 65 20 3c 50 6f  70 55 70 5f 53 68 6f 77  | use <PopUp_Show|
0007c5b0  73 74 61 6e 64 61 6c 6f  6e 65 3e 20 6f 72 20 3c  |standalone> or <|
0007c5c0  50 6f 70 55 70 5f 53 68  6f 77 53 74 61 74 69 63  |PopUp_ShowStatic|
0007c5d0  3e 20 69 6e 73 74 65 61  64 2e 00 00 44 41 54 41  |> instead...DATA|
0007c5e0  05 01 00 00 50 6f 70 55  70 5f 53 68 6f 77 53 74  |....PopUp_ShowSt|
0007c5f0  61 6e 64 61 6c 6f 6e 65  0a 53 79 6e 74 61 78 3a  |andalone.Syntax:|
0007c600  09 3c 70 6f 70 75 70 5f  68 61 6e 64 6c 65 3e 20  |.<popup_handle> |
0007c610  50 6f 70 55 70 5f 53 68  6f 77 53 74 61 6e 64 61  |PopUp_ShowStanda|
0007c620  6c 6f 6e 65 20 28 63 68  61 72 20 2a 6e 61 6d 65  |lone (char *name|
0007c630  2c 20 3c 70 6f 70 75 70  5f 64 61 74 61 3e 20 2a  |, <popup_data> *|
0007c640  64 65 66 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |def);.Header:.<D|
0007c650  65 73 6b 4c 69 62 3a 50  6f 70 55 70 2e 68 3d 3e  |eskLib:PopUp.h=>|
0007c660  50 6f 70 55 70 3e 0a 0a  52 65 74 75 72 6e 73 3a  |PopUp>..Returns:|
0007c670  09 48 61 6e 64 6c 65 20  6f 66 20 50 6f 70 55 70  |.Handle of PopUp|
0007c680  2e 0a 0a 54 68 69 73 20  69 73 20 61 20 66 75 6e  |...This is a fun|
0007c690  63 74 69 6f 6e 2d 6c 69  6b 65 20 6d 61 63 72 6f  |ction-like macro|
0007c6a0  20 77 68 69 63 68 20 73  69 6d 70 6c 79 20 63 61  | which simply ca|
0007c6b0  6c 6c 73 20 3c 50 6f 70  55 70 5f 53 68 6f 77 50  |lls <PopUp_ShowP|
0007c6c0  74 72 3e 20 77 69 74 68  20 2f 73 74 61 74 69 63  |tr> with /static|
0007c6d0  2f 20 73 65 74 20 74 6f  20 3c 46 41 4c 53 45 3e  |/ set to <FALSE>|
0007c6e0  2e 00 00 00 44 41 54 41  fc 00 00 00 50 6f 70 55  |....DATA....PopU|
0007c6f0  70 5f 53 68 6f 77 53 74  61 74 69 63 0a 53 79 6e  |p_ShowStatic.Syn|
0007c700  74 61 78 3a 09 3c 70 6f  70 75 70 5f 68 61 6e 64  |tax:.<popup_hand|
0007c710  6c 65 3e 20 50 6f 70 55  70 5f 53 68 6f 77 53 74  |le> PopUp_ShowSt|
0007c720  61 74 69 63 20 28 63 68  61 72 20 2a 6e 61 6d 65  |atic (char *name|
0007c730  2c 20 3c 70 6f 70 75 70  5f 64 61 74 61 3e 20 2a  |, <popup_data> *|
0007c740  64 65 66 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |def);.Header:.<D|
0007c750  65 73 6b 4c 69 62 3a 50  6f 70 55 70 2e 68 3d 3e  |eskLib:PopUp.h=>|
0007c760  50 6f 70 55 70 3e 0a 0a  52 65 74 75 72 6e 73 3a  |PopUp>..Returns:|
0007c770  09 48 61 6e 64 6c 65 20  6f 66 20 50 6f 70 55 70  |.Handle of PopUp|
0007c780  2e 0a 0a 54 68 69 73 20  69 73 20 61 20 66 75 6e  |...This is a fun|
0007c790  63 74 69 6f 6e 2d 6c 69  6b 65 20 6d 61 63 72 6f  |ction-like macro|
0007c7a0  20 77 68 69 63 68 20 73  69 6d 70 6c 79 20 63 61  | which simply ca|
0007c7b0  6c 6c 73 20 3c 50 6f 70  55 70 5f 53 68 6f 77 50  |lls <PopUp_ShowP|
0007c7c0  74 72 3e 20 77 69 74 68  20 2f 73 74 61 74 69 63  |tr> with /static|
0007c7d0  2f 20 73 65 74 20 74 6f  20 3c 54 52 55 45 3e 2e  |/ set to <TRUE>.|
0007c7e0  44 41 54 41 a7 00 00 00  70 6f 70 75 70 5f 53 54  |DATA....popup_ST|
0007c7f0  41 4e 44 41 4c 4f 4e 45  0a 54 68 69 73 20 6d 61  |ANDALONE.This ma|
0007c800  63 72 6f 20 69 73 20 64  65 66 69 6e 65 64 20 69  |cro is defined i|
0007c810  6e 20 3c 44 65 73 6b 4c  69 62 3a 50 6f 70 55 70  |n <DeskLib:PopUp|
0007c820  2e 68 3d 3e 50 6f 70 55  70 3e 2e 20 49 74 20 69  |.h=>PopUp>. It i|
0007c830  73 20 74 68 65 20 76 61  6c 75 65 20 6f 66 20 74  |s the value of t|
0007c840  68 65 20 66 6c 61 67 20  62 79 74 65 20 6e 65 65  |he flag byte nee|
0007c850  64 65 64 20 74 6f 20 6f  70 65 6e 20 61 20 73 74  |ded to open a st|
0007c860  61 6e 64 2d 61 6c 6f 6e  65 20 50 6f 70 55 70 2e  |and-alone PopUp.|
0007c870  20 49 74 20 69 73 20 64  65 66 69 6e 65 64 20 61  | It is defined a|
0007c880  73 20 30 78 30 30 2e 00  44 41 54 41 b0 00 00 00  |s 0x00..DATA....|
0007c890  70 6f 70 75 70 5f 53 54  41 54 49 43 0a 54 68 69  |popup_STATIC.Thi|
0007c8a0  73 20 6d 61 63 72 6f 20  69 73 20 64 65 66 69 6e  |s macro is defin|
0007c8b0  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 50  |ed in <DeskLib:P|
0007c8c0  6f 70 55 70 2e 68 3d 3e  50 6f 70 55 70 3e 2e 20  |opUp.h=>PopUp>. |
0007c8d0  49 74 20 69 73 20 74 68  65 20 76 61 6c 75 65 20  |It is the value |
0007c8e0  6f 66 20 74 68 65 20 66  6c 61 67 20 62 79 74 65  |of the flag byte|
0007c8f0  20 6e 65 65 64 65 64 20  74 6f 20 6f 70 65 6e 20  | needed to open |
0007c900  61 20 50 6f 70 55 70 20  61 73 20 61 20 73 74 61  |a PopUp as a sta|
0007c910  74 69 63 20 64 69 61 6c  6f 67 75 65 20 62 6f 78  |tic dialogue box|
0007c920  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
0007c930  61 73 20 30 78 30 32 2e  44 41 54 41 6a 01 00 00  |as 0x02.DATAj...|
0007c940  70 6f 70 75 70 5f 74 72  75 65 63 6f 6c 6f 75 72  |popup_truecolour|
0007c950  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
0007c960  66 69 6e 65 64 20 69 6e  20 3c 44 65 73 6b 4c 69  |fined in <DeskLi|
0007c970  62 3a 50 6f 70 55 70 2e  68 3d 3e 50 6f 70 55 70  |b:PopUp.h=>PopUp|
0007c980  3e 2e 20 49 74 20 69 73  20 61 20 73 74 72 75 63  |>. It is a struc|
0007c990  74 75 72 65 20 75 73 65  64 20 74 6f 20 68 6f 6c  |ture used to hol|
0007c9a0  64 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 66 6f  |d information fo|
0007c9b0  72 20 74 68 65 20 22 54  72 75 65 43 6f 6c 6f 75  |r the "TrueColou|
0007c9c0  72 22 20 70 6f 70 75 70  2c 20 61 73 20 66 6f 6c  |r" popup, as fol|
0007c9d0  6c 6f 77 73 3a 0a 0a 20  20 5c 7b 0a 20 20 20 20  |lows:..  \{.    |
0007c9e0  69 6e 74 20 63 6f 6c 6f  75 72 6d 6f 64 65 6c 3b  |int colourmodel;|
0007c9f0  0a 20 20 20 20 75 6e 69  6f 6e 0a 20 20 20 20 5c  |.    union.    \|
0007ca00  7b 0a 20 20 20 20 20 20  3c 63 6f 6c 6f 75 72 5f  |{.      <colour_|
0007ca10  72 67 62 3e 09 72 67 62  3b 0a 20 20 20 20 20 20  |rgb>.rgb;.      |
0007ca20  3c 63 6f 6c 6f 75 72 5f  68 73 76 3e 09 68 73 76  |<colour_hsv>.hsv|
0007ca30  3b 0a 20 20 20 20 20 20  3c 63 6f 6c 6f 75 72 5f  |;.      <colour_|
0007ca40  63 6d 79 6b 3e 09 63 6d  79 6b 3b 0a 20 20 20 20  |cmyk>.cmyk;.    |
0007ca50  7d 20 63 6f 6c 6f 75 72  3b 0a 20 20 20 20 69 6e  |} colour;.    in|
0007ca60  74 20 74 72 61 6e 73 70  61 72 65 6e 63 79 3b 0a  |t transparency;.|
0007ca70  20 20 7d 0a 0a 53 65 65  20 74 68 65 20 50 6f 70  |  }..See the Pop|
0007ca80  55 70 20 64 6f 63 75 6d  65 6e 74 61 74 69 6f 6e  |Up documentation|
0007ca90  20 66 6f 72 20 6d 6f 72  65 20 64 65 74 61 69 6c  | for more detail|
0007caa0  73 2e 00 00 44 41 54 41  fc 00 00 00 70 6f 70 75  |s...DATA....popu|
0007cab0  70 5f 77 69 6d 70 63 6f  6c 6f 75 72 0a 54 68 69  |p_wimpcolour.Thi|
0007cac0  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
0007cad0  64 20 69 6e 20 3c 44 65  73 6b 4c 69 62 3a 50 6f  |d in <DeskLib:Po|
0007cae0  70 55 70 2e 68 3d 3e 50  6f 70 55 70 3e 2e 20 49  |pUp.h=>PopUp>. I|
0007caf0  74 20 69 73 20 61 20 73  74 72 75 63 74 75 72 65  |t is a structure|
0007cb00  20 75 73 65 64 20 74 6f  20 68 6f 6c 64 20 69 6e  | used to hold in|
0007cb10  66 6f 72 6d 61 74 69 6f  6e 20 66 6f 72 20 22 57  |formation for "W|
0007cb20  69 6d 70 43 6f 6c 6f 75  72 22 20 70 6f 70 75 70  |impColour" popup|
0007cb30  2c 20 61 73 20 66 6f 6c  6c 6f 77 73 3a 0a 0a 20  |, as follows:.. |
0007cb40  20 5c 7b 0a 20 20 20 20  63 68 61 72 20 63 6f 6c  | \{.    char col|
0007cb50  6f 75 72 3b 20 20 20 2f  2a 20 57 69 6d 70 20 63  |our;   /* Wimp c|
0007cb60  6f 6c 6f 75 72 20 30 2d  31 35 20 2a 2f 0a 20 20  |olour 0-15 */.  |
0007cb70  7d 0a 0a 53 65 65 20 74  68 65 20 50 6f 70 55 70  |}..See the PopUp|
0007cb80  20 64 6f 63 75 6d 65 6e  74 61 74 69 6f 6e 20 66  | documentation f|
0007cb90  6f 72 20 6d 6f 72 65 20  64 65 74 61 69 6c 73 2e  |or more details.|
0007cba0  44 41 54 41 d9 00 00 00  70 6f 77 0a 53 79 6e 74  |DATA....pow.Synt|
0007cbb0  61 78 3a 09 64 6f 75 62  6c 65 20 70 6f 77 20 28  |ax:.double pow (|
0007cbc0  64 6f 75 62 6c 65 20 78  2c 20 64 6f 75 62 6c 65  |double x, double|
0007cbd0  20 79 29 3b 0a 48 65 61  64 65 72 3a 09 3c 6d 61  | y);.Header:.<ma|
0007cbe0  74 68 2e 68 3d 3e 6d 61  74 68 3e 0a 0a 52 65 74  |th.h=>math>..Ret|
0007cbf0  75 72 6e 73 3a 09 54 68  65 20 76 61 6c 75 65 20  |urns:.The value |
0007cc00  6f 66 20 78 20 72 61 69  73 65 64 20 74 6f 20 74  |of x raised to t|
0007cc10  68 65 20 70 6f 77 65 72  20 79 2e 0a 0a 54 68 69  |he power y...Thi|
0007cc20  73 20 66 75 6e 63 74 69  6f 6e 20 63 61 6c 63 75  |s function calcu|
0007cc30  6c 61 74 65 73 20 78 20  74 6f 20 74 68 65 20 70  |lates x to the p|
0007cc40  6f 77 65 72 20 6f 66 20  79 2e 20 49 66 20 78 20  |ower of y. If x |
0007cc50  69 73 20 6e 65 67 61 74  69 76 65 2c 20 74 68 65  |is negative, the|
0007cc60  6e 20 79 20 6d 75 73 74  20 62 65 20 61 6e 20 69  |n y must be an i|
0007cc70  6e 74 65 67 65 72 2e 20  20 00 00 00 44 49 52 24  |nteger.  ...DIR$|
0007cc80  2c 00 00 00 2c 00 00 00  a8 cc 07 00 46 fd ff ff  |,...,.......F...|
0007cc90  51 07 e5 22 4c 01 00 00  13 00 00 00 00 00 00 00  |Q.."L...........|
0007cca0  21 52 6f 6f 74 00 00 00  44 41 54 41 4c 01 00 00  |!Root...DATAL...|
0007ccb0  50 72 65 70 72 6f 63 65  73 73 6f 72 20 44 69 72  |Preprocessor Dir|
0007ccc0  65 63 74 69 76 65 73 0a  54 68 65 73 65 20 64 69  |ectives.These di|
0007ccd0  72 65 63 74 69 76 65 73  20 61 72 65 20 77 69 74  |rectives are wit|
0007cce0  68 69 6e 20 74 68 65 20  73 6f 75 72 63 65 20 63  |hin the source c|
0007ccf0  6f 64 65 0a 69 74 73 65  6c 66 2c 20 74 68 65 79  |ode.itself, they|
0007cd00  20 61 72 65 20 61 6c 6c  20 73 74 61 72 74 20 77  | are all start w|
0007cd10  69 74 68 20 22 23 22 2e  20 54 68 65 0a 64 69 72  |ith "#". The.dir|
0007cd20  65 63 74 69 76 65 73 20  61 72 65 3a 0a 0a 23 49  |ectives are:..#I|
0007cd30  6e 64 65 6e 74 20 31 30  0a 23 54 61 62 6c 65 20  |ndent 10.#Table |
0007cd40  35 20 31 35 0a 3c 23 64  65 66 69 6e 65 3d 3e 64  |5 15.<#define=>d|
0007cd50  65 66 69 6e 65 3e 0a 3c  23 69 6e 63 6c 75 64 65  |efine>.<#include|
0007cd60  3d 3e 69 6e 63 6c 75 64  65 3e 0a 3c 23 69 66 3d  |=>include>.<#if=|
0007cd70  3e 69 66 5f 3e 0a 3c 23  69 66 64 65 66 3d 3e 69  |>if_>.<#ifdef=>i|
0007cd80  66 64 65 66 3e 0a 3c 23  69 66 6e 64 65 66 3d 3e  |fdef>.<#ifndef=>|
0007cd90  69 66 6e 64 65 66 3e 0a  3c 23 65 6c 73 65 3d 3e  |ifndef>.<#else=>|
0007cda0  65 6c 73 65 5f 3e 0a 3c  23 65 6c 73 65 69 66 3d  |else_>.<#elseif=|
0007cdb0  3e 65 6c 73 65 69 66 3e  0a 3c 23 65 6e 64 69 66  |>elseif>.<#endif|
0007cdc0  3d 3e 65 6e 64 69 66 3e  0a 3c 23 75 6e 64 65 66  |=>endif>.<#undef|
0007cdd0  3d 3e 75 6e 64 65 66 3e  0a 3c 23 70 72 61 67 6d  |=>undef>.<#pragm|
0007cde0  61 3d 3e 70 72 61 67 6d  61 3e 0a 23 45 6e 64 54  |a=>pragma>.#EndT|
0007cdf0  61 62 6c 65 44 41 54 41  1d 01 00 00 23 70 72 61  |ableDATA....#pra|
0007ce00  67 6d 61 0a 54 68 69 73  20 69 73 20 61 6e 20 61  |gma.This is an a|
0007ce10  64 64 69 74 69 6f 6e 20  74 6f 20 74 68 65 20 6f  |ddition to the o|
0007ce20  72 69 67 6e 61 6c 20 43  20 73 74 61 6e 64 61 72  |rignal C standar|
0007ce30  64 2e 0a 49 74 20 64 6f  65 73 20 64 69 66 66 65  |d..It does diffe|
0007ce40  72 65 6e 74 20 74 68 69  6e 67 73 20 69 6e 20 64  |rent things in d|
0007ce50  69 66 66 65 72 65 6e 74  0a 63 6f 6d 70 69 6c 65  |ifferent.compile|
0007ce60  72 73 2e 20 54 68 65 20  67 65 6e 65 72 61 6c 20  |rs. The general |
0007ce70  66 6f 72 6d 20 69 73 3a  0a 0a 7b 66 43 6f 64 65  |form is:..{fCode|
0007ce80  3b 61 6c 69 67 6e 20 63  65 6e 74 72 65 7d 23 70  |;align centre}#p|
0007ce90  72 61 67 6d 61 20 5c 3c  63 6f 6d 6d 61 6e 64 3e  |ragma \<command>|
0007cea0  7b 66 3b 61 6c 69 67 6e  7d 0a 0a 54 68 65 20 63  |{f;align}..The c|
0007ceb0  6f 6d 6d 61 6e 64 73 20  69 6e 20 45 61 73 79 20  |ommands in Easy |
0007cec0  43 20 61 72 65 3a 0a 0a  23 61 6c 69 67 6e 20 63  |C are:..#align c|
0007ced0  65 6e 74 72 65 0a 3c 23  70 72 61 67 6d 61 20 61  |entre.<#pragma a|
0007cee0  73 6d 3d 3e 70 72 61 67  6d 61 5f 61 73 6d 5f 3e  |sm=>pragma_asm_>|
0007cef0  0a 3c 23 70 72 61 67 6d  61 20 65 6e 64 61 73 6d  |.<#pragma endasm|
0007cf00  3d 3e 70 72 61 67 6d 61  5f 65 6e 64 61 73 6d 5f  |=>pragma_endasm_|
0007cf10  3e 00 00 00 44 49 52 24  4c 00 00 00 4c 00 00 00  |>...DIR$L...L...|
0007cf20  60 cf 07 00 46 fd ff ff  06 89 e6 22 49 04 00 00  |`...F......"I...|
0007cf30  13 00 00 00 00 00 00 00  61 73 6d 5f 00 00 00 00  |........asm_....|
0007cf40  ac d3 07 00 46 fd ff ff  8e 91 e6 22 4c 00 00 00  |....F......"L...|
0007cf50  13 00 00 00 00 00 00 00  65 6e 64 61 73 6d 5f 00  |........endasm_.|
0007cf60  44 41 54 41 49 04 00 00  23 70 72 61 67 6d 61 20  |DATAI...#pragma |
0007cf70  61 73 6d 0a 55 6e 6c 69  6b 65 20 44 65 73 6b 74  |asm.Unlike Deskt|
0007cf80  6f 70 20 43 2c 20 45 61  73 79 20 43 20 63 6f 6e  |op C, Easy C con|
0007cf90  74 61 69 6e 73 20 61 6e  20 69 6e 74 65 67 72 61  |tains an integra|
0007cfa0  74 65 64 20 41 52 4d 20  61 73 73 65 6d 62 6c 65  |ted ARM assemble|
0007cfb0  72 2e 20 7b 66 43 6f 64  65 7d 23 70 72 61 67 6d  |r. {fCode}#pragm|
0007cfc0  61 20 61 73 6d 7b 66 7d  20 6d 61 72 6b 73 20 74  |a asm{f} marks t|
0007cfd0  68 65 20 73 74 61 72 74  20 6f 66 20 61 20 73 65  |he start of a se|
0007cfe0  63 74 69 6f 6e 20 6f 66  20 61 73 73 65 6d 62 6c  |ction of assembl|
0007cff0  79 20 6c 61 6e 67 75 61  67 65 2e 20 49 74 20 6d  |y language. It m|
0007d000  61 79 20 62 65 20 70 6c  61 63 65 64 20 61 74 20  |ay be placed at |
0007d010  61 6e 79 20 70 6f 73 69  74 69 6f 6e 20 77 68 65  |any position whe|
0007d020  72 65 20 61 20 66 75 6e  63 74 69 6f 6e 20 64 65  |re a function de|
0007d030  66 69 6e 69 74 69 6f 6e  20 6d 61 79 20 62 65 20  |finition may be |
0007d040  70 6c 61 63 65 64 2e 20  52 65 67 69 73 74 65 72  |placed. Register|
0007d050  73 20 63 61 6e 20 74 61  6b 65 20 6e 6f 72 6d 61  |s can take norma|
0007d060  6c 20 6e 61 6d 65 73 20  28 7b 2f 7d 52 30 2d 52  |l names ({/}R0-R|
0007d070  31 35 7b 2f 7d 29 20 6f  72 20 74 68 65 20 41 50  |15{/}) or the AP|
0007d080  43 53 20 73 74 61 6e 64  61 72 64 20 6e 61 6d 65  |CS standard name|
0007d090  73 20 28 7b 2f 7d 61 31  7b 2f 7d 20 65 74 63 2c  |s ({/}a1{/} etc,|
0007d0a0  20 7b 2f 7d 66 31 7b 2f  7d 20 65 74 63 2c 20 7b  | {/}f1{/} etc, {|
0007d0b0  2f 7d 73 70 7b 2f 7d 2c  20 7b 2f 7d 6c 6b 7b 2f  |/}sp{/}, {/}lk{/|
0007d0c0  7d 20 61 6e 64 20 7b 2f  7d 70 63 7b 2f 7d 29 2e  |} and {/}pc{/}).|
0007d0d0  0a 0a 45 78 70 72 65 73  73 69 6f 6e 73 20 61 72  |..Expressions ar|
0007d0e0  65 20 69 6e 20 74 68 65  20 6e 6f 72 6d 61 6c 20  |e in the normal |
0007d0f0  43 20 66 6f 72 6d 61 74  20 61 6e 64 20 61 6c 6c  |C format and all|
0007d100  20 70 72 65 2d 70 72 6f  63 65 73 73 69 6e 67 20  | pre-processing |
0007d110  61 70 70 6c 69 65 73 20  74 6f 20 74 68 65 20 61  |applies to the a|
0007d120  73 73 65 6d 62 6c 79 20  6c 61 6e 67 75 61 67 65  |ssembly language|
0007d130  20 73 65 63 74 69 6f 6e  20 61 73 20 77 65 6c 6c  | section as well|
0007d140  2e 0a 0a 4c 61 62 65 6c  73 20 61 72 65 20 70 72  |...Labels are pr|
0007d150  65 66 69 78 65 64 20 62  79 20 61 20 66 75 6c 6c  |efixed by a full|
0007d160  20 73 74 6f 70 20 61 6e  64 20 74 68 65 79 20 6d  | stop and they m|
0007d170  61 79 20 62 65 20 72 65  66 65 72 72 65 64 20 74  |ay be referred t|
0007d180  6f 20 6f 75 74 73 69 64  65 20 6f 66 20 74 68 65  |o outside of the|
0007d190  20 41 73 73 65 6d 62 6c  79 20 6c 61 6e 67 75 61  | Assembly langua|
0007d1a0  67 65 20 73 65 63 74 69  6f 6e 20 61 73 20 61 20  |ge section as a |
0007d1b0  66 75 6e 63 74 69 6f 6e  2c 20 75 6e 6c 65 73 73  |function, unless|
0007d1c0  20 74 68 65 79 20 66 69  6e 69 73 68 20 69 6e 20  | they finish in |
0007d1d0  61 20 27 24 27 20 63 68  61 72 61 63 74 65 72 2e  |a '$' character.|
0007d1e0  20 54 6f 20 6d 61 6b 65  20 74 68 65 6d 20 61 76  | To make them av|
0007d1f0  61 69 6c 61 62 6c 65 20  65 78 74 65 72 6e 61 6c  |ailable external|
0007d200  6c 79 2c 20 75 73 65 20  3c 45 58 50 4f 52 54 3e  |ly, use <EXPORT>|
0007d210  20 5c 3c 6c 61 62 65 6c  6e 61 6d 65 3e 2e 0a 0a  | \<labelname>...|
0007d220  53 57 49 73 20 63 61 6e  20 62 65 20 63 61 6c 6c  |SWIs can be call|
0007d230  65 64 20 62 79 20 6e 61  6d 65 20 6f 72 20 6e 75  |ed by name or nu|
0007d240  6d 62 65 72 2c 20 77 69  74 68 6f 75 74 20 75 73  |mber, without us|
0007d250  69 6e 67 20 71 75 6f 74  65 73 20 65 67 20 7b 66  |ing quotes eg {f|
0007d260  43 6f 64 65 7d 53 57 49  20 3c 4f 53 5f 57 72 69  |Code}SWI <OS_Wri|
0007d270  74 65 53 3d 3e 53 57 49  3a 4f 53 5f 57 72 69 74  |teS=>SWI:OS_Writ|
0007d280  65 53 3e 7b 66 7d 2c 20  7b 66 43 6f 64 65 7d 53  |eS>{f}, {fCode}S|
0007d290  57 49 20 30 78 31 32 33  34 34 7b 66 7d 2e 0a 0a  |WI 0x12344{f}...|
0007d2a0  4e 6f 74 65 20 74 68 61  74 20 74 6f 20 73 74 6f  |Note that to sto|
0007d2b0  72 65 20 64 61 74 61 2c  20 76 61 72 69 61 62 6c  |re data, variabl|
0007d2c0  65 73 20 6d 75 73 74 20  62 65 20 75 73 65 64 20  |es must be used |
0007d2d0  2d 20 74 68 65 20 61 73  73 65 6d 62 6c 65 64 20  |- the assembled |
0007d2e0  63 6f 64 65 20 69 73 20  72 65 61 64 2d 6f 6e 6c  |code is read-onl|
0007d2f0  79 2e 20 54 68 69 73 20  69 73 20 6e 6f 74 20 72  |y. This is not r|
0007d300  65 61 6c 6c 79 20 61 20  70 72 6f 62 6c 65 6d 2e  |eally a problem.|
0007d310  2e 2e 0a 0a 54 68 65 20  66 6f 6c 6c 6f 77 69 6e  |....The followin|
0007d320  67 20 70 73 65 75 64 6f  2d 69 6e 73 74 72 75 63  |g pseudo-instruc|
0007d330  74 69 6f 6e 73 20 61 72  65 20 61 76 61 69 6c 61  |tions are availa|
0007d340  62 6c 65 3a 0a 0a 23 69  6e 64 65 6e 74 20 31 30  |ble:..#indent 10|
0007d350  0a 23 54 61 62 6c 65 20  32 20 39 0a 3c 49 4d 50  |.#Table 2 9.<IMP|
0007d360  4f 52 54 3e 0a 3c 45 58  50 4f 52 54 3e 0a 3c 41  |ORT>.<EXPORT>.<A|
0007d370  4c 49 47 4e 3e 0a 3c 44  43 42 3e 0a 3c 44 43 44  |LIGN>.<DCB>.<DCD|
0007d380  3e 0a 3c 41 44 52 3e 0a  3c 4c 44 52 3e 0a 3c 53  |>.<ADR>.<LDR>.<S|
0007d390  54 52 3e 0a 3c 4c 44 46  3e 0a 3c 53 54 46 3e 0a  |TR>.<LDF>.<STF>.|
0007d3a0  23 45 6e 64 54 61 62 6c  65 00 00 00 44 41 54 41  |#EndTable...DATA|
0007d3b0  4c 00 00 00 23 70 72 61  67 6d 61 20 65 6e 64 61  |L...#pragma enda|
0007d3c0  73 6d 0a 54 68 69 73 20  6d 61 72 6b 73 20 74 68  |sm.This marks th|
0007d3d0  65 20 65 6e 64 20 6f 66  20 61 20 73 65 63 74 69  |e end of a secti|
0007d3e0  6f 6e 20 6f 66 20 61 73  73 65 6d 62 6c 79 20 6c  |on of assembly l|
0007d3f0  61 6e 67 75 61 67 65 2e  44 41 54 41 73 02 00 00  |anguage.DATAs...|
0007d400  70 72 69 6e 74 2e 68 0a  54 68 69 73 20 68 65 61  |print.h.This hea|
0007d410  64 65 72 20 66 69 6c 65  20 64 65 63 6c 61 72 65  |der file declare|
0007d420  73 20 66 75 6e 63 74 69  6f 6e 20 61 6e 64 20 74  |s function and t|
0007d430  79 70 65 73 20 66 6f 72  20 61 63 63 65 73 73 69  |ypes for accessi|
0007d440  6e 67 20 52 49 53 43 20  4f 53 20 70 72 69 6e 74  |ng RISC OS print|
0007d450  65 72 20 64 72 69 76 65  72 73 20 66 72 6f 6d 20  |er drivers from |
0007d460  43 2e 0a 0a 46 75 6e 63  74 69 6f 6e 73 3a 0a 0a  |C...Functions:..|
0007d470  23 69 6e 64 65 6e 74 20  38 0a 23 54 61 62 6c 65  |#indent 8.#Table|
0007d480  20 63 6f 6c 75 6d 6e 73  20 32 0a 3c 70 72 69 6e  | columns 2.<prin|
0007d490  74 5f 69 6e 66 6f 3e 0a  3c 70 72 69 6e 74 5f 73  |t_info>.<print_s|
0007d4a0  65 74 69 6e 66 6f 3e 0a  3c 70 72 69 6e 74 5f 63  |etinfo>.<print_c|
0007d4b0  68 65 63 6b 66 65 61 74  75 72 65 73 3e 0a 3c 70  |heckfeatures>.<p|
0007d4c0  72 69 6e 74 5f 70 61 67  65 73 69 7a 65 3e 0a 3c  |rint_pagesize>.<|
0007d4d0  70 72 69 6e 74 5f 73 65  74 70 61 67 65 73 69 7a  |print_setpagesiz|
0007d4e0  65 3e 0a 3c 70 72 69 6e  74 5f 73 65 6c 65 63 74  |e>.<print_select|
0007d4f0  6a 6f 62 3e 0a 3c 70 72  69 6e 74 5f 63 75 72 72  |job>.<print_curr|
0007d500  65 6e 74 6a 6f 62 3e 0a  3c 70 72 69 6e 74 5f 65  |entjob>.<print_e|
0007d510  6e 64 6a 6f 62 3e 0a 3c  70 72 69 6e 74 5f 61 62  |ndjob>.<print_ab|
0007d520  6f 72 74 6a 6f 62 3e 0a  3c 70 72 69 6e 74 5f 63  |ortjob>.<print_c|
0007d530  61 6e 63 65 6c 6a 6f 62  3e 0a 3c 70 72 69 6e 74  |anceljob>.<print|
0007d540  5f 72 65 73 65 74 3e 0a  3c 70 72 69 6e 74 5f 73  |_reset>.<print_s|
0007d550  65 6c 65 63 74 69 6c 6c  75 73 74 72 61 74 69 6f  |electillustratio|
0007d560  6e 3e 0a 3c 70 72 69 6e  74 5f 67 69 76 65 72 65  |n>.<print_givere|
0007d570  63 74 61 6e 67 6c 65 3e  0a 3c 70 72 69 6e 74 5f  |ctangle>.<print_|
0007d580  64 72 61 77 70 61 67 65  3e 0a 3c 70 72 69 6e 74  |drawpage>.<print|
0007d590  5f 67 65 74 72 65 63 74  61 6e 67 6c 65 3e 0a 3c  |_getrectangle>.<|
0007d5a0  70 72 69 6e 74 5f 73 63  72 65 65 6e 64 75 6d 70  |print_screendump|
0007d5b0  3e 0a 23 45 6e 64 54 61  62 6c 65 0a 23 69 6e 64  |>.#EndTable.#ind|
0007d5c0  65 6e 74 0a 0a 54 79 70  65 73 3a 0a 0a 23 69 6e  |ent..Types:..#in|
0007d5d0  64 65 6e 74 20 35 0a 23  54 61 62 6c 65 20 63 6f  |dent 5.#Table co|
0007d5e0  6c 75 6d 6e 73 20 33 0a  3c 70 72 69 6e 74 5f 69  |lumns 3.<print_i|
0007d5f0  64 65 6e 74 69 74 79 3e  0a 3c 70 72 69 6e 74 5f  |dentity>.<print_|
0007d600  66 65 61 74 75 72 65 73  3e 0a 3c 70 72 69 6e 74  |features>.<print|
0007d610  5f 69 6e 66 6f 73 74 72  3e 0a 3c 70 72 69 6e 74  |_infostr>.<print|
0007d620  5f 62 6f 78 3e 0a 3c 70  72 69 6e 74 5f 70 61 67  |_box>.<print_pag|
0007d630  65 73 69 7a 65 73 74 72  3e 0a 3c 70 72 69 6e 74  |esizestr>.<print|
0007d640  5f 74 72 61 6e 73 6d 61  74 73 74 72 3e 0a 3c 70  |_transmatstr>.<p|
0007d650  72 69 6e 74 5f 70 6f 73  69 74 69 6f 6e 73 74 72  |rint_positionstr|
0007d660  3e 0a 23 45 6e 64 54 61  62 6c 65 00 44 49 52 24  |>.#EndTable.DIR$|
0007d670  98 00 00 00 98 00 00 00  04 d7 07 00 46 ff ff ff  |............F...|
0007d680  d0 45 60 25 ab 00 00 00  13 00 00 00 00 00 00 00  |.E`%............|
0007d690  46 58 38 30 00 00 00 00  b0 d7 07 00 46 ff ff ff  |FX80........F...|
0007d6a0  af 53 60 25 b6 00 00 00  13 00 00 00 00 00 00 00  |.S`%............|
0007d6b0  49 4e 54 45 47 52 45 58  00 00 00 00 68 d8 07 00  |INTEGREX....h...|
0007d6c0  46 ff ff ff ea 4d 60 25  b5 00 00 00 13 00 00 00  |F....M`%........|
0007d6d0  00 00 00 00 4c 41 53 45  52 4a 45 54 00 00 00 00  |....LASERJET....|
0007d6e0  20 d9 07 00 46 ff ff ff  d9 40 60 25 bb 00 00 00  | ...F....@`%....|
0007d6f0  13 00 00 00 00 00 00 00  50 4f 53 54 53 43 52 49  |........POSTSCRI|
0007d700  50 54 00 00 44 41 54 41  ab 00 00 00 70 72 69 6e  |PT..DATA....prin|
0007d710  74 64 72 69 76 65 72 5f  46 58 38 30 0a 54 68 65  |tdriver_FX80.The|
0007d720  20 6d 61 63 72 6f 20 7b  2a 7d 70 72 69 6e 74 64  | macro {*}printd|
0007d730  72 69 76 65 72 5f 46 58  38 30 7b 2a 7d 20 69 73  |river_FX80{*} is|
0007d740  20 64 65 66 69 6e 65 64  20 62 79 20 3c 44 65 73  | defined by <Des|
0007d750  6b 4c 69 62 3a 50 44 72  69 76 65 72 2e 68 3d 3e  |kLib:PDriver.h=>|
0007d760  50 44 72 69 76 65 72 3e  2e 20 49 74 20 69 73 20  |PDriver>. It is |
0007d770  74 68 65 20 64 72 69 76  65 72 74 79 70 65 20 6f  |the drivertype o|
0007d780  66 20 3c 70 72 69 6e 74  65 72 5f 69 6e 66 6f 3e  |f <printer_info>|
0007d790  20 72 65 70 72 65 73 65  6e 74 69 6e 67 20 61 6e  | representing an|
0007d7a0  20 45 70 73 6f 6e 20 70  72 69 6e 74 65 72 2e 00  | Epson printer..|
0007d7b0  44 41 54 41 b6 00 00 00  70 72 69 6e 74 64 72 69  |DATA....printdri|
0007d7c0  76 65 72 5f 49 4e 54 45  47 52 45 58 0a 54 68 65  |ver_INTEGREX.The|
0007d7d0  20 6d 61 63 72 6f 20 7b  2a 7d 70 72 69 6e 74 64  | macro {*}printd|
0007d7e0  72 69 76 65 72 5f 49 4e  54 45 47 52 45 58 7b 2a  |river_INTEGREX{*|
0007d7f0  7d 20 69 73 20 64 65 66  69 6e 65 64 20 62 79 20  |} is defined by |
0007d800  3c 44 65 73 6b 4c 69 62  3a 50 44 72 69 76 65 72  |<DeskLib:PDriver|
0007d810  2e 68 3d 3e 50 44 72 69  76 65 72 3e 2e 20 49 74  |.h=>PDriver>. It|
0007d820  20 69 73 20 74 68 65 20  64 72 69 76 65 72 74 79  | is the driverty|
0007d830  70 65 20 6f 66 20 3c 70  72 69 6e 74 65 72 5f 69  |pe of <printer_i|
0007d840  6e 66 6f 3e 20 72 65 70  72 65 73 65 6e 74 69 6e  |nfo> representin|
0007d850  67 20 61 20 43 6f 6c 6f  75 72 4a 65 74 20 70 72  |g a ColourJet pr|
0007d860  69 6e 74 65 72 2e 00 00  44 41 54 41 b5 00 00 00  |inter...DATA....|
0007d870  70 72 69 6e 74 64 72 69  76 65 72 5f 4c 41 53 45  |printdriver_LASE|
0007d880  52 4a 45 54 0a 54 68 65  20 6d 61 63 72 6f 20 7b  |RJET.The macro {|
0007d890  2a 7d 70 72 69 6e 74 64  72 69 76 65 72 5f 4c 41  |*}printdriver_LA|
0007d8a0  53 45 52 4a 45 54 7b 2a  7d 20 69 73 20 64 65 66  |SERJET{*} is def|
0007d8b0  69 6e 65 64 20 62 79 20  3c 44 65 73 6b 4c 69 62  |ined by <DeskLib|
0007d8c0  3a 50 44 72 69 76 65 72  2e 68 3d 3e 50 44 72 69  |:PDriver.h=>PDri|
0007d8d0  76 65 72 3e 2e 20 49 74  20 69 73 20 74 68 65 20  |ver>. It is the |
0007d8e0  64 72 69 76 65 72 74 79  70 65 20 6f 66 20 3c 70  |drivertype of <p|
0007d8f0  72 69 6e 74 65 72 5f 69  6e 66 6f 3e 20 72 65 70  |rinter_info> rep|
0007d900  72 65 73 65 6e 74 69 6e  67 20 61 20 4c 61 73 65  |resenting a Lase|
0007d910  72 4a 65 74 20 70 72 69  6e 74 65 72 2e 00 00 00  |rJet printer....|
0007d920  44 41 54 41 bb 00 00 00  70 72 69 6e 74 64 72 69  |DATA....printdri|
0007d930  76 65 72 5f 50 4f 53 54  53 43 52 49 50 54 0a 54  |ver_POSTSCRIPT.T|
0007d940  68 65 20 6d 61 63 72 6f  20 7b 2a 7d 70 72 69 6e  |he macro {*}prin|
0007d950  74 64 72 69 76 65 72 5f  50 4f 53 54 53 43 52 49  |tdriver_POSTSCRI|
0007d960  50 54 7b 2a 7d 20 69 73  20 64 65 66 69 6e 65 64  |PT{*} is defined|
0007d970  20 62 79 20 3c 44 65 73  6b 4c 69 62 3a 50 44 72  | by <DeskLib:PDr|
0007d980  69 76 65 72 2e 68 3d 3e  50 44 72 69 76 65 72 3e  |iver.h=>PDriver>|
0007d990  2e 20 49 74 20 69 73 20  74 68 65 20 64 72 69 76  |. It is the driv|
0007d9a0  65 72 74 79 70 65 20 6f  66 20 3c 70 72 69 6e 74  |ertype of <print|
0007d9b0  65 72 5f 69 6e 66 6f 3e  20 72 65 70 72 65 73 65  |er_info> represe|
0007d9c0  6e 74 69 6e 67 20 61 20  50 6f 73 74 53 63 72 69  |nting a PostScri|
0007d9d0  70 74 20 70 72 69 6e 74  65 72 2e 00 44 49 52 24  |pt printer..DIR$|
0007d9e0  2c 00 00 00 2c 00 00 00  08 da 07 00 46 ff ff ff  |,...,.......F...|
0007d9f0  d4 8f 60 25 1a 02 00 00  13 00 00 00 00 00 00 00  |..`%............|
0007da00  69 6e 66 6f 00 00 00 00  44 41 54 41 1a 02 00 00  |info....DATA....|
0007da10  70 72 69 6e 74 65 72 5f  69 6e 66 6f 0a 54 68 69  |printer_info.Thi|
0007da20  73 20 73 74 72 75 63 74  75 72 65 20 69 73 20 64  |s structure is d|
0007da30  65 66 69 6e 65 64 20 62  79 20 3c 44 65 73 6b 4c  |efined by <DeskL|
0007da40  69 62 3a 50 44 72 69 76  65 72 2e 68 3d 3e 50 44  |ib:PDriver.h=>PD|
0007da50  72 69 76 65 72 3e 20 61  73 20 61 20 73 74 72 75  |river> as a stru|
0007da60  63 74 75 72 65 20 63 6f  6e 74 61 69 6e 69 6e 67  |cture containing|
0007da70  20 74 68 65 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  | the information|
0007da80  20 72 65 74 75 72 6e 65  64 20 62 79 20 3c 50 44  | returned by <PD|
0007da90  72 69 76 65 72 5f 49 6e  66 6f 3e 2e 0a 0a 20 20  |river_Info>...  |
0007daa0  20 20 5c 7b 0a 20 20 20  20 20 20 20 20 75 6e 73  |  \{.        uns|
0007dab0  69 67 6e 65 64 20 69 6e  74 20 76 65 72 73 69 6f  |igned int versio|
0007dac0  6e 20 3a 20 31 36 3b 0a  20 20 20 20 20 20 20 20  |n : 16;.        |
0007dad0  69 6e 74 20 64 72 69 76  65 72 74 79 70 65 20 3a  |int drivertype :|
0007dae0  20 31 36 3b 0a 20 20 20  20 20 20 20 20 3c 77 69  | 16;.        <wi|
0007daf0  6d 70 5f 70 6f 69 6e 74  3e 20 72 65 73 6f 6c 75  |mp_point> resolu|
0007db00  74 69 6f 6e 3b 0a 20 20  20 20 20 20 20 20 3c 70  |tion;.        <p|
0007db10  72 69 6e 74 5f 66 65 61  74 75 72 65 73 3e 20 66  |rint_features> f|
0007db20  65 61 74 75 72 65 73 3b  0a 20 20 20 20 20 20 20  |eatures;.       |
0007db30  20 63 68 61 72 20 2a 64  65 73 63 72 69 70 74 69  | char *descripti|
0007db40  6f 6e 3b 0a 20 20 20 20  20 20 20 20 77 69 6d 70  |on;.        wimp|
0007db50  5f 70 6f 69 6e 74 20 68  61 6c 66 74 6f 6e 65 5f  |_point halftone_|
0007db60  72 65 73 3b 0a 20 20 20  20 20 20 20 20 69 6e 74  |res;.        int|
0007db70  20 69 64 5f 6e 75 6d 62  65 72 3b 0a 20 20 20 20  | id_number;.    |
0007db80  7d 0a 0a 2f 76 65 72 73  69 6f 6e 2f 20 69 73 20  |}../version/ is |
0007db90  74 68 65 20 76 65 72 73  69 6f 6e 20 6e 75 6d 62  |the version numb|
0007dba0  65 72 20 2a 20 31 30 30  2e 0a 2f 72 65 73 6f 6c  |er * 100../resol|
0007dbb0  75 74 69 6f 6e 2f 20 67  69 76 65 73 20 78 20 61  |ution/ gives x a|
0007dbc0  6e 64 20 79 20 72 65 73  20 69 6e 20 64 70 69 2e  |nd y res in dpi.|
0007dbd0  0a 7b 2f 7d 68 61 6c 66  74 6f 6e 65 5f 72 65 73  |.{/}halftone_res|
0007dbe0  7b 2f 7d 20 69 6e 20 72  65 70 65 61 74 73 20 70  |{/} in repeats p|
0007dbf0  65 72 20 69 6e 63 68 2e  0a 7b 2f 7d 69 64 5f 6e  |er inch..{/}id_n|
0007dc00  75 6d 62 65 72 7b 2f 7d  20 69 73 20 66 6f 72 20  |umber{/} is for |
0007dc10  69 6e 74 65 72 6e 61 6c  20 75 73 65 20 6f 6e 6c  |internal use onl|
0007dc20  79 2e 00 00 44 41 54 41  31 01 00 00 70 72 69 6e  |y...DATA1...prin|
0007dc30  74 66 0a 53 79 6e 74 61  78 3a 09 69 6e 74 20 70  |tf.Syntax:.int p|
0007dc40  72 69 6e 74 66 20 28 63  68 61 72 20 2a 66 6f 72  |rintf (char *for|
0007dc50  6d 61 74 2c 20 2e 2e 2e  29 3b 0a 48 65 61 64 65  |mat, ...);.Heade|
0007dc60  72 3a 09 3c 73 74 64 69  6f 2e 68 3d 3e 73 74 64  |r:.<stdio.h=>std|
0007dc70  69 6f 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 54 68  |io>..Returns:.Th|
0007dc80  65 20 6e 75 6d 62 65 72  20 6f 66 20 63 68 61 72  |e number of char|
0007dc90  61 63 74 65 72 73 20 77  72 69 74 74 65 6e 2c 20  |acters written, |
0007dca0  6f 72 20 61 20 6e 65 67  61 74 69 76 65 20 76 61  |or a negative va|
0007dcb0  6c 75 65 20 69 66 20 74  68 65 72 65 20 77 61 73  |lue if there was|
0007dcc0  20 61 6e 20 65 72 72 6f  72 2e 0a 0a 54 68 69 73  | an error...This|
0007dcd0  20 66 75 6e 63 74 69 6f  6e 20 77 72 69 74 65 73  | function writes|
0007dce0  20 6f 75 74 70 75 74 20  74 6f 20 3c 73 74 64 6f  | output to <stdo|
0007dcf0  75 74 3e 20 75 6e 64 65  72 20 63 6f 6e 74 72 6f  |ut> under contro|
0007dd00  6c 20 6f 66 20 74 68 65  20 3c 66 6f 72 6d 61 74  |l of the <format|
0007dd10  20 73 74 72 69 6e 67 3d  3e 70 66 6f 72 6d 5f 3e  | string=>pform_>|
0007dd20  2e 0a 0a 49 74 20 69 73  20 69 64 65 6e 74 69 63  |...It is identic|
0007dd30  61 6c 20 74 6f 20 3c 66  70 72 69 6e 74 66 3e 28  |al to <fprintf>(|
0007dd40  73 74 64 6f 75 74 2c 20  66 6f 72 6d 61 74 2c 20  |stdout, format, |
0007dd50  2e 2e 2e 29 3b 00 00 00  44 49 52 24 48 01 00 00  |...);...DIR$H...|
0007dd60  48 01 00 00 a0 de 07 00  46 ff ff ff c0 57 60 25  |H.......F....W`%|
0007dd70  c4 00 00 00 13 00 00 00  00 00 00 00 43 4f 4c 4f  |............COLO|
0007dd80  55 52 00 00 64 df 07 00  46 ff ff ff 2d 5d 60 25  |UR..d...F...-]`%|
0007dd90  db 00 00 00 13 00 00 00  00 00 00 00 44 49 53 43  |............DISC|
0007dda0  52 45 54 45 00 00 00 00  40 e0 07 00 46 ff ff ff  |RETE....@...F...|
0007ddb0  65 73 60 25 dd 00 00 00  13 00 00 00 00 00 00 00  |es`%............|
0007ddc0  49 4c 4c 55 53 54 52 41  54 49 4f 4e 53 00 00 00  |ILLUSTRATIONS...|
0007ddd0  20 e1 07 00 46 ff ff ff  74 5a 60 25 d9 00 00 00  | ...F...tZ`%....|
0007dde0  13 00 00 00 00 00 00 00  4c 49 4d 49 54 45 44 00  |........LIMITED.|
0007ddf0  fc e1 07 00 46 ff ff ff  2e 60 60 25 d4 00 00 00  |....F....``%....|
0007de00  13 00 00 00 00 00 00 00  4e 4f 46 49 4c 4c 00 00  |........NOFILL..|
0007de10  d0 e2 07 00 46 ff ff ff  5a 66 60 25 f0 00 00 00  |....F...Zf`%....|
0007de20  13 00 00 00 00 00 00 00  4e 4f 4f 56 45 52 57 52  |........NOOVERWR|
0007de30  49 54 45 00 c0 e3 07 00  46 ff ff ff 7c 63 60 25  |ITE.....F...|c`%|
0007de40  d7 00 00 00 13 00 00 00  00 00 00 00 4e 4f 54 48  |............NOTH|
0007de50  49 43 4b 4e 45 53 53 00  98 e4 07 00 46 ff ff ff  |ICKNESS.....F...|
0007de60  28 6a 60 25 e4 00 00 00  13 00 00 00 00 00 00 00  |(j`%............|
0007de70  53 43 52 45 45 4e 44 55  4d 50 00 00 7c e5 07 00  |SCREENDUMP..|...|
0007de80  46 ff ff ff a7 6e 60 25  22 01 00 00 13 00 00 00  |F....n`%".......|
0007de90  00 00 00 00 54 52 41 4e  53 46 4f 52 4d 53 00 00  |....TRANSFORMS..|
0007dea0  44 41 54 41 c4 00 00 00  70 72 69 6e 74 66 65 61  |DATA....printfea|
0007deb0  74 5f 43 4f 4c 4f 55 52  0a 54 68 69 73 20 6d 61  |t_COLOUR.This ma|
0007dec0  63 72 6f 20 69 73 20 64  65 66 69 6e 65 64 20 62  |cro is defined b|
0007ded0  79 20 3c 44 65 73 6b 4c  69 62 3a 50 44 72 69 76  |y <DeskLib:PDriv|
0007dee0  65 72 2e 68 3d 3e 50 44  72 69 76 65 72 3e 20 61  |er.h=>PDriver> a|
0007def0  73 20 61 20 76 61 6c 75  65 20 72 65 70 72 65 73  |s a value repres|
0007df00  65 6e 74 69 6e 67 20 61  20 62 69 74 20 69 6e 20  |enting a bit in |
0007df10  74 68 65 20 66 65 61 74  75 72 65 73 20 77 6f 72  |the features wor|
0007df20  64 2e 20 49 66 20 73 65  74 2c 20 69 74 20 69 6e  |d. If set, it in|
0007df30  64 69 63 61 74 65 73 20  74 68 61 74 20 74 68 65  |dicates that the|
0007df40  20 70 72 69 6e 74 65 72  20 64 72 69 76 65 72 20  | printer driver |
0007df50  63 61 6e 20 70 72 69 6e  74 20 69 6e 20 63 6f 6c  |can print in col|
0007df60  6f 75 72 2e 44 41 54 41  db 00 00 00 70 72 69 6e  |our.DATA....prin|
0007df70  74 66 65 61 74 5f 44 49  53 43 52 45 54 45 0a 54  |tfeat_DISCRETE.T|
0007df80  68 69 73 20 6d 61 63 72  6f 20 69 73 20 64 65 66  |his macro is def|
0007df90  69 6e 65 64 20 62 79 20  3c 44 65 73 6b 4c 69 62  |ined by <DeskLib|
0007dfa0  3a 50 44 72 69 76 65 72  2e 68 3d 3e 50 44 72 69  |:PDriver.h=>PDri|
0007dfb0  76 65 72 3e 20 61 73 20  61 20 76 61 6c 75 65 20  |ver> as a value |
0007dfc0  72 65 70 72 65 73 65 6e  74 69 6e 67 20 61 20 62  |representing a b|
0007dfd0  69 74 20 69 6e 20 74 68  65 20 66 65 61 74 75 72  |it in the featur|
0007dfe0  65 73 20 77 6f 72 64 2e  20 49 66 20 73 65 74 2c  |es word. If set,|
0007dff0  20 69 74 20 69 6e 64 69  63 61 74 65 73 20 74 68  | it indicates th|
0007e000  61 74 20 74 68 65 20 70  72 69 6e 74 65 72 20 64  |at the printer d|
0007e010  72 69 76 65 72 20 63 61  6e 20 6f 6e 6c 79 20 70  |river can only p|
0007e020  72 69 6e 74 20 61 20 64  69 73 63 72 65 74 65 20  |rint a discrete |
0007e030  73 65 74 20 6f 66 20 63  6f 6c 6f 75 72 73 2e 00  |set of colours..|
0007e040  44 41 54 41 dd 00 00 00  70 72 69 6e 74 66 65 61  |DATA....printfea|
0007e050  74 5f 49 4c 4c 55 53 54  52 41 54 49 4f 4e 53 0a  |t_ILLUSTRATIONS.|
0007e060  54 68 69 73 20 6d 61 63  72 6f 20 69 73 20 64 65  |This macro is de|
0007e070  66 69 6e 65 64 20 62 79  20 3c 44 65 73 6b 4c 69  |fined by <DeskLi|
0007e080  62 3a 50 44 72 69 76 65  72 2e 68 3d 3e 50 44 72  |b:PDriver.h=>PDr|
0007e090  69 76 65 72 3e 20 61 73  20 61 20 76 61 6c 75 65  |iver> as a value|
0007e0a0  20 72 65 70 72 65 73 65  6e 74 69 6e 67 20 61 20  | representing a |
0007e0b0  62 69 74 20 69 6e 20 74  68 65 20 66 65 61 74 75  |bit in the featu|
0007e0c0  72 65 73 20 77 6f 72 64  2e 20 49 66 20 73 65 74  |res word. If set|
0007e0d0  2c 20 69 74 20 69 6e 64  69 63 61 74 65 73 20 74  |, it indicates t|
0007e0e0  68 61 74 20 74 68 65 20  70 72 69 6e 74 65 72 20  |hat the printer |
0007e0f0  64 72 69 76 65 72 20 73  75 70 70 6f 72 74 73 20  |driver supports |
0007e100  3c 50 44 72 69 76 65 72  5f 49 6e 73 65 72 74 49  |<PDriver_InsertI|
0007e110  6c 6c 75 73 74 72 61 74  69 6f 6e 3e 2e 00 00 00  |llustration>....|
0007e120  44 41 54 41 d9 00 00 00  70 72 69 6e 74 66 65 61  |DATA....printfea|
0007e130  74 5f 4c 49 4d 49 54 45  44 0a 54 68 69 73 20 6d  |t_LIMITED.This m|
0007e140  61 63 72 6f 20 69 73 20  64 65 66 69 6e 65 64 20  |acro is defined |
0007e150  62 79 20 3c 44 65 73 6b  4c 69 62 3a 50 44 72 69  |by <DeskLib:PDri|
0007e160  76 65 72 2e 68 3d 3e 50  44 72 69 76 65 72 3e 20  |ver.h=>PDriver> |
0007e170  61 73 20 61 20 76 61 6c  75 65 20 72 65 70 72 65  |as a value repre|
0007e180  73 65 6e 74 69 6e 67 20  61 20 62 69 74 20 69 6e  |senting a bit in|
0007e190  20 74 68 65 20 66 65 61  74 75 72 65 73 20 77 6f  | the features wo|
0007e1a0  72 64 2e 20 49 66 20 73  65 74 2c 20 69 74 20 69  |rd. If set, it i|
0007e1b0  6e 64 69 63 61 74 65 73  20 74 68 61 74 20 74 68  |ndicates that th|
0007e1c0  65 20 70 72 69 6e 74 65  72 20 64 72 69 76 65 72  |e printer driver|
0007e1d0  20 63 61 6e 20 6f 6e 6c  79 20 70 72 69 6e 74 20  | can only print |
0007e1e0  61 20 6c 69 6d 69 74 65  64 20 73 65 74 20 6f 66  |a limited set of|
0007e1f0  20 63 6f 6c 6f 75 72 73  2e 00 00 00 44 41 54 41  | colours....DATA|
0007e200  d4 00 00 00 70 72 69 6e  74 66 65 61 74 5f 4e 4f  |....printfeat_NO|
0007e210  46 49 4c 4c 0a 54 68 69  73 20 6d 61 63 72 6f 20  |FILL.This macro |
0007e220  69 73 20 64 65 66 69 6e  65 64 20 62 79 20 3c 44  |is defined by <D|
0007e230  65 73 6b 4c 69 62 3a 50  44 72 69 76 65 72 2e 68  |eskLib:PDriver.h|
0007e240  3d 3e 50 44 72 69 76 65  72 3e 20 61 73 20 61 20  |=>PDriver> as a |
0007e250  76 61 6c 75 65 20 72 65  70 72 65 73 65 6e 74 69  |value representi|
0007e260  6e 67 20 61 20 62 69 74  20 69 6e 20 74 68 65 20  |ng a bit in the |
0007e270  66 65 61 74 75 72 65 73  20 77 6f 72 64 2e 20 49  |features word. I|
0007e280  66 20 73 65 74 2c 20 69  74 20 69 6e 64 69 63 61  |f set, it indica|
0007e290  74 65 73 20 74 68 61 74  20 74 68 65 20 70 72 69  |tes that the pri|
0007e2a0  6e 74 65 72 20 64 72 69  76 65 72 20 63 61 6e 27  |nter driver can'|
0007e2b0  74 20 68 61 6e 64 6c 65  20 66 69 6c 6c 65 64 20  |t handle filled |
0007e2c0  73 68 61 70 65 73 20 70  72 6f 70 65 72 6c 79 2e  |shapes properly.|
0007e2d0  44 41 54 41 f0 00 00 00  70 72 69 6e 74 66 65 61  |DATA....printfea|
0007e2e0  74 5f 4e 4f 4f 56 45 52  57 52 49 54 45 0a 54 68  |t_NOOVERWRITE.Th|
0007e2f0  69 73 20 6d 61 63 72 6f  20 69 73 20 64 65 66 69  |is macro is defi|
0007e300  6e 65 64 20 62 79 20 3c  44 65 73 6b 4c 69 62 3a  |ned by <DeskLib:|
0007e310  50 44 72 69 76 65 72 2e  68 3d 3e 50 44 72 69 76  |PDriver.h=>PDriv|
0007e320  65 72 3e 20 61 73 20 61  20 76 61 6c 75 65 20 72  |er> as a value r|
0007e330  65 70 72 65 73 65 6e 74  69 6e 67 20 61 20 62 69  |epresenting a bi|
0007e340  74 20 69 6e 20 74 68 65  20 66 65 61 74 75 72 65  |t in the feature|
0007e350  73 20 77 6f 72 64 2e 20  49 66 20 73 65 74 2c 20  |s word. If set, |
0007e360  69 74 20 69 6e 64 69 63  61 74 65 73 20 74 68 61  |it indicates tha|
0007e370  74 20 74 68 65 20 70 72  69 6e 74 65 72 20 64 72  |t the printer dr|
0007e380  69 76 65 72 20 63 61 6e  27 74 20 68 61 6e 64 6c  |iver can't handl|
0007e390  65 20 6f 76 65 72 77 72  69 74 69 6e 67 20 6f 66  |e overwriting of|
0007e3a0  20 6f 6e 65 20 63 6f 6c  6f 75 72 20 62 79 20 61  | one colour by a|
0007e3b0  6e 6f 74 68 65 72 20 70  72 6f 70 65 72 6c 79 2e  |nother properly.|
0007e3c0  44 41 54 41 d7 00 00 00  70 72 69 6e 74 66 65 61  |DATA....printfea|
0007e3d0  74 5f 4e 4f 54 48 49 43  4b 4e 45 53 53 0a 54 68  |t_NOTHICKNESS.Th|
0007e3e0  69 73 20 6d 61 63 72 6f  20 69 73 20 64 65 66 69  |is macro is defi|
0007e3f0  6e 65 64 20 62 79 20 3c  44 65 73 6b 4c 69 62 3a  |ned by <DeskLib:|
0007e400  50 44 72 69 76 65 72 2e  68 3d 3e 50 44 72 69 76  |PDriver.h=>PDriv|
0007e410  65 72 3e 20 61 73 20 61  20 76 61 6c 75 65 20 72  |er> as a value r|
0007e420  65 70 72 65 73 65 6e 74  69 6e 67 20 61 20 62 69  |epresenting a bi|
0007e430  74 20 69 6e 20 74 68 65  20 66 65 61 74 75 72 65  |t in the feature|
0007e440  73 20 77 6f 72 64 2e 20  49 66 20 73 65 74 2c 20  |s word. If set, |
0007e450  69 74 20 69 6e 64 69 63  61 74 65 73 20 74 68 61  |it indicates tha|
0007e460  74 20 74 68 65 20 70 72  69 6e 74 65 72 20 64 72  |t the printer dr|
0007e470  69 76 65 72 20 63 61 6e  27 74 20 68 61 6e 64 6c  |iver can't handl|
0007e480  65 20 74 68 69 63 6b 20  6c 69 6e 65 73 20 70 72  |e thick lines pr|
0007e490  6f 70 65 72 6c 79 2e 00  44 41 54 41 e4 00 00 00  |operly..DATA....|
0007e4a0  70 72 69 6e 74 66 65 61  74 5f 53 43 52 45 45 4e  |printfeat_SCREEN|
0007e4b0  44 55 4d 50 0a 54 68 69  73 20 6d 61 63 72 6f 20  |DUMP.This macro |
0007e4c0  69 73 20 64 65 66 69 6e  65 64 20 62 79 20 3c 44  |is defined by <D|
0007e4d0  65 73 6b 4c 69 62 3a 50  44 72 69 76 65 72 2e 68  |eskLib:PDriver.h|
0007e4e0  3d 3e 50 44 72 69 76 65  72 3e 20 61 73 20 61 20  |=>PDriver> as a |
0007e4f0  76 61 6c 75 65 20 72 65  70 72 65 73 65 6e 74 69  |value representi|
0007e500  6e 67 20 61 20 62 69 74  20 69 6e 20 74 68 65 20  |ng a bit in the |
0007e510  66 65 61 74 75 72 65 73  20 77 6f 72 64 2e 20 49  |features word. I|
0007e520  66 20 73 65 74 2c 20 69  74 20 69 6e 64 69 63 61  |f set, it indica|
0007e530  74 65 73 20 74 68 61 74  20 74 68 65 20 70 72 69  |tes that the pri|
0007e540  6e 74 65 72 20 64 72 69  76 65 72 20 73 75 70 70  |nter driver supp|
0007e550  6f 72 74 73 20 73 63 72  65 65 6e 20 64 75 6d 70  |orts screen dump|
0007e560  73 20 77 69 74 68 20 3c  50 44 72 69 76 65 72 5f  |s with <PDriver_|
0007e570  53 63 72 65 65 6e 44 75  6d 70 3e 2e 44 41 54 41  |ScreenDump>.DATA|
0007e580  22 01 00 00 70 72 69 6e  74 66 65 61 74 5f 54 52  |"...printfeat_TR|
0007e590  41 4e 53 46 4f 52 4d 53  0a 54 68 69 73 20 6d 61  |ANSFORMS.This ma|
0007e5a0  63 72 6f 20 69 73 20 64  65 66 69 6e 65 64 20 62  |cro is defined b|
0007e5b0  79 20 3c 44 65 73 6b 4c  69 62 3a 50 44 72 69 76  |y <DeskLib:PDriv|
0007e5c0  65 72 2e 68 3d 3e 50 44  72 69 76 65 72 3e 20 61  |er.h=>PDriver> a|
0007e5d0  73 20 61 20 76 61 6c 75  65 20 72 65 70 72 65 73  |s a value repres|
0007e5e0  65 6e 74 69 6e 67 20 61  20 62 69 74 20 69 6e 20  |enting a bit in |
0007e5f0  74 68 65 20 66 65 61 74  75 72 65 73 20 77 6f 72  |the features wor|
0007e600  64 2e 20 49 66 20 63 6c  65 61 72 2c 20 69 74 20  |d. If clear, it |
0007e610  69 6e 64 69 63 61 74 65  73 20 74 68 61 74 20 74  |indicates that t|
0007e620  68 65 20 70 72 69 6e 74  65 72 20 64 72 69 76 65  |he printer drive|
0007e630  72 20 64 6f 65 73 20 6e  6f 74 20 73 75 70 70 6f  |r does not suppo|
0007e640  72 74 20 61 6e 79 20 74  72 61 6e 73 66 6f 72 6d  |rt any transform|
0007e650  61 74 69 6f 6e 73 20 65  78 63 65 70 74 20 73 63  |ations except sc|
0007e660  61 6c 69 6e 67 73 2c 20  74 72 61 6e 73 6c 61 74  |alings, translat|
0007e670  69 6f 6e 73 20 61 6e 64  20 72 6f 74 61 74 69 6f  |ions and rotatio|
0007e680  6e 73 20 62 79 20 6d 75  6c 74 69 70 6c 65 73 20  |ns by multiples |
0007e690  6f 66 20 39 30 20 64 65  67 72 65 65 73 2e 00 00  |of 90 degrees...|
0007e6a0  44 49 52 24 a8 03 00 00  a8 03 00 00 48 ea 07 00  |DIR$........H...|
0007e6b0  46 ff ff ff 54 e7 b4 24  4c 01 00 00 13 00 00 00  |F...T..$L.......|
0007e6c0  00 00 00 00 61 62 6f 72  74 6a 6f 62 00 00 00 00  |....abortjob....|
0007e6d0  94 eb 07 00 46 ff ff ff  23 89 b5 24 91 00 00 00  |....F...#..$....|
0007e6e0  13 00 00 00 00 00 00 00  62 6f 78 00 28 ec 07 00  |........box.(...|
0007e6f0  46 ff ff ff 95 ed b4 24  61 01 00 00 13 00 00 00  |F......$a.......|
0007e700  00 00 00 00 63 61 6e 63  65 6c 6a 6f 62 00 00 00  |....canceljob...|
0007e710  8c ed 07 00 46 ff ff ff  81 a8 b4 24 e5 01 00 00  |....F......$....|
0007e720  13 00 00 00 00 00 00 00  63 68 65 63 6b 66 65 61  |........checkfea|
0007e730  74 75 72 65 73 00 00 00  74 ef 07 00 46 ff ff ff  |tures...t...F...|
0007e740  29 dc b4 24 2d 01 00 00  13 00 00 00 00 00 00 00  |)..$-...........|
0007e750  63 75 72 72 65 6e 74 6a  6f 62 00 00 a4 f0 07 00  |currentjob......|
0007e760  46 ff ff ff c1 2d b5 24  4c 03 00 00 13 00 00 00  |F....-.$L.......|
0007e770  00 00 00 00 64 72 61 77  70 61 67 65 00 00 00 00  |....drawpage....|
0007e780  f0 f3 07 00 46 ff ff ff  ed e1 b4 24 0d 01 00 00  |....F......$....|
0007e790  13 00 00 00 00 00 00 00  65 6e 64 6a 6f 62 00 00  |........endjob..|
0007e7a0  00 f5 07 00 46 ff ff ff  eb 65 b5 24 40 03 00 00  |....F....e.$@...|
0007e7b0  13 00 00 00 00 00 00 00  66 65 61 74 75 72 65 73  |........features|
0007e7c0  00 00 00 00 40 f8 07 00  46 fd ff ff f8 77 b5 24  |....@...F....w.$|
0007e7d0  1e 01 00 00 13 00 00 00  00 00 00 00 66 65 61 74  |............feat|
0007e7e0  75 72 65 73 5f 00 00 00  60 f9 07 00 46 ff ff ff  |ures_...`...F...|
0007e7f0  23 46 b5 24 13 02 00 00  13 00 00 00 00 00 00 00  |#F.$............|
0007e800  67 65 74 72 65 63 74 61  6e 67 6c 65 00 00 00 00  |getrectangle....|
0007e810  74 fb 07 00 46 ff ff ff  60 14 b5 24 df 02 00 00  |t...F...`..$....|
0007e820  13 00 00 00 00 00 00 00  67 69 76 65 72 65 63 74  |........giverect|
0007e830  61 6e 67 6c 65 00 00 00  54 fe 07 00 46 ff ff ff  |angle...T...F...|
0007e840  9a 54 b5 24 e7 00 00 00  13 00 00 00 00 00 00 00  |.T.$............|
0007e850  69 64 65 6e 74 69 74 79  00 00 00 00 3c ff 07 00  |identity....<...|
0007e860  46 ff ff ff ae 92 b4 24  63 01 00 00 13 00 00 00  |F......$c.......|
0007e870  00 00 00 00 69 6e 66 6f  00 00 00 00 a0 00 08 00  |....info........|
0007e880  46 ff ff ff e2 82 b5 24  e9 01 00 00 13 00 00 00  |F......$........|
0007e890  00 00 00 00 69 6e 66 6f  73 74 72 00 8c 02 08 00  |....infostr.....|
0007e8a0  46 ff ff ff 6d 79 60 25  aa 00 00 00 13 00 00 00  |F...my`%........|
0007e8b0  00 00 00 00 6a 6f 62 00  38 03 08 00 46 ff ff ff  |....job.8...F...|
0007e8c0  50 b2 b4 24 63 01 00 00  13 00 00 00 00 00 00 00  |P..$c...........|
0007e8d0  70 61 67 65 73 69 7a 65  00 00 00 00 9c 04 08 00  |pagesize........|
0007e8e0  46 ff ff ff 61 90 b5 24  09 01 00 00 13 00 00 00  |F...a..$........|
0007e8f0  00 00 00 00 70 61 67 65  73 69 7a 65 73 74 72 00  |....pagesizestr.|
0007e900  a8 05 08 00 46 ff ff ff  81 a2 b5 24 92 00 00 00  |....F......$....|
0007e910  13 00 00 00 00 00 00 00  70 6f 73 69 74 69 6f 6e  |........position|
0007e920  73 74 72 00 3c 06 08 00  46 ff ff ff f3 f0 b4 24  |str.<...F......$|
0007e930  a9 00 00 00 13 00 00 00  00 00 00 00 72 65 73 65  |............rese|
0007e940  74 00 00 00 e8 06 08 00  46 ff ff ff 89 4e b5 24  |t.......F....N.$|
0007e950  69 01 00 00 13 00 00 00  00 00 00 00 73 63 72 65  |i...........scre|
0007e960  65 6e 64 75 6d 70 00 00  54 08 08 00 46 ff ff ff  |endump..T...F...|
0007e970  f9 f8 b4 24 7f 01 00 00  13 00 00 00 00 00 00 00  |...$............|
0007e980  73 65 6c 65 63 74 69 6c  6c 75 73 74 72 61 74 69  |selectillustrati|
0007e990  6f 6e 00 00 d4 09 08 00  46 ff ff ff 3d cf b4 24  |on......F...=..$|
0007e9a0  3a 02 00 00 13 00 00 00  00 00 00 00 73 65 6c 65  |:...........sele|
0007e9b0  63 74 6a 6f 62 00 00 00  10 0c 08 00 46 ff ff ff  |ctjob.......F...|
0007e9c0  3b 99 b4 24 52 01 00 00  13 00 00 00 00 00 00 00  |;..$R...........|
0007e9d0  73 65 74 69 6e 66 6f 00  64 0d 08 00 46 ff ff ff  |setinfo.d...F...|
0007e9e0  9d bb b4 24 5f 01 00 00  13 00 00 00 00 00 00 00  |...$_...........|
0007e9f0  73 65 74 70 61 67 65 73  69 7a 65 00 c4 0e 08 00  |setpagesize.....|
0007ea00  46 ff ff ff 99 81 60 25  4b 01 00 00 13 00 00 00  |F.....`%K.......|
0007ea10  00 00 00 00 74 72 61 6e  73 66 6f 72 6d 61 74 69  |....transformati|
0007ea20  6f 6e 00 00 10 10 08 00  46 ff ff ff 8d 9e b5 24  |on......F......$|
0007ea30  58 01 00 00 13 00 00 00  00 00 00 00 74 72 61 6e  |X...........tran|
0007ea40  73 6d 61 74 73 74 72 00  44 41 54 41 4c 01 00 00  |smatstr.DATAL...|
0007ea50  70 72 69 6e 74 5f 61 62  6f 72 74 6a 6f 62 0a 53  |print_abortjob.S|
0007ea60  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
0007ea70  3e 20 2a 70 72 69 6e 74  5f 61 62 6f 72 74 6a 6f  |> *print_abortjo|
0007ea80  62 20 28 69 6e 74 20 6a  6f 62 29 3b 0a 48 65 61  |b (int job);.Hea|
0007ea90  64 65 72 3a 09 3c 70 72  69 6e 74 2e 68 3d 3e 70  |der:.<print.h=>p|
0007eaa0  72 69 6e 74 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |rint>..Returns:.|
0007eab0  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
0007eac0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
0007ead0  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
0007eae0  69 6f 6e 20 65 6e 64 73  20 61 20 70 72 69 6e 74  |ion ends a print|
0007eaf0  20 6a 6f 62 20 61 62 6e  6f 72 6d 61 6c 6c 79 2e  | job abnormally.|
0007eb00  20 49 74 20 73 68 6f 75  6c 64 20 62 65 20 63 61  | It should be ca|
0007eb10  6c 6c 65 64 20 69 6d 6d  65 64 69 61 74 65 6c 79  |lled immediately|
0007eb20  20 79 6f 75 20 67 65 74  20 61 6e 20 65 72 72 6f  | you get an erro|
0007eb30  72 20 77 68 69 6c 65 20  70 72 69 6e 74 69 6e 67  |r while printing|
0007eb40  20 28 65 76 65 6e 20 62  65 66 6f 72 65 20 73 68  | (even before sh|
0007eb50  6f 77 69 6e 67 20 61 6e  20 65 72 72 6f 72 20 6d  |owing an error m|
0007eb60  65 73 73 61 67 65 29 2e  20 4e 6f 20 66 75 72 74  |essage). No furt|
0007eb70  68 65 72 20 70 72 69 6e  74 65 72 20 6f 75 74 70  |her printer outp|
0007eb80  75 74 20 77 69 6c 6c 20  62 65 20 70 72 6f 64 75  |ut will be produ|
0007eb90  63 65 64 2e 44 41 54 41  91 00 00 00 70 72 69 6e  |ced.DATA....prin|
0007eba0  74 5f 62 6f 78 0a 54 68  69 73 20 74 79 70 65 20  |t_box.This type |
0007ebb0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 70  |is defined in <p|
0007ebc0  72 69 6e 74 2e 68 3d 3e  70 72 69 6e 74 3e 2e 20  |rint.h=>print>. |
0007ebd0  49 74 20 69 73 20 61 20  73 74 72 75 63 74 75 72  |It is a structur|
0007ebe0  65 20 63 6f 6e 74 61 69  6e 69 6e 67 20 61 6e 20  |e containing an |
0007ebf0  61 62 69 74 72 61 72 79  20 72 65 63 74 61 6e 67  |abitrary rectang|
0007ec00  6c 65 2e 0a 0a 20 20 5c  7b 0a 20 20 20 20 69 6e  |le...  \{.    in|
0007ec10  74 20 78 30 2c 20 79 30  2c 20 78 31 2c 20 79 31  |t x0, y0, x1, y1|
0007ec20  3b 0a 20 20 7d 00 00 00  44 41 54 41 61 01 00 00  |;.  }...DATAa...|
0007ec30  70 72 69 6e 74 5f 63 61  6e 63 65 6c 6a 6f 62 0a  |print_canceljob.|
0007ec40  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
0007ec50  72 3e 20 2a 70 72 69 6e  74 5f 63 61 6e 63 65 6c  |r> *print_cancel|
0007ec60  6a 6f 62 20 28 69 6e 74  20 6a 6f 62 29 3b 0a 48  |job (int job);.H|
0007ec70  65 61 64 65 72 3a 09 3c  70 72 69 6e 74 2e 68 3d  |eader:.<print.h=|
0007ec80  3e 70 72 69 6e 74 3e 0a  0a 52 65 74 75 72 6e 73  |>print>..Returns|
0007ec90  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
0007eca0  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
0007ecb0  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
0007ecc0  63 74 69 6f 6e 20 63 61  75 73 65 73 20 73 75 62  |ction causes sub|
0007ecd0  73 65 71 75 65 6e 74 20  61 74 74 65 6d 70 74 73  |sequent attempts|
0007ece0  20 74 6f 20 6f 75 74 70  75 74 20 74 6f 20 74 68  | to output to th|
0007ecf0  65 20 70 72 69 6e 74 20  6a 6f 62 20 67 69 76 65  |e print job give|
0007ed00  6e 20 74 6f 20 64 6f 20  6e 6f 74 68 69 6e 67 20  |n to do nothing |
0007ed10  6f 74 68 65 72 20 74 68  61 6e 20 67 65 6e 65 72  |other than gener|
0007ed20  61 74 65 20 74 68 65 20  65 72 72 6f 72 20 27 50  |ate the error 'P|
0007ed30  72 69 6e 74 20 63 61 6e  63 65 6c 6c 65 64 27 2e  |rint cancelled'.|
0007ed40  20 41 6e 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  | An application |
0007ed50  69 73 20 65 78 70 65 63  74 65 64 20 74 6f 20 72  |is expected to r|
0007ed60  65 73 70 6f 6e 64 20 74  6f 20 74 68 69 73 20 62  |espond to this b|
0007ed70  79 20 61 62 6f 72 74 69  6e 67 20 74 68 65 20 70  |y aborting the p|
0007ed80  72 69 6e 74 20 6a 6f 62  2e 00 00 00 44 41 54 41  |rint job....DATA|
0007ed90  e5 01 00 00 70 72 69 6e  74 5f 63 68 65 63 6b 66  |....print_checkf|
0007eda0  65 61 74 75 72 65 73 0a  53 79 6e 74 61 78 3a 09  |eatures.Syntax:.|
0007edb0  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 70 72 69 6e  |<os_error> *prin|
0007edc0  74 5f 63 68 65 63 6b 66  65 61 74 75 72 65 73 20  |t_checkfeatures |
0007edd0  28 69 6e 74 20 6d 61 73  6b 2c 20 69 6e 74 20 76  |(int mask, int v|
0007ede0  61 6c 75 65 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |alue);.Header:.<|
0007edf0  70 72 69 6e 74 2e 68 3d  3e 70 72 69 6e 74 3e 0a  |print.h=>print>.|
0007ee00  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
0007ee10  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
0007ee20  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
0007ee30  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 63 68  |This function ch|
0007ee40  65 63 6b 73 20 74 68 65  20 66 65 61 74 75 72 65  |ecks the feature|
0007ee50  73 20 6f 66 20 61 20 70  72 69 6e 74 65 72 2e 20  |s of a printer. |
0007ee60  49 66 20 74 68 6f 73 65  20 62 69 74 73 20 77 68  |If those bits wh|
0007ee70  69 63 68 20 61 72 65 20  73 65 74 20 69 6e 20 2f  |ich are set in /|
0007ee80  6d 61 73 6b 2f 20 68 61  76 65 20 74 68 65 20 73  |mask/ have the s|
0007ee90  61 6d 65 20 76 61 6c 75  65 73 20 69 6e 20 62 6f  |ame values in bo|
0007eea0  74 68 20 74 68 65 20 63  75 72 72 65 6e 74 20 70  |th the current p|
0007eeb0  72 69 6e 74 65 72 27 73  20 66 65 61 74 75 72 65  |rinter's feature|
0007eec0  73 20 61 6e 64 20 69 6e  20 2f 76 61 6c 75 65 2f  |s and in /value/|
0007eed0  20 74 68 65 6e 20 6e 6f  20 65 72 72 6f 72 20 69  | then no error i|
0007eee0  73 20 67 65 6e 65 72 61  74 65 64 2e 20 69 65 20  |s generated. ie |
0007eef0  69 66 20 74 68 65 20 63  75 72 72 65 6e 74 20 70  |if the current p|
0007ef00  72 69 6e 74 65 72 20 64  72 69 76 65 72 27 73 20  |rinter driver's |
0007ef10  66 65 61 74 75 72 65 73  20 61 72 65 20 63 61 6c  |features are cal|
0007ef20  6c 65 64 20 2f 66 65 61  74 2f 2c 20 74 68 69 73  |led /feat/, this|
0007ef30  20 66 75 6e 63 74 69 6f  6e 20 63 68 65 63 6b 73  | function checks|
0007ef40  20 74 68 61 74 3a 0a 0a  7b 61 6c 69 67 6e 20 63  | that:..{align c|
0007ef50  65 6e 74 72 65 7d 66 65  61 74 20 26 20 6d 61 73  |entre}feat & mas|
0007ef60  6b 20 3d 3d 20 76 61 6c  75 65 20 26 20 6d 61 73  |k == value & mas|
0007ef70  6b 00 00 00 44 41 54 41  2d 01 00 00 70 72 69 6e  |k...DATA-...prin|
0007ef80  74 5f 63 75 72 72 65 6e  74 6a 6f 62 0a 53 79 6e  |t_currentjob.Syn|
0007ef90  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
0007efa0  2a 70 72 69 6e 74 5f 63  75 72 72 65 6e 74 6a 6f  |*print_currentjo|
0007efb0  62 20 28 69 6e 74 20 2a  63 75 72 72 65 6e 74 29  |b (int *current)|
0007efc0  3b 0a 48 65 61 64 65 72  3a 09 3c 70 72 69 6e 74  |;.Header:.<print|
0007efd0  2e 68 3d 3e 70 72 69 6e  74 3e 0a 0a 52 65 74 75  |.h=>print>..Retu|
0007efe0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
0007eff0  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
0007f000  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
0007f010  66 75 6e 63 74 69 6f 6e  20 67 65 74 73 20 74 68  |function gets th|
0007f020  65 20 66 69 6c 65 20 68  61 6e 64 6c 65 20 6f 66  |e file handle of|
0007f030  20 74 68 65 20 63 75 72  72 65 6e 74 20 6a 6f 62  | the current job|
0007f040  20 61 6e 64 20 73 74 6f  72 65 73 20 69 74 20 69  | and stores it i|
0007f050  6e 20 74 68 65 20 76 61  72 69 61 62 6c 65 20 70  |n the variable p|
0007f060  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 2f 63 75  |ointed to by /cu|
0007f070  72 72 65 6e 74 2f 2e 20  5a 65 72 6f 20 69 73 20  |rrent/. Zero is |
0007f080  73 74 6f 72 65 64 20 69  66 20 6e 6f 20 70 72 69  |stored if no pri|
0007f090  6e 74 20 6a 6f 62 20 69  73 20 61 63 74 69 76 65  |nt job is active|
0007f0a0  2e 00 00 00 44 41 54 41  4c 03 00 00 70 72 69 6e  |....DATAL...prin|
0007f0b0  74 5f 64 72 61 77 70 61  67 65 0a 53 79 6e 74 61  |t_drawpage.Synta|
0007f0c0  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 70  |x:.<os_error> *p|
0007f0d0  72 69 6e 74 5f 64 72 61  77 70 61 67 65 20 28 69  |rint_drawpage (i|
0007f0e0  6e 74 20 63 6f 70 69 65  73 2c 20 69 6e 74 20 73  |nt copies, int s|
0007f0f0  65 71 2c 20 63 68 61 72  20 2a 70 61 67 65 2c 20  |eq, char *page, |
0007f100  3c 70 72 69 6e 74 5f 62  6f 78 3e 20 2a 72 65 63  |<print_box> *rec|
0007f110  74 2c 20 69 6e 74 20 2a  66 69 6e 69 73 68 2c 20  |t, int *finish, |
0007f120  69 6e 74 20 2a 72 65 63  74 5f 69 64 29 3b 0a 48  |int *rect_id);.H|
0007f130  65 61 64 65 72 3a 09 3c  70 72 69 6e 74 2e 68 3d  |eader:.<print.h=|
0007f140  3e 70 72 69 6e 74 3e 0a  0a 52 65 74 75 72 6e 73  |>print>..Returns|
0007f150  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
0007f160  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
0007f170  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
0007f180  63 74 69 6f 6e 20 73 68  6f 75 6c 64 20 62 65 20  |ction should be |
0007f190  63 61 6c 6c 65 64 20 61  66 74 65 72 20 61 6c 6c  |called after all|
0007f1a0  20 72 65 63 74 61 6e 67  6c 65 73 20 68 61 76 65  | rectangles have|
0007f1b0  20 62 65 65 6e 20 73 70  65 63 69 66 69 65 64 20  | been specified |
0007f1c0  75 73 69 6e 67 20 3c 70  72 69 6e 74 5f 67 69 76  |using <print_giv|
0007f1d0  65 72 65 63 74 61 6e 67  6c 65 3e 2e 20 2f 63 6f  |erectangle>. /co|
0007f1e0  70 69 65 73 2f 20 63 6f  6e 74 61 69 6e 73 20 74  |pies/ contains t|
0007f1f0  68 65 20 6e 75 6d 62 65  72 20 6f 66 20 63 6f 70  |he number of cop|
0007f200  69 65 73 20 74 6f 20 70  72 69 6e 74 2c 20 2f 73  |ies to print, /s|
0007f210  65 71 2f 20 73 68 6f 75  6c 64 20 62 65 20 7a 65  |eq/ should be ze|
0007f220  72 6f 2c 20 6f 72 20 63  6f 6e 74 61 69 6e 20 74  |ro, or contain t|
0007f230  68 65 20 70 61 67 65 20  6e 75 6d 62 65 72 2c 20  |he page number, |
0007f240  2f 70 61 67 65 2f 20 73  68 6f 75 6c 64 20 62 65  |/page/ should be|
0007f250  20 3c 4e 55 4c 4c 3e 20  6f 72 20 67 69 76 65 20  | <NULL> or give |
0007f260  74 68 65 20 70 61 67 65  20 6e 75 6d 62 65 72 20  |the page number |
0007f270  69 6e 20 74 65 78 74 20  66 6f 72 6d 2e 0a 0a 4f  |in text form...O|
0007f280  6e 20 72 65 74 75 72 6e  2c 20 2f 72 65 63 74 2f  |n return, /rect/|
0007f290  20 63 6f 6e 74 61 69 6e  73 20 74 68 65 20 72 65  | contains the re|
0007f2a0  63 74 61 6e 67 6c 65 20  74 6f 20 62 65 20 70 72  |ctangle to be pr|
0007f2b0  69 6e 74 65 64 20 28 69  6e 20 4f 53 20 75 6e 69  |inted (in OS uni|
0007f2c0  74 73 29 20 5f 77 69 74  68 69 6e 5f 20 74 68 65  |ts) _within_ the|
0007f2d0  20 72 65 63 74 61 6e 67  6c 65 20 77 68 6f 73 65  | rectangle whose|
0007f2e0  20 69 64 20 69 73 20 72  65 74 75 72 6e 65 64 20  | id is returned |
0007f2f0  69 6e 20 7b 2f 7d 72 65  63 74 5f 69 64 7b 2f 7d  |in {/}rect_id{/}|
0007f300  2e 20 2f 66 69 6e 69 73  68 2f 20 63 6f 6e 74 61  |. /finish/ conta|
0007f310  69 6e 73 20 74 68 65 20  6e 75 6d 62 65 72 20 6f  |ins the number o|
0007f320  66 20 63 6f 70 69 65 73  20 73 74 69 6c 6c 20 74  |f copies still t|
0007f330  6f 20 62 65 20 70 72 69  6e 74 65 64 20 68 65 6e  |o be printed hen|
0007f340  63 65 20 69 74 20 69 73  20 7a 65 72 6f 20 77 68  |ce it is zero wh|
0007f350  65 6e 20 74 68 65 20 6a  6f 62 20 69 73 20 66 69  |en the job is fi|
0007f360  6e 69 73 68 65 64 2e 0a  0a 41 66 74 65 72 20 70  |nished...After p|
0007f370  6c 6f 74 74 69 6e 67 20  74 68 65 20 70 61 67 65  |lotting the page|
0007f380  20 75 73 69 6e 67 20 6e  6f 72 6d 61 6c 20 70 6c  | using normal pl|
0007f390  6f 74 74 69 6e 67 20 72  6f 75 74 69 6e 65 73 20  |otting routines |
0007f3a0  28 77 68 69 63 68 20 74  68 65 20 70 72 69 6e 74  |(which the print|
0007f3b0  65 72 20 64 72 69 76 65  72 20 77 69 6c 6c 20 69  |er driver will i|
0007f3c0  6e 74 65 72 63 65 70 74  29 2c 20 79 6f 75 20 73  |ntercept), you s|
0007f3d0  68 6f 75 6c 64 20 63 61  6c 6c 20 3c 70 72 69 6e  |hould call <prin|
0007f3e0  74 5f 67 65 74 72 65 63  74 61 6e 67 6c 65 3e 2e  |t_getrectangle>.|
0007f3f0  44 41 54 41 0d 01 00 00  70 72 69 6e 74 5f 65 6e  |DATA....print_en|
0007f400  64 6a 6f 62 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |djob.Syntax:.<os|
0007f410  5f 65 72 72 6f 72 3e 20  2a 70 72 69 6e 74 5f 65  |_error> *print_e|
0007f420  6e 64 6a 6f 62 20 28 69  6e 74 20 6a 6f 62 29 3b  |ndjob (int job);|
0007f430  0a 48 65 61 64 65 72 3a  09 3c 70 72 69 6e 74 2e  |.Header:.<print.|
0007f440  68 3d 3e 70 72 69 6e 74  3e 0a 0a 52 65 74 75 72  |h=>print>..Retur|
0007f450  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
0007f460  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
0007f470  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
0007f480  75 6e 63 74 69 6f 6e 20  65 6e 64 73 20 61 20 70  |unction ends a p|
0007f490  72 69 6e 74 20 6a 6f 62  20 6e 6f 72 6d 61 6c 6c  |rint job normall|
0007f4a0  79 2e 20 54 68 69 73 20  6d 61 79 20 72 65 73 75  |y. This may resu|
0007f4b0  6c 74 20 69 6e 20 66 75  72 74 68 65 72 20 70 72  |lt in further pr|
0007f4c0  69 6e 74 65 72 20 6f 75  74 70 75 74 20 28 61 20  |inter output (a |
0007f4d0  50 6f 73 74 53 63 72 69  70 74 20 70 72 69 6e 74  |PostScript print|
0007f4e0  65 72 20 64 72 69 76 65  72 20 6f 75 74 70 75 74  |er driver output|
0007f4f0  73 20 61 20 74 72 61 69  6c 65 72 29 2e 00 00 00  |s a trailer)....|
0007f500  44 41 54 41 40 03 00 00  70 72 69 6e 74 5f 66 65  |DATA@...print_fe|
0007f510  61 74 75 72 65 73 0a 54  68 69 73 20 69 73 20 61  |atures.This is a|
0007f520  20 75 6e 69 6f 6e 20 64  65 66 69 6e 65 64 20 62  | union defined b|
0007f530  79 20 3c 44 65 73 6b 4c  69 62 3a 50 44 72 69 76  |y <DeskLib:PDriv|
0007f540  65 72 2e 68 3d 3e 50 44  72 69 76 65 72 3e 20 74  |er.h=>PDriver> t|
0007f550  6f 20 63 6f 6e 74 61 69  6e 20 70 72 69 6e 74 65  |o contain printe|
0007f560  72 20 64 72 69 76 65 72  20 66 65 61 74 75 72 65  |r driver feature|
0007f570  73 2c 20 62 6f 74 68 20  61 73 20 61 20 76 61 6c  |s, both as a val|
0007f580  75 65 20 61 6e 64 20 61  73 20 69 6e 64 69 76 69  |ue and as indivi|
0007f590  64 75 61 6c 20 62 69 74  73 2e 20 49 74 20 69 73  |dual bits. It is|
0007f5a0  20 61 6c 73 6f 20 61 6e  20 3c 65 6e 75 6d 65 72  | also an <enumer|
0007f5b0  61 74 65 64 20 74 79 70  65 3d 3e 70 72 69 6e 74  |ated type=>print|
0007f5c0  5f 66 65 61 74 75 72 65  73 5f 3e 20 64 65 66 69  |_features_> defi|
0007f5d0  6e 65 64 20 62 79 20 3c  70 72 69 6e 74 2e 68 3d  |ned by <print.h=|
0007f5e0  3e 70 72 69 6e 74 3e 20  28 44 65 73 6b 74 6f 70  |>print> (Desktop|
0007f5f0  20 43 29 2e 0a 0a 20 20  20 20 5c 7b 0a 20 20 20  | C)...    \{.   |
0007f600  20 20 20 20 20 69 6e 74  20 76 61 6c 75 65 3b 0a  |     int value;.|
0007f610  20 20 20 20 20 20 20 20  73 74 72 75 63 74 0a 20  |        struct. |
0007f620  20 20 20 20 20 20 20 5c  7b 0a 20 20 20 20 20 20  |       \{.      |
0007f630  20 20 20 20 20 20 75 6e  73 69 67 6e 65 64 20 69  |      unsigned i|
0007f640  6e 74 20 63 6f 6c 6f 75  72 09 3a 20 31 3b 0a 20  |nt colour.: 1;. |
0007f650  20 20 20 20 20 20 20 20  20 20 20 75 6e 73 69 67  |           unsig|
0007f660  6e 65 64 20 69 6e 74 20  6c 69 6d 69 74 65 64 09  |ned int limited.|
0007f670  3a 20 31 3b 0a 20 20 20  20 20 20 20 20 20 20 20  |: 1;.           |
0007f680  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 64 69  | unsigned int di|
0007f690  73 63 72 65 74 65 09 3a  20 31 3b 0a 20 20 20 20  |screte.: 1;.    |
0007f6a0  20 20 20 20 20 20 20 20  75 6e 73 69 67 6e 65 64  |        unsigned|
0007f6b0  20 69 6e 74 20 66 69 6c  6c 65 72 31 09 3a 20 35  | int filler1.: 5|
0007f6c0  3b 0a 20 20 20 20 20 20  20 20 20 20 20 20 75 6e  |;.            un|
0007f6d0  73 69 67 6e 65 64 20 69  6e 74 20 6e 6f 66 69 6c  |signed int nofil|
0007f6e0  6c 09 3a 20 31 3b 0a 20  20 20 20 20 20 20 20 20  |l.: 1;.         |
0007f6f0  20 20 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |   unsigned int |
0007f700  6e 6f 74 68 69 63 6b 6e  65 73 73 09 3a 20 31 3b  |nothickness.: 1;|
0007f710  0a 20 20 20 20 20 20 20  20 20 20 20 20 75 6e 73  |.            uns|
0007f720  69 67 6e 65 64 20 69 6e  74 20 6e 6f 6f 76 65 72  |igned int noover|
0007f730  77 72 69 74 65 09 3a 20  31 3b 0a 20 20 20 20 20  |write.: 1;.     |
0007f740  20 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |       unsigned |
0007f750  69 6e 74 20 66 69 6c 6c  65 72 32 09 3a 20 35 3b  |int filler2.: 5;|
0007f760  0a 20 20 20 20 20 20 20  20 20 20 20 20 75 6e 73  |.            uns|
0007f770  69 67 6e 65 64 20 69 6e  74 20 66 69 6c 6c 65 72  |igned int filler|
0007f780  33 09 3a 20 38 3b 0a 20  20 20 20 20 20 20 20 20  |3.: 8;.         |
0007f790  20 20 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |   unsigned int |
0007f7a0  73 63 72 65 65 6e 64 75  6d 70 09 3a 20 31 3b 0a  |screendump.: 1;.|
0007f7b0  20 20 20 20 20 20 20 20  20 20 20 20 75 6e 73 69  |            unsi|
0007f7c0  67 6e 65 64 20 69 6e 74  20 74 72 61 6e 73 66 6f  |gned int transfo|
0007f7d0  72 6d 73 09 3a 20 31 3b  0a 20 20 20 20 20 20 20  |rms.: 1;.       |
0007f7e0  20 20 20 20 20 75 6e 73  69 67 6e 65 64 20 69 6e  |     unsigned in|
0007f7f0  74 20 69 6c 6c 75 73 74  72 61 74 69 6f 6e 73 09  |t illustrations.|
0007f800  3a 20 31 3b 0a 20 20 20  20 20 20 20 20 20 20 20  |: 1;.           |
0007f810  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 66 69  | unsigned int fi|
0007f820  6c 6c 65 72 34 09 3a 20  35 3b 0a 20 20 20 20 20  |ller4.: 5;.     |
0007f830  20 20 20 7d 20 64 61 74  61 3b 0a 20 20 20 20 7d  |   } data;.    }|
0007f840  44 41 54 41 1e 01 00 00  70 72 69 6e 74 5f 66 65  |DATA....print_fe|
0007f850  61 74 75 72 65 73 0a 5c  7b 0a 20 20 20 20 70 72  |atures.\{.    pr|
0007f860  69 6e 74 5f 63 6f 6c 6f  75 72 09 3d 20 30 78 30  |int_colour.= 0x0|
0007f870  30 30 30 30 30 31 2c 0a  20 20 20 20 70 72 69 6e  |000001,.    prin|
0007f880  74 5f 6c 69 6d 69 74 65  64 09 3d 20 30 78 30 30  |t_limited.= 0x00|
0007f890  30 30 30 30 32 2c 0a 20  20 20 20 70 72 69 6e 74  |00002,.    print|
0007f8a0  5f 64 69 73 63 72 65 74  65 09 3d 20 30 78 30 30  |_discrete.= 0x00|
0007f8b0  30 30 30 30 34 2c 0a 20  20 20 20 70 72 69 6e 74  |00004,.    print|
0007f8c0  5f 4e 4f 46 49 4c 4c 09  3d 20 30 78 30 30 30 30  |_NOFILL.= 0x0000|
0007f8d0  31 30 30 2c 0a 20 20 20  20 70 72 69 6e 74 5f 4e  |100,.    print_N|
0007f8e0  4f 54 48 49 43 4b 4e 45  53 53 09 3d 20 30 78 30  |OTHICKNESS.= 0x0|
0007f8f0  30 30 30 32 30 30 2c 0a  20 20 20 20 70 72 69 6e  |000200,.    prin|
0007f900  74 5f 4e 4f 4f 56 45 52  57 52 49 54 45 09 3d 20  |t_NOOVERWRITE.= |
0007f910  30 78 30 30 30 30 34 30  30 2c 0a 20 20 20 20 70  |0x0000400,.    p|
0007f920  72 69 6e 74 5f 53 43 52  45 45 4e 44 55 4d 50 09  |rint_SCREENDUMP.|
0007f930  3d 20 30 78 31 30 30 30  30 30 30 2c 0a 20 20 20  |= 0x1000000,.   |
0007f940  20 70 72 69 6e 74 5f 54  52 41 4e 53 46 4f 52 4d  | print_TRANSFORM|
0007f950  09 3d 20 30 78 32 30 30  30 30 30 30 0a 7d 00 00  |.= 0x2000000.}..|
0007f960  44 41 54 41 13 02 00 00  70 72 69 6e 74 5f 67 65  |DATA....print_ge|
0007f970  74 72 65 63 74 61 6e 67  6c 65 0a 53 79 6e 74 61  |trectangle.Synta|
0007f980  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 70  |x:.<os_error> *p|
0007f990  72 69 6e 74 5f 67 65 74  72 65 63 74 61 6e 67 6c  |rint_getrectangl|
0007f9a0  65 20 28 3c 70 72 69 6e  74 5f 62 6f 78 3e 20 2a  |e (<print_box> *|
0007f9b0  72 65 63 74 2c 20 69 6e  74 20 2a 66 69 6e 69 73  |rect, int *finis|
0007f9c0  68 2c 20 69 6e 74 20 2a  72 65 63 74 5f 69 64 29  |h, int *rect_id)|
0007f9d0  3b 0a 48 65 61 64 65 72  3a 09 3c 70 72 69 6e 74  |;.Header:.<print|
0007f9e0  2e 68 3d 3e 70 72 69 6e  74 3e 0a 0a 52 65 74 75  |.h=>print>..Retu|
0007f9f0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
0007fa00  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
0007fa10  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
0007fa20  66 75 6e 63 74 69 6f 6e  20 73 68 6f 75 6c 64 20  |function should |
0007fa30  62 65 20 63 61 6c 6c 65  64 20 61 66 74 65 72 20  |be called after |
0007fa40  3c 70 72 69 6e 74 5f 64  72 61 77 70 61 67 65 3e  |<print_drawpage>|
0007fa50  2c 20 61 6e 64 20 74 68  65 6e 20 63 61 6c 6c 65  |, and then calle|
0007fa60  64 20 72 65 70 65 61 74  65 64 6c 79 20 75 6e 74  |d repeatedly unt|
0007fa70  69 6c 20 2f 66 69 6e 69  73 68 2f 20 72 65 74 75  |il /finish/ retu|
0007fa80  72 6e 73 20 7a 65 72 6f  2e 0a 0a 4f 6e 20 72 65  |rns zero...On re|
0007fa90  74 75 72 6e 2c 20 2f 72  65 63 74 2f 20 63 6f 6e  |turn, /rect/ con|
0007faa0  74 61 69 6e 73 20 74 68  65 20 72 65 63 74 61 6e  |tains the rectan|
0007fab0  67 6c 65 20 74 6f 20 62  65 20 70 72 69 6e 74 65  |gle to be printe|
0007fac0  64 20 28 69 6e 20 4f 53  20 75 6e 69 74 73 29 20  |d (in OS units) |
0007fad0  5f 77 69 74 68 69 6e 5f  20 74 68 65 20 72 65 63  |_within_ the rec|
0007fae0  74 61 6e 67 6c 65 20 77  68 6f 73 65 20 69 64 20  |tangle whose id |
0007faf0  69 73 20 72 65 74 75 72  6e 65 64 20 69 6e 20 7b  |is returned in {|
0007fb00  2f 7d 72 65 63 74 5f 69  64 7b 2f 7d 2e 20 2f 66  |/}rect_id{/}. /f|
0007fb10  69 6e 69 73 68 2f 20 63  6f 6e 74 61 69 6e 73 20  |inish/ contains |
0007fb20  74 68 65 20 6e 75 6d 62  65 72 20 6f 66 20 63 6f  |the number of co|
0007fb30  70 69 65 73 20 73 74 69  6c 6c 20 74 6f 20 62 65  |pies still to be|
0007fb40  20 70 72 69 6e 74 65 64  20 68 65 6e 63 65 20 69  | printed hence i|
0007fb50  74 20 69 73 20 7a 65 72  6f 20 77 68 65 6e 20 74  |t is zero when t|
0007fb60  68 65 20 6a 6f 62 20 69  73 20 66 69 6e 69 73 68  |he job is finish|
0007fb70  65 64 2e 00 44 41 54 41  df 02 00 00 70 72 69 6e  |ed..DATA....prin|
0007fb80  74 5f 67 69 76 65 72 65  63 74 61 6e 67 6c 65 0a  |t_giverectangle.|
0007fb90  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
0007fba0  72 3e 20 2a 70 72 69 6e  74 5f 67 69 76 65 72 65  |r> *print_givere|
0007fbb0  63 74 61 6e 67 6c 65 20  28 69 6e 74 20 72 65 63  |ctangle (int rec|
0007fbc0  74 5f 69 64 2c 20 3c 70  72 69 6e 74 5f 62 6f 78  |t_id, <print_box|
0007fbd0  3e 20 2a 72 65 63 74 2c  20 3c 70 72 69 6e 74 5f  |> *rect, <print_|
0007fbe0  74 72 61 6e 73 6d 61 74  73 74 72 3e 20 2a 6d 61  |transmatstr> *ma|
0007fbf0  74 72 69 78 2c 20 3c 70  72 69 6e 74 5f 70 6f 73  |trix, <print_pos|
0007fc00  69 74 69 6f 6e 73 74 72  3e 20 2a 70 6f 73 2c 20  |itionstr> *pos, |
0007fc10  69 6e 74 20 62 61 63 6b  63 6f 6c 29 3b 0a 48 65  |int backcol);.He|
0007fc20  61 64 65 72 3a 09 3c 70  72 69 6e 74 2e 68 3d 3e  |ader:.<print.h=>|
0007fc30  70 72 69 6e 74 3e 0a 0a  52 65 74 75 72 6e 73 3a  |print>..Returns:|
0007fc40  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
0007fc50  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
0007fc60  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
0007fc70  74 69 6f 6e 20 61 6c 6c  6f 77 73 20 61 6e 20 61  |tion allows an a|
0007fc80  70 70 6c 69 63 61 74 69  6f 6e 20 74 6f 20 74 65  |pplication to te|
0007fc90  6c 6c 20 74 68 65 20 70  72 69 6e 74 65 72 20 64  |ll the printer d|
0007fca0  72 69 76 65 72 20 77 68  61 74 20 69 74 20 77 61  |river what it wa|
0007fcb0  6e 74 73 20 74 6f 20 70  72 69 6e 74 2e 0a 0a 7b  |nts to print...{|
0007fcc0  2f 7d 72 65 63 74 5f 69  64 7b 2f 7d 09 69 73 20  |/}rect_id{/}.is |
0007fcd0  61 20 75 73 65 72 2d 64  65 66 69 6e 65 64 20 76  |a user-defined v|
0007fce0  61 6c 75 65 20 74 6f 20  69 64 65 6e 74 69 66 79  |alue to identify|
0007fcf0  20 65 61 63 68 20 72 65  63 74 61 6e 67 6c 65 20  | each rectangle |
0007fd00  79 6f 75 20 73 65 6e 64  2e 0a 2f 72 65 63 74 2f  |you send../rect/|
0007fd10  09 64 65 66 69 6e 65 73  20 74 68 65 20 72 65 63  |.defines the rec|
0007fd20  74 61 6e 67 6c 65 20 74  6f 20 62 65 20 70 72 69  |tangle to be pri|
0007fd30  6e 74 65 64 20 69 6e 20  4f 53 20 75 6e 69 74 73  |nted in OS units|
0007fd40  2e 0a 2f 6d 61 74 72 69  78 2f 09 69 73 20 74 68  |../matrix/.is th|
0007fd50  65 20 74 72 61 6e 73 66  6f 72 6d 61 74 69 6f 6e  |e transformation|
0007fd60  20 6d 61 74 72 69 78 2e  0a 2f 70 6f 73 2f 09 69  | matrix../pos/.i|
0007fd70  73 20 74 68 65 20 70 6f  73 69 74 69 6f 6e 20 6f  |s the position o|
0007fd80  6e 20 74 68 65 20 70 61  67 65 20 69 6e 20 6d 69  |n the page in mi|
0007fd90  6c 6c 69 70 6f 69 6e 74  73 20 28 6f 66 20 74 68  |llipoints (of th|
0007fda0  65 20 62 6f 74 74 6f 6d  20 6c 65 66 74 29 2e 0a  |e bottom left)..|
0007fdb0  2f 62 61 63 6b 63 6f 6c  2f 09 73 70 65 63 69 66  |/backcol/.specif|
0007fdc0  69 65 73 20 74 68 65 20  62 61 63 6b 67 72 6f 75  |ies the backgrou|
0007fdd0  6e 64 20 63 6f 6c 6f 75  72 2c 20 69 6e 20 74 68  |nd colour, in th|
0007fde0  65 20 66 6f 72 6d 20 30  78 42 42 47 47 52 52 30  |e form 0xBBGGRR0|
0007fdf0  30 2e 0a 0a 41 6e 20 61  70 70 6c 69 63 61 74 69  |0...An applicati|
0007fe00  6f 6e 20 73 68 6f 75 6c  64 20 6d 61 6b 65 20 6f  |on should make o|
0007fe10  6e 65 20 6f 72 20 6d 6f  72 65 20 63 61 6c 6c 73  |ne or more calls|
0007fe20  20 74 6f 20 74 68 69 73  20 66 75 6e 63 74 69 6f  | to this functio|
0007fe30  6e 2c 20 62 65 66 6f 72  65 20 63 61 6c 6c 69 6e  |n, before callin|
0007fe40  67 20 3c 70 72 69 6e 74  5f 64 72 61 77 70 61 67  |g <print_drawpag|
0007fe50  65 3e 2e 00 44 41 54 41  e7 00 00 00 70 72 69 6e  |e>..DATA....prin|
0007fe60  74 5f 69 64 65 6e 74 69  74 79 0a 54 68 69 73 20  |t_identity.This |
0007fe70  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
0007fe80  69 6e 20 3c 70 72 69 6e  74 2e 68 3d 3e 70 72 69  |in <print.h=>pri|
0007fe90  6e 74 3e 2e 20 49 74 20  69 73 20 61 6e 20 65 6e  |nt>. It is an en|
0007fea0  75 6d 65 72 61 74 65 64  20 74 79 70 65 20 6c 69  |umerated type li|
0007feb0  73 74 69 6e 67 20 74 68  65 20 64 69 66 66 65 72  |sting the differ|
0007fec0  65 6e 74 20 70 72 69 6e  74 65 72 20 74 79 70 65  |ent printer type|
0007fed0  73 20 61 76 61 69 6c 61  62 6c 65 2e 20 49 74 20  |s available. It |
0007fee0  69 73 20 64 65 66 69 6e  65 64 20 61 73 20 66 6f  |is defined as fo|
0007fef0  6c 6c 6f 77 73 3a 0a 0a  20 20 20 5c 7b 0a 20 20  |llows:..   \{.  |
0007ff00  20 20 20 70 72 69 6e 74  5f 50 6f 73 74 53 63 72  |   print_PostScr|
0007ff10  69 70 74 09 3d 20 30 2c  0a 20 20 20 20 20 70 72  |ipt.= 0,.     pr|
0007ff20  69 6e 74 5f 46 58 38 30  63 6f 6d 70 61 74 69 62  |int_FX80compatib|
0007ff30  6c 65 09 3d 20 31 0a 20  20 20 7d 00 44 41 54 41  |le.= 1.   }.DATA|
0007ff40  63 01 00 00 70 72 69 6e  74 5f 69 6e 66 6f 0a 53  |c...print_info.S|
0007ff50  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
0007ff60  3e 20 2a 70 72 69 6e 74  5f 69 6e 66 6f 20 28 3c  |> *print_info (<|
0007ff70  70 72 69 6e 74 5f 69 6e  66 6f 73 74 72 3e 20 2a  |print_infostr> *|
0007ff80  62 6c 6f 63 6b 29 3b 0a  48 65 61 64 65 72 3a 09  |block);.Header:.|
0007ff90  3c 70 72 69 6e 74 2e 68  3d 3e 70 72 69 6e 74 3e  |<print.h=>print>|
0007ffa0  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
0007ffb0  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
0007ffc0  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
0007ffd0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 67  |.This function g|
0007ffe0  65 74 73 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |ets information |
0007fff0  6f 6e 20 74 68 65 20 70  72 69 6e 74 65 72 20 64  |on the printer d|
00080000  72 69 76 65 72 2e 20 49  74 20 61 6c 6c 6f 77 73  |river. It allows|
00080010  20 74 68 65 20 61 70 70  6c 69 63 61 74 69 6f 6e  | the application|
00080020  20 74 6f 20 63 68 61 6e  67 65 20 74 68 65 20 77  | to change the w|
00080030  61 79 20 69 74 20 6f 75  74 70 75 74 73 20 69 74  |ay it outputs it|
00080040  73 20 64 61 74 61 20 74  6f 20 73 75 69 74 20 74  |s data to suit t|
00080050  68 65 20 70 72 69 6e 74  65 72 2e 20 54 68 65 20  |he printer. The |
00080060  69 6e 66 6f 72 6d 61 74  69 6f 6e 20 69 73 20 72  |information is r|
00080070  65 74 75 72 6e 65 64 20  69 6e 20 74 68 65 20 73  |eturned in the s|
00080080  74 72 75 63 74 75 72 65  20 70 6f 69 6e 74 65 64  |tructure pointed|
00080090  20 74 6f 20 62 79 20 2f  62 6c 6f 63 6b 2f 2e 00  | to by /block/..|
000800a0  44 41 54 41 e9 01 00 00  70 72 69 6e 74 5f 69 6e  |DATA....print_in|
000800b0  66 6f 73 74 72 0a 54 68  69 73 20 73 74 72 75 63  |fostr.This struc|
000800c0  74 75 72 65 20 69 73 20  64 65 66 69 6e 65 64 20  |ture is defined |
000800d0  62 79 20 3c 70 72 69 6e  74 65 72 2e 68 3d 3e 70  |by <printer.h=>p|
000800e0  72 69 6e 74 65 72 3e 20  61 73 20 61 20 73 74 72  |rinter> as a str|
000800f0  75 63 74 75 72 65 20 63  6f 6e 74 61 69 6e 69 6e  |ucture containin|
00080100  67 20 74 68 65 20 69 6e  66 6f 72 6d 61 74 69 6f  |g the informatio|
00080110  6e 20 72 65 74 75 72 6e  65 64 20 62 79 20 3c 70  |n returned by <p|
00080120  72 69 6e 74 65 72 5f 69  6e 66 6f 3e 2e 0a 0a 20  |rinter_info>... |
00080130  20 20 20 5c 7b 0a 20 20  20 20 20 20 20 20 73 68  |   \{.        sh|
00080140  6f 72 74 20 69 6e 74 20  76 65 72 73 69 6f 6e 3b  |ort int version;|
00080150  0a 20 20 20 20 20 20 20  20 73 68 6f 72 74 20 69  |.        short i|
00080160  6e 74 20 69 64 65 6e 74  69 74 79 3b 0a 20 20 20  |nt identity;.   |
00080170  20 20 20 20 20 69 6e 74  20 78 72 65 73 2c 79 72  |     int xres,yr|
00080180  65 73 3b 0a 20 20 20 20  20 20 20 20 69 6e 74 20  |es;.        int |
00080190  66 65 61 74 75 72 65 73  3b 0a 20 20 20 20 20 20  |features;.      |
000801a0  20 20 63 68 61 72 20 2a  64 65 73 63 72 69 70 74  |  char *descript|
000801b0  69 6f 6e 3b 0a 20 20 20  20 20 20 20 20 69 6e 74  |ion;.        int|
000801c0  20 78 68 61 6c 66 2c 20  79 68 61 6c 66 3b 0a 20  | xhalf, yhalf;. |
000801d0  20 20 20 20 20 20 20 69  6e 74 20 6e 75 6d 62 65  |       int numbe|
000801e0  72 3b 0a 20 20 20 20 7d  0a 0a 2f 76 65 72 73 69  |r;.    }../versi|
000801f0  6f 6e 2f 20 69 73 20 74  68 65 20 76 65 72 73 69  |on/ is the versi|
00080200  6f 6e 20 6e 75 6d 62 65  72 20 2a 20 31 30 30 2e  |on number * 100.|
00080210  0a 28 78 72 65 73 2c 79  72 65 73 29 20 67 69 76  |.(xres,yres) giv|
00080220  65 73 20 78 20 61 6e 64  20 79 20 72 65 73 20 69  |es x and y res i|
00080230  6e 20 64 70 69 2e 0a 28  78 68 61 6c 66 2c 79 68  |n dpi..(xhalf,yh|
00080240  61 6c 66 29 20 68 61 6c  66 74 6f 6e 65 20 72 65  |alf) halftone re|
00080250  73 20 69 6e 20 72 65 70  65 61 74 73 20 70 65 72  |s in repeats per|
00080260  20 69 6e 63 68 2e 0a 2f  6e 75 6d 62 65 72 2f 20  | inch../number/ |
00080270  69 73 20 66 6f 72 20 69  6e 74 65 72 6e 61 6c 20  |is for internal |
00080280  75 73 65 20 6f 6e 6c 79  2e 00 00 00 44 41 54 41  |use only....DATA|
00080290  aa 00 00 00 70 72 69 6e  74 5f 6a 6f 62 0a 54 68  |....print_job.Th|
000802a0  65 20 74 79 70 65 20 7b  2a 7d 70 72 69 6e 74 5f  |e type {*}print_|
000802b0  6a 6f 62 7b 2a 7d 20 69  73 20 64 65 66 69 6e 65  |job{*} is define|
000802c0  64 20 69 6e 20 3c 44 65  73 6b 4c 69 62 3a 50 44  |d in <DeskLib:PD|
000802d0  72 69 76 65 72 2e 68 3d  3e 50 44 72 69 76 65 72  |river.h=>PDriver|
000802e0  3e 20 61 73 20 61 20 74  79 70 65 20 63 61 70 61  |> as a type capa|
000802f0  62 6c 65 20 6f 66 20 68  6f 6c 64 69 6e 67 20 61  |ble of holding a|
00080300  20 70 72 69 6e 74 20 6a  6f 62 20 68 61 6e 64 6c  | print job handl|
00080310  65 2e 20 49 74 20 69 73  20 61 63 74 75 61 6c 6c  |e. It is actuall|
00080320  79 20 64 65 66 69 6e 65  64 20 61 73 20 61 6e 20  |y defined as an |
00080330  2f 69 6e 74 2f 2e 00 00  44 41 54 41 63 01 00 00  |/int/...DATAc...|
00080340  70 72 69 6e 74 5f 70 61  67 65 73 69 7a 65 0a 53  |print_pagesize.S|
00080350  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
00080360  3e 20 2a 70 72 69 6e 74  5f 70 61 67 65 73 69 7a  |> *print_pagesiz|
00080370  65 20 28 3c 70 72 69 6e  74 5f 70 61 67 65 73 69  |e (<print_pagesi|
00080380  7a 65 73 74 72 3e 20 2a  73 69 7a 65 29 3b 0a 48  |zestr> *size);.H|
00080390  65 61 64 65 72 3a 09 3c  70 72 69 6e 74 2e 68 3d  |eader:.<print.h=|
000803a0  3e 70 72 69 6e 74 3e 0a  0a 52 65 74 75 72 6e 73  |>print>..Returns|
000803b0  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
000803c0  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
000803d0  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
000803e0  63 74 69 6f 6e 20 66 69  6e 64 73 20 68 6f 77 20  |ction finds how |
000803f0  6c 61 72 67 65 20 74 68  65 20 70 61 70 65 72 20  |large the paper |
00080400  61 6e 64 20 70 72 69 6e  74 20 61 72 65 61 20 69  |and print area i|
00080410  73 2e 20 4f 6e 20 65 78  69 74 2c 20 2f 73 69 7a  |s. On exit, /siz|
00080420  65 2f 20 63 6f 6e 74 61  69 6e 73 20 74 68 65 20  |e/ contains the |
00080430  70 61 70 65 72 20 73 69  7a 65 20 69 6e 20 6d 69  |paper size in mi|
00080440  6c 6c 69 70 6f 69 6e 74  73 2c 20 61 6e 64 20 74  |llipoints, and t|
00080450  68 65 20 70 72 69 6e 74  61 62 6c 65 20 72 65 63  |he printable rec|
00080460  74 61 6e 67 6c 65 20 28  6f 72 69 67 69 6e 20 61  |tangle (origin a|
00080470  74 20 62 6f 74 74 6f 6d  20 6c 65 66 74 2c 20 63  |t bottom left, c|
00080480  6f 6f 72 64 69 6e 61 74  65 73 20 69 6e 20 6d 69  |oordinates in mi|
00080490  6c 6c 69 70 6f 69 6e 74  73 29 2e 00 44 41 54 41  |llipoints)..DATA|
000804a0  09 01 00 00 70 72 69 6e  74 5f 70 61 67 65 73 69  |....print_pagesi|
000804b0  7a 65 73 74 72 0a 54 68  69 73 20 74 79 70 65 20  |zestr.This type |
000804c0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 70  |is defined in <p|
000804d0  72 69 6e 74 2e 68 3d 3e  70 72 69 6e 74 3e 2e 20  |rint.h=>print>. |
000804e0  49 74 20 69 73 20 61 20  73 74 72 75 63 74 75 72  |It is a structur|
000804f0  65 20 63 6f 6e 74 61 69  6e 69 6e 67 20 61 20 70  |e containing a p|
00080500  61 67 65 20 61 6e 64 20  69 74 73 20 6d 61 72 67  |age and its marg|
00080510  69 6e 73 2e 0a 0a 20 20  5c 7b 0a 20 20 20 20 69  |ins...  \{.    i|
00080520  6e 74 20 78 73 69 7a 65  2c 20 79 73 69 7a 65 3b  |nt xsize, ysize;|
00080530  0a 20 20 20 20 3c 70 72  69 6e 74 5f 62 6f 78 3e  |.    <print_box>|
00080540  20 62 62 6f 78 3b 0a 20  20 7d 0a 0a 7b 2f 7d 28  | bbox;.  }..{/}(|
00080550  78 73 69 7a 65 2c 79 73  69 7a 65 29 7b 2f 7d 20  |xsize,ysize){/} |
00080560  69 73 20 74 68 65 20 70  61 67 65 20 73 69 7a 65  |is the page size|
00080570  20 69 6e 20 6d 69 6c 6c  69 70 6f 69 6e 74 73 2e  | in millipoints.|
00080580  0a 2f 62 62 6f 78 2f 20  69 73 20 74 68 65 20 61  |./bbox/ is the a|
00080590  63 74 75 61 6c 20 70 72  69 6e 74 61 62 6c 65 20  |ctual printable |
000805a0  61 72 65 61 2e 00 00 00  44 41 54 41 92 00 00 00  |area....DATA....|
000805b0  70 72 69 6e 74 5f 70 6f  73 69 74 69 6f 6e 73 74  |print_positionst|
000805c0  72 0a 54 68 69 73 20 74  79 70 65 20 69 73 20 64  |r.This type is d|
000805d0  65 66 69 6e 65 64 20 69  6e 20 3c 70 72 69 6e 74  |efined in <print|
000805e0  65 72 2e 68 3d 3e 70 72  69 6e 74 65 72 3e 2e 20  |er.h=>printer>. |
000805f0  49 74 20 69 73 20 61 20  73 74 72 75 63 74 75 72  |It is a structur|
00080600  65 20 67 69 76 69 6e 67  20 61 6e 20 61 62 69 74  |e giving an abit|
00080610  72 61 72 79 20 63 6f 6f  72 64 69 6e 61 74 65 3a  |rary coordinate:|
00080620  0a 0a 20 20 5c 7b 0a 20  20 20 20 69 6e 74 20 64  |..  \{.    int d|
00080630  78 2c 20 64 79 3b 0a 20  20 7d 00 00 44 41 54 41  |x, dy;.  }..DATA|
00080640  a9 00 00 00 70 72 69 6e  74 5f 72 65 73 65 74 0a  |....print_reset.|
00080650  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
00080660  72 3e 20 2a 70 72 69 6e  74 5f 72 65 73 65 74 20  |r> *print_reset |
00080670  28 76 6f 69 64 29 3b 0a  48 65 61 64 65 72 3a 09  |(void);.Header:.|
00080680  3c 70 72 69 6e 74 2e 68  3d 3e 70 72 69 6e 74 3e  |<print.h=>print>|
00080690  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
000806a0  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
000806b0  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
000806c0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 61  |.This function a|
000806d0  62 6f 72 74 73 20 61 6c  6c 20 70 72 69 6e 74 20  |borts all print |
000806e0  6a 6f 62 73 2e 00 00 00  44 41 54 41 69 01 00 00  |jobs....DATAi...|
000806f0  70 72 69 6e 74 5f 73 63  72 65 65 6e 64 75 6d 70  |print_screendump|
00080700  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00080710  6f 72 3e 20 2a 70 72 69  6e 74 5f 73 63 72 65 65  |or> *print_scree|
00080720  6e 64 75 6d 70 20 28 69  6e 74 20 6a 6f 62 29 3b  |ndump (int job);|
00080730  0a 48 65 61 64 65 72 3a  09 3c 70 72 69 6e 74 2e  |.Header:.<print.|
00080740  68 3d 3e 70 72 69 6e 74  3e 0a 0a 52 65 74 75 72  |h=>print>..Retur|
00080750  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
00080760  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
00080770  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
00080780  75 6e 63 74 69 6f 6e 20  6d 61 6b 65 73 20 74 68  |unction makes th|
00080790  65 20 70 72 69 6e 74 65  72 20 64 72 69 76 65 72  |e printer driver|
000807a0  20 6f 75 74 70 75 74 20  61 20 73 63 72 65 65 6e  | output a screen|
000807b0  20 64 75 6d 70 20 74 6f  20 74 68 65 20 6a 6f 62  | dump to the job|
000807c0  20 67 69 76 65 6e 2e 20  4e 6f 74 65 20 74 68 61  | given. Note tha|
000807d0  74 20 6e 6f 6e 65 20 6f  66 20 74 68 65 20 73 74  |t none of the st|
000807e0  61 6e 64 61 72 64 20 41  63 6f 72 6e 20 64 72 69  |andard Acorn dri|
000807f0  76 65 72 73 20 73 75 70  70 6f 72 74 20 74 68 69  |vers support thi|
00080800  73 20 66 65 61 74 75 72  65 20 28 63 68 65 63 6b  |s feature (check|
00080810  20 74 68 65 20 66 65 61  74 75 72 65 73 20 66 69  | the features fi|
00080820  72 73 74 20 75 73 69 6e  67 20 3c 70 72 69 6e 74  |rst using <print|
00080830  5f 63 68 65 63 6b 66 65  61 74 75 72 65 73 3e 20  |_checkfeatures> |
00080840  6f 72 20 3c 70 72 69 6e  74 5f 69 6e 66 6f 3e 29  |or <print_info>)|
00080850  2e 00 00 00 44 41 54 41  7f 01 00 00 70 72 69 6e  |....DATA....prin|
00080860  74 5f 73 65 6c 65 63 74  69 6c 6c 75 73 74 72 61  |t_selectillustra|
00080870  74 69 6f 6e 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |tion.Syntax:.<os|
00080880  5f 65 72 72 6f 72 3e 20  2a 70 72 69 6e 74 5f 73  |_error> *print_s|
00080890  65 6c 65 63 74 69 6c 6c  75 73 74 72 61 74 69 6f  |electillustratio|
000808a0  6e 20 28 69 6e 74 20 6e  65 77 2c 20 63 68 61 72  |n (int new, char|
000808b0  20 2a 74 69 74 6c 65 2c  20 69 6e 74 20 2a 6f 6c  | *title, int *ol|
000808c0  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 70 72 69  |d);.Header:.<pri|
000808d0  6e 74 2e 68 3d 3e 70 72  69 6e 74 3e 0a 0a 52 65  |nt.h=>print>..Re|
000808e0  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
000808f0  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
00080900  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
00080910  73 20 66 75 6e 63 74 69  6f 6e 20 64 6f 65 73 20  |s function does |
00080920  74 68 65 20 73 61 6d 65  20 61 73 20 3c 70 72 69  |the same as <pri|
00080930  6e 74 5f 73 65 6c 65 63  74 6a 6f 62 3e 2c 20 65  |nt_selectjob>, e|
00080940  78 63 65 70 74 20 74 68  61 74 20 69 66 20 61 20  |xcept that if a |
00080950  6e 65 77 20 70 72 69 6e  74 20 6a 6f 62 20 69 73  |new print job is|
00080960  20 73 74 61 72 74 65 64  3a 0a 7b 74 61 62 7d 0a  | started:.{tab}.|
00080970  8f 09 49 74 20 6d 75 73  74 20 62 65 20 6f 6e 6c  |..It must be onl|
00080980  79 20 6f 6e 65 20 70 61  67 65 20 6c 6f 6e 67 2e  |y one page long.|
00080990  0a 8f 09 4f 75 74 70 75  74 20 6d 61 79 20 64 69  |...Output may di|
000809a0  66 66 65 72 20 65 67 20  45 50 53 20 69 6e 73 74  |ffer eg EPS inst|
000809b0  65 61 64 20 6f 66 20 50  6f 73 74 53 63 72 69 70  |ead of PostScrip|
000809c0  74 2e 0a 0a 52 49 53 43  20 4f 53 20 33 20 6f 6e  |t...RISC OS 3 on|
000809d0  6c 79 2e 00 44 41 54 41  3a 02 00 00 70 72 69 6e  |ly..DATA:...prin|
000809e0  74 5f 73 65 6c 65 63 74  6a 6f 62 0a 53 79 6e 74  |t_selectjob.Synt|
000809f0  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
00080a00  70 72 69 6e 74 5f 73 65  6c 65 63 74 6a 6f 62 20  |print_selectjob |
00080a10  28 69 6e 74 20 6e 65 77  2c 20 63 68 61 72 20 2a  |(int new, char *|
00080a20  74 69 74 6c 65 2c 20 69  6e 74 20 2a 6f 6c 64 29  |title, int *old)|
00080a30  3b 0a 48 65 61 64 65 72  3a 09 3c 70 72 69 6e 74  |;.Header:.<print|
00080a40  2e 68 3d 3e 70 72 69 6e  74 3e 0a 0a 52 65 74 75  |.h=>print>..Retu|
00080a50  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00080a60  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00080a70  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00080a80  66 75 6e 63 74 69 6f 6e  20 6d 61 6b 65 73 20 61  |function makes a|
00080a90  20 67 69 76 65 6e 20 70  72 69 6e 74 20 6a 6f 62  | given print job|
00080aa0  20 74 68 65 20 63 75 72  72 65 6e 74 20 6f 6e 65  | the current one|
00080ab0  2e 20 54 68 65 20 6a 6f  62 20 69 73 20 69 64 65  |. The job is ide|
00080ac0  6e 74 69 66 69 65 64 20  62 79 20 2f 6e 65 77 2f  |ntified by /new/|
00080ad0  20 77 68 69 63 68 20 6d  75 73 74 20 62 65 20 61  | which must be a|
00080ae0  20 66 69 6c 65 20 28 65  67 20 7b 2a 7d 70 72 69  | file (eg {*}pri|
00080af0  6e 74 65 72 3a 7b 2a 7d  29 20 70 72 65 76 69 6f  |nter:{*}) previo|
00080b00  75 73 6c 79 20 6f 70 65  6e 65 64 20 66 6f 72 20  |usly opened for |
00080b10  6f 75 74 70 75 74 2e 20  2f 74 69 74 6c 65 2f 20  |output. /title/ |
00080b20  67 69 76 65 73 20 61 20  68 75 6d 61 6e 2d 72 65  |gives a human-re|
00080b30  61 64 61 62 6c 65 20 6e  61 6d 65 20 66 6f 72 20  |adable name for |
00080b40  74 68 65 20 6a 6f 62 2e  0a 0a 54 68 65 20 63 75  |the job...The cu|
00080b50  72 72 65 6e 74 20 70 72  69 6e 74 20 6a 6f 62 20  |rrent print job |
00080b60  69 73 20 73 75 73 70 65  6e 64 65 64 20 61 6e 64  |is suspended and|
00080b70  20 74 68 65 20 6e 65 77  20 6a 6f 62 20 28 72 65  | the new job (re|
00080b80  29 73 74 61 72 74 65 64  2e 20 54 68 65 20 6f 6c  |)started. The ol|
00080b90  64 20 6a 6f 62 20 68 61  6e 64 6c 65 20 28 69 66  |d job handle (if|
00080ba0  20 61 6e 79 29 20 69 73  20 72 65 74 75 72 6e 65  | any) is returne|
00080bb0  64 20 69 6e 20 74 68 65  20 76 61 72 69 61 62 6c  |d in the variabl|
00080bc0  65 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 79 20  |e pointed to by |
00080bd0  2f 6f 6c 64 2f 2e 0a 0a  4e 42 20 49 66 20 2f 6e  |/old/...NB If /n|
00080be0  65 77 2f 20 69 73 20 7a  65 72 6f 20 74 68 65 6e  |ew/ is zero then|
00080bf0  20 74 68 65 20 63 75 72  72 65 6e 74 20 6a 6f 62  | the current job|
00080c00  20 69 73 20 73 75 73 70  65 6e 64 65 64 2e 00 00  | is suspended...|
00080c10  44 41 54 41 52 01 00 00  70 72 69 6e 74 5f 73 65  |DATAR...print_se|
00080c20  74 69 6e 66 6f 0a 53 79  6e 74 61 78 3a 09 3c 6f  |tinfo.Syntax:.<o|
00080c30  73 5f 65 72 72 6f 72 3e  20 2a 70 72 69 6e 74 5f  |s_error> *print_|
00080c40  73 65 74 69 6e 66 6f 20  28 3c 70 72 69 6e 74 5f  |setinfo (<print_|
00080c50  69 6e 66 6f 73 74 72 3e  20 2a 62 6c 6f 63 6b 29  |infostr> *block)|
00080c60  3b 0a 48 65 61 64 65 72  3a 09 3c 70 72 69 6e 74  |;.Header:.<print|
00080c70  2e 68 3d 3e 70 72 69 6e  74 3e 0a 0a 52 65 74 75  |.h=>print>..Retu|
00080c80  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00080c90  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00080ca0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00080cb0  66 75 6e 63 74 69 6f 6e  20 72 65 63 6f 6e 66 69  |function reconfi|
00080cc0  67 75 72 65 73 20 74 68  65 20 70 72 69 6e 74 65  |gures the printe|
00080cd0  72 20 64 72 69 76 65 72  2e 20 54 68 65 20 76 65  |r driver. The ve|
00080ce0  72 73 69 6f 6e 2c 20 69  64 65 6e 74 69 74 79 20  |rsion, identity |
00080cf0  61 6e 64 20 64 65 73 63  72 69 70 74 69 6f 6e 20  |and description |
00080d00  66 69 65 6c 64 73 20 61  72 65 20 6e 6f 74 20 75  |fields are not u|
00080d10  73 65 64 2e 20 4c 65 61  76 65 20 62 69 74 20 30  |sed. Leave bit 0|
00080d20  20 63 6c 65 61 72 20 69  6e 20 74 68 65 20 66 65  | clear in the fe|
00080d30  61 74 75 72 65 73 20 66  69 65 6c 64 20 66 6f 72  |atures field for|
00080d40  20 6d 6f 6e 6f 63 68 72  6f 6d 65 2c 20 73 65 74  | monochrome, set|
00080d50  20 62 69 74 20 30 20 66  6f 72 20 63 6f 6c 6f 75  | bit 0 for colou|
00080d60  72 2e 00 00 44 41 54 41  5f 01 00 00 70 72 69 6e  |r...DATA_...prin|
00080d70  74 5f 73 65 74 70 61 67  65 73 69 7a 65 0a 53 79  |t_setpagesize.Sy|
00080d80  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00080d90  20 2a 70 72 69 6e 74 5f  73 65 74 70 61 67 65 73  | *print_setpages|
00080da0  69 7a 65 20 28 3c 70 72  69 6e 74 5f 70 61 67 65  |ize (<print_page|
00080db0  73 69 7a 65 73 74 72 3e  20 2a 73 69 7a 65 29 3b  |sizestr> *size);|
00080dc0  0a 48 65 61 64 65 72 3a  09 3c 70 72 69 6e 74 2e  |.Header:.<print.|
00080dd0  68 3d 3e 70 72 69 6e 74  3e 0a 0a 52 65 74 75 72  |h=>print>..Retur|
00080de0  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
00080df0  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
00080e00  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
00080e10  75 6e 63 74 69 6f 6e 20  73 65 74 73 20 68 6f 77  |unction sets how|
00080e20  20 6c 61 72 67 65 20 74  68 65 20 70 61 70 65 72  | large the paper|
00080e30  20 61 6e 64 20 70 72 69  6e 74 20 61 72 65 61 20  | and print area |
00080e40  69 73 2e 20 2f 73 69 7a  65 2f 20 63 6f 6e 74 61  |is. /size/ conta|
00080e50  69 6e 73 20 74 68 65 20  70 61 70 65 72 20 73 69  |ins the paper si|
00080e60  7a 65 20 69 6e 20 6d 69  6c 6c 69 70 6f 69 6e 74  |ze in millipoint|
00080e70  73 2c 20 61 6e 64 20 74  68 65 20 70 72 69 6e 74  |s, and the print|
00080e80  61 62 6c 65 20 72 65 63  74 61 6e 67 6c 65 20 28  |able rectangle (|
00080e90  6f 72 69 67 69 6e 20 61  74 20 62 6f 74 74 6f 6d  |origin at bottom|
00080ea0  20 6c 65 66 74 2c 20 63  6f 6f 72 64 69 6e 61 74  | left, coordinat|
00080eb0  65 73 20 69 6e 20 6d 69  6c 6c 69 70 6f 69 6e 74  |es in millipoint|
00080ec0  73 29 2e 00 44 41 54 41  4b 01 00 00 70 72 69 6e  |s)..DATAK...prin|
00080ed0  74 5f 74 72 61 6e 73 66  6f 72 6d 61 74 69 6f 6e  |t_transformation|
00080ee0  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
00080ef0  66 69 6e 65 64 20 69 6e  20 3c 44 65 73 6b 4c 69  |fined in <DeskLi|
00080f00  62 3a 50 44 72 69 76 65  72 2e 68 3d 3e 50 44 72  |b:PDriver.h=>PDr|
00080f10  69 76 65 72 3e 20 61 73  20 61 20 74 79 70 65 20  |iver> as a type |
00080f20  63 61 70 61 62 6c 65 20  6f 66 20 73 70 65 63 69  |capable of speci|
00080f30  66 79 69 6e 67 20 61 6e  20 61 72 62 69 74 72 61  |fying an arbitra|
00080f40  72 79 20 74 72 61 6e 73  66 6f 72 6d 61 74 69 6f  |ry transformatio|
00080f50  6e 2e 20 49 74 20 69 73  20 74 68 65 20 73 74 72  |n. It is the str|
00080f60  75 63 74 75 72 65 3a 0a  0a 20 20 20 20 5c 7b 0a  |ucture:..    \{.|
00080f70  20 20 20 20 20 20 20 20  69 6e 74 20 78 78 3b 0a  |        int xx;.|
00080f80  20 20 20 20 20 20 20 20  69 6e 74 20 78 79 3b 0a  |        int xy;.|
00080f90  20 20 20 20 20 20 20 20  69 6e 74 20 79 78 3b 0a  |        int yx;.|
00080fa0  20 20 20 20 20 20 20 20  69 6e 74 20 79 79 3b 0a  |        int yy;.|
00080fb0  20 20 20 20 7d 0a 0a 54  68 65 20 63 6f 6f 72 64  |    }..The coord|
00080fc0  69 6e 61 74 65 73 20 28  78 2c 79 29 20 61 72 65  |inates (x,y) are|
00080fd0  20 6d 61 70 70 65 64 20  74 6f 3a 0a 0a 28 28 78  | mapped to:..((x|
00080fe0  2a 78 78 2b 79 2a 79 78  29 20 2f 20 28 31 5c 3c  |*xx+y*yx) / (1\<|
00080ff0  5c 3c 31 36 29 20 2c 28  78 2a 78 79 2b 79 2a 79  |\<16) ,(x*xy+y*y|
00081000  79 29 20 2f 20 28 31 5c  3c 5c 3c 31 36 29 29 00  |y) / (1\<\<16)).|
00081010  44 41 54 41 58 01 00 00  70 72 69 6e 74 5f 74 72  |DATAX...print_tr|
00081020  61 6e 73 6d 61 74 73 74  72 0a 54 68 69 73 20 74  |ansmatstr.This t|
00081030  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
00081040  6e 20 3c 70 72 69 6e 74  65 72 2e 68 3d 3e 70 72  |n <printer.h=>pr|
00081050  69 6e 74 65 72 3e 20 61  73 20 61 20 74 79 70 65  |inter> as a type|
00081060  20 63 61 70 61 62 6c 65  20 6f 66 20 73 70 65 63  | capable of spec|
00081070  69 66 79 69 6e 67 20 61  6e 20 61 72 62 69 74 72  |ifying an arbitr|
00081080  61 72 79 20 74 72 61 6e  73 66 6f 72 6d 61 74 69  |ary transformati|
00081090  6f 6e 2e 20 49 74 20 69  73 20 74 68 65 20 73 74  |on. It is the st|
000810a0  72 75 63 74 75 72 65 3a  0a 0a 20 20 20 20 5c 7b  |ructure:..    \{|
000810b0  0a 20 20 20 20 20 20 20  20 69 6e 74 20 78 78 3b  |.        int xx;|
000810c0  0a 20 20 20 20 20 20 20  20 69 6e 74 20 78 79 3b  |.        int xy;|
000810d0  0a 20 20 20 20 20 20 20  20 69 6e 74 20 79 78 3b  |.        int yx;|
000810e0  0a 20 20 20 20 20 20 20  20 69 6e 74 20 79 79 3b  |.        int yy;|
000810f0  0a 20 20 20 20 7d 0a 0a  54 68 65 20 63 6f 6f 72  |.    }..The coor|
00081100  64 69 6e 61 74 65 73 20  28 78 2c 79 29 20 61 72  |dinates (x,y) ar|
00081110  65 20 6d 61 70 70 65 64  20 74 6f 3a 0a 7b 77 72  |e mapped to:.{wr|
00081120  61 70 20 6f 66 66 7d 0a  7b 61 6c 69 67 6e 20 63  |ap off}.{align c|
00081130  65 6e 74 72 65 7d 28 28  78 2a 78 78 2b 79 2a 79  |entre}((x*xx+y*y|
00081140  78 29 20 2f 20 28 31 5c  3c 5c 3c 31 36 29 20 2c  |x) / (1\<\<16) ,|
00081150  28 78 2a 78 79 2b 79 2a  79 79 29 20 2f 20 28 31  |(x*xy+y*yy) / (1|
00081160  5c 3c 5c 3c 31 36 29 29  44 49 52 24 28 00 00 00  |\<\<16))DIR$(...|
00081170  28 00 00 00 90 11 08 00  46 ff ff ff ae 7e c0 22  |(.......F....~."|
00081180  e6 00 00 00 13 00 00 00  00 00 00 00 74 00 00 00  |............t...|
00081190  44 41 54 41 e6 00 00 00  70 74 72 64 69 66 66 5f  |DATA....ptrdiff_|
000811a0  74 0a 54 68 65 20 74 79  70 65 20 7b 2f 7d 70 74  |t.The type {/}pt|
000811b0  72 64 69 66 66 5f 74 7b  2f 7d 20 69 73 20 64 65  |rdiff_t{/} is de|
000811c0  66 69 6e 65 64 20 69 6e  20 3c 73 74 64 64 65 66  |fined in <stddef|
000811d0  2e 68 3d 3e 73 74 64 64  65 66 3e 20 61 73 20 61  |.h=>stddef> as a|
000811e0  6e 20 6f 62 6a 65 63 74  20 63 61 70 61 62 6c 65  |n object capable|
000811f0  20 6f 66 20 68 6f 6c 64  69 6e 67 20 74 68 65 20  | of holding the |
00081200  72 65 73 75 6c 74 20 6f  66 20 73 75 62 74 72 61  |result of subtra|
00081210  63 74 69 6e 67 20 6f 6e  65 20 70 6f 69 6e 74 65  |cting one pointe|
00081220  72 20 66 72 6f 6d 20 61  6e 6f 74 68 65 72 2e 20  |r from another. |
00081230  49 74 20 69 73 20 61 63  74 75 61 6c 6c 79 20 64  |It is actually d|
00081240  65 66 69 6e 65 64 20 69  6e 20 62 6f 74 68 20 44  |efined in both D|
00081250  65 73 6b 74 6f 70 20 43  20 61 6e 64 20 45 61 73  |esktop C and Eas|
00081260  79 20 43 20 61 73 20 61  20 2f 73 69 67 6e 65 64  |y C as a /signed|
00081270  20 69 6e 74 2f 2e 00 00  44 41 54 41 bd 01 00 00  | int/...DATA....|
00081280  70 75 74 63 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |putc.Syntax:.int|
00081290  20 70 75 74 63 20 28 69  6e 74 20 63 2c 20 3c 46  | putc (int c, <F|
000812a0  49 4c 45 3e 20 2a 73 74  72 65 61 6d 29 3b 0a 48  |ILE> *stream);.H|
000812b0  65 61 64 65 72 3a 09 3c  73 74 64 69 6f 2e 68 3d  |eader:.<stdio.h=|
000812c0  3e 73 74 64 69 6f 3e 0a  0a 52 65 74 75 72 6e 73  |>stdio>..Returns|
000812d0  3a 09 63 2c 20 6f 72 20  3c 45 4f 46 3e 20 69 66  |:.c, or <EOF> if|
000812e0  20 74 68 65 72 65 20 69  73 20 61 6e 20 65 72 72  | there is an err|
000812f0  6f 72 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |or...This functi|
00081300  6f 6e 20 77 72 69 74 65  73 20 74 68 65 20 63 68  |on writes the ch|
00081310  61 72 61 63 74 65 72 20  69 6e 20 2f 63 2f 20 74  |aracter in /c/ t|
00081320  6f 20 74 68 65 20 73 74  72 65 61 6d 20 73 70 65  |o the stream spe|
00081330  63 69 66 69 65 64 2e 20  49 74 20 69 73 20 76 69  |cified. It is vi|
00081340  72 74 75 61 6c 6c 79 20  69 64 65 6e 74 69 63 61  |rtually identica|
00081350  6c 20 74 6f 20 3c 66 70  75 74 63 3e 2e 20 54 68  |l to <fputc>. Th|
00081360  65 20 6f 6e 6c 79 20 64  69 66 66 65 72 65 6e 63  |e only differenc|
00081370  65 20 69 73 20 74 68 61  74 20 74 68 65 20 66 75  |e is that the fu|
00081380  6e 63 74 69 6f 6e 20 6d  69 67 68 74 20 62 65 20  |nction might be |
00081390  61 20 6d 61 63 72 6f 20  61 6e 64 20 74 68 65 20  |a macro and the |
000813a0  61 72 67 75 6d 65 6e 74  20 6d 61 79 20 62 65 20  |argument may be |
000813b0  65 76 61 6c 75 61 74 65  64 20 6d 6f 72 65 20 74  |evaluated more t|
000813c0  68 61 6e 20 6f 6e 63 65  20 73 6f 20 79 6f 75 20  |han once so you |
000813d0  63 61 6e 27 74 20 75 73  65 20 61 6e 20 65 78 70  |can't use an exp|
000813e0  72 65 73 73 69 6f 6e 20  77 69 74 68 20 73 69 64  |ression with sid|
000813f0  65 20 65 66 66 65 63 74  73 2e 20 46 6f 72 20 65  |e effects. For e|
00081400  78 61 6d 70 6c 65 20 70  75 74 63 28 69 2b 2b 29  |xample putc(i++)|
00081410  20 6d 61 79 20 63 61 75  73 65 20 69 20 74 6f 20  | may cause i to |
00081420  62 65 20 69 6e 63 72 65  6d 65 6e 74 65 64 20 74  |be incremented t|
00081430  77 69 63 65 2e 00 00 00  44 41 54 41 30 01 00 00  |wice....DATA0...|
00081440  70 75 74 63 68 61 72 0a  53 79 6e 74 61 78 3a 09  |putchar.Syntax:.|
00081450  69 6e 74 20 70 75 74 63  68 61 72 20 28 69 6e 74  |int putchar (int|
00081460  20 63 29 3b 0a 48 65 61  64 65 72 3a 09 3c 73 74  | c);.Header:.<st|
00081470  64 69 6f 2e 68 3d 3e 73  74 64 69 6f 3e 0a 0a 52  |dio.h=>stdio>..R|
00081480  65 74 75 72 6e 73 3a 09  63 2c 20 6f 72 20 3c 45  |eturns:.c, or <E|
00081490  4f 46 3e 20 69 66 20 74  68 65 72 65 20 69 73 20  |OF> if there is |
000814a0  61 6e 20 65 72 72 6f 72  2e 0a 0a 54 68 69 73 20  |an error...This |
000814b0  66 75 6e 63 74 69 6f 6e  20 77 72 69 74 65 73 20  |function writes |
000814c0  74 68 65 20 63 68 61 72  61 63 74 65 72 20 69 6e  |the character in|
000814d0  20 2f 63 2f 20 74 6f 20  3c 73 74 64 6f 75 74 3e  | /c/ to <stdout>|
000814e0  2e 20 49 74 20 69 73 20  69 64 65 6e 74 69 63 61  |. It is identica|
000814f0  6c 20 74 6f 20 3c 70 75  74 63 3e 28 63 2c 73 74  |l to <putc>(c,st|
00081500  64 6f 75 74 29 2e 20 49  74 20 6d 61 79 20 62 65  |dout). It may be|
00081510  20 69 6d 70 6c 65 6d 65  6e 74 65 64 20 61 73 20  | implemented as |
00081520  61 20 6d 61 63 72 6f 20  73 6f 20 62 65 20 63 61  |a macro so be ca|
00081530  72 65 66 75 6c 20 6f 66  20 75 73 69 6e 67 20 65  |reful of using e|
00081540  78 70 72 65 73 73 69 6f  6e 73 20 77 68 69 63 68  |xpressions which|
00081550  20 6d 6f 64 69 66 79 20  6f 74 68 65 72 20 76 61  | modify other va|
00081560  72 69 61 62 6c 65 73 2e  44 41 54 41 e7 00 00 00  |riables.DATA....|
00081570  70 75 74 73 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |puts.Syntax:.int|
00081580  20 70 75 74 73 20 28 63  68 61 72 20 2a 73 74 72  | puts (char *str|
00081590  29 3b 0a 48 65 61 64 65  72 3a 09 3c 73 74 64 69  |);.Header:.<stdi|
000815a0  6f 2e 68 3d 3e 73 74 64  69 6f 3e 0a 0a 52 65 74  |o.h=>stdio>..Ret|
000815b0  75 72 6e 73 3a 09 3c 45  4f 46 3e 20 69 66 20 74  |urns:.<EOF> if t|
000815c0  68 65 72 65 20 69 73 20  61 6e 20 65 72 72 6f 72  |here is an error|
000815d0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000815e0  20 77 72 69 74 65 73 20  74 68 65 20 73 74 72 69  | writes the stri|
000815f0  6e 67 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |ng pointed to by|
00081600  20 2f 73 74 72 2f 2c 20  66 6f 6c 6c 6f 77 65 64  | /str/, followed|
00081610  20 62 79 20 61 20 6e 65  77 6c 69 6e 65 2c 20 74  | by a newline, t|
00081620  6f 20 3c 73 74 64 6f 75  74 3e 2e 20 54 68 65 20  |o <stdout>. The |
00081630  6e 75 6c 6c 20 74 65 72  6d 69 6e 61 74 6f 72 20  |null terminator |
00081640  69 73 20 6e 6f 74 20 77  72 69 74 74 65 6e 2e 00  |is not written..|
00081650  44 49 52 24 8c 02 00 00  8c 02 00 00 dc 18 08 00  |DIR$............|
00081660  46 ff ff ff a6 18 de 22  f5 01 00 00 13 00 00 00  |F......"........|
00081670  00 00 00 00 71 73 6f 72  74 00 00 00 d4 1a 08 00  |....qsort.......|
00081680  46 ff ff ff 75 3c bf 22  a2 00 00 00 13 00 00 00  |F...u<."........|
00081690  00 00 00 00 72 61 69 73  65 00 00 00 78 1b 08 00  |....raise...x...|
000816a0  46 ff ff ff cd 48 c5 22  b5 00 00 00 13 00 00 00  |F....H."........|
000816b0  00 00 00 00 72 61 6e 64  00 00 00 00 30 1c 08 00  |....rand....0...|
000816c0  46 fd ff ff 10 c7 84 2f  28 00 00 00 13 01 00 00  |F....../(.......|
000816d0  00 00 00 00 52 41 4e 44  5f 00 00 00 00 1d 08 00  |....RAND_.......|
000816e0  46 ff ff ff eb 4c 55 26  64 02 00 00 13 00 00 00  |F....LU&d.......|
000816f0  00 00 00 00 52 65 61 64  45 6e 74 72 69 65 73 00  |....ReadEntries.|
00081700  64 1f 08 00 46 ff ff ff  3b 5c dd 22 84 04 00 00  |d...F...;\."....|
00081710  13 00 00 00 00 00 00 00  72 65 61 6c 6c 6f 63 00  |........realloc.|
00081720  e8 23 08 00 46 ff ff ff  63 bd c0 22 4d 01 00 00  |.#..F...c.."M...|
00081730  13 00 00 00 00 00 00 00  72 65 6d 6f 76 65 00 00  |........remove..|
00081740  38 25 08 00 46 ff ff ff  d9 cc c0 22 97 01 00 00  |8%..F......"....|
00081750  13 00 00 00 00 00 00 00  72 65 6e 61 6d 65 00 00  |........rename..|
00081760  d0 26 08 00 46 ff ff ff  8e ac b5 24 cb 00 00 00  |.&..F......$....|
00081770  13 00 00 00 00 00 00 00  72 65 73 00 9c 27 08 00  |........res..'..|
00081780  46 ff ff ff 75 49 62 25  7b 01 00 00 13 00 00 00  |F...uIb%{.......|
00081790  00 00 00 00 52 65 73 6f  75 72 63 65 00 00 00 00  |....Resource....|
000817a0  18 29 08 00 46 fd ff ff  9d c7 84 2f c0 00 00 00  |.)..F....../....|
000817b0  13 01 00 00 00 00 00 00  52 65 73 6f 75 72 63 65  |........Resource|
000817c0  5f 00 00 00 14 2f 08 00  46 ff ff ff 4c 3b da 24  |_..../..F...L;.$|
000817d0  9b 00 00 00 13 00 00 00  00 00 00 00 72 65 73 73  |............ress|
000817e0  70 72 00 00 b0 2f 08 00  46 fd ff ff 23 c8 84 2f  |pr.../..F...#../|
000817f0  4c 00 00 00 13 01 00 00  00 00 00 00 72 65 73 73  |L...........ress|
00081800  70 72 5f 00 a8 31 08 00  46 fd ff ff 5b c8 84 2f  |pr_..1..F...[../|
00081810  74 00 00 00 13 01 00 00  00 00 00 00 72 65 73 5f  |t...........res_|
00081820  00 00 00 00 70 35 08 00  46 ff ff ff f2 b4 e4 22  |....p5..F......"|
00081830  10 02 00 00 13 00 00 00  00 00 00 00 72 65 74 75  |............retu|
00081840  72 6e 00 00 80 37 08 00  46 ff ff ff d8 50 c2 22  |rn...7..F....P."|
00081850  d3 00 00 00 13 00 00 00  00 00 00 00 72 65 77 69  |............rewi|
00081860  6e 64 00 00 54 38 08 00  46 fd ff ff cc c8 84 2f  |nd..T8..F....../|
00081870  2c 00 00 00 13 01 00 00  00 00 00 00 72 69 73 63  |,...........risc|
00081880  6f 73 5f 00 08 3a 08 00  46 fd ff ff f7 c8 84 2f  |os_..:..F....../|
00081890  88 00 00 00 13 01 00 00  00 00 00 00 72 6c 5f 00  |............rl_.|
000818a0  fc 3d 08 00 46 ff ff ff  9e 13 ed 24 25 02 00 00  |.=..F......$%...|
000818b0  13 00 00 00 00 00 00 00  72 6f 73 6c 69 62 00 00  |........roslib..|
000818c0  24 40 08 00 46 fd ff ff  61 c9 84 2f 8c 00 00 00  |$@..F...a../....|
000818d0  13 01 00 00 00 00 00 00  72 6f 5f 00 44 41 54 41  |........ro_.DATA|
000818e0  f5 01 00 00 71 73 6f 72  74 0a 53 79 6e 74 61 78  |....qsort.Syntax|
000818f0  3a 09 76 6f 69 64 20 71  73 6f 72 74 20 28 76 6f  |:.void qsort (vo|
00081900  69 64 20 2a 62 61 73 65  2c 20 3c 73 69 7a 65 5f  |id *base, <size_|
00081910  74 3e 20 6e 75 6d 2c 20  73 69 7a 65 5f 74 20 73  |t> num, size_t s|
00081920  69 7a 65 2c 20 69 6e 74  20 28 2a 66 75 6e 63 29  |ize, int (*func)|
00081930  20 28 76 6f 69 64 20 2a  2c 20 76 6f 69 64 20 2a  | (void *, void *|
00081940  29 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 74 64  |));.Header:.<std|
00081950  6c 69 62 2e 68 3d 3e 73  74 64 6c 69 62 3e 0a 0a  |lib.h=>stdlib>..|
00081960  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 73 6f  |This function so|
00081970  72 74 73 20 61 6e 20 61  72 72 61 79 20 6f 66 20  |rts an array of |
00081980  2f 6e 75 6d 2f 20 6f 62  6a 65 63 74 73 2c 20 65  |/num/ objects, e|
00081990  61 63 68 20 6f 66 20 77  68 69 63 68 20 69 73 20  |ach of which is |
000819a0  2f 73 69 7a 65 2f 20 62  79 74 65 73 20 6c 6f 6e  |/size/ bytes lon|
000819b0  67 2c 20 61 6e 64 20 77  68 6f 73 65 20 66 69 72  |g, and whose fir|
000819c0  73 74 20 6f 62 6a 65 63  74 20 69 73 20 70 6f 69  |st object is poi|
000819d0  6e 74 65 64 20 74 6f 20  62 79 20 2f 62 61 73 65  |nted to by /base|
000819e0  2f 20 69 6e 74 6f 20 61  73 63 65 6e 64 69 6e 67  |/ into ascending|
000819f0  20 6f 72 64 65 72 2e 0a  0a 54 68 65 20 66 75 6e  | order...The fun|
00081a00  63 74 69 6f 6e 20 77 68  69 63 68 20 6d 75 73 74  |ction which must|
00081a10  20 62 65 20 64 65 66 69  6e 65 64 20 62 79 20 79  | be defined by y|
00081a20  6f 75 20 69 73 20 63 61  6c 6c 65 64 20 77 69 74  |ou is called wit|
00081a30  68 20 70 6f 69 6e 74 65  72 73 20 74 6f 20 6f 62  |h pointers to ob|
00081a40  6a 65 63 74 73 2e 20 49  66 20 74 68 65 20 66 69  |jects. If the fi|
00081a50  72 73 74 20 69 73 20 6c  65 73 73 20 74 68 61 6e  |rst is less than|
00081a60  2c 20 65 71 75 61 6c 20  74 6f 2c 20 6f 72 20 67  |, equal to, or g|
00081a70  72 65 61 74 65 72 20 74  68 61 6e 20 74 68 65 20  |reater than the |
00081a80  73 65 63 6f 6e 64 20 74  68 65 6e 20 74 68 65 20  |second then the |
00081a90  66 75 6e 63 74 69 6f 6e  20 73 68 6f 75 6c 64 20  |function should |
00081aa0  72 65 74 75 72 6e 20 6c  65 73 73 20 74 68 61 6e  |return less than|
00081ab0  2c 20 65 71 75 61 6c 20  74 6f 2c 20 6f 72 20 67  |, equal to, or g|
00081ac0  72 65 61 74 65 72 20 74  68 61 6e 20 7a 65 72 6f  |reater than zero|
00081ad0  2e 00 00 00 44 41 54 41  a2 00 00 00 72 61 69 73  |....DATA....rais|
00081ae0  65 0a 53 79 6e 74 61 78  3a 09 69 6e 74 20 72 61  |e.Syntax:.int ra|
00081af0  69 73 65 20 28 69 6e 74  20 73 69 67 29 3b 0a 48  |ise (int sig);.H|
00081b00  65 61 64 65 72 3a 09 3c  73 69 67 6e 61 6c 2e 68  |eader:.<signal.h|
00081b10  3d 3e 73 69 67 6e 61 6c  3e 0a 0a 52 65 74 75 72  |=>signal>..Retur|
00081b20  6e 73 3a 09 5a 65 72 6f  20 69 66 20 73 75 63 63  |ns:.Zero if succ|
00081b30  65 73 73 66 75 6c 0a 0a  54 68 69 73 20 66 75 6e  |essful..This fun|
00081b40  63 74 69 6f 6e 20 73 65  6e 64 73 20 74 68 65 20  |ction sends the |
00081b50  73 69 67 6e 61 6c 20 2f  73 69 67 2f 20 74 6f 20  |signal /sig/ to |
00081b60  74 68 65 20 65 78 65 63  75 74 69 6e 67 20 70 72  |the executing pr|
00081b70  6f 67 72 61 6d 2e 00 00  44 41 54 41 b5 00 00 00  |ogram...DATA....|
00081b80  72 61 6e 64 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |rand.Syntax:.int|
00081b90  20 72 61 6e 64 20 28 76  6f 69 64 29 3b 0a 48 65  | rand (void);.He|
00081ba0  61 64 65 72 3a 09 3c 73  74 64 6c 69 62 2e 68 3d  |ader:.<stdlib.h=|
00081bb0  3e 73 74 64 6c 69 62 3e  0a 0a 52 65 74 75 72 6e  |>stdlib>..Return|
00081bc0  73 3a 09 41 20 70 73 75  65 64 6f 2d 72 61 6e 64  |s:.A psuedo-rand|
00081bd0  6f 6d 20 6e 75 6d 62 65  72 2e 0a 0a 54 68 69 73  |om number...This|
00081be0  20 66 75 6e 63 74 69 6f  6e 20 67 65 6e 65 72 61  | function genera|
00081bf0  74 65 73 20 61 20 70 73  75 65 64 6f 2d 72 61 6e  |tes a psuedo-ran|
00081c00  64 6f 6d 20 6e 75 6d 62  65 72 20 69 6e 20 74 68  |dom number in th|
00081c10  65 20 72 61 6e 67 65 20  66 72 6f 6d 20 30 20 74  |e range from 0 t|
00081c20  6f 20 3c 52 41 4e 44 5f  4d 41 58 3e 2e 00 00 00  |o <RAND_MAX>....|
00081c30  44 49 52 24 28 00 00 00  28 00 00 00 58 1c 08 00  |DIR$(...(...X...|
00081c40  46 ff ff ff 5a 8d df 22  a7 00 00 00 13 00 00 00  |F...Z.."........|
00081c50  00 00 00 00 4d 41 58 00  44 41 54 41 a7 00 00 00  |....MAX.DATA....|
00081c60  52 41 4e 44 5f 4d 41 58  20 54 68 65 20 6d 61 63  |RAND_MAX The mac|
00081c70  72 6f 20 7b 2f 7d 52 41  4e 44 5f 4d 41 58 7b 2f  |ro {/}RAND_MAX{/|
00081c80  7d 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |} is defined in |
00081c90  3c 73 74 64 6c 69 62 2e  68 3d 3e 73 74 64 6c 69  |<stdlib.h=>stdli|
00081ca0  62 3e 20 61 73 20 74 68  65 20 6d 61 78 69 6d 75  |b> as the maximu|
00081cb0  6d 20 76 61 6c 75 65 20  72 65 74 75 72 6e 65 64  |m value returned|
00081cc0  20 62 79 20 74 68 65 20  66 75 6e 63 74 69 6f 6e  | by the function|
00081cd0  20 3c 72 61 6e 64 3e 2e  20 49 6e 20 45 61 73 79  | <rand>. In Easy|
00081ce0  20 43 20 69 74 20 69 73  20 64 65 66 69 6e 65 64  | C it is defined|
00081cf0  20 61 73 20 30 78 37 66  66 66 66 66 66 66 2e 00  | as 0x7fffffff..|
00081d00  44 41 54 41 64 02 00 00  52 65 61 64 45 6e 74 72  |DATAd...ReadEntr|
00081d10  69 65 73 0a 53 79 6e 74  61 78 3a 09 69 6e 74 20  |ies.Syntax:.int |
00081d20  52 65 61 64 45 6e 74 72  69 65 73 20 28 63 68 61  |ReadEntries (cha|
00081d30  72 20 2a 70 61 74 68 6e  61 6d 65 2c 20 3c 6f 62  |r *pathname, <ob|
00081d40  6a 65 63 74 5f 69 6e 66  6f 3e 20 2a 62 75 66 2c  |ject_info> *buf,|
00081d50  20 69 6e 74 20 6e 75 6d  2c 20 69 6e 74 20 2a 6f  | int num, int *o|
00081d60  66 66 2c 20 69 6e 74 20  62 75 66 5f 73 69 7a 65  |ff, int buf_size|
00081d70  2c 20 63 68 61 72 20 2a  66 73 70 65 63 29 3b 0a  |, char *fspec);.|
00081d80  48 65 61 64 65 72 3a 09  3c 54 69 6d 73 4c 69 62  |Header:.<TimsLib|
00081d90  3a 46 69 6c 65 2e 68 3d  3e 46 69 6c 65 5f 54 4c  |:File.h=>File_TL|
00081da0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 4e 75 6d 62  |>..Returns:.Numb|
00081db0  65 72 20 6f 66 20 6f 62  6a 65 63 74 73 20 72 65  |er of objects re|
00081dc0  61 64 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ad...This functi|
00081dd0  6f 6e 20 72 65 61 64 73  20 65 6e 74 72 69 65 73  |on reads entries|
00081de0  20 66 72 6f 6d 20 61 20  64 69 72 65 63 74 6f 72  | from a director|
00081df0  79 2e 20 2f 70 61 74 68  6e 61 6d 65 2f 20 63 6f  |y. /pathname/ co|
00081e00  6e 74 61 69 6e 73 20 74  68 65 20 64 69 72 65 63  |ntains the direc|
00081e10  74 6f 72 79 20 6e 61 6d  65 2c 20 2f 62 75 66 2f  |tory name, /buf/|
00081e20  20 69 73 20 61 20 73 74  6f 72 65 20 6f 66 20 73  | is a store of s|
00081e30  69 7a 65 20 7b 2f 7d 62  75 66 5f 73 69 7a 65 7b  |ize {/}buf_size{|
00081e40  2f 7d 20 66 6f 72 20 74  68 65 20 6f 62 6a 65 63  |/} for the objec|
00081e50  74 20 69 6e 66 6f 20 72  65 61 64 2e 20 2f 6e 75  |t info read. /nu|
00081e60  6d 2f 20 69 73 20 74 68  65 20 6e 75 6d 62 65 72  |m/ is the number|
00081e70  20 6f 66 20 6f 62 6a 65  63 74 73 20 74 6f 20 72  | of objects to r|
00081e80  65 61 64 20 61 6e 64 20  7b 2f 7d 2a 6f 66 66 7b  |ead and {/}*off{|
00081e90  2f 7d 20 69 73 20 74 68  65 20 6f 66 66 73 65 74  |/} is the offset|
00081ea0  20 74 6f 20 73 74 61 72  74 20 66 72 6f 6d 2e 20  | to start from. |
00081eb0  2f 66 70 73 65 63 2f 20  64 65 74 65 72 6d 69 6e  |/fpsec/ determin|
00081ec0  65 73 20 74 68 65 20 6c  65 61 66 20 6e 61 6d 65  |es the leaf name|
00081ed0  73 20 74 6f 20 6d 61 74  63 68 20 2d 20 69 66 20  |s to match - if |
00081ee0  69 74 20 69 73 20 3c 4e  55 4c 4c 3e 20 74 68 65  |it is <NULL> the|
00081ef0  6e 20 22 2a 22 20 69 73  20 75 73 65 64 2e 0a 0a  |n "*" is used...|
00081f00  7b 2f 7d 2a 6f 66 66 7b  2f 7d 20 69 73 20 61 75  |{/}*off{/} is au|
00081f10  74 6f 6d 61 74 69 63 61  6c 6c 79 20 75 70 64 61  |tomatically upda|
00081f20  74 65 64 20 61 66 74 65  72 20 65 61 63 68 20 63  |ted after each c|
00081f30  61 6c 6c 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |all...This funct|
00081f40  69 6f 6e 20 69 73 20 65  71 75 69 76 61 6c 65 6e  |ion is equivalen|
00081f50  74 20 74 6f 20 53 57 49  20 4f 53 5f 47 42 50 42  |t to SWI OS_GBPB|
00081f60  20 31 30 2e 44 41 54 41  84 04 00 00 72 65 61 6c  | 10.DATA....real|
00081f70  6c 6f 63 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |loc.Syntax:.void|
00081f80  20 2a 72 65 61 6c 6c 6f  63 20 28 76 6f 69 64 20  | *realloc (void |
00081f90  2a 70 74 72 2c 20 73 69  7a 65 5f 74 20 73 69 7a  |*ptr, size_t siz|
00081fa0  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 74 64  |e);.Header:.<std|
00081fb0  6c 69 62 2e 68 3d 3e 73  74 64 6c 69 62 3e 0a 0a  |lib.h=>stdlib>..|
00081fc0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00081fd0  20 74 6f 20 73 70 61 63  65 2c 20 6f 72 20 3c 4e  | to space, or <N|
00081fe0  55 4c 4c 3e 20 69 66 20  66 61 69 6c 65 64 2e 0a  |ULL> if failed..|
00081ff0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
00082000  68 61 6e 67 65 73 20 74  68 65 20 73 69 7a 65 20  |hanges the size |
00082010  6f 66 20 61 20 73 70 61  63 65 20 69 6e 69 74 69  |of a space initi|
00082020  61 6c 6c 79 20 61 6c 6c  6f 63 61 74 65 64 20 77  |ally allocated w|
00082030  69 74 68 20 3c 63 61 6c  6c 6f 63 3e 2c 20 3c 6d  |ith <calloc>, <m|
00082040  61 6c 6c 6f 63 3e 2c 20  6f 72 20 72 65 61 6c 6c  |alloc>, or reall|
00082050  6f 63 2e 20 49 74 20 74  61 6b 65 73 20 61 20 70  |oc. It takes a p|
00082060  6f 69 6e 74 65 72 20 74  6f 20 74 68 65 20 73 70  |ointer to the sp|
00082070  61 63 65 20 69 6e 20 2f  70 74 72 2f 2c 20 61 6e  |ace in /ptr/, an|
00082080  64 20 61 20 6e 65 77 20  73 69 7a 65 20 69 6e 20  |d a new size in |
00082090  2f 73 69 7a 65 2f 2e 20  54 68 65 20 63 6f 6e 74  |/size/. The cont|
000820a0  65 6e 74 73 20 6f 66 20  74 68 65 20 73 70 61 63  |ents of the spac|
000820b0  65 20 61 72 65 20 75 6e  61 6c 74 65 72 65 64 20  |e are unaltered |
000820c0  28 61 6c 74 68 6f 75 67  68 20 74 68 65 79 20 6d  |(although they m|
000820d0  61 79 20 62 65 20 63 68  6f 70 70 65 64 20 6f 66  |ay be chopped of|
000820e0  66 20 74 68 65 20 6e 65  77 20 73 69 7a 65 20 69  |f the new size i|
000820f0  73 20 73 6d 61 6c 6c 65  72 29 2e 20 41 6e 79 20  |s smaller). Any |
00082100  6e 65 77 20 62 79 74 65  73 20 61 6c 6c 6f 63 61  |new bytes alloca|
00082110  74 65 64 20 68 61 76 65  20 75 6e 64 65 66 69 6e  |ted have undefin|
00082120  65 64 20 76 61 6c 75 65  73 2e 20 54 68 65 20 73  |ed values. The s|
00082130  70 61 63 65 20 6d 61 79  20 62 65 20 6d 6f 76 65  |pace may be move|
00082140  64 20 72 61 74 68 65 72  20 74 68 61 6e 20 6a 75  |d rather than ju|
00082150  73 74 20 65 78 74 65 6e  64 65 64 20 61 6e 64 20  |st extended and |
00082160  73 6f 20 74 68 69 73 20  66 75 6e 63 74 69 6f 6e  |so this function|
00082170  20 72 65 74 75 72 6e 73  20 61 20 6e 65 77 20 70  | returns a new p|
00082180  6f 69 6e 74 65 72 2e 0a  0a 49 66 20 2f 70 74 72  |ointer...If /ptr|
00082190  2f 20 69 73 20 3c 4e 55  4c 4c 3e 20 74 68 65 6e  |/ is <NULL> then|
000821a0  20 74 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 62  | this function b|
000821b0  65 68 61 76 65 73 20 61  73 20 3c 6d 61 6c 6c 6f  |ehaves as <mallo|
000821c0  63 3e 2c 20 65 6c 73 65  20 69 66 20 2f 73 69 7a  |c>, else if /siz|
000821d0  65 2f 20 69 73 20 7a 65  72 6f 20 74 68 65 6e 20  |e/ is zero then |
000821e0  74 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 62 65  |this function be|
000821f0  68 61 76 65 73 20 61 73  20 3c 66 72 65 65 3e 2e  |haves as <free>.|
00082200  20 49 66 20 74 68 65 20  73 70 61 63 65 20 63 61  | If the space ca|
00082210  6e 6e 6f 74 20 62 65 20  72 65 61 6c 6c 6f 63 61  |nnot be realloca|
00082220  74 65 64 20 74 68 65 6e  20 74 68 65 20 63 6f 6e  |ted then the con|
00082230  74 65 6e 74 73 20 61 72  65 20 75 6e 63 68 61 6e  |tents are unchan|
00082240  67 65 64 2e 20 48 6f 77  65 76 65 72 2c 20 74 68  |ged. However, th|
00082250  65 20 66 75 6e 63 74 69  6f 6e 20 77 69 6c 6c 20  |e function will |
00082260  72 65 74 75 72 6e 20 4e  55 4c 4c 20 73 6f 20 79  |return NULL so y|
00082270  6f 75 20 77 69 6c 6c 20  6e 6f 74 20 62 65 20 61  |ou will not be a|
00082280  62 6c 65 20 74 6f 20 61  63 63 65 73 73 20 74 68  |ble to access th|
00082290  65 20 6d 65 6d 6f 72 79  20 75 73 69 6e 67 20 74  |e memory using t|
000822a0  68 65 20 6f 72 69 67 69  6e 61 6c 20 70 6f 69 6e  |he original poin|
000822b0  74 65 72 2e 20 54 68 65  72 65 66 6f 72 65 2c 20  |ter. Therefore, |
000822c0  64 6f 20 6e 6f 74 20 75  73 65 20 74 68 65 20 66  |do not use the f|
000822d0  6f 6c 6c 6f 77 69 6e 67  20 63 6f 64 65 3a 0a 0a  |ollowing code:..|
000822e0  7b 66 43 6f 64 65 7d 64  6f 20 5c 7b 0a 09 7b 66  |{fCode}do \{..{f|
000822f0  43 6f 64 65 7d 73 69 7a  65 20 2d 3d 20 31 30 32  |Code}size -= 102|
00082300  34 3b 0a 09 7b 66 43 6f  64 65 7d 73 70 61 63 65  |4;..{fCode}space|
00082310  20 3d 20 28 63 68 61 72  20 2a 29 20 72 65 61 6c  | = (char *) real|
00082320  6c 6f 63 20 28 73 70 61  63 65 2c 73 69 7a 65 29  |loc (space,size)|
00082330  3b 0a 7b 66 43 6f 64 65  7d 7d 20 77 68 69 6c 65  |;.{fCode}} while|
00082340  20 28 73 70 61 63 65 3d  3d 4e 55 4c 4c 29 3b 7b  | (space==NULL);{|
00082350  66 7d 0a 0a 55 73 65 20  69 6e 73 74 65 61 64 3a  |f}..Use instead:|
00082360  0a 0a 7b 66 43 6f 64 65  7d 64 6f 20 5c 7b 0a 09  |..{fCode}do \{..|
00082370  7b 66 43 6f 64 65 7d 73  69 7a 65 20 2d 3d 20 31  |{fCode}size -= 1|
00082380  30 32 34 3b 0a 09 7b 66  43 6f 64 65 7d 6e 65 77  |024;..{fCode}new|
00082390  73 70 61 63 65 20 3d 20  28 63 68 61 72 20 2a 29  |space = (char *)|
000823a0  20 72 65 61 6c 6c 6f 63  20 28 73 70 61 63 65 2c  | realloc (space,|
000823b0  20 73 69 7a 65 29 3b 0a  7b 66 43 6f 64 65 7d 7d  | size);.{fCode}}|
000823c0  20 77 68 69 6c 65 20 28  6e 65 77 73 70 61 63 65  | while (newspace|
000823d0  3d 3d 4e 55 4c 4c 29 3b  0a 73 70 61 63 65 3d 6e  |==NULL);.space=n|
000823e0  65 77 73 70 61 63 65 3b  44 41 54 41 4d 01 00 00  |ewspace;DATAM...|
000823f0  72 65 6d 6f 76 65 0a 53  79 6e 74 61 78 3a 09 69  |remove.Syntax:.i|
00082400  6e 74 20 72 65 6d 6f 76  65 20 28 63 68 61 72 20  |nt remove (char |
00082410  2a 66 69 6c 65 6e 61 6d  65 29 3b 0a 48 65 61 64  |*filename);.Head|
00082420  65 72 3a 09 3c 73 74 64  69 6f 2e 68 3d 3e 73 74  |er:.<stdio.h=>st|
00082430  64 69 6f 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 5a  |dio>..Returns:.Z|
00082440  65 72 6f 20 69 66 20 74  68 65 20 66 69 6c 65 20  |ero if the file |
00082450  69 73 20 72 65 6d 6f 76  65 64 2e 0a 0a 54 68 69  |is removed...Thi|
00082460  73 20 66 75 6e 63 74 69  6f 6e 20 61 74 74 65 6d  |s function attem|
00082470  70 74 73 20 74 6f 20 72  65 6d 6f 76 65 20 74 68  |pts to remove th|
00082480  65 20 66 69 6c 65 20 77  68 6f 73 65 20 6e 61 6d  |e file whose nam|
00082490  65 20 69 73 20 63 6f 6e  74 61 69 6e 65 64 20 69  |e is contained i|
000824a0  6e 20 66 69 6c 65 6e 61  6d 65 2e 20 54 68 69 73  |n filename. This|
000824b0  20 69 73 20 65 71 75 69  76 61 6c 65 6e 74 20 74  | is equivalent t|
000824c0  6f 20 3c 2a 44 65 6c 65  74 65 3d 3e 2a 48 65 6c  |o <*Delete=>*Hel|
000824d0  70 20 44 65 6c 65 74 65  3e 20 6f 72 20 3c 4f 53  |p Delete> or <OS|
000824e0  5f 46 69 6c 65 20 36 3d  3e 53 57 49 3a 6f 73 5f  |_File 6=>SWI:os_|
000824f0  66 69 6c 65 36 3e 2e 20  49 66 20 74 68 65 20 66  |file6>. If the f|
00082500  69 6c 65 20 69 73 20 6f  70 65 6e 2c 20 74 68 65  |ile is open, the|
00082510  20 66 75 6e 63 74 69 6f  6e 20 77 69 6c 6c 20 61  | function will a|
00082520  6c 6d 6f 73 74 20 63 65  72 74 61 69 6e 6c 79 20  |lmost certainly |
00082530  66 61 69 6c 2e 00 00 00  44 41 54 41 97 01 00 00  |fail....DATA....|
00082540  72 65 6e 61 6d 65 0a 53  79 6e 74 61 78 3a 09 69  |rename.Syntax:.i|
00082550  6e 74 20 72 65 6e 61 6d  65 20 28 63 68 61 72 20  |nt rename (char |
00082560  2a 6f 6c 64 2c 20 63 68  61 72 20 2a 6e 65 77 29  |*old, char *new)|
00082570  3b 0a 48 65 61 64 65 72  3a 09 3c 73 74 64 69 6f  |;.Header:.<stdio|
00082580  2e 68 3d 3e 73 74 64 69  6f 3e 0a 0a 52 65 74 75  |.h=>stdio>..Retu|
00082590  72 6e 73 3a 09 5a 65 72  6f 20 69 66 20 74 68 65  |rns:.Zero if the|
000825a0  20 66 69 6c 65 20 69 73  20 72 65 6e 61 6d 65 64  | file is renamed|
000825b0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000825c0  20 72 65 6e 61 6d 65 73  20 74 68 65 20 66 69 6c  | renames the fil|
000825d0  65 20 77 68 6f 73 65 20  6e 61 6d 65 20 69 73 20  |e whose name is |
000825e0  69 6e 20 6f 6c 64 2c 20  74 6f 20 74 68 65 20 6e  |in old, to the n|
000825f0  61 6d 65 20 69 6e 20 6e  65 77 2e 20 54 68 69 73  |ame in new. This|
00082600  20 69 73 20 65 71 75 69  76 61 6c 65 6e 74 20 74  | is equivalent t|
00082610  6f 20 3c 2a 52 65 6e 61  6d 65 3d 3e 2a 48 65 6c  |o <*Rename=>*Hel|
00082620  70 20 52 65 6e 61 6d 65  3e 20 6f 72 20 3c 4f 53  |p Rename> or <OS|
00082630  5f 46 53 43 6f 6e 74 72  6f 6c 20 32 35 3d 3e 53  |_FSControl 25=>S|
00082640  57 49 3a 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 3e  |WI:OS_FSControl>|
00082650  2e 20 49 66 20 74 68 65  20 66 69 6c 65 20 69 6e  |. If the file in|
00082660  20 6e 65 77 20 61 6c 72  65 61 64 79 20 65 78 69  | new already exi|
00082670  73 74 73 20 74 68 65 20  61 74 74 65 6d 70 74 20  |sts the attempt |
00082680  77 69 6c 6c 20 66 61 69  6c 2e 20 49 66 20 74 68  |will fail. If th|
00082690  65 20 61 74 74 65 6d 70  74 20 66 61 69 6c 73 2c  |e attempt fails,|
000826a0  20 74 68 65 20 66 69 6c  65 20 77 69 6c 6c 20 73  | the file will s|
000826b0  74 69 6c 6c 20 62 65 20  63 61 6c 6c 65 64 20 62  |till be called b|
000826c0  79 20 69 74 73 20 6f 6c  64 20 6e 61 6d 65 2e 00  |y its old name..|
000826d0  44 41 54 41 cb 00 00 00  72 65 73 2e 68 0a 54 68  |DATA....res.h.Th|
000826e0  69 73 20 68 65 61 64 65  72 20 64 65 63 6c 61 72  |is header declar|
000826f0  65 73 20 66 75 6e 63 74  69 6f 6e 73 20 66 6f 72  |es functions for|
00082700  20 68 61 6e 64 6c 69 6e  67 20 72 65 73 6f 75 72  | handling resour|
00082710  63 65 20 66 69 6c 65 73  20 28 69 65 20 66 69 6c  |ce files (ie fil|
00082720  65 73 20 77 69 74 68 69  6e 20 74 68 65 20 61 70  |es within the ap|
00082730  70 6c 69 63 61 74 69 6f  6e 20 64 69 72 65 63 74  |plication direct|
00082740  6f 72 79 29 2e 0a 0a 46  75 6e 63 74 69 6f 6e 73  |ory)...Functions|
00082750  3a 0a 0a 23 49 6e 64 65  6e 74 20 34 0a 23 54 61  |:..#Indent 4.#Ta|
00082760  62 6c 65 20 32 20 32 31  0a 3c 72 65 73 5f 69 6e  |ble 2 21.<res_in|
00082770  69 74 3e 0a 3c 72 65 73  5f 66 69 6e 64 6e 61 6d  |it>.<res_findnam|
00082780  65 3e 0a 3c 72 65 73 5f  6f 70 65 6e 66 69 6c 65  |e>.<res_openfile|
00082790  3e 0a 23 45 6e 64 54 61  62 6c 65 00 44 41 54 41  |>.#EndTable.DATA|
000827a0  7b 01 00 00 44 65 73 6b  4c 69 62 3a 52 65 73 6f  |{...DeskLib:Reso|
000827b0  75 72 63 65 2e 68 0a 56  65 72 73 69 6f 6e 3a 20  |urce.h.Version: |
000827c0  31 2e 30 32 20 28 44 65  63 20 31 39 39 34 29 0a  |1.02 (Dec 1994).|
000827d0  23 6c 69 6e 65 0a 54 68  69 73 20 68 65 61 64 65  |#line.This heade|
000827e0  72 20 64 65 63 6c 61 72  65 73 20 66 75 6e 63 74  |r declares funct|
000827f0  69 6f 6e 73 20 66 6f 72  20 68 61 6e 64 6c 69 6e  |ions for handlin|
00082800  67 20 72 65 73 6f 75 72  63 65 20 66 69 6c 65 73  |g resource files|
00082810  20 28 69 65 20 66 69 6c  65 73 20 77 69 74 68 69  | (ie files withi|
00082820  6e 20 74 68 65 20 61 70  70 6c 69 63 61 74 69 6f  |n the applicatio|
00082830  6e 20 64 69 72 65 63 74  6f 72 79 29 2e 0a 0a 46  |n directory)...F|
00082840  75 6e 63 74 69 6f 6e 73  3a 0a 0a 23 69 6e 64 65  |unctions:..#inde|
00082850  6e 74 20 33 0a 23 54 61  62 6c 65 20 63 6f 6c 75  |nt 3.#Table colu|
00082860  6d 6e 73 20 32 0a 3c 52  65 73 6f 75 72 63 65 5f  |mns 2.<Resource_|
00082870  49 6e 69 74 69 61 6c 69  73 65 3e 0a 3c 52 65 73  |Initialise>.<Res|
00082880  6f 75 72 63 65 5f 49 6e  69 74 69 61 6c 69 73 65  |ource_Initialise|
00082890  50 61 74 68 3e 0a 3c 52  65 73 6f 75 72 63 65 5f  |Path>.<Resource_|
000828a0  4c 6f 61 64 53 70 72 69  74 65 73 3e 0a 23 45 6e  |LoadSprites>.#En|
000828b0  64 54 61 62 6c 65 0a 0a  23 49 6e 64 65 6e 74 20  |dTable..#Indent |
000828c0  30 0a 56 61 72 69 61 62  6c 65 73 3a 0a 0a 23 69  |0.Variables:..#i|
000828d0  6e 64 65 6e 74 20 36 0a  23 74 61 62 6c 65 20 6c  |ndent 6.#table l|
000828e0  69 6e 65 73 20 31 0a 3c  72 65 73 6f 75 72 63 65  |ines 1.<resource|
000828f0  5f 70 61 74 68 6e 61 6d  65 3e 0a 3c 72 65 73 6f  |_pathname>.<reso|
00082900  75 72 63 65 5f 73 70 72  69 74 65 73 3e 0a 23 65  |urce_sprites>.#e|
00082910  6e 64 74 61 62 6c 65 00  44 49 52 24 c0 00 00 00  |ndtable.DIR$....|
00082920  c0 00 00 00 d8 29 08 00  46 ff ff ff 61 25 62 25  |.....)..F...a%b%|
00082930  b8 00 00 00 13 00 00 00  00 00 00 00 49 6e 69 74  |............Init|
00082940  69 61 6c 69 73 65 00 00  90 2a 08 00 46 ff ff ff  |ialise...*..F...|
00082950  38 2d 62 25 ba 00 00 00  13 00 00 00 00 00 00 00  |8-b%............|
00082960  49 6e 69 74 69 61 6c 69  73 65 50 61 74 68 00 00  |InitialisePath..|
00082970  4c 2b 08 00 46 ff ff ff  58 1c 62 25 57 01 00 00  |L+..F...X.b%W...|
00082980  13 00 00 00 00 00 00 00  70 61 74 68 6e 61 6d 65  |........pathname|
00082990  00 00 00 00 a4 2c 08 00  46 ff ff ff 32 66 62 25  |.....,..F...2fb%|
000829a0  fb 00 00 00 13 00 00 00  00 00 00 00 73 70 72 69  |............spri|
000829b0  74 65 73 00 a0 2d 08 00  46 ff ff ff 1c 91 62 25  |tes..-..F.....b%|
000829c0  74 01 00 00 13 00 00 00  00 00 00 00 4c 6f 61 64  |t...........Load|
000829d0  53 70 72 69 74 65 73 00  44 41 54 41 b8 00 00 00  |Sprites.DATA....|
000829e0  52 65 73 6f 75 72 63 65  5f 49 6e 69 74 69 61 6c  |Resource_Initial|
000829f0  69 73 65 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |ise.Syntax:.void|
00082a00  20 52 65 73 6f 75 72 63  65 5f 49 6e 69 74 69 61  | Resource_Initia|
00082a10  6c 69 73 65 20 28 63 68  61 72 20 2a 6e 61 6d 65  |lise (char *name|
00082a20  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00082a30  4c 69 62 3a 52 65 73 6f  75 72 63 65 2e 68 3d 3e  |Lib:Resource.h=>|
00082a40  52 65 73 6f 75 72 63 65  3e 0a 0a 54 68 69 73 20  |Resource>..This |
00082a50  66 75 6e 63 74 69 6f 6e  20 73 65 74 73 20 74 68  |function sets th|
00082a60  65 20 76 61 72 69 61 62  6c 65 20 3c 72 65 73 6f  |e variable <reso|
00082a70  75 72 63 65 5f 70 61 74  68 6e 61 6d 65 3e 20 74  |urce_pathname> t|
00082a80  6f 20 22 5c 3c 4e 61 6d  65 24 44 69 72 3e 2e 22  |o "\<Name$Dir>."|
00082a90  44 41 54 41 ba 00 00 00  52 65 73 6f 75 72 63 65  |DATA....Resource|
00082aa0  5f 49 6e 69 74 69 61 6c  69 73 65 50 61 74 68 0a  |_InitialisePath.|
00082ab0  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 52 65 73  |Syntax:.void Res|
00082ac0  6f 75 72 63 65 5f 49 6e  69 74 69 61 6c 69 73 65  |ource_Initialise|
00082ad0  50 61 74 68 20 28 63 68  61 72 20 2a 6e 61 6d 65  |Path (char *name|
00082ae0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00082af0  4c 69 62 3a 52 65 73 6f  75 72 63 65 2e 68 3d 3e  |Lib:Resource.h=>|
00082b00  52 65 73 6f 75 72 63 65  3e 0a 0a 54 68 69 73 20  |Resource>..This |
00082b10  66 75 6e 63 74 69 6f 6e  20 73 65 74 73 20 74 68  |function sets th|
00082b20  65 20 76 61 72 69 61 62  6c 65 20 3c 72 65 73 6f  |e variable <reso|
00082b30  75 72 63 65 5f 70 61 74  68 6e 61 6d 65 3e 20 74  |urce_pathname> t|
00082b40  6f 20 22 4e 61 6d 65 3a  22 2e 00 00 44 41 54 41  |o "Name:"...DATA|
00082b50  57 01 00 00 72 65 73 6f  75 72 63 65 5f 70 61 74  |W...resource_pat|
00082b60  68 6e 61 6d 65 0a 54 68  65 20 76 61 72 69 61 62  |hname.The variab|
00082b70  6c 65 20 7b 2f 7d 72 65  73 6f 75 72 63 65 5f 70  |le {/}resource_p|
00082b80  61 74 68 6e 61 6d 65 7b  2f 7d 20 69 73 20 64 65  |athname{/} is de|
00082b90  66 69 6e 65 64 20 69 6e  20 3c 44 65 73 6b 4c 69  |fined in <DeskLi|
00082ba0  62 3a 52 65 73 6f 75 72  63 65 2e 68 3d 3e 52 65  |b:Resource.h=>Re|
00082bb0  73 6f 75 72 63 65 3e 2e  20 49 74 20 69 73 20 61  |source>. It is a|
00082bc0  20 73 74 72 69 6e 67 20  28 7b 2f 7d 63 68 61 72  | string ({/}char|
00082bd0  20 2a 7b 2f 7d 29 20 77  68 69 63 68 20 69 73 20  | *{/}) which is |
00082be0  75 73 65 64 20 61 73 20  61 20 70 72 65 66 69 78  |used as a prefix|
00082bf0  20 66 6f 72 20 61 6c 6c  20 70 61 74 68 6e 61 6d  | for all pathnam|
00082c00  65 73 20 75 73 65 64 20  62 79 20 44 65 73 6b 4c  |es used by DeskL|
00082c10  69 62 20 66 6f 72 20 6c  6f 61 64 69 6e 67 20 72  |ib for loading r|
00082c20  65 73 6f 75 72 63 65 20  66 69 6c 65 73 2e 20 49  |esource files. I|
00082c30  74 20 69 73 20 73 65 74  20 74 6f 20 62 65 20 65  |t is set to be e|
00082c40  69 74 68 65 72 20 22 5c  3c 4e 61 6d 65 24 44 69  |ither "\<Name$Di|
00082c50  72 3e 2e 22 20 6f 72 20  22 4e 61 6d 65 3a 22 20  |r>." or "Name:" |
00082c60  62 79 20 74 68 65 20 66  75 6e 63 74 69 6f 6e 20  |by the function |
00082c70  3c 52 65 73 6f 75 72 63  65 5f 49 6e 69 74 69 61  |<Resource_Initia|
00082c80  6c 69 73 65 3e 20 6f 72  20 3c 52 65 73 6f 75 72  |lise> or <Resour|
00082c90  63 65 5f 49 6e 69 74 69  61 6c 69 73 65 50 61 74  |ce_InitialisePat|
00082ca0  68 3e 2e 00 44 41 54 41  fb 00 00 00 72 65 73 6f  |h>..DATA....reso|
00082cb0  75 72 63 65 5f 73 70 72  69 74 65 73 0a 54 68 65  |urce_sprites.The|
00082cc0  20 76 61 72 69 61 62 6c  65 20 7b 2a 7d 72 65 73  | variable {*}res|
00082cd0  6f 75 72 63 65 5f 73 70  72 69 74 65 73 7b 2a 7d  |ource_sprites{*}|
00082ce0  20 69 6e 64 69 63 61 74  65 73 20 61 20 73 70 72  | indicates a spr|
00082cf0  69 74 65 20 61 72 65 61  20 63 6f 6e 74 61 69 6e  |ite area contain|
00082d00  69 6e 67 20 73 70 72 69  74 65 73 20 62 65 6c 6f  |ing sprites belo|
00082d10  6e 67 69 6e 67 20 74 6f  20 79 6f 75 72 20 74 61  |nging to your ta|
00082d20  73 6b 2e 20 49 66 20 79  6f 75 20 68 61 76 65 20  |sk. If you have |
00082d30  6e 6f 74 20 6c 6f 61 64  65 64 20 61 6e 79 20 77  |not loaded any w|
00082d40  69 74 68 20 3c 52 65 73  6f 75 72 63 65 5f 4c 6f  |ith <Resource_Lo|
00082d50  61 64 53 70 72 69 74 65  73 3e 2c 20 69 74 20 77  |adSprites>, it w|
00082d60  69 6c 6c 20 70 6f 69 6e  74 20 74 6f 20 74 68 65  |ill point to the|
00082d70  20 77 69 6d 70 20 73 70  72 69 74 65 20 61 72 65  | wimp sprite are|
00082d80  61 2e 20 49 74 20 69 73  20 6f 66 20 74 79 70 65  |a. It is of type|
00082d90  20 3c 73 70 72 69 74 65  5f 61 72 65 61 3e 2e 00  | <sprite_area>..|
00082da0  44 41 54 41 74 01 00 00  52 65 73 6f 75 72 63 65  |DATAt...Resource|
00082db0  5f 4c 6f 61 64 53 70 72  69 74 65 73 0a 53 79 6e  |_LoadSprites.Syn|
00082dc0  74 61 78 3a 09 76 6f 69  64 20 52 65 73 6f 75 72  |tax:.void Resour|
00082dd0  63 65 5f 4c 6f 61 64 53  70 72 69 74 65 73 20 28  |ce_LoadSprites (|
00082de0  76 6f 69 64 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |void);.Header:.<|
00082df0  44 65 73 6b 4c 69 62 3a  52 65 73 6f 75 72 63 65  |DeskLib:Resource|
00082e00  2e 68 3d 3e 52 65 73 6f  75 72 63 65 3e 0a 0a 54  |.h=>Resource>..T|
00082e10  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 6c 6f 61  |his function loa|
00082e20  64 73 20 74 68 65 20 27  53 70 72 69 74 65 73 27  |ds the 'Sprites'|
00082e30  20 66 69 6c 65 20 61 6e  64 20 73 65 74 73 20 75  | file and sets u|
00082e40  70 20 3c 72 65 73 6f 75  72 63 65 5f 73 70 72 69  |p <resource_spri|
00082e50  74 65 73 3e 20 74 6f 20  70 6f 69 6e 74 20 74 6f  |tes> to point to|
00082e60  20 69 74 2e 20 59 6f 75  20 6d 75 73 74 20 68 61  | it. You must ha|
00082e70  76 65 20 61 6c 72 65 61  64 79 20 63 61 6c 6c 65  |ve already calle|
00082e80  64 20 3c 52 65 73 6f 75  72 63 65 5f 49 6e 69 74  |d <Resource_Init|
00082e90  69 61 6c 69 73 65 3e 20  6f 72 20 3c 52 65 73 6f  |ialise> or <Reso|
00082ea0  75 72 63 65 5f 49 6e 69  74 69 61 6c 69 73 65 50  |urce_InitialiseP|
00082eb0  61 74 68 3e 2e 20 54 6f  20 75 73 65 20 74 68 65  |ath>. To use the|
00082ec0  20 73 70 72 69 74 65 73  20 69 6e 20 79 6f 75 72  | sprites in your|
00082ed0  20 77 69 6e 64 6f 77 73  2c 20 63 61 6c 6c 20 7b  | windows, call {|
00082ee0  66 43 6f 64 65 7d 3c 54  65 6d 70 6c 61 74 65 5f  |fCode}<Template_|
00082ef0  55 73 65 53 70 72 69 74  65 41 72 65 61 3e 28 72  |UseSpriteArea>(r|
00082f00  65 73 6f 75 72 63 65 5f  73 70 72 69 74 65 73 29  |esource_sprites)|
00082f10  3b 7b 66 7d 44 41 54 41  9b 00 00 00 72 65 73 73  |;{f}DATA....ress|
00082f20  70 72 0a 54 68 69 73 20  68 65 61 64 65 72 20 64  |pr.This header d|
00082f30  65 63 6c 61 72 65 73 20  66 75 6e 63 74 69 6f 6e  |eclares function|
00082f40  73 20 66 6f 72 20 61 63  63 65 73 73 69 6e 67 20  |s for accessing |
00082f50  73 70 72 69 74 65 20 72  65 73 6f 75 72 63 65 73  |sprite resources|
00082f60  2e 0a 0a 46 75 6e 63 74  69 6f 6e 73 3a 0a 0a 23  |...Functions:..#|
00082f70  69 6e 64 65 6e 74 20 31  0a 23 74 61 62 6c 65 20  |indent 1.#table |
00082f80  63 6f 6c 75 6d 6e 73 20  32 0a 3c 72 65 73 73 70  |columns 2.<ressp|
00082f90  72 5f 69 6e 69 74 3e 0a  3c 72 65 73 73 70 72 5f  |r_init>.<resspr_|
00082fa0  61 72 65 61 3e 0a 23 65  6e 64 74 61 62 6c 65 00  |area>.#endtable.|
00082fb0  44 49 52 24 4c 00 00 00  4c 00 00 00 fc 2f 08 00  |DIR$L...L..../..|
00082fc0  46 ff ff ff 22 42 da 24  b2 00 00 00 13 00 00 00  |F..."B.$........|
00082fd0  00 00 00 00 61 72 65 61  00 00 00 00 b0 30 08 00  |....area.....0..|
00082fe0  46 ff ff ff d7 24 da 24  f8 00 00 00 13 00 00 00  |F....$.$........|
00082ff0  00 00 00 00 69 6e 69 74  00 00 00 00 44 41 54 41  |....init....DATA|
00083000  b2 00 00 00 72 65 73 73  70 72 5f 61 72 65 61 0a  |....resspr_area.|
00083010  53 79 6e 74 61 78 3a 09  3c 73 70 72 69 74 65 5f  |Syntax:.<sprite_|
00083020  61 72 65 61 3e 20 2a 72  65 73 73 70 72 5f 61 72  |area> *resspr_ar|
00083030  65 61 20 28 76 6f 69 64  29 3b 0a 48 65 61 64 65  |ea (void);.Heade|
00083040  72 3a 09 3c 72 65 73 73  70 72 2e 68 3d 3e 72 65  |r:.<resspr.h=>re|
00083050  73 73 70 72 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |sspr>..This func|
00083060  74 69 6f 6e 20 72 65 74  75 72 6e 73 20 61 20 70  |tion returns a p|
00083070  6f 69 6e 74 65 72 20 74  6f 20 74 68 65 20 73 70  |ointer to the sp|
00083080  72 69 74 65 20 61 72 65  61 20 69 6e 74 6f 20 77  |rite area into w|
00083090  68 69 63 68 20 79 6f 75  72 20 73 70 72 69 74 65  |hich your sprite|
000830a0  73 20 77 65 72 65 20 6c  6f 61 64 65 64 2e 00 00  |s were loaded...|
000830b0  44 41 54 41 f8 00 00 00  72 65 73 73 70 72 5f 69  |DATA....resspr_i|
000830c0  6e 69 74 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |nit.Syntax:.void|
000830d0  20 72 65 73 73 70 72 5f  69 6e 69 74 20 28 76 6f  | resspr_init (vo|
000830e0  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 72 65  |id);.Header:.<re|
000830f0  73 73 70 72 2e 68 3d 3e  72 65 73 73 70 72 3e 0a  |sspr.h=>resspr>.|
00083100  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 6d  |.This function m|
00083110  75 73 74 20 62 65 20 63  61 6c 6c 65 64 20 62 65  |ust be called be|
00083120  66 6f 72 65 20 61 6e 79  20 6f 74 68 65 72 20 2a  |fore any other *|
00083130  72 65 73 73 70 72 2a 20  66 75 6e 63 74 69 6f 6e  |resspr* function|
00083140  73 20 61 6e 64 20 62 65  66 6f 72 65 20 75 73 69  |s and before usi|
00083150  6e 67 20 3c 74 65 6d 70  6c 61 74 65 5f 69 6e 69  |ng <template_ini|
00083160  74 3e 2e 20 49 74 20 72  65 61 64 73 20 69 6e 20  |t>. It reads in |
00083170  79 6f 75 72 20 73 70 72  69 74 65 73 20 28 49 20  |your sprites (I |
00083180  61 73 73 75 6d 65 20 3c  72 65 73 5f 69 6e 69 74  |assume <res_init|
00083190  3e 20 6d 75 73 74 20 62  65 20 63 61 6c 6c 65 64  |> must be called|
000831a0  20 66 69 72 73 74 29 2e  44 49 52 24 74 00 00 00  | first).DIR$t...|
000831b0  74 00 00 00 1c 32 08 00  46 ff ff ff c9 b9 b5 24  |t....2..F......$|
000831c0  f0 00 00 00 13 00 00 00  00 00 00 00 66 69 6e 64  |............find|
000831d0  6e 61 6d 65 00 00 00 00  0c 33 08 00 46 ff ff ff  |name.....3..F...|
000831e0  70 b2 b5 24 42 01 00 00  13 00 00 00 00 00 00 00  |p..$B...........|
000831f0  69 6e 69 74 00 00 00 00  50 34 08 00 46 ff ff ff  |init....P4..F...|
00083200  e8 be b5 24 1e 01 00 00  13 00 00 00 00 00 00 00  |...$............|
00083210  6f 70 65 6e 66 69 6c 65  00 00 00 00 44 41 54 41  |openfile....DATA|
00083220  f0 00 00 00 72 65 73 5f  66 69 6e 64 6e 61 6d 65  |....res_findname|
00083230  0a 53 79 6e 74 61 78 3a  09 69 6e 74 20 72 65 73  |.Syntax:.int res|
00083240  5f 66 69 6e 64 6e 61 6d  65 20 28 63 68 61 72 20  |_findname (char |
00083250  2a 6c 65 61 66 2c 20 63  68 61 72 20 2a 62 75 66  |*leaf, char *buf|
00083260  29 3b 0a 48 65 61 64 65  72 3a 09 3c 72 65 73 2e  |);.Header:.<res.|
00083270  68 3d 3e 72 65 73 3e 0a  0a 52 65 74 75 72 6e 73  |h=>res>..Returns|
00083280  3a 09 3c 54 52 55 45 3e  20 28 61 6c 77 61 79 73  |:.<TRUE> (always|
00083290  21 29 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |!)...This functi|
000832a0  6f 6e 20 61 64 64 73 20  74 68 65 20 70 72 65 66  |on adds the pref|
000832b0  69 78 20 73 70 65 63 69  66 69 65 64 20 77 68 65  |ix specified whe|
000832c0  6e 20 63 61 6c 6c 69 6e  67 20 3c 72 65 73 5f 69  |n calling <res_i|
000832d0  6e 69 74 3e 2c 20 74 6f  20 74 68 65 20 6c 65 61  |nit>, to the lea|
000832e0  66 20 6e 61 6d 65 20 67  69 76 65 6e 20 61 6e 64  |f name given and|
000832f0  20 70 6c 61 63 65 73 20  74 68 65 20 72 65 73 75  | places the resu|
00083300  6c 74 20 69 6e 20 2f 62  75 66 2f 2e 44 41 54 41  |lt in /buf/.DATA|
00083310  42 01 00 00 72 65 73 5f  69 6e 69 74 0a 53 79 6e  |B...res_init.Syn|
00083320  74 61 78 3a 09 76 6f 69  64 20 72 65 73 5f 69 6e  |tax:.void res_in|
00083330  69 74 20 28 63 68 61 72  20 2a 70 72 6f 67 6e 61  |it (char *progna|
00083340  6d 65 29 3b 0a 48 65 61  64 65 72 3a 09 3c 72 65  |me);.Header:.<re|
00083350  73 2e 68 3d 3e 72 65 73  3e 0a 0a 54 68 69 73 20  |s.h=>res>..This |
00083360  66 75 6e 63 74 69 6f 6e  20 69 6e 69 74 69 61 6c  |function initial|
00083370  69 73 65 73 20 74 68 65  20 52 65 73 6f 75 72 63  |ises the Resourc|
00083380  65 20 73 79 73 74 65 6d  2e 20 59 6f 75 20 73 68  |e system. You sh|
00083390  6f 75 6c 64 20 63 61 6c  6c 20 69 74 20 77 69 74  |ould call it wit|
000833a0  68 20 74 68 65 20 6e 61  6d 65 20 6f 66 20 79 6f  |h the name of yo|
000833b0  75 72 20 70 72 6f 67 72  61 6d 2e 20 49 74 20 77  |ur program. It w|
000833c0  69 6c 6c 20 75 73 65 20  22 5c 3c 4d 79 50 72 6f  |ill use "\<MyPro|
000833d0  67 24 44 69 72 3e 2e 22  20 74 6f 20 70 72 65 66  |g$Dir>." to pref|
000833e0  69 78 20 72 65 73 6f 75  72 63 65 20 66 69 6c 65  |ix resource file|
000833f0  73 2c 20 69 66 20 79 6f  75 20 70 61 73 73 20 22  |s, if you pass "|
00083400  4d 79 50 72 6f 67 22 20  74 6f 20 69 74 20 28 73  |MyProg" to it (s|
00083410  6f 20 79 6f 75 20 6d 75  73 74 20 68 61 76 65 20  |o you must have |
00083420  64 65 66 69 6e 65 64 20  74 68 65 20 73 79 73 74  |defined the syst|
00083430  65 6d 20 76 61 72 69 61  62 6c 65 20 69 6e 20 79  |em variable in y|
00083440  6f 75 72 20 21 52 75 6e  20 66 69 6c 65 2e 00 00  |our !Run file...|
00083450  44 41 54 41 1e 01 00 00  72 65 73 5f 6f 70 65 6e  |DATA....res_open|
00083460  66 69 6c 65 0a 53 79 6e  74 61 78 3a 09 3c 46 49  |file.Syntax:.<FI|
00083470  4c 45 3e 20 2a 72 65 73  5f 6f 70 65 6e 66 69 6c  |LE> *res_openfil|
00083480  65 20 28 63 68 61 72 20  2a 6c 65 61 66 2c 20 63  |e (char *leaf, c|
00083490  68 61 72 20 2a 6d 6f 64  65 29 3b 0a 48 65 61 64  |har *mode);.Head|
000834a0  65 72 3a 09 3c 72 65 73  2e 68 3d 3e 72 65 73 3e  |er:.<res.h=>res>|
000834b0  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
000834c0  65 72 20 74 6f 20 74 68  65 20 66 69 6c 65 2c 20  |er to the file, |
000834d0  6f 72 20 3c 4e 55 4c 4c  3e 2e 0a 0a 54 68 69 73  |or <NULL>...This|
000834e0  20 66 75 6e 63 74 69 6f  6e 20 63 61 6c 6c 73 20  | function calls |
000834f0  3c 72 65 73 5f 66 69 6e  64 6e 61 6d 65 3e 20 6f  |<res_findname> o|
00083500  6e 20 74 68 65 20 67 69  76 65 6e 20 6c 65 61 66  |n the given leaf|
00083510  20 6e 61 6d 65 2c 20 61  6e 64 20 74 68 65 6e 20  | name, and then |
00083520  63 61 6c 6c 73 20 3c 66  6f 70 65 6e 3e 20 74 6f  |calls <fopen> to|
00083530  20 61 74 74 65 6d 70 74  20 74 6f 20 6f 70 65 6e  | attempt to open|
00083540  20 74 68 65 20 66 69 6c  65 20 61 63 63 6f 72 64  | the file accord|
00083550  69 6e 67 20 74 6f 20 74  68 65 20 3c 6d 6f 64 65  |ing to the <mode|
00083560  3d 3e 66 69 6c 65 5f 6d  6f 64 65 5f 3e 2e 00 00  |=>file_mode_>...|
00083570  44 41 54 41 10 02 00 00  72 65 74 75 72 6e 0a 54  |DATA....return.T|
00083580  68 69 73 20 6b 65 79 77  6f 72 64 20 69 6d 6d 65  |his keyword imme|
00083590  64 69 61 74 65 6c 79 20  6a 75 6d 70 73 20 6f 75  |diately jumps ou|
000835a0  74 20 6f 66 20 61 20 66  75 6e 63 74 69 6f 6e 20  |t of a function |
000835b0  62 61 63 6b 20 74 6f 20  74 68 65 20 70 6f 69 6e  |back to the poin|
000835c0  74 20 61 74 20 77 68 69  63 68 20 69 74 20 77 61  |t at which it wa|
000835d0  73 20 63 61 6c 6c 65 64  2e 20 49 74 20 6d 61 79  |s called. It may|
000835e0  20 62 65 20 66 6f 6c 6c  6f 77 65 64 20 62 79 20  | be followed by |
000835f0  61 20 76 61 6c 75 65 20  66 6f 72 20 74 68 65 20  |a value for the |
00083600  66 75 6e 63 74 69 6f 6e  20 74 6f 20 72 65 74 75  |function to retu|
00083610  72 6e 2c 20 69 66 20 74  68 65 20 66 75 6e 63 74  |rn, if the funct|
00083620  69 6f 6e 20 69 73 20 64  65 66 69 6e 65 64 20 61  |ion is defined a|
00083630  73 20 6f 6e 65 20 72 65  74 75 72 6e 69 6e 67 20  |s one returning |
00083640  76 61 6c 75 65 73 2e 0a  0a 65 67 0a 23 66 43 6f  |values...eg.#fCo|
00083650  64 65 0a 20 20 20 20 20  76 6f 69 64 20 74 65 73  |de.     void tes|
00083660  74 31 20 28 69 6e 74 20  61 2c 20 69 6e 74 20 2a  |t1 (int a, int *|
00083670  62 29 0a 20 20 20 20 20  5c 7b 0a 20 20 20 20 20  |b).     \{.     |
00083680  20 20 20 69 66 20 28 61  3d 3d 32 29 20 72 65 74  |   if (a==2) ret|
00083690  75 72 6e 3b 0a 20 20 20  20 20 20 20 20 62 5b 30  |urn;.        b[0|
000836a0  5d 3d 61 3b 0a 20 20 20  20 20 7d 0a 23 66 0a 0a  |]=a;.     }.#f..|
000836b0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 73 65  |This function se|
000836c0  74 73 20 74 68 65 20 66  69 72 73 74 20 65 6c 65  |ts the first ele|
000836d0  6d 65 6e 74 20 69 6e 20  74 68 65 20 61 72 72 61  |ment in the arra|
000836e0  79 20 2f 62 2f 20 74 6f  20 74 68 65 20 76 61 6c  |y /b/ to the val|
000836f0  75 65 20 6f 66 20 2f 61  2f 2c 20 73 6f 20 6c 6f  |ue of /a/, so lo|
00083700  6e 67 20 61 73 20 2f 61  2f 20 69 73 20 6e 6f 74  |ng as /a/ is not|
00083710  20 32 2e 0a 0a 23 66 43  6f 64 65 0a 20 20 20 20  | 2...#fCode.    |
00083720  69 6e 74 20 73 71 75 61  72 65 20 28 69 6e 74 20  |int square (int |
00083730  61 29 0a 20 20 20 20 5c  7b 0a 20 20 20 20 20 20  |a).    \{.      |
00083740  20 20 72 65 74 75 72 6e  20 61 2a 61 3b 0a 20 20  |  return a*a;.  |
00083750  20 20 7d 0a 23 66 0a 0a  54 68 69 73 20 66 75 6e  |  }.#f..This fun|
00083760  63 74 69 6f 6e 20 72 65  74 75 72 6e 73 20 74 68  |ction returns th|
00083770  65 20 73 71 75 61 72 65  20 6f 66 20 2f 61 2f 2e  |e square of /a/.|
00083780  44 41 54 41 d3 00 00 00  72 65 77 69 6e 64 0a 53  |DATA....rewind.S|
00083790  79 6e 74 61 78 3a 09 76  6f 69 64 20 72 65 77 69  |yntax:.void rewi|
000837a0  6e 64 20 28 3c 46 49 4c  45 3e 20 2a 73 74 72 65  |nd (<FILE> *stre|
000837b0  61 6d 29 3b 0a 48 65 61  64 65 72 3a 09 3c 73 74  |am);.Header:.<st|
000837c0  64 69 6f 2e 68 3d 3e 73  74 64 69 6f 3e 0a 0a 54  |dio.h=>stdio>..T|
000837d0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 65 74  |his function set|
000837e0  73 20 74 68 65 20 66 69  6c 65 20 70 6f 69 6e 74  |s the file point|
000837f0  65 72 20 66 6f 72 20 74  68 65 20 73 74 72 65 61  |er for the strea|
00083800  6d 20 74 6f 20 74 68 65  20 62 65 67 69 6e 6e 69  |m to the beginni|
00083810  6e 67 20 6f 66 20 74 68  65 20 66 69 6c 65 2e 20  |ng of the file. |
00083820  49 74 20 69 73 20 65 71  75 69 76 61 6c 65 6e 74  |It is equivalent|
00083830  20 74 6f 20 3c 66 73 65  65 6b 3e 28 73 74 72 65  | to <fseek>(stre|
00083840  61 6d 2c 20 30 2c 20 3c  53 45 45 4b 5f 53 45 54  |am, 0, <SEEK_SET|
00083850  3e 29 3b 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |>);.DIR$,...,...|
00083860  80 38 08 00 46 fd ff ff  34 7b 5a 26 87 01 00 00  |.8..F...4{Z&....|
00083870  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00083880  44 41 54 41 87 01 00 00  52 49 53 43 20 4f 53 20  |DATA....RISC OS |
00083890  46 75 6e 63 74 69 6f 6e  73 0a 52 49 53 43 20 4f  |Functions.RISC O|
000838a0  53 20 46 75 6e 63 74 69  6f 6e 73 20 61 72 65 20  |S Functions are |
000838b0  70 72 6f 76 69 64 65 64  20 62 79 20 65 61 63 68  |provided by each|
000838c0  20 6f 66 20 74 68 65 20  41 72 63 68 69 6d 65 64  | of the Archimed|
000838d0  65 73 20 43 20 63 6f 6d  70 69 6c 65 72 73 2c 20  |es C compilers, |
000838e0  61 6e 64 20 61 6c 73 6f  20 62 79 20 74 68 65 20  |and also by the |
000838f0  66 72 65 65 77 61 72 65  20 6c 69 62 72 61 72 69  |freeware librari|
00083900  65 73 20 22 44 65 73 6b  4c 69 62 22 20 61 6e 64  |es "DeskLib" and|
00083910  20 22 54 69 6d 73 4c 69  62 22 2e 0a 0a 23 53 70  | "TimsLib"...#Sp|
00083920  72 69 74 65 20 32 30 38  2c 31 32 38 20 21 61 6e  |rite 208,128 !an|
00083930  73 69 63 3b 69 6e 64 65  6e 74 20 32 32 0a 3c 44  |sic;indent 22.<D|
00083940  65 73 6b 74 6f 70 20 43  20 28 41 63 6f 72 6e 29  |esktop C (Acorn)|
00083950  3d 3e 72 6f 5f 61 6e 73  69 63 5f 3e 0a 0a 0a 23  |=>ro_ansic_>...#|
00083960  53 70 72 69 74 65 20 32  30 38 2c 32 33 36 20 21  |Sprite 208,236 !|
00083970  65 61 73 79 63 0a 3c 45  61 73 79 20 43 20 28 42  |easyc.<Easy C (B|
00083980  65 65 62 75 67 29 3d 3e  72 6f 5f 65 61 73 79 63  |eebug)=>ro_easyc|
00083990  5f 3e 0a 0a 0a 23 53 70  72 69 74 65 20 32 30 38  |_>...#Sprite 208|
000839a0  2c 33 34 34 20 21 64 65  73 6b 6c 69 62 0a 3c 44  |,344 !desklib.<D|
000839b0  65 73 6b 4c 69 62 20 28  46 72 65 65 77 61 72 65  |eskLib (Freeware|
000839c0  29 3d 3e 72 6f 5f 64 6c  69 62 5f 3e 0a 0a 0a 23  |)=>ro_dlib_>...#|
000839d0  53 70 72 69 74 65 20 32  30 38 2c 34 35 32 20 21  |Sprite 208,452 !|
000839e0  74 69 6d 73 6c 69 62 0a  3c 54 69 6d 73 4c 69 62  |timslib.<TimsLib|
000839f0  20 28 46 72 65 65 77 61  72 65 29 3d 3e 72 6f 5f  | (Freeware)=>ro_|
00083a00  74 6c 69 62 5f 3e 0a 00  44 49 52 24 88 00 00 00  |tlib_>..DIR$....|
00083a10  88 00 00 00 90 3a 08 00  46 fd ff ff 0e b6 ee 24  |.....:..F......$|
00083a20  9e 00 00 00 13 00 00 00  00 00 00 00 66 69 6c 65  |............file|
00083a30  5f 00 00 00 30 3b 08 00  46 fd ff ff 1b 2c ed 24  |_...0;..F....,.$|
00083a40  ab 01 00 00 13 00 00 00  00 00 00 00 67 72 61 70  |............grap|
00083a50  68 5f 00 00 dc 3c 08 00  46 fd ff ff 78 be ee 24  |h_...<..F...x..$|
00083a60  90 00 00 00 13 00 00 00  00 00 00 00 69 6f 5f 00  |............io_.|
00083a70  6c 3d 08 00 46 fd ff ff  1e 0f ef 24 8d 00 00 00  |l=..F......$....|
00083a80  13 00 00 00 00 00 00 00  6d 69 73 63 5f 00 00 00  |........misc_...|
00083a90  44 41 54 41 9e 00 00 00  46 69 6c 65 20 48 61 6e  |DATA....File Han|
00083aa0  64 6c 69 6e 67 20 46 75  6e 63 74 69 6f 6e 73 0a  |dling Functions.|
00083ab0  23 50 61 72 65 6e 74 20  72 6f 73 6c 69 62 0a 54  |#Parent roslib.T|
00083ac0  68 65 73 65 20 66 75 6e  63 74 69 6f 6e 73 20 61  |hese functions a|
00083ad0  6c 6c 20 61 63 74 20 6f  6e 20 66 69 6c 65 73 20  |ll act on files |
00083ae0  69 6e 20 73 6f 6d 65 20  77 61 79 2e 0a 0a 23 54  |in some way...#T|
00083af0  61 62 6c 65 20 6c 69 6e  65 73 20 31 0a 3c 6f 73  |able lines 1.<os|
00083b00  5f 61 72 67 73 3e 0a 3c  6f 73 5f 66 69 6c 65 3e  |_args>.<os_file>|
00083b10  0a 3c 6f 73 5f 66 69 6e  64 3e 0a 3c 6f 73 5f 67  |.<os_find>.<os_g|
00083b20  62 70 62 3e 0a 23 45 6e  64 54 61 62 6c 65 00 00  |bpb>.#EndTable..|
00083b30  44 41 54 41 ab 01 00 00  47 72 61 70 68 69 63 73  |DATA....Graphics|
00083b40  20 46 75 6e 63 74 69 6f  6e 73 0a 23 50 61 72 65  | Functions.#Pare|
00083b50  6e 74 20 72 6f 73 6c 69  62 0a 54 68 65 73 65 20  |nt roslib.These |
00083b60  66 75 6e 63 74 69 6f 6e  73 20 61 6c 6c 20 61 66  |functions all af|
00083b70  66 65 63 74 20 74 68 65  20 73 63 72 65 65 6e 20  |fect the screen |
00083b80  64 69 73 70 6c 61 79 20  69 6e 20 73 6f 6d 65 20  |display in some |
00083b90  77 61 79 2e 0a 0a 23 69  6e 64 65 6e 74 20 35 0a  |way...#indent 5.|
00083ba0  23 54 61 62 6c 65 20 39  20 31 36 0a 3c 6f 73 5f  |#Table 9 16.<os_|
00083bb0  63 69 72 63 6c 65 3e 0a  3c 6f 73 5f 63 69 72 63  |circle>.<os_circ|
00083bc0  6c 65 66 69 6c 6c 3e 0a  3c 6f 73 5f 63 6c 67 3e  |lefill>.<os_clg>|
00083bd0  0a 3c 6f 73 5f 63 6c 73  3e 0a 3c 6f 73 5f 63 6f  |.<os_cls>.<os_co|
00083be0  6c 6f 75 72 3e 0a 3c 6f  73 5f 63 75 72 73 6f 72  |lour>.<os_cursor|
00083bf0  3e 0a 3c 6f 73 5f 64 72  61 77 3e 0a 3c 6f 73 5f  |>.<os_draw>.<os_|
00083c00  64 72 61 77 62 79 3e 0a  3c 6f 73 5f 66 69 6c 6c  |drawby>.<os_fill|
00083c10  3e 0a 3c 6f 73 5f 67 63  6f 6c 3e 0a 3c 6f 73 5f  |>.<os_gcol>.<os_|
00083c20  6d 6f 64 65 3e 0a 3c 6f  73 5f 6d 6f 76 65 3e 0a  |mode>.<os_move>.|
00083c30  3c 6f 73 5f 6d 6f 76 65  62 79 3e 0a 3c 6f 73 5f  |<os_moveby>.<os_|
00083c40  6f 72 69 67 69 6e 3e 0a  3c 6f 73 5f 70 61 6c 65  |origin>.<os_pale|
00083c50  74 74 65 3e 0a 3c 6f 73  5f 70 6c 6f 74 3e 0a 3c  |tte>.<os_plot>.<|
00083c60  6f 73 5f 70 6f 69 6e 74  3e 0a 3c 6f 73 5f 70 6f  |os_point>.<os_po|
00083c70  73 3e 0a 3c 6f 73 5f 72  65 63 74 61 6e 67 6c 65  |s>.<os_rectangle|
00083c80  3e 20 20 20 0a 3c 6f 73  5f 72 65 63 74 61 6e 67  |>   .<os_rectang|
00083c90  6c 65 66 69 6c 6c 3e 0a  3c 6f 73 5f 74 61 62 3e  |lefill>.<os_tab>|
00083ca0  0a 3c 6f 73 5f 74 69 6e  74 3e 0a 3c 6f 73 5f 76  |.<os_tint>.<os_v|
00083cb0  64 75 3e 0a 3c 6f 73 5f  76 64 75 71 3e 0a 3c 6f  |du>.<os_vduq>.<o|
00083cc0  73 5f 76 64 75 77 3e 0a  3c 6f 73 5f 76 70 6f 73  |s_vduw>.<os_vpos|
00083cd0  3e 0a 23 45 6e 64 54 61  62 6c 65 00 44 41 54 41  |>.#EndTable.DATA|
00083ce0  90 00 00 00 49 6e 70 75  74 2f 4f 75 74 70 75 74  |....Input/Output|
00083cf0  20 46 75 6e 63 74 69 6f  6e 73 0a 54 68 65 73 65  | Functions.These|
00083d00  20 66 75 6e 63 74 69 6f  6e 73 20 61 72 65 20 61  | functions are a|
00083d10  6c 6c 20 63 6f 6e 63 65  72 6e 65 64 20 77 69 74  |ll concerned wit|
00083d20  68 20 69 6e 70 75 74 20  61 6e 64 2f 6f 72 20 6f  |h input and/or o|
00083d30  75 74 70 75 74 2e 0a 0a  23 54 61 62 6c 65 20 31  |utput...#Table 1|
00083d40  20 31 36 0a 3c 6f 73 5f  61 64 76 61 6c 3e 0a 3c  | 16.<os_adval>.<|
00083d50  6f 73 5f 67 65 74 3e 0a  3c 6f 73 5f 69 6e 6b 65  |os_get>.<os_inke|
00083d60  79 3e 0a 23 45 6e 64 54  61 62 6c 65 44 41 54 41  |y>.#EndTableDATA|
00083d70  8d 00 00 00 4d 69 73 63  65 6c 6c 61 6e 65 6f 75  |....Miscellaneou|
00083d80  73 20 46 75 6e 63 74 69  6f 6e 73 0a 23 50 61 72  |s Functions.#Par|
00083d90  65 6e 74 20 72 6f 73 6c  69 62 0a 23 54 61 62 6c  |ent roslib.#Tabl|
00083da0  65 20 63 6f 6c 75 6d 6e  73 20 33 0a 3c 6f 73 5f  |e columns 3.<os_|
00083db0  62 79 74 65 3e 0a 3c 6f  73 5f 63 6c 69 3e 0a 3c  |byte>.<os_cli>.<|
00083dc0  6f 73 5f 72 6e 64 3e 0a  3c 6f 73 5f 73 6f 75 6e  |os_rnd>.<os_soun|
00083dd0  64 3e 0a 3c 6f 73 5f 73  77 69 3e 0a 3c 6f 73 5f  |d>.<os_swi>.<os_|
00083de0  73 77 69 78 3e 0a 3c 6f  73 5f 77 6f 72 64 3e 0a  |swix>.<os_word>.|
00083df0  23 45 6e 64 54 61 62 6c  65 00 00 00 44 41 54 41  |#EndTable...DATA|
00083e00  25 02 00 00 72 6f 73 6c  69 62 2e 68 0a 23 50 61  |%...roslib.h.#Pa|
00083e10  72 65 6e 74 20 72 6f 5f  65 61 73 79 63 5f 0a 54  |rent ro_easyc_.T|
00083e20  68 65 20 5c 3c 72 6f 73  6c 69 62 2e 68 5c 3e 20  |he \<roslib.h\> |
00083e30  68 65 61 64 65 72 20 64  65 66 69 6e 65 73 20 71  |header defines q|
00083e40  75 69 74 65 20 61 20 66  65 77 20 66 75 6e 63 74  |uite a few funct|
00083e50  69 6f 6e 73 20 77 68 69  63 68 20 61 63 63 65 73  |ions which acces|
00083e60  73 20 74 68 65 20 62 75  69 6c 74 20 69 6e 20 66  |s the built in f|
00083e70  65 61 74 75 72 65 73 20  69 6e 20 52 49 53 43 20  |eatures in RISC |
00083e80  4f 53 2e 20 4f 62 76 69  6f 75 73 6c 79 2c 20 70  |OS. Obviously, p|
00083e90  72 6f 67 72 61 6d 73 20  75 73 69 6e 67 20 74 68  |rograms using th|
00083ea0  65 73 65 20 66 75 6e 63  74 69 6f 6e 73 20 77 69  |ese functions wi|
00083eb0  6c 6c 20 6e 6f 74 20 62  65 20 70 6f 72 74 61 62  |ll not be portab|
00083ec0  6c 65 20 62 65 74 77 65  65 6e 20 64 69 66 66 65  |le between diffe|
00083ed0  72 65 6e 74 20 63 6f 6d  70 75 74 65 72 73 20 75  |rent computers u|
00083ee0  6e 6c 65 73 73 20 74 68  65 20 73 61 6d 65 20 66  |nless the same f|
00083ef0  75 6e 63 74 69 6f 6e 73  20 61 72 65 20 61 76 61  |unctions are ava|
00083f00  69 6c 61 62 6c 65 20 6f  6e 20 62 6f 74 68 2e 20  |ilable on both. |
00083f10  49 74 20 61 6c 73 6f 20  64 65 66 69 6e 65 73 20  |It also defines |
00083f20  66 6f 75 72 20 74 79 70  65 73 2e 0a 0a 46 75 6e  |four types...Fun|
00083f30  63 74 69 6f 6e 73 3a 0a  0a 23 49 6e 64 65 6e 74  |ctions:..#Indent|
00083f40  20 31 32 0a 23 54 61 62  6c 65 20 32 20 32 33 0a  | 12.#Table 2 23.|
00083f50  3c 47 72 61 70 68 69 63  73 3d 3e 72 6c 5f 67 72  |<Graphics=>rl_gr|
00083f60  61 70 68 5f 3e 0a 3c 46  69 6c 65 20 68 61 6e 64  |aph_>.<File hand|
00083f70  6c 69 6e 67 3d 3e 72 6c  5f 66 69 6c 65 5f 3e 0a  |ling=>rl_file_>.|
00083f80  3c 49 6e 70 75 74 2f 4f  75 74 70 75 74 3d 3e 72  |<Input/Output=>r|
00083f90  6c 5f 69 6f 5f 3e 0a 3c  4d 69 73 63 65 6c 6c 61  |l_io_>.<Miscella|
00083fa0  6e 65 6f 75 73 3d 3e 72  6c 5f 6d 69 73 63 5f 3e  |neous=>rl_misc_>|
00083fb0  0a 23 45 6e 64 54 61 62  6c 65 0a 0a 23 49 6e 64  |.#EndTable..#Ind|
00083fc0  65 6e 74 20 30 0a 54 79  70 65 73 3a 0a 0a 23 49  |ent 0.Types:..#I|
00083fd0  6e 64 65 6e 74 20 36 0a  23 54 61 62 6c 65 20 6c  |ndent 6.#Table l|
00083fe0  69 6e 65 73 20 31 0a 3c  6f 73 5f 65 72 72 6f 72  |ines 1.<os_error|
00083ff0  3e 0a 3c 6f 73 5f 66 69  6c 65 73 74 72 3e 0a 3c  |>.<os_filestr>.<|
00084000  6f 73 5f 67 62 70 62 73  74 72 3e 0a 3c 6f 73 5f  |os_gbpbstr>.<os_|
00084010  72 65 67 73 65 74 3e 0a  23 45 6e 64 54 61 62 6c  |regset>.#EndTabl|
00084020  65 00 00 00 44 49 52 24  8c 00 00 00 8c 00 00 00  |e...DIR$........|
00084030  b0 40 08 00 46 fd ff ff  5b 89 5a 26 ce 04 00 00  |.@..F...[.Z&....|
00084040  13 00 00 00 00 00 00 00  61 6e 73 69 63 5f 00 00  |........ansic_..|
00084050  80 45 08 00 46 fd ff ff  ac a3 5a 26 62 05 00 00  |.E..F.....Z&b...|
00084060  13 00 00 00 00 00 00 00  64 6c 69 62 5f 00 00 00  |........dlib_...|
00084070  e4 4a 08 00 46 fd ff ff  97 7d 5a 26 1c 01 00 00  |.J..F....}Z&....|
00084080  13 00 00 00 00 00 00 00  65 61 73 79 63 5f 00 00  |........easyc_..|
00084090  00 4c 08 00 46 fd ff ff  7b 8e 5a 26 b2 05 00 00  |.L..F...{.Z&....|
000840a0  13 00 00 00 00 00 00 00  74 6c 69 62 5f 00 00 00  |........tlib_...|
000840b0  44 41 54 41 ce 04 00 00  44 65 73 6b 74 6f 70 20  |DATA....Desktop |
000840c0  43 20 52 49 53 43 20 4f  53 20 46 75 6e 63 74 69  |C RISC OS Functi|
000840d0  6f 6e 73 0a 23 50 61 72  65 6e 74 20 72 69 73 63  |ons.#Parent risc|
000840e0  6f 73 5f 0a 23 49 6e 64  65 6e 74 20 36 0a 23 53  |os_.#Indent 6.#S|
000840f0  70 72 69 74 65 20 30 2c  30 20 21 61 6e 73 69 63  |prite 0,0 !ansic|
00084100  0a 44 65 73 6b 74 6f 70  20 43 20 66 75 6e 63 74  |.Desktop C funct|
00084110  69 6f 6e 73 20 61 72 65  20 67 72 6f 75 70 65 64  |ions are grouped|
00084120  20 69 6e 74 6f 20 35 30  20 68 65 61 64 65 72 20  | into 50 header |
00084130  66 69 6c 65 73 2e 20 41  6c 6c 20 74 68 65 20 72  |files. All the r|
00084140  6f 75 74 69 6e 65 73 20  61 72 65 20 63 6f 6e 74  |outines are cont|
00084150  61 69 6e 65 64 20 69 6e  20 74 68 65 20 7b 2a 7d  |ained in the {*}|
00084160  52 49 53 43 4f 53 5f 4c  69 62 7b 2a 7d 20 6c 69  |RISCOS_Lib{*} li|
00084170  62 72 61 72 79 2e 0a 0a  23 49 6e 64 65 6e 74 20  |brary...#Indent |
00084180  37 0a 23 54 61 62 6c 65  20 63 6f 6c 75 6d 6e 73  |7.#Table columns|
00084190  20 34 0a 3c 61 6b 62 64  2e 68 3d 3e 61 6b 62 64  | 4.<akbd.h=>akbd|
000841a0  3e 0a 3c 61 6c 61 72 6d  2e 68 3d 3e 61 6c 61 72  |>.<alarm.h=>alar|
000841b0  6d 3e 0a 3c 62 61 72 69  63 6f 6e 2e 68 3d 3e 62  |m>.<baricon.h=>b|
000841c0  61 72 69 63 6f 6e 5f 68  3e 0a 3c 62 62 63 2e 68  |aricon_h>.<bbc.h|
000841d0  3d 3e 62 62 63 3e 0a 3c  63 6f 6c 6f 75 72 6d 65  |=>bbc>.<colourme|
000841e0  6e 75 2e 68 3d 3e 63 6f  6c 6f 75 72 6d 65 6e 75  |nu.h=>colourmenu|
000841f0  3e 0a 3c 63 6f 6c 6f 75  72 74 72 61 6e 2e 68 3d  |>.<colourtran.h=|
00084200  3e 63 6f 6c 6f 75 72 74  72 61 6e 5f 68 3e 0a 3c  |>colourtran_h>.<|
00084210  63 6f 6f 72 64 73 2e 68  3d 3e 63 6f 6f 72 64 73  |coords.h=>coords|
00084220  3e 0a 3c 64 62 6f 78 2e  68 3d 3e 64 62 6f 78 5f  |>.<dbox.h=>dbox_|
00084230  68 3e 0a 3c 64 62 6f 78  66 69 6c 65 2e 68 3d 3e  |h>.<dboxfile.h=>|
00084240  64 62 6f 78 66 69 6c 65  3e 0a 3c 64 62 6f 78 71  |dboxfile>.<dboxq|
00084250  75 65 72 79 2e 68 3d 3e  64 62 6f 78 71 75 65 72  |uery.h=>dboxquer|
00084260  79 3e 0a 3c 64 62 6f 78  74 63 6f 6c 2e 68 3d 3e  |y>.<dboxtcol.h=>|
00084270  64 62 6f 78 74 63 6f 6c  3e 0a 3c 64 72 61 77 66  |dboxtcol>.<drawf|
00084280  64 69 61 67 2e 68 3d 3e  64 72 61 77 66 64 69 61  |diag.h=>drawfdia|
00084290  67 3e 0a 3c 64 72 61 77  66 65 72 72 6f 72 2e 68  |g>.<drawferror.h|
000842a0  3d 3e 64 72 61 77 66 65  72 72 6f 72 3e 0a 3c 64  |=>drawferror>.<d|
000842b0  72 61 77 66 6f 62 6a 2e  68 3d 3e 64 72 61 77 66  |rawfobj.h=>drawf|
000842c0  6f 62 6a 3e 0a 3c 64 72  61 77 66 74 79 70 65 73  |obj>.<drawftypes|
000842d0  2e 68 3d 3e 64 72 61 77  66 74 79 70 65 73 3e 0a  |.h=>drawftypes>.|
000842e0  3c 64 72 61 77 6d 6f 64  2e 68 3d 3e 64 72 61 77  |<drawmod.h=>draw|
000842f0  6d 6f 64 3e 0a 3c 65 76  65 6e 74 2e 68 3d 3e 65  |mod>.<event.h=>e|
00084300  76 65 6e 74 5f 68 3e 0a  3c 66 69 6c 65 69 63 6f  |vent_h>.<fileico|
00084310  6e 2e 68 3d 3e 66 69 6c  65 69 63 6f 6e 3e 0a 3c  |n.h=>fileicon>.<|
00084320  66 6c 65 78 2e 68 3d 3e  66 6c 65 78 3e 0a 3c 66  |flex.h=>flex>.<f|
00084330  6f 6e 74 2e 68 3d 3e 66  6f 6e 74 5f 68 3e 0a 3c  |ont.h=>font_h>.<|
00084340  66 6f 6e 74 6c 69 73 74  2e 68 3d 3e 66 6f 6e 74  |fontlist.h=>font|
00084350  6c 69 73 74 3e 0a 3c 66  6f 6e 74 73 65 6c 65 63  |list>.<fontselec|
00084360  74 2e 68 3d 3e 66 6f 6e  74 73 65 6c 65 63 74 3e  |t.h=>fontselect>|
00084370  0a 3c 68 65 61 70 2e 68  3d 3e 68 65 61 70 3e 0a  |.<heap.h=>heap>.|
00084380  3c 68 65 6c 70 2e 68 3d  3e 68 65 6c 70 3e 0a 3c  |<help.h=>help>.<|
00084390  6b 65 72 6e 65 6c 2e 68  3d 3e 6b 65 72 6e 65 6c  |kernel.h=>kernel|
000843a0  3e 0a 3c 6d 61 67 6e 69  66 79 2e 68 3d 3e 6d 61  |>.<magnify.h=>ma|
000843b0  67 6e 69 66 79 3e 0a 3c  6d 65 6e 75 2e 68 3d 3e  |gnify>.<menu.h=>|
000843c0  6d 65 6e 75 5f 68 3e 0a  3c 6d 73 67 73 2e 68 3d  |menu_h>.<msgs.h=|
000843d0  3e 6d 73 67 73 5f 68 3e  0a 3c 6f 73 2e 68 3d 3e  |>msgs_h>.<os.h=>|
000843e0  6f 73 3e 0a 3c 70 6f 69  6e 74 65 72 2e 68 3d 3e  |os>.<pointer.h=>|
000843f0  70 6f 69 6e 74 65 72 3e  0a 3c 70 72 69 6e 74 2e  |pointer>.<print.|
00084400  68 3d 3e 70 72 69 6e 74  3e 0a 3c 72 65 73 2e 68  |h=>print>.<res.h|
00084410  3d 3e 72 65 73 3e 0a 3c  72 65 73 73 70 72 2e 68  |=>res>.<resspr.h|
00084420  3d 3e 72 65 73 73 70 72  3e 0a 3c 73 61 76 65 61  |=>resspr>.<savea|
00084430  73 2e 68 3d 3e 73 61 76  65 61 73 3e 0a 3c 73 70  |s.h=>saveas>.<sp|
00084440  72 69 74 65 2e 68 3d 3e  73 70 72 69 74 65 5f 68  |rite.h=>sprite_h|
00084450  3e 0a 3c 74 65 6d 70 6c  61 74 65 2e 68 3d 3e 74  |>.<template.h=>t|
00084460  65 6d 70 6c 61 74 65 5f  68 3e 0a 3c 74 72 61 63  |emplate_h>.<trac|
00084470  65 2e 68 3d 3e 74 72 61  63 65 3e 0a 3c 74 78 74  |e.h=>trace>.<txt|
00084480  2e 68 3d 3e 74 78 74 5f  68 3e 0a 3c 74 78 74 65  |.h=>txt_h>.<txte|
00084490  64 69 74 2e 68 3d 3e 74  78 74 65 64 69 74 3e 0a  |dit.h=>txtedit>.|
000844a0  3c 74 78 74 6f 70 74 2e  68 3d 3e 74 78 74 6f 70  |<txtopt.h=>txtop|
000844b0  74 3e 0a 3c 74 78 74 73  63 72 61 70 2e 68 3d 3e  |t>.<txtscrap.h=>|
000844c0  74 78 74 73 63 72 61 70  3e 0a 3c 74 78 74 77 69  |txtscrap>.<txtwi|
000844d0  6e 2e 68 3d 3e 74 78 74  77 69 6e 3e 0a 3c 74 79  |n.h=>txtwin>.<ty|
000844e0  70 64 61 74 2e 68 3d 3e  74 79 70 64 61 74 3e 0a  |pdat.h=>typdat>.|
000844f0  3c 76 69 73 64 65 6c 61  79 2e 68 3d 3e 76 69 73  |<visdelay.h=>vis|
00084500  64 65 6c 61 79 3e 0a 3c  77 65 72 72 2e 68 3d 3e  |delay>.<werr.h=>|
00084510  77 65 72 72 3e 0a 3c 77  69 6d 70 2e 68 3d 3e 77  |werr>.<wimp.h=>w|
00084520  69 6d 70 5f 68 3e 0a 3c  77 69 6d 70 74 2e 68 3d  |imp_h>.<wimpt.h=|
00084530  3e 77 69 6d 70 74 3e 0a  3c 77 69 6e 2e 68 3d 3e  |>wimpt>.<win.h=>|
00084540  77 69 6e 3e 0a 3c 78 66  65 72 72 65 63 76 2e 68  |win>.<xferrecv.h|
00084550  3d 3e 78 66 65 72 72 65  63 76 3e 0a 3c 78 66 65  |=>xferrecv>.<xfe|
00084560  72 73 65 6e 64 2e 68 3d  3e 78 66 65 72 73 65 6e  |rsend.h=>xfersen|
00084570  64 3e 0a 0a 0a 23 45 6e  64 54 61 62 6c 65 00 00  |d>...#EndTable..|
00084580  44 41 54 41 62 05 00 00  44 65 73 6b 4c 69 62 20  |DATAb...DeskLib |
00084590  52 49 53 43 20 4f 53 20  46 75 6e 63 74 69 6f 6e  |RISC OS Function|
000845a0  73 0a 23 50 61 72 65 6e  74 20 72 69 73 63 6f 73  |s.#Parent riscos|
000845b0  5f 0a 23 49 6e 64 65 6e  74 20 36 0a 23 53 70 72  |_.#Indent 6.#Spr|
000845c0  69 74 65 20 30 2c 30 20  21 64 65 73 6b 6c 69 62  |ite 0,0 !desklib|
000845d0  0a 56 65 72 73 69 6f 6e  3a 20 32 2e 31 36 0a 44  |.Version: 2.16.D|
000845e0  65 73 6b 4c 69 62 20 66  75 6e 63 74 69 6f 6e 73  |eskLib functions|
000845f0  20 61 72 65 20 67 72 6f  75 70 65 64 20 69 6e 74  | are grouped int|
00084600  6f 20 34 39 20 68 65 61  64 65 72 20 66 69 6c 65  |o 49 header file|
00084610  73 2e 20 41 6c 6c 20 74  68 65 20 72 6f 75 74 69  |s. All the routi|
00084620  6e 65 73 20 61 72 65 20  63 6f 6e 74 61 69 6e 65  |nes are containe|
00084630  64 20 69 6e 20 74 68 65  20 44 65 73 6b 4c 69 62  |d in the DeskLib|
00084640  20 6c 69 62 72 61 72 79  2e 0a 0a 23 69 6e 64 65  | library...#inde|
00084650  6e 74 20 33 0a 23 54 61  62 6c 65 20 63 6f 6c 75  |nt 3.#Table colu|
00084660  6d 6e 73 20 34 0a 3c 43  6c 65 61 72 2e 68 3d 3e  |mns 4.<Clear.h=>|
00084670  43 6c 65 61 72 3e 0a 3c  43 6f 6c 6f 75 72 4d 65  |Clear>.<ColourMe|
00084680  6e 75 2e 68 3d 3e 43 6f  6c 6f 75 72 4d 65 6e 75  |nu.h=>ColourMenu|
00084690  5f 44 4c 3e 0a 3c 43 6f  6c 6f 75 72 54 72 61 6e  |_DL>.<ColourTran|
000846a0  2e 68 3d 3e 43 6f 6c 6f  75 72 54 72 61 6e 3e 0a  |.h=>ColourTran>.|
000846b0  3c 43 6f 6f 72 64 2e 68  3d 3e 43 6f 6f 72 64 3e  |<Coord.h=>Coord>|
000846c0  0a 3c 43 6f 72 65 2e 68  3d 3e 43 6f 72 65 3e 0a  |.<Core.h=>Core>.|
000846d0  3c 44 69 61 6c 6f 67 2e  68 3d 3e 44 69 61 6c 6f  |<Dialog.h=>Dialo|
000846e0  67 5f 68 3e 0a 3c 44 69  73 70 61 74 63 68 2e 68  |g_h>.<Dispatch.h|
000846f0  3d 3e 44 69 73 70 61 74  63 68 5f 68 3e 0a 3c 44  |=>Dispatch_h>.<D|
00084700  72 61 67 2e 68 3d 3e 44  72 61 67 3e 0a 3c 44 72  |rag.h=>Drag>.<Dr|
00084710  61 67 41 53 70 72 2e 68  3d 3e 44 72 61 67 41 53  |agASpr.h=>DragAS|
00084720  70 72 3e 0a 3c 45 72 72  6f 72 2e 68 3d 3e 45 72  |pr>.<Error.h=>Er|
00084730  72 6f 72 5f 68 3e 0a 3c  45 76 65 6e 74 2e 68 3d  |ror_h>.<Event.h=|
00084740  3e 45 76 65 6e 74 3e 0a  3c 45 76 65 6e 74 4d 73  |>Event>.<EventMs|
00084750  67 2e 68 3d 3e 45 76 65  6e 74 4d 73 67 3e 0a 3c  |g.h=>EventMsg>.<|
00084760  46 69 6c 65 2e 68 3d 3e  46 69 6c 65 5f 68 3e 0a  |File.h=>File_h>.|
00084770  3c 46 69 6c 74 65 72 2e  68 3d 3e 46 69 6c 74 65  |<Filter.h=>Filte|
00084780  72 3e 0a 3c 46 6f 6e 74  2e 68 3d 3e 46 6f 6e 74  |r>.<Font.h=>Font|
00084790  3e 0a 3c 47 46 58 2e 68  3d 3e 47 46 58 3e 0a 3c  |>.<GFX.h=>GFX>.<|
000847a0  48 61 6e 64 6c 65 72 2e  68 3d 3e 48 61 6e 64 6c  |Handler.h=>Handl|
000847b0  65 72 3e 0a 3c 48 6f 75  72 67 6c 61 73 73 2e 68  |er>.<Hourglass.h|
000847c0  20 3d 3e 48 6f 75 72 67  6c 61 73 73 3e 0a 3c 49  | =>Hourglass>.<I|
000847d0  63 6f 6e 2e 68 3d 3e 49  63 6f 6e 3e 0a 3c 4b 62  |con.h=>Icon>.<Kb|
000847e0  64 2e 68 3d 3e 4b 62 64  3e 0a 3c 4b 65 72 6e 65  |d.h=>Kbd>.<Kerne|
000847f0  6c 53 57 49 73 2e 68 3d  3e 4b 65 72 6e 65 6c 53  |lSWIs.h=>KernelS|
00084800  57 49 73 3e 0a 3c 4b 65  79 43 6f 64 65 73 2e 68  |WIs>.<KeyCodes.h|
00084810  3d 3e 4b 65 79 43 6f 64  65 73 3e 0a 3c 4c 69 6e  |=>KeyCodes>.<Lin|
00084820  6b 4c 69 73 74 2e 68 3d  3e 4c 69 6e 6b 4c 69 73  |kList.h=>LinkLis|
00084830  74 3e 0a 3c 4d 65 6d 2e  68 3d 3e 4d 65 6d 3e 0a  |t>.<Mem.h=>Mem>.|
00084840  3c 4d 65 6e 75 2e 68 3d  3e 44 4c 5f 4d 65 6e 75  |<Menu.h=>DL_Menu|
00084850  3e 0a 3c 4d 6f 64 75 6c  65 2e 68 3d 3e 4d 6f 64  |>.<Module.h=>Mod|
00084860  75 6c 65 3e 0a 3c 4d 73  67 73 2e 68 3d 3e 4d 73  |ule>.<Msgs.h=>Ms|
00084870  67 73 3e 0a 3c 50 61 6e  65 2e 68 3d 3e 50 61 6e  |gs>.<Pane.h=>Pan|
00084880  65 3e 0a 3c 50 44 72 69  76 65 72 2e 68 3d 3e 50  |e>.<PDriver.h=>P|
00084890  44 72 69 76 65 72 3e 0a  3c 50 6f 69 6e 74 65 72  |Driver>.<Pointer|
000848a0  2e 68 3d 3e 44 4c 5f 50  6f 69 6e 74 65 72 3e 0a  |.h=>DL_Pointer>.|
000848b0  3c 50 6f 70 55 70 2e 68  3d 3e 50 6f 70 55 70 3e  |<PopUp.h=>PopUp>|
000848c0  0a 3c 52 65 73 6f 75 72  63 65 2e 68 3d 3e 52 65  |.<Resource.h=>Re|
000848d0  73 6f 75 72 63 65 3e 0a  3c 53 61 76 65 2e 68 3d  |source>.<Save.h=|
000848e0  3e 53 61 76 65 3e 0a 3c  53 63 72 65 65 6e 2e 68  |>Save>.<Screen.h|
000848f0  3d 3e 53 63 72 65 65 6e  3e 0a 3c 53 65 72 69 61  |=>Screen>.<Seria|
00084900  6c 2e 68 3d 3e 53 65 72  69 61 6c 3e 0a 3c 53 6c  |l.h=>Serial>.<Sl|
00084910  69 64 65 72 2e 68 3d 3e  53 6c 69 64 65 72 3e 0a  |ider.h=>Slider>.|
00084920  3c 53 6f 75 6e 64 2e 68  3d 3e 53 6f 75 6e 64 3e  |<Sound.h=>Sound>|
00084930  0a 3c 53 70 72 69 74 65  2e 68 3d 3e 53 70 72 69  |.<Sprite.h=>Spri|
00084940  74 65 5f 44 4c 3e 0a 3c  53 74 72 2e 68 3d 3e 53  |te_DL>.<Str.h=>S|
00084950  74 72 5f 44 4c 3e 0a 3c  53 74 72 69 6e 67 43 52  |tr_DL>.<StringCR|
00084960  2e 68 3d 3e 53 74 72 69  6e 67 43 52 3e 0a 3c 53  |.h=>StringCR>.<S|
00084970  57 49 2e 68 3d 3e 53 57  49 3e 0a 3c 54 65 6d 70  |WI.h=>SWI>.<Temp|
00084980  6c 61 74 65 2e 68 3d 3e  54 65 6d 70 6c 61 74 65  |late.h=>Template|
00084990  3e 0a 3c 54 65 78 74 46  69 6c 65 2e 68 3d 3e 54  |>.<TextFile.h=>T|
000849a0  65 78 74 46 69 6c 65 3e  0a 3c 54 69 6d 65 2e 68  |extFile>.<Time.h|
000849b0  3d 3e 44 4c 5f 54 69 6d  65 3e 0a 3c 56 61 6c 69  |=>DL_Time>.<Vali|
000849c0  64 61 74 69 6f 6e 2e 68  3d 3e 56 61 6c 69 64 61  |dation.h=>Valida|
000849d0  74 69 6f 6e 3e 0a 3c 57  41 73 73 65 72 74 2e 68  |tion>.<WAssert.h|
000849e0  3d 3e 57 41 73 73 65 72  74 3e 0a 3c 57 69 6d 70  |=>WAssert>.<Wimp|
000849f0  2e 68 3d 3e 57 69 6d 70  3e 0a 3c 57 69 6d 70 53  |.h=>Wimp>.<WimpS|
00084a00  57 49 73 2e 68 3d 3e 57  69 6d 70 53 57 49 73 3e  |WIs.h=>WimpSWIs>|
00084a10  0a 3c 57 69 6e 64 6f 77  2e 68 3d 3e 57 69 6e 64  |.<Window.h=>Wind|
00084a20  6f 77 3e 0a 23 45 6e 64  54 61 62 6c 65 0a 0a 23  |ow>.#EndTable..#|
00084a30  69 6e 64 65 6e 74 20 30  0a 54 6f 20 69 6e 63 6c  |indent 0.To incl|
00084a40  75 64 65 20 6f 6e 65 20  6f 66 20 74 68 65 20 44  |ude one of the D|
00084a50  65 73 6b 4c 69 62 20 68  65 61 64 65 72 20 66 69  |eskLib header fi|
00084a60  6c 65 73 20 75 73 65 3a  7b 77 72 61 70 20 6f 66  |les use:{wrap of|
00084a70  66 7d 0a 7b 66 43 6f 64  65 3b 61 6c 69 67 6e 20  |f}.{fCode;align |
00084a80  63 65 6e 74 72 65 7d 3c  23 69 6e 63 6c 75 64 65  |centre}<#include|
00084a90  3d 3e 69 6e 63 6c 75 64  65 3e 20 22 44 65 73 6b  |=>include> "Desk|
00084aa0  4c 69 62 3a 58 58 58 2e  68 22 7b 66 3b 61 6c 69  |Lib:XXX.h"{f;ali|
00084ab0  67 6e 3b 77 72 61 70 7d  0a 77 68 65 72 65 20 58  |gn;wrap}.where X|
00084ac0  58 58 20 69 73 20 74 68  65 20 6e 61 6d 65 20 6f  |XX is the name o|
00084ad0  66 20 74 68 65 20 68 65  61 64 65 72 20 66 69 6c  |f the header fil|
00084ae0  65 2e 00 00 44 41 54 41  1c 01 00 00 45 61 73 79  |e...DATA....Easy|
00084af0  20 43 20 52 49 53 43 20  4f 53 20 46 75 6e 63 74  | C RISC OS Funct|
00084b00  69 6f 6e 73 0a 23 69 6e  64 65 6e 74 20 36 0a 23  |ions.#indent 6.#|
00084b10  53 70 72 69 74 65 20 30  2c 30 20 21 65 61 73 79  |Sprite 0,0 !easy|
00084b20  63 0a 52 49 53 43 20 4f  53 20 66 75 6e 63 74 69  |c.RISC OS functi|
00084b30  6f 6e 73 20 61 72 65 20  67 72 6f 75 70 65 64 20  |ons are grouped |
00084b40  69 6e 74 6f 20 74 68 72  65 65 20 68 65 61 64 65  |into three heade|
00084b50  72 20 66 69 6c 65 73 2e  20 6b 65 72 6e 65 6c 2e  |r files. kernel.|
00084b60  68 20 61 63 63 65 73 73  65 73 20 72 6f 75 74 69  |h accesses routi|
00084b70  6e 65 73 20 69 6e 20 74  68 65 20 3c 53 68 61 72  |nes in the <Shar|
00084b80  65 64 a0 43 20 4c 69 62  72 61 72 79 3d 3e 53 57  |ed.C Library=>SW|
00084b90  49 3a 53 68 61 72 65 64  43 4c 69 62 72 61 72 79  |I:SharedCLibrary|
00084ba0  5f 3e 20 6d 6f 64 75 6c  65 2e 0a 0a 23 49 6e 64  |_> module...#Ind|
00084bb0  65 6e 74 20 37 0a 23 54  61 62 6c 65 20 32 20 31  |ent 7.#Table 2 1|
00084bc0  37 0a 3c 6b 65 72 6e 65  6c 2e 68 3d 3e 6b 65 72  |7.<kernel.h=>ker|
00084bd0  6e 65 6c 3e 0a 3c 72 6f  73 6c 69 62 2e 68 3d 3e  |nel>.<roslib.h=>|
00084be0  72 6f 73 6c 69 62 3e 0a  3c 73 77 69 73 2e 68 3d  |roslib>.<swis.h=|
00084bf0  3e 73 77 69 73 3e 0a 23  45 6e 64 54 61 62 6c 65  |>swis>.#EndTable|
00084c00  44 41 54 41 b2 05 00 00  54 69 6d 73 4c 69 62 20  |DATA....TimsLib |
00084c10  52 49 53 43 20 4f 53 20  46 75 6e 63 74 69 6f 6e  |RISC OS Function|
00084c20  73 0a 23 50 61 72 65 6e  74 20 72 69 73 63 6f 73  |s.#Parent riscos|
00084c30  5f 0a 23 49 6e 64 65 6e  74 20 36 0a 23 53 70 72  |_.#Indent 6.#Spr|
00084c40  69 74 65 20 30 2c 30 20  21 74 69 6d 73 6c 69 62  |ite 0,0 !timslib|
00084c50  0a 54 69 6d 73 4c 69 62  20 66 75 6e 63 74 69 6f  |.TimsLib functio|
00084c60  6e 73 20 61 72 65 20 67  72 6f 75 70 65 64 20 69  |ns are grouped i|
00084c70  6e 74 6f 20 32 38 20 68  65 61 64 65 72 20 66 69  |nto 28 header fi|
00084c80  6c 65 73 2e 20 54 69 6d  73 4c 69 62 20 69 73 20  |les. TimsLib is |
00084c90  69 6e 74 65 6e 64 65 64  20 74 6f 20 62 65 20 75  |intended to be u|
00084ca0  73 65 64 20 69 6e 20 63  6f 6e 6a 75 6e 63 74 69  |sed in conjuncti|
00084cb0  6f 6e 20 77 69 74 68 20  3c 44 65 73 6b 4c 69 62  |on with <DeskLib|
00084cc0  3d 3e 72 6f 5f 64 6c 69  62 5f 3e 2e 0a 0a 23 69  |=>ro_dlib_>...#i|
00084cd0  6e 64 65 6e 74 20 30 0a  4d 75 63 68 20 6f 66 20  |ndent 0.Much of |
00084ce0  54 69 6d 73 4c 69 62 20  69 73 20 69 6e 74 65 6e  |TimsLib is inten|
00084cf0  64 65 64 20 66 6f 72 20  75 73 65 20 77 69 74 68  |ded for use with|
00084d00  20 44 65 73 6b 4c 69 62  20 76 65 72 73 69 6f 6e  | DeskLib version|
00084d10  20 32 2e 30 34 20 61 6e  64 20 69 73 20 6e 6f 77  | 2.04 and is now|
00084d20  20 72 65 64 75 6e 64 61  6e 74 20 77 69 74 68 20  | redundant with |
00084d30  44 65 73 6b 4c 69 62 20  76 65 72 73 69 6f 6e 20  |DeskLib version |
00084d40  32 2e 31 36 2e 0a 0a 23  49 6e 64 65 6e 74 20 34  |2.16...#Indent 4|
00084d50  0a 23 54 61 62 6c 65 20  63 6f 6c 75 6d 6e 73 20  |.#Table columns |
00084d60  34 0a 3c 41 73 6b 55 73  65 72 2e 68 3d 3e 41 73  |4.<AskUser.h=>As|
00084d70  6b 55 73 65 72 5f 68 3e  0a 3c 43 68 65 63 6b 2e  |kUser_h>.<Check.|
00084d80  68 3d 3e 43 68 65 63 6b  3e 0a 7b 2f 7d 3c 43 6f  |h=>Check>.{/}<Co|
00084d90  6f 72 64 2e 68 3d 3e 43  6f 6f 72 64 5f 54 4c 3e  |ord.h=>Coord_TL>|
00084da0  7b 2f 7d 0a 3c 43 6f 72  65 2e 68 3d 3e 43 6f 72  |{/}.<Core.h=>Cor|
00084db0  65 5f 54 4c 3e 0a 7b 2f  7d 3c 44 69 61 6c 6f 67  |e_TL>.{/}<Dialog|
00084dc0  2e 68 3d 3e 44 69 61 6c  6f 67 5f 54 4c 3e 7b 2f  |.h=>Dialog_TL>{/|
00084dd0  7d 0a 3c 45 6e 61 62 6c  65 44 62 75 67 2e 68 3d  |}.<EnableDbug.h=|
00084de0  3e 45 6e 61 62 6c 65 44  62 75 67 3e 0a 3c 45 6e  |>EnableDbug>.<En|
00084df0  76 2e 68 3d 3e 45 6e 76  3e 0a 3c 45 72 72 2e 68  |v.h=>Env>.<Err.h|
00084e00  3d 3e 45 72 72 3e 0a 7b  2f 7d 3c 46 69 6c 65 2e  |=>Err>.{/}<File.|
00084e10  68 3d 3e 46 69 6c 65 5f  54 4c 3e 7b 2f 7d 0a 3c  |h=>File_TL>{/}.<|
00084e20  46 69 6c 65 49 63 6f 6e  2e 68 3d 3e 46 69 6c 65  |FileIcon.h=>File|
00084e30  49 63 6f 6e 5f 68 3e 0a  7b 2f 7d 3c 46 6f 6e 74  |Icon_h>.{/}<Font|
00084e40  2e 68 3d 3e 46 6f 6e 74  5f 54 4c 3e 7b 2f 7d 0a  |.h=>Font_TL>{/}.|
00084e50  7b 2f 7d 3c 47 46 58 2e  68 3d 3e 47 46 58 5f 54  |{/}<GFX.h=>GFX_T|
00084e60  4c 3e 7b 2f 7d 0a 7b 2f  7d 3c 49 63 6f 6e 2e 68  |L>{/}.{/}<Icon.h|
00084e70  3d 3e 49 63 6f 6e 5f 54  4c 3e 7b 2f 7d 0a 3c 49  |=>Icon_TL>{/}.<I|
00084e80  6e 74 65 72 66 61 63 65  2e 68 3d 3e 49 6e 74 65  |nterface.h=>Inte|
00084e90  72 66 61 63 65 3e 0a 3c  4b 62 64 2e 68 3d 3e 4b  |rface>.<Kbd.h=>K|
00084ea0  62 64 5f 54 4c 3e 0a 3c  4c 69 62 2e 68 3d 3e 4c  |bd_TL>.<Lib.h=>L|
00084eb0  69 62 3e 0a 7b 2f 7d 3c  4c 69 6e 6b 4c 69 73 74  |ib>.{/}<LinkList|
00084ec0  2e 68 3d 3e 4c 69 6e 6b  4c 69 73 74 5f 54 4c 3e  |.h=>LinkList_TL>|
00084ed0  7b 2f 7d 0a 3c 4d 61 6c  6c 6f 63 44 62 75 67 2e  |{/}.<MallocDbug.|
00084ee0  68 3d 3e 4d 61 6c 6c 6f  63 44 62 75 67 3e 0a 3c  |h=>MallocDbug>.<|
00084ef0  4d 65 6e 75 2e 68 3d 3e  4d 65 6e 75 5f 54 4c 3e  |Menu.h=>Menu_TL>|
00084f00  0a 7b 2f 7d 3c 4d 73 67  73 2e 68 3d 3e 4d 73 67  |.{/}<Msgs.h=>Msg|
00084f10  73 5f 54 4c 3e 7b 2f 7d  0a 3c 53 61 76 65 41 73  |s_TL>{/}.<SaveAs|
00084f20  2e 68 3d 3e 53 61 76 65  41 73 5f 54 4c 3e 0a 3c  |.h=>SaveAs_TL>.<|
00084f30  53 57 49 73 2e 68 3d 3e  53 57 49 73 5f 54 4c 3e  |SWIs.h=>SWIs_TL>|
00084f40  0a 3c 54 69 6d 65 2e 68  3d 3e 54 69 6d 65 5f 54  |.<Time.h=>Time_T|
00084f50  4c 3e 0a 3c 54 72 61 63  65 2e 68 3d 3e 54 72 61  |L>.<Trace.h=>Tra|
00084f60  63 65 5f 54 4c 3e 0a 3c  57 69 6d 70 45 78 74 2e  |ce_TL>.<WimpExt.|
00084f70  68 3d 3e 57 69 6d 70 45  78 74 3e 0a 7b 2f 7d 3c  |h=>WimpExt>.{/}<|
00084f80  57 69 6e 64 6f 77 2e 68  3d 3e 57 69 6e 64 6f 77  |Window.h=>Window|
00084f90  5f 54 4c 3e 7b 2f 7d 0a  3c 58 66 65 72 52 65 63  |_TL>{/}.<XferRec|
00084fa0  76 2e 68 3d 3e 58 66 65  72 52 65 63 76 5f 54 4c  |v.h=>XferRecv_TL|
00084fb0  3e 0a 3c 58 66 65 72 53  65 6e 64 2e 68 3d 3e 58  |>.<XferSend.h=>X|
00084fc0  66 65 72 53 65 6e 64 5f  54 4c 3e 0a 23 45 6e 64  |ferSend_TL>.#End|
00084fd0  54 61 62 6c 65 0a 0a 23  69 6e 64 65 6e 74 20 30  |Table..#indent 0|
00084fe0  0a 54 6f 20 69 6e 63 6c  75 64 65 20 6f 6e 65 20  |.To include one |
00084ff0  6f 66 20 74 68 65 20 54  69 6d 73 4c 69 62 20 68  |of the TimsLib h|
00085000  65 61 64 65 72 20 66 69  6c 65 73 20 75 73 65 3a  |eader files use:|
00085010  0a 7b 66 43 6f 64 65 3b  61 6c 69 67 6e 20 63 65  |.{fCode;align ce|
00085020  6e 74 72 65 7d 3c 23 69  6e 63 6c 75 64 65 3d 3e  |ntre}<#include=>|
00085030  69 6e 63 6c 75 64 65 3e  20 22 54 69 6d 73 4c 69  |include> "TimsLi|
00085040  62 3a 58 58 58 2e 68 22  7b 66 3b 61 6c 69 67 6e  |b:XXX.h"{f;align|
00085050  7d 0a 77 68 65 72 65 20  58 58 58 20 69 73 20 74  |}.where XXX is t|
00085060  68 65 20 6e 61 6d 65 20  6f 66 20 74 68 65 20 68  |he name of the h|
00085070  65 61 64 65 72 20 66 69  6c 65 2e 0a 0a 53 6f 6d  |eader file...Som|
00085080  65 20 6f 66 20 74 68 65  20 68 65 61 64 65 72 73  |e of the headers|
00085090  20 61 72 65 20 65 78 74  65 6e 73 69 6f 6e 73 20  | are extensions |
000850a0  74 6f 20 44 65 73 6b 4c  69 62 2c 20 69 65 20 74  |to DeskLib, ie t|
000850b0  68 65 79 20 74 68 65 6d  73 65 6c 76 65 73 20 69  |hey themselves i|
000850c0  6e 63 6c 75 64 65 20 74  68 65 20 44 65 73 6b 4c  |nclude the DeskL|
000850d0  69 62 20 68 65 61 64 65  72 20 74 68 65 6e 20 61  |ib header then a|
000850e0  64 64 20 6d 6f 72 65 20  66 75 6e 63 74 69 6f 6e  |dd more function|
000850f0  73 2e 20 54 68 65 73 65  20 61 72 65 20 73 68 6f  |s. These are sho|
00085100  77 6e 20 69 6e 20 2f 69  74 61 6c 69 63 73 2f 2e  |wn in /italics/.|
00085110  20 4d 61 6e 79 20 6f 66  20 74 68 65 20 66 75 6e  | Many of the fun|
00085120  63 74 69 6f 6e 73 20 68  61 76 65 20 64 69 66 66  |ctions have diff|
00085130  65 72 65 6e 74 20 65 66  66 65 63 74 73 20 64 65  |erent effects de|
00085140  70 65 6e 64 69 6e 67 20  6f 6e 20 74 68 65 20 6d  |pending on the m|
00085150  61 63 72 6f 20 7b 2a 7d  5f 44 45 42 55 47 7b 2a  |acro {*}_DEBUG{*|
00085160  7d 2e 20 4d 6f 72 65 20  69 6e 66 6f 72 6d 61 74  |}. More informat|
00085170  69 6f 6e 20 63 61 6e 20  62 65 20 66 6f 75 6e 64  |ion can be found|
00085180  20 69 6e 20 74 68 65 20  22 21 48 65 6c 70 22 20  | in the "!Help" |
00085190  61 6e 64 20 22 52 65 61  64 4d 65 22 20 66 69 6c  |and "ReadMe" fil|
000851a0  65 73 20 77 69 74 68 69  6e 20 54 69 6d 73 4c 69  |es within TimsLi|
000851b0  62 2e 00 00 44 49 52 24  64 0d 00 00 64 0d 00 00  |b...DIR$d...d...|
000851c0  18 5f 08 00 46 ff ff ff  59 4f 64 25 b4 01 00 00  |._..F...YOd%....|
000851d0  13 00 00 00 00 00 00 00  53 61 76 65 00 00 00 00  |........Save....|
000851e0  cc 60 08 00 46 ff ff ff  fa 62 da 24 24 03 00 00  |.`..F....b.$$...|
000851f0  13 00 00 00 00 00 00 00  73 61 76 65 61 73 00 00  |........saveas..|
00085200  f0 63 08 00 46 fd ff ff  3c ca 84 2f b0 00 00 00  |.c..F...<../....|
00085210  13 01 00 00 00 00 00 00  53 61 76 65 41 73 5f 00  |........SaveAs_.|
00085220  88 6b 08 00 46 fd ff ff  ba ca 84 2f 40 01 00 00  |.k..F....../@...|
00085230  13 01 00 00 00 00 00 00  73 61 76 65 5f 00 00 00  |........save_...|
00085240  00 7f 08 00 46 fd ff ff  73 cb 84 2f 2c 00 00 00  |....F...s../,...|
00085250  13 01 00 00 00 00 00 00  73 63 61 6c 65 5f 00 00  |........scale_..|
00085260  d8 7f 08 00 46 ff ff ff  9e 91 c3 22 23 01 00 00  |....F......"#...|
00085270  13 00 00 00 00 00 00 00  73 63 61 6e 66 00 00 00  |........scanf...|
00085280  fc 80 08 00 46 fd ff ff  aa cb 84 2f 44 00 00 00  |....F....../D...|
00085290  13 01 00 00 00 00 00 00  53 43 48 41 52 5f 00 00  |........SCHAR_..|
000852a0  88 82 08 00 46 ff ff ff  c2 65 64 25 19 01 00 00  |....F....ed%....|
000852b0  13 00 00 00 00 00 00 00  53 63 72 65 65 6e 00 00  |........Screen..|
000852c0  a4 83 08 00 46 fd ff ff  f0 cb 84 2f cc 00 00 00  |....F....../....|
000852d0  13 01 00 00 00 00 00 00  73 63 72 65 65 6e 5f 00  |........screen_.|
000852e0  54 89 08 00 46 fd ff ff  6b cc 84 2f 48 00 00 00  |T...F...k../H...|
000852f0  13 01 00 00 00 00 00 00  73 63 72 6f 6c 6c 5f 00  |........scroll_.|
00085300  90 8b 08 00 46 ff ff ff  06 3d e2 24 3b 00 00 00  |....F....=.$;...|
00085310  13 00 00 00 00 00 00 00  53 43 72 6f 75 63 68 00  |........SCrouch.|
00085320  cc 8b 08 00 46 fd ff ff  b3 cc 84 2f 60 00 00 00  |....F....../`...|
00085330  13 01 00 00 00 00 00 00  53 45 45 4b 5f 00 00 00  |........SEEK_...|
00085340  c8 8e 08 00 46 ff ff ff  28 22 65 25 36 02 00 00  |....F...("e%6...|
00085350  13 00 00 00 00 00 00 00  53 65 72 69 61 6c 00 00  |........Serial..|
00085360  00 91 08 00 46 fd ff ff  1f cd 84 2f 6c 02 00 00  |....F....../l...|
00085370  13 01 00 00 00 00 00 00  53 65 72 69 61 6c 5f 00  |........Serial_.|
00085380  b0 a6 08 00 46 ff ff ff  96 e7 c1 22 f7 01 00 00  |....F......"....|
00085390  13 00 00 00 00 00 00 00  73 65 74 62 75 66 00 00  |........setbuf..|
000853a0  a8 a8 08 00 46 ff ff ff  95 e8 be 22 af 00 00 00  |....F......"....|
000853b0  13 00 00 00 00 00 00 00  73 65 74 6a 6d 70 00 00  |........setjmp..|
000853c0  58 a9 08 00 46 fd ff ff  a0 ce 84 2f 28 00 00 00  |X...F....../(...|
000853d0  13 01 00 00 00 00 00 00  73 65 74 6a 6d 70 5f 00  |........setjmp_.|
000853e0  84 aa 08 00 46 ff ff ff  eb 2a bd 22 9a 01 00 00  |....F....*."....|
000853f0  13 00 00 00 00 00 00 00  73 65 74 6c 6f 63 61 6c  |........setlocal|
00085400  65 00 00 00 20 ac 08 00  46 ff ff ff b1 fd c1 22  |e... ...F......"|
00085410  b4 01 00 00 13 00 00 00  00 00 00 00 73 65 74 76  |............setv|
00085420  62 75 66 00 d4 ad 08 00  46 fd ff ff f0 ce 84 2f  |buf.....F....../|
00085430  2c 00 00 00 13 01 00 00  00 00 00 00 73 66 6f 72  |,...........sfor|
00085440  6d 5f 00 00 54 b0 08 00  46 fd ff ff 15 cf 84 2f  |m_..T...F....../|
00085450  88 00 00 00 13 01 00 00  00 00 00 00 73 66 5f 00  |............sf_.|
00085460  78 ba 08 00 46 fd ff ff  79 cf 84 2f 44 00 00 00  |x...F...y../D...|
00085470  13 01 00 00 00 00 00 00  53 48 52 54 5f 00 00 00  |........SHRT_...|
00085480  1c bc 08 00 46 ff ff ff  6b 68 bf 22 5a 00 00 00  |....F...kh."Z...|
00085490  13 00 00 00 00 00 00 00  53 49 47 41 42 52 54 00  |........SIGABRT.|
000854a0  78 bc 08 00 46 ff ff ff  c6 6b bf 22 59 00 00 00  |x...F....k."Y...|
000854b0  13 00 00 00 00 00 00 00  53 49 47 46 50 45 00 00  |........SIGFPE..|
000854c0  d4 bc 08 00 46 ff ff ff  b7 6e bf 22 59 00 00 00  |....F....n."Y...|
000854d0  13 00 00 00 00 00 00 00  53 49 47 49 4c 4c 00 00  |........SIGILL..|
000854e0  30 bd 08 00 46 ff ff ff  f0 72 bf 22 59 00 00 00  |0...F....r."Y...|
000854f0  13 00 00 00 00 00 00 00  53 49 47 49 4e 54 00 00  |........SIGINT..|
00085500  8c bd 08 00 46 ff ff ff  b8 07 bc 22 ac 01 00 00  |....F......"....|
00085510  13 00 00 00 00 00 00 00  73 69 67 6e 61 6c 00 00  |........signal..|
00085520  38 bf 08 00 46 fd ff ff  f5 cf 84 2f 2c 00 00 00  |8...F....../,...|
00085530  13 01 00 00 00 00 00 00  73 69 67 6e 61 6c 5f 00  |........signal_.|
00085540  54 c0 08 00 46 ff ff ff  33 76 bf 22 5a 00 00 00  |T...F...3v."Z...|
00085550  13 00 00 00 00 00 00 00  53 49 47 53 45 47 56 00  |........SIGSEGV.|
00085560  b0 c0 08 00 46 ff ff ff  ed 7b bf 22 5a 00 00 00  |....F....{."Z...|
00085570  13 00 00 00 00 00 00 00  53 49 47 53 54 41 4b 00  |........SIGSTAK.|
00085580  0c c1 08 00 46 ff ff ff  24 79 bf 22 5a 00 00 00  |....F...$y."Z...|
00085590  13 00 00 00 00 00 00 00  53 49 47 54 45 52 4d 00  |........SIGTERM.|
000855a0  68 c1 08 00 46 fd ff ff  4e d0 84 2f 84 00 00 00  |h...F...N../....|
000855b0  13 01 00 00 00 00 00 00  73 69 67 5f 00 00 00 00  |........sig_....|
000855c0  2c c4 08 00 46 ff ff ff  bb b8 bd 22 a5 00 00 00  |,...F......"....|
000855d0  13 00 00 00 00 00 00 00  73 69 6e 00 d4 c4 08 00  |........sin.....|
000855e0  46 ff ff ff 61 cd bd 22  c7 00 00 00 13 00 00 00  |F...a.."........|
000855f0  00 00 00 00 73 69 6e 68  00 00 00 00 9c c5 08 00  |....sinh........|
00085600  46 ff ff ff 32 ac e3 22  0a 01 00 00 13 00 00 00  |F...2.."........|
00085610  00 00 00 00 73 69 7a 65  6f 66 00 00 a8 c6 08 00  |....sizeof......|
00085620  46 fd ff ff d8 d0 84 2f  28 00 00 00 13 01 00 00  |F....../(.......|
00085630  00 00 00 00 73 69 7a 65  5f 00 00 00 c4 c7 08 00  |....size_.......|
00085640  46 ff ff ff ce 03 b4 25  12 02 00 00 13 00 00 00  |F......%........|
00085650  00 00 00 00 53 6c 69 64  65 72 00 00 d8 c9 08 00  |....Slider......|
00085660  46 fd ff ff 0c d1 84 2f  b4 00 00 00 13 01 00 00  |F....../........|
00085670  00 00 00 00 53 6c 69 64  65 72 5f 00 8c d7 08 00  |....Slider_.....|
00085680  46 fd ff ff 93 d1 84 2f  10 01 00 00 13 01 00 00  |F....../........|
00085690  00 00 00 00 73 6c 5f 00  f4 df 08 00 46 ff ff ff  |....sl_.....F...|
000856a0  79 c1 65 25 80 00 00 00  13 00 00 00 00 00 00 00  |y.e%............|
000856b0  53 6f 75 6e 64 00 00 00  74 e0 08 00 46 fd ff ff  |Sound...t...F...|
000856c0  45 d2 84 2f 4c 00 00 00  13 01 00 00 00 00 00 00  |E../L...........|
000856d0  73 6f 75 6e 64 5f 00 00  04 e6 08 00 46 ff ff ff  |sound_......F...|
000856e0  93 6d 56 26 48 01 00 00  13 00 00 00 00 00 00 00  |.mV&H...........|
000856f0  53 70 6c 69 74 50 61 74  68 6e 61 6d 65 00 00 00  |SplitPathname...|
00085700  4c e7 08 00 46 ff ff ff  7c 89 c3 22 8e 01 00 00  |L...F...|.."....|
00085710  13 00 00 00 00 00 00 00  73 70 72 69 6e 74 66 00  |........sprintf.|
00085720  dc e8 08 00 46 ff ff ff  6d 49 d5 25 84 00 00 00  |....F...mI.%....|
00085730  13 00 00 00 00 00 00 00  73 70 72 69 74 65 00 00  |........sprite..|
00085740  60 e9 08 00 46 ff ff ff  c3 b4 d5 25 d3 01 00 00  |`...F......%....|
00085750  13 00 00 00 00 00 00 00  73 70 72 69 74 65 6d 65  |........spriteme|
00085760  6d 5f 66 6c 61 67 73 00  34 eb 08 00 46 fd ff ff  |m_flags.4...F...|
00085770  d3 d2 84 2f 4c 00 00 00  13 01 00 00 00 00 00 00  |.../L...........|
00085780  73 70 72 69 74 65 70 6f  6f 6c 5f 00 0c ed 08 00  |spritepool_.....|
00085790  46 fd ff ff 52 d3 84 2f  c0 10 00 00 13 01 00 00  |F...R../........|
000857a0  00 00 00 00 73 70 72 69  74 65 5f 00 64 b6 09 00  |....sprite_.d...|
000857b0  46 fd ff ff 2e dd 84 2f  2c 00 00 00 13 01 00 00  |F....../,.......|
000857c0  00 00 00 00 53 50 52 5f  00 00 00 00 48 b7 09 00  |....SPR_....H...|
000857d0  46 ff ff ff 77 3c be 22  ab 00 00 00 13 00 00 00  |F...w<."........|
000857e0  00 00 00 00 73 71 72 74  00 00 00 00 f4 b7 09 00  |....sqrt........|
000857f0  46 ff ff ff 8c 53 c5 22  86 01 00 00 13 00 00 00  |F....S."........|
00085800  00 00 00 00 73 72 61 6e  64 00 00 00 7c b9 09 00  |....srand...|...|
00085810  46 ff ff ff fc 0e c4 22  a4 01 00 00 13 00 00 00  |F......"........|
00085820  00 00 00 00 73 73 63 61  6e 66 00 00 20 bb 09 00  |....sscanf.. ...|
00085830  46 ff ff ff 25 0f bc 22  ed 00 00 00 13 00 00 00  |F...%.."........|
00085840  00 00 00 00 73 74 64 61  72 67 00 00 10 bc 09 00  |....stdarg......|
00085850  46 ff ff ff 9e 14 bc 22  da 00 00 00 13 00 00 00  |F......"........|
00085860  00 00 00 00 73 74 64 64  65 66 00 00 ec bc 09 00  |....stddef......|
00085870  46 ff ff ff 5c a0 c4 22  af 00 00 00 13 00 00 00  |F...\.."........|
00085880  00 00 00 00 73 74 64 65  72 72 00 00 9c bd 09 00  |....stderr......|
00085890  46 ff ff ff 1b 96 c4 22  c9 00 00 00 13 00 00 00  |F......"........|
000858a0  00 00 00 00 73 74 64 69  6e 00 00 00 68 be 09 00  |....stdin...h...|
000858b0  46 ff ff ff f5 2f bc 22  8c 02 00 00 13 00 00 00  |F..../."........|
000858c0  00 00 00 00 73 74 64 69  6f 00 00 00 f4 c0 09 00  |....stdio.......|
000858d0  46 ff ff ff bd 95 df 22  68 02 00 00 13 00 00 00  |F......"h.......|
000858e0  00 00 00 00 73 74 64 6c  69 62 00 00 5c c3 09 00  |....stdlib..\...|
000858f0  46 ff ff ff 32 9b c4 22  cb 00 00 00 13 00 00 00  |F...2.."........|
00085900  00 00 00 00 73 74 64 6f  75 74 00 00 28 c4 09 00  |....stdout..(...|
00085910  46 ff ff ff ff 80 e6 22  6a 00 00 00 13 00 00 00  |F......"j.......|
00085920  00 00 00 00 53 54 46 00  94 c4 09 00 46 ff ff ff  |....STF.....F...|
00085930  53 75 e6 22 4d 01 00 00  13 00 00 00 00 00 00 00  |Su."M...........|
00085940  53 54 52 00 e4 c5 09 00  46 ff ff ff 71 fa df 22  |STR.....F...q.."|
00085950  fb 00 00 00 13 00 00 00  00 00 00 00 73 74 72 63  |............strc|
00085960  61 74 00 00 e0 c6 09 00  46 ff ff ff ba 2e d6 25  |at......F......%|
00085970  2b 01 00 00 13 00 00 00  00 00 00 00 73 74 72 63  |+...........strc|
00085980  61 74 63 72 00 00 00 00  0c c8 09 00 46 ff ff ff  |atcr........F...|
00085990  28 93 e0 22 21 01 00 00  13 00 00 00 00 00 00 00  |(.."!...........|
000859a0  73 74 72 63 68 72 00 00  30 c9 09 00 46 ff ff ff  |strchr..0...F...|
000859b0  7e 2d e0 22 51 01 00 00  13 00 00 00 00 00 00 00  |~-."Q...........|
000859c0  73 74 72 63 6d 70 00 00  84 ca 09 00 46 ff ff ff  |strcmp......F...|
000859d0  3e 03 d6 25 04 01 00 00  13 00 00 00 00 00 00 00  |>..%............|
000859e0  73 74 72 63 6d 70 63 72  00 00 00 00 88 cb 09 00  |strcmpcr........|
000859f0  46 ff ff ff 40 3c e0 22  88 01 00 00 13 00 00 00  |F...@<."........|
00085a00  00 00 00 00 73 74 72 63  6f 6c 6c 00 10 cd 09 00  |....strcoll.....|
00085a10  46 ff ff ff 4e d7 df 22  d2 00 00 00 13 00 00 00  |F...N.."........|
00085a20  00 00 00 00 73 74 72 63  70 79 00 00 e4 cd 09 00  |....strcpy......|
00085a30  46 ff ff ff 89 39 d6 25  05 01 00 00 13 00 00 00  |F....9.%........|
00085a40  00 00 00 00 73 74 72 63  70 79 63 72 00 00 00 00  |....strcpycr....|
00085a50  ec ce 09 00 46 ff ff ff  35 9a e0 22 ef 00 00 00  |....F...5.."....|
00085a60  13 00 00 00 00 00 00 00  73 74 72 63 73 70 6e 00  |........strcspn.|
00085a70  dc cf 09 00 46 ff ff ff  f7 54 d6 25 1a 01 00 00  |....F....T.%....|
00085a80  13 00 00 00 00 00 00 00  73 74 72 64 75 70 00 00  |........strdup..|
00085a90  f8 d0 09 00 46 fd ff ff  ee de 84 2f 2c 00 00 00  |....F....../,...|
00085aa0  13 01 00 00 00 00 00 00  73 74 72 65 61 6d 69 6f  |........streamio|
00085ab0  5f 00 00 00 cc d1 09 00  46 ff ff ff a9 97 e1 22  |_.......F......"|
00085ac0  e9 00 00 00 13 00 00 00  00 00 00 00 73 74 72 65  |............stre|
00085ad0  72 72 6f 72 00 00 00 00  b8 d2 09 00 46 ff ff ff  |rror........F...|
00085ae0  c0 07 e2 22 6c 01 00 00  13 00 00 00 00 00 00 00  |..."l...........|
00085af0  73 74 72 66 74 69 6d 65  00 00 00 00 24 d4 09 00  |strftime....$...|
00085b00  46 ff ff ff 5d 09 d6 25  8c 01 00 00 13 00 00 00  |F...]..%........|
00085b10  00 00 00 00 73 74 72 69  63 6d 70 00 b0 d5 09 00  |....stricmp.....|
00085b20  46 ff ff ff 45 11 d6 25  5d 01 00 00 13 00 00 00  |F...E..%].......|
00085b30  00 00 00 00 73 74 72 69  63 6d 70 63 72 00 00 00  |....stricmpcr...|
00085b40  10 d7 09 00 46 ff ff ff  dc 44 bc 22 97 01 00 00  |....F....D."....|
00085b50  13 00 00 00 00 00 00 00  73 74 72 69 6e 67 00 00  |........string..|
00085b60  a8 d8 09 00 46 ff ff ff  d8 7b d6 25 91 00 00 00  |....F....{.%....|
00085b70  13 00 00 00 00 00 00 00  53 74 72 69 6e 67 43 52  |........StringCR|
00085b80  00 00 00 00 3c d9 09 00  46 ff ff ff 2b 9f e1 22  |....<...F...+.."|
00085b90  ee 00 00 00 13 00 00 00  00 00 00 00 73 74 72 6c  |............strl|
00085ba0  65 6e 00 00 2c da 09 00  46 ff ff ff 34 fc d5 25  |en..,...F...4..%|
00085bb0  e9 00 00 00 13 00 00 00  00 00 00 00 73 74 72 6c  |............strl|
00085bc0  65 6e 63 72 00 00 00 00  18 db 09 00 46 ff ff ff  |encr........F...|
00085bd0  4f 05 e0 22 15 01 00 00  13 00 00 00 00 00 00 00  |O.."............|
00085be0  73 74 72 6e 63 61 74 00  30 dc 09 00 46 ff ff ff  |strncat.0...F...|
00085bf0  ac 51 e0 22 95 01 00 00  13 00 00 00 00 00 00 00  |.Q."............|
00085c00  73 74 72 6e 63 6d 70 00  c8 dd 09 00 46 ff ff ff  |strncmp.....F...|
00085c10  2f e9 df 22 3d 01 00 00  13 00 00 00 00 00 00 00  |/.."=...........|
00085c20  73 74 72 6e 63 70 79 00  08 df 09 00 46 ff ff ff  |strncpy.....F...|
00085c30  56 44 d6 25 3c 01 00 00  13 00 00 00 00 00 00 00  |VD.%<...........|
00085c40  73 74 72 6e 63 70 79 63  72 00 00 00 44 e0 09 00  |strncpycr...D...|
00085c50  46 ff ff ff 3d 1c d6 25  a0 01 00 00 13 00 00 00  |F...=..%........|
00085c60  00 00 00 00 73 74 72 6e  69 63 6d 70 00 00 00 00  |....strnicmp....|
00085c70  e4 e1 09 00 46 ff ff ff  9c 26 d6 25 6c 01 00 00  |....F....&.%l...|
00085c80  13 00 00 00 00 00 00 00  73 74 72 6e 69 63 6d 70  |........strnicmp|
00085c90  63 72 00 00 50 e3 09 00  46 ff ff ff 25 b9 e0 22  |cr..P...F...%.."|
00085ca0  ff 00 00 00 13 00 00 00  00 00 00 00 73 74 72 70  |............strp|
00085cb0  62 72 6b 00 50 e4 09 00  46 ff ff ff 21 cd e0 22  |brk.P...F...!.."|
00085cc0  2c 01 00 00 13 00 00 00  00 00 00 00 73 74 72 72  |,...........strr|
00085cd0  63 68 72 00 7c e5 09 00  46 ff ff ff ba 34 56 26  |chr.|...F....4V&|
00085ce0  5c 01 00 00 13 00 00 00  00 00 00 00 53 74 72 53  |\...........StrS|
00085cf0  61 76 65 00 d8 e6 09 00  46 ff ff ff 8b 3f 56 26  |ave.....F....?V&|
00085d00  b2 01 00 00 13 00 00 00  00 00 00 00 53 74 72 53  |............StrS|
00085d10  61 76 65 44 62 75 67 00  8c e8 09 00 46 ff ff ff  |aveDbug.....F...|
00085d20  fb d5 e0 22 02 01 00 00  13 00 00 00 00 00 00 00  |..."............|
00085d30  73 74 72 73 70 6e 00 00  90 e9 09 00 46 ff ff ff  |strspn......F...|
00085d40  ed ec e0 22 4a 01 00 00  13 00 00 00 00 00 00 00  |..."J...........|
00085d50  73 74 72 73 74 72 00 00  dc ea 09 00 46 ff ff ff  |strstr......F...|
00085d60  6a 0b c5 22 ce 02 00 00  13 00 00 00 00 00 00 00  |j.."............|
00085d70  73 74 72 74 6f 64 00 00  ac ed 09 00 46 ff ff ff  |strtod......F...|
00085d80  74 31 e1 22 64 03 00 00  13 00 00 00 00 00 00 00  |t1."d...........|
00085d90  73 74 72 74 6f 6b 00 00  10 f1 09 00 46 ff ff ff  |strtok......F...|
00085da0  6c 1f c5 22 28 03 00 00  13 00 00 00 00 00 00 00  |l.."(...........|
00085db0  73 74 72 74 6f 6c 00 00  38 f4 09 00 46 ff ff ff  |strtol..8...F...|
00085dc0  54 3b c5 22 30 03 00 00  13 00 00 00 00 00 00 00  |T;."0...........|
00085dd0  73 74 72 74 6f 75 6c 00  68 f7 09 00 46 ff ff ff  |strtoul.h...F...|
00085de0  1a cb e3 22 7d 03 00 00  13 00 00 00 00 00 00 00  |..."}...........|
00085df0  73 74 72 75 63 74 00 00  e8 fa 09 00 46 ff ff ff  |struct......F...|
00085e00  ab 5e e2 22 e1 01 00 00  13 00 00 00 00 00 00 00  |.^."............|
00085e10  73 74 72 75 63 74 a0 74  6d 00 00 00 cc fc 09 00  |struct.tm.......|
00085e20  46 ff ff ff 20 66 e0 22  1e 02 00 00 13 00 00 00  |F... f."........|
00085e30  00 00 00 00 73 74 72 78  66 72 6d 00 ec fe 09 00  |....strxfrm.....|
00085e40  46 fd ff ff 37 e1 84 2f  50 01 00 00 13 01 00 00  |F...7../P.......|
00085e50  00 00 00 00 73 74 72 5f  00 00 00 00 24 0a 0a 00  |....str_....$...|
00085e60  46 ff ff ff 15 a0 d6 25  7a 03 00 00 13 00 00 00  |F......%z.......|
00085e70  00 00 00 00 53 57 49 00  a0 0d 0a 00 46 ff ff ff  |....SWI.....F...|
00085e80  af 91 ef 24 4a 04 00 00  13 00 00 00 00 00 00 00  |...$J...........|
00085e90  73 77 69 73 00 00 00 00  ec 11 0a 00 46 fd ff ff  |swis........F...|
00085ea0  39 e2 84 2f 28 00 00 00  13 01 00 00 00 00 00 00  |9../(...........|
00085eb0  53 57 49 73 5f 00 00 00  c0 12 0a 00 46 ff ff ff  |SWIs_.......F...|
00085ec0  de f1 e4 22 12 03 00 00  13 00 00 00 00 00 00 00  |..."............|
00085ed0  73 77 69 74 63 68 00 00  d4 15 0a 00 46 fd ff ff  |switch......F...|
00085ee0  7a e2 84 2f 2c 00 00 00  13 01 00 00 00 00 00 00  |z../,...........|
00085ef0  53 57 49 5f 00 00 00 00  3c 38 0a 00 46 ff ff ff  |SWI_....<8..F...|
00085f00  1d e6 dd 22 83 02 00 00  13 00 00 00 00 00 00 00  |..."............|
00085f10  73 79 73 74 65 6d 00 00  44 41 54 41 b4 01 00 00  |system..DATA....|
00085f20  44 65 73 6b 4c 69 62 3a  53 61 76 65 2e 68 0a 56  |DeskLib:Save.h.V|
00085f30  65 72 73 69 6f 6e 3a 20  31 2e 30 32 20 28 31 38  |ersion: 1.02 (18|
00085f40  20 4a 75 6e 20 31 39 39  34 29 0a 23 6c 69 6e 65  | Jun 1994).#line|
00085f50  0a 54 68 69 73 20 68 65  61 64 65 72 20 64 65 63  |.This header dec|
00085f60  6c 61 72 65 73 20 66 75  6e 63 74 69 6f 6e 73 20  |lares functions |
00085f70  61 6e 64 20 74 79 70 65  73 20 66 6f 72 20 61 75  |and types for au|
00085f80  74 6f 6d 61 74 69 63 20  68 61 6e 64 6c 69 6e 67  |tomatic handling|
00085f90  20 6f 66 20 64 61 74 61  20 65 78 70 6f 72 74 20  | of data export |
00085fa0  62 79 20 69 63 6f 6e 20  64 72 61 67 20 69 65 20  |by icon drag ie |
00085fb0  22 53 61 76 65 20 61 73  22 20 77 69 6e 64 6f 77  |"Save as" window|
00085fc0  73 2e 0a 0a 46 75 6e 63  74 69 6f 6e 73 3a 0a 0a  |s...Functions:..|
00085fd0  23 69 6e 64 65 6e 74 20  36 0a 23 74 61 62 6c 65  |#indent 6.#table|
00085fe0  20 63 6f 6c 75 6d 6e 73  20 32 0a 3c 53 61 76 65  | columns 2.<Save|
00085ff0  5f 49 6e 69 74 53 61 76  65 57 69 6e 64 6f 77 48  |_InitSaveWindowH|
00086000  61 6e 64 6c 65 72 3e 0a  3c 53 61 76 65 5f 52 65  |andler>.<Save_Re|
00086010  6c 65 61 73 65 53 61 76  65 48 61 6e 64 6c 65 72  |leaseSaveHandler|
00086020  73 3e 0a 3c 53 61 76 65  5f 53 65 74 46 69 6c 65  |s>.<Save_SetFile|
00086030  74 79 70 65 3e 0a 23 65  6e 64 74 61 62 6c 65 0a  |type>.#endtable.|
00086040  23 69 6e 64 65 6e 74 0a  0a 54 79 70 65 73 3a 0a  |#indent..Types:.|
00086050  0a 23 69 6e 64 65 6e 74  20 35 0a 23 54 61 62 6c  |.#indent 5.#Tabl|
00086060  65 20 63 6f 6c 75 6d 6e  73 20 33 0a 3c 73 61 76  |e columns 3.<sav|
00086070  65 5f 66 69 6c 65 73 61  76 65 72 3e 0a 3c 73 61  |e_filesaver>.<sa|
00086080  76 65 5f 72 61 6d 73 61  76 65 72 3e 0a 3c 73 61  |ve_ramsaver>.<sa|
00086090  76 65 5f 72 65 73 75 6c  74 3e 0a 3c 73 61 76 65  |ve_result>.<save|
000860a0  5f 72 65 73 75 6c 74 68  61 6e 64 6c 65 72 3e 0a  |_resulthandler>.|
000860b0  3c 73 61 76 65 5f 73 61  76 65 62 6c 6f 63 6b 3e  |<save_saveblock>|
000860c0  0a 0a 23 45 6e 64 54 61  62 6c 65 0a 44 41 54 41  |..#EndTable.DATA|
000860d0  24 03 00 00 73 61 76 65  61 73 0a 53 79 6e 74 61  |$...saveas.Synta|
000860e0  78 3a 09 3c 42 4f 4f 4c  3e 20 73 61 76 65 61 73  |x:.<BOOL> saveas|
000860f0  20 28 69 6e 74 20 74 79  70 65 2c 20 63 68 61 72  | (int type, char|
00086100  20 2a 6e 61 6d 65 2c 20  69 6e 74 20 73 69 7a 65  | *name, int size|
00086110  2c 20 3c 78 66 65 72 73  65 6e 64 5f 73 61 76 65  |, <xfersend_save|
00086120  70 72 6f 63 3e 20 73 61  76 65 2c 20 3c 78 66 65  |proc> save, <xfe|
00086130  72 73 65 6e 64 5f 73 65  6e 64 70 72 6f 63 3e 20  |rsend_sendproc> |
00086140  73 65 6e 64 2c 20 3c 78  66 65 72 73 65 6e 64 5f  |send, <xfersend_|
00086150  70 72 69 6e 74 70 72 6f  63 3e 20 70 72 69 6e 74  |printproc> print|
00086160  2c 20 76 6f 69 64 20 2a  68 6e 64 29 3b 0a 48 65  |, void *hnd);.He|
00086170  61 64 65 72 3a 09 3c 73  61 76 65 61 73 2e 68 3d  |ader:.<saveas.h=|
00086180  3e 73 61 76 65 61 73 5f  68 3e 0a 0a 52 65 74 75  |>saveas_h>..Retu|
00086190  72 6e 73 3a 09 3c 54 52  55 45 3e 20 69 66 20 73  |rns:.<TRUE> if s|
000861a0  75 63 63 65 73 73 66 75  6c 2e 0a 0a 53 65 65 20  |uccessful...See |
000861b0  61 6c 73 6f 20 74 68 65  20 54 69 6d 73 4c 69 62  |also the TimsLib|
000861c0  20 66 75 6e 63 74 69 6f  6e 2c 20 3c 53 61 76 65  | function, <Save|
000861d0  41 73 3d 3e 53 61 76 65  41 73 5f 3e 2e 0a 0a 54  |As=>SaveAs_>...T|
000861e0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 6f 70 65  |his function ope|
000861f0  6e 73 20 61 20 64 69 61  6c 6f 67 75 65 20 62 6f  |ns a dialogue bo|
00086200  78 20 28 6d 75 73 74 20  62 65 20 63 61 6c 6c 65  |x (must be calle|
00086210  64 20 22 78 66 65 72 5f  73 65 6e 64 22 20 61 6e  |d "xfer_send" an|
00086220  64 20 73 69 6d 69 6c 61  72 20 74 6f 20 74 68 6f  |d similar to tho|
00086230  73 65 20 69 6e 20 44 72  61 77 2c 20 45 64 69 74  |se in Draw, Edit|
00086240  20 61 6e 64 20 50 61 69  6e 74 29 2e 20 2f 74 79  | and Paint). /ty|
00086250  70 65 2f 20 63 6f 6e 74  61 69 6e 73 20 74 68 65  |pe/ contains the|
00086260  20 66 69 6c 65 20 74 79  70 65 2c 20 2f 6e 61 6d  | file type, /nam|
00086270  65 2f 20 74 68 65 20 66  69 6c 65 20 6e 61 6d 65  |e/ the file name|
00086280  2c 20 2f 73 69 7a 65 2f  20 74 68 65 20 65 73 74  |, /size/ the est|
00086290  69 6d 61 74 65 64 20 66  69 6c 65 20 73 69 7a 65  |imated file size|
000862a0  2c 20 2f 73 61 76 65 2f  20 69 73 20 74 68 65 20  |, /save/ is the |
000862b0  66 75 6e 63 74 69 6f 6e  20 75 73 65 64 20 66 6f  |function used fo|
000862c0  72 20 73 61 76 69 6e 67  20 74 6f 20 61 20 66 69  |r saving to a fi|
000862d0  6c 65 2c 20 2f 73 65 6e  64 2f 20 69 73 20 74 68  |le, /send/ is th|
000862e0  65 20 66 75 6e 63 74 69  6f 6e 20 75 73 65 64 20  |e function used |
000862f0  66 6f 72 20 52 41 4d 20  74 72 61 6e 73 66 65 72  |for RAM transfer|
00086300  2c 20 2f 70 72 69 6e 74  2f 20 69 73 20 74 68 65  |, /print/ is the|
00086310  20 66 75 6e 63 74 69 6f  6e 20 75 73 65 64 20 66  | function used f|
00086320  6f 72 20 70 72 69 6e 74  69 6e 67 2c 20 61 6e 64  |or printing, and|
00086330  20 2f 68 6e 64 2f 20 69  73 20 70 61 73 73 65 64  | /hnd/ is passed|
00086340  20 73 74 72 61 69 67 68  74 20 74 6f 20 74 68 6f  | straight to tho|
00086350  73 65 20 66 75 6e 63 74  69 6f 6e 73 2e 0a 0a 54  |se functions...T|
00086360  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 61 6c 73  |his function als|
00086370  6f 20 64 65 61 6c 73 20  77 69 74 68 20 61 6c 6c  |o deals with all|
00086380  20 74 68 65 20 6d 65 73  73 61 67 65 73 20 6e 65  | the messages ne|
00086390  65 64 65 64 20 74 6f 20  70 65 72 66 6f 72 6d 20  |eded to perform |
000863a0  74 68 65 20 64 61 74 61  20 74 72 61 6e 73 66 65  |the data transfe|
000863b0  72 2e 20 2f 73 65 6e 64  2f 20 6f 72 20 2f 70 72  |r. /send/ or /pr|
000863c0  69 6e 74 2f 20 63 61 6e  20 62 65 20 30 20 74 6f  |int/ can be 0 to|
000863d0  20 75 73 65 20 74 68 65  20 2f 73 61 76 65 2f 20  | use the /save/ |
000863e0  72 6f 75 74 69 6e 65 20  69 6e 73 74 65 61 64 2e  |routine instead.|
000863f0  44 49 52 24 b0 00 00 00  b0 00 00 00 a0 64 08 00  |DIR$.........d..|
00086400  46 fd ff ff ea 31 58 26  ed 02 00 00 13 00 00 00  |F....1X&........|
00086410  00 00 00 00 21 52 6f 6f  74 00 00 00 90 67 08 00  |....!Root....g..|
00086420  46 fd ff ff 81 07 b6 22  11 01 00 00 13 00 00 00  |F......"........|
00086430  00 00 00 00 68 00 00 00  a4 68 08 00 46 ff ff ff  |....h....h..F...|
00086440  88 07 b6 22 1e 01 00 00  13 00 00 00 00 00 00 00  |..."............|
00086450  72 65 61 64 5f 6c 65 61  66 00 00 00 c4 69 08 00  |read_leaf....i..|
00086460  46 ff ff ff 74 3d 58 26  03 01 00 00 13 00 00 00  |F...t=X&........|
00086470  00 00 00 00 52 65 61 64  4c 65 61 66 6e 61 6d 65  |....ReadLeafname|
00086480  00 00 00 00 c8 6a 08 00  46 fd ff ff db 13 58 26  |.....j..F.....X&|
00086490  bf 00 00 00 13 00 00 00  00 00 00 00 54 4c 00 00  |............TL..|
000864a0  44 41 54 41 ed 02 00 00  53 61 76 65 41 73 0a 53  |DATA....SaveAs.S|
000864b0  79 6e 74 61 78 3a 09 3c  42 4f 4f 4c 3e 20 53 61  |yntax:.<BOOL> Sa|
000864c0  76 65 41 73 20 28 69 6e  74 20 74 79 70 65 2c 20  |veAs (int type, |
000864d0  63 68 61 72 20 2a 6e 61  6d 65 2c 20 69 6e 74 20  |char *name, int |
000864e0  73 69 7a 65 2c 20 3c 78  66 65 72 73 65 6e 64 5f  |size, <xfersend_|
000864f0  73 61 76 65 70 72 6f 63  3e 20 73 61 76 65 2c 20  |saveproc> save, |
00086500  76 6f 69 64 20 2a 68 6e  64 29 3b 0a 48 65 61 64  |void *hnd);.Head|
00086510  65 72 3a 09 3c 54 69 6d  73 4c 69 62 3a 53 61 76  |er:.<TimsLib:Sav|
00086520  65 41 73 2e 68 3d 3e 53  61 76 65 41 73 5f 54 4c  |eAs.h=>SaveAs_TL|
00086530  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 3c 54 52 55  |>..Returns:.<TRU|
00086540  45 3e 20 69 66 20 66 69  6c 65 20 69 73 20 73 75  |E> if file is su|
00086550  63 63 65 73 73 66 75 6c  6c 79 20 73 61 76 65 64  |ccessfully saved|
00086560  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00086570  20 6f 70 65 6e 73 20 61  20 22 53 61 76 65 20 61  | opens a "Save a|
00086580  73 3a 22 20 64 69 61 6c  6f 67 75 65 20 62 6f 78  |s:" dialogue box|
00086590  20 61 6e 64 20 68 61 6e  64 6c 65 73 20 61 6c 6c  | and handles all|
000865a0  20 74 68 65 20 64 72 61  67 67 69 6e 67 20 61 6e  | the dragging an|
000865b0  64 20 6d 65 73 73 61 67  65 73 20 6e 65 65 64 65  |d messages neede|
000865c0  64 20 74 6f 20 73 61 76  65 20 74 68 65 20 66 69  |d to save the fi|
000865d0  6c 65 2e 20 2f 74 79 70  65 2f 20 63 6f 6e 74 61  |le. /type/ conta|
000865e0  69 6e 73 20 74 68 65 20  66 69 6c 65 20 74 79 70  |ins the file typ|
000865f0  65 2c 20 2f 6e 61 6d 65  2f 20 74 68 65 20 66 69  |e, /name/ the fi|
00086600  6c 65 20 6e 61 6d 65 2c  20 2f 73 69 7a 65 2f 20  |le name, /size/ |
00086610  74 68 65 20 65 73 74 69  6d 61 74 65 64 20 66 69  |the estimated fi|
00086620  6c 65 20 73 69 7a 65 2c  20 2f 73 61 76 65 2f 20  |le size, /save/ |
00086630  69 73 20 74 68 65 20 66  75 6e 63 74 69 6f 6e 20  |is the function |
00086640  75 73 65 64 20 66 6f 72  20 73 61 76 69 6e 67 20  |used for saving |
00086650  61 6e 64 20 2f 68 6e 64  2f 20 69 73 20 70 61 73  |and /hnd/ is pas|
00086660  73 65 64 20 73 74 72 61  69 67 68 74 20 74 6f 20  |sed straight to |
00086670  74 68 61 74 20 66 75 6e  63 74 69 6f 6e 2e 20 54  |that function. T|
00086680  68 65 20 74 65 6d 70 6c  61 74 65 20 22 78 66 65  |he template "xfe|
00086690  72 5f 73 65 6e 64 22 20  6d 75 73 74 20 62 65 20  |r_send" must be |
000866a0  6c 6f 61 64 65 64 20 77  69 74 68 20 3c 54 65 6d  |loaded with <Tem|
000866b0  70 6c 61 74 65 5f 4c 6f  61 64 46 69 6c 65 3e 20  |plate_LoadFile> |
000866c0  61 6e 64 20 73 68 6f 75  6c 64 20 68 61 76 65 20  |and should have |
000866d0  74 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 69 63  |the following ic|
000866e0  6f 6e 73 3a 0a 0a 30 09  27 4f 4b 27 20 69 63 6f  |ons:..0.'OK' ico|
000866f0  6e 2e 20 42 75 74 74 6f  6e 20 74 79 70 65 20 27  |n. Button type '|
00086700  43 6c 69 63 6b 27 2e 0a  32 09 46 69 6c 65 6e 61  |Click'..2.Filena|
00086710  6d 65 20 69 63 6f 6e 2e  20 49 6e 64 69 72 65 63  |me icon. Indirec|
00086720  74 65 64 20 74 65 78 74  2c 20 73 69 7a 65 20 32  |ted text, size 2|
00086730  35 36 2e 20 42 75 74 74  6f 6e 20 74 79 70 65 20  |56. Button type |
00086740  27 57 72 69 74 65 61 62  6c 65 27 2e 0a 33 09 46  |'Writeable'..3.F|
00086750  69 6c 65 20 69 63 6f 6e  2e 20 49 6e 64 69 72 65  |ile icon. Indire|
00086760  63 74 65 64 20 74 65 78  74 2c 20 73 69 7a 65 20  |cted text, size |
00086770  31 36 2e 20 42 75 74 74  6f 6e 20 74 79 70 65 20  |16. Button type |
00086780  27 43 6c 69 63 6b 2f 44  72 61 67 27 2e 00 00 00  |'Click/Drag'....|
00086790  44 41 54 41 11 01 00 00  73 61 76 65 61 73 2e 68  |DATA....saveas.h|
000867a0  0a 54 68 69 73 20 68 65  61 64 65 72 20 64 65 63  |.This header dec|
000867b0  6c 61 72 65 73 20 66 75  6e 63 74 69 6f 6e 73 20  |lares functions |
000867c0  66 6f 72 20 6d 61 6e 69  70 75 6c 61 74 69 6e 67  |for manipulating|
000867d0  0a 73 61 76 65 20 64 69  61 6c 6f 67 75 65 20 62  |.save dialogue b|
000867e0  6f 78 65 73 20 28 6f 72  20 61 73 20 41 63 6f 72  |oxes (or as Acor|
000867f0  6e 20 70 75 74 20 69 74  2c 0a 22 65 78 70 6f 72  |n put it,."expor|
00086800  74 20 6f 66 20 64 61 74  61 20 62 79 20 64 72 61  |t of data by dra|
00086810  67 67 69 6e 67 20 69 63  6f 6e 20 66 72 6f 6d 20  |gging icon from |
00086820  64 69 61 6c 6f 67 75 65  0a 62 6f 78 22 2e 0a 0a  |dialogue.box"...|
00086830  46 75 6e 63 74 69 6f 6e  73 3a 0a 0a 20 20 20 20  |Functions:..    |
00086840  20 20 20 3c 73 61 76 65  61 73 20 20 20 20 20 20  |   <saveas      |
00086850  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00086860  20 20 20 20 3e 0a 20 20  20 20 20 20 20 3c 73 61  |    >.       <sa|
00086870  76 65 61 73 5f 72 65 61  64 5f 6c 65 61 66 6e 61  |veas_read_leafna|
00086880  6d 65 5f 64 75 72 69 6e  67 5f 73 65 6e 64 3d 3e  |me_during_send=>|
00086890  73 61 76 65 61 73 5f 72  65 61 64 5f 6c 65 61 66  |saveas_read_leaf|
000868a0  3e 00 00 00 44 41 54 41  1e 01 00 00 73 61 76 65  |>...DATA....save|
000868b0  61 73 5f 72 65 61 64 5f  6c 65 61 66 6e 61 6d 65  |as_read_leafname|
000868c0  5f 64 75 72 69 6e 67 5f  73 65 6e 64 0a 53 79 6e  |_during_send.Syn|
000868d0  74 61 78 3a 20 20 76 6f  69 64 20 73 61 76 65 61  |tax:  void savea|
000868e0  73 5f 72 65 61 64 5f 6c  65 61 66 6e 61 6d 65 5f  |s_read_leafname_|
000868f0  64 75 72 69 6e 67 5f 73  65 6e 64 0a 20 20 20 20  |during_send.    |
00086900  20 20 20 20 20 28 63 68  61 72 20 2a 6e 61 6d 65  |     (char *name|
00086910  2c 20 69 6e 74 20 6c 65  6e 67 74 68 29 3b 0a 48  |, int length);.H|
00086920  65 61 64 65 72 3a 20 20  3c 73 61 76 65 61 73 2e  |eader:  <saveas.|
00086930  68 3d 3e 73 61 76 65 61  73 5f 68 3e 0a 0a 54 68  |h=>saveas_h>..Th|
00086940  69 73 20 66 75 6e 63 74  69 6f 6e 20 72 65 61 64  |is function read|
00086950  73 20 74 68 65 20 6c 65  61 66 20 6e 61 6d 65 20  |s the leaf name |
00086960  6f 66 20 74 68 65 20 66  69 6c 65 0a 6e 61 6d 65  |of the file.name|
00086970  20 69 6e 20 74 68 65 20  22 78 66 65 72 5f 73 65  | in the "xfer_se|
00086980  6e 64 22 20 64 69 61 6c  6f 67 75 65 20 62 6f 78  |nd" dialogue box|
00086990  2e 20 27 6c 65 6e 67 74  68 27 0a 63 6f 6e 74 61  |. 'length'.conta|
000869a0  69 6e 73 20 74 68 65 20  6c 65 6e 67 74 68 20 6f  |ins the length o|
000869b0  66 20 74 68 65 20 6e 61  6d 65 20 62 75 66 66 65  |f the name buffe|
000869c0  72 2e 00 00 44 41 54 41  03 01 00 00 53 61 76 65  |r...DATA....Save|
000869d0  41 73 5f 52 65 61 64 4c  65 61 66 6e 61 6d 65 0a  |As_ReadLeafname.|
000869e0  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 53 61 76  |Syntax:.void Sav|
000869f0  65 41 73 5f 52 65 61 64  4c 65 61 66 6e 61 6d 65  |eAs_ReadLeafname|
00086a00  20 28 63 68 61 72 20 2a  6e 61 6d 65 2c 20 69 6e  | (char *name, in|
00086a10  74 20 6c 65 6e 67 74 68  29 3b 0a 48 65 61 64 65  |t length);.Heade|
00086a20  72 3a 09 3c 54 69 6d 73  4c 69 62 3a 53 61 76 65  |r:.<TimsLib:Save|
00086a30  41 73 2e 68 3d 3e 53 61  76 65 41 73 5f 54 4c 3e  |As.h=>SaveAs_TL>|
00086a40  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00086a50  72 65 61 64 73 20 74 68  65 20 6c 65 61 66 6e 61  |reads the leafna|
00086a60  6d 65 20 6f 66 20 74 68  65 20 66 69 6c 65 20 73  |me of the file s|
00086a70  61 76 65 64 20 75 73 69  6e 67 20 3c 53 61 76 65  |aved using <Save|
00086a80  41 73 3d 3e 53 61 76 65  41 73 5f 3e 2e 0a 0a 54  |As=>SaveAs_>...T|
00086a90  68 65 20 6e 61 6d 65 20  69 73 20 73 74 6f 72 65  |he name is store|
00086aa0  64 20 69 6e 20 6e 61 6d  65 2c 20 61 6e 20 61 72  |d in name, an ar|
00086ab0  72 61 79 20 6f 66 20 6c  65 6e 67 74 68 20 2f 6c  |ray of length /l|
00086ac0  65 6e 67 74 68 2f 2e 00  44 41 54 41 bf 00 00 00  |ength/..DATA....|
00086ad0  54 69 6d 73 4c 69 62 3a  53 61 76 65 41 73 2e 68  |TimsLib:SaveAs.h|
00086ae0  0a 54 68 69 73 20 68 65  61 64 65 72 20 64 65 63  |.This header dec|
00086af0  6c 61 72 65 73 20 66 75  6e 63 74 69 6f 6e 73 20  |lares functions |
00086b00  66 6f 72 20 65 61 73 79  20 68 61 6e 64 6c 69 6e  |for easy handlin|
00086b10  67 20 6f 66 20 73 74 61  6e 64 61 72 64 20 22 73  |g of standard "s|
00086b20  61 76 65 20 61 73 22 20  64 69 61 6c 6f 67 75 65  |ave as" dialogue|
00086b30  20 62 6f 78 65 73 2e 0a  0a 46 75 6e 63 74 69 6f  | boxes...Functio|
00086b40  6e 73 3a 0a 0a 23 74 61  62 6c 65 20 63 6f 6c 75  |ns:..#table colu|
00086b50  6d 6e 73 20 32 0a 3c 53  61 76 65 41 73 3d 3e 53  |mns 2.<SaveAs=>S|
00086b60  61 76 65 41 73 5f 3e 0a  3c 53 61 76 65 41 73 5f  |aveAs_>.<SaveAs_|
00086b70  52 65 61 64 4c 65 61 66  6e 61 6d 65 3e 0a 23 65  |ReadLeafname>.#e|
00086b80  6e 64 74 61 62 6c 65 00  44 49 52 24 40 01 00 00  |ndtable.DIR$@...|
00086b90  40 01 00 00 c8 6c 08 00  46 ff ff ff 45 10 63 25  |@....l..F...E.c%|
00086ba0  7b 01 00 00 13 00 00 00  00 00 00 00 66 69 6c 65  |{...........file|
00086bb0  73 61 76 65 72 00 00 00  44 6e 08 00 46 ff ff ff  |saver...Dn..F...|
00086bc0  42 d7 1e 30 3c 05 00 00  13 00 00 00 00 00 00 00  |B..0<...........|
00086bd0  49 6e 69 74 53 61 76 65  57 69 6e 64 6f 77 48 61  |InitSaveWindowHa|
00086be0  6e 64 6c 65 72 00 00 00  34 d4 0c 00 46 ff ff ff  |ndler...4...F...|
00086bf0  a4 32 1c 30 5d 02 00 00  13 00 00 00 00 00 00 00  |.2.0]...........|
00086c00  72 61 6d 73 61 76 65 72  00 00 00 00 e0 75 08 00  |ramsaver.....u..|
00086c10  46 ff ff ff 10 f8 63 25  92 01 00 00 13 00 00 00  |F.....c%........|
00086c20  00 00 00 00 52 65 6c 65  61 73 65 53 61 76 65 48  |....ReleaseSaveH|
00086c30  61 6e 64 6c 65 72 73 00  74 77 08 00 46 ff ff ff  |andlers.tw..F...|
00086c40  54 43 63 25 08 01 00 00  13 00 00 00 00 00 00 00  |TCc%............|
00086c50  72 65 73 75 6c 74 00 00  7c 78 08 00 46 ff ff ff  |result..|x..F...|
00086c60  43 51 63 25 62 01 00 00  13 00 00 00 00 00 00 00  |CQc%b...........|
00086c70  72 65 73 75 6c 74 68 61  6e 64 6c 65 72 00 00 00  |resulthandler...|
00086c80  e0 79 08 00 46 ff ff ff  e9 8d 63 25 a9 03 00 00  |.y..F.....c%....|
00086c90  13 00 00 00 00 00 00 00  73 61 76 65 62 6c 6f 63  |........savebloc|
00086ca0  6b 00 00 00 8c 7d 08 00  46 ff ff ff de 33 64 25  |k....}..F....3d%|
00086cb0  71 01 00 00 13 00 00 00  00 00 00 00 53 65 74 46  |q...........SetF|
00086cc0  69 6c 65 74 79 70 65 00  44 41 54 41 7b 01 00 00  |iletype.DATA{...|
00086cd0  73 61 76 65 5f 66 69 6c  65 73 61 76 65 72 0a 54  |save_filesaver.T|
00086ce0  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
00086cf0  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
00086d00  53 61 76 65 2e 68 3d 3e  53 61 76 65 3e 2e 20 49  |Save.h=>Save>. I|
00086d10  74 20 64 65 66 69 6e 65  73 20 61 20 66 75 6e 63  |t defines a func|
00086d20  74 69 6f 6e 20 74 79 70  65 20 75 73 65 64 20 66  |tion type used f|
00086d30  6f 72 20 73 61 76 69 6e  67 20 64 61 74 61 2e 20  |or saving data. |
00086d40  54 68 65 20 66 75 6e 63  74 69 6f 6e 20 69 73 20  |The function is |
00086d50  6f 66 20 74 68 65 20 66  6f 72 6d 3a 0a 7b 77 72  |of the form:.{wr|
00086d60  61 70 20 6f 66 66 7d 0a  7b 66 43 6f 64 65 3b 61  |ap off}.{fCode;a|
00086d70  6c 69 67 6e 20 63 65 6e  74 72 65 7d 3c 42 4f 4f  |lign centre}<BOO|
00086d80  4c 3e 20 6d 79 66 75 6e  63 20 28 63 68 61 72 20  |L> myfunc (char |
00086d90  2a 66 2c 20 76 6f 69 64  20 2a 72 65 66 29 3b 7b  |*f, void *ref);{|
00086da0  66 3b 61 6c 69 67 6e 3b  77 72 61 70 7d 0a 0a 54  |f;align;wrap}..T|
00086db0  68 65 20 66 75 6e 63 74  69 6f 6e 20 73 68 6f 75  |he function shou|
00086dc0  6c 64 20 73 61 76 65 20  64 61 74 61 20 74 6f 20  |ld save data to |
00086dd0  66 69 6c 65 20 2f 66 2f  2c 20 2f 72 65 66 2f 20  |file /f/, /ref/ |
00086de0  69 73 20 70 61 73 73 65  64 20 73 74 72 61 69 67  |is passed straig|
00086df0  68 74 20 66 72 6f 6d 20  3c 53 61 76 65 5f 49 6e  |ht from <Save_In|
00086e00  69 74 53 61 76 65 57 69  6e 64 6f 77 48 61 6e 64  |itSaveWindowHand|
00086e10  6c 65 72 3e 2e 20 49 74  20 73 68 6f 75 6c 64 20  |ler>. It should |
00086e20  72 65 74 75 72 6e 20 3c  54 52 55 45 3e 20 69 66  |return <TRUE> if|
00086e30  20 61 6e 20 65 72 72 6f  72 20 6f 63 63 75 72 72  | an error occurr|
00086e40  65 64 2e 00 44 41 54 41  3c 05 00 00 53 61 76 65  |ed..DATA<...Save|
00086e50  5f 49 6e 69 74 53 61 76  65 57 69 6e 64 6f 77 48  |_InitSaveWindowH|
00086e60  61 6e 64 6c 65 72 0a 53  79 6e 74 61 78 3a 09 3c  |andler.Syntax:.<|
00086e70  73 61 76 65 5f 73 61 76  65 62 6c 6f 63 6b 3e 20  |save_saveblock> |
00086e80  2a 53 61 76 65 5f 49 6e  69 74 53 61 76 65 57 69  |*Save_InitSaveWi|
00086e90  6e 64 6f 77 48 61 6e 64  6c 65 72 20 28 3c 77 69  |ndowHandler (<wi|
00086ea0  6e 64 6f 77 5f 68 61 6e  64 6c 65 3e 20 77 2c 20  |ndow_handle> w, |
00086eb0  3c 42 4f 4f 4c 3e 20 69  73 5f 6d 65 6e 75 2c 20  |<BOOL> is_menu, |
00086ec0  42 4f 4f 4c 20 69 73 5f  77 69 6e 2c 20 42 4f 4f  |BOOL is_win, BOO|
00086ed0  4c 20 72 65 6c 65 61 73  65 2c 20 3c 69 63 6f 6e  |L release, <icon|
00086ee0  5f 68 61 6e 64 6c 65 3e  20 64 72 61 67 2c 20 69  |_handle> drag, i|
00086ef0  63 6f 6e 5f 68 61 6e 64  6c 65 20 6f 6b 2c 20 69  |con_handle ok, i|
00086f00  63 6f 6e 5f 68 61 6e 64  6c 65 20 63 61 6e 63 65  |con_handle cance|
00086f10  6c 2c 20 69 63 6f 6e 5f  68 61 6e 64 6c 65 20 6e  |l, icon_handle n|
00086f20  61 6d 65 2c 20 3c 73 61  76 65 5f 66 69 6c 65 73  |ame, <save_files|
00086f30  61 76 65 72 3e 20 66 69  6c 65 73 61 76 65 2c 20  |aver> filesave, |
00086f40  3c 73 61 76 65 5f 72 61  6d 73 61 76 65 72 3e 20  |<save_ramsaver> |
00086f50  72 61 6d 73 61 76 65 2c  20 3c 73 61 76 65 5f 72  |ramsave, <save_r|
00086f60  65 73 75 6c 74 68 61 6e  64 6c 65 72 3e 20 72 65  |esulthandler> re|
00086f70  73 5f 68 61 6e 64 6c 65  2c 20 3c 73 69 7a 65 5f  |s_handle, <size_|
00086f80  74 3e 20 65 73 74 73 69  7a 65 2c 20 69 6e 74 20  |t> estsize, int |
00086f90  66 69 6c 65 74 79 70 65  2c 20 76 6f 69 64 20 2a  |filetype, void *|
00086fa0  72 65 66 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |ref);.Header:.<D|
00086fb0  65 73 6b 4c 69 62 3a 53  61 76 65 2e 68 3d 3e 53  |eskLib:Save.h=>S|
00086fc0  61 76 65 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |ave>..Returns:.P|
00086fd0  6f 69 6e 74 65 72 20 74  6f 20 73 61 76 65 20 62  |ointer to save b|
00086fe0  6c 6f 63 6b 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |lock...This func|
00086ff0  74 69 6f 6e 20 68 61 6e  64 6c 65 73 20 65 76 65  |tion handles eve|
00087000  72 79 74 68 69 6e 67 20  74 6f 20 64 6f 20 77 69  |rything to do wi|
00087010  74 68 20 73 61 76 69 6e  67 2e 20 4f 6e 63 65 20  |th saving. Once |
00087020  79 6f 75 72 20 73 61 76  65 0a 77 69 6e 64 6f 77  |your save.window|
00087030  20 69 73 20 63 72 65 61  74 65 64 20 61 6c 6c 20  | is created all |
00087040  79 6f 75 20 6e 65 65 64  20 74 6f 20 64 6f 20 69  |you need to do i|
00087050  73 20 63 61 6c 6c 20 74  68 69 73 20 77 69 74 68  |s call this with|
00087060  3a 0a 7b 74 61 62 7d 0a  8f 09 54 68 65 20 77 69  |:.{tab}...The wi|
00087070  6e 64 6f 77 20 68 61 6e  64 6c 65 20 6f 66 20 74  |ndow handle of t|
00087080  68 65 20 73 61 76 65 20  77 69 6e 64 6f 77 0a 8f  |he save window..|
00087090  09 49 66 20 74 68 65 20  73 61 76 65 20 77 69 6e  |.If the save win|
000870a0  64 6f 77 20 69 73 20 6f  6e 20 61 20 6d 65 6e 75  |dow is on a menu|
000870b0  20 6f 72 20 6a 75 73 74  20 61 20 77 69 6e 64 6f  | or just a windo|
000870c0  77 0a 8f 09 49 66 20 74  68 65 20 73 61 76 65 20  |w...If the save |
000870d0  68 61 6e 64 6c 65 72 73  20 73 68 6f 75 6c 64 20  |handlers should |
000870e0  62 65 20 72 65 6c 65 61  73 65 64 20 61 66 74 65  |be released afte|
000870f0  72 77 61 72 64 73 0a 8f  09 54 68 65 20 69 63 6f  |rwards...The ico|
00087100  6e 20 68 61 6e 64 6c 65  73 20 6f 66 20 74 68 65  |n handles of the|
00087110  20 64 72 61 67 67 61 62  6c 65 20 69 63 6f 6e 2c  | draggable icon,|
00087120  20 4f 4b 2c 20 43 61 6e  63 65 6c 20 61 6e 64 20  | OK, Cancel and |
00087130  66 69 6c 65 6e 61 6d 65  0a 8f 09 54 68 65 20 68  |filename...The h|
00087140  61 6e 64 6c 65 72 73 20  66 6f 72 20 73 61 76 69  |andlers for savi|
00087150  6e 67 20 74 6f 20 66 69  6c 65 2c 20 52 41 4d 20  |ng to file, RAM |
00087160  74 72 61 6e 73 66 65 72  2c 20 61 6e 64 20 61 66  |transfer, and af|
00087170  74 65 72 77 61 72 64 73  0a 8f 09 54 68 65 20 65  |terwards...The e|
00087180  73 74 69 6d 61 74 65 64  20 66 69 6c 65 20 73 69  |stimated file si|
00087190  7a 65 20 28 70 72 65 74  74 79 20 75 73 65 6c 65  |ze (pretty usele|
000871a0  73 73 20 72 65 61 6c 6c  79 29 0a 8f 09 41 20 75  |ss really)...A u|
000871b0  73 65 72 20 76 61 6c 75  65 20 28 7b 2f 7d 72 65  |ser value ({/}re|
000871c0  66 7b 2f 7d 29 20 77 68  69 63 68 20 69 73 20 70  |f{/}) which is p|
000871d0  61 73 73 65 64 20 64 69  72 65 63 74 6c 79 20 74  |assed directly t|
000871e0  6f 20 74 68 65 20 68 61  6e 64 6c 65 72 73 2e 0a  |o the handlers..|
000871f0  0a 50 6f 69 6e 74 73 20  74 6f 20 6e 6f 74 65 3a  |.Points to note:|
00087200  0a 0a 8f 09 54 68 65 20  66 69 6c 65 6e 61 6d 65  |....The filename|
00087210  20 6d 75 73 74 20 62 65  20 69 6e 64 69 72 65 63  | must be indirec|
00087220  74 65 64 20 74 65 78 74  20 61 6e 64 20 73 68 6f  |ted text and sho|
00087230  75 6c 64 20 63 6f 6e 74  61 69 6e 20 61 20 64 65  |uld contain a de|
00087240  66 61 75 6c 74 20 6e 61  6d 65 2e 0a 8f 09 2f 72  |fault name..../r|
00087250  61 6d 73 61 76 65 2f 20  61 6e 64 20 7b 2f 7d 72  |amsave/ and {/}r|
00087260  65 73 5f 68 61 6e 64 6c  65 7b 2f 7d 20 61 72 65  |es_handle{/} are|
00087270  20 6f 70 74 69 6f 6e 61  6c 20 28 3c 4e 55 4c 4c  | optional (<NULL|
00087280  3e 20 69 66 20 6e 6f 74  20 72 65 71 75 69 72 65  |> if not require|
00087290  64 29 2e 0a 8f 09 2f 72  65 6c 65 61 73 65 2f 20  |d)..../release/ |
000872a0  63 61 6e 20 62 65 20 3c  46 41 4c 53 45 3e 20 69  |can be <FALSE> i|
000872b0  66 20 79 6f 75 20 77 61  6e 74 20 74 6f 20 6f 6e  |f you want to on|
000872c0  6c 79 20 63 61 6c 6c 20  74 68 69 73 20 66 75 6e  |ly call this fun|
000872d0  63 74 69 6f 6e 20 6f 6e  63 65 20 77 68 65 6e 20  |ction once when |
000872e0  74 68 65 20 77 69 6e 64  6f 77 20 69 73 20 63 72  |the window is cr|
000872f0  65 61 74 65 64 2e 20 49  6e 20 74 68 69 73 20 63  |eated. In this c|
00087300  61 73 65 20 79 6f 75 20  6d 61 79 20 6e 65 65 64  |ase you may need|
00087310  20 74 6f 20 61 63 63 65  73 73 20 74 68 65 20 72  | to access the r|
00087320  65 74 75 72 6e 65 64 20  73 74 72 75 63 74 75 72  |eturned structur|
00087330  65 20 79 6f 75 72 73 65  6c 66 2e 0a 8f 09 54 68  |e yourself....Th|
00087340  65 20 73 61 76 65 20 77  69 6e 64 6f 77 20 63 61  |e save window ca|
00087350  6e 20 68 61 76 65 20 61  20 63 6c 6f 73 65 20 69  |n have a close i|
00087360  63 6f 6e 2c 20 62 75 74  20 74 68 69 73 20 69 73  |con, but this is|
00087370  20 6e 6f 74 20 67 6f 6f  64 20 73 74 79 6c 65 2e  | not good style.|
00087380  46 52 45 45 5d 02 00 00  ff ff ff ff 5f 72 61 6d  |FREE]......._ram|
00087390  73 61 76 65 72 0a 54 68  69 73 20 74 79 70 65 20  |saver.This type |
000873a0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 44  |is defined in <D|
000873b0  65 73 6b 4c 69 62 3a 53  61 76 65 2e 68 3d 3e 53  |eskLib:Save.h=>S|
000873c0  61 76 65 3e 2e 20 49 74  20 64 65 66 69 6e 65 73  |ave>. It defines|
000873d0  20 61 20 66 75 6e 63 74  69 6f 6e 20 74 79 70 65  | a function type|
000873e0  20 75 73 65 64 20 66 6f  72 20 73 61 76 69 6e 67  | used for saving|
000873f0  20 64 61 74 61 2e 20 54  68 65 20 66 75 6e 63 74  | data. The funct|
00087400  69 6f 6e 20 69 73 20 6f  66 20 74 68 65 20 66 6f  |ion is of the fo|
00087410  72 6d 3a 0a 0a 7b 66 43  6f 64 65 3b 61 6c 69 67  |rm:..{fCode;alig|
00087420  6e 20 63 65 6e 74 72 65  7d 69 6e 74 20 6d 79 66  |n centre}int myf|
00087430  75 6e 63 20 28 3c 74 61  73 6b 5f 68 61 6e 64 6c  |unc (<task_handl|
00087440  65 3e 20 73 6f 75 72 63  65 2c 20 76 6f 69 64 20  |e> source, void |
00087450  2a 72 65 66 2c 20 74 61  73 6b 5f 68 61 6e 64 6c  |*ref, task_handl|
00087460  65 20 64 65 73 74 69 6e  2c 20 76 6f 69 64 20 2a  |e destin, void *|
00087470  62 75 66 2c 20 75 6e 73  69 67 6e 65 64 20 69 6e  |buf, unsigned in|
00087480  74 20 73 69 7a 65 2c 20  69 6e 74 20 63 6f 75 6e  |t size, int coun|
00087490  74 29 3b 7b 66 3b 61 6c  69 67 6e 7d 0a 0a 54 68  |t);{f;align}..Th|
000874a0  65 20 66 75 6e 63 74 69  6f 6e 20 73 68 6f 75 6c  |e function shoul|
000874b0  64 20 75 73 65 20 3c 57  69 6d 70 5f 54 72 61 6e  |d use <Wimp_Tran|
000874c0  73 66 65 72 42 6c 6f 63  6b 3e 20 74 6f 20 74 72  |sferBlock> to tr|
000874d0  61 6e 73 66 65 72 20 64  61 74 61 20 74 6f 20 2f  |ansfer data to /|
000874e0  62 75 66 2f 20 69 6e 20  74 68 65 20 74 61 73 6b  |buf/ in the task|
000874f0  20 2f 64 65 73 74 69 6e  2f 2e 20 2f 73 69 7a 65  | /destin/. /size|
00087500  2f 20 67 69 76 65 73 20  74 68 65 20 73 69 7a 65  |/ gives the size|
00087510  20 6f 66 20 2f 62 75 66  2f 20 69 65 20 74 68 65  | of /buf/ ie the|
00087520  20 61 6d 6f 75 6e 74 20  74 6f 20 74 72 61 6e 73  | amount to trans|
00087530  66 65 72 20 61 6e 64 20  2f 63 6f 75 6e 74 2f 20  |fer and /count/ |
00087540  69 73 20 74 68 65 20 61  6d 6f 75 6e 74 20 74 72  |is the amount tr|
00087550  61 6e 73 66 65 72 72 65  64 20 74 6f 20 66 61 72  |ansferred to far|
00087560  2e 20 2f 73 6f 75 72 63  65 2f 20 69 73 20 79 6f  |. /source/ is yo|
00087570  75 72 20 74 61 73 6b 20  68 61 6e 64 6c 65 2e 20  |ur task handle. |
00087580  54 68 65 20 66 75 6e 63  74 69 6f 6e 20 73 68 6f  |The function sho|
00087590  75 6c 64 20 72 65 74 75  72 6e 20 74 68 65 20 6e  |uld return the n|
000875a0  75 6d 62 65 72 20 6f 66  20 62 79 74 65 73 20 74  |umber of bytes t|
000875b0  72 61 6e 73 66 65 72 72  65 64 2c 20 6f 72 20 6e  |ransferred, or n|
000875c0  65 67 61 74 69 76 65 20  69 66 20 61 6e 20 65 72  |egative if an er|
000875d0  72 6f 72 20 6f 63 63 75  72 72 65 64 2e 00 00 00  |ror occurred....|
000875e0  44 41 54 41 92 01 00 00  53 61 76 65 5f 52 65 6c  |DATA....Save_Rel|
000875f0  65 61 73 65 53 61 76 65  48 61 6e 64 6c 65 72 73  |easeSaveHandlers|
00087600  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 53 61  |.Syntax:.void Sa|
00087610  76 65 5f 52 65 6c 65 61  73 65 53 61 76 65 48 61  |ve_ReleaseSaveHa|
00087620  6e 64 6c 65 72 73 20 28  3c 73 61 76 65 5f 73 61  |ndlers (<save_sa|
00087630  76 65 62 6c 6f 63 6b 3e  20 2a 73 61 76 65 62 6c  |veblock> *savebl|
00087640  6f 63 6b 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |ock);.Header:.<D|
00087650  65 73 6b 4c 69 62 3a 53  61 76 65 2e 68 3d 3e 53  |eskLib:Save.h=>S|
00087660  61 76 65 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |ave>..This funct|
00087670  69 6f 6e 20 72 65 6c 65  61 73 65 73 20 74 68 65  |ion releases the|
00087680  20 73 61 76 65 20 68 61  6e 64 6c 65 72 73 2e 20  | save handlers. |
00087690  59 6f 75 20 77 69 6c 6c  20 6f 6e 6c 79 20 6e 65  |You will only ne|
000876a0  65 64 20 74 6f 20 63 61  6c 6c 20 74 68 69 73 20  |ed to call this |
000876b0  69 66 20 66 6f 72 20 73  6f 6d 65 20 72 65 61 73  |if for some reas|
000876c0  6f 6e 20 74 68 65 20 53  61 76 65 20 6d 6f 64 75  |on the Save modu|
000876d0  6c 65 20 63 61 6e 6e 6f  74 20 64 65 74 65 63 74  |le cannot detect|
000876e0  20 74 68 65 20 6d 65 6e  75 20 63 6c 6f 73 69 6e  | the menu closin|
000876f0  67 20 6f 72 20 74 68 65  20 77 69 6e 64 6f 77 20  |g or the window |
00087700  63 6c 6f 73 69 6e 67 2e  20 46 6f 72 20 69 6e 73  |closing. For ins|
00087710  74 61 6e 63 65 2c 20 75  6e 64 65 72 20 52 49 53  |tance, under RIS|
00087720  43 20 4f 53 20 32 20 6d  65 6e 75 20 63 6c 6f 73  |C OS 2 menu clos|
00087730  69 6e 67 20 63 61 6e 6e  6f 74 20 62 65 20 64 65  |ing cannot be de|
00087740  74 65 63 74 65 64 20 61  6e 64 20 73 6f 20 79 6f  |tected and so yo|
00087750  75 20 77 69 6c 6c 20 68  61 76 65 20 74 6f 20 63  |u will have to c|
00087760  61 6c 6c 20 74 68 69 73  20 73 6f 6d 65 74 69 6d  |all this sometim|
00087770  65 2e 00 00 44 41 54 41  08 01 00 00 73 61 76 65  |e...DATA....save|
00087780  5f 72 65 73 75 6c 74 0a  54 68 69 73 20 74 79 70  |_result.This typ|
00087790  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
000877a0  3c 44 65 73 6b 4c 69 62  3a 53 61 76 65 2e 68 3d  |<DeskLib:Save.h=|
000877b0  3e 53 61 76 65 3e 2e 20  49 74 20 69 73 20 61 6e  |>Save>. It is an|
000877c0  20 65 6e 75 6d 65 72 61  74 65 64 20 74 79 70 65  | enumerated type|
000877d0  20 63 6f 6e 74 61 69 6e  69 6e 67 20 74 68 65 20  | containing the |
000877e0  70 6f 73 73 69 62 6c 65  20 72 65 73 75 6c 74 73  |possible results|
000877f0  20 6f 66 20 61 20 73 61  76 65 20 61 74 74 65 6d  | of a save attem|
00087800  70 74 2e 0a 0a 20 20 20  20 5c 7b 0a 20 20 20 20  |pt...    \{.    |
00087810  20 20 73 61 76 65 5f 53  41 56 45 4f 4b 09 3d 20  |  save_SAVEOK.= |
00087820  30 2c 0a 20 20 20 20 20  20 73 61 76 65 5f 52 45  |0,.      save_RE|
00087830  43 45 49 56 45 52 46 41  49 4c 45 44 2c 09 0a 20  |CEIVERFAILED,.. |
00087840  20 20 20 20 20 73 61 76  65 5f 46 49 4c 45 53 41  |     save_FILESA|
00087850  56 45 52 46 41 49 4c 45  44 2c 09 0a 20 20 20 20  |VERFAILED,..    |
00087860  20 20 73 61 76 65 5f 52  41 4d 53 41 56 45 52 46  |  save_RAMSAVERF|
00087870  41 49 4c 45 44 09 0a 20  20 20 20 7d 44 41 54 41  |AILED..    }DATA|
00087880  62 01 00 00 73 61 76 65  5f 72 65 73 75 6c 74 68  |b...save_resulth|
00087890  61 6e 64 6c 65 72 0a 54  68 69 73 20 74 79 70 65  |andler.This type|
000878a0  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
000878b0  44 65 73 6b 4c 69 62 3a  53 61 76 65 2e 68 3d 3e  |DeskLib:Save.h=>|
000878c0  53 61 76 65 3e 2e 20 49  74 20 64 65 66 69 6e 65  |Save>. It define|
000878d0  73 20 61 20 66 75 6e 63  74 69 6f 6e 20 74 79 70  |s a function typ|
000878e0  65 20 63 61 6c 6c 65 64  20 61 66 74 65 72 20 73  |e called after s|
000878f0  61 76 69 6e 67 2e 20 54  68 65 20 66 75 6e 63 74  |aving. The funct|
00087900  69 6f 6e 20 69 73 20 6f  66 20 74 68 65 20 66 6f  |ion is of the fo|
00087910  72 6d 3a 0a 7b 77 72 61  70 20 6f 66 66 7d 0a 7b  |rm:.{wrap off}.{|
00087920  66 43 6f 64 65 3b 61 6c  69 67 6e 20 63 65 6e 74  |fCode;align cent|
00087930  72 65 7d 76 6f 69 64 20  6d 79 66 75 6e 63 20 28  |re}void myfunc (|
00087940  3c 73 61 76 65 5f 72 65  73 75 6c 74 3e 20 72 65  |<save_result> re|
00087950  73 75 6c 74 2c 20 76 6f  69 64 20 2a 72 65 66 29  |sult, void *ref)|
00087960  3b 7b 66 3b 61 6c 69 67  6e 3b 77 72 61 70 7d 0a  |;{f;align;wrap}.|
00087970  0a 54 68 65 20 66 75 6e  63 74 69 6f 6e 20 73 68  |.The function sh|
00087980  6f 75 6c 64 20 61 63 74  20 6f 6e 20 74 68 65 20  |ould act on the |
00087990  72 65 73 75 6c 74 20 63  6f 64 65 20 67 69 76 65  |result code give|
000879a0  6e 2c 20 2f 72 65 66 2f  20 69 73 20 70 61 73 73  |n, /ref/ is pass|
000879b0  65 64 20 73 74 72 61 69  67 68 74 20 66 72 6f 6d  |ed straight from|
000879c0  20 3c 53 61 76 65 5f 49  6e 69 74 53 61 76 65 57  | <Save_InitSaveW|
000879d0  69 6e 64 6f 77 48 61 6e  64 6c 65 72 3e 2e 00 00  |indowHandler>...|
000879e0  44 41 54 41 a9 03 00 00  73 61 76 65 5f 73 61 76  |DATA....save_sav|
000879f0  65 62 6c 6f 63 6b 0a 54  68 69 73 20 74 79 70 65  |eblock.This type|
00087a00  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
00087a10  44 65 73 6b 4c 69 62 3a  53 61 76 65 2e 68 3d 3e  |DeskLib:Save.h=>|
00087a20  53 61 76 65 3e 2e 20 49  74 20 69 73 20 61 20 72  |Save>. It is a r|
00087a30  61 74 68 65 72 20 6c 61  72 67 65 20 73 74 72 75  |ather large stru|
00087a40  63 74 75 72 65 20 77 68  69 63 68 20 63 6f 6e 74  |cture which cont|
00087a50  61 69 6e 73 20 61 6c 6c  20 74 68 65 20 69 6e 66  |ains all the inf|
00087a60  6f 72 6d 61 74 69 6f 6e  20 6e 65 65 64 65 64 20  |ormation needed |
00087a70  74 6f 20 68 61 6e 64 6c  65 20 61 20 73 61 76 65  |to handle a save|
00087a80  20 6f 70 65 72 61 74 69  6f 6e 2e 20 59 6f 75 20  | operation. You |
00087a90  77 69 6c 6c 20 6e 6f 74  20 67 65 6e 65 72 61 6c  |will not general|
00087aa0  6c 79 20 6e 65 65 64 20  74 6f 20 61 63 63 65 73  |ly need to acces|
00087ab0  73 20 74 68 69 73 20 73  74 72 75 63 74 75 72 65  |s this structure|
00087ac0  20 69 6e 74 65 72 6e 61  6c 6c 79 2c 20 62 75 74  | internally, but|
00087ad0  20 66 6f 72 20 74 68 65  20 69 6e 74 65 72 65 73  | for the interes|
00087ae0  74 65 64 20 69 74 20 69  73 3a 0a 0a 5c 7b 0a 20  |ted it is:..\{. |
00087af0  20 3c 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 3e  | <window_handle>|
00087b00  20 77 69 6e 64 6f 77 3b  0a 0a 20 20 75 6e 69 6f  | window;..  unio|
00087b10  6e 0a 20 20 5c 7b 0a 20  20 20 20 75 6e 73 69 67  |n.  \{.    unsig|
00087b20  6e 65 64 20 69 6e 74 20  76 61 6c 75 65 3b 0a 20  |ned int value;. |
00087b30  20 20 20 73 74 72 75 63  74 0a 20 20 20 20 5c 7b  |   struct.    \{|
00087b40  0a 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |.      unsigned |
00087b50  69 6e 74 20 69 73 5f 6d  65 6e 75 09 09 3a 20 31  |int is_menu..: 1|
00087b60  3b 0a 20 20 20 20 20 20  75 6e 73 69 67 6e 65 64  |;.      unsigned|
00087b70  20 69 6e 74 20 69 73 5f  73 61 76 65 5f 77 69 6e  | int is_save_win|
00087b80  64 6f 77 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |dow.: 1;.      u|
00087b90  6e 73 69 67 6e 65 64 20  69 6e 74 20 77 65 5f 61  |nsigned int we_a|
00087ba0  72 65 5f 64 72 61 67 67  69 6e 67 09 3a 20 31 3b  |re_dragging.: 1;|
00087bb0  0a 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |.      unsigned |
00087bc0  69 6e 74 20 71 75 69 74  5f 61 66 74 65 72 5f 73  |int quit_after_s|
00087bd0  61 76 65 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |ave.: 1;.      u|
00087be0  6e 73 69 67 6e 65 64 20  69 6e 74 20 72 65 6c 65  |nsigned int rele|
00087bf0  61 73 65 5f 61 66 74 65  72 09 3a 20 31 3b 0a 0a  |ase_after.: 1;..|
00087c00  20 20 20 20 20 20 75 6e  73 69 67 6e 65 64 20 69  |      unsigned i|
00087c10  6e 74 20 70 61 64 64 69  6e 67 09 09 3a 20 32 37  |nt padding..: 27|
00087c20  3b 0a 20 20 20 20 7d 20  64 61 74 61 3b 0a 20 20  |;.    } data;.  |
00087c30  7d 20 66 6c 61 67 73 3b  0a 7b 74 61 62 7d 0a 20  |} flags;.{tab}. |
00087c40  20 3c 69 63 6f 6e 5f 68  61 6e 64 6c 65 3e 09 09  | <icon_handle>..|
00087c50  64 72 61 67 73 70 72 69  74 65 3b 0a 20 20 3c 69  |dragsprite;.  <i|
00087c60  63 6f 6e 5f 68 61 6e 64  6c 65 3e 09 09 6f 6b 62  |con_handle>..okb|
00087c70  75 74 74 6f 6e 3b 0a 20  20 3c 69 63 6f 6e 5f 68  |utton;.  <icon_h|
00087c80  61 6e 64 6c 65 3e 09 09  63 61 6e 63 65 6c 62 75  |andle>..cancelbu|
00087c90  74 74 6f 6e 3b 0a 20 20  3c 69 63 6f 6e 5f 68 61  |tton;.  <icon_ha|
00087ca0  6e 64 6c 65 3e 09 09 66  69 6c 65 6e 61 6d 65 69  |ndle>..filenamei|
00087cb0  63 6f 6e 3b 0a 20 20 3c  73 61 76 65 5f 66 69 6c  |con;.  <save_fil|
00087cc0  65 73 61 76 65 72 3e 09  66 69 6c 65 73 61 76 65  |esaver>.filesave|
00087cd0  72 3b 0a 20 20 3c 73 61  76 65 5f 72 61 6d 73 61  |r;.  <save_ramsa|
00087ce0  76 65 72 3e 09 72 61 6d  73 61 76 65 72 3b 0a 20  |ver>.ramsaver;. |
00087cf0  20 3c 73 61 76 65 5f 72  65 73 75 6c 74 68 61 6e  | <save_resulthan|
00087d00  64 6c 65 72 3e 09 72 65  73 75 6c 74 68 61 6e 64  |dler>.resulthand|
00087d10  6c 65 72 3b 0a 20 20 3c  73 69 7a 65 5f 74 3e 09  |ler;.  <size_t>.|
00087d20  09 65 73 74 69 6d 61 74  65 64 73 69 7a 65 3b 0a  |.estimatedsize;.|
00087d30  20 20 69 6e 74 09 09 09  66 69 6c 65 74 79 70 65  |  int...filetype|
00087d40  0a 20 20 76 6f 69 64 09  09 09 2a 72 65 66 3b 0a  |.  void...*ref;.|
00087d50  20 20 69 6e 74 09 09 09  72 61 6d 5f 70 72 6f 67  |  int...ram_prog|
00087d60  72 65 73 73 3b 0a 20 20  75 6e 73 69 67 6e 65 64  |ress;.  unsigned|
00087d70  20 69 6e 74 09 09 6c 61  73 74 5f 6d 65 73 73 61  | int..last_messa|
00087d80  67 65 5f 72 65 66 3b 0a  7d 00 00 00 44 41 54 41  |ge_ref;.}...DATA|
00087d90  71 01 00 00 53 61 76 65  5f 53 65 74 46 69 6c 65  |q...Save_SetFile|
00087da0  74 79 70 65 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |type.Syntax:.voi|
00087db0  64 20 53 61 76 65 5f 53  65 74 46 69 6c 65 74 79  |d Save_SetFilety|
00087dc0  70 65 20 28 3c 73 61 76  65 5f 73 61 76 65 62 6c  |pe (<save_savebl|
00087dd0  6f 63 6b 3e 20 2a 62 6c  6f 63 6b 2c 20 69 6e 74  |ock> *block, int|
00087de0  20 66 69 6c 65 74 79 70  65 29 3b 0a 48 65 61 64  | filetype);.Head|
00087df0  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 53 61 76  |er:.<DeskLib:Sav|
00087e00  65 2e 68 3d 3e 53 61 76  65 3e 0a 0a 54 68 69 73  |e.h=>Save>..This|
00087e10  20 66 75 6e 63 74 69 6f  6e 20 73 65 74 73 20 74  | function sets t|
00087e20  68 65 20 73 70 72 69 74  65 20 69 6e 20 74 68 65  |he sprite in the|
00087e30  20 73 61 76 65 20 77 69  6e 64 6f 77 20 74 6f 20  | save window to |
00087e40  62 65 20 22 66 69 6c 65  5f 2e 2e 2e 22 20 69 65  |be "file_..." ie|
00087e50  20 74 68 65 20 63 6f 72  72 65 63 74 20 66 69 6c  | the correct fil|
00087e60  65 20 69 63 6f 6e 20 66  6f 72 20 74 68 65 20 66  |e icon for the f|
00087e70  69 6c 65 74 79 70 65 2c  20 61 6e 64 20 61 6c 73  |iletype, and als|
00087e80  6f 20 61 6c 74 65 72 73  20 74 68 65 20 73 61 76  |o alters the sav|
00087e90  65 62 6c 6f 63 6b 20 73  6f 20 74 68 61 74 20 74  |eblock so that t|
00087ea0  68 65 20 66 69 6c 65 74  79 70 65 20 69 73 20 75  |he filetype is u|
00087eb0  73 65 64 2e 0a 0a 4e 42  20 54 68 65 20 64 72 61  |sed...NB The dra|
00087ec0  67 20 69 63 6f 6e 20 69  73 20 73 65 74 20 74 6f  |g icon is set to|
00087ed0  20 6e 6f 6e 2d 69 6e 64  69 72 65 63 74 65 64 20  | non-indirected |
00087ee0  73 70 72 69 74 65 2d 6f  6e 6c 79 20 62 79 20 74  |sprite-only by t|
00087ef0  68 69 73 20 66 75 6e 63  74 69 6f 6e 2e 00 00 00  |his function....|
00087f00  44 49 52 24 2c 00 00 00  2c 00 00 00 2c 7f 08 00  |DIR$,...,...,...|
00087f10  46 ff ff ff 5c a4 48 26  ab 00 00 00 13 00 00 00  |F...\.H&........|
00087f20  00 00 00 00 62 6c 6f 63  6b 00 00 00 44 41 54 41  |....block...DATA|
00087f30  ab 00 00 00 73 63 61 6c  65 5f 62 6c 6f 63 6b 0a  |....scale_block.|
00087f40  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
00087f50  69 6e 65 64 20 69 6e 20  3c 44 65 73 6b 4c 69 62  |ined in <DeskLib|
00087f60  3a 57 69 6d 70 2e 68 3d  3e 57 69 6d 70 3e 20 61  |:Wimp.h=>Wimp> a|
00087f70  73 20 61 20 74 79 70 65  20 68 6f 6c 64 69 6e 67  |s a type holding|
00087f80  20 64 61 74 61 20 66 6f  72 20 75 73 65 20 62 79  | data for use by|
00087f90  20 3c 57 69 6d 70 5f 52  65 61 64 50 69 78 54 72  | <Wimp_ReadPixTr|
00087fa0  61 6e 73 3e 2e 0a 0a 20  20 5c 7b 0a 20 20 20 20  |ans>...  \{.    |
00087fb0  77 69 6d 70 5f 70 6f 69  6e 74 20 6d 75 6c 3b 0a  |wimp_point mul;.|
00087fc0  20 20 20 20 77 69 6d 70  5f 70 6f 69 6e 74 20 64  |    wimp_point d|
00087fd0  69 76 3b 0a 20 20 7d 00  44 41 54 41 23 01 00 00  |iv;.  }.DATA#...|
00087fe0  73 63 61 6e 66 0a 53 79  6e 74 61 78 3a 09 69 6e  |scanf.Syntax:.in|
00087ff0  74 20 73 63 61 6e 66 20  28 63 68 61 72 20 2a 66  |t scanf (char *f|
00088000  6f 72 6d 61 74 2c 20 2e  2e 2e 29 3b 0a 48 65 61  |ormat, ...);.Hea|
00088010  64 65 72 3a 09 3c 73 74  64 69 6f 2e 68 3d 3e 73  |der:.<stdio.h=>s|
00088020  74 64 69 6f 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |tdio>..Returns:.|
00088030  4e 75 6d 62 65 72 20 6f  66 20 73 75 63 63 65 73  |Number of succes|
00088040  73 66 75 6c 20 69 6e 70  75 74 73 2c 20 6f 72 20  |sful inputs, or |
00088050  3c 45 4f 46 3e 20 69 66  20 74 68 65 72 65 20 77  |<EOF> if there w|
00088060  61 73 20 61 6e 20 69 6e  70 75 74 20 65 72 72 6f  |as an input erro|
00088070  72 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |r...This functio|
00088080  6e 20 72 65 61 64 73 20  69 6e 70 75 74 20 66 72  |n reads input fr|
00088090  6f 6d 20 3c 73 74 64 69  6e 3e 20 75 6e 64 65 72  |om <stdin> under|
000880a0  20 63 6f 6e 74 72 6f 6c  20 6f 66 20 74 68 65 20  | control of the |
000880b0  3c 66 6f 72 6d 61 74 20  73 74 72 69 6e 67 3d 3e  |<format string=>|
000880c0  73 66 6f 72 6d 5f 3e 2e  0a 0a 49 74 20 69 73 20  |sform_>...It is |
000880d0  69 64 65 6e 74 69 63 61  6c 20 74 6f 20 3c 66 73  |identical to <fs|
000880e0  63 61 6e 66 3e 28 73 74  64 69 6e 2c 20 66 6f 72  |canf>(stdin, for|
000880f0  6d 61 74 2c 20 2e 2e 2e  29 3b 20 00 44 49 52 24  |mat, ...); .DIR$|
00088100  44 00 00 00 44 00 00 00  40 81 08 00 46 ff ff ff  |D...D...@...F...|
00088110  99 e6 bc 22 a3 00 00 00  13 00 00 00 00 00 00 00  |..."............|
00088120  4d 41 58 00 e4 81 08 00  46 ff ff ff a9 e3 bc 22  |MAX.....F......"|
00088130  a3 00 00 00 13 00 00 00  00 00 00 00 4d 49 4e 00  |............MIN.|
00088140  44 41 54 41 a3 00 00 00  53 43 48 41 52 5f 4d 41  |DATA....SCHAR_MA|
00088150  58 0a 54 68 69 73 20 6d  61 63 72 6f 20 69 73 20  |X.This macro is |
00088160  64 65 66 69 6e 65 64 20  69 6e 20 3c 6c 69 6d 69  |defined in <limi|
00088170  74 73 2e 68 3e 20 61 6e  64 20 72 65 70 72 65 73  |ts.h> and repres|
00088180  65 6e 74 73 20 74 68 65  20 6d 61 78 69 6d 75 6d  |ents the maximum|
00088190  20 76 61 6c 75 65 20 77  68 69 63 68 20 63 61 6e  | value which can|
000881a0  20 62 65 20 73 74 6f 72  65 64 20 69 6e 20 61 20  | be stored in a |
000881b0  73 69 67 6e 65 64 20 63  68 61 72 2e 20 49 6e 20  |signed char. In |
000881c0  45 61 73 79 20 43 20 69  74 20 69 73 20 64 65 66  |Easy C it is def|
000881d0  69 6e 65 64 20 61 73 20  30 78 37 66 20 28 31 32  |ined as 0x7f (12|
000881e0  37 29 2e 00 44 41 54 41  a3 00 00 00 53 43 48 41  |7)..DATA....SCHA|
000881f0  52 5f 4d 49 4e 0a 54 68  69 73 20 6d 61 63 72 6f  |R_MIN.This macro|
00088200  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
00088210  6c 69 6d 69 74 73 2e 68  3e 20 61 6e 64 20 72 65  |limits.h> and re|
00088220  70 72 65 73 65 6e 74 73  20 74 68 65 20 6d 69 6e  |presents the min|
00088230  69 6d 75 6d 20 76 61 6c  75 65 20 74 68 61 74 20  |imum value that |
00088240  63 61 6e 20 62 65 20 73  74 6f 72 65 64 20 69 6e  |can be stored in|
00088250  20 61 20 73 69 67 6e 65  64 20 63 68 61 72 2e 20  | a signed char. |
00088260  49 6e 20 45 61 73 79 20  43 20 69 74 20 69 73 20  |In Easy C it is |
00088270  64 65 66 69 6e 65 64 20  61 73 20 30 78 38 30 20  |defined as 0x80 |
00088280  28 2d 31 32 38 29 2e 00  44 41 54 41 19 01 00 00  |(-128)..DATA....|
00088290  44 65 73 6b 4c 69 62 3a  53 63 72 65 65 6e 2e 68  |DeskLib:Screen.h|
000882a0  0a 56 65 72 73 69 6f 6e  3a 20 31 2e 30 30 20 28  |.Version: 1.00 (|
000882b0  32 33 20 4d 61 72 20 31  39 39 32 29 0a 23 6c 69  |23 Mar 1992).#li|
000882c0  6e 65 0a 54 68 69 73 20  68 65 61 64 65 72 20 64  |ne.This header d|
000882d0  65 63 6c 61 72 65 73 20  6f 6e 65 20 66 75 6e 63  |eclares one func|
000882e0  74 69 6f 6e 2c 20 77 68  69 63 68 20 72 65 61 64  |tion, which read|
000882f0  73 20 73 65 76 65 72 61  6c 20 6d 6f 64 65 20 76  |s several mode v|
00088300  61 72 69 61 62 6c 65 73  2e 0a 0a 46 75 6e 63 74  |ariables...Funct|
00088310  69 6f 6e 3a 20 3c 53 63  72 65 65 6e 5f 43 61 63  |ion: <Screen_Cac|
00088320  68 65 4d 6f 64 65 49 6e  66 6f 3e 0a 0a 56 61 72  |heModeInfo>..Var|
00088330  69 61 62 6c 65 73 3a 0a  0a 23 69 6e 64 65 6e 74  |iables:..#indent|
00088340  20 32 0a 23 54 61 62 6c  65 20 6c 69 6e 65 73 20  | 2.#Table lines |
00088350  32 0a 3c 73 63 72 65 65  6e 5f 6d 6f 64 65 3e 0a  |2.<screen_mode>.|
00088360  3c 73 63 72 65 65 6e 5f  73 69 7a 65 3e 0a 3c 73  |<screen_size>.<s|
00088370  63 72 65 65 6e 5f 65 69  67 3e 0a 3c 73 63 72 65  |creen_eig>.<scre|
00088380  65 6e 5f 64 65 6c 74 61  3e 0a 3c 73 63 72 65 65  |en_delta>.<scree|
00088390  6e 5f 62 70 70 3e 0a 0a  23 45 6e 64 54 61 62 6c  |n_bpp>..#EndTabl|
000883a0  65 00 00 00 44 49 52 24  cc 00 00 00 cc 00 00 00  |e...DIR$........|
000883b0  70 84 08 00 46 ff ff ff  bd 87 64 25 a7 00 00 00  |p...F.....d%....|
000883c0  13 00 00 00 00 00 00 00  62 70 70 00 18 85 08 00  |........bpp.....|
000883d0  46 ff ff ff ee 6d 64 25  9b 01 00 00 13 00 00 00  |F....md%........|
000883e0  00 00 00 00 43 61 63 68  65 4d 6f 64 65 49 6e 66  |....CacheModeInf|
000883f0  6f 00 00 00 b4 86 08 00  46 ff ff ff cd 80 64 25  |o.......F.....d%|
00088400  c3 00 00 00 13 00 00 00  00 00 00 00 64 65 6c 74  |............delt|
00088410  61 00 00 00 78 87 08 00  46 ff ff ff a9 7a 64 25  |a...x...F....zd%|
00088420  c4 00 00 00 13 00 00 00  00 00 00 00 65 69 67 00  |............eig.|
00088430  3c 88 08 00 46 ff ff ff  71 71 64 25 7e 00 00 00  |<...F...qqd%~...|
00088440  13 00 00 00 00 00 00 00  6d 6f 64 65 00 00 00 00  |........mode....|
00088450  bc 88 08 00 46 ff ff ff  25 74 64 25 97 00 00 00  |....F...%td%....|
00088460  13 00 00 00 00 00 00 00  73 69 7a 65 00 00 00 00  |........size....|
00088470  44 41 54 41 a7 00 00 00  73 63 72 65 65 6e 5f 62  |DATA....screen_b|
00088480  70 70 0a 54 68 69 73 20  76 61 72 69 61 62 6c 65  |pp.This variable|
00088490  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
000884a0  44 65 73 6b 4c 69 62 3a  53 63 72 65 65 6e 2e 68  |DeskLib:Screen.h|
000884b0  3d 3e 53 63 72 65 65 6e  3e 2e 20 49 74 20 69 73  |=>Screen>. It is|
000884c0  20 75 73 65 64 20 74 6f  20 68 6f 6c 64 20 74 68  | used to hold th|
000884d0  65 20 63 75 72 72 65 6e  74 20 6e 75 6d 62 65 72  |e current number|
000884e0  20 6f 66 20 62 69 74 73  20 70 65 72 20 70 69 78  | of bits per pix|
000884f0  65 6c 2e 0a 0a 7b 61 6c  69 67 6e 20 63 65 6e 74  |el...{align cent|
00088500  72 65 7d 43 6f 6c 6f 75  72 73 20 3d 20 31 20 5c  |re}Colours = 1 \|
00088510  3c 5c 3c 20 42 50 50 00  44 41 54 41 9b 01 00 00  |<\< BPP.DATA....|
00088520  53 63 72 65 65 6e 5f 43  61 63 68 65 4d 6f 64 65  |Screen_CacheMode|
00088530  49 6e 66 6f 0a 53 79 6e  74 61 78 3a 09 3c 42 4f  |Info.Syntax:.<BO|
00088540  4f 4c 3e 20 53 63 72 65  65 6e 5f 43 61 63 68 65  |OL> Screen_Cache|
00088550  4d 6f 64 65 49 6e 66 6f  20 28 76 6f 69 64 29 3b  |ModeInfo (void);|
00088560  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
00088570  62 3a 53 63 72 65 65 6e  2e 68 3d 3e 53 63 72 65  |b:Screen.h=>Scre|
00088580  65 6e 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 3c 54  |en>..Returns:.<T|
00088590  52 55 45 3e 20 28 61 6c  77 61 79 73 21 29 0a 0a  |RUE> (always!)..|
000885a0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 73 65  |This function se|
000885b0  74 73 20 75 70 20 74 68  65 20 76 61 72 69 61 62  |ts up the variab|
000885c0  6c 65 73 20 3c 73 63 72  65 65 6e 5f 6d 6f 64 65  |les <screen_mode|
000885d0  3e 2c 20 3c 73 63 72 65  65 6e 5f 65 69 67 3e 2c  |>, <screen_eig>,|
000885e0  20 3c 73 63 72 65 65 6e  5f 62 70 70 3e 2c 20 3c  | <screen_bpp>, <|
000885f0  73 63 72 65 65 6e 5f 73  69 7a 65 3e 20 61 6e 64  |screen_size> and|
00088600  20 3c 73 63 72 65 65 6e  5f 64 65 6c 74 61 3e 2e  | <screen_delta>.|
00088610  0a 0a 49 74 20 73 68 6f  75 6c 64 20 62 65 20 63  |..It should be c|
00088620  61 6c 6c 65 64 20 62 65  66 6f 72 65 20 79 6f 75  |alled before you|
00088630  20 74 72 79 20 74 6f 20  75 73 65 20 61 6e 79 20  | try to use any |
00088640  6f 66 20 74 68 65 73 65  20 76 61 72 69 61 62 6c  |of these variabl|
00088650  65 73 20 61 6e 64 20 65  76 65 72 79 20 74 69 6d  |es and every tim|
00088660  65 20 74 68 65 20 6d 6f  64 65 20 63 68 61 6e 67  |e the mode chang|
00088670  65 73 2e 20 54 68 65 20  66 75 6e 63 74 69 6f 6e  |es. The function|
00088680  20 3c 48 61 6e 64 6c 65  72 5f 4d 6f 64 65 43 68  | <Handler_ModeCh|
00088690  61 6e 67 65 3e 20 69 73  20 70 72 6f 76 69 64 65  |ange> is provide|
000886a0  64 20 66 6f 72 20 74 68  69 73 20 70 75 72 70 6f  |d for this purpo|
000886b0  73 65 2e 00 44 41 54 41  c3 00 00 00 73 63 72 65  |se..DATA....scre|
000886c0  65 6e 5f 64 65 6c 74 61  0a 54 68 69 73 20 76 61  |en_delta.This va|
000886d0  72 69 61 62 6c 65 20 69  73 20 64 65 66 69 6e 65  |riable is define|
000886e0  64 20 69 6e 20 3c 44 65  73 6b 4c 69 62 3a 53 63  |d in <DeskLib:Sc|
000886f0  72 65 65 6e 2e 68 3d 3e  53 63 72 65 65 6e 3e 2e  |reen.h=>Screen>.|
00088700  20 49 74 20 69 73 20 75  73 65 64 20 74 6f 20 68  | It is used to h|
00088710  6f 6c 64 20 74 68 65 20  63 75 72 72 65 6e 74 20  |old the current |
00088720  73 63 72 65 65 6e 20 64  65 6c 74 61 20 76 61 6c  |screen delta val|
00088730  75 65 73 20 28 61 73 20  61 20 3c 77 69 6d 70 5f  |ues (as a <wimp_|
00088740  70 6f 69 6e 74 3e 29 2e  0a 0a 7b 61 6c 69 67 6e  |point>)...{align|
00088750  20 63 65 6e 74 72 65 7d  4f 53 20 75 6e 69 74 73  | centre}OS units|
00088760  20 3d 20 50 69 78 65 6c  73 20 2a 20 44 65 6c 74  | = Pixels * Delt|
00088770  61 20 76 61 6c 75 65 00  44 41 54 41 c4 00 00 00  |a value.DATA....|
00088780  73 63 72 65 65 6e 5f 65  69 67 0a 54 68 69 73 20  |screen_eig.This |
00088790  76 61 72 69 61 62 6c 65  20 69 73 20 64 65 66 69  |variable is defi|
000887a0  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
000887b0  53 63 72 65 65 6e 2e 68  3d 3e 53 63 72 65 65 6e  |Screen.h=>Screen|
000887c0  3e 2e 20 49 74 20 69 73  20 75 73 65 64 20 74 6f  |>. It is used to|
000887d0  20 68 6f 6c 64 20 74 68  65 20 63 75 72 72 65 6e  | hold the curren|
000887e0  74 20 73 63 72 65 65 6e  20 65 69 67 65 6e 20 76  |t screen eigen v|
000887f0  61 6c 75 65 73 20 28 61  73 20 61 20 3c 77 69 6d  |alues (as a <wim|
00088800  70 5f 70 6f 69 6e 74 3e  29 2e 0a 0a 7b 61 6c 69  |p_point>)...{ali|
00088810  67 6e 20 63 65 6e 74 72  65 7d 4f 53 20 55 6e 69  |gn centre}OS Uni|
00088820  74 73 20 3d 20 50 69 78  65 6c 73 20 5c 3c 5c 3c  |ts = Pixels \<\<|
00088830  20 45 69 67 65 6e 20 76  61 6c 75 65 44 41 54 41  | Eigen valueDATA|
00088840  7e 00 00 00 73 63 72 65  65 6e 5f 6d 6f 64 65 0a  |~...screen_mode.|
00088850  54 68 69 73 20 76 61 72  69 61 62 6c 65 20 69 73  |This variable is|
00088860  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 44 65 73  | defined in <Des|
00088870  6b 4c 69 62 3a 53 63 72  65 65 6e 2e 68 3d 3e 53  |kLib:Screen.h=>S|
00088880  63 72 65 65 6e 3e 2e 20  49 74 20 69 73 20 75 73  |creen>. It is us|
00088890  65 64 20 74 6f 20 68 6f  6c 64 20 74 68 65 20 63  |ed to hold the c|
000888a0  75 72 72 65 6e 74 20 73  63 72 65 65 6e 20 6d 6f  |urrent screen mo|
000888b0  64 65 20 6e 75 6d 62 65  72 2e 00 00 44 41 54 41  |de number...DATA|
000888c0  97 00 00 00 73 63 72 65  65 6e 5f 73 69 7a 65 0a  |....screen_size.|
000888d0  54 68 69 73 20 76 61 72  69 61 62 6c 65 20 69 73  |This variable is|
000888e0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 44 65 73  | defined in <Des|
000888f0  6b 4c 69 62 3a 53 63 72  65 65 6e 2e 68 3d 3e 53  |kLib:Screen.h=>S|
00088900  63 72 65 65 6e 3e 2e 20  49 74 20 69 73 20 75 73  |creen>. It is us|
00088910  65 64 20 74 6f 20 68 6f  6c 64 20 74 68 65 20 63  |ed to hold the c|
00088920  75 72 72 65 6e 74 20 73  63 72 65 65 6e 20 73 69  |urrent screen si|
00088930  7a 65 20 28 61 73 20 61  20 3c 77 69 6d 70 5f 70  |ze (as a <wimp_p|
00088940  6f 69 6e 74 3e 29 20 69  6e 20 4f 53 20 75 6e 69  |oint>) in OS uni|
00088950  74 73 2e 00 44 49 52 24  48 00 00 00 48 00 00 00  |ts..DIR$H...H...|
00088960  9c 89 08 00 46 ff ff ff  79 6f 48 26 d3 00 00 00  |....F...yoH&....|
00088970  13 00 00 00 00 00 00 00  72 71 00 00 70 8a 08 00  |........rq..p...|
00088980  46 ff ff ff 59 a6 58 26  1f 01 00 00 13 00 00 00  |F...Y.X&........|
00088990  00 00 00 00 74 79 70 65  00 00 00 00 44 41 54 41  |....type....DATA|
000889a0  d3 00 00 00 73 63 72 6f  6c 6c 5f 72 71 0a 54 68  |....scroll_rq.Th|
000889b0  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
000889c0  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 57  |ed in <DeskLib:W|
000889d0  69 6d 70 2e 68 3d 3e 57  69 6d 70 3e 2e 20 49 74  |imp.h=>Wimp>. It|
000889e0  20 69 73 20 61 20 73 74  72 75 63 74 75 72 65 20  | is a structure |
000889f0  63 6f 6e 74 61 69 6e 69  6e 67 20 74 68 65 20 64  |containing the d|
00088a00  61 74 61 20 72 65 74 75  72 6e 65 64 20 62 79 20  |ata returned by |
00088a10  61 20 53 63 72 6f 6c 6c  5f 52 65 71 75 65 73 74  |a Scroll_Request|
00088a20  20 65 76 65 6e 74 2e 0a  0a 20 20 5c 7b 0a 20 20  | event...  \{.  |
00088a30  20 20 3c 77 69 6e 64 6f  77 5f 6f 70 65 6e 62 6c  |  <window_openbl|
00088a40  6f 63 6b 3e 09 6f 70 65  6e 62 6c 6f 63 6b 3b 0a  |ock>.openblock;.|
00088a50  20 20 20 20 3c 77 69 6d  70 5f 70 6f 69 6e 74 3e  |    <wimp_point>|
00088a60  09 64 69 72 65 63 74 69  6f 6e 3b 0a 20 20 7d 00  |.direction;.  }.|
00088a70  44 41 54 41 1f 01 00 00  73 63 72 6f 6c 6c 5f 74  |DATA....scroll_t|
00088a80  79 70 65 0a 54 68 69 73  20 74 79 70 65 20 69 73  |ype.This type is|
00088a90  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 54 69 6d  | defined in <Tim|
00088aa0  73 4c 69 62 3a 57 69 6e  64 6f 77 2e 68 3d 3e 57  |sLib:Window.h=>W|
00088ab0  69 6e 64 6f 77 5f 54 4c  3e 2e 20 49 74 20 69 73  |indow_TL>. It is|
00088ac0  20 61 6e 20 65 6e 75 6d  65 72 61 74 65 64 20 74  | an enumerated t|
00088ad0  79 70 65 20 63 6f 6e 74  61 69 6e 69 6e 67 20 74  |ype containing t|
00088ae0  68 65 20 74 68 72 65 65  20 77 61 79 73 20 61 20  |he three ways a |
00088af0  77 69 6e 64 6f 77 20 63  61 6e 20 73 63 72 6f 6c  |window can scrol|
00088b00  6c 2e 0a 0a 20 20 20 5c  7b 0a 20 20 20 20 20 73  |l...   \{.     s|
00088b10  63 72 6f 6c 6c 5f 58 09  3d 20 33 2c 0a 20 20 20  |croll_X.= 3,.   |
00088b20  20 20 73 63 72 6f 6c 6c  5f 59 09 3d 20 34 2c 0a  |  scroll_Y.= 4,.|
00088b30  20 20 20 20 20 73 63 72  6f 6c 6c 5f 32 44 09 3d  |     scroll_2D.=|
00088b40  20 31 32 0a 20 20 20 7d  0a 0a 54 68 65 20 6c 61  | 12.   }..The la|
00088b50  73 74 20 6f 6e 65 20 69  73 20 61 20 73 63 72 6f  |st one is a scro|
00088b60  6c 6c 20 69 6e 20 62 6f  74 68 20 64 69 72 65 63  |ll in both direc|
00088b70  74 69 6f 6e 73 20 61 74  20 6f 6e 63 65 20 28 52  |tions at once (R|
00088b80  49 53 43 20 4f 53 20 33  20 6f 6e 6c 79 29 2e 00  |ISC OS 3 only)..|
00088b90  44 41 54 41 3b 00 00 00  53 74 65 70 68 65 6e 20  |DATA;...Stephen |
00088ba0  43 72 6f 75 63 68 0a 49  6e 74 65 72 6e 65 74 20  |Crouch.Internet |
00088bb0  65 6d 61 69 6c 3a 20 73  63 39 33 40 65 63 73 2e  |email: sc93@ecs.|
00088bc0  73 6f 74 6f 6e 2e 61 63  2e 75 6b 00 44 49 52 24  |soton.ac.uk.DIR$|
00088bd0  60 00 00 00 60 00 00 00  2c 8c 08 00 46 ff ff ff  |`...`...,...F...|
00088be0  94 38 c2 22 dd 00 00 00  13 00 00 00 00 00 00 00  |.8."............|
00088bf0  43 55 52 00 0c 8d 08 00  46 ff ff ff 79 3b c2 22  |CUR.....F...y;."|
00088c00  dc 00 00 00 13 00 00 00  00 00 00 00 45 4e 44 00  |............END.|
00088c10  e8 8d 08 00 46 ff ff ff  05 35 c2 22 de 00 00 00  |....F....5."....|
00088c20  13 00 00 00 00 00 00 00  53 45 54 00 44 41 54 41  |........SET.DATA|
00088c30  dd 00 00 00 53 45 45 4b  5f 43 55 52 0a 23 50 61  |....SEEK_CUR.#Pa|
00088c40  72 65 6e 74 20 73 74 64  69 6f 0a 54 68 65 20 6d  |rent stdio.The m|
00088c50  61 63 72 6f 20 53 45 45  4b 5f 43 55 52 20 69 73  |acro SEEK_CUR is|
00088c60  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 73 74 64  | defined in <std|
00088c70  69 6f 2e 68 3d 3e 73 74  64 69 6f 3e 20 61 6e 64  |io.h=>stdio> and|
00088c80  20 69 73 20 61 20 76 61  6c 75 65 20 75 73 65 64  | is a value used|
00088c90  20 61 73 20 61 6e 20 61  72 67 75 6d 65 6e 74 20  | as an argument |
00088ca0  66 6f 72 20 74 68 65 20  66 75 6e 63 74 69 6f 6e  |for the function|
00088cb0  20 3c 66 73 65 65 6b 3e  2e 20 49 74 20 63 61 75  | <fseek>. It cau|
00088cc0  73 65 73 20 74 68 65 20  66 69 6c 65 20 70 6f 69  |ses the file poi|
00088cd0  6e 74 65 72 20 74 6f 20  62 65 20 72 65 70 6f 73  |nter to be repos|
00088ce0  69 74 69 6f 6e 65 64 20  72 65 6c 61 74 69 76 65  |itioned relative|
00088cf0  20 74 6f 20 74 68 65 20  63 75 72 72 65 6e 74 20  | to the current |
00088d00  70 6f 73 69 74 69 6f 6e  2e 00 00 00 44 41 54 41  |position....DATA|
00088d10  dc 00 00 00 53 45 45 4b  5f 45 4e 44 0a 23 50 61  |....SEEK_END.#Pa|
00088d20  72 65 6e 74 20 73 74 64  69 6f 0a 54 68 65 20 6d  |rent stdio.The m|
00088d30  61 63 72 6f 20 53 45 45  4b 5f 45 4e 44 20 69 73  |acro SEEK_END is|
00088d40  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 73 74 64  | defined in <std|
00088d50  69 6f 2e 68 3d 3e 73 74  64 69 6f 3e 20 61 6e 64  |io.h=>stdio> and|
00088d60  20 69 73 20 61 20 76 61  6c 75 65 20 75 73 65 64  | is a value used|
00088d70  20 61 73 20 61 6e 20 61  72 67 75 6d 65 6e 74 20  | as an argument |
00088d80  66 6f 72 20 74 68 65 20  66 75 6e 63 74 69 6f 6e  |for the function|
00088d90  20 3c 66 73 65 65 6b 3e  2e 20 49 74 20 63 61 75  | <fseek>. It cau|
00088da0  73 65 73 20 74 68 65 20  66 69 6c 65 20 70 6f 69  |ses the file poi|
00088db0  6e 74 65 72 20 74 6f 20  62 65 20 72 65 70 6f 73  |nter to be repos|
00088dc0  69 74 69 6f 6e 65 64 20  72 65 6c 61 74 69 76 65  |itioned relative|
00088dd0  20 74 6f 20 74 68 65 20  65 6e 64 20 6f 66 20 74  | to the end of t|
00088de0  68 65 20 66 69 6c 65 2e  44 41 54 41 de 00 00 00  |he file.DATA....|
00088df0  53 45 45 4b 5f 53 45 54  0a 23 50 61 72 65 6e 74  |SEEK_SET.#Parent|
00088e00  20 73 74 64 69 6f 0a 54  68 65 20 6d 61 63 72 6f  | stdio.The macro|
00088e10  20 53 45 45 4b 5f 53 45  54 20 69 73 20 64 65 66  | SEEK_SET is def|
00088e20  69 6e 65 64 20 69 6e 20  3c 73 74 64 69 6f 2e 68  |ined in <stdio.h|
00088e30  3d 3e 73 74 64 69 6f 3e  20 61 6e 64 20 69 73 20  |=>stdio> and is |
00088e40  61 20 76 61 6c 75 65 20  75 73 65 64 20 61 73 20  |a value used as |
00088e50  61 6e 20 61 72 67 75 6d  65 6e 74 20 66 6f 72 20  |an argument for |
00088e60  74 68 65 20 66 75 6e 63  74 69 6f 6e 20 3c 66 73  |the function <fs|
00088e70  65 65 6b 3e 2e 20 49 74  20 63 61 75 73 65 73 20  |eek>. It causes |
00088e80  74 68 65 20 66 69 6c 65  20 70 6f 69 6e 74 65 72  |the file pointer|
00088e90  20 74 6f 20 62 65 20 72  65 70 6f 73 69 74 69 6f  | to be repositio|
00088ea0  6e 65 64 20 72 65 6c 61  74 69 76 65 20 74 6f 20  |ned relative to |
00088eb0  74 68 65 20 73 74 61 72  74 20 6f 66 20 74 68 65  |the start of the|
00088ec0  20 66 69 6c 65 2e 00 00  44 41 54 41 36 02 00 00  | file...DATA6...|
00088ed0  44 65 73 6b 4c 69 62 3a  53 65 72 69 61 6c 2e 68  |DeskLib:Serial.h|
00088ee0  0a 56 65 72 73 69 6f 6e  3a 20 31 2e 31 30 20 28  |.Version: 1.10 (|
00088ef0  31 32 20 44 65 63 20 31  39 39 33 29 0a 23 6c 69  |12 Dec 1993).#li|
00088f00  6e 65 0a 54 68 69 73 20  68 65 61 64 65 72 20 64  |ne.This header d|
00088f10  65 63 6c 61 72 65 73 20  66 75 6e 63 74 69 6f 6e  |eclares function|
00088f20  73 20 66 6f 72 20 73 65  72 69 61 6c 20 49 2f 4f  |s for serial I/O|
00088f30  2e 0a 0a 46 75 6e 63 74  69 6f 6e 73 3a 0a 0a 23  |...Functions:..#|
00088f40  54 61 62 6c 65 20 37 20  32 30 0a 3c 53 65 72 69  |Table 7 20.<Seri|
00088f50  61 6c 5f 41 63 74 69 76  61 74 65 3e 0a 3c 53 65  |al_Activate>.<Se|
00088f60  72 69 61 6c 5f 44 65 61  63 74 69 76 61 74 65 3e  |rial_Deactivate>|
00088f70  0a 3c 53 65 72 69 61 6c  5f 47 65 74 53 74 61 74  |.<Serial_GetStat|
00088f80  75 73 3e 0a 3c 53 65 72  69 61 6c 5f 53 65 74 53  |us>.<Serial_SetS|
00088f90  74 61 74 75 73 3e 0a 3c  53 65 72 69 61 6c 5f 47  |tatus>.<Serial_G|
00088fa0  65 74 46 6f 72 6d 61 74  3e 0a 3c 53 65 72 69 61  |etFormat>.<Seria|
00088fb0  6c 5f 53 65 74 46 6f 72  6d 61 74 3e 0a 3c 53 65  |l_SetFormat>.<Se|
00088fc0  72 69 61 6c 5f 47 65 74  54 78 52 61 74 65 3e 0a  |rial_GetTxRate>.|
00088fd0  3c 53 65 72 69 61 6c 5f  47 65 74 52 78 52 61 74  |<Serial_GetRxRat|
00088fe0  65 3e 0a 3c 53 65 72 69  61 6c 5f 53 65 74 54 78  |e>.<Serial_SetTx|
00088ff0  52 61 74 65 3e 0a 3c 53  65 72 69 61 6c 5f 53 65  |Rate>.<Serial_Se|
00089000  74 52 78 52 61 74 65 3e  0a 3c 53 65 72 69 61 6c  |tRxRate>.<Serial|
00089010  5f 47 65 74 42 79 74 65  3e 0a 3c 53 65 72 69 61  |_GetByte>.<Seria|
00089020  6c 5f 50 75 74 42 79 74  65 3e 0a 3c 53 65 72 69  |l_PutByte>.<Seri|
00089030  61 6c 5f 53 65 6e 64 42  72 65 61 6b 3e 0a 3c 53  |al_SendBreak>.<S|
00089040  65 72 69 61 6c 5f 4e 6f  6e 5a 65 72 6f 50 6f 6c  |erial_NonZeroPol|
00089050  6c 57 6f 72 64 4f 6e 52  65 63 65 69 76 65 3e 0a  |lWordOnReceive>.|
00089060  23 45 6e 64 54 61 62 6c  65 0a 0a 4d 61 63 72 6f  |#EndTable..Macro|
00089070  73 3a 0a 0a 23 69 6e 64  65 6e 74 20 31 32 0a 23  |s:..#indent 12.#|
00089080  54 61 62 6c 65 20 31 20  32 30 0a 3c 53 74 61 74  |Table 1 20.<Stat|
00089090  75 73 20 62 69 74 73 3d  3e 53 65 72 69 61 6c 5f  |us bits=>Serial_|
000890a0  73 74 61 74 5f 3e 0a 3c  44 61 74 61 20 66 6f 72  |stat_>.<Data for|
000890b0  6d 61 74 20 62 69 74 73  3d 3e 53 65 72 69 61 6c  |mat bits=>Serial|
000890c0  5f 64 61 74 61 5f 3e 0a  23 45 6e 64 54 61 62 6c  |_data_>.#EndTabl|
000890d0  65 0a 23 69 6e 64 65 6e  74 0a 0a 54 79 70 65 73  |e.#indent..Types|
000890e0  3a 0a 0a 7b 61 6c 69 67  6e 20 63 65 6e 74 72 65  |:..{align centre|
000890f0  7d 3c 73 65 72 69 61 6c  5f 72 61 74 65 3e 00 00  |}<serial_rate>..|
00089100  44 49 52 24 6c 02 00 00  6c 02 00 00 6c 93 08 00  |DIR$l...l...l...|
00089110  46 ff ff ff b6 a9 64 25  f6 00 00 00 13 00 00 00  |F.....d%........|
00089120  00 00 00 00 41 63 74 69  76 61 74 65 00 00 00 00  |....Activate....|
00089130  64 94 08 00 46 fd ff ff  2e 19 65 25 0c 02 00 00  |d...F.....e%....|
00089140  13 00 00 00 00 00 00 00  64 61 74 61 5f 00 00 00  |........data_...|
00089150  70 96 08 00 46 ff ff ff  10 af 64 25 fc 00 00 00  |p...F.....d%....|
00089160  13 00 00 00 00 00 00 00  44 65 61 63 74 69 76 61  |........Deactiva|
00089170  74 65 00 00 6c 97 08 00  46 ff ff ff c8 df 64 25  |te..l...F.....d%|
00089180  de 00 00 00 13 00 00 00  00 00 00 00 47 65 74 42  |............GetB|
00089190  79 74 65 00 4c 98 08 00  46 ff ff ff 07 c8 64 25  |yte.L...F.....d%|
000891a0  d0 00 00 00 13 00 00 00  00 00 00 00 47 65 74 46  |............GetF|
000891b0  6f 72 6d 61 74 00 00 00  1c 99 08 00 46 ff ff ff  |ormat.......F...|
000891c0  be d2 64 25 d3 00 00 00  13 00 00 00 00 00 00 00  |..d%............|
000891d0  47 65 74 52 78 52 61 74  65 00 00 00 f0 99 08 00  |GetRxRate.......|
000891e0  46 ff ff ff 2a b4 64 25  d8 00 00 00 13 00 00 00  |F...*.d%........|
000891f0  00 00 00 00 47 65 74 53  74 61 74 75 73 00 00 00  |....GetStatus...|
00089200  c8 9a 08 00 46 ff ff ff  2d cf 64 25 d4 00 00 00  |....F...-.d%....|
00089210  13 00 00 00 00 00 00 00  47 65 74 54 78 52 61 74  |........GetTxRat|
00089220  65 00 00 00 9c 9b 08 00  46 ff ff ff c6 e3 64 25  |e.......F.....d%|
00089230  cd 00 00 00 13 00 00 00  00 00 00 00 50 75 74 42  |............PutB|
00089240  79 74 65 00 6c 9c 08 00  46 ff ff ff 98 29 65 25  |yte.l...F....)e%|
00089250  e2 01 00 00 13 00 00 00  00 00 00 00 72 61 74 65  |............rate|
00089260  00 00 00 00 50 9e 08 00  46 ff ff ff b3 e7 64 25  |....P...F.....d%|
00089270  d4 00 00 00 13 00 00 00  00 00 00 00 53 65 6e 64  |............Send|
00089280  42 72 65 61 6b 00 00 00  24 9f 08 00 46 ff ff ff  |Break...$...F...|
00089290  78 cb 64 25 ea 00 00 00  13 00 00 00 00 00 00 00  |x.d%............|
000892a0  53 65 74 46 6f 72 6d 61  74 00 00 00 10 a0 08 00  |SetFormat.......|
000892b0  46 ff ff ff c7 db 64 25  dc 00 00 00 13 00 00 00  |F.....d%........|
000892c0  00 00 00 00 53 65 74 52  78 52 61 74 65 00 00 00  |....SetRxRate...|
000892d0  ec a0 08 00 46 ff ff ff  25 c2 64 25 17 01 00 00  |....F...%.d%....|
000892e0  13 00 00 00 00 00 00 00  53 65 74 53 74 61 74 75  |........SetStatu|
000892f0  73 00 00 00 04 a2 08 00  46 ff ff ff bb d6 64 25  |s.......F.....d%|
00089300  dd 00 00 00 13 00 00 00  00 00 00 00 53 65 74 54  |............SetT|
00089310  78 52 61 74 65 00 00 00  e4 a2 08 00 46 fd ff ff  |xRate.......F...|
00089320  94 0b 65 25 b6 02 00 00  13 00 00 00 00 00 00 00  |..e%............|
00089330  73 74 61 74 5f 00 00 00  9c a5 08 00 46 ff ff ff  |stat_.......F...|
00089340  ab f8 64 25 12 01 00 00  13 00 00 00 00 00 00 00  |..d%............|
00089350  4e 6f 6e 5a 65 72 6f 50  6f 6c 6c 57 6f 72 64 4f  |NonZeroPollWordO|
00089360  6e 52 65 63 65 69 76 65  00 00 00 00 44 41 54 41  |nReceive....DATA|
00089370  f6 00 00 00 53 65 72 69  61 6c 5f 41 63 74 69 76  |....Serial_Activ|
00089380  61 74 65 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |ate.Syntax:.<os_|
00089390  65 72 72 6f 72 3e 20 2a  53 65 72 69 61 6c 5f 41  |error> *Serial_A|
000893a0  63 74 69 76 61 74 65 20  28 76 6f 69 64 29 3b 0a  |ctivate (void);.|
000893b0  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
000893c0  3a 53 65 72 69 61 6c 2e  68 3d 3e 53 65 72 69 61  |:Serial.h=>Seria|
000893d0  6c 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |l>..Returns:.Poi|
000893e0  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000893f0  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
00089400  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00089410  20 61 63 74 69 76 61 74  65 73 20 74 68 65 20 73  | activates the s|
00089420  65 72 69 61 6c 20 64 72  69 76 65 72 73 2e 20 49  |erial drivers. I|
00089430  74 20 69 73 20 65 71 75  69 76 61 6c 65 6e 74 20  |t is equivalent |
00089440  74 6f 20 53 57 49 20 3c  4f 53 5f 42 79 74 65 3d  |to SWI <OS_Byte=|
00089450  3e 53 57 49 3a 4f 53 5f  42 79 74 65 3e 20 32 2c  |>SWI:OS_Byte> 2,|
00089460  32 2e 00 00 44 41 54 41  0c 02 00 00 44 61 74 61  |2...DATA....Data|
00089470  20 66 6f 72 6d 61 74 20  62 69 74 73 0a 54 68 65  | format bits.The|
00089480  20 66 6f 6c 6c 6f 77 69  6e 67 20 6d 61 63 72 6f  | following macro|
00089490  73 20 61 72 65 20 64 65  66 69 6e 65 64 20 69 6e  |s are defined in|
000894a0  20 3c 44 65 73 6b 4c 69  62 3a 53 65 72 69 61 6c  | <DeskLib:Serial|
000894b0  2e 68 3d 3e 53 65 72 69  61 6c 3e 20 66 6f 72 20  |.h=>Serial> for |
000894c0  75 73 65 20 77 68 65 6e  20 72 65 61 64 69 6e 67  |use when reading|
000894d0  2f 77 72 69 74 69 6e 67  20 74 68 65 20 64 61 74  |/writing the dat|
000894e0  61 20 66 6f 72 6d 61 74  2e 20 54 68 65 20 6d 61  |a format. The ma|
000894f0  63 72 6f 73 20 66 6f 72  20 74 68 65 20 72 65 71  |cros for the req|
00089500  75 69 72 65 64 20 62 69  74 73 20 73 68 6f 75 6c  |uired bits shoul|
00089510  64 20 62 65 20 61 64 64  65 64 20 74 6f 67 65 74  |d be added toget|
00089520  68 65 72 2e 0a 0a 73 65  72 69 61 6c 5f 38 42 49  |her...serial_8BI|
00089530  54 57 4f 52 44 09 30 78  30 30 30 30 30 30 30 30  |TWORD.0x00000000|
00089540  0a 73 65 72 69 61 6c 5f  37 42 49 54 57 4f 52 44  |.serial_7BITWORD|
00089550  09 30 78 30 30 30 30 30  30 30 31 0a 73 65 72 69  |.0x00000001.seri|
00089560  61 6c 5f 36 42 49 54 57  4f 52 44 09 30 78 30 30  |al_6BITWORD.0x00|
00089570  30 30 30 30 30 32 0a 73  65 72 69 61 6c 5f 35 42  |000002.serial_5B|
00089580  49 54 57 4f 52 44 09 30  78 30 30 30 30 30 30 30  |ITWORD.0x0000000|
00089590  33 0a 73 65 72 69 61 6c  5f 31 53 54 4f 50 42 49  |3.serial_1STOPBI|
000895a0  54 09 30 78 30 30 30 30  30 30 30 30 0a 73 65 72  |T.0x00000000.ser|
000895b0  69 61 6c 5f 32 53 54 4f  50 42 49 54 53 09 30 78  |ial_2STOPBITS.0x|
000895c0  30 30 30 30 30 30 30 34  0a 73 65 72 69 61 6c 5f  |00000004.serial_|
000895d0  4e 4f 50 41 52 49 54 59  09 30 78 30 30 30 30 30  |NOPARITY.0x00000|
000895e0  30 30 30 0a 73 65 72 69  61 6c 5f 50 41 52 49 54  |000.serial_PARIT|
000895f0  59 09 30 78 30 30 30 30  30 30 30 38 0a 73 65 72  |Y.0x00000008.ser|
00089600  69 61 6c 5f 4f 44 44 50  41 52 49 54 59 09 30 78  |ial_ODDPARITY.0x|
00089610  30 30 30 30 30 30 30 30  0a 73 65 72 69 61 6c 5f  |00000000.serial_|
00089620  45 56 45 4e 50 41 52 49  54 59 09 30 78 30 30 30  |EVENPARITY.0x000|
00089630  30 30 30 31 30 0a 73 65  72 69 61 6c 5f 4d 41 52  |00010.serial_MAR|
00089640  4b 50 41 52 49 54 59 09  30 78 30 30 30 30 30 30  |KPARITY.0x000000|
00089650  32 30 0a 73 65 72 69 61  6c 5f 53 50 41 43 45 50  |20.serial_SPACEP|
00089660  41 52 49 54 59 09 30 78  30 30 30 30 30 30 33 30  |ARITY.0x00000030|
00089670  44 41 54 41 fc 00 00 00  53 65 72 69 61 6c 5f 44  |DATA....Serial_D|
00089680  65 61 63 74 69 76 61 74  65 0a 53 79 6e 74 61 78  |eactivate.Syntax|
00089690  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 53 65  |:.<os_error> *Se|
000896a0  72 69 61 6c 5f 44 65 61  63 74 69 76 61 74 65 20  |rial_Deactivate |
000896b0  28 76 6f 69 64 29 3b 0a  48 65 61 64 65 72 3a 09  |(void);.Header:.|
000896c0  3c 44 65 73 6b 4c 69 62  3a 53 65 72 69 61 6c 2e  |<DeskLib:Serial.|
000896d0  68 3d 3e 53 65 72 69 61  6c 3e 0a 0a 52 65 74 75  |h=>Serial>..Retu|
000896e0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000896f0  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00089700  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00089710  66 75 6e 63 74 69 6f 6e  20 64 65 61 63 74 69 76  |function deactiv|
00089720  61 74 65 73 20 74 68 65  20 73 65 72 69 61 6c 20  |ates the serial |
00089730  64 72 69 76 65 72 73 2e  20 49 74 20 69 73 20 65  |drivers. It is e|
00089740  71 75 69 76 61 6c 65 6e  74 20 74 6f 20 53 57 49  |quivalent to SWI|
00089750  20 3c 4f 53 5f 42 79 74  65 3d 3e 53 57 49 3a 4f  | <OS_Byte=>SWI:O|
00089760  53 5f 42 79 74 65 3e 20  32 2c 30 2e 44 41 54 41  |S_Byte> 2,0.DATA|
00089770  de 00 00 00 53 65 72 69  61 6c 5f 47 65 74 42 79  |....Serial_GetBy|
00089780  74 65 0a 53 79 6e 74 61  78 3a 09 69 6e 74 20 53  |te.Syntax:.int S|
00089790  65 72 69 61 6c 5f 47 65  74 42 79 74 65 20 28 76  |erial_GetByte (v|
000897a0  6f 69 64 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |oid);.Header:.<D|
000897b0  65 73 6b 4c 69 62 3a 53  65 72 69 61 6c 2e 68 3d  |eskLib:Serial.h=|
000897c0  3e 53 65 72 69 61 6c 3e  0a 0a 52 65 74 75 72 6e  |>Serial>..Return|
000897d0  73 3a 09 42 79 74 65 20  72 65 61 64 2c 20 6f 72  |s:.Byte read, or|
000897e0  20 2d 31 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  | -1...This funct|
000897f0  69 6f 6e 20 72 65 61 64  73 20 61 20 73 69 6e 67  |ion reads a sing|
00089800  6c 65 20 62 79 74 65 20  66 72 6f 6d 20 74 68 65  |le byte from the|
00089810  20 73 65 72 69 61 6c 20  69 6e 70 75 74 20 62 75  | serial input bu|
00089820  66 66 65 72 2e 20 49 66  20 6e 6f 6e 65 20 61 72  |ffer. If none ar|
00089830  65 20 61 76 61 69 6c 61  62 6c 65 20 69 74 20 72  |e available it r|
00089840  65 74 75 72 6e 73 20 2d  31 2e 00 00 44 41 54 41  |eturns -1...DATA|
00089850  d0 00 00 00 53 65 72 69  61 6c 5f 47 65 74 46 6f  |....Serial_GetFo|
00089860  72 6d 61 74 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |rmat.Syntax:.int|
00089870  20 53 65 72 69 61 6c 5f  47 65 74 46 6f 72 6d 61  | Serial_GetForma|
00089880  74 20 28 76 6f 69 64 29  3b 0a 48 65 61 64 65 72  |t (void);.Header|
00089890  3a 09 3c 44 65 73 6b 4c  69 62 3a 53 65 72 69 61  |:.<DeskLib:Seria|
000898a0  6c 2e 68 3d 3e 53 65 72  69 61 6c 3e 0a 0a 52 65  |l.h=>Serial>..Re|
000898b0  74 75 72 6e 73 3a 09 43  75 72 72 65 6e 74 20 64  |turns:.Current d|
000898c0  61 74 61 20 66 6f 72 6d  61 74 2e 0a 0a 54 68 69  |ata format...Thi|
000898d0  73 20 66 75 6e 63 74 69  6f 6e 20 67 65 74 73 20  |s function gets |
000898e0  74 68 65 20 63 75 72 72  65 6e 74 20 3c 64 61 74  |the current <dat|
000898f0  61 20 66 6f 72 6d 61 74  3d 3e 53 65 72 69 61 6c  |a format=>Serial|
00089900  5f 64 61 74 61 5f 3e 20  75 73 65 64 20 66 6f 72  |_data_> used for|
00089910  20 73 65 72 69 61 6c 20  49 2f 4f 2e 44 41 54 41  | serial I/O.DATA|
00089920  d3 00 00 00 53 65 72 69  61 6c 5f 47 65 74 52 78  |....Serial_GetRx|
00089930  52 61 74 65 0a 53 79 6e  74 61 78 3a 09 3c 73 65  |Rate.Syntax:.<se|
00089940  72 69 61 6c 5f 72 61 74  65 3e 20 53 65 72 69 61  |rial_rate> Seria|
00089950  6c 5f 47 65 74 52 78 52  61 74 65 20 28 76 6f 69  |l_GetRxRate (voi|
00089960  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |d);.Header:.<Des|
00089970  6b 4c 69 62 3a 53 65 72  69 61 6c 2e 68 3d 3e 53  |kLib:Serial.h=>S|
00089980  65 72 69 61 6c 3e 0a 0a  52 65 74 75 72 6e 73 3a  |erial>..Returns:|
00089990  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
000899a0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
000899b0  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
000899c0  74 69 6f 6e 20 72 65 74  75 72 6e 73 20 74 68 65  |tion returns the|
000899d0  20 63 75 72 72 65 6e 74  20 73 70 65 65 64 20 6f  | current speed o|
000899e0  66 20 73 65 72 69 61 6c  20 69 6e 70 75 74 2e 00  |f serial input..|
000899f0  44 41 54 41 d8 00 00 00  53 65 72 69 61 6c 5f 47  |DATA....Serial_G|
00089a00  65 74 53 74 61 74 75 73  0a 53 79 6e 74 61 78 3a  |etStatus.Syntax:|
00089a10  09 69 6e 74 20 53 65 72  69 61 6c 5f 47 65 74 53  |.int Serial_GetS|
00089a20  74 61 74 75 73 20 28 76  6f 69 64 29 3b 0a 48 65  |tatus (void);.He|
00089a30  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 53  |ader:.<DeskLib:S|
00089a40  65 72 69 61 6c 2e 68 3d  3e 53 65 72 69 61 6c 3e  |erial.h=>Serial>|
00089a50  0a 0a 52 65 74 75 72 6e  73 3a 09 43 75 72 72 65  |..Returns:.Curre|
00089a60  6e 74 20 73 74 61 74 75  73 2e 0a 0a 54 68 69 73  |nt status...This|
00089a70  20 66 75 6e 63 74 69 6f  6e 20 67 65 74 73 20 74  | function gets t|
00089a80  68 65 20 63 75 72 72 65  6e 74 20 73 74 61 74 75  |he current statu|
00089a90  73 20 6f 66 20 74 68 65  20 73 65 72 69 61 6c 20  |s of the serial |
00089aa0  70 6f 72 74 2e 20 49 74  20 69 73 20 65 71 75 69  |port. It is equi|
00089ab0  76 61 6c 65 6e 74 20 74  6f 20 4f 53 5f 53 65 72  |valent to OS_Ser|
00089ac0  69 61 6c 4f 70 20 30 2e  44 41 54 41 d4 00 00 00  |ialOp 0.DATA....|
00089ad0  53 65 72 69 61 6c 5f 47  65 74 54 78 52 61 74 65  |Serial_GetTxRate|
00089ae0  0a 53 79 6e 74 61 78 3a  09 3c 73 65 72 69 61 6c  |.Syntax:.<serial|
00089af0  5f 72 61 74 65 3e 20 53  65 72 69 61 6c 5f 47 65  |_rate> Serial_Ge|
00089b00  74 54 78 52 61 74 65 20  28 76 6f 69 64 29 3b 0a  |tTxRate (void);.|
00089b10  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
00089b20  3a 53 65 72 69 61 6c 2e  68 3d 3e 53 65 72 69 61  |:Serial.h=>Seria|
00089b30  6c 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |l>..Returns:.Poi|
00089b40  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
00089b50  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
00089b60  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00089b70  20 72 65 74 75 72 6e 73  20 74 68 65 20 63 75 72  | returns the cur|
00089b80  72 65 6e 74 20 73 70 65  65 64 20 6f 66 20 73 65  |rent speed of se|
00089b90  72 69 61 6c 20 6f 75 74  70 75 74 2e 44 41 54 41  |rial output.DATA|
00089ba0  cd 00 00 00 53 65 72 69  61 6c 5f 50 75 74 42 79  |....Serial_PutBy|
00089bb0  74 65 0a 53 79 6e 74 61  78 3a 09 3c 42 4f 4f 4c  |te.Syntax:.<BOOL|
00089bc0  3e 20 53 65 72 69 61 6c  5f 50 75 74 42 79 74 65  |> Serial_PutByte|
00089bd0  20 28 69 6e 74 20 63 29  3b 0a 48 65 61 64 65 72  | (int c);.Header|
00089be0  3a 09 3c 44 65 73 6b 4c  69 62 3a 53 65 72 69 61  |:.<DeskLib:Seria|
00089bf0  6c 2e 68 3d 3e 53 65 72  69 61 6c 3e 0a 0a 52 65  |l.h=>Serial>..Re|
00089c00  74 75 72 6e 73 3a 09 3c  54 52 55 45 3e 20 69 66  |turns:.<TRUE> if|
00089c10  20 75 6e 61 62 6c 65 20  74 6f 20 73 65 6e 64 20  | unable to send |
00089c20  62 79 74 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |byte...This func|
00089c30  74 69 6f 6e 20 69 6e 73  65 72 74 73 20 61 20 73  |tion inserts a s|
00089c40  69 6e 67 6c 65 20 62 79  74 65 20 69 6e 74 6f 20  |ingle byte into |
00089c50  74 68 65 20 73 65 72 69  61 6c 20 6f 75 74 70 75  |the serial outpu|
00089c60  74 20 62 75 66 66 65 72  2e 00 00 00 44 41 54 41  |t buffer....DATA|
00089c70  e2 01 00 00 73 65 72 69  61 6c 5f 72 61 74 65 0a  |....serial_rate.|
00089c80  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
00089c90  69 6e 65 64 20 69 6e 20  3c 44 65 73 6b 4c 69 62  |ined in <DeskLib|
00089ca0  3a 53 65 72 69 61 6c 2e  68 3d 3e 53 65 72 69 61  |:Serial.h=>Seria|
00089cb0  6c 3e 2e 20 49 74 20 69  73 20 61 6e 20 65 6e 75  |l>. It is an enu|
00089cc0  6d 65 72 61 74 65 64 20  74 79 70 65 20 63 6f 6e  |merated type con|
00089cd0  74 61 69 6e 69 6e 67 20  74 68 65 20 76 61 6c 75  |taining the valu|
00089ce0  65 73 20 75 73 65 64 20  77 68 65 6e 20 73 65 74  |es used when set|
00089cf0  74 69 6e 67 2f 72 65 61  64 69 6e 67 20 62 61 75  |ting/reading bau|
00089d00  64 20 72 61 74 65 73 3a  0a 0a 20 20 5c 7b 0a 20  |d rates:..  \{. |
00089d10  20 20 20 73 65 72 69 61  6c 5f 39 36 30 30 42 41  |   serial_9600BA|
00089d20  55 44 20 3d 20 30 2c 0a  20 20 20 20 73 65 72 69  |UD = 0,.    seri|
00089d30  61 6c 5f 37 35 42 41 55  44 2c 0a 20 20 20 20 73  |al_75BAUD,.    s|
00089d40  65 72 69 61 6c 5f 31 35  30 42 41 55 44 2c 0a 20  |erial_150BAUD,. |
00089d50  20 20 20 73 65 72 69 61  6c 5f 33 30 30 42 41 55  |   serial_300BAU|
00089d60  44 2c 0a 20 20 20 20 73  65 72 69 61 6c 5f 31 32  |D,.    serial_12|
00089d70  30 30 42 41 55 44 2c 0a  20 20 20 20 73 65 72 69  |00BAUD,.    seri|
00089d80  61 6c 5f 32 34 30 30 42  41 55 44 2c 0a 20 20 20  |al_2400BAUD,.   |
00089d90  20 73 65 72 69 61 6c 5f  34 38 30 30 42 41 55 44  | serial_4800BAUD|
00089da0  2c 0a 20 20 20 20 73 65  72 69 61 6c 5f 31 39 32  |,.    serial_192|
00089db0  30 30 42 41 55 44 20 3d  20 38 2c 0a 20 20 20 20  |00BAUD = 8,.    |
00089dc0  73 65 72 69 61 6c 5f 35  30 42 41 55 44 2c 0a 20  |serial_50BAUD,. |
00089dd0  20 20 20 73 65 72 69 61  6c 5f 31 31 30 42 41 55  |   serial_110BAU|
00089de0  44 2c 0a 20 20 20 20 73  65 72 69 61 6c 5f 31 33  |D,.    serial_13|
00089df0  34 5f 35 42 41 55 44 2c  0a 20 20 20 20 73 65 72  |4_5BAUD,.    ser|
00089e00  69 61 6c 5f 36 30 30 42  41 55 44 2c 0a 20 20 20  |ial_600BAUD,.   |
00089e10  20 73 65 72 69 61 6c 5f  31 38 30 30 42 41 55 44  | serial_1800BAUD|
00089e20  2c 0a 20 20 20 20 73 65  72 69 61 6c 5f 33 36 30  |,.    serial_360|
00089e30  30 42 41 55 44 2c 0a 20  20 20 20 73 65 72 69 61  |0BAUD,.    seria|
00089e40  6c 5f 37 32 30 30 42 41  55 44 0a 20 20 7d 00 00  |l_7200BAUD.  }..|
00089e50  44 41 54 41 d4 00 00 00  53 65 72 69 61 6c 5f 53  |DATA....Serial_S|
00089e60  65 6e 64 42 72 65 61 6b  0a 53 79 6e 74 61 78 3a  |endBreak.Syntax:|
00089e70  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 53 65 72  |.<os_error> *Ser|
00089e80  69 61 6c 5f 53 65 6e 64  42 72 65 61 6b 20 28 69  |ial_SendBreak (i|
00089e90  6e 74 20 6c 65 6e 29 3b  0a 48 65 61 64 65 72 3a  |nt len);.Header:|
00089ea0  09 3c 44 65 73 6b 4c 69  62 3a 53 65 72 69 61 6c  |.<DeskLib:Serial|
00089eb0  2e 68 3d 3e 53 65 72 69  61 6c 3e 0a 0a 52 65 74  |.h=>Serial>..Ret|
00089ec0  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
00089ed0  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
00089ee0  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
00089ef0  20 66 75 6e 63 74 69 6f  6e 20 74 72 61 6e 73 6d  | function transm|
00089f00  69 74 73 20 61 20 62 72  65 61 6b 20 6f 66 20 74  |its a break of t|
00089f10  68 65 20 73 70 65 63 69  66 69 65 64 20 6c 65 6e  |he specified len|
00089f20  67 74 68 2e 44 41 54 41  ea 00 00 00 53 65 72 69  |gth.DATA....Seri|
00089f30  61 6c 5f 53 65 74 46 6f  72 6d 61 74 0a 53 79 6e  |al_SetFormat.Syn|
00089f40  74 61 78 3a 09 6f 73 5f  65 72 72 6f 72 20 2a 53  |tax:.os_error *S|
00089f50  65 72 69 61 6c 5f 53 65  74 46 6f 72 6d 61 74 20  |erial_SetFormat |
00089f60  28 69 6e 74 20 66 6f 72  6d 29 3b 0a 48 65 61 64  |(int form);.Head|
00089f70  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 53 65 72  |er:.<DeskLib:Ser|
00089f80  69 61 6c 2e 68 3d 3e 53  65 72 69 61 6c 3e 0a 0a  |ial.h=>Serial>..|
00089f90  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00089fa0  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00089fb0  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00089fc0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 65 74  |his function set|
00089fd0  73 20 74 68 65 20 63 75  72 72 65 6e 74 20 3c 64  |s the current <d|
00089fe0  61 74 61 20 66 6f 72 6d  61 74 3d 3e 53 65 72 69  |ata format=>Seri|
00089ff0  61 6c 5f 64 61 74 61 5f  3e 20 75 73 65 64 20 66  |al_data_> used f|
0008a000  6f 72 20 73 65 72 69 61  6c 20 49 2f 4f 2e 00 00  |or serial I/O...|
0008a010  44 41 54 41 dc 00 00 00  53 65 72 69 61 6c 5f 53  |DATA....Serial_S|
0008a020  65 74 52 78 52 61 74 65  0a 53 79 6e 74 61 78 3a  |etRxRate.Syntax:|
0008a030  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 53 65 72  |.<os_error> *Ser|
0008a040  69 61 6c 5f 53 65 74 52  78 52 61 74 65 20 28 3c  |ial_SetRxRate (<|
0008a050  73 65 72 69 61 6c 5f 72  61 74 65 3e 20 72 61 74  |serial_rate> rat|
0008a060  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |e);.Header:.<Des|
0008a070  6b 4c 69 62 3a 53 65 72  69 61 6c 2e 68 3d 3e 53  |kLib:Serial.h=>S|
0008a080  65 72 69 61 6c 3e 0a 0a  52 65 74 75 72 6e 73 3a  |erial>..Returns:|
0008a090  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
0008a0a0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
0008a0b0  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
0008a0c0  74 69 6f 6e 20 73 65 74  73 20 74 68 65 20 63 75  |tion sets the cu|
0008a0d0  72 72 65 6e 74 20 73 70  65 65 64 20 6f 66 20 73  |rrent speed of s|
0008a0e0  65 72 69 61 6c 20 69 6e  70 75 74 2e 44 41 54 41  |erial input.DATA|
0008a0f0  17 01 00 00 53 65 72 69  61 6c 5f 53 65 74 53 74  |....Serial_SetSt|
0008a100  61 74 75 73 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |atus.Syntax:.<os|
0008a110  5f 65 72 72 6f 72 3e 20  2a 53 65 72 69 61 6c 5f  |_error> *Serial_|
0008a120  53 65 74 53 74 61 74 75  73 20 28 69 6e 74 20 65  |SetStatus (int e|
0008a130  6f 72 2c 20 69 6e 74 20  61 6e 64 29 3b 0a 48 65  |or, int and);.He|
0008a140  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 53  |ader:.<DeskLib:S|
0008a150  65 72 69 61 6c 2e 68 3d  3e 53 65 72 69 61 6c 3e  |erial.h=>Serial>|
0008a160  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
0008a170  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
0008a180  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
0008a190  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 73  |.This function s|
0008a1a0  65 74 73 20 74 68 65 20  63 75 72 72 65 6e 74 20  |ets the current |
0008a1b0  73 74 61 74 75 73 20 6f  66 20 74 68 65 20 73 65  |status of the se|
0008a1c0  72 69 61 6c 20 70 6f 72  74 2e 0a 0a 7b 61 6c 69  |rial port...{ali|
0008a1d0  67 6e 20 63 65 6e 74 72  65 7d 4e 45 57 5f 53 54  |gn centre}NEW_ST|
0008a1e0  41 54 55 53 20 3d 20 28  4f 4c 44 5f 53 54 41 54  |ATUS = (OLD_STAT|
0008a1f0  55 53 20 41 4e 44 20 61  6e 64 29 20 45 4f 52 20  |US AND and) EOR |
0008a200  65 6f 72 00 44 41 54 41  dd 00 00 00 53 65 72 69  |eor.DATA....Seri|
0008a210  61 6c 5f 53 65 74 54 78  52 61 74 65 0a 53 79 6e  |al_SetTxRate.Syn|
0008a220  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
0008a230  2a 53 65 72 69 61 6c 5f  53 65 74 54 78 52 61 74  |*Serial_SetTxRat|
0008a240  65 20 28 3c 73 65 72 69  61 6c 5f 72 61 74 65 3e  |e (<serial_rate>|
0008a250  20 72 61 74 65 29 3b 0a  48 65 61 64 65 72 3a 09  | rate);.Header:.|
0008a260  3c 44 65 73 6b 4c 69 62  3a 53 65 72 69 61 6c 2e  |<DeskLib:Serial.|
0008a270  68 3d 3e 53 65 72 69 61  6c 3e 0a 0a 52 65 74 75  |h=>Serial>..Retu|
0008a280  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
0008a290  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
0008a2a0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
0008a2b0  66 75 6e 63 74 69 6f 6e  20 73 65 74 73 20 74 68  |function sets th|
0008a2c0  65 20 63 75 72 72 65 6e  74 20 73 70 65 65 64 20  |e current speed |
0008a2d0  6f 66 20 73 65 72 69 61  6c 20 6f 75 74 70 75 74  |of serial output|
0008a2e0  2e 00 00 00 44 41 54 41  b6 02 00 00 53 74 61 74  |....DATA....Stat|
0008a2f0  75 73 20 62 69 74 73 0a  54 68 65 20 66 6f 6c 6c  |us bits.The foll|
0008a300  6f 77 69 6e 67 20 6d 61  63 72 6f 73 20 61 72 65  |owing macros are|
0008a310  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 44 65 73  | defined in <Des|
0008a320  6b 4c 69 62 3a 53 65 72  69 61 6c 2e 68 3d 3e 53  |kLib:Serial.h=>S|
0008a330  65 72 69 61 6c 3e 20 66  6f 72 20 75 73 65 20 77  |erial> for use w|
0008a340  68 65 6e 20 72 65 61 64  69 6e 67 2f 77 72 69 74  |hen reading/writ|
0008a350  69 6e 67 20 74 68 65 20  73 74 61 74 75 73 2e 20  |ing the status. |
0008a360  54 68 65 20 6d 61 63 72  6f 73 20 66 6f 72 20 74  |The macros for t|
0008a370  68 65 20 72 65 71 75 69  72 65 64 20 62 69 74 73  |he required bits|
0008a380  20 73 68 6f 75 6c 64 20  62 65 20 61 64 64 65 64  | should be added|
0008a390  20 74 6f 67 65 74 68 65  72 2e 0a 0a 73 65 72 69  | together...seri|
0008a3a0  61 6c 5f 55 53 45 58 4f  4e 58 4f 46 46 09 30 78  |al_USEXONXOFF.0x|
0008a3b0  30 30 30 30 30 30 30 31  20 20 20 0a 73 65 72 69  |00000001   .seri|
0008a3c0  61 6c 5f 49 47 4e 4f 52  45 44 43 44 42 49 54 09  |al_IGNOREDCDBIT.|
0008a3d0  30 78 30 30 30 30 30 30  30 32 0a 73 65 72 69 61  |0x00000002.seria|
0008a3e0  6c 5f 49 47 4e 4f 52 45  44 53 52 42 49 54 09 30  |l_IGNOREDSRBIT.0|
0008a3f0  78 30 30 30 30 30 30 30  34 0a 73 65 72 69 61 6c  |x00000004.serial|
0008a400  5f 44 54 52 4f 46 46 09  30 78 30 30 30 30 30 30  |_DTROFF.0x000000|
0008a410  30 38 0a 73 65 72 69 61  6c 5f 49 47 4e 4f 52 45  |08.serial_IGNORE|
0008a420  43 54 53 42 49 54 09 30  78 30 30 30 30 30 30 31  |CTSBIT.0x0000001|
0008a430  30 0a 73 65 72 69 61 6c  5f 44 4f 4e 54 55 53 45  |0.serial_DONTUSE|
0008a440  52 54 53 46 4c 4f 57 43  4f 4e 54 52 4f 4c 09 30  |RTSFLOWCONTROL.0|
0008a450  78 30 30 30 30 30 30 32  30 0a 73 65 72 69 61 6c  |x00000020.serial|
0008a460  5f 53 55 50 50 52 45 53  53 49 4e 50 55 54 09 30  |_SUPPRESSINPUT.0|
0008a470  78 30 30 30 30 30 30 34  30 0a 73 65 72 69 61 6c  |x00000040.serial|
0008a480  5f 52 54 53 48 49 47 48  09 30 78 30 30 30 30 30  |_RTSHIGH.0x00000|
0008a490  30 38 30 0a 73 65 72 69  61 6c 5f 58 4f 46 46 52  |080.serial_XOFFR|
0008a4a0  45 43 45 49 56 45 44 09  30 78 30 30 30 31 30 30  |ECEIVED.0x000100|
0008a4b0  30 30 0a 73 65 72 69 61  6c 5f 58 4f 46 46 53 45  |00.serial_XOFFSE|
0008a4c0  4e 54 09 30 78 30 30 30  32 30 30 30 30 0a 73 65  |NT.0x00020000.se|
0008a4d0  72 69 61 6c 5f 44 43 44  48 49 47 48 09 30 78 30  |rial_DCDHIGH.0x0|
0008a4e0  30 30 34 30 30 30 30 0a  73 65 72 69 61 6c 5f 4e  |0040000.serial_N|
0008a4f0  4f 43 41 52 52 49 45 52  09 30 78 30 30 30 34 30  |OCARRIER.0x00040|
0008a500  30 30 30 0a 73 65 72 69  61 6c 5f 44 53 52 48 49  |000.serial_DSRHI|
0008a510  47 48 09 30 78 30 30 30  38 30 30 30 30 0a 73 65  |GH.0x00080000.se|
0008a520  72 69 61 6c 5f 52 49 48  49 47 48 09 30 78 30 30  |rial_RIHIGH.0x00|
0008a530  31 30 30 30 30 30 0a 73  65 72 69 61 6c 5f 43 54  |100000.serial_CT|
0008a540  53 48 49 47 48 09 30 78  30 30 32 30 30 30 30 30  |SHIGH.0x00200000|
0008a550  0a 73 65 72 69 61 6c 5f  58 4f 46 46 53 45 4e 54  |.serial_XOFFSENT|
0008a560  4d 41 4e 55 41 4c 4c 59  09 30 78 30 30 34 30 30  |MANUALLY.0x00400|
0008a570  30 30 30 0a 73 65 72 69  61 6c 5f 53 50 41 43 45  |000.serial_SPACE|
0008a580  49 4e 52 45 43 45 49 56  45 42 55 46 46 45 52 09  |INRECEIVEBUFFER.|
0008a590  30 78 30 30 38 30 30 30  30 30 00 00 44 41 54 41  |0x00800000..DATA|
0008a5a0  12 01 00 00 53 65 72 69  61 6c 5f 4e 6f 6e 5a 65  |....Serial_NonZe|
0008a5b0  72 6f 50 6f 6c 6c 57 6f  72 64 4f 6e 52 65 63 65  |roPollWordOnRece|
0008a5c0  69 76 65 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |ive.Syntax:.void|
0008a5d0  20 53 65 72 69 61 6c 5f  4e 6f 6e 5a 65 72 6f 50  | Serial_NonZeroP|
0008a5e0  6f 6c 6c 57 6f 72 64 4f  6e 52 65 63 65 69 76 65  |ollWordOnReceive|
0008a5f0  20 28 69 6e 74 20 76 61  6c 75 65 2c 20 76 6f 69  | (int value, voi|
0008a600  64 20 2a 70 6f 6c 6c 77  6f 72 64 29 3b 0a 48 65  |d *pollword);.He|
0008a610  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 53  |ader:.<DeskLib:S|
0008a620  65 72 69 61 6c 2e 68 3d  3e 53 65 72 69 61 6c 3e  |erial.h=>Serial>|
0008a630  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0008a640  61 6c 74 65 72 73 20 74  68 65 20 77 6f 72 64 20  |alters the word |
0008a650  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 2f 70  |pointed to by /p|
0008a660  6f 6c 6c 77 6f 72 64 2f  20 74 6f 20 2f 76 61 6c  |ollword/ to /val|
0008a670  75 65 2f 20 77 68 65 6e  65 76 65 72 20 61 6e 20  |ue/ whenever an |
0008a680  69 6e 73 65 72 74 69 6f  6e 20 69 6e 74 6f 20 74  |insertion into t|
0008a690  68 65 20 73 65 72 69 61  6c 20 69 6e 70 75 74 20  |he serial input |
0008a6a0  62 75 66 66 65 72 20 6f  63 63 75 72 73 2e 00 00  |buffer occurs...|
0008a6b0  44 41 54 41 f7 01 00 00  73 65 74 62 75 66 0a 53  |DATA....setbuf.S|
0008a6c0  79 6e 74 61 78 3a 09 76  6f 69 64 20 73 65 74 62  |yntax:.void setb|
0008a6d0  75 66 20 28 3c 46 49 4c  45 3e 20 2a 73 74 72 65  |uf (<FILE> *stre|
0008a6e0  61 6d 2c 20 63 68 61 72  20 2a 62 75 66 29 3b 0a  |am, char *buf);.|
0008a6f0  48 65 61 64 65 72 3a 09  3c 73 74 64 69 6f 2e 68  |Header:.<stdio.h|
0008a700  3d 3e 73 74 64 69 6f 3e  0a 0a 54 68 69 73 20 66  |=>stdio>..This f|
0008a710  75 6e 63 74 69 6f 6e 20  63 61 75 73 65 73 20 74  |unction causes t|
0008a720  68 65 20 66 69 6c 65 20  70 6f 69 6e 74 65 64 20  |he file pointed |
0008a730  74 6f 20 62 79 20 2f 73  74 72 65 61 6d 2f 20 74  |to by /stream/ t|
0008a740  6f 20 62 65 20 66 75 6c  6c 79 20 62 75 66 66 65  |o be fully buffe|
0008a750  72 65 64 20 69 6e 20 74  68 65 20 62 75 66 66 65  |red in the buffe|
0008a760  72 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 79 20  |r pointed to by |
0008a770  2f 62 75 66 2f 2c 20 77  68 69 63 68 20 69 73 20  |/buf/, which is |
0008a780  61 20 63 68 61 72 61 63  74 65 72 20 61 72 72 61  |a character arra|
0008a790  79 20 6f 66 20 73 69 7a  65 20 3c 42 55 46 53 49  |y of size <BUFSI|
0008a7a0  5a 3e 2e 20 49 66 20 2f  62 75 66 2f 20 69 73 20  |Z>. If /buf/ is |
0008a7b0  61 20 6e 75 6c 6c 20 70  6f 69 6e 74 65 72 20 74  |a null pointer t|
0008a7c0  68 65 6e 20 74 68 65 20  66 69 6c 65 20 69 73 20  |hen the file is |
0008a7d0  75 6e 62 75 66 66 65 72  65 64 2e 20 54 68 69 73  |unbuffered. This|
0008a7e0  20 66 75 6e 63 74 69 6f  6e 20 69 73 20 65 71 75  | function is equ|
0008a7f0  69 76 61 6c 65 6e 74 20  74 6f 3a 0a 7b 61 6c 69  |ivalent to:.{ali|
0008a800  67 6e 20 63 65 6e 74 72  65 7d 3c 73 65 74 76 62  |gn centre}<setvb|
0008a810  75 66 3e 20 28 46 49 4c  45 20 2a 73 74 72 65 61  |uf> (FILE *strea|
0008a820  6d 2c 20 63 68 61 72 20  2a 62 75 66 2c 20 3c 5f  |m, char *buf, <_|
0008a830  49 4f 46 42 46 3e 2c 20  42 55 46 53 49 5a 29 3b  |IOFBF>, BUFSIZ);|
0008a840  7b 61 6c 69 67 6e 7d 0a  6f 72 3a 0a 7b 61 6c 69  |{align}.or:.{ali|
0008a850  67 6e 20 63 65 6e 74 72  65 7d 73 65 74 76 62 75  |gn centre}setvbu|
0008a860  66 20 28 46 49 4c 45 20  2a 73 74 72 65 61 6d 2c  |f (FILE *stream,|
0008a870  20 4e 55 4c 4c 2c 20 3c  5f 49 4f 4e 42 46 3e 2c  | NULL, <_IONBF>,|
0008a880  20 30 29 3b 7b 61 6c 69  67 6e 7d 0a 69 66 20 2f  | 0);{align}.if /|
0008a890  62 75 66 2f 20 69 73 20  61 20 6e 75 6c 6c 20 70  |buf/ is a null p|
0008a8a0  6f 69 6e 74 65 72 2e 00  44 41 54 41 af 00 00 00  |ointer..DATA....|
0008a8b0  73 65 74 6a 6d 70 0a 53  79 6e 74 61 78 3a 09 69  |setjmp.Syntax:.i|
0008a8c0  6e 74 20 73 65 74 6a 6d  70 20 28 3c 6a 6d 70 5f  |nt setjmp (<jmp_|
0008a8d0  62 75 66 3e 20 65 6e 76  29 3b 0a 48 65 61 64 65  |buf> env);.Heade|
0008a8e0  72 3a 09 3c 73 65 74 6a  6d 70 2e 68 3d 3e 73 65  |r:.<setjmp.h=>se|
0008a8f0  74 6a 6d 70 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |tjmp_h>..Returns|
0008a900  3a 09 5a 65 72 6f 20 77  68 65 6e 20 63 61 6c 6c  |:.Zero when call|
0008a910  65 64 20 64 69 72 65 63  74 6c 79 2e 0a 0a 54 68  |ed directly...Th|
0008a920  69 73 20 66 75 6e 63 74  69 6f 6e 20 6d 61 72 6b  |is function mark|
0008a930  73 20 61 20 70 6f 73 69  74 69 6f 6e 20 74 6f 20  |s a position to |
0008a940  6a 75 6d 70 20 74 6f 20  77 69 74 68 20 3c 6c 6f  |jump to with <lo|
0008a950  6e 67 6a 6d 70 3e 2e 00  44 49 52 24 28 00 00 00  |ngjmp>..DIR$(...|
0008a960  28 00 00 00 80 a9 08 00  46 ff ff ff f1 ee bb 22  |(.......F......"|
0008a970  03 01 00 00 13 00 00 00  00 00 00 00 68 00 00 00  |............h...|
0008a980  44 41 54 41 03 01 00 00  73 65 74 6a 6d 70 2e 68  |DATA....setjmp.h|
0008a990  0a 54 68 65 20 5c 3c 73  65 74 6a 6d 70 2e 68 3e  |.The \<setjmp.h>|
0008a9a0  20 68 65 61 64 65 72 20  64 65 63 6c 61 72 65 73  | header declares|
0008a9b0  20 74 77 6f 20 66 75 6e  63 74 69 6f 6e 73 20 61  | two functions a|
0008a9c0  6e 64 20 6f 6e 65 20 74  79 70 65 20 75 73 65 64  |nd one type used|
0008a9d0  20 66 6f 72 20 6d 61 6b  69 6e 67 20 6e 6f 6e 2d  | for making non-|
0008a9e0  6c 6f 63 61 6c 20 6a 75  6d 70 73 20 28 69 65 20  |local jumps (ie |
0008a9f0  6a 75 6d 70 73 20 6f 75  74 20 6f 66 20 74 68 65  |jumps out of the|
0008aa00  20 63 75 72 72 65 6e 74  20 73 74 61 74 65 6d 65  | current stateme|
0008aa10  6e 74 20 62 6c 6f 63 6b  29 2e 0a 0a 46 75 6e 63  |nt block)...Func|
0008aa20  74 69 6f 6e 73 3a 0a 0a  23 49 6e 64 65 6e 74 20  |tions:..#Indent |
0008aa30  31 31 0a 23 54 61 62 6c  65 20 31 20 31 35 0a 3c  |11.#Table 1 15.<|
0008aa40  73 65 74 6a 6d 70 3e 0a  3c 6c 6f 6e 67 6a 6d 70  |setjmp>.<longjmp|
0008aa50  3e 0a 23 45 6e 64 54 61  62 6c 65 0a 0a 23 49 6e  |>.#EndTable..#In|
0008aa60  64 65 6e 74 20 30 0a 54  79 70 65 73 3a 0a 0a 23  |dent 0.Types:..#|
0008aa70  49 6e 64 65 6e 74 20 31  31 0a 3c 6a 6d 70 5f 62  |Indent 11.<jmp_b|
0008aa80  75 66 3e 00 44 41 54 41  9a 01 00 00 73 65 74 6c  |uf>.DATA....setl|
0008aa90  6f 63 61 6c 65 0a 53 79  6e 74 61 78 3a 09 63 68  |ocale.Syntax:.ch|
0008aaa0  61 72 20 2a 73 65 74 6c  6f 63 61 6c 65 20 28 69  |ar *setlocale (i|
0008aab0  6e 74 20 63 61 74 2c 20  63 68 61 72 20 2a 6c 6f  |nt cat, char *lo|
0008aac0  63 29 3b 0a 48 65 61 64  65 72 3a 09 3c 6c 6f 63  |c);.Header:.<loc|
0008aad0  61 6c 65 2e 68 3d 3e 6c  6f 63 61 6c 65 3e 0a 0a  |ale.h=>locale>..|
0008aae0  52 65 74 75 72 6e 73 3a  09 4f 6c 64 20 73 65 74  |Returns:.Old set|
0008aaf0  74 69 6e 67 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |ting...This func|
0008ab00  74 69 6f 6e 20 73 65 74  73 20 61 20 70 61 72 74  |tion sets a part|
0008ab10  69 63 75 6c 61 72 20 63  61 74 65 67 6f 72 79 20  |icular category |
0008ab20  27 63 61 74 27 20 6f 66  20 74 68 65 20 6c 6f 63  |'cat' of the loc|
0008ab30  61 6c 65 20 74 6f 20 74  68 65 20 73 74 72 69 6e  |ale to the strin|
0008ab40  67 20 70 6f 69 6e 74 65  72 20 74 6f 20 62 79 20  |g pointer to by |
0008ab50  27 6c 6f 63 27 2e 20 46  6f 72 20 69 6e 73 74 61  |'loc'. For insta|
0008ab60  6e 63 65 2c 20 74 6f 20  73 65 74 20 74 68 65 20  |nce, to set the |
0008ab70  6d 6f 6e 65 74 61 72 79  20 69 6e 66 6f 72 6d 61  |monetary informa|
0008ab80  74 69 6f 6e 20 74 6f 20  74 68 61 74 20 73 75 69  |tion to that sui|
0008ab90  74 61 62 6c 65 20 66 6f  72 20 74 68 65 20 55 4b  |table for the UK|
0008aba0  2c 20 6f 6e 65 20 77 6f  75 6c 64 20 75 73 65 3a  |, one would use:|
0008abb0  0a 0a 23 61 6c 69 67 6e  20 63 65 6e 74 72 65 0a  |..#align centre.|
0008abc0  73 65 74 6c 6f 63 61 6c  65 28 3c 4c 43 5f 4d 4f  |setlocale(<LC_MO|
0008abd0  4e 45 54 41 52 59 3e 2c  22 75 6b 22 29 3b 0a 23  |NETARY>,"uk");.#|
0008abe0  61 6c 69 67 6e 0a 0a 54  68 65 20 6f 6c 64 20 73  |align..The old s|
0008abf0  65 74 74 69 6e 67 20 63  61 6e 20 62 65 20 72 65  |etting can be re|
0008ac00  61 64 20 62 79 20 73 65  74 74 69 6e 67 20 27 6c  |ad by setting 'l|
0008ac10  6f 63 27 20 74 6f 20 3c  4e 55 4c 4c 3e 2e 00 00  |oc' to <NULL>...|
0008ac20  44 41 54 41 b4 01 00 00  73 65 74 76 62 75 66 0a  |DATA....setvbuf.|
0008ac30  53 79 6e 74 61 78 3a 09  69 6e 74 20 73 65 74 76  |Syntax:.int setv|
0008ac40  62 75 66 20 28 3c 46 49  4c 45 3e 20 2a 73 74 72  |buf (<FILE> *str|
0008ac50  65 61 6d 2c 20 63 68 61  72 20 2a 62 75 66 2c 20  |eam, char *buf, |
0008ac60  69 6e 74 20 6d 6f 64 65  2c 20 3c 73 69 7a 65 5f  |int mode, <size_|
0008ac70  74 3e 20 73 69 7a 65 29  3b 0a 48 65 61 64 65 72  |t> size);.Header|
0008ac80  3a 09 3c 73 74 64 69 6f  2e 68 3d 3e 73 74 64 69  |:.<stdio.h=>stdi|
0008ac90  6f 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 5a 65 72  |o>..Returns:.Zer|
0008aca0  6f 20 69 66 20 73 75 63  63 65 73 73 66 75 6c 2e  |o if successful.|
0008acb0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0008acc0  73 65 74 73 20 74 68 65  20 62 75 66 66 65 72 69  |sets the bufferi|
0008acd0  6e 67 20 74 79 70 65 20  66 6f 72 20 61 20 70 61  |ng type for a pa|
0008ace0  72 74 69 63 75 6c 61 72  20 73 74 72 65 61 6d 2e  |rticular stream.|
0008acf0  20 54 68 65 20 6d 6f 64  65 20 67 69 76 65 73 20  | The mode gives |
0008ad00  74 68 65 20 62 75 66 66  65 72 69 6e 67 20 74 79  |the buffering ty|
0008ad10  70 65 2c 20 6f 6e 65 20  6f 66 20 74 68 65 20 6d  |pe, one of the m|
0008ad20  61 63 72 6f 73 20 3c 5f  49 4f 46 42 46 3e 2c 20  |acros <_IOFBF>, |
0008ad30  3c 5f 49 4f 4c 42 46 3e  2c 20 6f 72 20 3c 5f 49  |<_IOLBF>, or <_I|
0008ad40  4f 4e 42 46 3e 2e 20 49  66 20 2f 62 75 66 2f 20  |ONBF>. If /buf/ |
0008ad50  69 73 20 61 20 6e 75 6c  6c 20 70 6f 69 6e 74 65  |is a null pointe|
0008ad60  72 20 74 68 65 6e 20 73  65 74 76 62 75 66 20 61  |r then setvbuf a|
0008ad70  6c 6c 6f 63 61 74 65 73  20 69 74 73 20 6f 77 6e  |llocates its own|
0008ad80  20 62 75 66 66 65 72 2c  20 65 6c 73 65 20 2f 62  | buffer, else /b|
0008ad90  75 66 2f 20 70 6f 69 6e  74 73 20 74 6f 20 61 20  |uf/ points to a |
0008ada0  63 68 61 72 61 63 74 65  72 20 61 72 72 61 79 20  |character array |
0008adb0  61 6e 64 20 2f 73 69 7a  65 2f 20 69 6e 64 69 63  |and /size/ indic|
0008adc0  61 74 65 73 20 74 68 65  20 73 69 7a 65 20 6f 66  |ates the size of|
0008add0  20 69 74 2e 44 49 52 24  2c 00 00 00 2c 00 00 00  | it.DIR$,...,...|
0008ade0  00 ae 08 00 46 fd ff ff  a7 a7 c3 22 51 02 00 00  |....F......"Q...|
0008adf0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0008ae00  44 41 54 41 51 02 00 00  73 63 61 6e 66 28 29 20  |DATAQ...scanf() |
0008ae10  46 6f 72 6d 61 74 20 53  74 72 69 6e 67 0a 54 68  |Format String.Th|
0008ae20  65 20 66 6f 72 6d 61 74  20 73 74 72 69 6e 67 20  |e format string |
0008ae30  69 73 20 63 6f 6d 70 6f  73 65 64 20 6f 66 20 61  |is composed of a|
0008ae40  20 73 65 71 75 65 6e 63  65 20 6f 66 20 63 68 61  | sequence of cha|
0008ae50  72 61 63 74 65 72 73 2e  20 41 6c 6c 20 63 68 61  |racters. All cha|
0008ae60  72 61 63 74 65 72 73 20  65 78 63 65 70 74 20 27  |racters except '|
0008ae70  25 27 20 61 72 65 20 65  78 70 65 63 74 65 64 20  |%' are expected |
0008ae80  74 6f 20 62 65 20 6d 61  74 63 68 65 64 20 64 69  |to be matched di|
0008ae90  72 65 63 74 6c 79 20 69  6e 20 74 68 65 20 69 6e  |rectly in the in|
0008aea0  70 75 74 2e 20 27 25 27  20 6d 61 72 6b 73 20 74  |put. '%' marks t|
0008aeb0  68 65 20 62 65 67 69 6e  6e 69 6e 67 20 6f 66 20  |he beginning of |
0008aec0  61 20 63 6f 6e 76 65 72  73 69 6f 6e 20 73 70 65  |a conversion spe|
0008aed0  63 69 66 69 63 61 74 69  6f 6e 2e 20 49 66 20 61  |cification. If a|
0008aee0  20 6c 69 74 65 72 61 6c  20 70 65 72 63 65 6e 74  | literal percent|
0008aef0  20 69 73 20 72 65 71 75  69 72 65 64 2c 20 74 68  | is required, th|
0008af00  65 6e 20 22 25 25 22 20  73 68 6f 75 6c 64 20 62  |en "%%" should b|
0008af10  65 20 75 73 65 64 2e 0a  0a 41 20 63 6f 6e 76 65  |e used...A conve|
0008af20  72 73 69 6f 6e 20 73 70  65 63 69 66 69 63 61 74  |rsion specificat|
0008af30  69 6f 6e 20 72 65 73 75  6c 74 73 20 69 6e 20 6f  |ion results in o|
0008af40  6e 65 20 61 72 67 75 6d  65 6e 74 20 66 72 6f 6d  |ne argument from|
0008af50  20 74 68 65 20 61 72 67  75 6d 65 6e 74 20 6c 69  | the argument li|
0008af60  73 74 20 68 61 76 69 6e  67 20 69 74 73 20 63 6f  |st having its co|
0008af70  6e 74 65 6e 74 73 20 61  6c 74 65 72 65 64 20 61  |ntents altered a|
0008af80  63 63 6f 72 64 69 6e 67  20 74 6f 20 74 68 65 20  |ccording to the |
0008af90  69 6e 70 75 74 20 72 65  63 65 69 76 65 64 2e 20  |input received. |
0008afa0  54 68 65 20 73 74 72 75  63 74 75 72 65 20 6f 66  |The structure of|
0008afb0  20 61 20 63 6f 6e 76 65  72 73 69 6f 6e 20 73 70  | a conversion sp|
0008afc0  65 63 69 66 69 63 61 74  69 6f 6e 20 69 73 20 73  |ecification is s|
0008afd0  68 6f 77 6e 20 62 65 6c  6f 77 3a 0a 0a 7b 77 72  |hown below:..{wr|
0008afe0  61 70 20 6f 66 66 3b 20  61 6c 69 67 6e 20 63 65  |ap off; align ce|
0008aff0  6e 74 72 65 7d 25 5b 3c  2a 3d 3e 73 66 5f 73 74  |ntre}%[<*=>sf_st|
0008b000  61 72 5f 3e 5d 5b 3c 66  69 65 6c 64 20 77 69 64  |ar_>][<field wid|
0008b010  74 68 3d 3e 73 66 5f 66  77 5f 3e 5d 5b 3c 6d 6f  |th=>sf_fw_>][<mo|
0008b020  64 69 66 69 65 72 3d 3e  73 66 5f 6d 6f 64 5f 3e  |difier=>sf_mod_>|
0008b030  5d 5c 3c 3c 63 6f 6e 76  65 72 73 69 6f 6e 20 63  |]\<<conversion c|
0008b040  68 61 72 3d 3e 73 66 5f  63 6f 6e 76 5f 3e 5c 3e  |har=>sf_conv_>\>|
0008b050  20 00 00 00 44 49 52 24  88 00 00 00 88 00 00 00  | ...DIR$........|
0008b060  dc b0 08 00 46 fd ff ff  2a f2 c3 22 97 06 00 00  |....F...*.."....|
0008b070  13 00 00 00 00 00 00 00  63 6f 6e 76 5f 00 00 00  |........conv_...|
0008b080  74 b7 08 00 46 fd ff ff  dd b2 c3 22 a1 00 00 00  |t...F......"....|
0008b090  13 00 00 00 00 00 00 00  66 77 5f 00 18 b8 08 00  |........fw_.....|
0008b0a0  46 fd ff ff 62 c3 c3 22  a1 01 00 00 13 00 00 00  |F...b.."........|
0008b0b0  00 00 00 00 6d 6f 64 5f  00 00 00 00 bc b9 08 00  |....mod_........|
0008b0c0  46 fd ff ff fa ad c3 22  bb 00 00 00 13 00 00 00  |F......"........|
0008b0d0  00 00 00 00 73 74 61 72  5f 00 00 00 44 41 54 41  |....star_...DATA|
0008b0e0  97 06 00 00 46 6f 72 6d  61 74 20 53 74 72 69 6e  |....Format Strin|
0008b0f0  67 20 43 6f 6e 76 65 72  73 69 6f 6e 20 43 68 61  |g Conversion Cha|
0008b100  72 61 63 74 65 72 0a 4f  6e 65 20 6f 66 20 74 68  |racter.One of th|
0008b110  65 20 66 6f 6c 6c 6f 77  69 6e 67 3a 0a 0a 64 09  |e following:..d.|
0008b120  41 20 64 65 63 69 6d 61  6c 20 69 6e 74 65 67 65  |A decimal intege|
0008b130  72 20 72 65 61 64 20 66  72 6f 6d 20 74 68 65 20  |r read from the |
0008b140  69 6e 70 75 74 20 73 74  72 65 61 6d 20 69 73 20  |input stream is |
0008b150  70 6c 61 63 65 64 20 69  6e 20 74 68 65 20 69 6e  |placed in the in|
0008b160  74 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 79 20  |t pointed to by |
0008b170  74 68 65 20 61 72 67 75  6d 65 6e 74 2e 0a 0a 69  |the argument...i|
0008b180  09 41 6e 20 69 6e 74 65  67 65 72 20 28 64 65 63  |.An integer (dec|
0008b190  69 6d 61 6c 2c 20 6f 63  74 61 6c 2c 20 6f 72 20  |imal, octal, or |
0008b1a0  68 65 78 29 20 72 65 61  64 20 66 72 6f 6d 20 74  |hex) read from t|
0008b1b0  68 65 20 69 6e 70 75 74  20 73 74 72 65 61 6d 20  |he input stream |
0008b1c0  69 73 20 70 6c 61 63 65  64 20 69 6e 20 74 68 65  |is placed in the|
0008b1d0  20 69 6e 74 20 70 6f 69  6e 74 65 64 20 74 6f 20  | int pointed to |
0008b1e0  62 79 20 74 68 65 20 61  72 67 75 6d 65 6e 74 2e  |by the argument.|
0008b1f0  0a 0a 6f 09 41 6e 20 6f  63 74 61 6c 20 69 6e 74  |..o.An octal int|
0008b200  65 67 65 72 20 72 65 61  64 20 66 72 6f 6d 20 74  |eger read from t|
0008b210  68 65 20 69 6e 70 75 74  20 73 74 72 65 61 6d 20  |he input stream |
0008b220  69 73 20 70 6c 61 63 65  64 20 69 6e 20 74 68 65  |is placed in the|
0008b230  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 70 6f  | unsigned int po|
0008b240  69 6e 74 65 64 20 74 6f  20 62 79 20 74 68 65 20  |inted to by the |
0008b250  61 72 67 75 6d 65 6e 74  2e 0a 0a 75 09 41 20 64  |argument...u.A d|
0008b260  65 63 69 6d 61 6c 20 69  6e 74 65 67 65 72 20 72  |ecimal integer r|
0008b270  65 61 64 20 66 72 6f 6d  20 74 68 65 20 69 6e 70  |ead from the inp|
0008b280  75 74 20 73 74 72 65 61  6d 20 69 73 20 70 6c 61  |ut stream is pla|
0008b290  63 65 64 20 69 6e 20 74  68 65 20 75 6e 73 69 67  |ced in the unsig|
0008b2a0  6e 65 64 20 69 6e 74 20  70 6f 69 6e 74 65 64 20  |ned int pointed |
0008b2b0  74 6f 20 62 79 20 74 68  65 20 61 72 67 75 6d 65  |to by the argume|
0008b2c0  6e 74 2e 0a 0a 78 09 41  20 68 65 78 61 64 65 63  |nt...x.A hexadec|
0008b2d0  69 6d 61 6c 20 69 6e 74  65 67 65 72 20 72 65 61  |imal integer rea|
0008b2e0  64 20 66 72 6f 6d 20 74  68 65 20 69 6e 70 75 74  |d from the input|
0008b2f0  20 73 74 72 65 61 6d 20  69 73 20 70 6c 61 63 65  | stream is place|
0008b300  64 20 69 6e 20 74 68 65  20 75 6e 73 69 67 6e 65  |d in the unsigne|
0008b310  64 20 69 6e 74 20 70 6f  69 6e 74 65 64 20 74 6f  |d int pointed to|
0008b320  20 62 79 20 74 68 65 20  61 72 67 75 6d 65 6e 74  | by the argument|
0008b330  2e 0a 0a 65 2c 66 2c 67  09 41 20 66 6c 6f 61 74  |...e,f,g.A float|
0008b340  69 6e 67 20 70 6f 69 6e  74 20 6e 75 6d 62 65 72  |ing point number|
0008b350  20 72 65 61 64 20 66 72  6f 6d 20 74 68 65 20 69  | read from the i|
0008b360  6e 70 75 74 20 73 74 72  65 61 6d 20 69 73 20 70  |nput stream is p|
0008b370  6c 61 63 65 64 20 69 6e  20 74 68 65 20 66 6c 6f  |laced in the flo|
0008b380  61 74 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |at pointed to by|
0008b390  20 74 68 65 20 61 72 67  75 6d 65 6e 74 2e 20 54  | the argument. T|
0008b3a0  68 65 20 6e 75 6d 62 65  72 20 6d 61 79 20 62 65  |he number may be|
0008b3b0  20 69 6e 20 53 63 69 65  6e 74 69 66 69 63 20 28  | in Scientific (|
0008b3c0  73 74 61 6e 64 61 72 64  29 20 66 6f 72 6d 2e 0a  |standard) form..|
0008b3d0  0a 73 09 41 20 73 65 71  75 65 6e 63 65 20 6f 66  |.s.A sequence of|
0008b3e0  20 6e 6f 6e 2d 77 68 69  74 65 2d 73 70 61 63 65  | non-white-space|
0008b3f0  20 63 68 61 72 61 63 74  65 72 73 20 73 65 65 20  | characters see |
0008b400  3c 69 73 73 70 61 63 65  3e 29 20 61 72 65 20 70  |<isspace>) are p|
0008b410  6c 61 63 65 64 20 69 6e  20 74 68 65 20 63 68 61  |laced in the cha|
0008b420  72 61 63 74 65 72 20 61  72 72 61 79 20 70 6f 69  |racter array poi|
0008b430  6e 74 65 64 20 74 6f 20  62 79 20 74 68 65 20 61  |nted to by the a|
0008b440  72 67 75 6d 65 6e 74 2e  20 41 20 74 65 72 6d 69  |rgument. A termi|
0008b450  6e 61 74 69 6e 67 20 6e  75 6c 6c 20 63 68 61 72  |nating null char|
0008b460  61 63 74 65 72 20 69 73  20 61 64 64 65 64 20 61  |acter is added a|
0008b470  75 74 6f 6d 61 74 69 63  61 6c 6c 79 2e 0a 0a 63  |utomatically...c|
0008b480  09 41 20 73 65 71 75 65  6e 63 65 20 6f 66 20 63  |.A sequence of c|
0008b490  68 61 72 61 63 74 65 72  73 20 6f 66 20 6c 65 6e  |haracters of len|
0008b4a0  67 74 68 20 73 70 65 63  69 66 69 65 64 20 69 6e  |gth specified in|
0008b4b0  20 74 68 65 20 3c 66 69  65 6c 64 20 77 69 64 74  | the <field widt|
0008b4c0  68 3d 3e 73 66 5f 66 77  5f 3e 20 28 31 20 69 66  |h=>sf_fw_> (1 if|
0008b4d0  20 6e 6f 20 66 69 65 6c  64 20 77 69 64 74 68 20  | no field width |
0008b4e0  67 69 76 65 6e 29 20 69  73 20 70 6c 61 63 65 64  |given) is placed|
0008b4f0  20 69 6e 20 74 68 65 20  63 68 61 72 61 63 74 65  | in the characte|
0008b500  72 20 61 72 72 61 79 20  70 6f 69 6e 74 65 64 20  |r array pointed |
0008b510  74 6f 20 62 79 20 74 68  65 20 61 72 67 75 6d 65  |to by the argume|
0008b520  6e 74 2e 20 4e 6f 20 6e  75 6c 6c 20 63 68 61 72  |nt. No null char|
0008b530  61 63 74 65 72 20 69 73  20 61 64 64 65 64 2e 0a  |acter is added..|
0008b540  0a 70 09 41 20 70 6f 69  6e 74 65 72 20 76 61 6c  |.p.A pointer val|
0008b550  75 65 20 69 6e 20 61 6e  20 63 6f 6d 70 69 6c 65  |ue in an compile|
0008b560  72 2d 64 65 66 69 6e 65  64 20 66 6f 72 6d 61 74  |r-defined format|
0008b570  20 69 73 20 70 6c 61 63  65 64 20 69 6e 20 74 68  | is placed in th|
0008b580  65 20 76 6f 69 64 20 2a  20 70 6f 69 6e 74 65 72  |e void * pointer|
0008b590  20 74 6f 20 62 79 20 74  68 65 20 61 72 67 75 6d  | to by the argum|
0008b5a0  65 6e 74 20 28 74 68 65  20 61 72 67 75 6d 65 6e  |ent (the argumen|
0008b5b0  74 20 69 73 20 61 20 76  6f 69 64 a0 2a 2a 29 2e  |t is a void.**).|
0008b5c0  20 54 68 69 73 20 69 73  20 6e 6f 74 20 76 65 72  | This is not ver|
0008b5d0  79 20 75 73 65 66 75 6c  21 0a 0a 6e 09 54 68 65  |y useful!..n.The|
0008b5e0  20 6e 75 6d 62 65 72 20  6f 66 20 63 68 61 72 61  | number of chara|
0008b5f0  63 74 65 72 73 20 72 65  61 64 20 73 6f 20 66 61  |cters read so fa|
0008b600  72 20 69 73 20 70 6c 61  63 65 64 20 69 6e 20 74  |r is placed in t|
0008b610  68 65 20 69 6e 74 20 70  6f 69 6e 74 65 64 20 74  |he int pointed t|
0008b620  6f 20 62 79 20 74 68 65  20 61 72 67 75 6d 65 6e  |o by the argumen|
0008b630  74 2e 0a 0a 5b 2e 2e 2e  5d 09 41 20 73 65 71 75  |t...[...].A sequ|
0008b640  65 6e 63 65 20 6f 66 20  74 68 6f 73 65 20 63 68  |ence of those ch|
0008b650  61 72 61 63 74 65 72 73  20 73 70 65 63 69 66 69  |aracters specifi|
0008b660  65 64 20 69 6e 73 69 64  65 20 74 68 65 20 62 72  |ed inside the br|
0008b670  61 63 6b 65 74 73 2e 20  49 66 20 74 68 65 20 66  |ackets. If the f|
0008b680  69 72 73 74 20 63 68 61  72 61 63 74 65 72 20 73  |irst character s|
0008b690  70 65 63 69 66 69 65 64  20 69 73 20 61 20 63 61  |pecified is a ca|
0008b6a0  72 65 74 20 28 27 5e 27  29 20 74 68 65 6e 20 73  |ret ('^') then s|
0008b6b0  65 71 75 65 6e 63 65 20  6d 75 73 74 20 63 6f 6e  |equence must con|
0008b6c0  74 61 69 6e 20 6f 6e 6c  79 20 74 68 65 20 63 68  |tain only the ch|
0008b6d0  61 72 61 63 74 65 72 73  20 4e 4f 54 20 63 6f 6e  |aracters NOT con|
0008b6e0  74 61 69 6e 65 64 20 69  6e 73 69 64 65 20 74 68  |tained inside th|
0008b6f0  65 20 62 72 61 63 6b 65  74 73 2e 20 49 66 20 74  |e brackets. If t|
0008b700  68 65 20 63 68 61 72 61  63 74 65 72 20 27 5d 27  |he character ']'|
0008b710  20 69 73 20 72 65 71 75  69 72 65 64 20 61 73 20  | is required as |
0008b720  6f 6e 63 65 20 6f 66 20  74 68 65 20 73 70 65 63  |once of the spec|
0008b730  69 66 69 65 64 20 63 68  61 72 61 63 74 65 72 73  |ified characters|
0008b740  20 69 74 20 6d 75 73 74  20 62 65 20 74 68 65 20  | it must be the |
0008b750  66 69 72 73 74 20 6f 6e  65 20 69 65 20 75 73 65  |first one ie use|
0008b760  20 5b 5d 2e 2e 2e 5d 20  6f 72 20 5b 5e 5d 2e 2e  | []...] or [^]..|
0008b770  2e 5d 2e 00 44 41 54 41  a1 00 00 00 46 6f 72 6d  |.]..DATA....Form|
0008b780  61 74 20 53 74 72 69 6e  67 20 46 69 65 6c 64 20  |at String Field |
0008b790  57 69 64 74 68 0a 54 68  69 73 20 69 73 20 61 20  |Width.This is a |
0008b7a0  64 65 63 69 6d 61 6c 20  69 6e 74 65 67 65 72 20  |decimal integer |
0008b7b0  77 68 69 63 68 20 67 69  76 65 73 20 74 68 65 20  |which gives the |
0008b7c0  6d 61 78 69 6d 75 6d 20  69 6e 70 75 74 20 66 69  |maximum input fi|
0008b7d0  65 6c 64 20 77 69 64 74  68 2e 20 4f 6e 6c 79 20  |eld width. Only |
0008b7e0  74 68 69 73 20 6d 61 6e  79 20 63 68 61 72 61 63  |this many charac|
0008b7f0  74 65 72 73 20 77 69 6c  6c 20 62 65 20 61 63 63  |ters will be acc|
0008b800  65 70 74 65 64 20 66 72  6f 6d 20 74 68 65 20 69  |epted from the i|
0008b810  6e 70 75 74 2e 00 00 00  44 41 54 41 a1 01 00 00  |nput....DATA....|
0008b820  46 6f 72 6d 61 74 20 53  74 72 69 6e 67 20 4c 65  |Format String Le|
0008b830  6e 67 74 68 20 4d 6f 64  69 66 69 65 72 0a 4f 6e  |ngth Modifier.On|
0008b840  65 20 6f 66 20 74 68 65  20 66 6f 6c 6c 6f 77 69  |e of the followi|
0008b850  6e 67 3a 0a 0a 68 09 46  6f 72 20 64 2c 20 69 2c  |ng:..h.For d, i,|
0008b860  20 6e 2c 20 6f 2c 20 75  2c 20 6f 72 20 78 20 63  | n, o, u, or x c|
0008b870  6f 6e 76 65 72 73 69 6f  6e 20 73 70 65 63 69 66  |onversion specif|
0008b880  69 65 73 20 74 68 61 74  20 74 68 65 20 61 72 67  |ies that the arg|
0008b890  75 6d 65 6e 74 20 69 73  20 61 20 70 6f 69 6e 74  |ument is a point|
0008b8a0  65 72 20 74 6f 20 61 20  73 68 6f 72 74 20 69 6e  |er to a short in|
0008b8b0  74 2e 0a 0a 6c 09 46 6f  72 20 64 2c 20 69 2c 20  |t...l.For d, i, |
0008b8c0  6e 2c 20 6f 2c 20 75 2c  20 6f 72 20 78 20 63 6f  |n, o, u, or x co|
0008b8d0  6e 76 65 72 73 69 6f 6e  20 73 70 65 63 69 66 69  |nversion specifi|
0008b8e0  65 73 20 74 68 61 74 20  74 68 65 20 61 72 67 75  |es that the argu|
0008b8f0  6d 65 6e 74 20 69 73 20  61 20 70 6f 69 6e 74 65  |ment is a pointe|
0008b900  72 20 74 6f 20 61 20 6c  6f 6e 67 20 69 6e 74 2e  |r to a long int.|
0008b910  0a 09 46 6f 72 20 65 2c  20 66 2c 20 6f 72 20 67  |..For e, f, or g|
0008b920  20 63 6f 6e 76 65 72 73  69 6f 6e 20 73 70 65 63  | conversion spec|
0008b930  69 66 69 65 73 20 74 68  61 74 20 74 68 65 20 61  |ifies that the a|
0008b940  72 67 75 6d 65 6e 74 20  69 73 20 61 20 70 6f 69  |rgument is a poi|
0008b950  6e 74 65 72 20 74 6f 20  61 20 64 6f 75 62 6c 65  |nter to a double|
0008b960  2e 0a 0a 4c 09 46 6f 72  20 65 2c 20 66 2c 20 6f  |...L.For e, f, o|
0008b970  72 20 67 20 63 6f 6e 76  65 72 73 69 6f 6e 20 73  |r g conversion s|
0008b980  70 65 63 69 66 69 65 73  20 74 68 61 74 20 74 68  |pecifies that th|
0008b990  65 20 61 72 67 75 6d 65  6e 74 20 69 73 20 61 20  |e argument is a |
0008b9a0  70 6f 69 6e 74 65 72 20  74 6f 20 61 20 6c 6f 6e  |pointer to a lon|
0008b9b0  67 20 64 6f 75 62 6c 65  2e 00 00 00 44 41 54 41  |g double....DATA|
0008b9c0  bb 00 00 00 46 6f 72 6d  61 74 20 53 74 72 69 6e  |....Format Strin|
0008b9d0  67 20 27 2a 27 0a 54 68  65 20 6f 70 74 69 6f 6e  |g '*'.The option|
0008b9e0  61 6c 20 27 2a 27 20 63  68 61 72 61 63 74 65 72  |al '*' character|
0008b9f0  20 69 6e 64 69 63 61 74  65 73 20 74 68 61 74 20  | indicates that |
0008ba00  74 68 65 20 63 75 72 72  65 6e 74 20 63 6f 6e 76  |the current conv|
0008ba10  65 72 73 69 6f 6e 20 73  68 6f 75 6c 64 20 74 61  |ersion should ta|
0008ba20  6b 65 20 70 6c 61 63 65  20 62 75 74 20 74 68 65  |ke place but the|
0008ba30  20 72 65 73 75 6c 74 20  73 68 6f 75 6c 64 20 6e  | result should n|
0008ba40  6f 74 20 62 65 20 70 6c  61 63 65 64 20 69 6e 20  |ot be placed in |
0008ba50  74 68 65 20 76 61 72 69  61 62 6c 65 20 73 70 65  |the variable spe|
0008ba60  63 69 66 69 65 64 20 62  79 20 74 68 65 20 61 72  |cified by the ar|
0008ba70  67 75 6d 65 6e 74 2e 00  44 49 52 24 44 00 00 00  |gument..DIR$D...|
0008ba80  44 00 00 00 bc ba 08 00  46 ff ff ff 29 00 bd 22  |D.......F...).."|
0008ba90  ad 00 00 00 13 00 00 00  00 00 00 00 4d 41 58 00  |............MAX.|
0008baa0  6c bb 08 00 46 ff ff ff  97 fc bc 22 ae 00 00 00  |l...F......"....|
0008bab0  13 00 00 00 00 00 00 00  4d 49 4e 00 44 41 54 41  |........MIN.DATA|
0008bac0  ad 00 00 00 53 48 52 54  5f 4d 41 58 0a 54 68 69  |....SHRT_MAX.Thi|
0008bad0  73 20 6d 61 63 72 6f 20  69 73 20 64 65 66 69 6e  |s macro is defin|
0008bae0  65 64 20 69 6e 20 3c 6c  69 6d 69 74 73 2e 68 3e  |ed in <limits.h>|
0008baf0  20 61 6e 64 20 72 65 70  72 65 73 65 6e 74 73 20  | and represents |
0008bb00  74 68 65 20 6d 61 78 69  6d 75 6d 20 76 61 6c 75  |the maximum valu|
0008bb10  65 20 77 68 69 63 68 20  63 61 6e 20 62 65 20 73  |e which can be s|
0008bb20  74 6f 72 65 64 20 69 6e  20 61 20 73 68 6f 72 74  |tored in a short|
0008bb30  20 69 6e 74 2e 20 49 6e  20 45 61 73 79 20 43 20  | int. In Easy C |
0008bb40  69 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |it is defined as|
0008bb50  20 30 78 37 66 66 66 66  66 66 66 20 28 32 31 34  | 0x7fffffff (214|
0008bb60  37 34 38 33 36 34 37 29  2e 00 00 00 44 41 54 41  |7483647)....DATA|
0008bb70  ae 00 00 00 53 48 52 54  5f 4d 49 4e 0a 54 68 69  |....SHRT_MIN.Thi|
0008bb80  73 20 6d 61 63 72 6f 20  69 73 20 64 65 66 69 6e  |s macro is defin|
0008bb90  65 64 20 69 6e 20 3c 6c  69 6d 69 74 73 2e 68 3e  |ed in <limits.h>|
0008bba0  20 61 6e 64 20 72 65 70  72 65 73 65 6e 74 73 20  | and represents |
0008bbb0  74 68 65 20 6d 69 6e 69  6d 75 6d 20 76 61 6c 75  |the minimum valu|
0008bbc0  65 20 77 68 69 63 68 20  63 61 6e 20 62 65 20 73  |e which can be s|
0008bbd0  74 6f 72 65 64 20 69 6e  20 61 20 73 68 6f 72 74  |tored in a short|
0008bbe0  20 69 6e 74 2e 20 49 6e  20 45 61 73 79 20 43 20  | int. In Easy C |
0008bbf0  69 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |it is defined as|
0008bc00  20 30 78 38 30 30 30 30  30 30 30 20 28 2d 32 31  | 0x80000000 (-21|
0008bc10  34 37 34 38 33 36 34 38  29 2e 00 00 44 41 54 41  |47483648)...DATA|
0008bc20  5a 00 00 00 53 49 47 41  42 52 54 0a 54 68 69 73  |Z...SIGABRT.This|
0008bc30  20 6d 61 63 72 6f 20 69  73 20 64 65 66 69 6e 65  | macro is define|
0008bc40  64 20 69 6e 20 3c 73 69  67 6e 61 6c 2e 68 3d 3e  |d in <signal.h=>|
0008bc50  73 69 67 6e 61 6c 3e 2e  20 49 6e 20 45 61 73 79  |signal>. In Easy|
0008bc60  20 43 20 69 74 20 69 73  20 64 65 66 69 6e 65 64  | C it is defined|
0008bc70  20 61 73 20 31 2e 00 00  44 41 54 41 59 00 00 00  | as 1...DATAY...|
0008bc80  53 49 47 46 50 45 0a 54  68 69 73 20 6d 61 63 72  |SIGFPE.This macr|
0008bc90  6f 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |o is defined in |
0008bca0  3c 73 69 67 6e 61 6c 2e  68 3d 3e 73 69 67 6e 61  |<signal.h=>signa|
0008bcb0  6c 3e 2e 20 49 6e 20 45  61 73 79 20 43 20 69 74  |l>. In Easy C it|
0008bcc0  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 20 32  | is defined as 2|
0008bcd0  2e 00 00 00 44 41 54 41  59 00 00 00 53 49 47 49  |....DATAY...SIGI|
0008bce0  4c 4c 0a 54 68 69 73 20  6d 61 63 72 6f 20 69 73  |LL.This macro is|
0008bcf0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 73 69 67  | defined in <sig|
0008bd00  6e 61 6c 2e 68 3d 3e 73  69 67 6e 61 6c 3e 2e 20  |nal.h=>signal>. |
0008bd10  49 6e 20 45 61 73 79 20  43 20 69 74 20 69 73 20  |In Easy C it is |
0008bd20  64 65 66 69 6e 65 64 20  61 73 20 33 2e 00 00 00  |defined as 3....|
0008bd30  44 41 54 41 59 00 00 00  53 49 47 49 4e 54 0a 54  |DATAY...SIGINT.T|
0008bd40  68 69 73 20 6d 61 63 72  6f 20 69 73 20 64 65 66  |his macro is def|
0008bd50  69 6e 65 64 20 69 6e 20  3c 73 69 67 6e 61 6c 2e  |ined in <signal.|
0008bd60  68 3d 3e 73 69 67 6e 61  6c 3e 2e 20 49 6e 20 45  |h=>signal>. In E|
0008bd70  61 73 79 20 43 20 69 74  20 69 73 20 64 65 66 69  |asy C it is defi|
0008bd80  6e 65 64 20 61 73 20 34  2e 00 00 00 44 41 54 41  |ned as 4....DATA|
0008bd90  ac 01 00 00 73 69 67 6e  61 6c 2e 68 0a 54 68 65  |....signal.h.The|
0008bda0  20 5c 3c 73 69 67 6e 61  6c 2e 68 3e 20 68 65 61  | \<signal.h> hea|
0008bdb0  64 65 72 20 64 65 63 6c  61 72 65 73 20 66 75 6e  |der declares fun|
0008bdc0  63 74 69 6f 6e 73 2c 20  6d 61 63 72 6f 73 20 61  |ctions, macros a|
0008bdd0  6e 64 20 6f 6e 65 20 74  79 70 65 20 66 6f 72 20  |nd one type for |
0008bde0  68 61 6e 64 6c 69 6e 67  20 73 69 67 6e 61 6c 73  |handling signals|
0008bdf0  2e 0a 0a 46 75 6e 63 74  69 6f 6e 73 3a 0a 0a 23  |...Functions:..#|
0008be00  49 6e 64 65 6e 74 20 34  0a 23 54 61 62 6c 65 20  |Indent 4.#Table |
0008be10  33 20 32 37 0a 3c 5f 5f  64 65 66 61 75 6c 74 5f  |3 27.<__default_|
0008be20  73 69 67 6e 61 6c 5f 68  61 6e 64 6c 65 72 3e 0a  |signal_handler>.|
0008be30  3c 5f 5f 65 72 72 6f 72  5f 73 69 67 6e 61 6c 5f  |<__error_signal_|
0008be40  6d 61 72 6b 65 72 3e 0a  3c 5f 5f 69 67 6e 6f 72  |marker>.<__ignor|
0008be50  65 5f 73 69 67 6e 61 6c  5f 68 61 6e 64 6c 65 72  |e_signal_handler|
0008be60  3e 0a 3c 73 69 67 6e 61  6c 3d 3e 73 69 67 6e 61  |>.<signal=>signa|
0008be70  6c 5f 3e 0a 3c 72 61 69  73 65 3e 0a 23 45 6e 64  |l_>.<raise>.#End|
0008be80  54 61 62 6c 65 0a 23 49  6e 64 65 6e 74 20 30 0a  |Table.#Indent 0.|
0008be90  0a 54 79 70 65 3a 0a 0a  23 69 6e 64 65 6e 74 20  |.Type:..#indent |
0008bea0  34 0a 3c 73 69 67 5f 61  74 6f 6d 69 63 5f 74 3e  |4.<sig_atomic_t>|
0008beb0  0a 23 69 6e 64 65 6e 74  0a 0a 4d 61 63 72 6f 73  |.#indent..Macros|
0008bec0  3a 0a 0a 23 54 61 62 6c  65 20 32 20 39 0a 3c 53  |:..#Table 2 9.<S|
0008bed0  49 47 5f 44 46 4c 3e 0a  3c 53 49 47 5f 45 52 52  |IG_DFL>.<SIG_ERR|
0008bee0  3e 0a 3c 53 49 47 5f 49  47 4e 3e 0a 3c 53 49 47  |>.<SIG_IGN>.<SIG|
0008bef0  41 42 52 54 3e 0a 3c 53  49 47 46 50 45 3e 0a 3c  |ABRT>.<SIGFPE>.<|
0008bf00  53 49 47 49 4c 4c 3e 0a  3c 53 49 47 49 4e 54 3e  |SIGILL>.<SIGINT>|
0008bf10  0a 3c 53 49 47 53 45 47  56 3e 0a 3c 53 49 47 54  |.<SIGSEGV>.<SIGT|
0008bf20  45 52 4d 3e 0a 3c 53 49  47 53 54 41 4b 3e 0a 23  |ERM>.<SIGSTAK>.#|
0008bf30  45 6e 64 54 61 62 6c 65  44 49 52 24 2c 00 00 00  |EndTableDIR$,...|
0008bf40  2c 00 00 00 64 bf 08 00  46 fd ff ff 26 37 bf 22  |,...d...F...&7."|
0008bf50  f0 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
0008bf60  74 00 00 00 44 41 54 41  f0 00 00 00 73 69 67 6e  |t...DATA....sign|
0008bf70  61 6c 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |al.Syntax:.void |
0008bf80  28 2a 73 69 67 6e 61 6c  28 69 6e 74 20 73 69 67  |(*signal(int sig|
0008bf90  2c 20 76 6f 69 64 20 28  2a 66 75 6e 63 29 28 69  |, void (*func)(i|
0008bfa0  6e 74 29 29 29 28 69 6e  74 29 3b 0a 48 65 61 64  |nt)))(int);.Head|
0008bfb0  65 72 3a 09 3c 73 69 67  6e 61 6c 2e 68 3d 3e 73  |er:.<signal.h=>s|
0008bfc0  69 67 6e 61 6c 3e 0a 0a  52 65 74 75 72 6e 73 3a  |ignal>..Returns:|
0008bfd0  09 2f 66 75 6e 63 2f 20  6f 66 20 6d 6f 73 74 20  |./func/ of most |
0008bfe0  72 65 63 65 6e 74 20 63  61 6c 6c 2e 0a 0a 54 68  |recent call...Th|
0008bff0  69 73 20 66 75 6e 63 74  69 6f 6e 20 73 65 74 73  |is function sets|
0008c000  20 74 68 61 74 20 61 6e  79 20 66 75 74 75 72 65  | that any future|
0008c010  20 6f 63 63 75 72 72 65  6e 63 65 73 20 6f 66 20  | occurrences of |
0008c020  74 68 65 20 73 69 67 6e  61 6c 20 2f 73 69 67 2f  |the signal /sig/|
0008c030  20 77 69 6c 6c 20 75 73  65 20 74 68 65 20 73 69  | will use the si|
0008c040  67 6e 61 6c 20 68 61 6e  64 6c 65 72 20 2f 66 75  |gnal handler /fu|
0008c050  6e 63 2f 2e 44 41 54 41  5a 00 00 00 53 49 47 53  |nc/.DATAZ...SIGS|
0008c060  45 47 56 0a 54 68 69 73  20 6d 61 63 72 6f 20 69  |EGV.This macro i|
0008c070  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 73 69  |s defined in <si|
0008c080  67 6e 61 6c 2e 68 3d 3e  73 69 67 6e 61 6c 3e 2e  |gnal.h=>signal>.|
0008c090  20 49 6e 20 45 61 73 79  20 43 20 69 74 20 69 73  | In Easy C it is|
0008c0a0  20 64 65 66 69 6e 65 64  20 61 73 20 35 2e 00 00  | defined as 5...|
0008c0b0  44 41 54 41 5a 00 00 00  53 49 47 53 54 41 4b 0a  |DATAZ...SIGSTAK.|
0008c0c0  54 68 69 73 20 6d 61 63  72 6f 20 69 73 20 64 65  |This macro is de|
0008c0d0  66 69 6e 65 64 20 69 6e  20 3c 73 69 67 6e 61 6c  |fined in <signal|
0008c0e0  2e 68 3d 3e 73 69 67 6e  61 6c 3e 2e 20 49 6e 20  |.h=>signal>. In |
0008c0f0  45 61 73 79 20 43 20 69  74 20 69 73 20 64 65 66  |Easy C it is def|
0008c100  69 6e 65 64 20 61 73 20  37 2e 00 00 44 41 54 41  |ined as 7...DATA|
0008c110  5a 00 00 00 53 49 47 54  45 52 4d 0a 54 68 69 73  |Z...SIGTERM.This|
0008c120  20 6d 61 63 72 6f 20 69  73 20 64 65 66 69 6e 65  | macro is define|
0008c130  64 20 69 6e 20 3c 73 69  67 6e 61 6c 2e 68 3d 3e  |d in <signal.h=>|
0008c140  73 69 67 6e 61 6c 3e 2e  20 49 6e 20 45 61 73 79  |signal>. In Easy|
0008c150  20 43 20 69 74 20 69 73  20 64 65 66 69 6e 65 64  | C it is defined|
0008c160  20 61 73 20 36 2e 00 00  44 49 52 24 84 00 00 00  | as 6...DIR$....|
0008c170  84 00 00 00 ec c1 08 00  46 ff ff ff da 40 bf 22  |........F....@."|
0008c180  65 00 00 00 13 00 00 00  00 00 00 00 61 74 6f 6d  |e...........atom|
0008c190  69 63 5f 74 00 00 00 00  54 c2 08 00 46 ff ff ff  |ic_t....T...F...|
0008c1a0  a2 51 bf 22 9e 00 00 00  13 00 00 00 00 00 00 00  |.Q."............|
0008c1b0  44 46 4c 00 f4 c2 08 00  46 ff ff ff 1e 5d bf 22  |DFL.....F....]."|
0008c1c0  99 00 00 00 13 00 00 00  00 00 00 00 45 52 52 00  |............ERR.|
0008c1d0  90 c3 08 00 46 ff ff ff  65 65 bf 22 9c 00 00 00  |....F...ee."....|
0008c1e0  13 00 00 00 00 00 00 00  49 47 4e 00 44 41 54 41  |........IGN.DATA|
0008c1f0  65 00 00 00 73 69 67 5f  61 74 6f 6d 69 63 5f 74  |e...sig_atomic_t|
0008c200  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
0008c210  66 69 6e 65 64 20 69 6e  20 3c 73 69 67 6e 61 6c  |fined in <signal|
0008c220  2e 68 3d 3e 73 69 67 6e  61 6c 3e 2e 20 49 6e 20  |.h=>signal>. In |
0008c230  45 61 73 79 20 43 20 69  74 20 69 73 20 64 65 66  |Easy C it is def|
0008c240  69 6e 65 64 20 61 73 20  61 6e 20 2f 69 6e 74 2f  |ined as an /int/|
0008c250  2e 00 00 00 44 41 54 41  9e 00 00 00 53 49 47 5f  |....DATA....SIG_|
0008c260  44 46 4c 0a 54 68 69 73  20 6d 61 63 72 6f 20 69  |DFL.This macro i|
0008c270  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 73 69  |s defined in <si|
0008c280  67 6e 61 6c 2e 68 3d 3e  73 69 67 6e 61 6c 3e 2e  |gnal.h=>signal>.|
0008c290  20 49 74 20 69 73 20 64  65 66 69 6e 65 64 20 74  | It is defined t|
0008c2a0  6f 20 62 65 20 61 20 70  6f 69 6e 74 65 72 20 74  |o be a pointer t|
0008c2b0  6f 20 74 68 65 20 64 65  66 61 75 6c 74 20 73 69  |o the default si|
0008c2c0  67 6e 61 6c 20 68 61 6e  64 6c 65 72 20 69 65 20  |gnal handler ie |
0008c2d0  7b 2f 7d 26 3c 5f 5f 64  65 66 61 75 6c 74 5f 73  |{/}&<__default_s|
0008c2e0  69 67 6e 61 6c 5f 68 61  6e 64 6c 65 72 3e 7b 2f  |ignal_handler>{/|
0008c2f0  7d 2e 00 00 44 41 54 41  99 00 00 00 53 49 47 5f  |}...DATA....SIG_|
0008c300  45 52 52 0a 54 68 69 73  20 6d 61 63 72 6f 20 69  |ERR.This macro i|
0008c310  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 73 69  |s defined in <si|
0008c320  67 6e 61 6c 2e 68 3d 3e  73 69 67 6e 61 6c 3e 2e  |gnal.h=>signal>.|
0008c330  20 49 74 20 69 73 20 64  65 66 69 6e 65 64 20 74  | It is defined t|
0008c340  6f 20 62 65 20 61 20 70  6f 69 6e 74 65 72 20 74  |o be a pointer t|
0008c350  6f 20 74 68 65 20 65 72  72 6f 72 20 73 69 67 6e  |o the error sign|
0008c360  61 6c 20 68 61 6e 64 6c  65 72 20 69 65 20 7b 2f  |al handler ie {/|
0008c370  7d 26 3c 5f 5f 65 72 72  6f 72 5f 73 69 67 6e 61  |}&<__error_signa|
0008c380  6c 5f 6d 61 72 6b 65 72  3e 7b 2f 7d 2e 00 00 00  |l_marker>{/}....|
0008c390  44 41 54 41 9c 00 00 00  53 49 47 5f 49 47 4e 0a  |DATA....SIG_IGN.|
0008c3a0  54 68 69 73 20 6d 61 63  72 6f 20 69 73 20 64 65  |This macro is de|
0008c3b0  66 69 6e 65 64 20 69 6e  20 3c 73 69 67 6e 61 6c  |fined in <signal|
0008c3c0  2e 68 3d 3e 73 69 67 6e  61 6c 3e 2e 20 49 74 20  |.h=>signal>. It |
0008c3d0  69 73 20 64 65 66 69 6e  65 64 20 74 6f 20 62 65  |is defined to be|
0008c3e0  20 61 20 70 6f 69 6e 74  65 72 20 74 6f 20 74 68  | a pointer to th|
0008c3f0  65 20 69 67 6e 6f 72 65  20 73 69 67 6e 61 6c 20  |e ignore signal |
0008c400  68 61 6e 64 6c 65 72 20  69 65 20 7b 2f 7d 26 3c  |handler ie {/}&<|
0008c410  5f 5f 69 67 6e 6f 72 65  5f 73 69 67 6e 61 6c 5f  |__ignore_signal_|
0008c420  68 61 6e 64 6c 65 72 3e  7b 2f 7d 2e 44 41 54 41  |handler>{/}.DATA|
0008c430  a5 00 00 00 73 69 6e 0a  53 79 6e 74 61 78 3a 09  |....sin.Syntax:.|
0008c440  64 6f 75 62 6c 65 20 73  69 6e 20 28 64 6f 75 62  |double sin (doub|
0008c450  6c 65 20 78 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |le x);.Header:.<|
0008c460  6d 61 74 68 2e 68 3d 3e  6d 61 74 68 3e 0a 0a 52  |math.h=>math>..R|
0008c470  65 74 75 72 6e 73 3a 09  54 68 65 20 73 69 6e 65  |eturns:.The sine|
0008c480  20 6f 66 20 78 20 69 6e  20 72 61 64 69 61 6e 73  | of x in radians|
0008c490  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
0008c4a0  20 63 61 6c 63 75 6c 61  74 65 73 20 74 68 65 20  | calculates the |
0008c4b0  70 72 69 6e 63 69 70 61  6c 20 76 61 6c 75 65 20  |principal value |
0008c4c0  6f 66 20 74 68 65 20 73  69 6e 65 20 6f 66 20 78  |of the sine of x|
0008c4d0  2e 00 00 00 44 41 54 41  c7 00 00 00 73 69 6e 68  |....DATA....sinh|
0008c4e0  0a 53 79 6e 74 61 78 3a  09 64 6f 75 62 6c 65 20  |.Syntax:.double |
0008c4f0  73 69 6e 68 20 28 64 6f  75 62 6c 65 20 78 29 3b  |sinh (double x);|
0008c500  0a 48 65 61 64 65 72 3a  09 3c 6d 61 74 68 2e 68  |.Header:.<math.h|
0008c510  3d 3e 6d 61 74 68 3e 0a  0a 52 65 74 75 72 6e 73  |=>math>..Returns|
0008c520  3a 09 54 68 65 20 68 79  70 65 72 62 6f 6c 69 63  |:.The hyperbolic|
0008c530  20 73 69 6e 65 20 6f 66  20 78 20 69 6e 20 72 61  | sine of x in ra|
0008c540  64 69 61 6e 73 2e 0a 0a  54 68 69 73 20 66 75 6e  |dians...This fun|
0008c550  63 74 69 6f 6e 20 63 61  6c 63 75 6c 61 74 65 73  |ction calculates|
0008c560  20 74 68 65 20 68 79 70  65 72 62 6f 6c 69 63 20  | the hyperbolic |
0008c570  73 69 6e 65 20 6f 66 20  78 2e 20 41 6e 20 65 72  |sine of x. An er|
0008c580  72 6f 72 20 6f 63 63 75  72 73 20 69 66 20 78 20  |ror occurs if x |
0008c590  69 73 20 74 6f 6f 20 62  69 67 2e 00 44 41 54 41  |is too big..DATA|
0008c5a0  0a 01 00 00 73 69 7a 65  6f 66 0a 54 68 69 73 20  |....sizeof.This |
0008c5b0  69 73 20 28 74 68 65 20  6f 6e 6c 79 3f 29 20 62  |is (the only?) b|
0008c5c0  75 69 6c 74 20 69 6e 20  66 75 6e 63 74 69 6f 6e  |uilt in function|
0008c5d0  20 6f 66 20 43 2e 20 49  74 20 74 65 6c 6c 73 20  | of C. It tells |
0008c5e0  79 6f 75 20 74 68 65 20  73 69 7a 65 20 69 6e 20  |you the size in |
0008c5f0  62 79 74 65 73 20 6f 66  20 73 6f 6d 65 74 68 69  |bytes of somethi|
0008c600  6e 67 2c 20 74 68 69 73  20 63 61 6e 20 62 65 20  |ng, this can be |
0008c610  61 20 73 70 65 63 69 66  69 63 20 3c 76 61 72 69  |a specific <vari|
0008c620  61 62 6c 65 3d 3e 63 5f  76 61 72 5f 3e 20 6f 72  |able=>c_var_> or|
0008c630  20 61 20 3c 74 79 70 65  3d 3e 63 5f 74 79 70 65  | a <type=>c_type|
0008c640  73 5f 3e 2e 20 65 67 3a  0a 0a 20 20 20 20 73 69  |s_>. eg:..    si|
0008c650  7a 65 6f 66 28 69 6e 74  29 09 2f 2a 20 45 71 75  |zeof(int)./* Equ|
0008c660  61 6c 73 20 34 20 2a 2f  0a 20 20 20 20 73 69 7a  |als 4 */.    siz|
0008c670  65 6f 66 28 61 2e 62 29  09 2f 2a 20 44 65 70 65  |eof(a.b)./* Depe|
0008c680  6e 64 73 20 2a 2f 0a 20  20 20 20 73 69 7a 65 6f  |nds */.    sizeo|
0008c690  66 28 63 68 61 72 29 09  2f 2a 20 45 71 75 61 6c  |f(char)./* Equal|
0008c6a0  73 20 31 20 2a 2f 00 00  44 49 52 24 28 00 00 00  |s 1 */..DIR$(...|
0008c6b0  28 00 00 00 d0 c6 08 00  46 ff ff ff b8 86 c0 22  |(.......F......"|
0008c6c0  f4 00 00 00 13 00 00 00  00 00 00 00 74 00 00 00  |............t...|
0008c6d0  44 41 54 41 f4 00 00 00  73 69 7a 65 5f 74 0a 54  |DATA....size_t.T|
0008c6e0  68 65 20 74 79 70 65 20  7b 2f 7d 73 69 7a 65 5f  |he type {/}size_|
0008c6f0  74 7b 2f 7d 20 69 73 20  64 65 66 69 6e 65 64 20  |t{/} is defined |
0008c700  69 6e 20 3c 73 74 64 69  6f 2e 68 3d 3e 73 74 64  |in <stdio.h=>std|
0008c710  69 6f 3e 2c 20 3c 73 74  64 6c 69 62 2e 68 3d 3e  |io>, <stdlib.h=>|
0008c720  73 74 64 6c 69 62 3e 2c  20 3c 73 74 64 64 65 66  |stdlib>, <stddef|
0008c730  2e 68 3d 3e 73 74 64 64  65 66 3e 2c 20 61 6e 64  |.h=>stddef>, and|
0008c740  20 3c 73 74 72 69 6e 67  2e 68 3d 3e 73 74 72 69  | <string.h=>stri|
0008c750  6e 67 3e 2c 20 61 6e 64  20 69 73 20 75 73 65 64  |ng>, and is used|
0008c760  20 66 6f 72 20 73 65 76  65 72 61 6c 20 66 75 6e  | for several fun|
0008c770  63 74 69 6f 6e 73 20 74  6f 20 69 6e 64 69 63 61  |ctions to indica|
0008c780  74 65 20 74 68 65 20 73  69 7a 65 20 6f 66 20 74  |te the size of t|
0008c790  68 69 6e 67 73 2e 20 49  74 20 69 73 20 64 65 66  |hings. It is def|
0008c7a0  69 6e 65 64 20 69 6e 20  45 61 73 79 20 43 20 61  |ined in Easy C a|
0008c7b0  73 20 61 6e 20 2f 75 6e  73 69 67 6e 65 64 20 69  |s an /unsigned i|
0008c7c0  6e 74 2f 2e 44 41 54 41  12 02 00 00 44 65 73 6b  |nt/.DATA....Desk|
0008c7d0  4c 69 62 3a 53 6c 69 64  65 72 2e 68 0a 56 65 72  |Lib:Slider.h.Ver|
0008c7e0  73 69 6f 6e 3a 20 31 2e  30 30 20 28 31 32 20 4d  |sion: 1.00 (12 M|
0008c7f0  61 72 20 31 39 39 34 29  0a 23 6c 69 6e 65 0a 54  |ar 1994).#line.T|
0008c800  68 69 73 20 68 65 61 64  65 72 20 64 65 63 6c 61  |his header decla|
0008c810  72 65 73 20 66 75 6e 63  74 69 6f 6e 73 20 66 6f  |res functions fo|
0008c820  72 20 65 61 73 79 20 68  61 6e 64 6c 69 6e 67 20  |r easy handling |
0008c830  6f 66 20 73 6c 69 64 65  72 20 69 63 6f 6e 73 2e  |of slider icons.|
0008c840  20 54 68 65 73 65 20 61  72 65 20 62 65 74 74 65  | These are bette|
0008c850  72 20 74 68 61 6e 20 74  68 6f 73 65 20 66 6f 75  |r than those fou|
0008c860  6e 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 49  |nd in <DeskLib:I|
0008c870  63 6f 6e 2e 68 3d 3e 49  63 6f 6e 3e 2e 0a 0a 46  |con.h=>Icon>...F|
0008c880  75 6e 63 74 69 6f 6e 73  3a 0a 0a 23 49 6e 64 65  |unctions:..#Inde|
0008c890  6e 74 20 31 30 0a 23 54  61 62 6c 65 20 32 20 32  |nt 10.#Table 2 2|
0008c8a0  30 0a 3c 53 6c 69 64 65  72 5f 52 65 64 72 61 77  |0.<Slider_Redraw|
0008c8b0  3e 0a 3c 53 6c 69 64 65  72 5f 52 65 61 64 56 61  |>.<Slider_ReadVa|
0008c8c0  6c 75 65 3e 0a 3c 53 6c  69 64 65 72 5f 53 65 74  |lue>.<Slider_Set|
0008c8d0  56 61 6c 75 65 3e 0a 3c  53 6c 69 64 65 72 5f 44  |Value>.<Slider_D|
0008c8e0  72 61 67 3e 0a 23 45 6e  64 54 61 62 6c 65 0a 23  |rag>.#EndTable.#|
0008c8f0  49 6e 64 65 6e 74 20 30  0a 0a 54 79 70 65 3a 0a  |Indent 0..Type:.|
0008c900  0a 7b 61 6c 69 67 6e 20  63 65 6e 74 72 65 7d 3c  |.{align centre}<|
0008c910  73 6c 69 64 65 72 5f 69  6e 66 6f 3e 0a 0a 54 68  |slider_info>..Th|
0008c920  65 20 73 6c 69 64 65 72  20 66 75 6e 63 74 69 6f  |e slider functio|
0008c930  6e 73 20 6e 65 65 64 20  3c 73 63 72 65 65 6e 5f  |ns need <screen_|
0008c940  64 65 6c 74 61 3e 20 74  6f 20 62 65 20 6b 65 70  |delta> to be kep|
0008c950  74 20 75 70 20 74 6f 20  64 61 74 65 2e 20 3c 48  |t up to date. <H|
0008c960  61 6e 64 6c 65 72 5f 4d  6f 64 65 43 68 61 6e 67  |andler_ModeChang|
0008c970  65 3e 20 73 68 6f 75 6c  64 20 62 65 20 63 61 6c  |e> should be cal|
0008c980  6c 65 64 20 6f 6e 20 61  20 6d 6f 64 65 20 63 68  |led on a mode ch|
0008c990  61 6e 67 65 2c 20 77 69  74 68 20 3c 53 63 72 65  |ange, with <Scre|
0008c9a0  65 6e 5f 43 61 63 68 65  4d 6f 64 65 49 6e 66 6f  |en_CacheModeInfo|
0008c9b0  3e 20 63 61 6c 6c 65 64  20 61 74 20 74 68 65 20  |> called at the |
0008c9c0  73 74 61 72 74 20 6f 66  20 79 6f 75 72 20 70 72  |start of your pr|
0008c9d0  6f 67 72 61 6d 2e 00 00  44 49 52 24 b4 00 00 00  |ogram...DIR$....|
0008c9e0  b4 00 00 00 8c ca 08 00  46 ff ff ff 30 a0 65 25  |........F...0.e%|
0008c9f0  be 02 00 00 13 00 00 00  00 00 00 00 44 72 61 67  |............Drag|
0008ca00  00 00 00 00 4c cd 08 00  46 ff ff ff eb b0 65 25  |....L...F.....e%|
0008ca10  7b 05 00 00 13 00 00 00  00 00 00 00 69 6e 66 6f  |{...........info|
0008ca20  00 00 00 00 c8 d2 08 00  46 ff ff ff 2d 71 65 25  |........F...-qe%|
0008ca30  2b 01 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |+...........Read|
0008ca40  56 61 6c 75 65 00 00 00  f4 d3 08 00 46 ff ff ff  |Value.......F...|
0008ca50  3b 68 65 25 6c 01 00 00  13 00 00 00 00 00 00 00  |;he%l...........|
0008ca60  52 65 64 72 61 77 00 00  60 d5 08 00 46 ff ff ff  |Redraw..`...F...|
0008ca70  2e 7f 65 25 2b 02 00 00  13 00 00 00 00 00 00 00  |..e%+...........|
0008ca80  53 65 74 56 61 6c 75 65  00 00 00 00 44 41 54 41  |SetValue....DATA|
0008ca90  be 02 00 00 53 6c 69 64  65 72 5f 44 72 61 67 0a  |....Slider_Drag.|
0008caa0  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
0008cab0  72 3e 20 2a 53 6c 69 64  65 72 5f 44 72 61 67 20  |r> *Slider_Drag |
0008cac0  28 3c 73 6c 69 64 65 72  5f 69 6e 66 6f 3e 20 2a  |(<slider_info> *|
0008cad0  73 6c 69 64 65 72 2c 20  3c 42 4f 4f 4c 3e 20 2a  |slider, <BOOL> *|
0008cae0  63 6c 6f 73 65 64 2c 20  69 6e 74 20 2a 76 61 6c  |closed, int *val|
0008caf0  75 65 2c 20 76 6f 69 64  20 2a 72 65 66 29 3b 0a  |ue, void *ref);.|
0008cb00  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
0008cb10  3a 53 6c 69 64 65 72 2e  68 3d 3e 53 6c 69 64 65  |:Slider.h=>Slide|
0008cb20  72 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |r>..Returns:.Poi|
0008cb30  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
0008cb40  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
0008cb50  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
0008cb60  20 73 74 61 72 74 73 20  64 72 61 67 67 69 6e 67  | starts dragging|
0008cb70  20 74 68 65 20 73 70 65  63 69 66 69 65 64 20 73  | the specified s|
0008cb80  6c 69 64 65 72 20 61 6e  64 20 73 68 6f 75 6c 64  |lider and should|
0008cb90  20 62 65 20 63 61 6c 6c  65 64 20 77 68 65 6e 20  | be called when |
0008cba0  74 68 65 20 75 73 65 72  20 63 6c 69 63 6b 73 20  |the user clicks |
0008cbb0  6f 6e 20 74 68 65 20 73  6c 69 64 65 72 2e 20 49  |on the slider. I|
0008cbc0  74 20 72 65 74 75 72 6e  73 20 77 68 65 6e 20 64  |t returns when d|
0008cbd0  72 61 67 67 69 6e 67 20  73 74 6f 70 73 2c 20 74  |ragging stops, t|
0008cbe0  68 65 20 75 70 64 61 74  65 20 66 75 6e 63 74 69  |he update functi|
0008cbf0  6f 6e 20 74 65 6c 6c 20  69 74 20 74 6f 2c 20 6f  |on tell it to, o|
0008cc00  72 20 74 68 65 20 77 69  6e 64 6f 77 20 69 73 20  |r the window is |
0008cc10  63 6c 6f 73 65 64 2e 20  49 74 20 6d 75 6c 74 69  |closed. It multi|
0008cc20  74 61 73 6b 73 20 62 79  20 63 61 6c 6c 69 6e 67  |tasks by calling|
0008cc30  20 3c 45 76 65 6e 74 5f  50 72 6f 63 65 73 73 3e  | <Event_Process>|
0008cc40  2e 20 54 68 65 20 75 70  64 61 74 65 20 66 75 6e  |. The update fun|
0008cc50  63 74 69 6f 6e 20 77 69  6c 6c 20 62 65 20 63 61  |ction will be ca|
0008cc60  6c 6c 65 64 20 28 77 69  74 68 20 7b 2f 7d 72 65  |lled (with {/}re|
0008cc70  66 7b 2f 7d 29 20 69 66  20 74 68 65 20 76 61 6c  |f{/}) if the val|
0008cc80  75 65 20 63 68 61 6e 67  65 73 2e 0a 0a 49 66 20  |ue changes...If |
0008cc90  2f 63 6c 6f 73 65 64 2f  20 69 73 20 6e 6f 74 20  |/closed/ is not |
0008cca0  4e 55 4c 4c 20 74 68 65  6e 20 7b 2f 7d 2a 63 6c  |NULL then {/}*cl|
0008ccb0  6f 73 65 64 7b 2f 7d 20  69 73 20 73 65 74 20 74  |osed{/} is set t|
0008ccc0  6f 20 54 52 55 45 20 69  66 20 74 68 65 20 77 69  |o TRUE if the wi|
0008ccd0  6e 64 6f 77 20 69 73 20  20 63 6c 6f 73 65 64 20  |ndow is  closed |
0008cce0  77 68 69 6c 65 20 64 72  61 67 67 69 6e 67 2e 20  |while dragging. |
0008ccf0  49 66 20 2f 76 61 6c 75  65 2f 20 69 73 20 6e 6f  |If /value/ is no|
0008cd00  74 20 4e 55 4c 4c 20 74  68 65 6e 20 7b 2f 7d 2a  |t NULL then {/}*|
0008cd10  76 61 6c 75 65 7b 2f 7d  20 69 73 20 73 65 74 20  |value{/} is set |
0008cd20  74 6f 20 74 68 65 20 73  6c 69 64 65 72 20 76 61  |to the slider va|
0008cd30  6c 75 65 20 69 6e 20 75  73 65 72 20 75 6e 69 74  |lue in user unit|
0008cd40  73 20 6f 6e 20 65 78 69  74 2e 00 00 44 41 54 41  |s on exit...DATA|
0008cd50  7b 05 00 00 73 6c 69 64  65 72 5f 69 6e 66 6f 0a  |{...slider_info.|
0008cd60  54 68 69 73 20 73 74 72  75 63 74 75 72 65 20 69  |This structure i|
0008cd70  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 44 65  |s defined in <De|
0008cd80  73 6b 4c 69 62 3a 53 6c  69 64 65 72 2e 68 3d 3e  |skLib:Slider.h=>|
0008cd90  53 6c 69 64 65 72 3e 20  61 6e 64 20 63 6f 6e 74  |Slider> and cont|
0008cda0  61 69 6e 73 20 66 75 6c  6c 20 69 6e 66 6f 72 6d  |ains full inform|
0008cdb0  61 74 69 6f 6e 20 61 62  6f 75 74 20 61 20 73 6c  |ation about a sl|
0008cdc0  69 64 65 72 20 77 68 69  63 68 20 44 65 73 6b 4c  |ider which DeskL|
0008cdd0  69 62 20 69 73 20 74 6f  20 68 61 6e 64 6c 65 2e  |ib is to handle.|
0008cde0  0a 0a 5c 7b 0a 20 20 3c  77 69 6e 64 6f 77 5f 68  |..\{.  <window_h|
0008cdf0  61 6e 64 6c 65 3e 20 77  69 6e 64 6f 77 3b 0a 20  |andle> window;. |
0008ce00  20 3c 69 63 6f 6e 5f 68  61 6e 64 6c 65 3e 20 20  | <icon_handle>  |
0008ce10  20 69 63 6f 6e 3b 0a 0a  20 20 69 6e 74 20 76 61  | icon;..  int va|
0008ce20  6c 75 65 3b 20 20 20 2f  2a 20 49 6e 74 65 72 6e  |lue;   /* Intern|
0008ce30  61 6c 20 73 6c 69 64 65  72 20 70 6f 73 69 74 69  |al slider positi|
0008ce40  6f 6e 20 2a 2f 0a 0a 20  20 73 74 72 75 63 74 0a  |on */..  struct.|
0008ce50  20 20 5c 7b 20 69 6e 74  20 20 20 20 20 20 20 20  |  \{ int        |
0008ce60  20 6d 69 6e 3b 0a 20 20  20 20 69 6e 74 20 20 20  | min;.    int   |
0008ce70  20 20 20 20 20 20 6d 61  78 3b 0a 20 20 7d 20 6c  |      max;.  } l|
0008ce80  69 6d 69 74 73 3b 20 20  20 20 2f 2a 20 56 61 6c  |imits;    /* Val|
0008ce90  75 65 73 20 72 65 74 75  72 6e 65 64 20 62 79 20  |ues returned by |
0008cea0  73 6c 69 64 65 72 20 2a  2f 0a 0a 20 20 73 74 72  |slider */..  str|
0008ceb0  75 63 74 0a 20 20 5c 7b  20 69 6e 74 20 66 6f 72  |uct.  \{ int for|
0008cec0  65 67 72 6f 75 6e 64 3b  0a 20 20 20 20 69 6e 74  |eground;.    int|
0008ced0  20 62 61 63 6b 67 72 6f  75 6e 64 3b 0a 20 20 7d  | background;.  }|
0008cee0  20 63 6f 6c 6f 75 72 3b  20 20 20 20 2f 2a 20 43  | colour;    /* C|
0008cef0  6f 6c 6f 75 72 73 20 6f  66 20 73 6c 69 64 65 72  |olours of slider|
0008cf00  20 2a 2f 0a 0a 20 20 73  74 72 75 63 74 0a 20 20  | */..  struct.  |
0008cf10  5c 7b 20 69 6e 74 20 78  3b 0a 20 20 20 20 69 6e  |\{ int x;.    in|
0008cf20  74 20 79 3b 0a 20 20 7d  20 62 6f 72 64 65 72 3b  |t y;.  } border;|
0008cf30  20 20 20 20 2f 2a 20 42  6f 72 64 65 72 20 73 69  |    /* Border si|
0008cf40  7a 65 20 2a 2f 0a 0a 20  20 73 74 72 75 63 74 0a  |ze */..  struct.|
0008cf50  20 20 5c 7b 20 3c 73 70  72 69 74 65 5f 61 72 65  |  \{ <sprite_are|
0008cf60  61 69 6e 66 6f 3e 20 2a  73 70 72 69 74 65 61 72  |ainfo> *spritear|
0008cf70  65 61 3b 20 2f 2a 20 3c  4e 55 4c 4c 3e 20 2a 2f  |ea; /* <NULL> */|
0008cf80  0a 20 20 20 20 3c 73 70  72 69 74 65 5f 68 65 61  |.    <sprite_hea|
0008cf90  64 65 72 3e 20 20 20 2a  73 70 72 69 74 65 3b 0a  |der>   *sprite;.|
0008cfa0  20 20 7d 20 6b 6e 6f 62  3b 20 20 20 20 20 20 2f  |  } knob;      /|
0008cfb0  2a 20 4e 6f 74 20 63 75  72 72 65 6e 74 6c 79 20  |* Not currently |
0008cfc0  75 73 65 64 20 2a 2f 0a  0a 20 20 73 74 72 75 63  |used */..  struc|
0008cfd0  74 0a 20 20 5c 7b 20 69  6e 74 20 20 76 65 72 74  |t.  \{ int  vert|
0008cfe0  69 63 61 6c 20 20 3a 31  3b 20 20 2f 2a 20 4f 72  |ical  :1;  /* Or|
0008cff0  69 65 6e 74 61 74 69 6f  6e 20 2a 2f 0a 20 20 20  |ientation */.   |
0008d000  20 69 6e 74 20 20 72 67  62 20 20 20 20 20 20 20  | int  rgb       |
0008d010  3a 31 3b 20 20 2f 2a 20  43 6f 6c 6f 75 72 73 20  |:1;  /* Colours |
0008d020  61 72 65 20 52 47 42 20  2a 2f 0a 20 20 20 20 69  |are RGB */.    i|
0008d030  6e 74 20 20 64 72 61 67  67 69 6e 67 20 20 3a 31  |nt  dragging  :1|
0008d040  3b 20 20 2f 2a 20 43 75  72 72 65 6e 74 6c 79 20  |;  /* Currently |
0008d050  64 72 61 67 67 69 6e 67  20 2a 2f 0a 20 20 20 20  |dragging */.    |
0008d060  69 6e 74 20 20 63 6c 69  63 6b 73 74 6f 70 20 3a  |int  clickstop :|
0008d070  31 3b 20 20 2f 2a 20 44  72 61 67 20 77 68 6f 6c  |1;  /* Drag whol|
0008d080  65 20 75 6e 69 74 73 20  2a 2f 0a 20 20 20 20 69  |e units */.    i|
0008d090  6e 74 20 20 72 65 73 65  72 76 65 64 20 20 3a 32  |nt  reserved  :2|
0008d0a0  38 3b 20 2f 2a 20 5a 65  72 6f 20 2a 2f 0a 20 20  |8; /* Zero */.  |
0008d0b0  7d 20 66 6c 61 67 73 3b  0a 0a 20 20 69 6e 74 20  |} flags;..  int |
0008d0c0  28 20 2a 75 70 64 61 74  65 20 29 28 20 76 6f 69  |( *update )( voi|
0008d0d0  64 20 2a 2c 20 76 6f 69  64 20 2a 20 29 3b 0a 20  |d *, void * );. |
0008d0e0  20 69 6e 74 20 72 65 66  65 72 65 6e 63 65 3b 20  | int reference; |
0008d0f0  20 20 20 20 20 20 20 2f  2a 20 57 68 61 74 65 76  |       /* Whatev|
0008d100  65 72 20 79 6f 75 20 6c  69 6b 65 20 2a 2f 0a 7d  |er you like */.}|
0008d110  0a 0a 49 66 20 2f 63 6c  69 63 6b 73 74 6f 70 2f  |..If /clickstop/|
0008d120  20 69 73 20 73 65 74 20  74 68 61 74 20 6d 65 61  | is set that mea|
0008d130  6e 73 20 74 68 61 74 20  74 68 65 20 73 6c 69 64  |ns that the slid|
0008d140  65 72 20 69 73 20 6f 6e  6c 79 20 72 65 64 72 61  |er is only redra|
0008d150  77 6e 20 77 68 65 6e 20  69 74 73 20 76 61 6c 75  |wn when its valu|
0008d160  65 20 69 6e 20 75 73 65  72 20 75 6e 69 74 73 20  |e in user units |
0008d170  28 69 65 20 62 65 74 77  65 65 6e 20 2f 6c 69 6d  |(ie between /lim|
0008d180  69 74 73 2f 29 20 63 68  61 6e 67 65 73 2e 20 4f  |its/) changes. O|
0008d190  74 68 65 72 77 69 73 65  2c 20 69 74 20 63 61 6e  |therwise, it can|
0008d1a0  20 62 65 20 64 72 61 67  67 65 64 20 61 20 70 69  | be dragged a pi|
0008d1b0  78 65 6c 20 61 74 20 61  20 74 69 6d 65 2e 0a 0a  |xel at a time...|
0008d1c0  2f 75 70 64 61 74 65 2f  20 69 73 20 61 20 66 75  |/update/ is a fu|
0008d1d0  6e 63 74 69 6f 6e 20 63  61 6c 6c 65 64 20 77 68  |nction called wh|
0008d1e0  65 6e 65 76 65 72 20 74  68 65 20 73 6c 69 64 65  |enever the slide|
0008d1f0  72 20 76 61 6c 75 65 20  69 6e 20 75 73 65 72 20  |r value in user |
0008d200  75 6e 69 74 73 20 63 68  61 6e 67 65 73 2e 20 49  |units changes. I|
0008d210  74 73 20 66 69 72 73 74  20 61 72 67 75 6d 65 6e  |ts first argumen|
0008d220  74 20 69 73 20 61 20 70  6f 69 6e 74 65 72 20 74  |t is a pointer t|
0008d230  6f 20 74 68 65 20 73 6c  69 64 65 72 5f 69 6e 66  |o the slider_inf|
0008d240  6f 20 73 74 72 75 63 74  75 72 65 2e 20 54 68 65  |o structure. The|
0008d250  20 73 65 63 6f 6e 64 20  61 72 67 75 6d 65 6e 74  | second argument|
0008d260  20 69 73 20 70 61 73 73  65 64 20 74 68 72 6f 75  | is passed throu|
0008d270  67 68 20 66 72 6f 6d 20  3c 53 6c 69 64 65 72 5f  |gh from <Slider_|
0008d280  53 65 74 56 61 6c 75 65  3e 20 6f 72 20 3c 53 6c  |SetValue> or <Sl|
0008d290  69 64 65 72 5f 44 72 61  67 3e 2e 20 49 74 20 73  |ider_Drag>. It s|
0008d2a0  68 6f 75 6c 64 20 72 65  74 75 72 6e 20 6e 6f 6e  |hould return non|
0008d2b0  2d 7a 65 72 6f 20 74 6f  20 73 74 6f 70 20 74 68  |-zero to stop th|
0008d2c0  65 20 64 72 61 67 2e 00  44 41 54 41 2b 01 00 00  |e drag..DATA+...|
0008d2d0  53 6c 69 64 65 72 5f 52  65 61 64 56 61 6c 75 65  |Slider_ReadValue|
0008d2e0  0a 53 79 6e 74 61 78 3a  09 69 6e 74 20 53 6c 69  |.Syntax:.int Sli|
0008d2f0  64 65 72 5f 52 65 61 64  56 61 6c 75 65 20 28 3c  |der_ReadValue (<|
0008d300  73 6c 69 64 65 72 5f 69  6e 66 6f 3e 20 2a 73 6c  |slider_info> *sl|
0008d310  69 64 65 72 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |ider);.Header:.<|
0008d320  44 65 73 6b 4c 69 62 3a  53 6c 69 64 65 72 2e 68  |DeskLib:Slider.h|
0008d330  3d 3e 53 6c 69 64 65 72  3e 0a 0a 52 65 74 75 72  |=>Slider>..Retur|
0008d340  6e 73 3a 09 53 6c 69 64  65 72 20 76 61 6c 75 65  |ns:.Slider value|
0008d350  20 69 6e 20 75 73 65 72  20 75 6e 69 74 73 2e 0a  | in user units..|
0008d360  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
0008d370  65 61 64 73 20 74 68 65  20 70 6f 73 69 74 69 6f  |eads the positio|
0008d380  6e 20 6f 66 20 74 68 65  20 73 70 65 63 69 66 69  |n of the specifi|
0008d390  65 64 20 73 6c 69 64 65  72 2c 20 63 6f 6e 76 65  |ed slider, conve|
0008d3a0  72 74 65 64 20 69 6e 74  6f 20 75 73 65 72 20 75  |rted into user u|
0008d3b0  6e 69 74 73 20 62 65 74  77 65 65 6e 20 7b 2f 7d  |nits between {/}|
0008d3c0  73 6c 69 64 65 72 2d 3e  6c 69 6d 69 74 73 2e 6d  |slider->limits.m|
0008d3d0  69 6e 7b 2f 7d 20 61 6e  64 20 7b 2f 7d 73 6c 69  |in{/} and {/}sli|
0008d3e0  64 65 72 2d 3e 6c 69 6d  69 74 73 2e 6d 61 78 7b  |der->limits.max{|
0008d3f0  2f 7d 2e 00 44 41 54 41  6c 01 00 00 53 6c 69 64  |/}..DATAl...Slid|
0008d400  65 72 5f 52 65 64 72 61  77 0a 53 79 6e 74 61 78  |er_Redraw.Syntax|
0008d410  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 53 6c  |:.<os_error> *Sl|
0008d420  69 64 65 72 5f 52 65 64  72 61 77 20 28 3c 73 6c  |ider_Redraw (<sl|
0008d430  69 64 65 72 5f 69 6e 66  6f 3e 20 2a 73 6c 69 64  |ider_info> *slid|
0008d440  65 72 2c 20 3c 77 69 6d  70 5f 72 65 63 74 3e 20  |er, <wimp_rect> |
0008d450  2a 63 6c 69 70 29 3b 0a  48 65 61 64 65 72 3a 09  |*clip);.Header:.|
0008d460  3c 44 65 73 6b 4c 69 62  3a 53 6c 69 64 65 72 2e  |<DeskLib:Slider.|
0008d470  68 3d 3e 53 6c 69 64 65  72 3e 0a 0a 52 65 74 75  |h=>Slider>..Retu|
0008d480  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
0008d490  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
0008d4a0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
0008d4b0  66 75 6e 63 74 69 6f 6e  20 72 65 64 72 61 77 73  |function redraws|
0008d4c0  20 61 20 73 6c 69 64 65  72 20 69 63 6f 6e 2e 20  | a slider icon. |
0008d4d0  2f 73 6c 69 64 65 72 2f  20 63 6f 6e 74 61 69 6e  |/slider/ contain|
0008d4e0  73 20 74 68 65 20 73 6c  69 64 65 72 20 69 6e 66  |s the slider inf|
0008d4f0  6f 20 61 6e 64 20 2f 63  6c 69 70 2f 20 63 6f 6e  |o and /clip/ con|
0008d500  74 61 69 6e 73 20 74 68  65 20 61 72 65 61 20 6f  |tains the area o|
0008d510  66 20 73 63 72 65 65 6e  20 62 65 69 6e 67 20 72  |f screen being r|
0008d520  65 64 72 61 77 6e 20 28  69 6e 20 4f 53 20 63 6f  |edrawn (in OS co|
0008d530  6f 72 64 73 29 2e 20 43  61 6c 6c 20 74 68 69 73  |ords). Call this|
0008d540  20 66 75 6e 63 74 69 6f  6e 20 66 72 6f 6d 20 79  | function from y|
0008d550  6f 75 72 20 72 65 64 72  61 77 20 6c 6f 6f 70 2e  |our redraw loop.|
0008d560  44 41 54 41 2b 02 00 00  53 6c 69 64 65 72 5f 53  |DATA+...Slider_S|
0008d570  65 74 56 61 6c 75 65 0a  53 79 6e 74 61 78 3a 09  |etValue.Syntax:.|
0008d580  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 53 6c 69 64  |<os_error> *Slid|
0008d590  65 72 5f 53 65 74 56 61  6c 75 65 20 28 3c 73 6c  |er_SetValue (<sl|
0008d5a0  69 64 65 72 5f 69 6e 66  6f 3e 20 2a 73 6c 69 64  |ider_info> *slid|
0008d5b0  65 72 2c 20 69 6e 74 20  76 61 6c 75 65 2c 20 69  |er, int value, i|
0008d5c0  6e 74 20 2a 76 61 6c 75  65 73 65 74 2c 20 76 6f  |nt *valueset, vo|
0008d5d0  69 64 20 2a 72 65 66 29  3b 0a 48 65 61 64 65 72  |id *ref);.Header|
0008d5e0  3a 09 3c 44 65 73 6b 4c  69 62 3a 53 6c 69 64 65  |:.<DeskLib:Slide|
0008d5f0  72 2e 68 3d 3e 53 6c 69  64 65 72 3e 0a 0a 52 65  |r.h=>Slider>..Re|
0008d600  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
0008d610  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
0008d620  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
0008d630  73 20 66 75 6e 63 74 69  6f 6e 20 73 65 74 73 20  |s function sets |
0008d640  2f 73 6c 69 64 65 72 2f  20 74 6f 20 2f 76 61 6c  |/slider/ to /val|
0008d650  75 65 2f 20 28 69 6e 20  75 73 65 72 20 75 6e 69  |ue/ (in user uni|
0008d660  74 73 29 2e 20 49 66 20  74 68 65 20 73 6c 69 64  |ts). If the slid|
0008d670  65 72 20 69 73 20 63 75  72 72 65 6e 74 6c 79 20  |er is currently |
0008d680  62 65 69 6e 67 20 64 72  61 67 67 65 64 2c 20 74  |being dragged, t|
0008d690  68 65 6e 20 74 68 65 20  66 75 6e 63 74 69 6f 6e  |hen the function|
0008d6a0  20 64 6f 65 73 20 6e 6f  74 68 69 6e 67 2e 20 54  | does nothing. T|
0008d6b0  68 65 20 75 70 64 61 74  65 20 66 75 6e 63 74 69  |he update functi|
0008d6c0  6f 6e 20 77 69 6c 6c 20  62 65 20 63 61 6c 6c 65  |on will be calle|
0008d6d0  64 20 28 77 69 74 68 20  2f 72 65 66 2f 29 20 69  |d (with /ref/) i|
0008d6e0  66 20 74 68 65 20 76 61  6c 75 65 20 68 61 73 20  |f the value has |
0008d6f0  63 68 61 6e 67 65 64 2e  20 49 66 20 2f 76 61 6c  |changed. If /val|
0008d700  75 65 2f 20 69 73 20 6f  75 74 73 69 64 65 20 74  |ue/ is outside t|
0008d710  68 65 20 6c 69 6d 69 74  73 20 74 68 65 6e 20 69  |he limits then i|
0008d720  74 20 77 69 6c 6c 20 62  65 20 63 6c 61 6d 70 65  |t will be clampe|
0008d730  64 20 74 6f 20 74 68 65  6d 2e 20 49 66 20 2f 76  |d to them. If /v|
0008d740  61 6c 75 65 73 65 74 2f  20 69 73 20 6e 6f 74 20  |alueset/ is not |
0008d750  3c 4e 55 4c 4c 3e 20 74  68 65 6e 20 69 74 20 74  |<NULL> then it t|
0008d760  68 65 20 61 63 74 75 61  6c 20 76 61 6c 75 65 20  |he actual value |
0008d770  73 65 74 20 77 69 6c 6c  20 62 65 20 72 65 74 75  |set will be retu|
0008d780  72 6e 65 64 20 69 6e 20  69 74 2e 00 44 49 52 24  |rned in it..DIR$|
0008d790  10 01 00 00 10 01 00 00  9c d8 08 00 46 fd ff ff  |............F...|
0008d7a0  09 22 de 22 56 00 00 00  13 00 00 00 00 00 00 00  |."."V...........|
0008d7b0  61 72 69 74 68 5f 00 00  f4 d8 08 00 46 fd ff ff  |arith_......F...|
0008d7c0  48 f5 dd 22 ed 00 00 00  13 00 00 00 00 00 00 00  |H.."............|
0008d7d0  64 61 74 61 5f 00 00 00  e4 d9 08 00 46 fd ff ff  |data_.......F...|
0008d7e0  68 6f dd 22 6f 00 00 00  13 00 00 00 00 00 00 00  |ho."o...........|
0008d7f0  65 6e 76 5f 00 00 00 00  54 da 08 00 46 fd ff ff  |env_....T...F...|
0008d800  0e cb de 22 df 02 00 00  13 00 00 00 00 00 00 00  |..."............|
0008d810  6d 62 63 68 61 72 5f 00  34 dd 08 00 46 fd ff ff  |mbchar_.4...F...|
0008d820  ad cf de 22 58 00 00 00  13 00 00 00 00 00 00 00  |..."X...........|
0008d830  6d 62 73 74 72 5f 00 00  8c dd 08 00 46 fd ff ff  |mbstr_......F...|
0008d840  43 62 c5 22 51 01 00 00  13 00 00 00 00 00 00 00  |Cb."Q...........|
0008d850  6d 65 6d 5f 00 00 00 00  e0 de 08 00 46 fd ff ff  |mem_........F...|
0008d860  1c 44 c5 22 a0 00 00 00  13 00 00 00 00 00 00 00  |.D."............|
0008d870  72 61 6e 64 5f 00 00 00  80 df 08 00 46 fd ff ff  |rand_.......F...|
0008d880  74 0c b6 22 74 00 00 00  13 00 00 00 00 00 00 00  |t.."t...........|
0008d890  73 74 72 63 6f 6e 76 5f  00 00 00 00 44 41 54 41  |strconv_....DATA|
0008d8a0  56 00 00 00 41 72 69 74  68 6d 65 74 69 63 20 46  |V...Arithmetic F|
0008d8b0  75 6e 63 74 69 6f 6e 73  0a 23 49 6e 64 65 6e 74  |unctions.#Indent|
0008d8c0  20 38 0a 23 54 61 62 6c  65 20 32 20 31 30 0a 3c  | 8.#Table 2 10.<|
0008d8d0  61 62 73 3e 0a 3c 64 69  76 3e 0a 3c 6c 61 62 73  |abs>.<div>.<labs|
0008d8e0  3e 0a 3c 6c 64 69 76 3e  0a 23 45 6e 64 54 61 62  |>.<ldiv>.#EndTab|
0008d8f0  6c 65 00 00 44 41 54 41  ed 00 00 00 44 61 74 61  |le..DATA....Data|
0008d900  20 50 72 6f 63 65 73 73  69 6e 67 20 46 75 6e 63  | Processing Func|
0008d910  74 69 6f 6e 73 0a 54 68  65 73 65 20 66 75 6e 63  |tions.These func|
0008d920  74 69 6f 6e 73 20 77 6f  72 6b 20 6f 6e 20 61 72  |tions work on ar|
0008d930  72 61 79 73 20 6f 66 20  6f 62 6a 65 63 74 73 20  |rays of objects |
0008d940  77 68 6f 73 65 20 73 69  7a 65 20 69 73 20 67 69  |whose size is gi|
0008d950  76 65 6e 2e 20 54 68 65  79 20 62 6f 74 68 20 72  |ven. They both r|
0008d960  65 71 75 69 72 65 20 61  6e 20 65 78 74 65 72 6e  |equire an extern|
0008d970  61 6c 20 66 75 6e 63 74  69 6f 6e 20 28 64 65 66  |al function (def|
0008d980  69 6e 65 64 20 62 79 20  79 6f 75 29 20 77 68 69  |ined by you) whi|
0008d990  63 68 20 68 61 6e 64 6c  65 73 20 63 6f 6d 70 61  |ch handles compa|
0008d9a0  72 69 6e 67 20 74 68 65  20 6f 62 6a 65 63 74 73  |ring the objects|
0008d9b0  2e 0a 0a 23 49 6e 64 65  6e 74 20 37 0a 23 54 61  |...#Indent 7.#Ta|
0008d9c0  62 6c 65 20 31 0a 3c 62  73 65 61 72 63 68 3e 0a  |ble 1.<bsearch>.|
0008d9d0  3c 71 73 6f 72 74 3e 0a  23 45 6e 64 54 61 62 6c  |<qsort>.#EndTabl|
0008d9e0  65 00 00 00 44 41 54 41  6f 00 00 00 45 6e 76 69  |e...DATAo...Envi|
0008d9f0  72 6f 6e 6d 65 6e 74 20  4d 61 6e 61 67 65 6d 65  |ronment Manageme|
0008da00  6e 74 20 46 75 6e 63 74  69 6f 6e 73 0a 23 49 6e  |nt Functions.#In|
0008da10  64 65 6e 74 20 34 0a 23  54 61 62 6c 65 20 31 0a  |dent 4.#Table 1.|
0008da20  3c 61 62 6f 72 74 3e 0a  3c 61 74 65 78 69 74 3e  |<abort>.<atexit>|
0008da30  0a 3c 65 78 69 74 3e 0a  3c 67 65 74 65 6e 76 3e  |.<exit>.<getenv>|
0008da40  0a 3c 73 79 73 74 65 6d  3e 0a 23 45 6e 64 54 61  |.<system>.#EndTa|
0008da50  62 6c 65 00 44 41 54 41  df 02 00 00 4d 75 6c 74  |ble.DATA....Mult|
0008da60  69 62 79 74 65 20 43 68  61 72 61 63 74 65 72 20  |ibyte Character |
0008da70  46 75 6e 63 74 69 6f 6e  73 0a 23 69 6e 64 65 6e  |Functions.#inden|
0008da80  74 20 31 33 0a 23 54 61  62 6c 65 20 31 20 31 30  |t 13.#Table 1 10|
0008da90  0a 3c 6d 62 6c 65 6e 3e  0a 3c 6d 62 74 6f 77 63  |.<mblen>.<mbtowc|
0008daa0  3e 0a 3c 77 63 74 6f 6d  62 3e 0a 23 45 6e 64 54  |>.<wctomb>.#EndT|
0008dab0  61 62 6c 65 0a 23 69 6e  64 65 6e 74 20 30 0a 0a  |able.#indent 0..|
0008dac0  54 68 65 20 62 65 68 61  76 69 6f 75 72 20 6f 66  |The behaviour of|
0008dad0  20 74 68 65 20 6d 75 6c  74 69 62 79 74 65 20 63  | the multibyte c|
0008dae0  68 61 72 61 63 74 65 72  20 66 75 6e 63 74 69 6f  |haracter functio|
0008daf0  6e 73 20 69 73 20 61 66  66 65 63 74 65 64 20 62  |ns is affected b|
0008db00  79 20 74 68 65 20 3c 4c  43 5f 43 54 59 50 45 3e  |y the <LC_CTYPE>|
0008db10  20 63 61 74 65 67 6f 72  79 20 6f 66 20 74 68 65  | category of the|
0008db20  20 63 75 72 72 65 6e 74  20 6c 6f 63 61 6c 65 2e  | current locale.|
0008db30  20 46 6f 72 20 61 20 73  74 61 74 65 2d 64 65 70  | For a state-dep|
0008db40  65 6e 64 65 6e 74 20 65  6e 63 6f 64 69 6e 67 2c  |endent encoding,|
0008db50  20 65 61 63 68 20 66 75  6e 63 74 69 6f 6e 20 69  | each function i|
0008db60  73 20 70 6c 61 63 65 64  20 69 6e 74 6f 20 69 74  |s placed into it|
0008db70  73 20 69 6e 69 74 69 61  6c 20 73 74 61 74 65 20  |s initial state |
0008db80  62 79 20 61 20 63 61 6c  6c 20 66 6f 72 20 77 68  |by a call for wh|
0008db90  69 63 68 20 69 74 73 20  63 68 61 72 61 63 74 65  |ich its characte|
0008dba0  72 20 70 6f 69 6e 74 65  72 20 61 72 67 75 6d 65  |r pointer argume|
0008dbb0  6e 74 2c 20 2f 73 2f 2c  20 69 73 20 61 20 6e 75  |nt, /s/, is a nu|
0008dbc0  6c 6c 20 70 6f 69 6e 74  65 72 2e 20 53 75 62 73  |ll pointer. Subs|
0008dbd0  65 71 75 65 6e 74 20 63  61 6c 6c 73 20 77 69 74  |equent calls wit|
0008dbe0  68 20 2f 73 2f 20 61 73  20 6f 74 68 65 72 20 74  |h /s/ as other t|
0008dbf0  68 61 6e 20 61 20 6e 75  6c 6c 20 70 6f 69 6e 74  |han a null point|
0008dc00  65 72 20 63 61 75 73 65  20 74 68 65 20 69 6e 74  |er cause the int|
0008dc10  65 72 6e 61 6c 20 73 74  61 74 65 20 6f 66 20 74  |ernal state of t|
0008dc20  68 65 20 66 75 6e 63 74  69 6f 6e 20 74 6f 20 62  |he function to b|
0008dc30  65 20 61 6c 74 65 72 65  64 20 61 73 20 6e 65 63  |e altered as nec|
0008dc40  65 73 73 61 72 79 2e 20  41 20 63 61 6c 6c 20 77  |essary. A call w|
0008dc50  69 74 68 20 2f 73 2f 20  61 73 20 61 20 6e 75 6c  |ith /s/ as a nul|
0008dc60  6c 20 70 6f 69 6e 74 65  72 20 63 61 75 73 65 73  |l pointer causes|
0008dc70  20 74 68 65 73 65 20 66  75 6e 63 74 69 6f 6e 73  | these functions|
0008dc80  20 74 6f 20 72 65 74 75  72 6e 20 61 20 6e 6f 6e  | to return a non|
0008dc90  2d 7a 65 72 6f 20 76 61  6c 75 65 20 69 66 20 65  |-zero value if e|
0008dca0  6e 63 6f 64 69 6e 67 20  68 61 76 65 20 73 74 61  |ncoding have sta|
0008dcb0  74 65 20 64 65 70 65 6e  64 65 6e 63 79 2c 20 61  |te dependency, a|
0008dcc0  6e 64 20 61 20 7a 65 72  6f 20 6f 74 68 65 72 77  |nd a zero otherw|
0008dcd0  69 73 65 2e 20 41 66 74  65 72 20 74 68 65 20 3c  |ise. After the <|
0008dce0  4c 43 5f 43 54 59 50 45  3e 20 63 61 74 65 67 6f  |LC_CTYPE> catego|
0008dcf0  72 79 20 69 73 20 63 68  61 6e 67 65 64 2c 20 74  |ry is changed, t|
0008dd00  68 65 20 73 68 69 66 74  20 73 74 61 74 65 20 6f  |he shift state o|
0008dd10  66 20 74 68 65 73 65 20  66 75 6e 63 74 69 6f 6e  |f these function|
0008dd20  73 20 69 73 20 69 6e 64  65 74 65 72 6d 69 6e 61  |s is indetermina|
0008dd30  74 65 2e 00 44 41 54 41  58 00 00 00 4d 75 6c 74  |te..DATAX...Mult|
0008dd40  69 62 79 74 65 20 53 74  72 69 6e 67 20 46 75 6e  |ibyte String Fun|
0008dd50  63 74 69 6f 6e 73 0a 23  69 6e 64 65 6e 74 20 36  |ctions.#indent 6|
0008dd60  0a 23 54 61 62 6c 65 20  31 20 31 32 0a 3c 6d 62  |.#Table 1 12.<mb|
0008dd70  73 74 6f 77 63 73 3e 0a  3c 77 63 73 74 6f 6d 62  |stowcs>.<wcstomb|
0008dd80  73 3e 0a 23 45 6e 64 54  61 62 6c 65 44 41 54 41  |s>.#EndTableDATA|
0008dd90  51 01 00 00 4d 65 6d 6f  72 79 20 4d 61 6e 61 67  |Q...Memory Manag|
0008dda0  65 6d 65 6e 74 20 46 75  6e 63 74 69 6f 6e 73 0a  |ement Functions.|
0008ddb0  54 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 66 75  |The following fu|
0008ddc0  6e 63 74 69 6f 6e 73 20  61 72 65 20 75 73 65 64  |nctions are used|
0008ddd0  20 66 6f 72 20 61 6c 6c  6f 63 61 74 69 6e 67 20  | for allocating |
0008dde0  73 74 6f 72 61 67 65 20  73 70 61 63 65 20 66 6f  |storage space fo|
0008ddf0  72 20 64 61 74 61 2e 20  54 68 65 20 66 75 6e 63  |r data. The func|
0008de00  74 69 6f 6e 73 20 63 61  6e 20 62 65 20 63 61 73  |tions can be cas|
0008de10  74 20 74 6f 20 72 65 74  75 72 6e 20 61 6e 79 20  |t to return any |
0008de20  74 79 70 65 20 6f 66 20  70 6f 69 6e 74 65 72 2e  |type of pointer.|
0008de30  20 4e 6f 20 63 68 65 63  6b 69 6e 67 20 69 73 20  | No checking is |
0008de40  64 6f 6e 65 20 77 68 65  6e 20 73 74 6f 72 69 6e  |done when storin|
0008de50  67 20 64 61 74 61 20 69  6e 20 74 68 65 20 73 70  |g data in the sp|
0008de60  61 63 65 20 73 6f 20 6d  61 6b 65 20 73 75 72 65  |ace so make sure|
0008de70  20 79 6f 75 20 6f 6e 6c  79 20 73 74 6f 72 65 20  | you only store |
0008de80  64 61 74 61 20 69 6e 20  61 6c 6c 6f 63 61 74 65  |data in allocate|
0008de90  64 20 73 70 61 63 65 21  0a 0a 23 49 6e 64 65 6e  |d space!..#Inden|
0008dea0  74 20 31 31 0a 23 54 61  62 6c 65 20 32 20 31 35  |t 11.#Table 2 15|
0008deb0  0a 3c 63 61 6c 6c 6f 63  3e 0a 3c 66 72 65 65 3e  |.<calloc>.<free>|
0008dec0  0a 3c 6d 61 6c 6c 6f 63  3e 0a 3c 72 65 61 6c 6c  |.<malloc>.<reall|
0008ded0  6f 63 3e 0a 23 45 6e 64  54 61 62 6c 65 00 00 00  |oc>.#EndTable...|
0008dee0  44 41 54 41 a0 00 00 00  52 61 6e 64 6f 6d 20 4e  |DATA....Random N|
0008def0  75 6d 62 65 72 20 46 75  6e 63 74 69 6f 6e 73 0a  |umber Functions.|
0008df00  54 68 65 73 65 20 66 75  6e 63 74 69 6f 6e 73 20  |These functions |
0008df10  61 72 65 20 63 6f 6e 63  65 72 6e 65 64 20 77 69  |are concerned wi|
0008df20  74 68 20 67 65 6e 65 72  61 74 69 6e 67 0a 70 73  |th generating.ps|
0008df30  75 65 64 6f 2d 72 61 6e  64 6f 6d 20 73 65 71 75  |uedo-random sequ|
0008df40  65 6e 63 65 73 20 6f 66  20 76 61 6c 75 65 73 2e  |ences of values.|
0008df50  0a 0a 23 49 6e 64 65 6e  74 20 36 0a 23 54 61 62  |..#Indent 6.#Tab|
0008df60  6c 65 20 31 20 31 35 0a  3c 72 61 6e 64 3e 0a 3c  |le 1 15.<rand>.<|
0008df70  73 72 61 6e 64 3e 0a 23  45 6e 64 54 61 62 6c 65  |srand>.#EndTable|
0008df80  44 41 54 41 74 00 00 00  53 74 72 69 6e 67 20 43  |DATAt...String C|
0008df90  6f 6e 76 65 72 73 69 6f  6e 20 46 75 6e 63 74 69  |onversion Functi|
0008dfa0  6f 6e 73 0a 23 49 6e 64  65 6e 74 20 36 0a 23 54  |ons.#Indent 6.#T|
0008dfb0  61 62 6c 65 20 33 20 31  32 0a 3c 61 74 6f 66 3e  |able 3 12.<atof>|
0008dfc0  0a 3c 61 74 6f 69 3e 0a  3c 61 74 6f 6c 3e 0a 3c  |.<atoi>.<atol>.<|
0008dfd0  73 74 72 74 6f 64 3e 0a  3c 73 74 72 74 6f 6c 3e  |strtod>.<strtol>|
0008dfe0  0a 3c 73 74 72 74 6f 75  6c 3e 0a 23 45 6e 64 54  |.<strtoul>.#EndT|
0008dff0  61 62 6c 65 44 41 54 41  80 00 00 00 44 65 73 6b  |ableDATA....Desk|
0008e000  4c 69 62 3a 53 6f 75 6e  64 2e 68 0a 56 65 72 73  |Lib:Sound.h.Vers|
0008e010  69 6f 6e 3a 20 30 2e 30  31 20 28 32 38 20 4d 61  |ion: 0.01 (28 Ma|
0008e020  72 20 31 39 39 33 29 0a  23 6c 69 6e 65 0a 54 68  |r 1993).#line.Th|
0008e030  69 73 20 68 65 61 64 65  72 20 64 65 63 6c 61 72  |is header declar|
0008e040  65 73 20 6a 75 73 74 20  6f 6e 65 20 66 75 6e 63  |es just one func|
0008e050  74 69 6f 6e 3a 0a 0a 7b  61 6c 69 67 6e 20 63 65  |tion:..{align ce|
0008e060  6e 74 72 65 7d 3c 53 6f  75 6e 64 5f 53 79 73 42  |ntre}<Sound_SysB|
0008e070  65 65 70 3e 44 49 52 24  4c 00 00 00 4c 00 00 00  |eep>DIR$L...L...|
0008e080  c0 e0 08 00 46 fd ff ff  ab 0b f3 22 ba 04 00 00  |....F......"....|
0008e090  13 00 00 00 00 00 00 00  70 69 74 63 68 5f 00 00  |........pitch_..|
0008e0a0  7c e5 08 00 46 ff ff ff  5c fe b3 25 88 00 00 00  ||...F...\..%....|
0008e0b0  13 00 00 00 00 00 00 00  53 79 73 42 65 65 70 00  |........SysBeep.|
0008e0c0  44 41 54 41 ba 04 00 00  50 69 74 63 68 20 56 61  |DATA....Pitch Va|
0008e0d0  6c 75 65 73 0a 4f 63 74  61 76 65 09 30 09 31 09  |lues.Octave.0.1.|
0008e0e0  32 09 33 09 34 09 35 09  36 09 37 09 38 0a 4e 6f  |2.3.4.5.6.7.8.No|
0008e0f0  74 65 0a 0a 41 09 20 09  30 78 30 43 30 30 09 30  |te..A. .0x0C00.0|
0008e100  78 31 43 30 30 09 30 78  32 43 30 30 09 30 78 33  |x1C00.0x2C00.0x3|
0008e110  43 30 30 09 30 78 34 43  30 30 09 30 78 35 43 30  |C00.0x4C00.0x5C0|
0008e120  30 09 30 78 36 43 30 30  09 30 78 37 43 30 30 0a  |0.0x6C00.0x7C00.|
0008e130  09 20 09 20 09 20 09 20  09 30 78 32 39 09 30 78  |. . . . .0x29.0x|
0008e140  35 39 09 30 78 38 39 09  30 78 42 39 09 30 78 45  |59.0x89.0xB9.0xE|
0008e150  39 0a 41 23 09 20 09 30  78 30 44 35 35 09 30 78  |9.A#. .0x0D55.0x|
0008e160  31 44 35 35 09 30 78 32  44 35 35 09 30 78 33 44  |1D55.0x2D55.0x3D|
0008e170  35 35 09 30 78 34 44 35  35 09 30 78 35 44 35 35  |55.0x4D55.0x5D55|
0008e180  09 30 78 36 44 35 35 09  30 78 37 44 35 35 0a 09  |.0x6D55.0x7D55..|
0008e190  20 09 20 09 20 09 20 09  30 78 32 44 09 30 78 35  | . . . .0x2D.0x5|
0008e1a0  44 09 30 78 38 44 09 30  78 42 44 09 30 78 45 44  |D.0x8D.0xBD.0xED|
0008e1b0  0a 42 09 20 09 30 78 30  45 41 41 09 30 78 31 45  |.B. .0x0EAA.0x1E|
0008e1c0  41 41 09 30 78 32 45 41  41 09 30 78 33 45 41 41  |AA.0x2EAA.0x3EAA|
0008e1d0  09 30 78 34 45 41 41 09  30 78 35 45 41 41 09 30  |.0x4EAA.0x5EAA.0|
0008e1e0  78 36 45 41 41 09 30 78  37 45 41 41 0a 09 20 09  |x6EAA.0x7EAA.. .|
0008e1f0  20 09 20 09 30 78 30 31  09 30 78 33 31 09 30 78  | . .0x01.0x31.0x|
0008e200  36 31 09 30 78 39 31 09  30 78 43 31 09 30 78 46  |61.0x91.0xC1.0xF|
0008e210  31 0a 43 09 20 09 30 78  31 30 30 30 09 30 78 32  |1.C. .0x1000.0x2|
0008e220  30 30 30 09 30 78 33 30  30 30 09 30 78 34 30 30  |000.0x3000.0x400|
0008e230  30 09 30 78 35 30 30 30  09 30 78 36 30 30 30 09  |0.0x5000.0x6000.|
0008e240  30 78 37 30 30 30 0a 09  20 09 20 09 20 09 30 78  |0x7000.. . . .0x|
0008e250  30 35 09 30 78 33 35 09  30 78 36 35 09 30 78 39  |05.0x35.0x65.0x9|
0008e260  35 09 30 78 43 35 09 30  78 46 35 0a 43 23 09 30  |5.0xC5.0xF5.C#.0|
0008e270  78 30 31 35 35 09 30 78  31 31 35 35 09 30 78 32  |x0155.0x1155.0x2|
0008e280  31 35 35 09 30 78 33 31  35 35 09 30 78 34 31 35  |155.0x3155.0x415|
0008e290  35 09 30 78 35 31 35 35  09 30 78 36 31 35 35 09  |5.0x5155.0x6155.|
0008e2a0  30 78 37 31 35 35 0a 09  20 09 20 09 20 09 30 78  |0x7155.. . . .0x|
0008e2b0  30 39 09 30 78 33 39 09  30 78 36 39 09 30 78 39  |09.0x39.0x69.0x9|
0008e2c0  39 09 30 78 43 39 09 30  78 46 39 0a 44 09 30 78  |9.0xC9.0xF9.D.0x|
0008e2d0  30 32 41 41 09 30 78 31  32 41 41 09 30 78 32 32  |02AA.0x12AA.0x22|
0008e2e0  41 41 09 30 78 33 32 41  41 09 30 78 34 32 41 41  |AA.0x32AA.0x42AA|
0008e2f0  09 30 78 35 32 41 41 09  30 78 36 32 41 41 09 30  |.0x52AA.0x62AA.0|
0008e300  78 37 32 41 41 0a 09 20  09 20 09 20 09 30 78 30  |x72AA.. . . .0x0|
0008e310  44 09 30 78 33 44 09 30  78 36 44 09 30 78 39 44  |D.0x3D.0x6D.0x9D|
0008e320  09 30 78 43 44 09 30 78  46 44 0a 44 23 09 30 78  |.0xCD.0xFD.D#.0x|
0008e330  30 34 30 30 09 30 78 31  34 30 30 09 30 78 32 34  |0400.0x1400.0x24|
0008e340  30 30 09 30 78 33 34 30  30 09 30 78 34 34 30 30  |00.0x3400.0x4400|
0008e350  09 30 78 35 34 30 30 09  30 78 36 34 30 30 09 30  |.0x5400.0x6400.0|
0008e360  78 37 34 30 30 0a 09 20  09 20 09 20 09 30 78 31  |x7400.. . . .0x1|
0008e370  31 09 30 78 34 31 09 30  78 37 31 09 30 78 41 31  |1.0x41.0x71.0xA1|
0008e380  09 30 78 44 31 0a 45 09  30 78 30 35 35 35 09 30  |.0xD1.E.0x0555.0|
0008e390  78 31 35 35 35 09 30 78  32 35 35 35 09 30 78 33  |x1555.0x2555.0x3|
0008e3a0  35 35 35 09 30 78 34 35  35 35 09 30 78 35 35 35  |555.0x4555.0x555|
0008e3b0  35 09 30 78 36 35 35 35  09 30 78 37 35 35 35 0a  |5.0x6555.0x7555.|
0008e3c0  09 20 09 20 09 20 09 30  78 31 35 09 30 78 34 35  |. . . .0x15.0x45|
0008e3d0  09 30 78 37 35 09 30 78  41 35 09 30 78 44 35 0a  |.0x75.0xA5.0xD5.|
0008e3e0  46 09 30 78 30 36 41 41  09 30 78 31 36 41 41 09  |F.0x06AA.0x16AA.|
0008e3f0  30 78 32 36 41 41 09 30  78 33 36 41 41 09 30 78  |0x26AA.0x36AA.0x|
0008e400  34 36 41 41 09 30 78 35  36 41 41 09 30 78 36 36  |46AA.0x56AA.0x66|
0008e410  41 41 09 30 78 37 36 41  41 0a 09 20 09 20 09 20  |AA.0x76AA.. . . |
0008e420  09 30 78 31 39 09 30 78  34 39 09 30 78 37 39 09  |.0x19.0x49.0x79.|
0008e430  30 78 41 39 09 30 78 44  39 0a 46 23 09 30 78 30  |0xA9.0xD9.F#.0x0|
0008e440  38 30 30 09 30 78 31 38  30 30 09 30 78 32 38 30  |800.0x1800.0x280|
0008e450  30 09 30 78 33 38 30 30  09 30 78 34 38 30 30 09  |0.0x3800.0x4800.|
0008e460  30 78 35 38 30 30 09 30  78 36 38 30 30 09 30 78  |0x5800.0x6800.0x|
0008e470  37 38 30 30 0a 09 20 09  20 09 20 09 30 78 31 44  |7800.. . . .0x1D|
0008e480  09 30 78 34 44 09 30 78  37 44 09 30 78 41 44 09  |.0x4D.0x7D.0xAD.|
0008e490  30 78 44 44 0a 47 09 30  78 30 39 35 35 09 30 78  |0xDD.G.0x0955.0x|
0008e4a0  31 39 35 35 09 30 78 32  39 35 35 09 30 78 33 39  |1955.0x2955.0x39|
0008e4b0  35 35 09 30 78 34 39 35  35 09 30 78 35 39 35 35  |55.0x4955.0x5955|
0008e4c0  09 30 78 36 39 35 35 09  30 78 37 39 35 35 0a 09  |.0x6955.0x7955..|
0008e4d0  20 09 20 09 20 09 30 78  32 31 09 30 78 35 31 09  | . . .0x21.0x51.|
0008e4e0  30 78 38 31 09 30 78 42  31 09 30 78 45 31 0a 47  |0x81.0xB1.0xE1.G|
0008e4f0  23 09 30 78 30 41 41 41  09 30 78 31 41 41 41 09  |#.0x0AAA.0x1AAA.|
0008e500  30 78 32 41 41 41 09 30  78 33 41 41 41 09 30 78  |0x2AAA.0x3AAA.0x|
0008e510  34 41 41 41 09 30 78 35  41 41 41 09 30 78 36 41  |4AAA.0x5AAA.0x6A|
0008e520  41 41 09 30 78 37 41 41  41 0a 09 20 09 20 09 20  |AA.0x7AAA.. . . |
0008e530  09 30 78 32 35 09 30 78  35 35 09 30 78 38 35 09  |.0x25.0x55.0x85.|
0008e540  30 78 42 35 09 30 78 45  35 0a 0a 4d 69 64 64 6c  |0xB5.0xE5..Middl|
0008e550  65 20 43 20 69 73 20 74  68 65 20 43 20 69 6e 20  |e C is the C in |
0008e560  6f 63 74 61 76 65 20 34  20 28 30 78 34 30 30 30  |octave 4 (0x4000|
0008e570  20 6f 72 20 30 78 33 35  29 2e 00 00 44 41 54 41  | or 0x35)...DATA|
0008e580  88 00 00 00 53 6f 75 6e  64 5f 53 79 73 42 65 65  |....Sound_SysBee|
0008e590  70 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 53  |p.Syntax:.void S|
0008e5a0  6f 75 6e 64 5f 53 79 73  42 65 65 70 20 28 76 6f  |ound_SysBeep (vo|
0008e5b0  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |id);.Header:.<De|
0008e5c0  73 6b 4c 69 62 3a 53 6f  75 6e 64 2e 68 3d 3e 53  |skLib:Sound.h=>S|
0008e5d0  6f 75 6e 64 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |ound>..This func|
0008e5e0  74 69 6f 6e 20 73 6f 75  6e 64 73 20 74 68 65 20  |tion sounds the |
0008e5f0  73 79 73 74 65 6d 20 62  65 65 70 20 28 56 44 55  |system beep (VDU|
0008e600  20 37 29 2e 44 41 54 41  48 01 00 00 53 70 6c 69  | 7).DATAH...Spli|
0008e610  74 50 61 74 68 6e 61 6d  65 0a 53 79 6e 74 61 78  |tPathname.Syntax|
0008e620  3a 09 76 6f 69 64 20 53  70 6c 69 74 50 61 74 68  |:.void SplitPath|
0008e630  6e 61 6d 65 20 28 63 68  61 72 20 2a 70 61 74 68  |name (char *path|
0008e640  2c 0a 20 20 20 20 20 20  20 20 20 63 68 61 72 20  |,.         char |
0008e650  2a 64 69 72 2c 20 63 68  61 72 20 2a 6c 65 61 66  |*dir, char *leaf|
0008e660  29 3b 0a 48 65 61 64 65  72 3a 09 3c 54 69 6d 73  |);.Header:.<Tims|
0008e670  4c 69 62 3a 4c 69 62 2e  68 3d 3e 4c 69 62 3e 0a  |Lib:Lib.h=>Lib>.|
0008e680  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 73  |.This function s|
0008e690  70 6c 69 74 73 20 74 68  65 20 70 61 74 68 6e 61  |plits the pathna|
0008e6a0  6d 65 20 69 6e 20 2f 70  61 74 68 2f 20 69 6e 74  |me in /path/ int|
0008e6b0  6f 20 64 69 72 65 63 74  6f 72 79 20 6e 61 6d 65  |o directory name|
0008e6c0  20 61 6e 64 20 6c 65 61  66 20 6e 61 6d 65 20 61  | and leaf name a|
0008e6d0  6e 64 20 73 74 6f 72 65  73 20 74 68 65 6d 20 69  |nd stores them i|
0008e6e0  6e 20 2f 64 69 72 2f 20  61 6e 64 20 2f 6c 65 61  |n /dir/ and /lea|
0008e6f0  66 2f 20 72 65 73 70 65  63 74 69 76 65 6c 79 2e  |f/ respectively.|
0008e700  20 45 69 74 68 65 72 20  2f 64 69 72 2f 20 6f 72  | Either /dir/ or|
0008e710  20 2f 6c 65 61 66 2f 20  6d 61 79 20 62 65 20 3c  | /leaf/ may be <|
0008e720  4e 55 4c 4c 3e 2c 20 69  6e 20 77 68 69 63 68 20  |NULL>, in which |
0008e730  63 61 73 65 20 74 68 61  74 20 70 61 72 74 20 69  |case that part i|
0008e740  73 20 64 69 73 63 61 72  64 65 64 2e 44 41 54 41  |s discarded.DATA|
0008e750  8e 01 00 00 73 70 72 69  6e 74 66 0a 53 79 6e 74  |....sprintf.Synt|
0008e760  61 78 3a 09 69 6e 74 20  73 70 72 69 6e 74 66 20  |ax:.int sprintf |
0008e770  28 63 68 61 72 20 2a 6f  75 74 2c 20 63 68 61 72  |(char *out, char|
0008e780  20 2a 66 6f 72 6d 61 74  2c 20 2e 2e 2e 29 3b 0a  | *format, ...);.|
0008e790  48 65 61 64 65 72 3a 09  3c 73 74 64 69 6f 2e 68  |Header:.<stdio.h|
0008e7a0  3d 3e 73 74 64 69 6f 3e  0a 0a 52 65 74 75 72 6e  |=>stdio>..Return|
0008e7b0  73 3a 09 54 68 65 20 6e  75 6d 62 65 72 20 6f 66  |s:.The number of|
0008e7c0  20 63 68 61 72 61 63 74  65 72 73 20 77 72 69 74  | characters writ|
0008e7d0  74 65 6e 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |ten...This funct|
0008e7e0  69 6f 6e 20 77 72 69 74  65 73 20 6f 75 74 70 75  |ion writes outpu|
0008e7f0  74 20 69 6e 74 6f 20 74  68 65 20 73 74 72 69 6e  |t into the strin|
0008e800  67 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 79 20  |g pointed to by |
0008e810  2f 6f 75 74 2f 20 75 6e  64 65 72 20 63 6f 6e 74  |/out/ under cont|
0008e820  72 6f 6c 20 6f 66 20 74  68 65 20 3c 66 6f 72 6d  |rol of the <form|
0008e830  61 74 20 73 74 72 69 6e  67 3d 3e 70 66 6f 72 6d  |at string=>pform|
0008e840  5f 3e 2e 0a 0a 49 6e 20  6f 70 65 72 61 74 69 6f  |_>...In operatio|
0008e850  6e 20 69 74 20 69 73 20  73 69 6d 69 6c 61 72 20  |n it is similar |
0008e860  74 6f 20 3c 66 70 72 69  6e 74 66 3e 2c 20 62 75  |to <fprintf>, bu|
0008e870  74 20 6f 75 74 70 75 74  20 69 73 20 64 69 72 65  |t output is dire|
0008e880  63 74 65 64 20 74 6f 20  61 20 73 74 72 69 6e 67  |cted to a string|
0008e890  20 69 6e 73 74 65 61 64  20 6f 66 20 74 6f 20 61  | instead of to a|
0008e8a0  20 73 74 72 65 61 6d 2e  20 54 68 65 20 74 65 72  | stream. The ter|
0008e8b0  6d 69 6e 61 74 69 6e 67  20 6e 75 6c 6c 20 62 79  |minating null by|
0008e8c0  74 65 20 69 73 20 61 64  64 65 64 20 61 75 74 6f  |te is added auto|
0008e8d0  6d 61 74 69 63 61 6c 6c  79 2e 00 00 44 41 54 41  |matically...DATA|
0008e8e0  84 00 00 00 73 70 72 69  74 65 0a 54 68 69 73 20  |....sprite.This |
0008e8f0  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
0008e900  69 6e 20 3c 44 65 73 6b  4c 69 62 3a 53 70 72 69  |in <DeskLib:Spri|
0008e910  74 65 2e 68 3d 3e 53 70  72 69 74 65 5f 44 4c 3e  |te.h=>Sprite_DL>|
0008e920  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
0008e930  61 73 20 61 20 70 6f 69  6e 74 65 72 20 74 6f 20  |as a pointer to |
0008e940  74 79 70 65 20 7b 2f 7d  73 74 72 75 63 74 20 3c  |type {/}struct <|
0008e950  73 70 72 69 74 65 5f 69  6e 66 6f 3e 7b 2f 7d 2e  |sprite_info>{/}.|
0008e960  44 41 54 41 d3 01 00 00  73 70 72 69 74 65 6d 65  |DATA....spriteme|
0008e970  6d 5f 66 6c 61 67 73 0a  54 68 69 73 20 65 6e 75  |m_flags.This enu|
0008e980  6d 65 72 61 74 65 64 20  74 79 70 65 20 69 73 20  |merated type is |
0008e990  64 65 66 69 6e 65 64 20  69 6e 20 3c 44 65 73 6b  |defined in <Desk|
0008e9a0  4c 69 62 3a 53 70 72 69  74 65 2e 68 3d 3e 53 70  |Lib:Sprite.h=>Sp|
0008e9b0  72 69 74 65 5f 44 4c 3e  2e 20 49 74 20 63 6f 6e  |rite_DL>. It con|
0008e9c0  74 61 69 6e 73 20 64 65  74 61 69 6c 73 20 6f 66  |tains details of|
0008e9d0  20 77 68 61 74 20 74 79  70 65 20 6f 66 20 73 70  | what type of sp|
0008e9e0  72 69 74 65 20 79 6f 75  20 77 61 6e 74 2e 0a 7b  |rite you want..{|
0008e9f0  77 72 61 70 20 6f 66 66  7d 0a 5c 7b 0a 20 20 73  |wrap off}.\{.  s|
0008ea00  70 72 69 74 65 5f 48 41  53 4e 4f 4d 41 53 4b 50  |prite_HASNOMASKP|
0008ea10  41 4c 09 3d 20 30 78 30  30 2c 09 2f 2a 20 53 70  |AL.= 0x00,./* Sp|
0008ea20  72 69 74 65 20 68 61 73  20 6e 6f 20 6d 61 73 6b  |rite has no mask|
0008ea30  20 6f 72 20 70 61 6c 65  74 74 65 20 2a 2f 0a 20  | or palette */. |
0008ea40  20 73 70 72 69 74 65 5f  48 41 53 4e 4f 50 41 4c  | sprite_HASNOPAL|
0008ea50  4d 41 53 4b 09 3d 20 30  78 30 30 2c 0a 20 20 73  |MASK.= 0x00,.  s|
0008ea60  70 72 69 74 65 5f 48 41  53 4d 41 53 4b 09 3d 20  |prite_HASMASK.= |
0008ea70  30 78 30 31 2c 09 2f 2a  20 53 70 72 69 74 65 20  |0x01,./* Sprite |
0008ea80  68 61 73 20 61 20 6d 61  73 6b 20 6f 6e 6c 79 20  |has a mask only |
0008ea90  20 20 20 20 20 20 20 2a  2f 0a 20 20 73 70 72 69  |       */.  spri|
0008eaa0  74 65 5f 48 41 53 50 41  4c 09 09 3d 20 30 78 30  |te_HASPAL..= 0x0|
0008eab0  32 2c 09 2f 2a 20 53 70  72 69 74 65 20 68 61 73  |2,./* Sprite has|
0008eac0  20 61 20 70 61 6c 65 74  74 65 20 6f 6e 6c 79 20  | a palette only |
0008ead0  20 20 20 20 2a 2f 0a 20  20 73 70 72 69 74 65 5f  |    */.  sprite_|
0008eae0  48 41 53 4d 41 53 4b 50  41 4c 09 3d 20 30 78 30  |HASMASKPAL.= 0x0|
0008eaf0  33 2c 09 2f 2a 20 48 61  73 20 62 6f 74 68 20 6d  |3,./* Has both m|
0008eb00  61 73 6b 20 61 6e 64 20  70 61 6c 65 74 74 65 20  |ask and palette |
0008eb10  20 20 20 20 2a 2f 0a 20  20 73 70 72 69 74 65 5f  |    */.  sprite_|
0008eb20  48 41 53 50 41 4c 4d 41  53 4b 09 3d 20 30 78 30  |HASPALMASK.= 0x0|
0008eb30  33 0a 7d 00 44 49 52 24  4c 00 00 00 4c 00 00 00  |3.}.DIR$L...L...|
0008eb40  80 eb 08 00 46 ff ff ff  de 31 d5 25 d7 00 00 00  |....F....1.%....|
0008eb50  13 00 00 00 00 00 00 00  53 59 53 54 45 4d 00 00  |........SYSTEM..|
0008eb60  58 ec 08 00 46 ff ff ff  73 36 d5 25 b4 00 00 00  |X...F...s6.%....|
0008eb70  13 00 00 00 00 00 00 00  57 49 4d 50 00 00 00 00  |........WIMP....|
0008eb80  44 41 54 41 d7 00 00 00  73 70 72 69 74 65 70 6f  |DATA....spritepo|
0008eb90  6f 6c 5f 53 59 53 54 45  4d 0a 54 68 69 73 20 6d  |ol_SYSTEM.This m|
0008eba0  61 63 72 6f 20 69 73 20  64 65 66 69 6e 65 64 20  |acro is defined |
0008ebb0  69 6e 20 3c 44 65 73 6b  4c 69 62 3a 53 70 72 69  |in <DeskLib:Spri|
0008ebc0  74 65 2e 68 3d 3e 53 70  72 69 74 65 5f 44 4c 3e  |te.h=>Sprite_DL>|
0008ebd0  2e 20 57 68 65 6e 20 61  20 73 70 72 69 74 65 20  |. When a sprite |
0008ebe0  61 72 65 61 20 69 73 20  72 65 71 75 69 72 65 64  |area is required|
0008ebf0  2c 20 74 68 69 73 20 63  61 6e 20 62 65 20 75 73  |, this can be us|
0008ec00  65 64 20 74 6f 20 61 63  63 65 73 73 20 74 68 65  |ed to access the|
0008ec10  20 53 79 73 74 65 6d 20  73 70 72 69 74 65 20 61  | System sprite a|
0008ec20  72 65 61 2e 20 50 4c 45  41 53 45 20 44 4f 20 4e  |rea. PLEASE DO N|
0008ec30  4f 54 20 55 53 45 20 53  59 53 54 45 4d 20 53 50  |OT USE SYSTEM SP|
0008ec40  52 49 54 45 53 2e 20 50  4c 45 41 53 45 2e 0a 0a  |RITES. PLEASE...|
0008ec50  50 4c 45 41 53 45 2e 00  44 41 54 41 b4 00 00 00  |PLEASE..DATA....|
0008ec60  73 70 72 69 74 65 70 6f  6f 6c 5f 57 49 4d 50 0a  |spritepool_WIMP.|
0008ec70  54 68 69 73 20 6d 61 63  72 6f 20 69 73 20 64 65  |This macro is de|
0008ec80  66 69 6e 65 64 20 69 6e  20 3c 44 65 73 6b 4c 69  |fined in <DeskLi|
0008ec90  62 3a 53 70 72 69 74 65  2e 68 3d 3e 53 70 72 69  |b:Sprite.h=>Spri|
0008eca0  74 65 5f 44 4c 3e 2e 20  57 68 65 6e 20 61 20 73  |te_DL>. When a s|
0008ecb0  70 72 69 74 65 20 61 72  65 61 20 69 73 20 72 65  |prite area is re|
0008ecc0  71 75 69 72 65 64 2c 20  74 68 69 73 20 63 61 6e  |quired, this can|
0008ecd0  20 62 65 20 75 73 65 64  20 74 6f 20 61 63 63 65  | be used to acce|
0008ece0  73 73 20 74 68 65 20 57  69 6d 70 20 73 70 72 69  |ss the Wimp spri|
0008ecf0  74 65 20 61 72 65 61 2e  20 49 74 20 69 73 20 64  |te area. It is d|
0008ed00  65 66 69 6e 65 64 20 61  73 20 31 2e 44 49 52 24  |efined as 1.DIR$|
0008ed10  c0 10 00 00 c0 10 00 00  cc fd 08 00 46 fd ff ff  |............F...|
0008ed20  58 c9 de 24 8c 03 00 00  13 00 00 00 00 00 00 00  |X..$............|
0008ed30  21 52 6f 6f 74 00 00 00  58 01 09 00 46 ff ff ff  |!Root...X...F...|
0008ed40  ff 57 d4 25 b5 01 00 00  13 00 00 00 00 00 00 00  |.W.%............|
0008ed50  41 70 70 65 6e 64 00 00  10 03 09 00 46 ff ff ff  |Append......F...|
0008ed60  28 dc e0 24 35 01 00 00  13 00 00 00 00 00 00 00  |(..$5...........|
0008ed70  61 72 65 61 00 00 00 00  48 04 09 00 46 fd ff ff  |area....H...F...|
0008ed80  97 d3 da 24 3b 01 00 00  13 00 00 00 00 00 00 00  |...$;...........|
0008ed90  61 72 65 61 5f 00 00 00  84 05 09 00 46 ff ff ff  |area_.......F...|
0008eda0  96 10 de 24 99 01 00 00  13 00 00 00 00 00 00 00  |...$............|
0008edb0  61 72 65 61 5f 6c 6f 61  64 00 00 00 20 07 09 00  |area_load... ...|
0008edc0  46 ff ff ff 14 1c de 24  15 02 00 00 13 00 00 00  |F......$........|
0008edd0  00 00 00 00 61 72 65 61  5f 6d 65 72 67 65 00 00  |....area_merge..|
0008ede0  38 09 09 00 46 ff ff ff  ad 07 de 24 39 01 00 00  |8...F......$9...|
0008edf0  13 00 00 00 00 00 00 00  61 72 65 61 5f 72 65 69  |........area_rei|
0008ee00  6e 69 74 00 74 0a 09 00  46 ff ff ff af 25 de 24  |nit.t...F....%.$|
0008ee10  51 01 00 00 13 00 00 00  00 00 00 00 61 72 65 61  |Q...........area|
0008ee20  5f 73 61 76 65 00 00 00  c8 0b 09 00 46 ff ff ff  |_save.......F...|
0008ee30  0f 4f d5 25 09 01 00 00  13 00 00 00 00 00 00 00  |.O.%............|
0008ee40  61 72 65 61 69 6e 66 6f  00 00 00 00 d4 0c 09 00  |areainfo........|
0008ee50  46 ff ff ff 68 44 e1 24  7d 00 00 00 13 00 00 00  |F...hD.$}.......|
0008ee60  00 00 00 00 62 6f 78 00  54 0d 09 00 46 ff ff ff  |....box.T...F...|
0008ee70  35 7f e0 24 c2 01 00 00  13 00 00 00 00 00 00 00  |5..$............|
0008ee80  63 68 61 6e 67 65 5f 73  69 7a 65 00 18 0f 09 00  |change_size.....|
0008ee90  46 ff ff ff 4d 2a e1 24  86 00 00 00 13 00 00 00  |F...M*.$........|
0008eea0  00 00 00 00 63 6f 6c 6f  75 72 00 00 a0 0f 09 00  |....colour......|
0008eeb0  46 ff ff ff 8a 0b df 24  08 02 00 00 13 00 00 00  |F......$........|
0008eec0  00 00 00 00 63 6f 70 79  00 00 00 00 a8 11 09 00  |....copy........|
0008eed0  46 fd ff ff 58 46 b4 25  be 01 00 00 13 00 00 00  |F...XF.%........|
0008eee0  00 00 00 00 43 6f 70 79  5f 00 00 00 68 13 09 00  |....Copy_...h...|
0008eef0  46 ff ff ff d2 7c de 24  b0 01 00 00 13 00 00 00  |F....|.$........|
0008ef00  00 00 00 00 63 72 65 61  74 65 00 00 18 15 09 00  |....create......|
0008ef10  46 fd ff ff a4 25 b4 25  ee 01 00 00 13 00 00 00  |F....%.%........|
0008ef20  00 00 00 00 43 72 65 61  74 65 5f 00 08 17 09 00  |....Create_.....|
0008ef30  46 ff ff ff a9 b4 df 24  45 01 00 00 13 00 00 00  |F......$E.......|
0008ef40  00 00 00 00 63 72 65 61  74 65 5f 6d 61 73 6b 00  |....create_mask.|
0008ef50  50 18 09 00 46 ff ff ff  38 88 de 24 cd 01 00 00  |P...F...8..$....|
0008ef60  13 00 00 00 00 00 00 00  63 72 65 61 74 65 5f 72  |........create_r|
0008ef70  70 00 00 00 20 1a 09 00  46 ff ff ff ff 25 bc 25  |p... ...F....%.%|
0008ef80  ea 00 00 00 13 00 00 00  00 00 00 00 43 72 65 61  |............Crea|
0008ef90  74 65 4d 61 73 6b 00 00  0c 1b 09 00 46 ff ff ff  |teMask......F...|
0008efa0  44 65 d4 25 77 01 00 00  13 00 00 00 00 00 00 00  |De.%w...........|
0008efb0  43 72 65 61 74 65 50 61  6c 65 74 74 65 00 00 00  |CreatePalette...|
0008efc0  84 1c 09 00 46 ff ff ff  7f f0 de 24 68 01 00 00  |....F......$h...|
0008efd0  13 00 00 00 00 00 00 00  64 65 6c 65 74 65 00 00  |........delete..|
0008efe0  ec 1d 09 00 46 fd ff ff  43 2c b4 25 23 01 00 00  |....F...C,.%#...|
0008eff0  13 00 00 00 00 00 00 00  44 65 6c 65 74 65 5f 00  |........Delete_.|
0008f000  10 1f 09 00 46 ff ff ff  f0 ce df 24 83 01 00 00  |....F......$....|
0008f010  13 00 00 00 00 00 00 00  64 65 6c 65 74 65 5f 72  |........delete_r|
0008f020  6f 77 00 00 94 20 09 00  46 ff ff ff 31 bd d4 25  |ow... ..F...1..%|
0008f030  8d 01 00 00 13 00 00 00  00 00 00 00 44 65 6c 65  |............Dele|
0008f040  74 65 43 6f 6c 75 6d 6e  00 00 00 00 24 22 09 00  |teColumn....$"..|
0008f050  46 ff ff ff 40 33 d4 25  83 01 00 00 13 00 00 00  |F...@3.%........|
0008f060  00 00 00 00 44 65 6c 65  74 65 52 6f 77 00 00 00  |....DeleteRow...|
0008f070  a8 23 09 00 46 fd ff ff  7b 5e b4 25 dc 05 00 00  |.#..F...{^.%....|
0008f080  13 00 00 00 00 00 00 00  44 4c 00 00 84 29 09 00  |........DL...)..|
0008f090  46 ff ff ff 28 cf e0 24  97 00 00 00 13 00 00 00  |F...(..$........|
0008f0a0  00 00 00 00 66 61 63 74  6f 72 73 00 1c 2a 09 00  |....factors..*..|
0008f0b0  46 ff ff ff 10 eb df 24  3d 01 00 00 13 00 00 00  |F......$=.......|
0008f0c0  00 00 00 00 66 6c 69 70  5f 78 00 00 5c 2b 09 00  |....flip_x..\+..|
0008f0d0  46 ff ff ff 15 f3 df 24  3d 01 00 00 13 00 00 00  |F......$=.......|
0008f0e0  00 00 00 00 66 6c 69 70  5f 79 00 00 9c 2c 09 00  |....flip_y...,..|
0008f0f0  46 ff ff ff ed 44 d4 25  3d 01 00 00 13 00 00 00  |F....D.%=.......|
0008f100  00 00 00 00 46 6c 69 70  58 00 00 00 dc 2d 09 00  |....FlipX....-..|
0008f110  46 ff ff ff f7 c3 d4 25  3d 01 00 00 13 00 00 00  |F......%=.......|
0008f120  00 00 00 00 46 6c 69 70  59 00 00 00 1c 2f 09 00  |....FlipY..../..|
0008f130  46 ff ff ff 80 43 de 24  2c 02 00 00 13 00 00 00  |F....C.$,.......|
0008f140  00 00 00 00 67 65 74 00  48 31 09 00 46 ff ff ff  |....get.H1..F...|
0008f150  65 71 b4 25 04 02 00 00  13 00 00 00 00 00 00 00  |eq.%............|
0008f160  47 65 74 5f 00 00 00 00  4c 33 09 00 46 ff ff ff  |Get_....L3..F...|
0008f170  e2 60 de 24 0f 02 00 00  13 00 00 00 00 00 00 00  |.`.$............|
0008f180  67 65 74 5f 67 69 76 65  6e 00 00 00 5c 35 09 00  |get_given...\5..|
0008f190  46 ff ff ff 2f 6f de 24  de 01 00 00 13 00 00 00  |F.../o.$........|
0008f1a0  00 00 00 00 67 65 74 5f  67 69 76 65 6e 5f 72 70  |....get_given_rp|
0008f1b0  00 00 00 00 3c 37 09 00  46 ff ff ff ff 4f de 24  |....<7..F....O.$|
0008f1c0  a4 01 00 00 13 00 00 00  00 00 00 00 67 65 74 5f  |............get_|
0008f1d0  72 70 00 00 e0 38 09 00  46 ff ff ff bd 36 de 24  |rp...8..F....6.$|
0008f1e0  8d 02 00 00 13 00 00 00  00 00 00 00 67 65 74 6e  |............getn|
0008f1f0  61 6d 65 00 70 3b 09 00  46 ff ff ff ae 20 bc 25  |ame.p;..F.... .%|
0008f200  7d 01 00 00 13 00 00 00  00 00 00 00 47 65 74 4e  |}...........GetN|
0008f210  61 6d 65 5f 00 00 00 00  f0 3c 09 00 46 fd ff ff  |ame_.....<..F...|
0008f220  3d 8f da 24 5a 02 00 00  13 00 00 00 00 00 00 00  |=..$Z...........|
0008f230  68 00 00 00 4c 3f 09 00  46 ff ff ff 87 f0 e0 24  |h...L?..F......$|
0008f240  6f 02 00 00 13 00 00 00  00 00 00 00 68 65 61 64  |o...........head|
0008f250  65 72 00 00 bc 41 09 00  46 ff ff ff 7e 29 d5 25  |er...A..F...~).%|
0008f260  0d 02 00 00 13 00 00 00  00 00 00 00 49 63 6f 6e  |............Icon|
0008f270  4d 65 6d 6f 72 79 53 69  7a 65 00 00 cc 43 09 00  |MemorySize...C..|
0008f280  46 ff ff ff b4 1b e1 24  be 00 00 00 13 00 00 00  |F......$........|
0008f290  00 00 00 00 69 64 00 00  ea d8 0c 00 46 ff ff ff  |....id......F...|
0008f2a0  92 8a 54 36 ab 01 00 00  13 00 00 00 00 00 00 00  |..T6............|
0008f2b0  69 6e 66 6f 00 00 00 00  38 46 09 00 46 ff ff ff  |info....8F..F...|
0008f2c0  53 ef b3 25 f9 00 00 00  13 00 00 00 00 00 00 00  |S..%............|
0008f2d0  49 6e 69 74 41 72 65 61  00 00 00 00 34 47 09 00  |InitArea....4G..|
0008f2e0  46 ff ff ff 8a c5 df 24  91 01 00 00 13 00 00 00  |F......$........|
0008f2f0  00 00 00 00 69 6e 73 65  72 74 5f 72 6f 77 00 00  |....insert_row..|
0008f300  c8 48 09 00 46 ff ff ff  2b 2a d4 25 91 01 00 00  |.H..F...+*.%....|
0008f310  13 00 00 00 00 00 00 00  49 6e 73 65 72 74 52 6f  |........InsertRo|
0008f320  77 00 00 00 5c 4a 09 00  46 ff ff ff 01 f4 b3 25  |w...\J..F......%|
0008f330  67 01 00 00 13 00 00 00  00 00 00 00 4c 6f 61 64  |g...........Load|
0008f340  00 00 00 00 c4 4b 09 00  46 ff ff ff c6 0f b4 25  |.....K..F......%|
0008f350  37 01 00 00 13 00 00 00  00 00 00 00 4c 6f 61 64  |7...........Load|
0008f360  46 69 6c 65 00 00 00 00  fc 4c 09 00 46 ff ff ff  |File.....L..F...|
0008f370  62 a7 e0 24 cd 00 00 00  13 00 00 00 00 00 00 00  |b..$............|
0008f380  6d 61 69 6e 61 72 65 61  00 00 00 00 cc 4d 09 00  |mainarea.....M..|
0008f390  46 ff ff ff 27 30 e1 24  a1 00 00 00 13 00 00 00  |F...'0.$........|
0008f3a0  00 00 00 00 6d 61 73 6b  73 74 61 74 65 00 00 00  |....maskstate...|
0008f3b0  70 4e 09 00 46 ff ff ff  b7 2e d5 25 a5 00 00 00  |pN..F......%....|
0008f3c0  13 00 00 00 00 00 00 00  4d 41 58 4e 41 4d 45 00  |........MAXNAME.|
0008f3d0  18 4f 09 00 46 ff ff ff  d3 18 d5 25 f2 01 00 00  |.O..F......%....|
0008f3e0  13 00 00 00 00 00 00 00  4d 65 6d 6f 72 79 53 69  |........MemorySi|
0008f3f0  7a 65 00 00 0c 51 09 00  46 ff ff ff c7 16 b4 25  |ze...Q..F......%|
0008f400  d6 01 00 00 13 00 00 00  00 00 00 00 4d 65 72 67  |............Merg|
0008f410  65 00 00 00 e4 52 09 00  46 ff ff ff d1 5c d5 25  |e....R..F....\.%|
0008f420  f2 00 00 00 13 00 00 00  00 00 00 00 6f 75 74 70  |............outp|
0008f430  75 74 73 74 61 74 65 00  d8 53 09 00 46 ff ff ff  |utstate..S..F...|
0008f440  da 39 e0 24 2a 01 00 00  13 00 00 00 00 00 00 00  |.9.$*...........|
0008f450  6f 75 74 70 75 74 74 6f  6d 61 73 6b 00 00 00 00  |outputtomask....|
0008f460  04 55 09 00 46 ff ff ff  30 3e e0 24 09 01 00 00  |.U..F...0>.$....|
0008f470  13 00 00 00 00 00 00 00  6f 75 74 70 75 74 74 6f  |........outputto|
0008f480  73 63 72 65 65 6e 00 00  10 56 09 00 46 ff ff ff  |screen...V..F...|
0008f490  0a 34 e0 24 29 01 00 00  13 00 00 00 00 00 00 00  |.4.$)...........|
0008f4a0  6f 75 74 70 75 74 74 6f  73 70 72 69 74 65 00 00  |outputtosprite..|
0008f4b0  3c 57 09 00 46 ff ff ff  4a ae e0 24 c6 00 00 00  |<W..F...J..$....|
0008f4c0  13 00 00 00 00 00 00 00  70 61 6c 66 6c 61 67 00  |........palflag.|
0008f4d0  04 58 09 00 46 ff ff ff  34 3a e1 24 93 00 00 00  |.X..F...4:.$....|
0008f4e0  13 00 00 00 00 00 00 00  70 67 6d 00 98 58 09 00  |........pgm..X..|
0008f4f0  46 ff ff ff 19 d7 e0 24  d6 00 00 00 13 00 00 00  |F......$........|
0008f500  00 00 00 00 70 69 78 74  72 61 6e 73 00 00 00 00  |....pixtrans....|
0008f510  70 59 09 00 46 ff ff ff  be 83 b4 25 de 01 00 00  |pY..F......%....|
0008f520  13 00 00 00 00 00 00 00  50 6c 6f 74 00 00 00 00  |........Plot....|
0008f530  50 5b 09 00 46 ff ff ff  eb fb d4 25 e0 02 00 00  |P[..F......%....|
0008f540  13 00 00 00 00 00 00 00  50 6c 6f 74 47 72 65 79  |........PlotGrey|
0008f550  00 00 00 00 30 5e 09 00  46 ff ff ff aa ce d4 25  |....0^..F......%|
0008f560  30 02 00 00 13 00 00 00  00 00 00 00 50 6c 6f 74  |0...........Plot|
0008f570  4d 61 73 6b 00 00 00 00  60 60 09 00 46 ff ff ff  |Mask....``..F...|
0008f580  b0 dd d4 25 10 02 00 00  13 00 00 00 00 00 00 00  |...%............|
0008f590  50 6c 6f 74 4d 61 73 6b  53 63 61 6c 65 64 00 00  |PlotMaskScaled..|
0008f5a0  70 62 09 00 46 ff ff ff  b9 ed d4 25 5d 02 00 00  |pb..F......%]...|
0008f5b0  13 00 00 00 00 00 00 00  50 6c 6f 74 53 63 61 6c  |........PlotScal|
0008f5c0  65 64 00 00 d0 64 09 00  46 ff ff ff 4a fc e0 24  |ed...d..F...J..$|
0008f5d0  9d 00 00 00 13 00 00 00  00 00 00 00 70 74 72 00  |............ptr.|
0008f5e0  70 65 09 00 46 ff ff ff  59 14 df 24 db 01 00 00  |pe..F...Y..$....|
0008f5f0  13 00 00 00 00 00 00 00  70 75 74 00 4c 67 09 00  |........put.Lg..|
0008f600  46 ff ff ff ee 23 df 24  dc 01 00 00 13 00 00 00  |F....#.$........|
0008f610  00 00 00 00 70 75 74 5f  67 69 76 65 6e 00 00 00  |....put_given...|
0008f620  28 69 09 00 46 ff ff ff  2f 7a df 24 1a 02 00 00  |(i..F.../z.$....|
0008f630  13 00 00 00 00 00 00 00  70 75 74 5f 6d 61 73 6b  |........put_mask|
0008f640  00 00 00 00 44 6b 09 00  46 ff ff ff 20 93 e0 24  |....Dk..F... ..$|
0008f650  30 01 00 00 13 00 00 00  00 00 00 00 70 75 74 5f  |0...........put_|
0008f660  6d 61 73 6b 5f 70 67 6d  00 00 00 00 74 6c 09 00  |mask_pgm....tl..|
0008f670  46 ff ff ff 7a 8e e0 24  44 01 00 00 13 00 00 00  |F...z..$D.......|
0008f680  00 00 00 00 70 75 74 5f  6d 61 73 6b 5f 74 72 61  |....put_mask_tra|
0008f690  6e 73 00 00 b8 6d 09 00  46 ff ff ff 42 9e e0 24  |ns...m..F...B..$|
0008f6a0  33 01 00 00 13 00 00 00  00 00 00 00 70 75 74 5f  |3...........put_|
0008f6b0  70 67 6d 00 ec 6e 09 00  46 ff ff ff 43 38 df 24  |pgm..n..F...C8.$|
0008f6c0  2c 03 00 00 13 00 00 00  00 00 00 00 70 75 74 5f  |,...........put_|
0008f6d0  73 63 61 6c 65 64 00 00  18 72 09 00 46 ff ff ff  |scaled...r..F...|
0008f6e0  fe 98 e0 24 48 01 00 00  13 00 00 00 00 00 00 00  |...$H...........|
0008f6f0  70 75 74 5f 74 72 61 6e  73 00 00 00 60 73 09 00  |put_trans...`s..|
0008f700  46 ff ff ff dd 16 bc 25  ec 01 00 00 13 00 00 00  |F......%........|
0008f710  00 00 00 00 52 65 61 64  43 6f 6e 74 72 6f 6c 00  |....ReadControl.|
0008f720  4c 75 09 00 46 ff ff ff  d7 e9 bb 25 90 01 00 00  |Lu..F......%....|
0008f730  13 00 00 00 00 00 00 00  52 65 61 64 49 6e 66 6f  |........ReadInfo|
0008f740  00 00 00 00 dc 76 09 00  46 ff ff ff 3d 1c e0 24  |.....v..F...=..$|
0008f750  8f 01 00 00 13 00 00 00  00 00 00 00 72 65 61 64  |............read|
0008f760  6d 61 73 6b 00 00 00 00  6c 78 09 00 46 ff ff ff  |mask....lx..F...|
0008f770  84 88 d4 25 31 01 00 00  13 00 00 00 00 00 00 00  |...%1...........|
0008f780  52 65 61 64 4d 61 73 6b  5f 00 00 00 a0 79 09 00  |ReadMask_....y..|
0008f790  46 ff ff ff e6 09 e0 24  a1 01 00 00 13 00 00 00  |F......$........|
0008f7a0  00 00 00 00 72 65 61 64  70 69 78 65 6c 00 00 00  |....readpixel...|
0008f7b0  44 7b 09 00 46 ff ff ff  41 73 d4 25 f8 00 00 00  |D{..F...As.%....|
0008f7c0  13 00 00 00 00 00 00 00  52 65 61 64 50 69 78 65  |........ReadPixe|
0008f7d0  6c 5f 00 00 3c 7c 09 00  46 ff ff ff 29 07 bc 25  |l_..<|..F...)..%|
0008f7e0  4a 01 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |J...........Read|
0008f7f0  53 61 76 65 41 72 65 61  53 69 7a 65 00 00 00 00  |SaveAreaSize....|
0008f800  88 7d 09 00 46 ff ff ff  b5 fa df 24 46 01 00 00  |.}..F......$F...|
0008f810  13 00 00 00 00 00 00 00  72 65 61 64 73 69 7a 65  |........readsize|
0008f820  00 00 00 00 d0 7e 09 00  46 ff ff ff fd f9 bb 25  |.....~..F......%|
0008f830  0c 03 00 00 13 00 00 00  00 00 00 00 52 65 64 69  |............Redi|
0008f840  72 65 63 74 00 00 00 00  dc 81 09 00 46 ff ff ff  |rect........F...|
0008f850  80 36 bc 25 2e 01 00 00  13 00 00 00 00 00 00 00  |.6.%............|
0008f860  72 65 6d 6f 76 65 5f 6d  61 73 6b 00 0c 83 09 00  |remove_mask.....|
0008f870  46 ff ff ff 0e 6d d4 25  26 01 00 00 13 00 00 00  |F....m.%&.......|
0008f880  00 00 00 00 52 65 6d 6f  76 65 50 61 6c 65 74 74  |....RemovePalett|
0008f890  65 00 00 00 34 84 09 00  46 ff ff ff 37 55 e0 24  |e...4...F...7U.$|
0008f8a0  2d 01 00 00 13 00 00 00  00 00 00 00 72 65 6d 6f  |-...........remo|
0008f8b0  76 65 77 61 73 74 61 67  65 00 00 00 64 85 09 00  |vewastage...d...|
0008f8c0  46 ff ff ff 15 fc de 24  e7 01 00 00 13 00 00 00  |F......$........|
0008f8d0  00 00 00 00 72 65 6e 61  6d 65 00 00 4c 87 09 00  |....rename..L...|
0008f8e0  46 ff ff ff 21 39 b4 25  b1 01 00 00 13 00 00 00  |F...!9.%........|
0008f8f0  00 00 00 00 52 65 6e 61  6d 65 5f 00 00 89 09 00  |....Rename_.....|
0008f900  46 ff ff ff a8 2d e0 24  f8 00 00 00 13 00 00 00  |F....-.$........|
0008f910  00 00 00 00 72 65 73 74  6f 72 65 73 74 61 74 65  |....restorestate|
0008f920  00 00 00 00 f8 89 09 00  46 fd ff ff 07 79 e0 24  |........F....y.$|
0008f930  ca 00 00 00 13 00 00 00  00 00 00 00 72 6f 33 5f  |............ro3_|
0008f940  00 00 00 00 c4 8a 09 00  46 ff ff ff c8 1b b4 25  |........F......%|
0008f950  17 01 00 00 13 00 00 00  00 00 00 00 53 61 76 65  |............Save|
0008f960  00 00 00 00 dc 8b 09 00  46 ff ff ff d6 64 d5 25  |........F....d.%|
0008f970  db 00 00 00 13 00 00 00  00 00 00 00 73 63 61 6c  |............scal|
0008f980  65 66 61 63 74 6f 72 73  00 00 00 00 b8 8c 09 00  |efactors........|
0008f990  46 ff ff ff fc a2 da 24  40 01 00 00 13 00 00 00  |F......$@.......|
0008f9a0  00 00 00 00 73 63 72 65  65 6e 6c 6f 61 64 00 00  |....screenload..|
0008f9b0  f8 8d 09 00 46 fd ff ff  9e e3 b3 25 83 01 00 00  |....F......%....|
0008f9c0  13 00 00 00 00 00 00 00  53 63 72 65 65 6e 4c 6f  |........ScreenLo|
0008f9d0  61 64 5f 00 7c 8f 09 00  46 ff ff ff e9 b2 da 24  |ad_.|...F......$|
0008f9e0  38 01 00 00 13 00 00 00  00 00 00 00 73 63 72 65  |8...........scre|
0008f9f0  65 6e 73 61 76 65 00 00  b4 90 09 00 46 fd ff ff  |ensave......F...|
0008fa00  05 de b3 25 b7 01 00 00  13 00 00 00 00 00 00 00  |...%............|
0008fa10  53 63 72 65 65 6e 53 61  76 65 5f 00 6c 92 09 00  |ScreenSave_.l...|
0008fa20  46 ff ff ff 4a d6 de 24  85 01 00 00 13 00 00 00  |F...J..$........|
0008fa30  00 00 00 00 73 65 6c 65  63 74 00 00 f4 93 09 00  |....select......|
0008fa40  46 ff ff ff bc e7 de 24  7a 01 00 00 13 00 00 00  |F......$z.......|
0008fa50  00 00 00 00 73 65 6c 65  63 74 5f 72 70 00 00 00  |....select_rp...|
0008fa60  70 95 09 00 46 fd ff ff  aa 9a da 24 57 00 00 00  |p...F......$W...|
0008fa70  13 00 00 00 00 00 00 00  73 69 6d 70 6c 65 5f 00  |........simple_.|
0008fa80  c8 95 09 00 46 ff ff ff  4c 44 e0 24 1a 01 00 00  |....F...LD.$....|
0008fa90  13 00 00 00 00 00 00 00  73 69 7a 65 6f 66 5f 73  |........sizeof_s|
0008faa0  63 72 65 65 6e 63 6f 6e  74 65 78 74 00 00 00 00  |creencontext....|
0008fab0  e4 96 09 00 46 ff ff ff  1b 4c e0 24 41 01 00 00  |....F....L.$A...|
0008fac0  13 00 00 00 00 00 00 00  73 69 7a 65 6f 66 5f 73  |........sizeof_s|
0008fad0  70 72 69 74 65 63 6f 6e  74 65 78 74 00 00 00 00  |pritecontext....|
0008fae0  28 98 09 00 46 ff ff ff  a5 34 e1 24 75 00 00 00  |(...F....4.$u...|
0008faf0  13 00 00 00 00 00 00 00  73 74 61 74 65 00 00 00  |........state...|
0008fb00  a0 98 09 00 46 ff ff ff  5f 40 e1 24 72 00 00 00  |....F..._@.$r...|
0008fb10  13 00 00 00 00 00 00 00  74 72 61 6e 73 6d 61 74  |........transmat|
0008fb20  00 00 00 00 14 99 09 00  46 ff ff ff 5f 03 e1 24  |........F..._..$|
0008fb30  f9 00 00 00 13 00 00 00  00 00 00 00 74 79 70 65  |............type|
0008fb40  00 00 00 00 10 9a 09 00  46 ff ff ff da 00 bc 25  |........F......%|
0008fb50  36 01 00 00 13 00 00 00  00 00 00 00 55 6e 52 65  |6...........UnRe|
0008fb60  64 69 72 65 63 74 00 00  48 9b 09 00 46 ff ff ff  |direct..H...F...|
0008fb70  95 0b d5 25 e8 01 00 00  13 00 00 00 00 00 00 00  |...%............|
0008fb80  57 69 6d 70 50 6c 6f 74  00 00 00 00 30 9d 09 00  |WimpPlot....0...|
0008fb90  46 ff ff ff a5 26 e0 24  95 01 00 00 13 00 00 00  |F....&.$........|
0008fba0  00 00 00 00 77 72 69 74  65 6d 61 73 6b 00 00 00  |....writemask...|
0008fbb0  c8 9e 09 00 46 ff ff ff  dc 90 d4 25 59 01 00 00  |....F......%Y...|
0008fbc0  13 00 00 00 00 00 00 00  57 72 69 74 65 4d 61 73  |........WriteMas|
0008fbd0  6b 5f 00 00 24 a0 09 00  46 ff ff ff ea 12 e0 24  |k_..$...F......$|
0008fbe0  94 01 00 00 13 00 00 00  00 00 00 00 77 72 69 74  |............writ|
0008fbf0  65 70 69 78 65 6c 00 00  b8 a1 09 00 46 ff ff ff  |epixel......F...|
0008fc00  ed 7c d4 25 64 01 00 00  13 00 00 00 00 00 00 00  |.|.%d...........|
0008fc10  57 72 69 74 65 50 69 78  65 6c 5f 00 1c a3 09 00  |WritePixel_.....|
0008fc20  46 ff ff ff ab ef dd 24  61 01 00 00 13 00 00 00  |F......$a.......|
0008fc30  00 00 00 00 61 72 65 61  5f 69 6e 69 74 69 61 6c  |....area_initial|
0008fc40  69 73 65 00 80 a4 09 00  46 ff ff ff b0 f6 dd 24  |ise.....F......$|
0008fc50  67 01 00 00 13 00 00 00  00 00 00 00 61 72 65 61  |g...........area|
0008fc60  5f 72 65 61 64 69 6e 66  6f 00 00 00 e8 a5 09 00  |_readinfo.......|
0008fc70  46 ff ff ff 46 6d df 24  f5 02 00 00 13 00 00 00  |F...Fm.$........|
0008fc80  00 00 00 00 70 75 74 5f  67 72 65 79 73 63 61 6c  |....put_greyscal|
0008fc90  65 64 00 00 e0 a8 09 00  46 ff ff ff 48 86 df 24  |ed......F...H..$|
0008fca0  1b 02 00 00 13 00 00 00  00 00 00 00 70 75 74 5f  |............put_|
0008fcb0  6d 61 73 6b 5f 67 69 76  65 6e 00 00 fc aa 09 00  |mask_given......|
0008fcc0  46 ff ff ff 26 96 df 24  21 02 00 00 13 00 00 00  |F...&..$!.......|
0008fcd0  00 00 00 00 70 75 74 5f  6d 61 73 6b 5f 73 63 61  |....put_mask_sca|
0008fce0  6c 65 64 00 20 ad 09 00  46 ff ff ff d3 a9 df 24  |led. ...F......$|
0008fcf0  fc 01 00 00 13 00 00 00  00 00 00 00 70 75 74 5f  |............put_|
0008fd00  63 68 61 72 5f 73 63 61  6c 65 64 00 1c af 09 00  |char_scaled.....|
0008fd10  46 ff ff ff 6e d8 df 24  b4 01 00 00 13 00 00 00  |F...n..$........|
0008fd20  00 00 00 00 69 6e 73 65  72 74 5f 63 6f 6c 75 6d  |....insert_colum|
0008fd30  6e 00 00 00 d0 b0 09 00  46 ff ff ff d0 e0 df 24  |n.......F......$|
0008fd40  90 01 00 00 13 00 00 00  00 00 00 00 64 65 6c 65  |............dele|
0008fd50  74 65 5f 63 6f 6c 75 6d  6e 00 00 00 60 b2 09 00  |te_column...`...|
0008fd60  46 ff ff ff 9a 01 66 25  5f 01 00 00 13 00 00 00  |F.....f%_.......|
0008fd70  00 00 00 00 4c 6f 61 64  46 69 6c 65 73 00 00 00  |....LoadFiles...|
0008fd80  c0 b3 09 00 46 ff ff ff  d7 1d d4 25 ed 00 00 00  |....F......%....|
0008fd90  13 00 00 00 00 00 00 00  52 65 6d 6f 76 65 4d 61  |........RemoveMa|
0008fda0  73 6b 00 00 b0 b4 09 00  46 ff ff ff a6 9d d4 25  |sk......F......%|
0008fdb0  b1 01 00 00 13 00 00 00  00 00 00 00 49 6e 73 65  |............Inse|
0008fdc0  72 74 43 6f 6c 75 6d 6e  00 00 00 00 44 41 54 41  |rtColumn....DATA|
0008fdd0  8c 03 00 00 73 70 72 69  74 65 2e 68 20 53 70 72  |....sprite.h Spr|
0008fde0  69 74 65 20 46 75 6e 63  74 69 6f 6e 73 0a 54 68  |ite Functions.Th|
0008fdf0  65 73 65 20 66 75 6e 63  74 69 6f 6e 73 20 6f 70  |ese functions op|
0008fe00  65 72 61 74 65 20 6f 6e  20 73 70 72 69 74 65 73  |erate on sprites|
0008fe10  20 69 6e 20 74 68 65 20  73 79 73 74 65 6d 20 6f  | in the system o|
0008fe20  72 20 61 20 75 73 65 72  20 61 72 65 61 2c 20 61  |r a user area, a|
0008fe30  6e 64 20 63 61 6e 20 61  63 63 65 73 73 20 74 68  |nd can access th|
0008fe40  65 20 73 70 72 69 74 65  73 20 65 69 74 68 65 72  |e sprites either|
0008fe50  20 62 79 20 6e 61 6d 65  20 6f 72 20 62 79 20 61  | by name or by a|
0008fe60  20 70 6f 69 6e 74 65 72  20 74 6f 20 74 68 65 20  | pointer to the |
0008fe70  73 70 72 69 74 65 2e 0a  0a 23 69 6e 64 65 6e 74  |sprite...#indent|
0008fe80  20 34 0a 23 54 61 62 6c  65 20 63 6f 6c 75 6d 6e  | 4.#Table column|
0008fe90  73 20 32 0a 3c 73 70 72  69 74 65 5f 73 65 6c 65  |s 2.<sprite_sele|
0008fea0  63 74 3e 0a 3c 73 70 72  69 74 65 5f 73 65 6c 65  |ct>.<sprite_sele|
0008feb0  63 74 5f 72 70 3e 0a 3c  73 70 72 69 74 65 5f 64  |ct_rp>.<sprite_d|
0008fec0  65 6c 65 74 65 3e 0a 3c  73 70 72 69 74 65 5f 72  |elete>.<sprite_r|
0008fed0  65 6e 61 6d 65 3e 0a 3c  73 70 72 69 74 65 5f 63  |ename>.<sprite_c|
0008fee0  6f 70 79 3e 0a 3c 73 70  72 69 74 65 5f 70 75 74  |opy>.<sprite_put|
0008fef0  3e 0a 3c 73 70 72 69 74  65 5f 70 75 74 5f 67 69  |>.<sprite_put_gi|
0008ff00  76 65 6e 3e 0a 3c 73 70  72 69 74 65 5f 70 75 74  |ven>.<sprite_put|
0008ff10  5f 73 63 61 6c 65 64 3e  0a 3c 73 70 72 69 74 65  |_scaled>.<sprite|
0008ff20  5f 70 75 74 5f 67 72 65  79 73 63 61 6c 65 64 3e  |_put_greyscaled>|
0008ff30  0a 3c 73 70 72 69 74 65  5f 70 75 74 5f 6d 61 73  |.<sprite_put_mas|
0008ff40  6b 3e 0a 3c 73 70 72 69  74 65 5f 70 75 74 5f 6d  |k>.<sprite_put_m|
0008ff50  61 73 6b 5f 67 69 76 65  6e 3e 0a 3c 73 70 72 69  |ask_given>.<spri|
0008ff60  74 65 5f 70 75 74 5f 6d  61 73 6b 5f 73 63 61 6c  |te_put_mask_scal|
0008ff70  65 64 3e 0a 3c 73 70 72  69 74 65 5f 70 75 74 5f  |ed>.<sprite_put_|
0008ff80  63 68 61 72 5f 73 63 61  6c 65 64 3e 0a 3c 73 70  |char_scaled>.<sp|
0008ff90  72 69 74 65 5f 63 72 65  61 74 65 5f 6d 61 73 6b  |rite_create_mask|
0008ffa0  3e 0a 3c 73 70 72 69 74  65 5f 72 65 6d 6f 76 65  |>.<sprite_remove|
0008ffb0  5f 6d 61 73 6b 3e 0a 3c  73 70 72 69 74 65 5f 69  |_mask>.<sprite_i|
0008ffc0  6e 73 65 72 74 5f 72 6f  77 3e 0a 3c 73 70 72 69  |nsert_row>.<spri|
0008ffd0  74 65 5f 64 65 6c 65 74  65 5f 72 6f 77 3e 0a 3c  |te_delete_row>.<|
0008ffe0  73 70 72 69 74 65 5f 69  6e 73 65 72 74 5f 63 6f  |sprite_insert_co|
0008fff0  6c 75 6d 6e 3e 0a 3c 73  70 72 69 74 65 5f 64 65  |lumn>.<sprite_de|
00090000  6c 65 74 65 5f 63 6f 6c  75 6d 6e 3e 0a 3c 73 70  |lete_column>.<sp|
00090010  72 69 74 65 5f 66 6c 69  70 5f 78 3e 0a 3c 73 70  |rite_flip_x>.<sp|
00090020  72 69 74 65 5f 66 6c 69  70 5f 79 3e 0a 3c 73 70  |rite_flip_y>.<sp|
00090030  72 69 74 65 5f 72 65 61  64 73 69 7a 65 3e 0a 3c  |rite_readsize>.<|
00090040  73 70 72 69 74 65 5f 72  65 61 64 70 69 78 65 6c  |sprite_readpixel|
00090050  3e 0a 3c 73 70 72 69 74  65 5f 77 72 69 74 65 70  |>.<sprite_writep|
00090060  69 78 65 6c 3e 0a 3c 73  70 72 69 74 65 5f 72 65  |ixel>.<sprite_re|
00090070  61 64 6d 61 73 6b 3e 0a  3c 73 70 72 69 74 65 5f  |admask>.<sprite_|
00090080  77 72 69 74 65 6d 61 73  6b 3e 0a 3c 73 70 72 69  |writemask>.<spri|
00090090  74 65 5f 72 65 73 74 6f  72 65 73 74 61 74 65 3e  |te_restorestate>|
000900a0  0a 3c 73 70 72 69 74 65  5f 6f 75 74 70 75 74 74  |.<sprite_outputt|
000900b0  6f 73 70 72 69 74 65 3e  0a 3c 73 70 72 69 74 65  |osprite>.<sprite|
000900c0  5f 6f 75 74 70 75 74 74  6f 6d 61 73 6b 3e 0a 3c  |_outputtomask>.<|
000900d0  73 70 72 69 74 65 5f 6f  75 74 70 75 74 74 6f 73  |sprite_outputtos|
000900e0  63 72 65 65 6e 3e 0a 3c  73 70 72 69 74 65 5f 73  |creen>.<sprite_s|
000900f0  69 7a 65 6f 66 5f 73 70  72 69 74 65 63 6f 6e 74  |izeof_spritecont|
00090100  65 78 74 3e 0a 3c 73 70  72 69 74 65 5f 73 69 7a  |ext>.<sprite_siz|
00090110  65 6f 66 5f 73 63 72 65  65 6e 63 6f 6e 74 65 78  |eof_screencontex|
00090120  74 3e 0a 3c 73 70 72 69  74 65 5f 72 65 6d 6f 76  |t>.<sprite_remov|
00090130  65 77 61 73 74 61 67 65  3e 0a 3c 73 70 72 69 74  |ewastage>.<sprit|
00090140  65 5f 63 68 61 6e 67 65  5f 73 69 7a 65 3e 0a 23  |e_change_size>.#|
00090150  45 6e 64 54 61 62 6c 65  44 41 54 41 b5 01 00 00  |EndTableDATA....|
00090160  53 70 72 69 74 65 5f 41  70 70 65 6e 64 0a 53 79  |Sprite_Append.Sy|
00090170  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00090180  20 2a 53 70 72 69 74 65  5f 41 70 70 65 6e 64 20  | *Sprite_Append |
00090190  28 3c 73 70 72 69 74 65  5f 61 72 65 61 3e 20 61  |(<sprite_area> a|
000901a0  72 65 61 2c 20 63 68 61  72 20 2a 6e 61 6d 65 31  |rea, char *name1|
000901b0  2c 20 63 68 61 72 20 2a  6e 61 6d 65 32 2c 20 69  |, char *name2, i|
000901c0  6e 74 20 64 69 72 29 3b  0a 48 65 61 64 65 72 3a  |nt dir);.Header:|
000901d0  09 3c 44 65 73 6b 4c 69  62 3a 53 70 72 69 74 65  |.<DeskLib:Sprite|
000901e0  2e 68 3d 3e 53 70 72 69  74 65 5f 44 4c 3e 0a 0a  |.h=>Sprite_DL>..|
000901f0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00090200  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00090210  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00090220  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 6a 6f 69  |his function joi|
00090230  6e 73 20 74 77 6f 20 73  70 72 69 74 65 73 20 74  |ns two sprites t|
00090240  6f 67 65 74 68 65 72 2e  20 7b 2f 7d 6e 61 6d 65  |ogether. {/}name|
00090250  32 7b 2f 7d 20 69 73 20  64 65 6c 65 74 65 64 20  |2{/} is deleted |
00090260  61 6e 64 20 6a 6f 69 6e  65 64 20 6f 6e 74 6f 20  |and joined onto |
00090270  7b 2f 7d 6e 61 6d 65 31  7b 2f 7d 2e 20 49 66 20  |{/}name1{/}. If |
00090280  2f 64 69 72 2f 20 69 73  20 30 20 74 68 65 79 20  |/dir/ is 0 they |
00090290  61 72 65 20 6a 6f 69 6e  65 64 20 68 6f 72 69 7a  |are joined horiz|
000902a0  6f 6e 74 61 6c 6c 79 20  61 6e 64 20 6d 75 73 74  |ontally and must|
000902b0  20 68 61 76 65 20 74 68  65 20 73 61 6d 65 20 68  | have the same h|
000902c0  65 69 67 68 74 2c 20 69  66 20 2f 64 69 72 2f 20  |eight, if /dir/ |
000902d0  69 73 20 31 20 74 68 65  79 20 61 72 65 20 6a 6f  |is 1 they are jo|
000902e0  69 6e 65 64 20 76 65 72  74 69 63 61 6c 6c 79 20  |ined vertically |
000902f0  61 6e 64 20 6d 75 73 74  20 68 61 76 65 20 74 68  |and must have th|
00090300  65 20 73 61 6d 65 20 77  69 64 74 68 2e 00 00 00  |e same width....|
00090310  44 41 54 41 35 01 00 00  73 70 72 69 74 65 5f 61  |DATA5...sprite_a|
00090320  72 65 61 0a 54 68 69 73  20 74 79 70 65 20 69 73  |rea.This type is|
00090330  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 73 70 72  | defined in <spr|
00090340  69 74 65 2e 68 3d 3e 73  70 72 69 74 65 5f 68 3e  |ite.h=>sprite_h>|
00090350  20 28 44 65 73 6b 74 6f  70 20 43 29 20 61 6e 64  | (Desktop C) and|
00090360  20 3c 44 65 73 6b 4c 69  62 3a 53 70 72 69 74 65  | <DeskLib:Sprite|
00090370  2e 68 3d 3e 53 70 72 69  74 65 5f 44 4c 3e 2e 20  |.h=>Sprite_DL>. |
00090380  49 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It is defined as|
00090390  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 73  | the following s|
000903a0  74 72 75 63 74 75 72 65  20 69 6e 20 44 65 73 6b  |tructure in Desk|
000903b0  74 6f 70 20 43 3a 0a 0a  20 20 5c 7b 0a 20 20 20  |top C:..  \{.   |
000903c0  20 69 6e 74 20 73 69 7a  65 3b 0a 20 20 20 20 69  | int size;.    i|
000903d0  6e 74 20 6e 75 6d 62 65  72 3b 0a 20 20 20 20 69  |nt number;.    i|
000903e0  6e 74 20 73 70 72 6f 66  66 3b 0a 20 20 20 20 69  |nt sproff;.    i|
000903f0  6e 74 20 66 72 65 65 6f  66 66 3b 0a 20 20 7d 0a  |nt freeoff;.  }.|
00090400  0a 61 6e 64 20 69 6e 20  44 65 73 6b 4c 69 62 20  |.and in DeskLib |
00090410  69 74 20 69 73 20 64 65  66 69 6e 65 64 20 61 73  |it is defined as|
00090420  20 61 20 70 6f 69 6e 74  65 72 20 74 6f 20 74 79  | a pointer to ty|
00090430  70 65 20 3c 73 70 72 69  74 65 5f 61 72 65 61 69  |pe <sprite_areai|
00090440  6e 66 6f 3e 2e 00 00 00  44 41 54 41 3b 01 00 00  |nfo>....DATA;...|
00090450  73 70 72 69 74 65 2e 68  20 53 70 72 69 74 65 20  |sprite.h Sprite |
00090460  41 72 65 61 20 46 75 6e  63 74 69 6f 6e 73 0a 23  |Area Functions.#|
00090470  74 61 62 6c 65 20 63 6f  6c 75 6d 6e 73 20 32 0a  |table columns 2.|
00090480  3c 73 70 72 69 74 65 5f  61 72 65 61 5f 69 6e 69  |<sprite_area_ini|
00090490  74 69 61 6c 69 73 65 3e  0a 3c 73 70 72 69 74 65  |tialise>.<sprite|
000904a0  5f 61 72 65 61 5f 72 65  61 64 69 6e 66 6f 3e 0a  |_area_readinfo>.|
000904b0  3c 73 70 72 69 74 65 5f  61 72 65 61 5f 72 65 69  |<sprite_area_rei|
000904c0  6e 69 74 3e 0a 3c 73 70  72 69 74 65 5f 61 72 65  |nit>.<sprite_are|
000904d0  61 5f 6c 6f 61 64 3e 0a  3c 73 70 72 69 74 65 5f  |a_load>.<sprite_|
000904e0  61 72 65 61 5f 6d 65 72  67 65 3e 0a 3c 73 70 72  |area_merge>.<spr|
000904f0  69 74 65 5f 61 72 65 61  5f 73 61 76 65 3e 0a 3c  |ite_area_save>.<|
00090500  73 70 72 69 74 65 5f 67  65 74 6e 61 6d 65 3e 0a  |sprite_getname>.|
00090510  3c 73 70 72 69 74 65 5f  67 65 74 3e 0a 3c 73 70  |<sprite_get>.<sp|
00090520  72 69 74 65 5f 67 65 74  5f 72 70 3e 0a 3c 73 70  |rite_get_rp>.<sp|
00090530  72 69 74 65 5f 67 65 74  5f 67 69 76 65 6e 3e 0a  |rite_get_given>.|
00090540  3c 73 70 72 69 74 65 5f  67 65 74 5f 67 69 76 65  |<sprite_get_give|
00090550  6e 5f 72 70 3e 0a 3c 73  70 72 69 74 65 5f 63 72  |n_rp>.<sprite_cr|
00090560  65 61 74 65 20 3e 0a 3c  73 70 72 69 74 65 5f 63  |eate >.<sprite_c|
00090570  72 65 61 74 65 5f 72 70  3e 0a 23 65 6e 64 74 61  |reate_rp>.#endta|
00090580  62 6c 65 00 44 41 54 41  99 01 00 00 73 70 72 69  |ble.DATA....spri|
00090590  74 65 5f 61 72 65 61 5f  6c 6f 61 64 0a 53 79 6e  |te_area_load.Syn|
000905a0  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
000905b0  2a 73 70 72 69 74 65 5f  61 72 65 61 5f 6c 6f 61  |*sprite_area_loa|
000905c0  64 20 28 3c 73 70 72 69  74 65 5f 61 72 65 61 3e  |d (<sprite_area>|
000905d0  20 2a 61 72 65 61 2c 20  63 68 61 72 20 2a 66 69  | *area, char *fi|
000905e0  6c 65 6e 61 6d 65 29 3b  0a 48 65 61 64 65 72 3a  |lename);.Header:|
000905f0  09 3c 73 70 72 69 74 65  2e 68 3d 3e 73 70 72 69  |.<sprite.h=>spri|
00090600  74 65 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |te_h>..Returns:.|
00090610  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
00090620  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
00090630  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
00090640  69 6f 6e 20 6c 6f 61 64  73 20 61 6c 6c 20 74 68  |ion loads all th|
00090650  65 20 73 70 72 69 74 65  73 20 69 6e 20 74 68 65  |e sprites in the|
00090660  20 73 70 65 63 69 66 69  65 64 20 66 69 6c 65 20  | specified file |
00090670  69 6e 74 6f 20 74 68 65  20 73 70 72 69 74 65 20  |into the sprite |
00090680  61 72 65 61 20 77 68 6f  73 65 20 70 6f 69 6e 74  |area whose point|
00090690  65 72 20 69 73 20 67 69  76 65 6e 2e 20 41 6e 79  |er is given. Any|
000906a0  20 73 70 72 69 74 65 73  20 61 6c 72 65 61 64 79  | sprites already|
000906b0  20 69 6e 20 74 68 65 20  61 72 65 61 20 61 72 65  | in the area are|
000906c0  20 64 65 6c 65 74 65 64  2e 20 49 74 20 69 73 20  | deleted. It is |
000906d0  65 71 75 69 76 61 6c 65  6e 74 20 74 6f 20 7b 2a  |equivalent to {*|
000906e0  7d 4f 53 5f 53 70 72 69  74 65 4f 70 7b 2a 7d 20  |}OS_SpriteOp{*} |
000906f0  31 30 2c 20 6f 72 20 2a  53 4c 6f 61 64 20 77 68  |10, or *SLoad wh|
00090700  65 6e 20 75 73 65 64 20  77 69 74 68 20 74 68 65  |en used with the|
00090710  20 73 79 73 74 65 6d 20  61 72 65 61 2e 00 00 00  | system area....|
00090720  44 41 54 41 15 02 00 00  73 70 72 69 74 65 5f 61  |DATA....sprite_a|
00090730  72 65 61 5f 6d 65 72 67  65 0a 53 79 6e 74 61 78  |rea_merge.Syntax|
00090740  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 73 70  |:.<os_error> *sp|
00090750  72 69 74 65 5f 61 72 65  61 5f 6d 65 72 67 65 20  |rite_area_merge |
00090760  28 3c 73 70 72 69 74 65  5f 61 72 65 61 3e 20 2a  |(<sprite_area> *|
00090770  61 72 65 61 2c 20 63 68  61 72 20 2a 66 69 6c 65  |area, char *file|
00090780  6e 61 6d 65 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |name);.Header:.<|
00090790  73 70 72 69 74 65 2e 68  3d 3e 73 70 72 69 74 65  |sprite.h=>sprite|
000907a0  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |_h>..Returns:.Po|
000907b0  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
000907c0  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
000907d0  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
000907e0  6e 20 6c 6f 61 64 73 20  61 6c 6c 20 74 68 65 20  |n loads all the |
000907f0  73 70 72 69 74 65 73 20  69 6e 20 74 68 65 20 73  |sprites in the s|
00090800  70 65 63 69 66 69 65 64  20 66 69 6c 65 20 69 6e  |pecified file in|
00090810  74 6f 20 74 68 65 20 73  70 72 69 74 65 20 61 72  |to the sprite ar|
00090820  65 61 20 77 68 6f 73 65  20 70 6f 69 6e 74 65 72  |ea whose pointer|
00090830  20 69 73 20 67 69 76 65  6e 2e 20 54 68 65 20 73  | is given. The s|
00090840  70 72 69 74 65 73 20 61  72 65 20 61 64 64 65 64  |prites are added|
00090850  20 74 6f 20 61 6e 79 20  73 70 72 69 74 65 73 20  | to any sprites |
00090860  61 6c 72 65 61 64 79 20  69 6e 20 74 68 65 20 61  |already in the a|
00090870  72 65 61 2e 20 49 66 20  61 6e 79 20 6e 65 77 20  |rea. If any new |
00090880  73 70 72 69 74 65 73 20  68 61 76 65 20 74 68 65  |sprites have the|
00090890  20 73 61 6d 65 20 6e 61  6d 65 20 61 73 20 65 78  | same name as ex|
000908a0  69 73 74 69 6e 67 20 73  70 72 69 74 65 73 2c 20  |isting sprites, |
000908b0  74 68 65 20 6f 6c 64 20  6f 6e 65 73 20 61 72 65  |the old ones are|
000908c0  20 64 65 6c 65 74 65 64  2e 20 54 68 69 73 20 66  | deleted. This f|
000908d0  75 6e 63 74 69 6f 6e 20  69 73 20 65 71 75 69 76  |unction is equiv|
000908e0  61 6c 65 6e 74 20 74 6f  20 3c 4f 53 5f 53 70 72  |alent to <OS_Spr|
000908f0  69 74 65 4f 70 3d 3e 53  57 49 3a 4f 53 5f 53 70  |iteOp=>SWI:OS_Sp|
00090900  72 69 74 65 4f 70 3e 20  31 31 20 6f 72 20 2a 53  |riteOp> 11 or *S|
00090910  4d 65 72 67 65 20 77 68  65 6e 20 75 73 65 64 20  |Merge when used |
00090920  77 69 74 68 20 74 68 65  20 73 79 73 74 65 6d 20  |with the system |
00090930  61 72 65 61 2e 00 00 00  44 41 54 41 39 01 00 00  |area....DATA9...|
00090940  73 70 72 69 74 65 5f 61  72 65 61 5f 72 65 69 6e  |sprite_area_rein|
00090950  69 74 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |it.Syntax:.<os_e|
00090960  72 72 6f 72 3e 20 2a 73  70 72 69 74 65 5f 61 72  |rror> *sprite_ar|
00090970  65 61 5f 72 65 69 6e 69  74 20 28 3c 73 70 72 69  |ea_reinit (<spri|
00090980  74 65 5f 61 72 65 61 3e  20 2a 61 72 65 61 29 3b  |te_area> *area);|
00090990  0a 48 65 61 64 65 72 3a  09 3c 73 70 72 69 74 65  |.Header:.<sprite|
000909a0  2e 68 3d 3e 73 70 72 69  74 65 5f 68 3e 0a 0a 52  |.h=>sprite_h>..R|
000909b0  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
000909c0  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
000909d0  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
000909e0  69 73 20 66 75 6e 63 74  69 6f 6e 20 72 65 2d 69  |is function re-i|
000909f0  6e 69 74 69 61 6c 69 73  65 73 20 74 68 65 20 73  |nitialises the s|
00090a00  70 72 69 74 65 20 61 72  65 61 2e 20 49 74 20 69  |prite area. It i|
00090a10  73 20 65 71 75 69 76 61  6c 65 6e 74 20 74 6f 20  |s equivalent to |
00090a20  3c 4f 53 5f 53 70 72 69  74 65 4f 70 3d 3e 53 57  |<OS_SpriteOp=>SW|
00090a30  49 3a 4f 53 5f 53 70 72  69 74 65 4f 70 3e 20 39  |I:OS_SpriteOp> 9|
00090a40  2c 20 6f 72 20 2a 53 4e  65 77 20 77 68 65 6e 20  |, or *SNew when |
00090a50  75 73 65 64 20 77 69 74  68 20 74 68 65 20 73 79  |used with the sy|
00090a60  73 74 65 6d 20 73 70 72  69 74 65 20 61 72 65 61  |stem sprite area|
00090a70  2e 00 00 00 44 41 54 41  51 01 00 00 73 70 72 69  |....DATAQ...spri|
00090a80  74 65 5f 61 72 65 61 5f  73 61 76 65 0a 53 79 6e  |te_area_save.Syn|
00090a90  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
00090aa0  2a 73 70 72 69 74 65 5f  61 72 65 61 5f 73 61 76  |*sprite_area_sav|
00090ab0  65 20 28 3c 73 70 72 69  74 65 5f 61 72 65 61 3e  |e (<sprite_area>|
00090ac0  20 2a 61 72 65 61 2c 20  63 68 61 72 20 2a 66 69  | *area, char *fi|
00090ad0  6c 65 6e 61 6d 65 29 3b  0a 48 65 61 64 65 72 3a  |lename);.Header:|
00090ae0  09 3c 73 70 72 69 74 65  2e 68 3d 3e 73 70 72 69  |.<sprite.h=>spri|
00090af0  74 65 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |te_h>..Returns:.|
00090b00  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
00090b10  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
00090b20  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
00090b30  69 6f 6e 20 73 61 76 65  73 20 61 6c 6c 20 74 68  |ion saves all th|
00090b40  65 20 73 70 72 69 74 65  73 20 69 6e 20 61 20 73  |e sprites in a s|
00090b50  70 72 69 74 65 20 61 72  65 61 20 74 6f 20 61 20  |prite area to a |
00090b60  66 69 6c 65 2e 20 49 74  20 69 73 20 65 71 75 69  |file. It is equi|
00090b70  76 61 6c 65 6e 74 20 74  6f 20 3c 4f 53 5f 53 70  |valent to <OS_Sp|
00090b80  72 69 74 65 4f 70 3d 3e  53 57 49 3a 4f 53 5f 53  |riteOp=>SWI:OS_S|
00090b90  70 72 69 74 65 4f 70 3e  20 31 32 20 6f 72 20 2a  |priteOp> 12 or *|
00090ba0  53 53 61 76 65 20 77 68  65 6e 20 75 73 65 64 20  |SSave when used |
00090bb0  77 69 74 68 20 74 68 65  20 73 79 73 74 65 6d 20  |with the system |
00090bc0  61 72 65 61 2e 00 00 00  44 41 54 41 09 01 00 00  |area....DATA....|
00090bd0  73 70 72 69 74 65 5f 61  72 65 61 69 6e 66 6f 0a  |sprite_areainfo.|
00090be0  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
00090bf0  69 6e 65 64 20 69 6e 20  3c 44 65 73 6b 4c 69 62  |ined in <DeskLib|
00090c00  3a 53 70 72 69 74 65 2e  68 3d 3e 53 70 72 69 74  |:Sprite.h=>Sprit|
00090c10  65 5f 44 4c 3e 2e 20 49  74 20 69 73 20 64 65 66  |e_DL>. It is def|
00090c20  69 6e 65 64 20 61 73 20  74 68 65 20 66 6f 6c 6c  |ined as the foll|
00090c30  6f 77 69 6e 67 20 73 74  72 75 63 74 75 72 65 3a  |owing structure:|
00090c40  0a 0a 20 20 20 20 5c 7b  0a 20 20 20 20 20 20 20  |..    \{.       |
00090c50  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 61 72  | unsigned int ar|
00090c60  65 61 73 69 7a 65 3b 0a  20 20 20 20 20 20 20 20  |easize;.        |
00090c70  75 6e 73 69 67 6e 65 64  20 69 6e 74 20 6e 75 6d  |unsigned int num|
00090c80  73 70 72 69 74 65 73 3b  0a 20 20 20 20 20 20 20  |sprites;.       |
00090c90  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 66 69  | unsigned int fi|
00090ca0  72 73 74 6f 66 66 73 65  74 3b 0a 20 20 20 20 20  |rstoffset;.     |
00090cb0  20 20 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |   unsigned int |
00090cc0  66 72 65 65 6f 66 66 73  65 74 3b 0a 20 20 20 20  |freeoffset;.    |
00090cd0  7d 00 00 00 44 41 54 41  7d 00 00 00 73 70 72 69  |}...DATA}...spri|
00090ce0  74 65 5f 62 6f 78 0a 54  68 69 73 20 74 79 70 65  |te_box.This type|
00090cf0  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
00090d00  73 70 72 69 74 65 2e 68  3d 3e 73 70 72 69 74 65  |sprite.h=>sprite|
00090d10  5f 68 3e 20 61 73 20 74  68 65 20 66 6f 6c 6c 6f  |_h> as the follo|
00090d20  77 69 6e 67 20 73 74 72  75 63 74 75 72 65 3a 0a  |wing structure:.|
00090d30  0a 20 20 5c 7b 0a 20 20  20 20 69 6e 74 20 78 30  |.  \{.    int x0|
00090d40  2c 20 79 30 2c 20 78 31  2c 20 79 31 3b 0a 20 20  |, y0, x1, y1;.  |
00090d50  7d 00 00 00 44 41 54 41  c2 01 00 00 73 70 72 69  |}...DATA....spri|
00090d60  74 65 5f 63 68 61 6e 67  65 5f 73 69 7a 65 0a 53  |te_change_size.S|
00090d70  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
00090d80  3e 20 2a 73 70 72 69 74  65 5f 63 68 61 6e 67 65  |> *sprite_change|
00090d90  5f 73 69 7a 65 20 28 3c  73 70 72 69 74 65 5f 61  |_size (<sprite_a|
00090da0  72 65 61 3e 20 2a 61 72  65 61 2c 20 3c 73 70 72  |rea> *area, <spr|
00090db0  69 74 65 5f 69 64 3e 20  2a 73 70 72 2c 20 3c 42  |ite_id> *spr, <B|
00090dc0  4f 4f 4c 3e 20 72 6f 77  73 2c 20 69 6e 74 20 61  |OOL> rows, int a|
00090dd0  74 2c 20 69 6e 74 20 6e  75 6d 62 65 72 29 3b 0a  |t, int number);.|
00090de0  48 65 61 64 65 72 3a 09  3c 73 70 72 69 74 65 2e  |Header:.<sprite.|
00090df0  68 3d 3e 73 70 72 69 74  65 5f 68 3e 0a 0a 52 65  |h=>sprite_h>..Re|
00090e00  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
00090e10  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
00090e20  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
00090e30  73 20 66 75 6e 63 74 69  6f 6e 20 72 65 6d 6f 76  |s function remov|
00090e40  65 73 20 6f 72 20 69 6e  73 65 72 74 73 20 72 6f  |es or inserts ro|
00090e50  77 73 20 6f 72 20 63 6f  6c 75 6d 6e 73 2e 20 2f  |ws or columns. /|
00090e60  72 6f 77 73 2f 20 64 65  74 65 72 6d 69 6e 65 73  |rows/ determines|
00090e70  20 77 68 65 74 68 65 72  20 74 68 69 73 20 6f 70  | whether this op|
00090e80  65 72 61 74 65 73 20 6f  6e 20 72 6f 77 73 20 6f  |erates on rows o|
00090e90  72 20 63 6f 6c 75 6d 6e  73 2e 20 49 66 20 2f 6e  |r columns. If /n|
00090ea0  75 6d 62 65 72 2f 20 69  73 20 2d 76 65 20 74 68  |umber/ is -ve th|
00090eb0  65 6e 20 72 6f 77 73 2f  63 6f 6c 75 6d 6e 73 20  |en rows/columns |
00090ec0  61 72 65 20 64 65 6c 65  74 65 64 2e 20 54 68 69  |are deleted. Thi|
00090ed0  73 20 66 75 6e 63 74 69  6f 6e 20 69 73 20 65 71  |s function is eq|
00090ee0  75 69 76 61 6c 65 6e 74  20 74 6f 20 3c 4f 53 5f  |uivalent to <OS_|
00090ef0  53 70 72 69 74 65 4f 70  3d 3e 53 57 49 3a 4f 53  |SpriteOp=>SWI:OS|
00090f00  5f 53 70 72 69 74 65 4f  70 3e 73 20 35 37 20 61  |_SpriteOp>s 57 a|
00090f10  6e 64 20 35 38 2e 00 00  44 41 54 41 86 00 00 00  |nd 58...DATA....|
00090f20  73 70 72 69 74 65 5f 63  6f 6c 6f 75 72 0a 54 68  |sprite_colour.Th|
00090f30  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
00090f40  65 64 20 69 6e 20 3c 73  70 72 69 74 65 2e 68 3d  |ed in <sprite.h=|
00090f50  3e 73 70 72 69 74 65 5f  68 3e 20 61 73 20 74 68  |>sprite_h> as th|
00090f60  65 20 66 6f 6c 6c 6f 77  69 6e 67 20 73 74 72 75  |e following stru|
00090f70  63 74 75 72 65 3a 0a 0a  20 20 5c 7b 0a 20 20 20  |cture:..  \{.   |
00090f80  20 69 6e 74 20 63 6f 6c  6f 75 72 3b 0a 20 20 20  | int colour;.   |
00090f90  20 69 6e 74 20 74 69 6e  74 3b 0a 20 20 7d 00 00  | int tint;.  }..|
00090fa0  44 41 54 41 08 02 00 00  73 70 72 69 74 65 5f 63  |DATA....sprite_c|
00090fb0  6f 70 79 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |opy.Syntax:.<os_|
00090fc0  65 72 72 6f 72 3e 20 2a  73 70 72 69 74 65 5f 63  |error> *sprite_c|
00090fd0  6f 70 79 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |opy (<sprite_are|
00090fe0  61 3e 20 2a 61 72 65 61  2c 20 3c 73 70 72 69 74  |a> *area, <sprit|
00090ff0  65 5f 69 64 3e 20 2a 73  70 72 2c 20 63 68 61 72  |e_id> *spr, char|
00091000  20 2a 6e 61 6d 65 29 3b  0a 48 65 61 64 65 72 3a  | *name);.Header:|
00091010  09 3c 73 70 72 69 74 65  2e 68 3d 3e 73 70 72 69  |.<sprite.h=>spri|
00091020  74 65 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |te>..Returns:.Po|
00091030  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
00091040  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
00091050  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
00091060  6e 20 63 72 65 61 74 65  73 20 61 6e 20 65 78 61  |n creates an exa|
00091070  63 74 20 63 6f 70 79 20  6f 66 20 74 68 65 20 73  |ct copy of the s|
00091080  70 72 69 74 65 20 77 68  6f 73 65 20 49 44 20 69  |prite whose ID i|
00091090  73 20 67 69 76 65 6e 20  62 79 20 2f 73 70 72 2f  |s given by /spr/|
000910a0  2c 20 69 6e 20 74 68 65  20 73 70 65 63 69 66 69  |, in the specifi|
000910b0  65 64 20 73 70 72 69 74  65 20 61 72 65 61 2e 20  |ed sprite area. |
000910c0  54 68 65 20 6e 65 77 20  73 70 72 69 74 65 27 73  |The new sprite's|
000910d0  20 6e 61 6d 65 20 69 73  20 74 61 6b 65 6e 20 66  | name is taken f|
000910e0  72 6f 6d 20 74 68 65 20  73 74 72 69 6e 67 20 70  |rom the string p|
000910f0  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 2f 6e 61  |ointed to by /na|
00091100  6d 65 2f 2e 20 49 66 20  61 20 73 70 72 69 74 65  |me/. If a sprite|
00091110  20 6f 66 20 74 68 61 74  20 6e 61 6d 65 20 61 6c  | of that name al|
00091120  72 65 61 64 79 20 65 78  69 73 74 73 2c 20 61 6e  |ready exists, an|
00091130  20 65 72 72 6f 72 20 69  73 20 72 65 74 75 72 6e  | error is return|
00091140  65 64 2e 20 49 74 20 69  73 20 69 64 65 6e 74 69  |ed. It is identi|
00091150  63 61 6c 20 74 6f 20 3c  4f 53 5f 53 70 72 69 74  |cal to <OS_Sprit|
00091160  65 4f 70 3d 3e 53 57 49  3a 4f 53 5f 53 70 72 69  |eOp=>SWI:OS_Spri|
00091170  74 65 4f 70 3e 20 32 37  2c 20 6f 72 20 2a 53 43  |teOp> 27, or *SC|
00091180  6f 70 79 20 69 66 20 75  73 65 64 20 77 69 74 68  |opy if used with|
00091190  20 74 68 65 20 73 79 73  74 65 6d 20 73 70 72 69  | the system spri|
000911a0  74 65 20 61 72 65 61 2e  44 41 54 41 be 01 00 00  |te area.DATA....|
000911b0  53 70 72 69 74 65 5f 43  6f 70 79 0a 53 79 6e 74  |Sprite_Copy.Synt|
000911c0  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
000911d0  53 70 72 69 74 65 5f 43  6f 70 79 20 28 3c 73 70  |Sprite_Copy (<sp|
000911e0  72 69 74 65 5f 61 72 65  61 3e 20 61 72 65 61 2c  |rite_area> area,|
000911f0  20 63 68 61 72 20 2a 6f  6c 64 2c 20 63 68 61 72  | char *old, char|
00091200  20 2a 6e 65 77 29 3b 0a  48 65 61 64 65 72 3a 09  | *new);.Header:.|
00091210  3c 44 65 73 6b 4c 69 62  3a 53 70 72 69 74 65 2e  |<DeskLib:Sprite.|
00091220  68 3d 3e 53 70 72 69 74  65 5f 44 4c 3e 0a 0a 52  |h=>Sprite_DL>..R|
00091230  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
00091240  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
00091250  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
00091260  69 73 20 66 75 6e 63 74  69 6f 6e 20 63 72 65 61  |is function crea|
00091270  74 65 73 20 61 6e 20 65  78 61 63 74 20 63 6f 70  |tes an exact cop|
00091280  79 20 6f 66 20 74 68 65  20 73 70 72 69 74 65 20  |y of the sprite |
00091290  69 6e 20 74 68 65 20 67  69 76 65 6e 20 61 72 65  |in the given are|
000912a0  61 20 77 68 6f 73 65 20  6e 61 6d 65 20 69 73 20  |a whose name is |
000912b0  67 69 76 65 6e 20 69 6e  20 2f 6f 6c 64 2f 20 73  |given in /old/ s|
000912c0  6f 20 74 68 61 74 20 69  74 73 20 6e 65 77 20 6e  |o that its new n|
000912d0  61 6d 65 20 69 73 20 74  68 61 74 20 67 69 76 65  |ame is that give|
000912e0  6e 20 69 6e 20 2f 6e 65  77 2f 2e 20 41 6e 20 65  |n in /new/. An e|
000912f0  72 72 6f 72 20 69 73 20  72 65 74 75 72 6e 65 64  |rror is returned|
00091300  20 69 66 20 61 20 73 70  72 69 74 65 20 6f 66 20  | if a sprite of |
00091310  74 68 65 20 6e 65 77 20  6e 61 6d 65 20 61 6c 72  |the new name alr|
00091320  65 61 64 79 20 65 78 69  73 74 73 2e 20 49 74 20  |eady exists. It |
00091330  69 73 20 69 64 65 6e 74  69 63 61 6c 20 74 6f 20  |is identical to |
00091340  53 57 49 20 3c 4f 53 5f  53 70 72 69 74 65 4f 70  |SWI <OS_SpriteOp|
00091350  3d 3e 53 57 49 3a 4f 53  5f 53 70 72 69 74 65 4f  |=>SWI:OS_SpriteO|
00091360  70 3e 20 32 37 2e 00 00  44 41 54 41 b0 01 00 00  |p> 27...DATA....|
00091370  73 70 72 69 74 65 5f 63  72 65 61 74 65 0a 53 79  |sprite_create.Sy|
00091380  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00091390  20 2a 73 70 72 69 74 65  5f 63 72 65 61 74 65 20  | *sprite_create |
000913a0  28 3c 73 70 72 69 74 65  5f 61 72 65 61 3e 20 2a  |(<sprite_area> *|
000913b0  61 72 65 61 2c 20 63 68  61 72 20 2a 6e 61 6d 65  |area, char *name|
000913c0  2c 20 3c 73 70 72 69 74  65 5f 70 61 6c 66 6c 61  |, <sprite_palfla|
000913d0  67 3e 20 78 2c 20 69 6e  74 20 77 2c 20 69 6e 74  |g> x, int w, int|
000913e0  20 68 2c 20 69 6e 74 20  6d 29 3b 0a 48 65 61 64  | h, int m);.Head|
000913f0  65 72 3a 09 3c 73 70 72  69 74 65 2e 68 3d 3e 73  |er:.<sprite.h=>s|
00091400  70 72 69 74 65 5f 68 3e  0a 0a 52 65 74 75 72 6e  |prite_h>..Return|
00091410  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
00091420  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
00091430  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
00091440  6e 63 74 69 6f 6e 20 63  72 65 61 74 65 73 20 61  |nction creates a|
00091450  20 6e 65 77 2c 20 62 6c  61 6e 6b 2c 20 73 70 72  | new, blank, spr|
00091460  69 74 65 20 77 69 74 68  20 74 68 65 20 67 69 76  |ite with the giv|
00091470  65 6e 20 6e 61 6d 65 20  69 6e 20 74 68 65 20 73  |en name in the s|
00091480  70 72 69 74 65 20 61 72  65 61 20 73 70 65 63 69  |prite area speci|
00091490  66 69 65 64 2e 20 54 68  65 20 77 69 64 74 68 20  |fied. The width |
000914a0  61 6e 64 20 68 65 69 67  68 74 20 6f 66 20 74 68  |and height of th|
000914b0  65 20 73 70 72 69 74 65  20 69 6e 20 70 69 78 65  |e sprite in pixe|
000914c0  6c 73 20 61 72 65 20 67  69 76 65 6e 20 62 79 20  |ls are given by |
000914d0  2f 77 2f 20 61 6e 64 20  2f 68 2f 20 72 65 73 70  |/w/ and /h/ resp|
000914e0  65 63 74 69 76 65 6c 79  2e 20 54 68 65 20 73 63  |ectively. The sc|
000914f0  72 65 65 6e 20 6d 6f 64  65 20 6f 66 20 74 68 65  |reen mode of the|
00091500  20 73 70 72 69 74 65 20  69 73 20 67 69 76 65 6e  | sprite is given|
00091510  20 69 6e 20 2f 6d 2f 2e  44 41 54 41 ee 01 00 00  | in /m/.DATA....|
00091520  53 70 72 69 74 65 5f 43  72 65 61 74 65 0a 53 79  |Sprite_Create.Sy|
00091530  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00091540  20 2a 53 70 72 69 74 65  5f 43 72 65 61 74 65 20  | *Sprite_Create |
00091550  28 3c 73 70 72 69 74 65  5f 61 72 65 61 3e 20 61  |(<sprite_area> a|
00091560  72 65 61 2c 20 63 68 61  72 20 2a 6e 61 6d 65 2c  |rea, char *name,|
00091570  20 69 6e 74 20 70 61 6c  66 6c 61 67 2c 20 69 6e  | int palflag, in|
00091580  74 20 77 2c 20 69 6e 74  20 68 2c 20 69 6e 74 20  |t w, int h, int |
00091590  6d 6f 64 65 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |mode);.Header:.<|
000915a0  44 65 73 6b 4c 69 62 3a  53 70 72 69 74 65 2e 68  |DeskLib:Sprite.h|
000915b0  3d 3e 53 70 72 69 74 65  5f 44 4c 3e 0a 0a 52 65  |=>Sprite_DL>..Re|
000915c0  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
000915d0  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
000915e0  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
000915f0  73 20 66 75 6e 63 74 69  6f 6e 20 63 72 65 61 74  |s function creat|
00091600  65 73 20 61 20 6e 65 77  2c 20 62 6c 61 6e 6b 2c  |es a new, blank,|
00091610  20 73 70 72 69 74 65 20  77 69 74 68 20 74 68 65  | sprite with the|
00091620  20 67 69 76 65 6e 20 6e  61 6d 65 20 69 6e 20 74  | given name in t|
00091630  68 65 20 73 70 72 69 74  65 20 61 72 65 61 20 73  |he sprite area s|
00091640  70 65 63 69 66 69 65 64  2e 20 54 68 65 20 77 69  |pecified. The wi|
00091650  64 74 68 20 61 6e 64 20  68 65 69 67 68 74 20 6f  |dth and height o|
00091660  66 20 74 68 65 20 73 70  72 69 74 65 20 69 6e 20  |f the sprite in |
00091670  70 69 78 65 6c 73 20 61  72 65 20 67 69 76 65 6e  |pixels are given|
00091680  20 62 79 20 2f 77 2f 20  61 6e 64 20 2f 68 2f 20  | by /w/ and /h/ |
00091690  72 65 73 70 65 63 74 69  76 65 6c 79 2e 20 54 68  |respectively. Th|
000916a0  65 20 73 63 72 65 65 6e  20 6d 6f 64 65 20 6f 66  |e screen mode of|
000916b0  20 74 68 65 20 73 70 72  69 74 65 20 69 73 20 67  | the sprite is g|
000916c0  69 76 65 6e 20 69 6e 20  2f 6d 6f 64 65 2f 2e 20  |iven in /mode/. |
000916d0  54 68 65 20 73 70 72 69  74 65 20 77 69 6c 6c 20  |The sprite will |
000916e0  68 61 76 65 20 61 20 70  61 6c 65 74 74 65 20 69  |have a palette i|
000916f0  66 20 2f 70 61 6c 66 6c  61 67 2f 20 69 73 20 3c  |f /palflag/ is <|
00091700  54 52 55 45 3e 2e 00 00  44 41 54 41 45 01 00 00  |TRUE>...DATAE...|
00091710  73 70 72 69 74 65 5f 63  72 65 61 74 65 5f 6d 61  |sprite_create_ma|
00091720  73 6b 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |sk.Syntax:.<os_e|
00091730  72 72 6f 72 3e 20 2a 73  70 72 69 74 65 5f 63 72  |rror> *sprite_cr|
00091740  65 61 74 65 5f 6d 61 73  6b 20 28 3c 73 70 72 69  |eate_mask (<spri|
00091750  74 65 5f 61 72 65 61 3e  20 2a 61 72 65 61 2c 20  |te_area> *area, |
00091760  3c 73 70 72 69 74 65 5f  69 64 3e 20 2a 73 70 72  |<sprite_id> *spr|
00091770  29 3b 0a 48 65 61 64 65  72 3a 09 3c 73 70 72 69  |);.Header:.<spri|
00091780  74 65 2e 68 3d 3e 73 70  72 69 74 65 5f 68 3e 0a  |te.h=>sprite_h>.|
00091790  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
000917a0  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
000917b0  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
000917c0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 63 72  |This function cr|
000917d0  65 61 74 65 73 20 61 20  6d 61 73 6b 20 66 6f 72  |eates a mask for|
000917e0  20 74 68 65 20 73 70 65  63 69 66 69 65 64 20 73  | the specified s|
000917f0  70 72 69 74 65 20 77 69  74 68 20 61 6c 6c 20 70  |prite with all p|
00091800  69 78 65 6c 73 20 73 65  74 20 74 6f 20 62 65 20  |ixels set to be |
00091810  73 6f 6c 69 64 2e 20 49  74 20 69 73 20 65 71 75  |solid. It is equ|
00091820  69 76 61 6c 65 6e 74 20  74 6f 20 3c 4f 53 5f 53  |ivalent to <OS_S|
00091830  70 72 69 74 65 4f 70 3d  3e 53 57 49 3a 4f 53 5f  |priteOp=>SWI:OS_|
00091840  53 70 72 69 74 65 4f 70  3e 20 32 39 2e 00 00 00  |SpriteOp> 29....|
00091850  44 41 54 41 cd 01 00 00  73 70 72 69 74 65 5f 63  |DATA....sprite_c|
00091860  72 65 61 74 65 5f 72 70  0a 53 79 6e 74 61 78 3a  |reate_rp.Syntax:|
00091870  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 73 70 72  |.<os_error> *spr|
00091880  69 74 65 5f 63 72 65 61  74 65 5f 72 70 20 28 3c  |ite_create_rp (<|
00091890  73 70 72 69 74 65 5f 61  72 65 61 3e 20 2a 61 72  |sprite_area> *ar|
000918a0  65 61 2c 20 63 68 61 72  20 2a 6e 61 6d 65 2c 20  |ea, char *name, |
000918b0  3c 73 70 72 69 74 65 5f  70 61 6c 66 6c 61 67 3e  |<sprite_palflag>|
000918c0  20 78 2c 20 69 6e 74 20  77 2c 20 69 6e 74 20 68  | x, int w, int h|
000918d0  2c 20 69 6e 74 20 6d 2c  20 3c 73 70 72 69 74 65  |, int m, <sprite|
000918e0  5f 70 74 72 3e 20 2a 61  64 64 72 29 3b 0a 48 65  |_ptr> *addr);.He|
000918f0  61 64 65 72 3a 09 3c 73  70 72 69 74 65 2e 68 3d  |ader:.<sprite.h=|
00091900  3e 73 70 72 69 74 65 5f  68 3e 0a 0a 52 65 74 75  |>sprite_h>..Retu|
00091910  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00091920  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00091930  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00091940  66 75 6e 63 74 69 6f 6e  20 63 72 65 61 74 65 73  |function creates|
00091950  20 61 20 6e 65 77 2c 20  62 6c 61 6e 6b 2c 20 73  | a new, blank, s|
00091960  70 72 69 74 65 20 77 69  74 68 20 74 68 65 20 67  |prite with the g|
00091970  69 76 65 6e 20 6e 61 6d  65 20 69 6e 20 74 68 65  |iven name in the|
00091980  20 73 70 72 69 74 65 20  61 72 65 61 20 73 70 65  | sprite area spe|
00091990  63 69 66 69 65 64 2e 0a  0a 49 74 20 69 73 20 69  |cified...It is i|
000919a0  64 65 6e 74 69 63 61 6c  20 74 6f 20 74 68 65 20  |dentical to the |
000919b0  66 75 6e 63 74 69 6f 6e  20 3c 73 70 72 69 74 65  |function <sprite|
000919c0  5f 63 72 65 61 74 65 3e  2c 20 62 75 74 20 72 65  |_create>, but re|
000919d0  74 75 72 6e 73 20 74 68  65 20 61 64 64 72 65 73  |turns the addres|
000919e0  73 20 6f 66 20 74 68 65  20 73 70 72 69 74 65 20  |s of the sprite |
000919f0  69 6e 20 74 68 65 20 7b  2f 7d 73 70 72 69 74 65  |in the {/}sprite|
00091a00  5f 70 74 72 7b 2f 7d 20  70 6f 69 6e 74 65 64 20  |_ptr{/} pointed |
00091a10  74 6f 20 62 79 20 2f 61  64 64 72 2f 2e 00 00 00  |to by /addr/....|
00091a20  44 41 54 41 ea 00 00 00  53 70 72 69 74 65 5f 43  |DATA....Sprite_C|
00091a30  72 65 61 74 65 4d 61 73  6b 0a 53 79 6e 74 61 78  |reateMask.Syntax|
00091a40  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 53 70  |:.<os_error> *Sp|
00091a50  72 69 74 65 5f 43 72 65  61 74 65 4d 61 73 6b 20  |rite_CreateMask |
00091a60  28 3c 73 70 72 69 74 65  5f 61 72 65 61 3e 20 61  |(<sprite_area> a|
00091a70  72 65 61 2c 20 63 68 61  72 20 2a 6e 61 6d 65 29  |rea, char *name)|
00091a80  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
00091a90  69 62 3a 53 70 72 69 74  65 2e 68 3d 3e 53 70 72  |ib:Sprite.h=>Spr|
00091aa0  69 74 65 5f 44 4c 3e 0a  0a 52 65 74 75 72 6e 73  |ite_DL>..Returns|
00091ab0  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
00091ac0  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
00091ad0  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
00091ae0  63 74 69 6f 6e 20 63 72  65 61 74 65 73 20 61 20  |ction creates a |
00091af0  6d 61 73 6b 20 66 6f 72  20 74 68 65 20 67 69 76  |mask for the giv|
00091b00  65 6e 20 73 70 72 69 74  65 2e 00 00 44 41 54 41  |en sprite...DATA|
00091b10  77 01 00 00 53 70 72 69  74 65 5f 43 72 65 61 74  |w...Sprite_Creat|
00091b20  65 50 61 6c 65 74 74 65  0a 53 79 6e 74 61 78 3a  |ePalette.Syntax:|
00091b30  09 69 6e 74 20 53 70 72  69 74 65 5f 43 72 65 61  |.int Sprite_Crea|
00091b40  74 65 50 61 6c 65 74 74  65 20 28 3c 73 70 72 69  |tePalette (<spri|
00091b50  74 65 5f 61 72 65 61 3e  20 61 72 65 61 2c 20 63  |te_area> area, c|
00091b60  68 61 72 20 2a 6e 61 6d  65 2c 20 3c 42 4f 4f 4c  |har *name, <BOOL|
00091b70  3e 20 62 69 67 29 3b 0a  48 65 61 64 65 72 3a 09  |> big);.Header:.|
00091b80  3c 44 65 73 6b 4c 69 62  3a 53 70 72 69 74 65 2e  |<DeskLib:Sprite.|
00091b90  68 3d 3e 53 70 72 69 74  65 5f 44 4c 3e 0a 0a 52  |h=>Sprite_DL>..R|
00091ba0  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
00091bb0  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
00091bc0  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
00091bd0  69 73 20 66 75 6e 63 74  69 6f 6e 20 63 72 65 61  |is function crea|
00091be0  74 65 73 20 61 20 70 61  6c 65 74 74 65 20 66 6f  |tes a palette fo|
00091bf0  72 20 74 68 65 20 67 69  76 65 6e 20 73 70 72 69  |r the given spri|
00091c00  74 65 2e 20 49 66 20 2f  62 69 67 2f 20 69 73 20  |te. If /big/ is |
00091c10  74 72 75 65 20 74 68 65  6e 20 61 20 32 35 36 20  |true then a 256 |
00091c20  65 6e 74 72 79 20 70 61  6c 65 74 74 65 20 69 73  |entry palette is|
00091c30  20 63 72 65 61 74 65 64  20 28 52 49 53 43 20 4f  | created (RISC O|
00091c40  53 20 33 20 6f 6e 6c 79  29 2e 20 54 68 69 73 20  |S 3 only). This |
00091c50  69 73 20 65 71 75 69 76  61 6c 65 6e 74 20 74 6f  |is equivalent to|
00091c60  20 3c 4f 53 5f 53 70 72  69 74 65 4f 70 3d 3e 53  | <OS_SpriteOp=>S|
00091c70  57 49 3a 4f 53 5f 53 70  72 69 74 65 6f 70 3e 20  |WI:OS_Spriteop> |
00091c80  33 37 2e 00 44 41 54 41  68 01 00 00 73 70 72 69  |37..DATAh...spri|
00091c90  74 65 5f 64 65 6c 65 74  65 0a 53 79 6e 74 61 78  |te_delete.Syntax|
00091ca0  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 73 70  |:.<os_error> *sp|
00091cb0  72 69 74 65 5f 64 65 6c  65 74 65 20 28 3c 73 70  |rite_delete (<sp|
00091cc0  72 69 74 65 5f 61 72 65  61 3e 20 2a 61 72 65 61  |rite_area> *area|
00091cd0  2c 20 3c 73 70 72 69 74  65 5f 69 64 3e 20 2a 73  |, <sprite_id> *s|
00091ce0  70 72 29 3b 0a 48 65 61  64 65 72 3a 09 3c 73 70  |pr);.Header:.<sp|
00091cf0  72 69 74 65 2e 68 3d 3e  73 70 72 69 74 65 5f 68  |rite.h=>sprite_h|
00091d00  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
00091d10  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
00091d20  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
00091d30  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00091d40  64 65 6c 65 74 65 73 20  74 68 65 20 73 70 72 69  |deletes the spri|
00091d50  74 65 20 77 68 6f 73 65  20 49 44 20 69 73 20 67  |te whose ID is g|
00091d60  69 76 65 6e 20 69 6e 20  2f 73 70 72 2f 2c 20 69  |iven in /spr/, i|
00091d70  6e 20 74 68 65 20 61 72  65 61 20 73 70 65 63 69  |n the area speci|
00091d80  66 69 65 64 2e 20 49 74  20 69 73 20 69 64 65 6e  |fied. It is iden|
00091d90  74 69 63 61 6c 20 74 6f  20 3c 4f 53 5f 53 70 72  |tical to <OS_Spr|
00091da0  69 74 65 4f 70 3d 3e 53  57 49 3a 4f 53 5f 53 70  |iteOp=>SWI:OS_Sp|
00091db0  72 69 74 65 4f 70 3e 20  32 35 2c 20 6f 72 20 2a  |riteOp> 25, or *|
00091dc0  53 44 65 6c 65 74 65 20  69 66 20 75 73 65 64 20  |SDelete if used |
00091dd0  77 69 74 68 20 74 68 65  20 73 79 73 74 65 6d 20  |with the system |
00091de0  73 70 72 69 74 65 20 61  72 65 61 2e 44 41 54 41  |sprite area.DATA|
00091df0  23 01 00 00 53 70 72 69  74 65 5f 44 65 6c 65 74  |#...Sprite_Delet|
00091e00  65 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |e.Syntax:.<os_er|
00091e10  72 6f 72 3e 20 2a 53 70  72 69 74 65 5f 44 65 6c  |ror> *Sprite_Del|
00091e20  65 74 65 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |ete (<sprite_are|
00091e30  61 3e 20 61 72 65 61 2c  20 63 68 61 72 20 2a 6e  |a> area, char *n|
00091e40  61 6d 65 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |ame);.Header:.<D|
00091e50  65 73 6b 4c 69 62 3a 53  70 72 69 74 65 2e 68 3d  |eskLib:Sprite.h=|
00091e60  3e 53 70 72 69 74 65 5f  44 4c 3e 0a 0a 52 65 74  |>Sprite_DL>..Ret|
00091e70  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
00091e80  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
00091e90  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
00091ea0  20 66 75 6e 63 74 69 6f  6e 20 64 65 6c 65 74 65  | function delete|
00091eb0  73 20 74 68 65 20 73 70  72 69 74 65 20 77 68 6f  |s the sprite who|
00091ec0  73 65 20 6e 61 6d 65 20  69 73 20 67 69 76 65 6e  |se name is given|
00091ed0  2c 20 69 6e 20 74 68 65  20 61 72 65 61 20 73 70  |, in the area sp|
00091ee0  65 63 69 66 69 65 64 2e  20 49 74 20 69 73 20 69  |ecified. It is i|
00091ef0  64 65 6e 74 69 63 61 6c  20 74 6f 20 53 57 49 20  |dentical to SWI |
00091f00  4f 53 5f 53 70 72 69 74  65 4f 70 20 32 35 2e 00  |OS_SpriteOp 25..|
00091f10  44 41 54 41 83 01 00 00  73 70 72 69 74 65 5f 64  |DATA....sprite_d|
00091f20  65 6c 65 74 65 5f 72 6f  77 0a 53 79 6e 74 61 78  |elete_row.Syntax|
00091f30  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 73 70  |:.<os_error> *sp|
00091f40  72 69 74 65 5f 64 65 6c  65 74 65 5f 72 6f 77 20  |rite_delete_row |
00091f50  28 3c 73 70 72 69 74 65  5f 61 72 65 61 3e 20 2a  |(<sprite_area> *|
00091f60  61 72 65 61 2c 20 3c 73  70 72 69 74 65 5f 69 64  |area, <sprite_id|
00091f70  3e 20 2a 73 70 72 2c 20  69 6e 74 20 72 6f 77 29  |> *spr, int row)|
00091f80  3b 0a 48 65 61 64 65 72  3a 09 3c 73 70 72 69 74  |;.Header:.<sprit|
00091f90  65 2e 68 3d 3e 73 70 72  69 74 65 5f 68 3e 0a 0a  |e.h=>sprite_h>..|
00091fa0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00091fb0  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00091fc0  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00091fd0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 64 65 6c  |his function del|
00091fe0  65 74 65 73 20 61 20 72  6f 77 20 69 6e 20 74 68  |etes a row in th|
00091ff0  65 20 73 70 72 69 74 65  20 61 74 20 74 68 65 20  |e sprite at the |
00092000  70 6f 73 69 74 69 6f 6e  20 69 64 65 6e 74 69 66  |position identif|
00092010  69 65 64 20 28 74 68 65  20 62 6f 74 74 6f 6d 20  |ied (the bottom |
00092020  72 6f 77 20 69 73 20 72  6f 77 20 30 29 2c 20 73  |row is row 0), s|
00092030  68 69 66 74 69 6e 67 20  61 6c 6c 20 72 6f 77 73  |hifting all rows|
00092040  20 61 62 6f 76 65 20 69  74 20 28 69 66 20 61 6e  | above it (if an|
00092050  79 29 20 64 6f 77 6e 20  6f 6e 65 2e 20 49 74 20  |y) down one. It |
00092060  69 73 20 65 71 75 69 76  61 6c 65 6e 74 20 74 6f  |is equivalent to|
00092070  20 3c 4f 53 5f 53 70 72  69 74 65 4f 70 3d 3e 53  | <OS_SpriteOp=>S|
00092080  57 49 3a 4f 53 5f 53 70  72 69 74 65 4f 70 3e 20  |WI:OS_SpriteOp> |
00092090  33 32 2e 00 44 41 54 41  8d 01 00 00 53 70 72 69  |32..DATA....Spri|
000920a0  74 65 5f 44 65 6c 65 74  65 43 6f 6c 75 6d 6e 0a  |te_DeleteColumn.|
000920b0  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
000920c0  72 3e 20 2a 53 70 72 69  74 65 5f 44 65 6c 65 74  |r> *Sprite_Delet|
000920d0  65 43 6f 6c 75 6d 6e 20  28 3c 73 70 72 69 74 65  |eColumn (<sprite|
000920e0  5f 61 72 65 61 3e 20 61  72 65 61 2c 20 63 68 61  |_area> area, cha|
000920f0  72 20 2a 6e 61 6d 65 2c  20 69 6e 74 20 70 6f 73  |r *name, int pos|
00092100  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
00092110  4c 69 62 3a 53 70 72 69  74 65 2e 68 3d 3e 53 70  |Lib:Sprite.h=>Sp|
00092120  72 69 74 65 5f 44 4c 3e  0a 0a 52 65 74 75 72 6e  |rite_DL>..Return|
00092130  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
00092140  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
00092150  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
00092160  6e 63 74 69 6f 6e 20 64  65 6c 65 74 65 73 20 61  |nction deletes a|
00092170  20 63 6f 6c 75 6d 6e 20  69 6e 20 74 68 65 20 73  | column in the s|
00092180  70 72 69 74 65 20 61 74  20 74 68 65 20 70 6f 73  |prite at the pos|
00092190  69 74 69 6f 6e 20 69 64  65 6e 74 69 66 69 65 64  |ition identified|
000921a0  20 28 74 68 65 20 6c 65  66 74 20 63 6f 6c 75 6d  | (the left colum|
000921b0  6e 20 69 73 20 72 6f 77  20 30 29 2c 20 73 68 69  |n is row 0), shi|
000921c0  66 74 69 6e 67 20 61 6c  6c 20 72 6f 77 73 20 61  |fting all rows a|
000921d0  66 74 65 72 20 69 74 20  28 69 66 20 61 6e 79 29  |fter it (if any)|
000921e0  20 6c 65 66 74 20 6f 6e  65 2e 20 49 74 20 69 73  | left one. It is|
000921f0  20 65 71 75 69 76 61 6c  65 6e 74 20 74 6f 20 3c  | equivalent to <|
00092200  4f 53 5f 53 70 72 69 74  65 4f 70 3d 3e 53 57 49  |OS_SpriteOp=>SWI|
00092210  3a 4f 53 5f 53 70 72 69  74 65 4f 70 3e 20 34 36  |:OS_SpriteOp> 46|
00092220  2e 00 00 00 44 41 54 41  83 01 00 00 53 70 72 69  |....DATA....Spri|
00092230  74 65 5f 44 65 6c 65 74  65 52 6f 77 0a 53 79 6e  |te_DeleteRow.Syn|
00092240  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
00092250  2a 53 70 72 69 74 65 5f  44 65 6c 65 74 65 52 6f  |*Sprite_DeleteRo|
00092260  77 20 28 3c 73 70 72 69  74 65 5f 61 72 65 61 3e  |w (<sprite_area>|
00092270  20 61 72 65 61 2c 20 63  68 61 72 20 2a 6e 61 6d  | area, char *nam|
00092280  65 2c 20 69 6e 74 20 70  6f 73 29 3b 0a 48 65 61  |e, int pos);.Hea|
00092290  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 53 70  |der:.<DeskLib:Sp|
000922a0  72 69 74 65 2e 68 3d 3e  53 70 72 69 74 65 5f 44  |rite.h=>Sprite_D|
000922b0  4c 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |L>..Returns:.Poi|
000922c0  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000922d0  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000922e0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000922f0  20 64 65 6c 65 74 65 73  20 61 20 72 6f 77 20 69  | deletes a row i|
00092300  6e 20 74 68 65 20 73 70  72 69 74 65 20 61 74 20  |n the sprite at |
00092310  74 68 65 20 70 6f 73 69  74 69 6f 6e 20 69 64 65  |the position ide|
00092320  6e 74 69 66 69 65 64 20  28 74 68 65 20 62 6f 74  |ntified (the bot|
00092330  74 6f 6d 20 72 6f 77 20  69 73 20 72 6f 77 20 30  |tom row is row 0|
00092340  29 2c 20 73 68 69 66 74  69 6e 67 20 61 6c 6c 20  |), shifting all |
00092350  72 6f 77 73 20 61 62 6f  76 65 20 69 74 20 28 69  |rows above it (i|
00092360  66 20 61 6e 79 29 20 64  6f 77 6e 20 6f 6e 65 2e  |f any) down one.|
00092370  20 49 74 20 69 73 20 65  71 75 69 76 61 6c 65 6e  | It is equivalen|
00092380  74 20 74 6f 20 3c 4f 53  5f 53 70 72 69 74 65 4f  |t to <OS_SpriteO|
00092390  70 3d 3e 53 57 49 3a 4f  53 5f 53 70 72 69 74 65  |p=>SWI:OS_Sprite|
000923a0  4f 70 3e 20 33 32 2e 00  44 41 54 41 dc 05 00 00  |Op> 32..DATA....|
000923b0  44 65 73 6b 4c 69 62 3a  53 70 72 69 74 65 2e 68  |DeskLib:Sprite.h|
000923c0  0a 56 65 72 73 69 6f 6e  3a 20 30 2e 32 38 20 28  |.Version: 0.28 (|
000923d0  32 32 20 4f 63 74 20 31  39 39 34 29 0a 23 6c 69  |22 Oct 1994).#li|
000923e0  6e 65 0a 54 68 69 73 20  6c 69 62 72 61 72 79 20  |ne.This library |
000923f0  64 65 63 6c 61 72 65 73  20 66 75 6e 63 74 69 6f  |declares functio|
00092400  6e 73 20 61 6e 64 20 74  79 70 65 73 20 66 6f 72  |ns and types for|
00092410  20 73 69 6d 70 6c 65 20  68 61 6e 64 6c 69 6e 67  | simple handling|
00092420  20 6f 66 20 73 70 72 69  74 65 73 2e 20 46 75 6e  | of sprites. Fun|
00092430  63 74 69 6f 6e 73 20 6f  6e 6c 79 20 6f 70 65 72  |ctions only oper|
00092440  61 74 65 20 6f 6e 20 6e  61 6d 65 64 20 73 70 72  |ate on named spr|
00092450  69 74 65 73 20 69 6e 20  61 20 75 73 65 72 20 73  |ites in a user s|
00092460  70 72 69 74 65 20 61 72  65 61 2e 0a 0a 46 75 6e  |prite area...Fun|
00092470  63 74 69 6f 6e 73 3a 0a  0a 23 74 61 62 6c 65 20  |ctions:..#table |
00092480  63 6f 6c 75 6d 6e 73 20  33 0a 3c 53 70 72 69 74  |columns 3.<Sprit|
00092490  65 5f 53 63 72 65 65 6e  53 61 76 65 3d 3e 53 70  |e_ScreenSave=>Sp|
000924a0  72 69 74 65 5f 53 63 72  65 65 6e 53 61 76 65 5f  |rite_ScreenSave_|
000924b0  3e 0a 3c 53 70 72 69 74  65 5f 53 63 72 65 65 6e  |>.<Sprite_Screen|
000924c0  4c 6f 61 64 3d 3e 53 70  72 69 74 65 5f 53 63 72  |Load=>Sprite_Scr|
000924d0  65 65 6e 4c 6f 61 64 5f  3e 0a 3c 53 70 72 69 74  |eenLoad_>.<Sprit|
000924e0  65 5f 49 6e 69 74 41 72  65 61 3e 0a 3c 53 70 72  |e_InitArea>.<Spr|
000924f0  69 74 65 5f 4c 6f 61 64  3e 0a 3c 53 70 72 69 74  |ite_Load>.<Sprit|
00092500  65 5f 4c 6f 61 64 46 69  6c 65 3e 0a 3c 53 70 72  |e_LoadFile>.<Spr|
00092510  69 74 65 5f 4c 6f 61 64  46 69 6c 65 73 3e 0a 3c  |ite_LoadFiles>.<|
00092520  53 70 72 69 74 65 5f 4d  65 72 67 65 3e 0a 3c 53  |Sprite_Merge>.<S|
00092530  70 72 69 74 65 5f 53 61  76 65 3e 0a 3c 53 70 72  |prite_Save>.<Spr|
00092540  69 74 65 5f 43 72 65 61  74 65 3d 3e 53 70 72 69  |ite_Create=>Spri|
00092550  74 65 5f 43 72 65 61 74  65 5f 3e 0a 3c 53 70 72  |te_Create_>.<Spr|
00092560  69 74 65 5f 44 65 6c 65  74 65 3d 3e 53 70 72 69  |ite_Delete=>Spri|
00092570  74 65 5f 44 65 6c 65 74  65 5f 3e 0a 3c 53 70 72  |te_Delete_>.<Spr|
00092580  69 74 65 5f 52 65 6e 61  6d 65 3d 3e 53 70 72 69  |ite_Rename=>Spri|
00092590  74 65 5f 52 65 6e 61 6d  65 5f 3e 0a 3c 53 70 72  |te_Rename_>.<Spr|
000925a0  69 74 65 5f 43 6f 70 79  3d 3e 53 70 72 69 74 65  |ite_Copy=>Sprite|
000925b0  5f 43 6f 70 79 5f 3e 0a  3c 53 70 72 69 74 65 5f  |_Copy_>.<Sprite_|
000925c0  47 65 74 3d 3e 53 70 72  69 74 65 5f 47 65 74 5f  |Get=>Sprite_Get_|
000925d0  3e 0a 3c 53 70 72 69 74  65 5f 50 6c 6f 74 3e 0a  |>.<Sprite_Plot>.|
000925e0  3c 53 70 72 69 74 65 5f  52 65 61 64 49 6e 66 6f  |<Sprite_ReadInfo|
000925f0  3e 0a 3c 53 70 72 69 74  65 5f 52 65 64 69 72 65  |>.<Sprite_Redire|
00092600  63 74 3e 0a 3c 53 70 72  69 74 65 5f 55 6e 52 65  |ct>.<Sprite_UnRe|
00092610  64 69 72 65 63 74 3e 0a  3c 53 70 72 69 74 65 5f  |direct>.<Sprite_|
00092620  52 65 61 64 53 61 76 65  41 72 65 61 53 69 7a 65  |ReadSaveAreaSize|
00092630  3e 0a 3c 53 70 72 69 74  65 5f 52 65 61 64 43 6f  |>.<Sprite_ReadCo|
00092640  6e 74 72 6f 6c 3e 0a 3c  53 70 72 69 74 65 5f 47  |ntrol>.<Sprite_G|
00092650  65 74 4e 61 6d 65 3d 3e  53 70 72 69 74 65 5f 47  |etName=>Sprite_G|
00092660  65 74 4e 61 6d 65 5f 3e  0a 3c 53 70 72 69 74 65  |etName_>.<Sprite|
00092670  5f 43 72 65 61 74 65 4d  61 73 6b 3e 0a 3c 53 70  |_CreateMask>.<Sp|
00092680  72 69 74 65 5f 52 65 6d  6f 76 65 4d 61 73 6b 3e  |rite_RemoveMask>|
00092690  0a 3c 53 70 72 69 74 65  5f 49 6e 73 65 72 74 52  |.<Sprite_InsertR|
000926a0  6f 77 3e 0a 3c 53 70 72  69 74 65 5f 44 65 6c 65  |ow>.<Sprite_Dele|
000926b0  74 65 52 6f 77 3e 0a 3c  53 70 72 69 74 65 5f 46  |teRow>.<Sprite_F|
000926c0  6c 69 70 58 3e 0a 3c 53  70 72 69 74 65 5f 41 70  |lipX>.<Sprite_Ap|
000926d0  70 65 6e 64 3e 0a 3c 53  70 72 69 74 65 5f 43 72  |pend>.<Sprite_Cr|
000926e0  65 61 74 65 50 61 6c 65  74 74 65 3e 0a 3c 53 70  |eatePalette>.<Sp|
000926f0  72 69 74 65 5f 52 65 6d  6f 76 65 50 61 6c 65 74  |rite_RemovePalet|
00092700  74 65 3e 0a 3c 53 70 72  69 74 65 5f 52 65 61 64  |te>.<Sprite_Read|
00092710  50 69 78 65 6c 3d 3e 53  70 72 69 74 65 5f 52 65  |Pixel=>Sprite_Re|
00092720  61 64 50 69 78 65 6c 5f  3e 0a 3c 53 70 72 69 74  |adPixel_>.<Sprit|
00092730  65 5f 57 72 69 74 65 50  69 78 65 6c 3d 3e 53 70  |e_WritePixel=>Sp|
00092740  72 69 74 65 5f 57 72 69  74 65 50 69 78 65 6c 5f  |rite_WritePixel_|
00092750  3e 0a 3c 53 70 72 69 74  65 5f 52 65 61 64 4d 61  |>.<Sprite_ReadMa|
00092760  73 6b 3d 3e 53 70 72 69  74 65 5f 52 65 61 64 4d  |sk=>Sprite_ReadM|
00092770  61 73 6b 5f 3e 0a 3c 53  70 72 69 74 65 5f 57 72  |ask_>.<Sprite_Wr|
00092780  69 74 65 4d 61 73 6b 3d  3e 53 70 72 69 74 65 5f  |iteMask=>Sprite_|
00092790  57 72 69 74 65 4d 61 73  6b 5f 3e 0a 3c 53 70 72  |WriteMask_>.<Spr|
000927a0  69 74 65 5f 49 6e 73 65  72 74 43 6f 6c 75 6d 6e  |ite_InsertColumn|
000927b0  3e 0a 3c 53 70 72 69 74  65 5f 44 65 6c 65 74 65  |>.<Sprite_Delete|
000927c0  43 6f 6c 75 6d 6e 3e 0a  3c 53 70 72 69 74 65 5f  |Column>.<Sprite_|
000927d0  46 6c 69 70 59 3e 0a 3c  53 70 72 69 74 65 5f 50  |FlipY>.<Sprite_P|
000927e0  6c 6f 74 4d 61 73 6b 3e  0a 3c 53 70 72 69 74 65  |lotMask>.<Sprite|
000927f0  5f 50 6c 6f 74 4d 61 73  6b 53 63 61 6c 65 64 3e  |_PlotMaskScaled>|
00092800  0a 3c 53 70 72 69 74 65  5f 50 6c 6f 74 53 63 61  |.<Sprite_PlotSca|
00092810  6c 65 64 3e 0a 3c 53 70  72 69 74 65 5f 50 6c 6f  |led>.<Sprite_Plo|
00092820  74 47 72 65 79 3e 0a 3c  53 70 72 69 74 65 5f 57  |tGrey>.<Sprite_W|
00092830  69 6d 70 50 6c 6f 74 3e  0a 3c 53 70 72 69 74 65  |impPlot>.<Sprite|
00092840  5f 4d 65 6d 6f 72 79 53  69 7a 65 3e 0a 3c 53 70  |_MemorySize>.<Sp|
00092850  72 69 74 65 5f 49 63 6f  6e 4d 65 6d 6f 72 79 53  |rite_IconMemoryS|
00092860  69 7a 65 3e 0a 23 65 6e  64 74 61 62 6c 65 0a 0a  |ize>.#endtable..|
00092870  4d 61 63 72 6f 73 3a 0a  0a 23 69 6e 64 65 6e 74  |Macros:..#indent|
00092880  20 34 0a 23 54 61 62 6c  65 20 31 20 32 34 0a 3c  | 4.#Table 1 24.<|
00092890  73 70 72 69 74 65 5f 4d  41 58 4e 41 4d 45 3e 0a  |sprite_MAXNAME>.|
000928a0  3c 73 70 72 69 74 65 70  6f 6f 6c 5f 53 59 53 54  |<spritepool_SYST|
000928b0  45 4d 3e 0a 3c 73 70 72  69 74 65 70 6f 6f 6c 5f  |EM>.<spritepool_|
000928c0  57 49 4d 50 3e 0a 23 45  6e 64 54 61 62 6c 65 0a  |WIMP>.#EndTable.|
000928d0  23 69 6e 64 65 6e 74 0a  0a 54 79 70 65 73 3a 0a  |#indent..Types:.|
000928e0  0a 23 69 6e 64 65 6e 74  20 37 0a 23 54 61 62 6c  |.#indent 7.#Tabl|
000928f0  65 20 33 20 32 34 0a 3c  73 70 72 69 74 65 3e 0a  |e 3 24.<sprite>.|
00092900  3c 73 70 72 69 74 65 5f  61 72 65 61 3e 0a 3c 73  |<sprite_area>.<s|
00092910  70 72 69 74 65 5f 61 72  65 61 69 6e 66 6f 3e 0a  |prite_areainfo>.|
00092920  3c 73 70 72 69 74 65 5f  68 65 61 64 65 72 3e 0a  |<sprite_header>.|
00092930  3c 73 70 72 69 74 65 5f  69 6e 66 6f 3e 0a 3c 73  |<sprite_info>.<s|
00092940  70 72 69 74 65 5f 6f 75  74 70 75 74 73 74 61 74  |prite_outputstat|
00092950  65 3e 0a 3c 73 70 72 69  74 65 6d 65 6d 5f 66 6c  |e>.<spritemem_fl|
00092960  61 67 73 3e 0a 3c 73 70  72 69 74 65 5f 73 63 61  |ags>.<sprite_sca|
00092970  6c 65 66 61 63 74 6f 72  73 3e 0a 23 45 6e 64 54  |lefactors>.#EndT|
00092980  61 62 6c 65 44 41 54 41  97 00 00 00 73 70 72 69  |ableDATA....spri|
00092990  74 65 5f 66 61 63 74 6f  72 73 0a 54 68 69 73 20  |te_factors.This |
000929a0  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
000929b0  69 6e 20 3c 73 70 72 69  74 65 2e 68 3d 3e 73 70  |in <sprite.h=>sp|
000929c0  72 69 74 65 5f 68 3e 2e  20 49 74 20 69 73 20 61  |rite_h>. It is a|
000929d0  20 73 74 72 75 63 74 75  72 65 20 63 6f 6e 74 61  | structure conta|
000929e0  69 6e 69 6e 67 20 73 63  61 6c 65 20 66 61 63 74  |ining scale fact|
000929f0  6f 72 73 3a 0a 0a 20 20  5c 7b 0a 20 20 20 20 69  |ors:..  \{.    i|
00092a00  6e 74 20 78 6d 61 67 2c  79 6d 61 67 2c 78 64 69  |nt xmag,ymag,xdi|
00092a10  76 2c 79 64 69 76 3b 0a  20 20 7d 00 44 41 54 41  |v,ydiv;.  }.DATA|
00092a20  3d 01 00 00 73 70 72 69  74 65 5f 66 6c 69 70 5f  |=...sprite_flip_|
00092a30  78 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |x.Syntax:.<os_er|
00092a40  72 6f 72 3e 20 2a 73 70  72 69 74 65 5f 66 6c 69  |ror> *sprite_fli|
00092a50  70 5f 78 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |p_x (<sprite_are|
00092a60  61 3e 20 2a 61 72 65 61  2c 20 3c 73 70 72 69 74  |a> *area, <sprit|
00092a70  65 5f 69 64 3e 20 2a 73  70 72 29 3b 0a 48 65 61  |e_id> *spr);.Hea|
00092a80  64 65 72 3a 09 3c 73 70  72 69 74 65 2e 68 3d 3e  |der:.<sprite.h=>|
00092a90  73 70 72 69 74 65 5f 68  3e 0a 0a 52 65 74 75 72  |sprite_h>..Retur|
00092aa0  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
00092ab0  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
00092ac0  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
00092ad0  75 6e 63 74 69 6f 6e 20  66 6c 69 70 73 20 74 68  |unction flips th|
00092ae0  65 20 73 70 65 63 69 66  69 65 64 20 73 70 72 69  |e specified spri|
00092af0  74 65 20 61 62 6f 75 74  20 74 68 65 20 78 20 61  |te about the x a|
00092b00  78 69 73 2c 20 69 65 20  72 65 76 65 72 73 65 73  |xis, ie reverses|
00092b10  20 69 74 20 74 6f 70 2d  74 6f 2d 62 6f 74 74 6f  | it top-to-botto|
00092b20  6d 2e 20 49 74 20 69 73  20 65 71 75 69 76 61 6c  |m. It is equival|
00092b30  65 6e 74 20 74 6f 20 3c  4f 53 5f 53 70 72 69 74  |ent to <OS_Sprit|
00092b40  65 4f 70 3d 3e 53 57 49  3a 4f 53 5f 53 70 72 69  |eOp=>SWI:OS_Spri|
00092b50  74 65 4f 70 3e 20 33 33  2e 00 00 00 44 41 54 41  |teOp> 33....DATA|
00092b60  3d 01 00 00 73 70 72 69  74 65 5f 66 6c 69 70 5f  |=...sprite_flip_|
00092b70  79 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |y.Syntax:.<os_er|
00092b80  72 6f 72 3e 20 2a 73 70  72 69 74 65 5f 66 6c 69  |ror> *sprite_fli|
00092b90  70 5f 79 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |p_y (<sprite_are|
00092ba0  61 3e 20 2a 61 72 65 61  2c 20 3c 73 70 72 69 74  |a> *area, <sprit|
00092bb0  65 5f 69 64 3e 20 2a 73  70 72 29 3b 0a 48 65 61  |e_id> *spr);.Hea|
00092bc0  64 65 72 3a 09 3c 73 70  72 69 74 65 2e 68 3d 3e  |der:.<sprite.h=>|
00092bd0  73 70 72 69 74 65 5f 68  3e 0a 0a 52 65 74 75 72  |sprite_h>..Retur|
00092be0  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
00092bf0  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
00092c00  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
00092c10  75 6e 63 74 69 6f 6e 20  66 6c 69 70 73 20 74 68  |unction flips th|
00092c20  65 20 73 70 65 63 69 66  69 65 64 20 73 70 72 69  |e specified spri|
00092c30  74 65 20 61 62 6f 75 74  20 74 68 65 20 79 20 61  |te about the y a|
00092c40  78 69 73 2c 20 69 65 20  72 65 76 65 72 73 65 73  |xis, ie reverses|
00092c50  20 69 74 20 6c 65 66 74  2d 74 6f 2d 72 69 67 68  | it left-to-righ|
00092c60  74 2e 20 49 74 20 69 73  20 65 71 75 69 76 61 6c  |t. It is equival|
00092c70  65 6e 74 20 74 6f 20 3c  4f 53 5f 53 70 72 69 74  |ent to <OS_Sprit|
00092c80  65 4f 70 3d 3e 53 57 49  3a 4f 53 5f 53 70 72 69  |eOp=>SWI:OS_Spri|
00092c90  74 65 4f 70 3e 20 34 37  2e 00 00 00 44 41 54 41  |teOp> 47....DATA|
00092ca0  3d 01 00 00 53 70 72 69  74 65 5f 46 6c 69 70 58  |=...Sprite_FlipX|
00092cb0  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00092cc0  6f 72 3e 20 2a 53 70 72  69 74 65 5f 46 6c 69 70  |or> *Sprite_Flip|
00092cd0  58 20 28 3c 73 70 72 69  74 65 5f 61 72 65 61 3e  |X (<sprite_area>|
00092ce0  20 61 72 65 61 2c 20 63  68 61 72 20 2a 6e 61 6d  | area, char *nam|
00092cf0  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |e);.Header:.<Des|
00092d00  6b 4c 69 62 3a 53 70 72  69 74 65 2e 68 3d 3e 53  |kLib:Sprite.h=>S|
00092d10  70 72 69 74 65 5f 44 4c  3e 0a 0a 52 65 74 75 72  |prite_DL>..Retur|
00092d20  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
00092d30  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
00092d40  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
00092d50  75 6e 63 74 69 6f 6e 20  66 6c 69 70 73 20 74 68  |unction flips th|
00092d60  65 20 73 70 65 63 69 66  69 65 64 20 73 70 72 69  |e specified spri|
00092d70  74 65 20 61 62 6f 75 74  20 74 68 65 20 58 20 61  |te about the X a|
00092d80  78 69 73 2c 20 69 65 20  72 65 76 65 72 73 65 73  |xis, ie reverses|
00092d90  20 69 74 20 74 6f 70 2d  74 6f 2d 62 6f 74 74 6f  | it top-to-botto|
00092da0  6d 2e 20 49 74 20 69 73  20 65 71 75 69 76 61 6c  |m. It is equival|
00092db0  65 6e 74 20 74 6f 20 3c  4f 53 5f 53 70 72 69 74  |ent to <OS_Sprit|
00092dc0  65 4f 70 3d 3e 53 57 49  3a 4f 53 5f 53 70 72 69  |eOp=>SWI:OS_Spri|
00092dd0  74 65 4f 70 3e 20 33 33  2e 00 00 00 44 41 54 41  |teOp> 33....DATA|
00092de0  3d 01 00 00 53 70 72 69  74 65 5f 46 6c 69 70 59  |=...Sprite_FlipY|
00092df0  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00092e00  6f 72 3e 20 2a 53 70 72  69 74 65 5f 46 6c 69 70  |or> *Sprite_Flip|
00092e10  59 20 28 3c 73 70 72 69  74 65 5f 61 72 65 61 3e  |Y (<sprite_area>|
00092e20  20 61 72 65 61 2c 20 63  68 61 72 20 2a 6e 61 6d  | area, char *nam|
00092e30  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |e);.Header:.<Des|
00092e40  6b 4c 69 62 3a 53 70 72  69 74 65 2e 68 3d 3e 53  |kLib:Sprite.h=>S|
00092e50  70 72 69 74 65 5f 44 4c  3e 0a 0a 52 65 74 75 72  |prite_DL>..Retur|
00092e60  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
00092e70  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
00092e80  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
00092e90  75 6e 63 74 69 6f 6e 20  66 6c 69 70 73 20 74 68  |unction flips th|
00092ea0  65 20 73 70 65 63 69 66  69 65 64 20 73 70 72 69  |e specified spri|
00092eb0  74 65 20 61 62 6f 75 74  20 74 68 65 20 59 20 61  |te about the Y a|
00092ec0  78 69 73 2c 20 69 65 20  72 65 76 65 72 73 65 73  |xis, ie reverses|
00092ed0  20 69 74 20 6c 65 66 74  2d 74 6f 2d 72 69 67 68  | it left-to-righ|
00092ee0  74 2e 20 49 74 20 69 73  20 65 71 75 69 76 61 6c  |t. It is equival|
00092ef0  65 6e 74 20 74 6f 20 3c  4f 53 5f 53 70 72 69 74  |ent to <OS_Sprit|
00092f00  65 4f 70 3d 3e 53 57 49  3a 4f 53 5f 53 70 72 69  |eOp=>SWI:OS_Spri|
00092f10  74 65 4f 70 3e 20 34 37  2e 00 00 00 44 41 54 41  |teOp> 47....DATA|
00092f20  2c 02 00 00 73 70 72 69  74 65 5f 67 65 74 0a 53  |,...sprite_get.S|
00092f30  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
00092f40  3e 20 2a 73 70 72 69 74  65 5f 67 65 74 20 28 3c  |> *sprite_get (<|
00092f50  73 70 72 69 74 65 5f 61  72 65 61 3e 20 2a 61 72  |sprite_area> *ar|
00092f60  65 61 2c 20 63 68 61 72  20 2a 6e 61 6d 65 2c 20  |ea, char *name, |
00092f70  3c 73 70 72 69 74 65 5f  70 61 6c 66 6c 61 67 3e  |<sprite_palflag>|
00092f80  20 78 29 3b 0a 48 65 61  64 65 72 3a 09 3c 73 70  | x);.Header:.<sp|
00092f90  72 69 74 65 2e 68 3d 3e  73 70 72 69 74 65 5f 68  |rite.h=>sprite_h|
00092fa0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
00092fb0  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
00092fc0  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
00092fd0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00092fe0  63 72 65 61 74 65 73 20  61 20 6e 65 77 20 73 70  |creates a new sp|
00092ff0  72 69 74 65 20 77 69 74  68 20 74 68 65 20 6e 61  |rite with the na|
00093000  6d 65 20 67 69 76 65 6e  2c 20 69 6e 20 74 68 65  |me given, in the|
00093010  20 73 70 72 69 74 65 20  61 72 65 61 20 73 70 65  | sprite area spe|
00093020  63 69 66 69 65 64 2e 20  57 68 65 74 68 65 72 20  |cified. Whether |
00093030  74 68 65 20 70 61 6c 65  74 74 65 20 69 73 20 69  |the palette is i|
00093040  6e 63 6c 75 64 65 64 20  64 65 70 65 6e 64 73 20  |ncluded depends |
00093050  6f 6e 20 2f 78 2f 2e 20  54 68 65 20 63 6f 6e 74  |on /x/. The cont|
00093060  65 6e 74 73 20 6f 66 20  74 68 65 20 73 70 72 69  |ents of the spri|
00093070  74 65 20 61 72 65 20 74  61 6b 65 6e 20 66 72 6f  |te are taken fro|
00093080  6d 20 74 68 65 20 73 63  72 65 65 6e 20 72 65 63  |m the screen rec|
00093090  74 61 6e 67 6c 65 20 64  65 6c 69 6d 69 74 65 64  |tangle delimited|
000930a0  20 62 79 20 74 68 65 20  63 75 72 72 65 6e 74 20  | by the current |
000930b0  61 6e 64 20 70 72 65 76  69 6f 75 73 20 67 72 61  |and previous gra|
000930c0  70 68 69 63 73 20 63 75  72 73 6f 72 20 70 6f 73  |phics cursor pos|
000930d0  69 74 69 6f 6e 73 2e 0a  0a 54 68 69 73 20 66 75  |itions...This fu|
000930e0  6e 63 74 69 6f 6e 20 69  73 20 65 71 75 69 76 61  |nction is equiva|
000930f0  6c 65 6e 74 20 74 6f 20  3c 4f 53 5f 53 70 72 69  |lent to <OS_Spri|
00093100  74 65 4f 70 3d 3e 53 57  49 3a 4f 53 5f 53 70 72  |teOp=>SWI:OS_Spr|
00093110  69 74 65 4f 70 3e 20 31  34 2c 20 6f 72 20 2a 53  |iteOp> 14, or *S|
00093120  47 65 74 20 69 66 20 75  73 65 64 20 77 69 74 68  |Get if used with|
00093130  20 74 68 65 20 73 79 73  74 65 6d 20 73 70 72 69  | the system spri|
00093140  74 65 20 61 72 65 61 2e  44 41 54 41 04 02 00 00  |te area.DATA....|
00093150  53 70 72 69 74 65 5f 47  65 74 0a 53 79 6e 74 61  |Sprite_Get.Synta|
00093160  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 53  |x:.<os_error> *S|
00093170  70 72 69 74 65 5f 47 65  74 20 28 3c 73 70 72 69  |prite_Get (<spri|
00093180  74 65 5f 61 72 65 61 3e  20 61 72 65 61 2c 20 63  |te_area> area, c|
00093190  68 61 72 20 2a 6e 61 6d  65 2c 20 69 6e 74 20 70  |har *name, int p|
000931a0  61 6c 66 6c 61 67 2c 20  69 6e 74 20 78 6c 6f 2c  |alflag, int xlo,|
000931b0  20 69 6e 74 20 79 6c 6f  2c 20 69 6e 74 20 78 68  | int ylo, int xh|
000931c0  69 2c 20 69 6e 74 20 79  68 69 29 3b 0a 48 65 61  |i, int yhi);.Hea|
000931d0  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 53 70  |der:.<DeskLib:Sp|
000931e0  72 69 74 65 2e 68 3d 3e  53 70 72 69 74 65 5f 44  |rite.h=>Sprite_D|
000931f0  4c 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |L>..Returns:.Poi|
00093200  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
00093210  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
00093220  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00093230  20 63 72 65 61 74 65 73  20 61 20 6e 65 77 20 73  | creates a new s|
00093240  70 72 69 74 65 20 77 69  74 68 20 74 68 65 20 6e  |prite with the n|
00093250  61 6d 65 20 67 69 76 65  6e 2c 20 69 6e 20 74 68  |ame given, in th|
00093260  65 20 73 70 72 69 74 65  20 61 72 65 61 20 73 70  |e sprite area sp|
00093270  65 63 69 66 69 65 64 2e  20 57 68 65 74 68 65 72  |ecified. Whether|
00093280  20 74 68 65 20 70 61 6c  65 74 74 65 20 69 73 20  | the palette is |
00093290  69 6e 63 6c 75 64 65 64  20 64 65 70 65 6e 64 73  |included depends|
000932a0  20 6f 6e 20 2f 70 61 6c  66 6c 61 67 2f 2e 20 54  | on /palflag/. T|
000932b0  68 65 20 63 6f 6e 74 65  6e 74 73 20 6f 66 20 74  |he contents of t|
000932c0  68 65 20 73 70 72 69 74  65 20 61 72 65 20 74 61  |he sprite are ta|
000932d0  6b 65 6e 20 66 72 6f 6d  20 74 68 65 20 73 63 72  |ken from the scr|
000932e0  65 65 6e 20 72 65 63 74  61 6e 67 6c 65 20 64 65  |een rectangle de|
000932f0  6c 69 6d 69 74 65 64 20  62 79 20 2f 78 6c 6f 2f  |limited by /xlo/|
00093300  20 2d 20 2f 79 68 69 2f  2e 0a 0a 54 68 69 73 20  | - /yhi/...This |
00093310  66 75 6e 63 74 69 6f 6e  20 69 73 20 65 71 75 69  |function is equi|
00093320  76 61 6c 65 6e 74 20 74  6f 20 3c 4f 53 5f 53 70  |valent to <OS_Sp|
00093330  72 69 74 65 4f 70 3d 3e  53 57 49 3a 4f 53 5f 53  |riteOp=>SWI:OS_S|
00093340  70 72 69 74 65 6f 70 3e  20 31 36 2e 44 41 54 41  |priteop> 16.DATA|
00093350  0f 02 00 00 73 70 72 69  74 65 5f 67 65 74 5f 67  |....sprite_get_g|
00093360  69 76 65 6e 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |iven.Syntax:.<os|
00093370  5f 65 72 72 6f 72 3e 20  2a 73 70 72 69 74 65 5f  |_error> *sprite_|
00093380  67 65 74 5f 67 69 76 65  6e 20 28 3c 73 70 72 69  |get_given (<spri|
00093390  74 65 5f 61 72 65 61 3e  20 2a 61 72 65 61 2c 20  |te_area> *area, |
000933a0  63 68 61 72 20 2a 6e 61  6d 65 2c 20 3c 73 70 72  |char *name, <spr|
000933b0  69 74 65 5f 70 61 6c 66  6c 61 67 3e 20 70 61 6c  |ite_palflag> pal|
000933c0  66 6c 61 67 2c 20 69 6e  74 20 78 6c 6f 2c 20 69  |flag, int xlo, i|
000933d0  6e 74 20 79 6c 6f 2c 20  69 6e 74 20 78 68 69 2c  |nt ylo, int xhi,|
000933e0  20 69 6e 74 20 79 68 69  29 3b 0a 48 65 61 64 65  | int yhi);.Heade|
000933f0  72 3a 09 3c 73 70 72 69  74 65 2e 68 3d 3e 73 70  |r:.<sprite.h=>sp|
00093400  72 69 74 65 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |rite_h>..Returns|
00093410  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
00093420  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
00093430  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
00093440  63 74 69 6f 6e 20 63 72  65 61 74 65 73 20 61 20  |ction creates a |
00093450  6e 65 77 20 73 70 72 69  74 65 20 77 69 74 68 20  |new sprite with |
00093460  74 68 65 20 6e 61 6d 65  20 67 69 76 65 6e 2c 20  |the name given, |
00093470  69 6e 20 74 68 65 20 73  70 72 69 74 65 20 61 72  |in the sprite ar|
00093480  65 61 20 73 70 65 63 69  66 69 65 64 2e 20 57 68  |ea specified. Wh|
00093490  65 74 68 65 72 20 74 68  65 20 70 61 6c 65 74 74  |ether the palett|
000934a0  65 20 69 73 20 69 6e 63  6c 75 64 65 64 20 64 65  |e is included de|
000934b0  70 65 6e 64 73 20 6f 6e  20 2f 78 2f 2e 20 54 68  |pends on /x/. Th|
000934c0  65 20 63 6f 6e 74 65 6e  74 73 20 6f 66 20 74 68  |e contents of th|
000934d0  65 20 73 70 72 69 74 65  20 61 72 65 20 74 61 6b  |e sprite are tak|
000934e0  65 6e 20 66 72 6f 6d 20  74 68 65 20 73 63 72 65  |en from the scre|
000934f0  65 6e 20 72 65 63 74 61  6e 67 6c 65 20 64 65 6c  |en rectangle del|
00093500  69 6d 69 74 65 64 20 62  79 20 7b 2f 7d 78 6c 6f  |imited by {/}xlo|
00093510  2d 79 68 69 7b 2f 7d 2e  0a 0a 54 68 69 73 20 66  |-yhi{/}...This f|
00093520  75 6e 63 74 69 6f 6e 20  69 73 20 65 71 75 69 76  |unction is equiv|
00093530  61 6c 65 6e 74 20 74 6f  20 3c 4f 53 5f 53 70 72  |alent to <OS_Spr|
00093540  69 74 65 4f 70 3d 3e 53  57 49 3a 4f 53 5f 53 70  |iteOp=>SWI:OS_Sp|
00093550  72 69 74 65 4f 70 3e 20  31 36 2e 00 44 41 54 41  |riteOp> 16..DATA|
00093560  de 01 00 00 73 70 72 69  74 65 5f 67 65 74 5f 67  |....sprite_get_g|
00093570  69 76 65 6e 5f 72 70 0a  53 79 6e 74 61 78 3a 09  |iven_rp.Syntax:.|
00093580  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 73 70 72 69  |<os_error> *spri|
00093590  74 65 5f 67 65 74 5f 67  69 76 65 6e 5f 72 70 20  |te_get_given_rp |
000935a0  28 3c 73 70 72 69 74 65  5f 61 72 65 61 3e 20 2a  |(<sprite_area> *|
000935b0  61 72 65 61 2c 20 63 68  61 72 20 2a 6e 61 6d 65  |area, char *name|
000935c0  2c 20 3c 73 70 72 69 74  65 5f 70 61 6c 66 6c 61  |, <sprite_palfla|
000935d0  67 3e 20 78 2c 20 69 6e  74 20 78 6c 6f 2c 20 69  |g> x, int xlo, i|
000935e0  6e 74 20 79 6c 6f 2c 20  69 6e 74 20 78 68 69 2c  |nt ylo, int xhi,|
000935f0  20 69 6e 74 20 79 68 69  2c 20 3c 73 70 72 69 74  | int yhi, <sprit|
00093600  65 5f 70 74 72 3e 20 2a  61 64 64 72 29 3b 0a 48  |e_ptr> *addr);.H|
00093610  65 61 64 65 72 3a 09 3c  73 70 72 69 74 65 2e 68  |eader:.<sprite.h|
00093620  3d 3e 73 70 72 69 74 65  5f 68 3e 0a 0a 52 65 74  |=>sprite_h>..Ret|
00093630  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
00093640  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
00093650  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
00093660  20 66 75 6e 63 74 69 6f  6e 20 63 72 65 61 74 65  | function create|
00093670  73 20 61 20 6e 65 77 20  73 70 72 69 74 65 20 77  |s a new sprite w|
00093680  69 74 68 20 74 68 65 20  6e 61 6d 65 20 67 69 76  |ith the name giv|
00093690  65 6e 2c 20 69 6e 20 74  68 65 20 73 70 72 69 74  |en, in the sprit|
000936a0  65 20 61 72 65 61 20 73  70 65 63 69 66 69 65 64  |e area specified|
000936b0  2e 0a 0a 49 74 20 69 73  20 69 64 65 6e 74 69 63  |...It is identic|
000936c0  61 6c 20 74 6f 20 74 68  65 20 66 75 6e 63 74 69  |al to the functi|
000936d0  6f 6e 20 3c 73 70 72 69  74 65 5f 67 65 74 5f 67  |on <sprite_get_g|
000936e0  69 76 65 6e 3e 2c 20 62  75 74 20 72 65 74 75 72  |iven>, but retur|
000936f0  6e 73 20 74 68 65 20 61  64 64 72 65 73 73 20 6f  |ns the address o|
00093700  66 20 74 68 65 20 73 70  72 69 74 65 20 69 6e 20  |f the sprite in |
00093710  74 68 65 20 7b 2f 7d 73  70 72 69 74 65 5f 70 74  |the {/}sprite_pt|
00093720  72 7b 2f 7d 20 70 6f 69  6e 74 65 64 20 74 6f 20  |r{/} pointed to |
00093730  62 79 20 2f 61 64 64 72  2f 2e 00 00 44 41 54 41  |by /addr/...DATA|
00093740  a4 01 00 00 73 70 72 69  74 65 5f 67 65 74 5f 72  |....sprite_get_r|
00093750  70 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |p.Syntax:.<os_er|
00093760  72 6f 72 3e 20 2a 73 70  72 69 74 65 5f 67 65 74  |ror> *sprite_get|
00093770  5f 72 70 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |_rp (<sprite_are|
00093780  61 3e 20 2a 61 72 65 61  2c 20 63 68 61 72 20 2a  |a> *area, char *|
00093790  6e 61 6d 65 2c 20 3c 73  70 72 69 74 65 5f 70 61  |name, <sprite_pa|
000937a0  6c 66 6c 61 67 3e 20 78  2c 20 3c 73 70 72 69 74  |lflag> x, <sprit|
000937b0  65 5f 70 74 72 3e 20 2a  61 64 64 72 29 3b 0a 48  |e_ptr> *addr);.H|
000937c0  65 61 64 65 72 3a 09 3c  73 70 72 69 74 65 2e 68  |eader:.<sprite.h|
000937d0  3d 3e 73 70 72 69 74 65  5f 68 3e 0a 0a 52 65 74  |=>sprite_h>..Ret|
000937e0  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
000937f0  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
00093800  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
00093810  20 66 75 6e 63 74 69 6f  6e 20 63 72 65 61 74 65  | function create|
00093820  73 20 61 20 6e 65 77 20  73 70 72 69 74 65 20 77  |s a new sprite w|
00093830  69 74 68 20 74 68 65 20  6e 61 6d 65 20 67 69 76  |ith the name giv|
00093840  65 6e 2c 20 69 6e 20 74  68 65 20 73 70 72 69 74  |en, in the sprit|
00093850  65 20 61 72 65 61 20 73  70 65 63 69 66 69 65 64  |e area specified|
00093860  2e 0a 0a 49 74 20 69 73  20 69 64 65 6e 74 69 63  |...It is identic|
00093870  61 6c 20 74 6f 20 74 68  65 20 66 75 6e 63 74 69  |al to the functi|
00093880  6f 6e 20 3c 73 70 72 69  74 65 5f 67 65 74 3e 2c  |on <sprite_get>,|
00093890  20 62 75 74 20 72 65 74  75 72 6e 73 20 74 68 65  | but returns the|
000938a0  20 61 64 64 72 65 73 73  20 6f 66 20 74 68 65 20  | address of the |
000938b0  73 70 72 69 74 65 20 69  6e 20 74 68 65 20 2f 73  |sprite in the /s|
000938c0  70 72 69 74 65 5f 70 74  72 2f 20 70 6f 69 6e 74  |prite_ptr/ point|
000938d0  65 64 20 74 6f 20 62 79  20 2f 61 64 64 72 2f 2e  |ed to by /addr/.|
000938e0  44 41 54 41 8d 02 00 00  73 70 72 69 74 65 5f 67  |DATA....sprite_g|
000938f0  65 74 6e 61 6d 65 0a 53  79 6e 74 61 78 3a 09 3c  |etname.Syntax:.<|
00093900  6f 73 5f 65 72 72 6f 72  3e 20 2a 73 70 72 69 74  |os_error> *sprit|
00093910  65 5f 67 65 74 6e 61 6d  65 20 28 3c 73 70 72 69  |e_getname (<spri|
00093920  74 65 5f 61 72 65 61 3e  20 2a 61 72 65 61 2c 20  |te_area> *area, |
00093930  76 6f 69 64 20 2a 62 75  66 66 65 72 2c 20 69 6e  |void *buffer, in|
00093940  74 20 2a 6c 65 6e 67 74  68 2c 20 69 6e 74 20 69  |t *length, int i|
00093950  6e 64 65 78 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |ndex);.Header:.<|
00093960  73 70 72 69 74 65 2e 68  3d 3e 73 70 72 69 74 65  |sprite.h=>sprite|
00093970  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |_h>..Returns:.Po|
00093980  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
00093990  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
000939a0  65 2e 0a 0a 53 65 65 20  61 6c 73 6f 20 74 68 65  |e...See also the|
000939b0  20 44 65 73 6b 4c 69 62  20 66 75 6e 63 74 69 6f  | DeskLib functio|
000939c0  6e 2c 20 3c 53 70 72 69  74 65 5f 47 65 74 4e 61  |n, <Sprite_GetNa|
000939d0  6d 65 3d 3e 53 70 72 69  74 65 5f 47 65 74 4e 61  |me=>Sprite_GetNa|
000939e0  6d 65 5f 3e 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |me_>...This func|
000939f0  74 69 6f 6e 20 72 65 74  75 72 6e 73 20 74 68 65  |tion returns the|
00093a00  20 6e 61 6d 65 20 6f 66  20 74 68 65 20 73 70 72  | name of the spr|
00093a10  69 74 65 20 77 68 6f 73  65 20 70 6f 73 69 74 69  |ite whose positi|
00093a20  6f 6e 20 69 6e 20 74 68  65 20 73 70 65 63 69 66  |on in the specif|
00093a30  69 65 64 20 73 70 72 69  74 65 20 61 72 65 61 20  |ied sprite area |
00093a40  69 73 20 67 69 76 65 6e  20 62 79 20 2f 69 6e 64  |is given by /ind|
00093a50  65 78 2f 20 28 6e 75 6d  62 65 72 65 64 20 66 72  |ex/ (numbered fr|
00093a60  6f 6d 20 31 29 2e 0a 0a  54 68 65 20 6e 61 6d 65  |om 1)...The name|
00093a70  20 69 73 20 70 6c 61 63  65 64 20 69 6e 20 74 68  | is placed in th|
00093a80  65 20 61 72 65 61 20 70  6f 69 6e 74 65 64 20 74  |e area pointed t|
00093a90  6f 20 62 79 20 2f 62 75  66 66 65 72 2f 2e 20 4f  |o by /buffer/. O|
00093aa0  6e 20 65 6e 74 72 79 20  74 68 65 20 69 6e 74 65  |n entry the inte|
00093ab0  67 65 72 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |ger pointed to b|
00093ac0  79 20 2f 6c 65 6e 67 74  68 2f 20 73 68 6f 75 6c  |y /length/ shoul|
00093ad0  64 20 63 6f 6e 74 61 69  6e 20 74 68 65 20 6c 65  |d contain the le|
00093ae0  6e 67 74 68 20 6f 66 20  74 68 69 73 20 62 75 66  |ngth of this buf|
00093af0  66 65 72 2e 20 4f 6e 20  65 78 69 74 2c 20 69 74  |fer. On exit, it|
00093b00  20 77 69 6c 6c 20 63 6f  6e 74 61 69 6e 20 74 68  | will contain th|
00093b10  65 20 6c 65 6e 67 74 68  20 6f 66 20 74 68 65 20  |e length of the |
00093b20  6e 61 6d 65 20 72 65 61  64 2e 0a 0a 54 68 69 73  |name read...This|
00093b30  20 66 75 6e 63 74 69 6f  6e 20 69 73 20 65 71 75  | function is equ|
00093b40  69 76 61 6c 65 6e 74 20  74 6f 20 3c 4f 53 5f 53  |ivalent to <OS_S|
00093b50  70 72 69 74 65 4f 70 3d  3e 53 57 49 3a 4f 53 5f  |priteOp=>SWI:OS_|
00093b60  53 70 72 69 74 65 4f 70  3e 20 31 33 2e 00 00 00  |SpriteOp> 13....|
00093b70  44 41 54 41 7d 01 00 00  53 70 72 69 74 65 5f 47  |DATA}...Sprite_G|
00093b80  65 74 4e 61 6d 65 0a 53  79 6e 74 61 78 3a 09 69  |etName.Syntax:.i|
00093b90  6e 74 20 53 70 72 69 74  65 5f 47 65 74 4e 61 6d  |nt Sprite_GetNam|
00093ba0  65 20 28 3c 73 70 72 69  74 65 5f 61 72 65 61 3e  |e (<sprite_area>|
00093bb0  20 61 72 65 61 2c 20 63  68 61 72 20 2a 6e 61 6d  | area, char *nam|
00093bc0  65 2c 20 69 6e 74 20 6e  29 3b 0a 48 65 61 64 65  |e, int n);.Heade|
00093bd0  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 53 70 72 69  |r:.<DeskLib:Spri|
00093be0  74 65 2e 68 3d 3e 53 70  72 69 74 65 5f 44 4c 3e  |te.h=>Sprite_DL>|
00093bf0  0a 0a 52 65 74 75 72 6e  73 3a 09 4c 65 6e 67 74  |..Returns:.Lengt|
00093c00  68 20 6f 66 20 6e 61 6d  65 2e 0a 0a 54 68 69 73  |h of name...This|
00093c10  20 66 75 6e 63 74 69 6f  6e 20 72 65 61 64 73 20  | function reads |
00093c20  74 68 65 20 6e 61 6d 65  20 6f 66 20 61 20 73 70  |the name of a sp|
00093c30  72 69 74 65 20 69 6e 20  61 20 67 69 76 65 6e 20  |rite in a given |
00093c40  61 72 65 61 2e 20 54 68  65 20 73 70 72 69 74 65  |area. The sprite|
00093c50  27 73 20 6e 75 6d 62 65  72 20 6d 75 73 74 20 62  |'s number must b|
00093c60  65 20 67 69 76 65 6e 2c  20 74 68 65 20 66 69 72  |e given, the fir|
00093c70  73 74 20 73 70 72 69 74  65 20 62 65 69 6e 67 20  |st sprite being |
00093c80  31 20 61 6e 64 20 74 68  65 20 6e 61 6d 65 20 69  |1 and the name i|
00093c90  73 20 72 65 74 75 72 6e  65 64 20 69 6e 20 74 68  |s returned in th|
00093ca0  65 20 62 75 66 66 65 72  20 70 6f 69 6e 74 65 72  |e buffer pointer|
00093cb0  20 74 6f 20 62 79 20 2f  6e 61 6d 65 2f 2c 20 77  | to by /name/, w|
00093cc0  68 69 63 68 20 73 68 6f  75 6c 64 20 62 65 20 3c  |hich should be <|
00093cd0  73 70 72 69 74 65 5f 4d  41 58 4e 41 4d 45 3e 2b  |sprite_MAXNAME>+|
00093ce0  31 20 62 79 74 65 73 20  6c 6f 6e 67 2e 00 00 00  |1 bytes long....|
00093cf0  44 41 54 41 5a 02 00 00  73 70 72 69 74 65 2e 68  |DATAZ...sprite.h|
00093d00  0a 54 68 65 20 5c 3c 73  70 72 69 74 65 2e 68 3e  |.The \<sprite.h>|
00093d10  20 68 65 61 64 65 72 20  64 65 63 6c 61 72 65 73  | header declares|
00093d20  20 71 75 69 74 65 20 61  20 66 65 77 20 66 75 6e  | quite a few fun|
00093d30  63 74 69 6f 6e 73 20 66  6f 72 20 68 61 6e 64 6c  |ctions for handl|
00093d40  69 6e 67 20 73 70 72 69  74 65 73 2e 0a 0a 46 75  |ing sprites...Fu|
00093d50  6e 63 74 69 6f 6e 73 3a  0a 0a 23 69 6e 64 65 6e  |nctions:..#inden|
00093d60  74 20 37 0a 23 54 61 62  6c 65 20 32 20 32 34 0a  |t 7.#Table 2 24.|
00093d70  3c 53 69 6d 70 6c 65 20  46 75 6e 63 74 69 6f 6e  |<Simple Function|
00093d80  73 3d 3e 73 70 72 69 74  65 5f 73 69 6d 70 6c 65  |s=>sprite_simple|
00093d90  5f 3e 0a 3c 53 70 72 69  74 65 20 41 72 65 61 20  |_>.<Sprite Area |
00093da0  46 75 6e 63 74 69 6f 6e  73 3d 3e 73 70 72 69 74  |Functions=>sprit|
00093db0  65 5f 61 72 65 61 5f 3e  0a 3c 53 70 72 69 74 65  |e_area_>.<Sprite|
00093dc0  20 46 75 6e 63 74 69 6f  6e 73 3d 3e 73 70 72 69  | Functions=>spri|
00093dd0  74 65 5f 3e 0a 3c 52 49  53 43 20 4f 53 20 33 20  |te_>.<RISC OS 3 |
00093de0  46 75 6e 63 74 69 6f 6e  73 3d 3e 73 70 72 69 74  |Functions=>sprit|
00093df0  65 5f 72 6f 33 5f 3e 0a  23 45 6e 64 54 61 62 6c  |e_ro3_>.#EndTabl|
00093e00  65 0a 23 69 6e 64 65 6e  74 0a 0a 4d 61 63 72 6f  |e.#indent..Macro|
00093e10  73 3a 0a 0a 23 69 6e 64  65 6e 74 20 37 0a 3c 73  |s:..#indent 7.<s|
00093e20  70 72 69 74 65 5f 6d 61  69 6e 61 72 65 61 3e 0a  |prite_mainarea>.|
00093e30  23 69 6e 64 65 6e 74 0a  0a 54 79 70 65 73 3a 0a  |#indent..Types:.|
00093e40  0a 23 69 6e 64 65 6e 74  20 37 0a 23 54 61 62 6c  |.#indent 7.#Tabl|
00093e50  65 20 63 6f 6c 75 6d 6e  73 20 33 0a 3c 73 70 72  |e columns 3.<spr|
00093e60  69 74 65 5f 70 61 6c 66  6c 61 67 3e 0a 3c 73 70  |ite_palflag>.<sp|
00093e70  72 69 74 65 5f 66 61 63  74 6f 72 73 3e 0a 3c 73  |rite_factors>.<s|
00093e80  70 72 69 74 65 5f 70 69  78 74 72 61 6e 73 3e 0a  |prite_pixtrans>.|
00093e90  3c 73 70 72 69 74 65 5f  61 72 65 61 3e 0a 3c 73  |<sprite_area>.<s|
00093ea0  70 72 69 74 65 5f 68 65  61 64 65 72 3e 0a 3c 73  |prite_header>.<s|
00093eb0  70 72 69 74 65 5f 70 74  72 3e 0a 3c 73 70 72 69  |prite_ptr>.<spri|
00093ec0  74 65 5f 74 79 70 65 3e  0a 3c 73 70 72 69 74 65  |te_type>.<sprite|
00093ed0  5f 69 64 3e 0a 3c 73 70  72 69 74 65 5f 69 6e 66  |_id>.<sprite_inf|
00093ee0  6f 3e 0a 3c 73 70 72 69  74 65 5f 63 6f 6c 6f 75  |o>.<sprite_colou|
00093ef0  72 3e 0a 3c 73 70 72 69  74 65 5f 6d 61 73 6b 73  |r>.<sprite_masks|
00093f00  74 61 74 65 3e 0a 3c 73  70 72 69 74 65 5f 73 74  |tate>.<sprite_st|
00093f10  61 74 65 3e 0a 3c 73 70  72 69 74 65 5f 70 67 6d  |ate>.<sprite_pgm|
00093f20  3e 0a 3c 73 70 72 69 74  65 5f 74 72 61 6e 73 6d  |>.<sprite_transm|
00093f30  61 74 3e 0a 3c 73 70 72  69 74 65 5f 62 6f 78 3e  |at>.<sprite_box>|
00093f40  0a 23 65 6e 64 74 61 62  6c 65 00 00 44 41 54 41  |.#endtable..DATA|
00093f50  6f 02 00 00 73 70 72 69  74 65 5f 68 65 61 64 65  |o...sprite_heade|
00093f60  72 0a 54 68 69 73 20 74  79 70 65 20 69 73 20 64  |r.This type is d|
00093f70  65 66 69 6e 65 64 20 69  6e 20 3c 73 70 72 69 74  |efined in <sprit|
00093f80  65 2e 68 3d 3e 73 70 72  69 74 65 5f 68 3e 20 28  |e.h=>sprite_h> (|
00093f90  44 65 73 6b 74 6f 70 20  43 29 20 61 6e 64 20 3c  |Desktop C) and <|
00093fa0  44 65 73 6b 4c 69 62 3a  53 70 72 69 74 65 2e 68  |DeskLib:Sprite.h|
00093fb0  3d 3e 53 70 72 69 74 65  5f 44 4c 3e 2e 20 49 74  |=>Sprite_DL>. It|
00093fc0  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 20 74  | is defined as t|
00093fd0  68 65 20 66 6f 6c 6c 6f  77 69 6e 67 20 73 74 72  |he following str|
00093fe0  75 63 74 75 72 65 20 69  6e 20 44 65 73 6b 74 6f  |ucture in Deskto|
00093ff0  70 20 43 3a 0a 0a 20 20  20 20 5c 7b 0a 20 20 20  |p C:..    \{.   |
00094000  20 20 20 20 20 69 6e 74  09 6e 65 78 74 3b 0a 20  |     int.next;. |
00094010  20 20 20 20 20 20 20 63  68 61 72 09 6e 61 6d 65  |       char.name|
00094020  5b 31 32 5d 3b 0a 20 20  20 20 20 20 20 20 69 6e  |[12];.        in|
00094030  74 09 77 69 64 74 68 3b  0a 20 20 20 20 20 20 20  |t.width;.       |
00094040  20 69 6e 74 09 68 65 69  67 68 74 3b 0a 20 20 20  | int.height;.   |
00094050  20 20 20 20 20 69 6e 74  09 6c 62 69 74 3b 0a 20  |     int.lbit;. |
00094060  20 20 20 20 20 20 20 69  6e 74 09 72 62 69 74 3b  |       int.rbit;|
00094070  0a 20 20 20 20 20 20 20  20 69 6e 74 09 69 6d 61  |.        int.ima|
00094080  67 65 3b 0a 20 20 20 20  20 20 20 20 69 6e 74 09  |ge;.        int.|
00094090  6d 61 73 6b 3b 0a 20 20  20 20 20 20 20 20 69 6e  |mask;.        in|
000940a0  74 09 6d 6f 64 65 3b 0a  20 20 20 20 7d 0a 0a 61  |t.mode;.    }..a|
000940b0  6e 64 20 69 6e 20 44 65  73 6b 4c 69 62 20 69 74  |nd in DeskLib it|
000940c0  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 3a 0a  | is defined as:.|
000940d0  7b 74 61 62 7d 0a 20 20  20 20 5c 7b 0a 20 20 20  |{tab}.    \{.   |
000940e0  20 20 20 20 20 69 6e 74  09 6f 66 66 73 65 74 5f  |     int.offset_|
000940f0  6e 65 78 74 3b 0a 20 20  20 20 20 20 20 20 63 68  |next;.        ch|
00094100  61 72 09 6e 61 6d 65 5b  3c 73 70 72 69 74 65 5f  |ar.name[<sprite_|
00094110  4d 41 58 4e 41 4d 45 3e  5d 3b 0a 20 20 20 20 20  |MAXNAME>];.     |
00094120  20 20 20 69 6e 74 09 77  69 64 74 68 3b 0a 20 20  |   int.width;.  |
00094130  20 20 20 20 20 20 69 6e  74 09 68 65 69 67 68 74  |      int.height|
00094140  3b 0a 20 20 20 20 20 20  20 20 69 6e 74 09 6c 65  |;.        int.le|
00094150  66 74 62 69 74 3b 0a 20  20 20 20 20 20 20 20 69  |ftbit;.        i|
00094160  6e 74 09 72 69 67 68 74  62 69 74 3b 0a 20 20 20  |nt.rightbit;.   |
00094170  20 20 20 20 20 69 6e 74  09 69 6d 61 67 65 6f 66  |     int.imageof|
00094180  66 73 65 74 3b 0a 20 20  20 20 20 20 20 20 69 6e  |fset;.        in|
00094190  74 09 6d 61 73 6b 6f 66  66 73 65 74 3b 0a 20 20  |t.maskoffset;.  |
000941a0  20 20 20 20 20 20 69 6e  74 09 73 63 72 65 65 6e  |      int.screen|
000941b0  6d 6f 64 65 3b 0a 20 20  20 20 7d 00 44 41 54 41  |mode;.    }.DATA|
000941c0  0d 02 00 00 53 70 72 69  74 65 5f 49 63 6f 6e 4d  |....Sprite_IconM|
000941d0  65 6d 6f 72 79 53 69 7a  65 0a 53 79 6e 74 61 78  |emorySize.Syntax|
000941e0  3a 09 69 6e 74 20 53 70  72 69 74 65 5f 49 63 6f  |:.int Sprite_Ico|
000941f0  6e 4d 65 6d 6f 72 79 53  69 7a 65 20 28 3c 77 69  |nMemorySize (<wi|
00094200  6e 64 6f 77 5f 62 6c 6f  63 6b 3e 20 2a 77 69 6e  |ndow_block> *win|
00094210  2c 20 3c 69 63 6f 6e 5f  68 61 6e 64 6c 65 3e 20  |, <icon_handle> |
00094220  69 63 6f 6e 2c 20 69 6e  74 20 6d 2c 20 3c 73 70  |icon, int m, <sp|
00094230  72 69 74 65 6d 65 6d 5f  66 6c 61 67 73 3e 20 66  |ritemem_flags> f|
00094240  6c 61 67 73 2c 20 3c 77  69 6d 70 5f 70 6f 69 6e  |lags, <wimp_poin|
00094250  74 3e 20 2a 73 69 7a 65  29 3b 0a 48 65 61 64 65  |t> *size);.Heade|
00094260  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 53 70 72 69  |r:.<DeskLib:Spri|
00094270  74 65 2e 68 3d 3e 53 70  72 69 74 65 5f 44 4c 3e  |te.h=>Sprite_DL>|
00094280  0a 0a 52 65 74 75 72 6e  73 3a 09 53 69 7a 65 20  |..Returns:.Size |
00094290  69 6e 20 62 79 74 65 73  2e 0a 0a 54 68 69 73 20  |in bytes...This |
000942a0  66 75 6e 63 74 69 6f 6e  20 74 61 6b 65 73 20 61  |function takes a|
000942b0  20 77 69 6e 64 6f 77 20  64 65 66 69 6e 69 74 69  | window definiti|
000942c0  6f 6e 20 2f 77 69 6e 2f  2c 20 61 6e 20 69 63 6f  |on /win/, an ico|
000942d0  6e 20 6e 75 6d 62 65 72  20 2f 69 63 6f 6e 2f 2c  |n number /icon/,|
000942e0  20 61 20 73 63 72 65 65  6e 20 6d 6f 64 65 20 2f  | a screen mode /|
000942f0  6d 2f 20 61 6e 64 20 73  6f 6d 65 20 66 6c 61 67  |m/ and some flag|
00094300  73 20 2f 66 6c 61 67 73  2f 2c 20 70 75 74 73 20  |s /flags/, puts |
00094310  74 68 65 6d 20 69 6e 20  74 68 65 20 4d 61 67 69  |them in the Magi|
00094320  6d 69 78 20 61 6e 64 20  66 69 6e 64 73 20 68 6f  |mix and finds ho|
00094330  77 20 6d 75 63 68 20 6d  65 6d 6f 72 79 20 69 73  |w much memory is|
00094340  20 6e 65 65 64 65 64 20  66 6f 72 20 61 20 73 70  | needed for a sp|
00094350  72 69 74 65 20 74 68 65  20 73 61 6d 65 20 73 69  |rite the same si|
00094360  7a 65 20 61 73 20 74 68  61 74 20 69 63 6f 6e 20  |ze as that icon |
00094370  69 6e 20 74 68 61 74 20  6d 6f 64 65 20 77 69 74  |in that mode wit|
00094380  68 20 74 68 6f 73 65 20  66 6c 61 67 73 2e 20 49  |h those flags. I|
00094390  66 20 2f 73 69 7a 65 2f  20 69 73 20 6e 6f 74 20  |f /size/ is not |
000943a0  3c 4e 55 4c 4c 3e 2c 20  69 74 27 6c 6c 20 74 65  |<NULL>, it'll te|
000943b0  6c 6c 20 79 6f 75 20 74  68 65 20 69 63 6f 6e 20  |ll you the icon |
000943c0  73 69 7a 65 20 74 6f 6f  21 00 00 00 44 41 54 41  |size too!...DATA|
000943d0  be 00 00 00 73 70 72 69  74 65 5f 69 64 0a 54 68  |....sprite_id.Th|
000943e0  69 73 20 69 73 20 61 20  74 79 70 65 20 64 65 66  |is is a type def|
000943f0  69 6e 65 64 20 69 6e 20  3c 73 70 72 69 74 65 2e  |ined in <sprite.|
00094400  68 3d 3e 73 70 72 69 74  65 5f 68 3e 20 61 73 20  |h=>sprite_h> as |
00094410  74 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 73 74  |the following st|
00094420  72 75 63 74 75 72 65 3a  0a 0a 20 20 5c 7b 0a 20  |ructure:..  \{. |
00094430  20 09 75 6e 69 6f 6e 0a  20 20 09 5c 7b 0a 20 20  | .union.  .\{.  |
00094440  09 20 09 63 68 61 72 20  2a 09 6e 61 6d 65 3b 0a  |. .char *.name;.|
00094450  20 20 09 20 09 3c 73 70  72 69 74 65 5f 70 74 72  |  . .<sprite_ptr|
00094460  3e 09 61 64 64 72 3b 0a  20 20 09 7d 20 73 3b 0a  |>.addr;.  .} s;.|
00094470  20 20 09 20 3c 73 70 72  69 74 65 5f 74 79 70 65  |  . <sprite_type|
00094480  3e 20 74 61 67 3b 0a 20  20 7d 00 00 46 52 45 45  |> tag;.  }..FREE|
00094490  cf 00 00 00 84 93 04 00  74 65 5f 69 6e 66 6f 0a  |........te_info.|
000944a0  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
000944b0  69 6e 65 64 20 69 6e 20  3c 73 70 72 69 74 65 2e  |ined in <sprite.|
000944c0  68 3d 3e 73 70 72 69 74  65 5f 68 3e 20 28 44 65  |h=>sprite_h> (De|
000944d0  73 6b 74 6f 70 20 43 29  20 61 6e 64 20 3c 44 65  |sktop C) and <De|
000944e0  73 6b 4c 69 62 3a 53 70  72 69 74 65 2e 68 3d 3e  |skLib:Sprite.h=>|
000944f0  53 70 72 69 74 65 5f 44  4c 3e 2e 20 49 74 20 69  |Sprite_DL>. It i|
00094500  73 20 64 65 66 69 6e 65  64 20 61 73 20 74 68 65  |s defined as the|
00094510  20 66 6f 6c 6c 6f 77 69  6e 67 20 73 74 72 75 63  | following struc|
00094520  74 75 72 65 20 69 6e 20  44 65 73 6b 74 6f 70 20  |ture in Desktop |
00094530  43 3a 0a 0a 20 20 20 20  5c 7b 0a 20 20 20 20 20  |C:..    \{.     |
00094540  20 20 20 69 6e 74 20 77  69 64 74 68 3b 0a 20 20  |   int width;.  |
00094550  20 20 20 20 20 20 69 6e  74 20 68 44 41 54 41 d9  |      int hDATA.|
00094560  00 00 00 4c 5f 74 6d 70  6e 61 6d 0a 23 50 61 72  |...L_tmpnam.#Par|
00094570  65 6e 74 20 73 74 64 69  6f 0a 54 68 65 20 6d 61  |ent stdio.The ma|
00094580  63 72 6f 20 4c 5f 74 6d  70 6e 61 6d 20 69 73 20  |cro L_tmpnam is |
00094590  64 65 66 69 6e 65 64 20  69 6e 20 3c 73 74 64 69  |defined in <stdi|
000945a0  6f 2e 68 3d 3e 73 74 64  69 6f 3e 20 61 73 20 74  |o.h=>stdio> as t|
000945b0  68 65 20 6c 65 6e 67 74  68 20 6f 66 20 74 68 65  |he length of the|
000945c0  20 6c 6f 6e 67 65 73 74  20 66 69 6c 65 6e 61 6d  | longest filenam|
000945d0  65 20 74 68 61 74 20 77  69 6c 6c 20 62 65 20 75  |e that will be u|
000945e0  73 65 64 20 62 79 20 74  68 65 20 66 75 6e 63 74  |sed by the funct|
000945f0  69 6f 6e 20 3c 74 6d 70  6e 61 6d 3e 2e 20 49 6e  |ion <tmpnam>. In|
00094600  20 45 61 73 79 20 43 20  69 74 20 69 73 20 64 65  | Easy C it is de|
00094610  66 69 6e 65 64 20 61 73  20 74 68 65 20 73 61 6d  |fined as the sam|
00094620  65 20 61 73 20 3c 46 49  4c 45 4e 41 4d 45 5f 4d  |e as <FILENAME_M|
00094630  41 58 3e 2e 20 20 7d 00  44 41 54 41 f9 00 00 00  |AX>.  }.DATA....|
00094640  53 70 72 69 74 65 5f 49  6e 69 74 41 72 65 61 0a  |Sprite_InitArea.|
00094650  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
00094660  72 3e 20 2a 53 70 72 69  74 65 5f 49 6e 69 74 41  |r> *Sprite_InitA|
00094670  72 65 61 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |rea (<sprite_are|
00094680  61 3e 20 61 72 65 61 29  3b 0a 48 65 61 64 65 72  |a> area);.Header|
00094690  3a 09 3c 44 65 73 6b 4c  69 62 3a 53 70 72 69 74  |:.<DeskLib:Sprit|
000946a0  65 2e 68 3d 3e 53 70 72  69 74 65 5f 44 4c 3e 0a  |e.h=>Sprite_DL>.|
000946b0  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
000946c0  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
000946d0  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
000946e0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 69 6e  |This function in|
000946f0  69 74 69 61 6c 69 73 65  73 20 74 68 65 20 73 70  |itialises the sp|
00094700  72 69 74 65 20 61 72 65  61 2e 20 49 74 20 69 73  |rite area. It is|
00094710  20 65 71 75 69 76 61 6c  65 6e 74 20 74 6f 20 53  | equivalent to S|
00094720  57 49 20 4f 53 5f 53 70  72 69 74 65 4f 70 20 39  |WI OS_SpriteOp 9|
00094730  2e 00 00 00 44 41 54 41  91 01 00 00 73 70 72 69  |....DATA....spri|
00094740  74 65 5f 69 6e 73 65 72  74 5f 72 6f 77 0a 53 79  |te_insert_row.Sy|
00094750  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00094760  20 2a 73 70 72 69 74 65  5f 69 6e 73 65 72 74 5f  | *sprite_insert_|
00094770  72 6f 77 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |row (<sprite_are|
00094780  61 3e 20 2a 61 72 65 61  2c 20 3c 73 70 72 69 74  |a> *area, <sprit|
00094790  65 5f 69 64 3e 20 2a 73  70 72 2c 20 69 6e 74 20  |e_id> *spr, int |
000947a0  72 6f 77 29 3b 0a 48 65  61 64 65 72 3a 09 3c 73  |row);.Header:.<s|
000947b0  70 72 69 74 65 2e 68 3d  3e 73 70 72 69 74 65 5f  |prite.h=>sprite_|
000947c0  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |h>..Returns:.Poi|
000947d0  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000947e0  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000947f0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00094800  20 69 6e 73 65 72 74 73  20 61 20 72 6f 77 20 69  | inserts a row i|
00094810  6e 20 74 68 65 20 67 69  76 65 6e 20 73 70 72 69  |n the given spri|
00094820  74 65 20 61 6e 64 20 74  68 65 20 70 6f 73 69 74  |te and the posit|
00094830  69 6f 6e 20 69 64 65 6e  74 69 66 69 65 64 2c 20  |ion identified, |
00094840  73 68 69 66 74 69 6e 67  20 61 6c 6c 20 72 6f 77  |shifting all row|
00094850  73 20 61 62 6f 76 65 20  69 74 20 28 69 66 20 61  |s above it (if a|
00094860  6e 79 29 20 75 70 20 6f  6e 65 2e 20 52 6f 77 20  |ny) up one. Row |
00094870  30 20 69 73 20 61 74 20  74 68 65 20 62 6f 74 74  |0 is at the bott|
00094880  6f 6d 2e 20 54 68 69 73  20 66 75 6e 63 74 69 6f  |om. This functio|
00094890  6e 20 69 73 20 65 71 75  69 76 61 6c 65 6e 74 20  |n is equivalent |
000948a0  74 6f 20 3c 4f 53 5f 53  70 72 69 74 65 4f 70 3d  |to <OS_SpriteOp=|
000948b0  3e 53 57 49 3a 4f 53 5f  53 70 72 69 74 65 4f 70  |>SWI:OS_SpriteOp|
000948c0  3e 20 33 31 2e 00 00 00  44 41 54 41 91 01 00 00  |> 31....DATA....|
000948d0  53 70 72 69 74 65 5f 49  6e 73 65 72 74 52 6f 77  |Sprite_InsertRow|
000948e0  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
000948f0  6f 72 3e 20 2a 53 70 72  69 74 65 5f 49 6e 73 65  |or> *Sprite_Inse|
00094900  72 74 52 6f 77 20 28 3c  73 70 72 69 74 65 5f 61  |rtRow (<sprite_a|
00094910  72 65 61 3e 20 61 72 65  61 2c 20 63 68 61 72 20  |rea> area, char |
00094920  2a 6e 61 6d 65 2c 20 69  6e 74 20 70 6f 73 29 3b  |*name, int pos);|
00094930  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
00094940  62 3a 53 70 72 69 74 65  2e 68 3d 3e 53 70 72 69  |b:Sprite.h=>Spri|
00094950  74 65 5f 44 4c 3e 0a 0a  52 65 74 75 72 6e 73 3a  |te_DL>..Returns:|
00094960  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
00094970  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
00094980  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
00094990  74 69 6f 6e 20 69 6e 73  65 72 74 73 20 61 20 72  |tion inserts a r|
000949a0  6f 77 20 69 6e 20 74 68  65 20 67 69 76 65 6e 20  |ow in the given |
000949b0  73 70 72 69 74 65 20 61  6e 64 20 74 68 65 20 70  |sprite and the p|
000949c0  6f 73 69 74 69 6f 6e 20  69 64 65 6e 74 69 66 69  |osition identifi|
000949d0  65 64 2c 20 73 68 69 66  74 69 6e 67 20 61 6c 6c  |ed, shifting all|
000949e0  20 72 6f 77 73 20 61 62  6f 76 65 20 69 74 20 28  | rows above it (|
000949f0  69 66 20 61 6e 79 29 20  75 70 20 6f 6e 65 2e 20  |if any) up one. |
00094a00  52 6f 77 20 30 20 69 73  20 61 74 20 74 68 65 20  |Row 0 is at the |
00094a10  62 6f 74 74 6f 6d 2e 20  54 68 69 73 20 66 75 6e  |bottom. This fun|
00094a20  63 74 69 6f 6e 20 69 73  20 65 71 75 69 76 61 6c  |ction is equival|
00094a30  65 6e 74 20 74 6f 20 3c  4f 53 5f 53 70 72 69 74  |ent to <OS_Sprit|
00094a40  65 4f 70 3d 3e 53 57 49  3a 4f 53 5f 53 70 72 69  |eOp=>SWI:OS_Spri|
00094a50  74 65 4f 70 3e 20 33 31  2e 00 00 00 44 41 54 41  |teOp> 31....DATA|
00094a60  67 01 00 00 53 70 72 69  74 65 5f 4c 6f 61 64 0a  |g...Sprite_Load.|
00094a70  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
00094a80  72 3e 20 2a 53 70 72 69  74 65 5f 4c 6f 61 64 20  |r> *Sprite_Load |
00094a90  28 3c 73 70 72 69 74 65  5f 61 72 65 61 3e 20 61  |(<sprite_area> a|
00094aa0  72 65 61 2c 20 63 68 61  72 20 2a 66 69 6c 65 6e  |rea, char *filen|
00094ab0  61 6d 65 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |ame);.Header:.<D|
00094ac0  65 73 6b 4c 69 62 3a 53  70 72 69 74 65 2e 68 3d  |eskLib:Sprite.h=|
00094ad0  3e 53 70 72 69 74 65 5f  44 4c 3e 0a 0a 52 65 74  |>Sprite_DL>..Ret|
00094ae0  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
00094af0  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
00094b00  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
00094b10  20 66 75 6e 63 74 69 6f  6e 20 6c 6f 61 64 73 20  | function loads |
00094b20  61 6c 6c 20 74 68 65 20  73 70 72 69 74 65 73 20  |all the sprites |
00094b30  69 6e 20 74 68 65 20 73  70 65 63 69 66 69 65 64  |in the specified|
00094b40  20 66 69 6c 65 20 69 6e  74 6f 20 74 68 65 20 73  | file into the s|
00094b50  70 72 69 74 65 20 61 72  65 61 20 77 68 6f 73 65  |prite area whose|
00094b60  20 70 6f 69 6e 74 65 72  20 69 73 20 67 69 76 65  | pointer is give|
00094b70  6e 2e 20 41 6e 79 20 73  70 72 69 74 65 73 20 61  |n. Any sprites a|
00094b80  6c 72 65 61 64 79 20 69  6e 20 74 68 65 20 61 72  |lready in the ar|
00094b90  65 61 20 61 72 65 20 64  65 6c 65 74 65 64 2e 20  |ea are deleted. |
00094ba0  49 74 20 69 73 20 65 71  75 69 76 61 6c 65 6e 74  |It is equivalent|
00094bb0  20 74 6f 20 4f 53 5f 53  70 72 69 74 65 4f 70 20  | to OS_SpriteOp |
00094bc0  31 30 2e 00 44 41 54 41  37 01 00 00 53 70 72 69  |10..DATA7...Spri|
00094bd0  74 65 5f 4c 6f 61 64 46  69 6c 65 0a 53 79 6e 74  |te_LoadFile.Synt|
00094be0  61 78 3a 09 3c 73 70 72  69 74 65 5f 61 72 65 61  |ax:.<sprite_area|
00094bf0  3e 20 53 70 72 69 74 65  5f 4c 6f 61 64 46 69 6c  |> Sprite_LoadFil|
00094c00  65 20 28 63 68 61 72 20  2a 66 69 6c 65 6e 61 6d  |e (char *filenam|
00094c10  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |e);.Header:.<Des|
00094c20  6b 4c 69 62 3a 53 70 72  69 74 65 2e 68 3d 3e 53  |kLib:Sprite.h=>S|
00094c30  70 72 69 74 65 5f 44 4c  3e 0a 0a 52 65 74 75 72  |prite_DL>..Retur|
00094c40  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 73  |ns:.Pointer to s|
00094c50  70 72 69 74 65 20 61 72  65 61 20 63 72 65 61 74  |prite area creat|
00094c60  65 64 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ed...This functi|
00094c70  6f 6e 20 61 6c 6c 6f 63  61 74 65 73 20 73 70 61  |on allocates spa|
00094c80  63 65 20 66 6f 72 20 61  20 73 70 72 69 74 65 20  |ce for a sprite |
00094c90  61 72 65 61 20 77 69 74  68 20 3c 6d 61 6c 6c 6f  |area with <mallo|
00094ca0  63 3e 2c 20 69 6e 69 74  69 61 6c 69 73 65 73 20  |c>, initialises |
00094cb0  69 74 20 61 6e 64 20 6c  6f 61 64 20 74 68 65 20  |it and load the |
00094cc0  73 70 65 63 69 66 69 65  64 20 66 69 6c 65 20 69  |specified file i|
00094cd0  6e 74 6f 20 69 74 2e 20  54 68 65 20 65 61 73 79  |nto it. The easy|
00094ce0  20 77 61 79 20 74 6f 20  6c 6f 61 64 20 61 20 73  | way to load a s|
00094cf0  70 72 69 74 65 20 66 69  6c 65 2e 00 44 41 54 41  |prite file..DATA|
00094d00  cd 00 00 00 73 70 72 69  74 65 5f 6d 61 69 6e 61  |....sprite_maina|
00094d10  72 65 61 0a 54 68 69 73  20 6d 61 63 72 6f 20 69  |rea.This macro i|
00094d20  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 73 70  |s defined in <sp|
00094d30  72 69 74 65 2e 68 3d 3e  73 70 72 69 74 65 5f 68  |rite.h=>sprite_h|
00094d40  3e 2e 20 49 74 20 63 61  6e 20 62 65 20 75 73 65  |>. It can be use|
00094d50  64 20 61 73 20 61 20 73  70 72 69 74 65 20 61 72  |d as a sprite ar|
00094d60  65 61 20 70 6f 69 6e 74  65 72 20 74 6f 20 69 6e  |ea pointer to in|
00094d70  64 69 63 61 74 65 20 74  68 65 20 73 79 73 74 65  |dicate the syste|
00094d80  6d 20 73 70 72 69 74 65  20 61 72 65 61 2e 20 49  |m sprite area. I|
00094d90  74 20 69 73 20 64 65 66  69 6e 65 64 20 61 73 3a  |t is defined as:|
00094da0  0a 0a 7b 66 43 6f 64 65  3b 61 6c 69 67 6e 20 63  |..{fCode;align c|
00094db0  65 6e 74 72 65 7d 28 28  73 70 72 69 74 65 5f 61  |entre}((sprite_a|
00094dc0  72 65 61 20 2a 29 20 30  29 00 00 00 44 41 54 41  |rea *) 0)...DATA|
00094dd0  a1 00 00 00 73 70 72 69  74 65 5f 6d 61 73 6b 73  |....sprite_masks|
00094de0  74 61 74 65 0a 54 68 69  73 20 65 6e 75 6d 65 72  |tate.This enumer|
00094df0  61 74 65 64 20 74 79 70  65 20 69 73 20 64 65 66  |ated type is def|
00094e00  69 6e 65 64 20 69 6e 20  3c 73 70 72 69 74 65 2e  |ined in <sprite.|
00094e10  68 3d 3e 73 70 72 69 74  65 3e 20 61 73 20 66 6f  |h=>sprite> as fo|
00094e20  6c 6c 6f 77 73 3a 0a 0a  20 20 20 5c 7b 0a 20 20  |llows:..   \{.  |
00094e30  20 20 20 73 70 72 69 74  65 5f 6d 61 73 6b 74 72  |   sprite_masktr|
00094e40  61 6e 73 70 61 72 65 6e  74 09 3d 20 30 2c 0a 20  |ansparent.= 0,. |
00094e50  20 20 20 20 73 70 72 69  74 65 5f 6d 61 73 6b 73  |    sprite_masks|
00094e60  6f 6c 69 64 09 3d 20 31  0a 20 20 20 7d 00 00 00  |olid.= 1.   }...|
00094e70  44 41 54 41 a5 00 00 00  73 70 72 69 74 65 5f 4d  |DATA....sprite_M|
00094e80  41 58 4e 41 4d 45 0a 54  68 69 73 20 6d 61 63 72  |AXNAME.This macr|
00094e90  6f 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |o is defined in |
00094ea0  3c 44 65 73 6b 4c 69 62  3a 53 70 72 69 74 65 2e  |<DeskLib:Sprite.|
00094eb0  68 3d 3e 53 70 72 69 74  65 5f 44 4c 3e 20 61 73  |h=>Sprite_DL> as|
00094ec0  20 61 20 76 61 6c 75 65  20 72 65 70 72 65 73 65  | a value represe|
00094ed0  6e 74 69 6e 67 20 74 68  65 20 6c 6f 6e 67 65 73  |nting the longes|
00094ee0  74 20 73 70 72 69 74 65  20 6e 61 6d 65 20 77 68  |t sprite name wh|
00094ef0  69 63 68 20 63 61 6e 20  62 65 20 75 73 65 64 2e  |ich can be used.|
00094f00  20 49 74 20 69 73 20 64  65 66 69 6e 65 64 20 61  | It is defined a|
00094f10  73 20 31 32 2e 00 00 00  44 41 54 41 f2 01 00 00  |s 12....DATA....|
00094f20  53 70 72 69 74 65 5f 4d  65 6d 6f 72 79 53 69 7a  |Sprite_MemorySiz|
00094f30  65 0a 53 79 6e 74 61 78  3a 09 69 6e 74 20 53 70  |e.Syntax:.int Sp|
00094f40  72 69 74 65 5f 4d 65 6d  6f 72 79 53 69 7a 65 20  |rite_MemorySize |
00094f50  28 69 6e 74 20 77 2c 20  69 6e 74 20 68 2c 20 69  |(int w, int h, i|
00094f60  6e 74 20 6d 2c 20 3c 73  70 72 69 74 65 6d 65 6d  |nt m, <spritemem|
00094f70  5f 66 6c 61 67 73 3e 20  66 6c 61 67 73 29 3b 0a  |_flags> flags);.|
00094f80  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
00094f90  3a 53 70 72 69 74 65 2e  68 3d 3e 53 70 72 69 74  |:Sprite.h=>Sprit|
00094fa0  65 5f 44 4c 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |e_DL>..Returns:.|
00094fb0  53 69 7a 65 20 69 6e 20  62 79 74 65 73 2e 0a 0a  |Size in bytes...|
00094fc0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 63 61  |This function ca|
00094fd0  6c 63 75 6c 61 74 65 73  20 74 68 65 20 61 6d 6f  |lculates the amo|
00094fe0  75 6e 74 20 6f 66 20 6d  65 6d 6f 72 79 20 6e 65  |unt of memory ne|
00094ff0  65 64 65 64 20 74 6f 20  68 6f 6c 64 20 74 68 65  |eded to hold the|
00095000  20 73 70 72 69 74 65 20  77 68 6f 73 65 20 77 69  | sprite whose wi|
00095010  64 74 68 2c 20 68 65 69  67 68 74 20 61 6e 64 20  |dth, height and |
00095020  6d 6f 64 65 20 61 72 65  20 73 70 65 63 69 66 69  |mode are specifi|
00095030  65 64 20 28 69 6e 20 7b  2f 7d 77 7b 2f 7d 2c 20  |ed (in {/}w{/}, |
00095040  7b 2f 7d 68 7b 2f 7d 20  61 6e 64 20 7b 2f 7d 6d  |{/}h{/} and {/}m|
00095050  7b 2f 7d 29 2e 20 54 68  65 20 73 74 61 74 75 73  |{/}). The status|
00095060  20 6f 66 20 74 68 65 20  6d 61 73 6b 20 61 6e 64  | of the mask and|
00095070  20 70 61 6c 65 74 74 65  20 61 72 65 20 64 65 74  | palette are det|
00095080  65 72 6d 69 6e 65 64 20  62 79 20 74 68 65 20 2f  |ermined by the /|
00095090  66 6c 61 67 73 2f 2e 0a  0a 52 65 6d 65 6d 62 65  |flags/...Remembe|
000950a0  72 20 74 68 61 74 20 66  6f 72 20 61 20 73 70 72  |r that for a spr|
000950b0  69 74 65 20 61 72 65 61  2c 20 79 6f 75 20 6e 65  |ite area, you ne|
000950c0  65 64 20 74 6f 20 66 69  6e 64 20 74 68 65 20 73  |ed to find the s|
000950d0  69 7a 65 73 20 6f 66 20  61 6c 6c 20 74 68 65 20  |izes of all the |
000950e0  73 70 72 69 74 65 73 20  61 6e 64 20 61 64 64 20  |sprites and add |
000950f0  73 69 7a 65 6f 66 28 3c  73 70 72 69 74 65 5f 61  |sizeof(<sprite_a|
00095100  72 65 61 69 6e 66 6f 3e  29 2e 00 00 44 41 54 41  |reainfo>)...DATA|
00095110  d6 01 00 00 53 70 72 69  74 65 5f 4d 65 72 67 65  |....Sprite_Merge|
00095120  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00095130  6f 72 3e 20 2a 53 70 72  69 74 65 5f 4d 65 72 67  |or> *Sprite_Merg|
00095140  65 20 28 3c 73 70 72 69  74 65 5f 61 72 65 61 3e  |e (<sprite_area>|
00095150  20 61 72 65 61 2c 20 63  68 61 72 20 2a 66 69 6c  | area, char *fil|
00095160  65 6e 61 6d 65 29 3b 0a  48 65 61 64 65 72 3a 09  |ename);.Header:.|
00095170  3c 44 65 73 6b 4c 69 62  3a 53 70 72 69 74 65 2e  |<DeskLib:Sprite.|
00095180  68 3d 3e 53 70 72 69 74  65 5f 44 4c 3e 0a 0a 52  |h=>Sprite_DL>..R|
00095190  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
000951a0  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
000951b0  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
000951c0  69 73 20 66 75 6e 63 74  69 6f 6e 20 6c 6f 61 64  |is function load|
000951d0  73 20 61 6c 6c 20 74 68  65 20 73 70 72 69 74 65  |s all the sprite|
000951e0  73 20 69 6e 20 74 68 65  20 73 70 65 63 69 66 69  |s in the specifi|
000951f0  65 64 20 66 69 6c 65 20  69 6e 74 6f 20 74 68 65  |ed file into the|
00095200  20 73 70 72 69 74 65 20  61 72 65 61 20 77 68 6f  | sprite area who|
00095210  73 65 20 70 6f 69 6e 74  65 72 20 69 73 20 67 69  |se pointer is gi|
00095220  76 65 6e 2e 20 54 68 65  20 73 70 72 69 74 65 73  |ven. The sprites|
00095230  20 61 72 65 20 61 64 64  65 64 20 74 6f 20 61 6e  | are added to an|
00095240  79 20 73 70 72 69 74 65  73 20 61 6c 72 65 61 64  |y sprites alread|
00095250  79 20 69 6e 20 74 68 65  20 61 72 65 61 2e 20 49  |y in the area. I|
00095260  66 20 61 6e 79 20 6e 65  77 20 73 70 72 69 74 65  |f any new sprite|
00095270  73 20 68 61 76 65 20 74  68 65 20 73 61 6d 65 20  |s have the same |
00095280  6e 61 6d 65 20 61 73 20  65 78 69 73 74 69 6e 67  |name as existing|
00095290  20 73 70 72 69 74 65 73  2c 20 74 68 65 20 6f 6c  | sprites, the ol|
000952a0  64 20 6f 6e 65 73 20 61  72 65 20 64 65 6c 65 74  |d ones are delet|
000952b0  65 64 2e 20 54 68 69 73  20 66 75 6e 63 74 69 6f  |ed. This functio|
000952c0  6e 20 69 73 20 65 71 75  69 76 61 6c 65 6e 74 20  |n is equivalent |
000952d0  74 6f 20 4f 53 5f 53 70  72 69 74 65 4f 70 20 31  |to OS_SpriteOp 1|
000952e0  31 2e 00 00 44 41 54 41  f2 00 00 00 73 70 72 69  |1...DATA....spri|
000952f0  74 65 5f 6f 75 74 70 75  74 73 74 61 74 65 0a 54  |te_outputstate.T|
00095300  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
00095310  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
00095320  53 70 72 69 74 65 2e 68  3d 3e 53 70 72 69 74 65  |Sprite.h=>Sprite|
00095330  5f 44 4c 3e 2e 20 49 74  20 69 73 20 64 65 66 69  |_DL>. It is defi|
00095340  6e 65 64 20 61 73 20 74  68 65 20 66 6f 6c 6c 6f  |ned as the follo|
00095350  77 69 6e 67 20 73 74 72  75 63 74 75 72 65 3a 0a  |wing structure:.|
00095360  0a 20 20 20 20 5c 7b 0a  20 20 20 20 20 20 20 20  |.    \{.        |
00095370  69 6e 74 09 09 63 61 6c  6c 6e 6f 3b 0a 20 20 20  |int..callno;.   |
00095380  20 20 20 20 20 3c 73 70  72 69 74 65 5f 61 72 65  |     <sprite_are|
00095390  61 3e 09 73 70 72 69 74  65 61 72 65 61 3b 0a 20  |a>.spritearea;. |
000953a0  20 20 20 20 20 20 20 3c  73 70 72 69 74 65 3e 09  |       <sprite>.|
000953b0  73 70 72 69 74 65 3b 0a  20 20 20 20 20 20 20 20  |sprite;.        |
000953c0  76 6f 69 64 09 09 2a 73  61 76 65 61 72 65 61 3b  |void..*savearea;|
000953d0  0a 20 20 20 20 7d 00 00  44 41 54 41 2a 01 00 00  |.    }..DATA*...|
000953e0  73 70 72 69 74 65 5f 6f  75 74 70 75 74 74 6f 6d  |sprite_outputtom|
000953f0  61 73 6b 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |ask.Syntax:.<os_|
00095400  65 72 72 6f 72 3e 20 2a  73 70 72 69 74 65 5f 6f  |error> *sprite_o|
00095410  75 74 70 75 74 74 6f 6d  61 73 6b 20 28 3c 73 70  |utputtomask (<sp|
00095420  72 69 74 65 5f 61 72 65  61 3e 20 2a 61 72 65 61  |rite_area> *area|
00095430  2c 20 3c 73 70 72 69 74  65 5f 69 64 3e 20 2a 73  |, <sprite_id> *s|
00095440  70 72 2c 20 69 6e 74 20  2a 73 61 76 65 61 72 65  |pr, int *saveare|
00095450  61 2c 20 3c 73 70 72 69  74 65 5f 73 74 61 74 65  |a, <sprite_state|
00095460  3e 20 2a 73 74 61 74 65  29 3b 0a 48 65 61 64 65  |> *state);.Heade|
00095470  72 3a 09 3c 73 70 72 69  74 65 2e 68 3d 3e 73 70  |r:.<sprite.h=>sp|
00095480  72 69 74 65 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |rite_h>..Returns|
00095490  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
000954a0  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
000954b0  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
000954c0  63 74 69 6f 6e 20 72 65  64 69 72 65 63 74 73 20  |ction redirects |
000954d0  56 44 55 20 6f 75 74 70  75 74 20 74 6f 20 61 20  |VDU output to a |
000954e0  73 70 72 69 74 65 20 6d  61 73 6b 2c 20 73 61 76  |sprite mask, sav|
000954f0  69 6e 67 20 74 68 65 20  6f 6c 64 20 73 74 61 74  |ing the old stat|
00095500  65 2e 00 00 44 41 54 41  09 01 00 00 73 70 72 69  |e...DATA....spri|
00095510  74 65 5f 6f 75 74 70 75  74 74 6f 73 63 72 65 65  |te_outputtoscree|
00095520  6e 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |n.Syntax:.<os_er|
00095530  72 6f 72 3e 20 2a 73 70  72 69 74 65 5f 6f 75 74  |ror> *sprite_out|
00095540  70 75 74 74 6f 73 63 72  65 65 6e 20 28 69 6e 74  |puttoscreen (int|
00095550  20 2a 73 61 76 65 61 72  65 61 2c 20 3c 73 70 72  | *savearea, <spr|
00095560  69 74 65 5f 73 74 61 74  65 3e 20 2a 73 74 61 74  |ite_state> *stat|
00095570  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 70 72  |e);.Header:.<spr|
00095580  69 74 65 2e 68 3d 3e 73  70 72 69 74 65 5f 68 3e  |ite.h=>sprite_h>|
00095590  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
000955a0  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
000955b0  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
000955c0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
000955d0  65 64 69 72 65 63 74 73  20 56 44 55 20 6f 75 74  |edirects VDU out|
000955e0  70 75 74 20 62 61 63 6b  20 74 6f 20 74 68 65 20  |put back to the |
000955f0  73 63 72 65 65 6e 2c 20  73 61 76 69 6e 67 20 74  |screen, saving t|
00095600  68 65 20 6f 6c 64 20 73  74 61 74 65 2e 00 00 00  |he old state....|
00095610  44 41 54 41 29 01 00 00  73 70 72 69 74 65 5f 6f  |DATA)...sprite_o|
00095620  75 74 70 75 74 74 6f 73  70 72 69 74 65 0a 53 79  |utputtosprite.Sy|
00095630  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00095640  20 2a 73 70 72 69 74 65  5f 6f 75 74 70 75 74 74  | *sprite_outputt|
00095650  6f 73 70 72 69 74 65 20  28 3c 73 70 72 69 74 65  |osprite (<sprite|
00095660  5f 61 72 65 61 3e 20 2a  61 72 65 61 2c 20 3c 73  |_area> *area, <s|
00095670  70 72 69 74 65 5f 69 64  3e 20 2a 73 70 72 2c 20  |prite_id> *spr, |
00095680  69 6e 74 20 2a 73 61 76  65 61 72 65 61 2c 20 3c  |int *savearea, <|
00095690  73 70 72 69 74 65 5f 73  74 61 74 65 3e 20 2a 73  |sprite_state> *s|
000956a0  74 61 74 65 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |tate);.Header:.<|
000956b0  73 70 72 69 74 65 2e 68  3d 3e 73 70 72 69 74 65  |sprite.h=>sprite|
000956c0  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |_h>..Returns:.Po|
000956d0  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
000956e0  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
000956f0  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
00095700  6e 20 72 65 64 69 72 65  63 74 73 20 56 44 55 20  |n redirects VDU |
00095710  6f 75 74 70 75 74 20 74  6f 20 61 20 73 70 72 69  |output to a spri|
00095720  74 65 2c 20 73 61 76 69  6e 67 20 74 68 65 20 6f  |te, saving the o|
00095730  6c 64 20 73 74 61 74 65  2e 00 00 00 44 41 54 41  |ld state....DATA|
00095740  c6 00 00 00 73 70 72 69  74 65 5f 70 61 6c 66 6c  |....sprite_palfl|
00095750  61 67 0a 54 68 69 73 20  69 73 20 61 6e 20 65 6e  |ag.This is an en|
00095760  75 6d 65 72 61 74 65 64  20 74 79 70 65 20 64 65  |umerated type de|
00095770  66 69 6e 65 64 20 69 6e  20 3c 73 70 72 69 74 65  |fined in <sprite|
00095780  2e 68 3d 3e 73 70 72 69  74 65 5f 68 3e 2e 20 49  |.h=>sprite_h>. I|
00095790  74 20 69 73 20 75 73 65  64 20 74 6f 20 69 6e 64  |t is used to ind|
000957a0  69 63 61 74 65 20 77 68  65 74 68 65 72 20 74 68  |icate whether th|
000957b0  65 20 73 70 72 69 74 65  20 68 61 73 20 61 20 70  |e sprite has a p|
000957c0  61 6c 65 74 74 65 2e 0a  0a 20 20 5c 7b 0a 20 20  |alette...  \{.  |
000957d0  20 20 73 70 72 69 74 65  5f 6e 6f 70 61 6c 65 74  |  sprite_nopalet|
000957e0  74 65 09 3d 20 30 2c 0a  20 20 20 20 73 70 72 69  |te.= 0,.    spri|
000957f0  74 65 5f 68 61 73 70 61  6c 65 74 74 65 09 0a 20  |te_haspalette.. |
00095800  20 7d 00 00 44 41 54 41  93 00 00 00 73 70 72 69  | }..DATA....spri|
00095810  74 65 5f 70 67 6d 0a 54  68 69 73 20 74 79 70 65  |te_pgm.This type|
00095820  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
00095830  73 70 72 69 74 65 2e 68  3d 3e 73 70 72 69 74 65  |sprite.h=>sprite|
00095840  5f 68 3e 20 61 73 20 74  68 65 20 66 6f 6c 6c 6f  |_h> as the follo|
00095850  77 69 6e 67 20 73 74 72  75 63 74 75 72 65 3a 0a  |wing structure:.|
00095860  7b 77 72 61 70 20 6f 66  66 7d 0a 20 20 5c 7b 0a  |{wrap off}.  \{.|
00095870  20 20 20 20 69 6e 74 20  70 30 5b 32 5d 2c 20 70  |    int p0[2], p|
00095880  31 5b 32 5d 2c 20 70 32  5b 32 5d 2c 20 70 33 5b  |1[2], p2[2], p3[|
00095890  32 5d 3b 0a 20 20 7d 00  44 41 54 41 d6 00 00 00  |2];.  }.DATA....|
000958a0  73 70 72 69 74 65 5f 70  69 78 74 72 61 6e 73 0a  |sprite_pixtrans.|
000958b0  54 68 69 73 20 69 73 20  61 20 74 79 70 65 20 64  |This is a type d|
000958c0  65 66 69 6e 65 64 20 69  6e 20 3c 73 70 72 69 74  |efined in <sprit|
000958d0  65 2e 68 3d 3e 73 70 72  69 74 65 5f 68 3e 20 73  |e.h=>sprite_h> s|
000958e0  75 63 68 20 74 68 61 74  20 61 20 70 6f 69 6e 74  |uch that a point|
000958f0  65 72 20 74 6f 20 74 68  69 73 20 74 79 70 65 20  |er to this type |
00095900  69 73 20 61 20 70 6f 69  6e 74 65 72 20 74 6f 20  |is a pointer to |
00095910  61 20 70 69 78 65 6c 20  74 72 61 6e 73 6c 61 74  |a pixel translat|
00095920  69 6f 6e 20 74 61 62 6c  65 2e 20 48 65 6e 63 65  |ion table. Hence|
00095930  20 69 74 20 69 73 20 64  65 66 69 6e 65 64 20 61  | it is defined a|
00095940  73 20 61 20 2f 63 68 61  72 2f 20 28 69 65 20 74  |s a /char/ (ie t|
00095950  68 65 20 70 6f 69 6e 74  65 72 20 69 73 20 61 20  |he pointer is a |
00095960  7b 2f 7d 63 68 61 72 20  2a 7b 2f 7d 29 2e 00 00  |{/}char *{/})...|
00095970  44 41 54 41 de 01 00 00  53 70 72 69 74 65 5f 50  |DATA....Sprite_P|
00095980  6c 6f 74 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |lot.Syntax:.<os_|
00095990  65 72 72 6f 72 3e 20 2a  53 70 72 69 74 65 5f 50  |error> *Sprite_P|
000959a0  6c 6f 74 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |lot (<sprite_are|
000959b0  61 3e 20 61 72 65 61 2c  20 63 68 61 72 20 2a 6e  |a> area, char *n|
000959c0  61 6d 65 2c 20 69 6e 74  20 78 2c 20 69 6e 74 20  |ame, int x, int |
000959d0  79 2c 20 69 6e 74 20 61  29 3b 0a 48 65 61 64 65  |y, int a);.Heade|
000959e0  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 53 70 72 69  |r:.<DeskLib:Spri|
000959f0  74 65 2e 68 3d 3e 53 70  72 69 74 65 5f 44 4c 3e  |te.h=>Sprite_DL>|
00095a00  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
00095a10  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
00095a20  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
00095a30  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 70  |.This function p|
00095a40  6c 6f 74 73 20 74 68 65  20 73 70 72 69 74 65 20  |lots the sprite |
00095a50  69 64 65 6e 74 69 66 69  65 64 20 6f 6e 20 74 68  |identified on th|
00095a60  65 20 73 63 72 65 65 6e  20 77 69 74 68 20 69 74  |e screen with it|
00095a70  73 20 62 6f 74 74 6f 6d  20 6c 65 66 74 20 63 6f  |s bottom left co|
00095a80  72 6e 65 72 20 61 74 20  7b 2f 7d 28 78 2c 79 29  |rner at {/}(x,y)|
00095a90  7b 2f 7d 2e 20 54 68 65  20 70 6c 6f 74 20 3c 61  |{/}. The plot <a|
00095aa0  63 74 69 6f 6e 3d 3e 56  44 55 3a 31 38 61 3e 2c  |ction=>VDU:18a>,|
00095ab0  20 67 69 76 65 6e 20 69  6e 20 2f 61 2f 2c 20 69  | given in /a/, i|
00095ac0  73 20 74 68 65 20 73 61  6d 65 20 61 73 20 74 68  |s the same as th|
00095ad0  61 74 20 75 73 65 64 20  66 6f 72 20 3c 47 43 4f  |at used for <GCO|
00095ae0  4c 3d 3e 42 61 73 69 63  3a 47 43 4f 4c 3e 20 65  |L=>Basic:GCOL> e|
00095af0  78 63 65 70 74 20 74 68  61 74 20 76 61 6c 75 65  |xcept that value|
00095b00  73 20 38 2d 31 35 20 69  6e 64 69 63 61 74 65 20  |s 8-15 indicate |
00095b10  74 68 61 74 20 74 68 65  20 6d 61 73 6b 20 73 68  |that the mask sh|
00095b20  6f 75 6c 64 20 62 65 20  75 73 65 64 2e 20 56 61  |ould be used. Va|
00095b30  6c 75 65 73 20 61 62 6f  76 65 20 31 36 20 68 61  |lues above 16 ha|
00095b40  76 65 20 6e 6f 20 6d 65  61 6e 69 6e 67 2e 00 00  |ve no meaning...|
00095b50  44 41 54 41 e0 02 00 00  53 70 72 69 74 65 5f 50  |DATA....Sprite_P|
00095b60  6c 6f 74 47 72 65 79 0a  53 79 6e 74 61 78 3a 09  |lotGrey.Syntax:.|
00095b70  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 53 70 72 69  |<os_error> *Spri|
00095b80  74 65 5f 50 6c 6f 74 47  72 65 79 20 28 3c 73 70  |te_PlotGrey (<sp|
00095b90  72 69 74 65 5f 61 72 65  61 3e 20 61 72 65 61 2c  |rite_area> area,|
00095ba0  20 63 68 61 72 20 2a 6e  61 6d 65 2c 20 3c 77 69  | char *name, <wi|
00095bb0  6d 70 5f 70 6f 69 6e 74  3e 20 2a 70 6f 73 2c 20  |mp_point> *pos, |
00095bc0  3c 73 70 72 69 74 65 5f  73 63 61 6c 65 66 61 63  |<sprite_scalefac|
00095bd0  74 6f 72 73 3e 20 73 63  2c 20 76 6f 69 64 20 2a  |tors> sc, void *|
00095be0  70 69 78 74 72 61 6e 29  3b 0a 48 65 61 64 65 72  |pixtran);.Header|
00095bf0  3a 09 3c 44 65 73 6b 4c  69 62 3a 53 70 72 69 74  |:.<DeskLib:Sprit|
00095c00  65 2e 68 3d 3e 53 70 72  69 74 65 5f 44 4c 3e 0a  |e.h=>Sprite_DL>.|
00095c10  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
00095c20  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
00095c30  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
00095c40  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 69 73  |This function is|
00095c50  20 73 69 6d 69 6c 61 72  20 74 6f 20 3c 53 70 72  | similar to <Spr|
00095c60  69 74 65 5f 50 6c 6f 74  53 63 61 6c 65 64 3e 2c  |ite_PlotScaled>,|
00095c70  20 65 78 63 65 70 74 20  74 68 61 74 20 69 74 20  | except that it |
00095c80  61 6e 74 69 2d 61 6c 69  61 73 65 73 20 74 68 65  |anti-aliases the|
00095c90  20 73 70 72 69 74 65 20  61 73 20 69 74 20 73 63  | sprite as it sc|
00095ca0  61 6c 65 73 20 69 74 2e  20 54 68 65 20 73 70 72  |ales it. The spr|
00095cb0  69 74 65 20 6d 75 73 74  20 68 61 76 65 20 62 65  |ite must have be|
00095cc0  65 6e 20 64 65 66 69 6e  65 64 20 69 6e 20 61 20  |en defined in a |
00095cd0  31 36 20 63 6f 6c 6f 75  72 20 6d 6f 64 65 2c 20  |16 colour mode, |
00095ce0  61 6e 64 20 74 68 65 20  70 61 6c 65 74 74 65 20  |and the palette |
00095cf0  6d 75 73 74 20 62 65 20  61 20 6c 69 6e 65 61 72  |must be a linear|
00095d00  20 67 72 65 79 2d 73 63  61 6c 65 2e 0a 0a 54 68  | grey-scale...Th|
00095d10  69 73 20 63 61 6c 6c 20  69 73 20 73 6c 6f 77 20  |is call is slow |
00095d20  61 6e 64 20 73 68 6f 75  6c 64 20 6f 6e 6c 79 20  |and should only |
00095d30  62 65 20 75 73 65 64 20  77 68 65 6e 20 74 68 65  |be used when the|
00095d40  20 71 75 61 6c 69 74 79  20 69 73 20 6d 6f 72 65  | quality is more|
00095d50  20 69 6d 70 6f 72 74 61  6e 74 20 74 68 61 6e 20  | important than |
00095d60  73 70 65 65 64 2e 20 49  66 20 74 68 69 73 20 71  |speed. If this q|
00095d70  75 61 6c 69 74 79 20 69  73 20 6e 65 65 64 65 64  |uality is needed|
00095d80  20 66 6f 72 20 73 6f 6d  65 74 68 69 6e 67 20 74  | for something t|
00095d90  68 61 74 20 77 69 6c 6c  20 62 65 20 72 65 64 72  |hat will be redr|
00095da0  61 77 6e 20 6d 6f 72 65  20 74 68 61 6e 20 6f 6e  |awn more than on|
00095db0  63 65 2c 20 69 74 20 69  73 20 61 64 76 69 73 61  |ce, it is advisa|
00095dc0  62 6c 65 20 74 6f 20 72  65 64 72 61 77 20 69 74  |ble to redraw it|
00095dd0  20 6f 6e 63 65 20 69 6e  74 6f 20 61 6e 6f 74 68  | once into anoth|
00095de0  65 72 20 73 70 72 69 74  65 2c 20 75 73 69 6e 67  |er sprite, using|
00095df0  20 3c 53 70 72 69 74 65  5f 52 65 64 69 72 65 63  | <Sprite_Redirec|
00095e00  74 3e 2c 20 61 6e 64 20  74 68 65 6e 20 72 65 64  |t>, and then red|
00095e10  72 61 77 20 74 6f 20 73  63 72 65 65 6e 20 75 73  |raw to screen us|
00095e20  69 6e 67 20 74 68 69 73  20 73 70 72 69 74 65 2e  |ing this sprite.|
00095e30  44 41 54 41 30 02 00 00  53 70 72 69 74 65 5f 50  |DATA0...Sprite_P|
00095e40  6c 6f 74 4d 61 73 6b 0a  53 79 6e 74 61 78 3a 09  |lotMask.Syntax:.|
00095e50  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 53 70 72 69  |<os_error> *Spri|
00095e60  74 65 5f 50 6c 6f 74 4d  61 73 6b 20 28 3c 73 70  |te_PlotMask (<sp|
00095e70  72 69 74 65 5f 61 72 65  61 3e 20 61 72 65 61 2c  |rite_area> area,|
00095e80  20 63 68 61 72 20 2a 6e  61 6d 65 2c 20 3c 77 69  | char *name, <wi|
00095e90  6d 70 5f 70 6f 69 6e 74  3e 20 2a 70 6f 73 29 3b  |mp_point> *pos);|
00095ea0  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
00095eb0  62 3a 53 70 72 69 74 65  2e 68 3d 3e 53 70 72 69  |b:Sprite.h=>Spri|
00095ec0  74 65 5f 44 4c 3e 0a 0a  52 65 74 75 72 6e 73 3a  |te_DL>..Returns:|
00095ed0  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
00095ee0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
00095ef0  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
00095f00  74 69 6f 6e 20 70 6c 6f  74 73 20 61 20 73 70 72  |tion plots a spr|
00095f10  69 74 65 20 6d 61 73 6b  20 69 6e 20 74 68 65 20  |ite mask in the |
00095f20  63 75 72 72 65 6e 74 20  62 61 63 6b 67 72 6f 75  |current backgrou|
00095f30  6e 64 20 67 72 61 70 68  69 63 73 20 63 6f 6c 6f  |nd graphics colo|
00095f40  75 72 20 61 6e 64 20 61  63 74 69 6f 6e 20 28 73  |ur and action (s|
00095f50  65 74 20 75 73 69 6e 67  20 3c 47 46 58 5f 47 43  |et using <GFX_GC|
00095f60  4f 4c 3e 29 2c 20 61 74  20 74 68 65 20 63 75 72  |OL>), at the cur|
00095f70  72 65 6e 74 20 67 72 61  70 68 69 63 73 20 63 75  |rent graphics cu|
00095f80  72 73 6f 72 20 70 6f 73  69 74 69 6f 6e 2e 20 41  |rsor position. A|
00095f90  6c 6c 20 31 20 62 69 74  73 20 69 6e 20 74 68 65  |ll 1 bits in the|
00095fa0  20 6d 61 73 6b 20 61 72  65 20 70 6c 6f 74 74 65  | mask are plotte|
00095fb0  64 2c 20 30 20 62 69 74  73 20 61 72 65 20 6e 6f  |d, 0 bits are no|
00095fc0  74 2e 20 49 66 20 74 68  65 20 73 70 65 63 69 66  |t. If the specif|
00095fd0  69 65 64 20 73 70 72 69  74 65 20 68 61 73 20 6e  |ied sprite has n|
00095fe0  6f 20 6d 61 73 6b 2c 20  61 20 72 65 63 74 61 6e  |o mask, a rectan|
00095ff0  67 6c 65 20 74 68 65 20  73 69 7a 65 20 6f 66 20  |gle the size of |
00096000  74 68 65 20 73 70 72 69  74 65 20 69 73 20 70 6c  |the sprite is pl|
00096010  6f 74 74 65 64 20 69 6e  73 74 65 61 64 2e 20 54  |otted instead. T|
00096020  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 69 73 20  |his function is |
00096030  65 71 75 69 76 61 6c 65  6e 74 20 74 6f 20 3c 4f  |equivalent to <O|
00096040  53 5f 53 70 72 69 74 65  4f 70 3d 3e 53 57 49 3a  |S_SpriteOp=>SWI:|
00096050  4f 53 5f 53 70 72 69 74  65 4f 70 3e 20 34 38 2e  |OS_SpriteOp> 48.|
00096060  44 41 54 41 10 02 00 00  53 70 72 69 74 65 5f 50  |DATA....Sprite_P|
00096070  6c 6f 74 4d 61 73 6b 53  63 61 6c 65 64 0a 53 79  |lotMaskScaled.Sy|
00096080  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
00096090  20 2a 53 70 72 69 74 65  5f 50 6c 6f 74 4d 61 73  | *Sprite_PlotMas|
000960a0  6b 53 63 61 6c 65 64 20  28 3c 73 70 72 69 74 65  |kScaled (<sprite|
000960b0  5f 61 72 65 61 3e 20 61  72 65 61 2c 20 63 68 61  |_area> area, cha|
000960c0  72 20 2a 6e 61 6d 65 2c  20 3c 77 69 6d 70 5f 70  |r *name, <wimp_p|
000960d0  6f 69 6e 74 3e 20 2a 70  2c 20 3c 73 70 72 69 74  |oint> *p, <sprit|
000960e0  65 5f 73 63 61 6c 65 66  61 63 74 6f 72 73 3e 20  |e_scalefactors> |
000960f0  73 63 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |sc);.Header:.<De|
00096100  73 6b 4c 69 62 3a 53 70  72 69 74 65 2e 68 3d 3e  |skLib:Sprite.h=>|
00096110  53 70 72 69 74 65 5f 44  4c 3e 0a 0a 52 65 74 75  |Sprite_DL>..Retu|
00096120  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00096130  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00096140  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00096150  66 75 6e 63 74 69 6f 6e  20 70 6c 6f 74 73 20 61  |function plots a|
00096160  20 73 70 72 69 74 65 20  6d 61 73 6b 20 69 6e 20  | sprite mask in |
00096170  74 68 65 20 63 75 72 72  65 6e 74 20 62 61 63 6b  |the current back|
00096180  67 72 6f 75 6e 64 20 67  72 61 70 68 69 63 73 20  |ground graphics |
00096190  63 6f 6c 6f 75 72 20 61  6e 64 20 61 63 74 69 6f  |colour and actio|
000961a0  6e 20 28 73 65 74 20 75  73 69 6e 67 20 3c 47 46  |n (set using <GF|
000961b0  58 5f 47 43 4f 4c 3e 29  20 61 74 20 7b 2f 7d 28  |X_GCOL>) at {/}(|
000961c0  78 2c 79 29 7b 2f 7d 2e  20 41 6c 6c 20 31 20 62  |x,y){/}. All 1 b|
000961d0  69 74 73 20 69 6e 20 74  68 65 20 6d 61 73 6b 20  |its in the mask |
000961e0  61 72 65 20 70 6c 6f 74  74 65 64 2c 20 30 20 62  |are plotted, 0 b|
000961f0  69 74 73 20 61 72 65 20  6e 6f 74 2e 20 54 68 65  |its are not. The|
00096200  20 6d 61 73 6b 20 69 73  20 73 63 61 6c 65 64 20  | mask is scaled |
00096210  61 63 63 6f 72 64 69 6e  67 20 74 6f 20 74 68 65  |according to the|
00096220  20 73 63 61 6c 65 64 20  66 61 63 74 6f 72 73 20  | scaled factors |
00096230  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 2f 73  |pointed to by /s|
00096240  63 2f 2e 20 54 68 69 73  20 66 75 6e 63 74 69 6f  |c/. This functio|
00096250  6e 20 69 73 20 65 71 75  69 76 61 6c 65 6e 74 20  |n is equivalent |
00096260  74 6f 20 4f 53 5f 53 70  72 69 74 65 20 35 30 2e  |to OS_Sprite 50.|
00096270  44 41 54 41 5d 02 00 00  53 70 72 69 74 65 5f 50  |DATA]...Sprite_P|
00096280  6c 6f 74 53 63 61 6c 65  64 0a 53 79 6e 74 61 78  |lotScaled.Syntax|
00096290  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 53 70  |:.<os_error> *Sp|
000962a0  72 69 74 65 5f 50 6c 6f  74 53 63 61 6c 65 64 20  |rite_PlotScaled |
000962b0  28 3c 73 70 72 69 74 65  5f 61 72 65 61 3e 20 61  |(<sprite_area> a|
000962c0  72 65 61 2c 20 63 68 61  72 20 2a 6e 61 6d 65 2c  |rea, char *name,|
000962d0  20 3c 77 69 6d 70 5f 70  6f 69 6e 74 3e 20 2a 70  | <wimp_point> *p|
000962e0  6f 73 2c 20 3c 73 70 72  69 74 65 5f 73 63 61 6c  |os, <sprite_scal|
000962f0  65 66 61 63 74 6f 72 73  3e 20 73 63 2c 20 76 6f  |efactors> sc, vo|
00096300  69 64 20 2a 70 69 78 74  72 61 6e 29 3b 0a 48 65  |id *pixtran);.He|
00096310  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 53  |ader:.<DeskLib:S|
00096320  70 72 69 74 65 2e 68 3d  3e 53 70 72 69 74 65 5f  |prite.h=>Sprite_|
00096330  44 4c 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |DL>..Returns:.Po|
00096340  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
00096350  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
00096360  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
00096370  6e 20 77 69 6c 6c 20 70  6c 6f 74 20 74 68 65 20  |n will plot the |
00096380  73 70 72 69 74 65 20 69  64 65 6e 74 69 66 69 65  |sprite identifie|
00096390  64 20 6f 6e 20 74 68 65  20 73 63 72 65 65 6e 20  |d on the screen |
000963a0  77 69 74 68 20 69 74 73  20 62 6f 74 74 6f 6d 20  |with its bottom |
000963b0  6c 65 66 74 20 63 6f 72  6e 65 72 20 61 74 20 70  |left corner at p|
000963c0  6f 73 69 74 69 6f 6e 20  2f 70 6f 73 2f 20 75 73  |osition /pos/ us|
000963d0  69 6e 67 20 74 68 65 20  63 75 72 72 65 6e 74 20  |ing the current |
000963e0  67 72 61 70 68 69 63 73  20 63 6f 6c 6f 75 72 20  |graphics colour |
000963f0  61 6e 64 20 61 63 74 69  6f 6e 2e 0a 0a 49 6e 20  |and action...In |
00096400  61 64 64 69 74 69 6f 6e  20 74 68 65 20 73 70 72  |addition the spr|
00096410  69 74 65 20 77 69 6c 6c  20 62 65 20 73 63 61 6c  |ite will be scal|
00096420  65 64 20 75 73 69 6e 67  20 74 68 65 20 73 63 61  |ed using the sca|
00096430  6c 69 6e 67 20 66 61 63  74 6f 72 73 20 70 6f 69  |ling factors poi|
00096440  6e 74 65 64 20 74 6f 20  62 79 20 2f 73 63 2f 2c  |nted to by /sc/,|
00096450  20 61 6e 64 20 75 73 69  6e 67 20 74 68 65 20 70  | and using the p|
00096460  69 78 65 6c 20 74 72 61  6e 73 6c 61 74 69 6f 6e  |ixel translation|
00096470  20 74 61 62 6c 65 20 67  69 76 65 6e 20 62 79 20  | table given by |
00096480  2f 70 69 78 74 72 61 6e  2f 2e 0a 0a 54 68 69 73  |/pixtran/...This|
00096490  20 66 75 6e 63 74 69 6f  6e 20 69 73 20 65 71 75  | function is equ|
000964a0  69 76 61 6c 65 6e 74 20  74 6f 20 3c 4f 53 5f 53  |ivalent to <OS_S|
000964b0  70 72 69 74 65 4f 70 3d  3e 53 57 49 3a 4f 53 5f  |priteOp=>SWI:OS_|
000964c0  53 70 72 69 74 65 4f 70  3e 20 35 32 2e 00 00 00  |SpriteOp> 52....|
000964d0  44 41 54 41 9d 00 00 00  73 70 72 69 74 65 5f 70  |DATA....sprite_p|
000964e0  74 72 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |tr.This type is |
000964f0  64 65 66 69 6e 65 64 20  69 6e 20 3c 73 70 72 69  |defined in <spri|
00096500  74 65 2e 68 3d 3e 73 70  72 69 74 65 5f 68 3e 20  |te.h=>sprite_h> |
00096510  61 73 20 61 20 74 79 70  65 20 63 61 70 61 62 6c  |as a type capabl|
00096520  65 20 6f 66 20 68 6f 6c  64 69 6e 67 20 61 20 70  |e of holding a p|
00096530  6f 69 6e 74 65 72 20 74  6f 20 61 20 73 70 72 69  |ointer to a spri|
00096540  74 65 2e 20 49 74 20 69  73 20 61 63 74 75 61 6c  |te. It is actual|
00096550  6c 79 20 64 65 66 69 6e  65 64 20 61 73 20 61 20  |ly defined as a |
00096560  7b 2f 7d 76 6f 69 64 20  2a 7b 2f 7d 2e 00 00 00  |{/}void *{/}....|
00096570  44 41 54 41 db 01 00 00  73 70 72 69 74 65 5f 70  |DATA....sprite_p|
00096580  75 74 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |ut.Syntax:.<os_e|
00096590  72 72 6f 72 3e 20 2a 73  70 72 69 74 65 5f 70 75  |rror> *sprite_pu|
000965a0  74 20 28 3c 73 70 72 69  74 65 5f 61 72 65 61 3e  |t (<sprite_area>|
000965b0  20 2a 61 72 65 61 2c 20  3c 73 70 72 69 74 65 5f  | *area, <sprite_|
000965c0  69 64 3e 20 2a 73 70 72  2c 20 69 6e 74 20 61 29  |id> *spr, int a)|
000965d0  3b 0a 48 65 61 64 65 72  3a 09 3c 73 70 72 69 74  |;.Header:.<sprit|
000965e0  65 2e 68 3d 3e 73 70 72  69 74 65 5f 68 3e 0a 0a  |e.h=>sprite_h>..|
000965f0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00096600  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00096610  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00096620  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 70 75 74  |his function put|
00096630  73 20 74 68 65 20 73 70  72 69 74 65 20 69 64 65  |s the sprite ide|
00096640  6e 74 69 66 69 65 64 20  6f 6e 20 74 68 65 20 73  |ntified on the s|
00096650  63 72 65 65 6e 20 77 69  74 68 20 69 74 73 20 62  |creen with its b|
00096660  6f 74 74 6f 6d 20 6c 65  66 74 20 63 6f 72 6e 65  |ottom left corne|
00096670  72 20 61 74 20 74 68 65  20 63 75 72 72 65 6e 74  |r at the current|
00096680  20 67 72 61 70 68 69 63  73 20 63 75 72 73 6f 72  | graphics cursor|
00096690  20 70 6f 73 69 74 69 6f  6e 2e 20 54 68 65 20 70  | position. The p|
000966a0  6c 6f 74 20 3c 61 63 74  69 6f 6e 3d 3e 56 44 55  |lot <action=>VDU|
000966b0  3a 31 38 61 3e 2c 20 67  69 76 65 6e 20 69 6e 20  |:18a>, given in |
000966c0  2f 61 2f 2c 20 69 73 20  74 68 65 20 73 61 6d 65  |/a/, is the same|
000966d0  20 61 73 20 74 68 61 74  20 75 73 65 64 20 66 6f  | as that used fo|
000966e0  72 20 3c 6f 73 5f 67 63  6f 6c 3e 20 65 78 63 65  |r <os_gcol> exce|
000966f0  70 74 20 74 68 61 74 20  76 61 6c 75 65 73 20 38  |pt that values 8|
00096700  2d 31 35 20 69 6e 64 69  63 61 74 65 20 74 68 61  |-15 indicate tha|
00096710  74 20 74 68 65 20 6d 61  73 6b 20 73 68 6f 75 6c  |t the mask shoul|
00096720  64 20 62 65 20 75 73 65  64 2e 20 56 61 6c 75 65  |d be used. Value|
00096730  73 20 61 62 6f 76 65 20  31 36 20 68 61 76 65 20  |s above 16 have |
00096740  6e 6f 20 6d 65 61 6e 69  6e 67 2e 00 44 41 54 41  |no meaning..DATA|
00096750  dc 01 00 00 73 70 72 69  74 65 5f 70 75 74 5f 67  |....sprite_put_g|
00096760  69 76 65 6e 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |iven.Syntax:.<os|
00096770  5f 65 72 72 6f 72 3e 20  2a 73 70 72 69 74 65 5f  |_error> *sprite_|
00096780  70 75 74 5f 67 69 76 65  6e 20 28 3c 73 70 72 69  |put_given (<spri|
00096790  74 65 5f 61 72 65 61 3e  20 2a 61 72 65 61 2c 20  |te_area> *area, |
000967a0  3c 73 70 72 69 74 65 5f  69 64 3e 20 2a 73 70 72  |<sprite_id> *spr|
000967b0  2c 20 69 6e 74 20 61 2c  20 69 6e 74 20 78 2c 20  |, int a, int x, |
000967c0  69 6e 74 20 79 29 3b 0a  48 65 61 64 65 72 3a 09  |int y);.Header:.|
000967d0  3c 73 70 72 69 74 65 2e  68 3d 3e 73 70 72 69 74  |<sprite.h=>sprit|
000967e0  65 5f 68 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |e_h>..Returns:.P|
000967f0  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
00096800  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
00096810  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
00096820  6f 6e 20 70 75 74 73 20  74 68 65 20 73 70 72 69  |on puts the spri|
00096830  74 65 20 69 64 65 6e 74  69 66 69 65 64 20 6f 6e  |te identified on|
00096840  20 74 68 65 20 73 63 72  65 65 6e 20 77 69 74 68  | the screen with|
00096850  20 69 74 73 20 62 6f 74  74 6f 6d 20 6c 65 66 74  | its bottom left|
00096860  20 63 6f 72 6e 65 72 20  61 74 20 7b 2f 7d 28 78  | corner at {/}(x|
00096870  2c 79 29 7b 2f 7d 2e 20  54 68 65 20 70 6c 6f 74  |,y){/}. The plot|
00096880  20 3c 61 63 74 69 6f 6e  3d 3e 56 44 55 3a 31 38  | <action=>VDU:18|
00096890  61 3e 2c 20 67 69 76 65  6e 20 69 6e 20 2f 61 2f  |a>, given in /a/|
000968a0  2c 20 69 73 20 74 68 65  20 73 61 6d 65 20 61 73  |, is the same as|
000968b0  20 74 68 61 74 20 75 73  65 64 20 66 6f 72 20 3c  | that used for <|
000968c0  6f 73 5f 67 63 6f 6c 3e  20 65 78 63 65 70 74 20  |os_gcol> except |
000968d0  74 68 61 74 20 76 61 6c  75 65 73 20 38 2d 31 35  |that values 8-15|
000968e0  20 69 6e 64 69 63 61 74  65 20 74 68 61 74 20 74  | indicate that t|
000968f0  68 65 20 6d 61 73 6b 20  73 68 6f 75 6c 64 20 62  |he mask should b|
00096900  65 20 75 73 65 64 2e 20  56 61 6c 75 65 73 20 61  |e used. Values a|
00096910  62 6f 76 65 20 31 36 20  68 61 76 65 20 6e 6f 20  |bove 16 have no |
00096920  6d 65 61 6e 69 6e 67 2e  44 41 54 41 1a 02 00 00  |meaning.DATA....|
00096930  73 70 72 69 74 65 5f 70  75 74 5f 6d 61 73 6b 0a  |sprite_put_mask.|
00096940  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
00096950  72 3e 20 2a 73 70 72 69  74 65 5f 70 75 74 5f 6d  |r> *sprite_put_m|
00096960  61 73 6b 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |ask (<sprite_are|
00096970  61 3e 20 2a 61 72 65 61  2c 20 3c 73 70 72 69 74  |a> *area, <sprit|
00096980  65 5f 69 64 3e 20 2a 73  70 72 29 3b 0a 48 65 61  |e_id> *spr);.Hea|
00096990  64 65 72 3a 09 3c 73 70  72 69 74 65 2e 68 3d 3e  |der:.<sprite.h=>|
000969a0  73 70 72 69 74 65 5f 68  3e 0a 0a 52 65 74 75 72  |sprite_h>..Retur|
000969b0  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
000969c0  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
000969d0  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
000969e0  75 6e 63 74 69 6f 6e 20  70 6c 6f 74 73 20 61 20  |unction plots a |
000969f0  73 70 72 69 74 65 20 6d  61 73 6b 20 69 6e 20 74  |sprite mask in t|
00096a00  68 65 20 63 75 72 72 65  6e 74 20 62 61 63 6b 67  |he current backg|
00096a10  72 6f 75 6e 64 20 67 72  61 70 68 69 63 73 20 63  |round graphics c|
00096a20  6f 6c 6f 75 72 20 61 6e  64 20 61 63 74 69 6f 6e  |olour and action|
00096a30  20 28 73 65 74 20 75 73  69 6e 67 20 3c 6f 73 5f  | (set using <os_|
00096a40  67 63 6f 6c 3e 29 2c 20  61 74 20 74 68 65 20 63  |gcol>), at the c|
00096a50  75 72 72 65 6e 74 20 67  72 61 70 68 69 63 73 20  |urrent graphics |
00096a60  63 75 72 73 6f 72 20 70  6f 73 69 74 69 6f 6e 2e  |cursor position.|
00096a70  20 41 6c 6c 20 31 20 62  69 74 73 20 69 6e 20 74  | All 1 bits in t|
00096a80  68 65 20 6d 61 73 6b 20  61 72 65 20 70 6c 6f 74  |he mask are plot|
00096a90  74 65 64 2c 20 30 20 62  69 74 73 20 61 72 65 20  |ted, 0 bits are |
00096aa0  6e 6f 74 2e 20 49 66 20  74 68 65 20 73 70 65 63  |not. If the spec|
00096ab0  69 66 69 65 64 20 73 70  72 69 74 65 20 68 61 73  |ified sprite has|
00096ac0  20 6e 6f 20 6d 61 73 6b  2c 20 61 20 72 65 63 74  | no mask, a rect|
00096ad0  61 6e 67 6c 65 20 74 68  65 20 73 69 7a 65 20 6f  |angle the size o|
00096ae0  66 20 74 68 65 20 73 70  72 69 74 65 20 69 73 20  |f the sprite is |
00096af0  70 6c 6f 74 74 65 64 20  69 6e 73 74 65 61 64 2e  |plotted instead.|
00096b00  20 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 69  | This function i|
00096b10  73 20 65 71 75 69 76 61  6c 65 6e 74 20 74 6f 20  |s equivalent to |
00096b20  3c 4f 53 5f 53 70 72 69  74 65 4f 70 3d 3e 53 57  |<OS_SpriteOp=>SW|
00096b30  49 3a 4f 53 5f 53 70 72  69 74 65 4f 70 3e 20 34  |I:OS_SpriteOp> 4|
00096b40  38 2e 00 00 44 41 54 41  30 01 00 00 73 70 72 69  |8...DATA0...spri|
00096b50  74 65 5f 70 75 74 5f 6d  61 73 6b 5f 70 67 6d 0a  |te_put_mask_pgm.|
00096b60  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
00096b70  72 3e 20 2a 73 70 72 69  74 65 5f 70 75 74 5f 6d  |r> *sprite_put_m|
00096b80  61 73 6b 5f 70 67 6d 20  28 3c 73 70 72 69 74 65  |ask_pgm (<sprite|
00096b90  5f 61 72 65 61 3e 20 2a  61 72 65 61 2c 20 3c 73  |_area> *area, <s|
00096ba0  70 72 69 74 65 5f 69 64  3e 20 2a 73 70 72 2c 20  |prite_id> *spr, |
00096bb0  3c 73 70 72 69 74 65 5f  62 6f 78 3e 20 2a 62 6f  |<sprite_box> *bo|
00096bc0  78 2c 20 3c 73 70 72 69  74 65 5f 70 67 6d 3e 20  |x, <sprite_pgm> |
00096bd0  70 67 6d 29 3b 0a 48 65  61 64 65 72 3a 09 3c 73  |pgm);.Header:.<s|
00096be0  70 72 69 74 65 2e 68 3d  3e 73 70 72 69 74 65 5f  |prite.h=>sprite_|
00096bf0  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |h>..Returns:.Poi|
00096c00  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
00096c10  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
00096c20  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00096c30  20 70 6c 6f 74 73 20 61  20 62 6f 78 20 66 72 6f  | plots a box fro|
00096c40  6d 20 74 68 65 20 6d 61  73 6b 20 69 6e 20 62 61  |m the mask in ba|
00096c50  63 6b 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 73  |ckground colours|
00096c60  20 74 6f 20 61 20 70 61  72 61 6c 6c 65 6c 6f 67  | to a parallelog|
00096c70  72 61 6d 2e 44 41 54 41  44 01 00 00 73 70 72 69  |ram.DATAD...spri|
00096c80  74 65 5f 70 75 74 5f 6d  61 73 6b 5f 74 72 61 6e  |te_put_mask_tran|
00096c90  73 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |s.Syntax:.<os_er|
00096ca0  72 6f 72 3e 20 2a 73 70  72 69 74 65 5f 70 75 74  |ror> *sprite_put|
00096cb0  5f 6d 61 73 6b 5f 74 72  61 6e 73 20 28 3c 73 70  |_mask_trans (<sp|
00096cc0  72 69 74 65 5f 61 72 65  61 3e 20 2a 61 72 65 61  |rite_area> *area|
00096cd0  2c 20 3c 73 70 72 69 74  65 5f 69 64 3e 20 2a 73  |, <sprite_id> *s|
00096ce0  70 72 2c 20 3c 73 70 72  69 74 65 5f 62 6f 78 3e  |pr, <sprite_box>|
00096cf0  20 2a 62 6f 78 2c 20 3c  73 70 72 69 74 65 5f 74  | *box, <sprite_t|
00096d00  72 61 6e 73 6d 61 74 3e  20 74 29 3b 0a 48 65 61  |ransmat> t);.Hea|
00096d10  64 65 72 3a 09 3c 73 70  72 69 74 65 2e 68 3d 3e  |der:.<sprite.h=>|
00096d20  73 70 72 69 74 65 5f 68  3e 0a 0a 52 65 74 75 72  |sprite_h>..Retur|
00096d30  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
00096d40  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
00096d50  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
00096d60  75 6e 63 74 69 6f 6e 20  70 6c 6f 74 73 20 61 20  |unction plots a |
00096d70  62 6f 78 20 66 72 6f 6d  20 74 68 65 20 6d 61 73  |box from the mas|
00096d80  6b 20 69 6e 20 62 61 63  6b 67 72 6f 75 6e 64 20  |k in background |
00096d90  63 6f 6c 6f 75 72 73 20  74 68 72 6f 75 67 68 20  |colours through |
00096da0  61 20 74 72 61 6e 73 66  6f 72 6d 61 74 69 6f 6e  |a transformation|
00096db0  20 6d 61 74 72 69 78 2e  44 41 54 41 33 01 00 00  | matrix.DATA3...|
00096dc0  73 70 72 69 74 65 5f 70  75 74 5f 70 67 6d 0a 53  |sprite_put_pgm.S|
00096dd0  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
00096de0  3e 20 2a 73 70 72 69 74  65 5f 70 75 74 5f 70 67  |> *sprite_put_pg|
00096df0  6d 20 28 3c 73 70 72 69  74 65 5f 61 72 65 61 3e  |m (<sprite_area>|
00096e00  20 2a 61 72 65 61 2c 20  3c 73 70 72 69 74 65 5f  | *area, <sprite_|
00096e10  69 64 3e 20 2a 73 70 72  2c 20 69 6e 74 20 61 63  |id> *spr, int ac|
00096e20  74 69 6f 6e 2c 20 3c 73  70 72 69 74 65 5f 62 6f  |tion, <sprite_bo|
00096e30  78 3e 20 2a 62 6f 78 2c  20 3c 73 70 72 69 74 65  |x> *box, <sprite|
00096e40  5f 70 67 6d 3e 20 2a 74  2c 20 3c 73 70 72 69 74  |_pgm> *t, <sprit|
00096e50  65 5f 70 69 78 74 72 61  6e 73 3e 20 2a 70 29 3b  |e_pixtrans> *p);|
00096e60  0a 48 65 61 64 65 72 3a  09 3c 73 70 72 69 74 65  |.Header:.<sprite|
00096e70  2e 68 3d 3e 73 70 72 69  74 65 5f 68 3e 0a 0a 52  |.h=>sprite_h>..R|
00096e80  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
00096e90  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
00096ea0  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
00096eb0  69 73 20 66 75 6e 63 74  69 6f 6e 20 70 6c 6f 74  |is function plot|
00096ec0  73 20 61 20 62 6f 78 20  66 72 6f 6d 20 74 68 65  |s a box from the|
00096ed0  20 73 70 72 69 74 65 20  74 6f 20 61 20 70 61 72  | sprite to a par|
00096ee0  61 6c 6c 65 6c 6f 67 72  61 6d 2e 00 44 41 54 41  |allelogram..DATA|
00096ef0  2c 03 00 00 73 70 72 69  74 65 5f 70 75 74 5f 73  |,...sprite_put_s|
00096f00  63 61 6c 65 64 0a 53 79  6e 74 61 78 3a 09 3c 6f  |caled.Syntax:.<o|
00096f10  73 5f 65 72 72 6f 72 3e  20 2a 73 70 72 69 74 65  |s_error> *sprite|
00096f20  5f 70 75 74 5f 73 63 61  6c 65 64 20 28 3c 73 70  |_put_scaled (<sp|
00096f30  72 69 74 65 5f 61 72 65  61 3e 20 2a 61 72 65 61  |rite_area> *area|
00096f40  2c 20 3c 73 70 72 69 74  65 5f 69 64 3e 20 2a 73  |, <sprite_id> *s|
00096f50  70 72 2c 20 69 6e 74 20  61 2c 20 69 6e 74 20 78  |pr, int a, int x|
00096f60  2c 20 69 6e 74 20 79 2c  20 3c 73 70 72 69 74 65  |, int y, <sprite|
00096f70  5f 66 61 63 74 6f 72 73  3e 20 2a 66 61 63 74 2c  |_factors> *fact,|
00096f80  20 3c 73 70 72 69 74 65  5f 70 69 78 74 72 61 6e  | <sprite_pixtran|
00096f90  73 3e 20 70 69 78 74 5b  5d 29 3b 0a 48 65 61 64  |s> pixt[]);.Head|
00096fa0  65 72 3a 09 3c 73 70 72  69 74 65 2e 68 3d 3e 73  |er:.<sprite.h=>s|
00096fb0  70 72 69 74 65 5f 68 3e  0a 0a 52 65 74 75 72 6e  |prite_h>..Return|
00096fc0  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
00096fd0  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
00096fe0  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
00096ff0  6e 63 74 69 6f 6e 20 77  69 6c 6c 20 70 6c 6f 74  |nction will plot|
00097000  20 74 68 65 20 73 70 72  69 74 65 20 69 64 65 6e  | the sprite iden|
00097010  74 69 66 69 65 64 20 6f  6e 20 74 68 65 20 73 63  |tified on the sc|
00097020  72 65 65 6e 20 77 69 74  68 20 69 74 73 20 62 6f  |reen with its bo|
00097030  74 74 6f 6d 20 6c 65 66  74 20 63 6f 72 6e 65 72  |ttom left corner|
00097040  20 61 74 20 70 6f 73 69  74 69 6f 6e 20 7b 2f 7d  | at position {/}|
00097050  28 78 2c 79 29 7b 2f 7d  2e 20 54 68 65 20 70 6c  |(x,y){/}. The pl|
00097060  6f 74 20 3c 61 63 74 69  6f 6e 3d 3e 56 44 55 3a  |ot <action=>VDU:|
00097070  31 38 61 3e 2c 20 67 69  76 65 6e 20 69 6e 20 2f  |18a>, given in /|
00097080  61 2f 2c 20 69 73 20 74  68 65 20 73 61 6d 65 20  |a/, is the same |
00097090  61 73 20 74 68 61 74 20  75 73 65 64 20 66 6f 72  |as that used for|
000970a0  20 3c 6f 73 5f 67 63 6f  6c 3e 20 65 78 63 65 70  | <os_gcol> excep|
000970b0  74 20 74 68 61 74 20 76  61 6c 75 65 73 20 38 2d  |t that values 8-|
000970c0  31 35 20 69 6e 64 69 63  61 74 65 20 74 68 61 74  |15 indicate that|
000970d0  20 74 68 65 20 6d 61 73  6b 20 73 68 6f 75 6c 64  | the mask should|
000970e0  20 62 65 20 75 73 65 64  2e 20 56 61 6c 75 65 73  | be used. Values|
000970f0  20 61 62 6f 76 65 20 31  36 20 68 61 76 65 20 6e  | above 16 have n|
00097100  6f 20 6d 65 61 6e 69 6e  67 2e 0a 0a 49 6e 20 61  |o meaning...In a|
00097110  64 64 69 74 69 6f 6e 20  74 68 65 20 73 70 72 69  |ddition the spri|
00097120  74 65 20 77 69 6c 6c 20  62 65 20 73 63 61 6c 65  |te will be scale|
00097130  64 20 75 73 69 6e 67 20  74 68 65 20 73 63 61 6c  |d using the scal|
00097140  69 6e 67 20 66 61 63 74  6f 72 73 20 70 6f 69 6e  |ing factors poin|
00097150  74 65 64 20 74 6f 20 62  79 20 2f 66 61 63 74 2f  |ted to by /fact/|
00097160  2c 20 61 6e 64 20 75 73  69 6e 67 20 74 68 65 20  |, and using the |
00097170  70 69 78 65 6c 20 74 72  61 6e 73 6c 61 74 69 6f  |pixel translatio|
00097180  6e 20 74 61 62 6c 65 20  67 69 76 65 6e 20 62 79  |n table given by|
00097190  20 2f 70 69 78 74 2f 2e  20 49 66 20 65 69 74 68  | /pixt/. If eith|
000971a0  65 72 20 6f 66 20 74 68  65 73 65 20 76 61 6c 75  |er of these valu|
000971b0  65 73 20 61 72 65 20 2a  4e 55 4c 4c 2a 2c 20 74  |es are *NULL*, t|
000971c0  68 65 79 20 77 69 6c 6c  20 6e 6f 74 20 62 65 20  |hey will not be |
000971d0  75 73 65 64 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |used...This func|
000971e0  74 69 6f 6e 20 69 73 20  65 71 75 69 76 61 6c 65  |tion is equivale|
000971f0  6e 74 20 74 6f 20 3c 4f  53 5f 53 70 72 69 74 65  |nt to <OS_Sprite|
00097200  4f 70 3d 3e 53 57 49 3a  4f 53 5f 53 70 72 69 74  |Op=>SWI:OS_Sprit|
00097210  65 4f 70 3e 20 35 32 2e  44 41 54 41 48 01 00 00  |eOp> 52.DATAH...|
00097220  73 70 72 69 74 65 5f 70  75 74 5f 74 72 61 6e 73  |sprite_put_trans|
00097230  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00097240  6f 72 3e 20 2a 73 70 72  69 74 65 5f 70 75 74 5f  |or> *sprite_put_|
00097250  74 72 61 6e 73 20 28 3c  73 70 72 69 74 65 5f 61  |trans (<sprite_a|
00097260  72 65 61 3e 20 2a 61 72  65 61 2c 20 3c 73 70 72  |rea> *area, <spr|
00097270  69 74 65 5f 69 64 3e 20  2a 73 70 72 2c 20 69 6e  |ite_id> *spr, in|
00097280  74 20 61 63 74 69 6f 6e  2c 20 3c 73 70 72 69 74  |t action, <sprit|
00097290  65 5f 62 6f 78 3e 20 2a  62 6f 78 2c 20 3c 73 70  |e_box> *box, <sp|
000972a0  72 69 74 65 5f 74 72 61  6e 73 6d 61 74 3e 20 2a  |rite_transmat> *|
000972b0  74 2c 20 3c 73 70 72 69  74 65 5f 70 69 78 74 72  |t, <sprite_pixtr|
000972c0  61 6e 73 3e 20 70 29 3b  0a 48 65 61 64 65 72 3a  |ans> p);.Header:|
000972d0  09 3c 73 70 72 69 74 65  2e 68 3d 3e 73 70 72 69  |.<sprite.h=>spri|
000972e0  74 65 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |te_h>..Returns:.|
000972f0  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
00097300  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
00097310  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
00097320  69 6f 6e 20 70 6c 6f 74  73 20 61 20 62 6f 78 20  |ion plots a box |
00097330  66 72 6f 6d 20 74 68 65  20 73 70 72 69 74 65 20  |from the sprite |
00097340  74 68 72 6f 75 67 68 20  61 20 74 72 61 6e 73 66  |through a transf|
00097350  6f 72 6d 61 74 69 6f 6e  20 6d 61 74 72 69 78 2e  |ormation matrix.|
00097360  44 41 54 41 ec 01 00 00  53 70 72 69 74 65 5f 52  |DATA....Sprite_R|
00097370  65 61 64 43 6f 6e 74 72  6f 6c 0a 53 79 6e 74 61  |eadControl.Synta|
00097380  78 3a 09 69 6e 74 20 53  70 72 69 74 65 5f 52 65  |x:.int Sprite_Re|
00097390  61 64 43 6f 6e 74 72 6f  6c 20 28 3c 73 70 72 69  |adControl (<spri|
000973a0  74 65 5f 61 72 65 61 3e  20 61 72 65 61 2c 20 69  |te_area> area, i|
000973b0  6e 74 20 2a 73 69 7a 65  2c 20 3c 73 70 72 69 74  |nt *size, <sprit|
000973c0  65 3e 20 2a 66 69 72 73  74 2c 20 76 6f 69 64 20  |e> *first, void |
000973d0  2a 66 72 65 65 29 3b 0a  48 65 61 64 65 72 3a 09  |*free);.Header:.|
000973e0  3c 44 65 73 6b 4c 69 62  3a 53 70 72 69 74 65 2e  |<DeskLib:Sprite.|
000973f0  68 3d 3e 53 70 72 69 74  65 5f 44 4c 3e 0a 0a 52  |h=>Sprite_DL>..R|
00097400  65 74 75 72 6e 73 3a 09  4e 75 6d 62 65 72 20 6f  |eturns:.Number o|
00097410  66 20 73 70 72 69 74 65  73 20 69 6e 20 61 72 65  |f sprites in are|
00097420  61 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |a...This functio|
00097430  6e 20 72 65 61 64 73 20  69 6e 66 6f 72 6d 61 74  |n reads informat|
00097440  69 6f 6e 20 61 62 6f 75  74 20 61 20 73 70 72 69  |ion about a spri|
00097450  74 65 20 61 72 65 61 2c  20 2f 61 72 65 61 2f 2e  |te area, /area/.|
00097460  20 49 66 20 2f 73 69 7a  65 2f 2c 20 2f 66 69 72  | If /size/, /fir|
00097470  73 74 2f 20 6f 72 20 2f  66 72 65 65 2f 20 69 73  |st/ or /free/ is|
00097480  20 3c 4e 55 4c 4c 3e 20  74 68 65 6e 20 74 68 61  | <NULL> then tha|
00097490  74 20 76 61 6c 75 65 20  69 73 20 6e 6f 74 20 72  |t value is not r|
000974a0  65 74 75 72 6e 65 64 2e  20 4f 6e 20 65 78 69 74  |eturned. On exit|
000974b0  2c 20 7b 2f 7d 2a 73 69  7a 65 7b 2f 7d 20 63 6f  |, {/}*size{/} co|
000974c0  6e 74 61 69 6e 73 20 74  68 65 20 73 69 7a 65 20  |ntains the size |
000974d0  6f 66 20 74 68 65 20 61  72 65 61 2c 20 7b 2f 7d  |of the area, {/}|
000974e0  2a 66 69 72 73 74 7b 2f  7d 20 63 6f 6e 74 61 69  |*first{/} contai|
000974f0  6e 73 20 61 20 70 6f 69  6e 74 65 72 20 74 6f 20  |ns a pointer to |
00097500  74 68 65 20 66 69 72 73  74 20 73 70 72 69 74 65  |the first sprite|
00097510  2c 20 61 6e 64 20 7b 2f  7d 2a 66 72 65 65 7b 2f  |, and {/}*free{/|
00097520  7d 20 63 6f 6e 74 61 69  6e 73 20 61 20 70 6f 69  |} contains a poi|
00097530  6e 74 65 72 20 74 6f 20  74 68 65 20 66 69 72 73  |nter to the firs|
00097540  74 20 66 72 65 65 20 77  6f 72 64 2e 44 41 54 41  |t free word.DATA|
00097550  90 01 00 00 53 70 72 69  74 65 5f 52 65 61 64 49  |....Sprite_ReadI|
00097560  6e 66 6f 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |nfo.Syntax:.<os_|
00097570  65 72 72 6f 72 3e 20 2a  53 70 72 69 74 65 5f 52  |error> *Sprite_R|
00097580  65 61 64 49 6e 66 6f 20  28 3c 73 70 72 69 74 65  |eadInfo (<sprite|
00097590  5f 61 72 65 61 3e 20 61  72 65 61 2c 20 63 68 61  |_area> area, cha|
000975a0  72 20 2a 6e 61 6d 65 2c  20 3c 73 70 72 69 74 65  |r *name, <sprite|
000975b0  5f 69 6e 66 6f 3e 20 2a  69 6e 66 6f 29 3b 0a 48  |_info> *info);.H|
000975c0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
000975d0  53 70 72 69 74 65 2e 68  3d 3e 53 70 72 69 74 65  |Sprite.h=>Sprite|
000975e0  5f 44 4c 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |_DL>..Returns:.P|
000975f0  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
00097600  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
00097610  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
00097620  6f 6e 20 72 65 74 75 72  6e 73 20 69 6e 66 6f 72  |on returns infor|
00097630  6d 61 74 69 6f 6e 20 28  69 6e 20 7b 2f 7d 69 6e  |mation (in {/}in|
00097640  66 6f 7b 2f 7d 29 20 61  62 6f 75 74 20 74 68 65  |fo{/}) about the|
00097650  20 73 70 72 69 74 65 20  73 70 65 63 69 66 69 65  | sprite specifie|
00097660  64 2c 20 67 69 76 69 6e  67 20 69 74 73 20 77 69  |d, giving its wi|
00097670  64 74 68 20 61 6e 64 20  68 65 69 67 68 74 20 69  |dth and height i|
00097680  6e 20 70 69 78 65 6c 73  2c 20 77 68 65 74 68 65  |n pixels, whethe|
00097690  72 20 74 68 65 20 73 70  72 69 74 65 20 68 61 73  |r the sprite has|
000976a0  20 61 20 6d 61 73 6b 20  61 6e 64 20 74 68 65 20  | a mask and the |
000976b0  73 63 72 65 65 6e 20 6d  6f 64 65 20 69 6e 20 77  |screen mode in w|
000976c0  68 69 63 68 20 74 68 65  20 73 70 72 69 74 65 20  |hich the sprite |
000976d0  77 61 73 20 64 65 66 69  6e 65 64 2e 44 41 54 41  |was defined.DATA|
000976e0  8f 01 00 00 73 70 72 69  74 65 5f 72 65 61 64 6d  |....sprite_readm|
000976f0  61 73 6b 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |ask.Syntax:.<os_|
00097700  65 72 72 6f 72 3e 20 2a  73 70 72 69 74 65 5f 72  |error> *sprite_r|
00097710  65 61 64 6d 61 73 6b 20  28 3c 73 70 72 69 74 65  |eadmask (<sprite|
00097720  5f 61 72 65 61 3e 20 2a  61 72 65 61 2c 20 3c 73  |_area> *area, <s|
00097730  70 72 69 74 65 5f 69 64  3e 20 2a 73 70 72 2c 20  |prite_id> *spr, |
00097740  69 6e 74 20 78 2c 20 69  6e 74 20 79 2c 20 3c 73  |int x, int y, <s|
00097750  70 72 69 74 65 5f 6d 61  73 6b 73 74 61 74 65 3e  |prite_maskstate>|
00097760  20 2a 6d 61 73 6b 29 3b  0a 48 65 61 64 65 72 3a  | *mask);.Header:|
00097770  09 3c 73 70 72 69 74 65  2e 68 3d 3e 73 70 72 69  |.<sprite.h=>spri|
00097780  74 65 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |te_h>..Returns:.|
00097790  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000977a0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000977b0  6f 6e 65 2e 0a 0a 44 65  73 6b 4c 69 62 3a 09 53  |one...DeskLib:.S|
000977c0  65 65 20 3c 53 70 72 69  74 65 5f 52 65 61 64 4d  |ee <Sprite_ReadM|
000977d0  61 73 6b 3d 3e 53 70 72  69 74 65 5f 52 65 61 64  |ask=>Sprite_Read|
000977e0  4d 61 73 6b 5f 3e 0a 0a  54 68 69 73 20 66 75 6e  |Mask_>..This fun|
000977f0  63 74 69 6f 6e 20 72 65  61 64 73 20 74 68 65 20  |ction reads the |
00097800  73 74 61 74 65 20 6f 66  20 61 20 67 69 76 65 6e  |state of a given|
00097810  20 70 69 78 65 6c 20 69  6e 20 74 68 65 20 73 70  | pixel in the sp|
00097820  65 63 69 66 69 65 64 20  73 70 72 69 74 65 20 6d  |ecified sprite m|
00097830  61 73 6b 2e 20 49 74 20  69 73 20 65 71 75 69 76  |ask. It is equiv|
00097840  61 6c 65 6e 74 20 74 6f  20 3c 4f 53 5f 53 70 72  |alent to <OS_Spr|
00097850  69 74 65 4f 70 3d 3e 53  57 49 3a 4f 53 5f 53 70  |iteOp=>SWI:OS_Sp|
00097860  72 69 74 65 4f 70 3e 20  34 33 2e 00 44 41 54 41  |riteOp> 43..DATA|
00097870  31 01 00 00 53 70 72 69  74 65 5f 52 65 61 64 4d  |1...Sprite_ReadM|
00097880  61 73 6b 0a 53 79 6e 74  61 78 3a 09 3c 42 4f 4f  |ask.Syntax:.<BOO|
00097890  4c 3e 20 53 70 72 69 74  65 5f 52 65 61 64 4d 61  |L> Sprite_ReadMa|
000978a0  73 6b 20 28 3c 73 70 72  69 74 65 5f 61 72 65 61  |sk (<sprite_area|
000978b0  3e 20 61 72 65 61 2c 20  63 68 61 72 20 2a 6e 61  |> area, char *na|
000978c0  6d 65 2c 20 3c 77 69 6d  70 5f 70 6f 69 6e 74 3e  |me, <wimp_point>|
000978d0  20 2a 70 6f 73 29 3b 0a  48 65 61 64 65 72 3a 09  | *pos);.Header:.|
000978e0  3c 44 65 73 6b 4c 69 62  3a 53 70 72 69 74 65 2e  |<DeskLib:Sprite.|
000978f0  68 3d 3e 53 70 72 69 74  65 5f 44 4c 3e 0a 0a 52  |h=>Sprite_DL>..R|
00097900  65 74 75 72 6e 73 3a 09  3c 54 52 55 45 3e 20 69  |eturns:.<TRUE> i|
00097910  66 20 73 6f 6c 69 64 2e  0a 0a 54 68 69 73 20 66  |f solid...This f|
00097920  75 6e 63 74 69 6f 6e 20  72 65 61 64 73 20 74 68  |unction reads th|
00097930  65 20 73 74 61 74 65 20  6f 66 20 61 20 67 69 76  |e state of a giv|
00097940  65 6e 20 70 69 78 65 6c  20 69 6e 20 74 68 65 20  |en pixel in the |
00097950  73 70 65 63 69 66 69 65  64 20 73 70 72 69 74 65  |specified sprite|
00097960  20 6d 61 73 6b 2e 20 49  74 20 69 73 20 65 71 75  | mask. It is equ|
00097970  69 76 61 6c 65 6e 74 20  74 6f 20 3c 4f 53 5f 53  |ivalent to <OS_S|
00097980  70 72 69 74 65 4f 70 3d  3e 53 57 49 3a 4f 53 5f  |priteOp=>SWI:OS_|
00097990  53 70 72 69 74 65 4f 70  3e 20 34 33 2e 00 00 00  |SpriteOp> 43....|
000979a0  44 41 54 41 a1 01 00 00  73 70 72 69 74 65 5f 72  |DATA....sprite_r|
000979b0  65 61 64 70 69 78 65 6c  0a 53 79 6e 74 61 78 3a  |eadpixel.Syntax:|
000979c0  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 73 70 72  |.<os_error> *spr|
000979d0  69 74 65 5f 72 65 61 64  70 69 78 65 6c 20 28 3c  |ite_readpixel (<|
000979e0  73 70 72 69 74 65 5f 61  72 65 61 3e 20 2a 61 72  |sprite_area> *ar|
000979f0  65 61 2c 20 3c 73 70 72  69 74 65 5f 69 64 3e 20  |ea, <sprite_id> |
00097a00  2a 73 70 72 2c 20 69 6e  74 20 78 2c 20 69 6e 74  |*spr, int x, int|
00097a10  20 79 2c 20 3c 73 70 72  69 74 65 5f 63 6f 6c 6f  | y, <sprite_colo|
00097a20  75 72 3e 20 2a 72 65 73  75 6c 74 29 3b 0a 48 65  |ur> *result);.He|
00097a30  61 64 65 72 3a 09 3c 73  70 72 69 74 65 2e 68 3d  |ader:.<sprite.h=|
00097a40  3e 73 70 72 69 74 65 5f  68 3e 0a 0a 52 65 74 75  |>sprite_h>..Retu|
00097a50  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00097a60  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00097a70  20 69 66 20 6e 6f 6e 65  2e 0a 0a 53 65 65 20 61  | if none...See a|
00097a80  6c 73 6f 20 74 68 65 20  44 65 73 6b 4c 69 62 20  |lso the DeskLib |
00097a90  66 75 6e 63 74 69 6f 6e  2c 20 3c 53 70 72 69 74  |function, <Sprit|
00097aa0  65 5f 52 65 61 64 50 69  78 65 6c 3d 3e 53 70 72  |e_ReadPixel=>Spr|
00097ab0  69 74 65 5f 52 65 61 64  50 69 78 65 6c 5f 3e 2e  |ite_ReadPixel_>.|
00097ac0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00097ad0  72 65 61 64 73 20 74 68  65 20 63 6f 6c 6f 75 72  |reads the colour|
00097ae0  20 6f 66 20 61 20 67 69  76 65 6e 20 70 69 78 65  | of a given pixe|
00097af0  6c 20 69 6e 20 74 68 65  20 73 70 65 63 69 66 69  |l in the specifi|
00097b00  65 64 20 73 70 72 69 74  65 2e 20 49 74 20 69 73  |ed sprite. It is|
00097b10  20 65 71 75 69 76 61 6c  65 6e 74 20 74 6f 20 3c  | equivalent to <|
00097b20  4f 53 5f 53 70 72 69 74  65 4f 70 3d 3e 53 57 49  |OS_SpriteOp=>SWI|
00097b30  3a 4f 53 5f 53 70 72 69  74 65 4f 70 3e 20 34 31  |:OS_SpriteOp> 41|
00097b40  2e 00 00 00 44 41 54 41  f8 00 00 00 53 70 72 69  |....DATA....Spri|
00097b50  74 65 5f 52 65 61 64 50  69 78 65 6c 0a 53 79 6e  |te_ReadPixel.Syn|
00097b60  74 61 78 3a 09 69 6e 74  20 53 70 72 69 74 65 5f  |tax:.int Sprite_|
00097b70  52 65 61 64 50 69 78 65  6c 20 28 3c 73 70 72 69  |ReadPixel (<spri|
00097b80  74 65 5f 61 72 65 61 3e  20 61 72 65 61 2c 20 63  |te_area> area, c|
00097b90  68 61 72 20 2a 6e 61 6d  65 2c 20 3c 77 69 6d 70  |har *name, <wimp|
00097ba0  5f 70 6f 69 6e 74 3e 20  2a 70 6f 73 29 3b 0a 48  |_point> *pos);.H|
00097bb0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00097bc0  53 70 72 69 74 65 2e 68  3d 3e 53 70 72 69 74 65  |Sprite.h=>Sprite|
00097bd0  5f 44 4c 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 43  |_DL>..Returns:.C|
00097be0  6f 6c 6f 75 72 20 6f 66  20 70 69 78 65 6c 2e 0a  |olour of pixel..|
00097bf0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
00097c00  65 74 75 72 6e 73 20 74  68 65 20 63 6f 6c 6f 75  |eturns the colou|
00097c10  72 20 6f 66 20 74 68 65  20 70 69 78 65 6c 20 61  |r of the pixel a|
00097c20  74 20 2f 70 6f 73 2f 20  69 6e 20 74 68 65 20 67  |t /pos/ in the g|
00097c30  69 76 65 6e 20 73 70 72  69 74 65 2e 44 41 54 41  |iven sprite.DATA|
00097c40  4a 01 00 00 53 70 72 69  74 65 5f 52 65 61 64 53  |J...Sprite_ReadS|
00097c50  61 76 65 41 72 65 61 53  69 7a 65 0a 53 79 6e 74  |aveAreaSize.Synt|
00097c60  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
00097c70  53 70 72 69 74 65 5f 52  65 61 64 53 61 76 65 41  |Sprite_ReadSaveA|
00097c80  72 65 61 53 69 7a 65 20  28 3c 73 70 72 69 74 65  |reaSize (<sprite|
00097c90  5f 61 72 65 61 3e 20 61  72 65 61 2c 20 63 68 61  |_area> area, cha|
00097ca0  72 20 2a 6e 61 6d 65 2c  20 69 6e 74 20 2a 73 69  |r *name, int *si|
00097cb0  7a 65 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |ze);.Header:.<De|
00097cc0  73 6b 4c 69 62 3a 53 70  72 69 74 65 2e 68 3d 3e  |skLib:Sprite.h=>|
00097cd0  53 70 72 69 74 65 5f 44  4c 3e 0a 0a 52 65 74 75  |Sprite_DL>..Retu|
00097ce0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00097cf0  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00097d00  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00097d10  66 75 6e 63 74 69 6f 6e  20 63 61 6c 63 75 6c 61  |function calcula|
00097d20  74 65 73 20 68 6f 77 20  6c 61 72 67 65 20 61 20  |tes how large a |
00097d30  73 61 76 65 20 61 72 65  61 20 6d 75 73 74 20 62  |save area must b|
00097d40  65 20 66 6f 72 20 61 20  67 69 76 65 6e 20 73 70  |e for a given sp|
00097d50  72 69 74 65 2c 20 61 6e  64 20 72 65 74 75 72 6e  |rite, and return|
00097d60  20 69 74 20 69 6e 20 74  68 65 20 2f 69 6e 74 2f  | it in the /int/|
00097d70  20 70 6f 69 6e 74 65 64  20 74 6f 20 62 79 20 2f  | pointed to by /|
00097d80  73 69 7a 65 2f 2e 00 00  44 41 54 41 46 01 00 00  |size/...DATAF...|
00097d90  73 70 72 69 74 65 5f 72  65 61 64 73 69 7a 65 0a  |sprite_readsize.|
00097da0  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
00097db0  72 3e 20 2a 73 70 72 69  74 65 5f 72 65 61 64 73  |r> *sprite_reads|
00097dc0  69 7a 65 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |ize (<sprite_are|
00097dd0  61 3e 20 2a 61 72 65 61  2c 20 3c 73 70 72 69 74  |a> *area, <sprit|
00097de0  65 5f 69 64 3e 20 2a 73  70 72 2c 20 3c 73 70 72  |e_id> *spr, <spr|
00097df0  69 74 65 5f 69 6e 66 6f  3e 20 2a 72 65 73 75 6c  |ite_info> *resul|
00097e00  74 69 6e 66 6f 29 3b 0a  48 65 61 64 65 72 3a 09  |tinfo);.Header:.|
00097e10  3c 73 70 72 69 74 65 2e  68 3d 3e 73 70 72 69 74  |<sprite.h=>sprit|
00097e20  65 5f 68 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |e_h>..Returns:.P|
00097e30  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
00097e40  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
00097e50  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
00097e60  6f 6e 20 72 65 61 64 73  20 74 68 65 20 73 69 7a  |on reads the siz|
00097e70  65 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 66 6f  |e information fo|
00097e80  72 20 74 68 65 20 73 70  65 63 69 66 69 65 64 20  |r the specified |
00097e90  73 70 72 69 74 65 2e 20  49 74 20 69 73 20 65 71  |sprite. It is eq|
00097ea0  75 69 76 61 6c 65 6e 74  20 74 6f 20 3c 4f 53 5f  |uivalent to <OS_|
00097eb0  53 70 72 69 74 65 4f 70  3d 3e 53 57 49 3a 4f 53  |SpriteOp=>SWI:OS|
00097ec0  5f 53 70 72 69 74 65 4f  70 3e 20 34 30 2e 00 00  |_SpriteOp> 40...|
00097ed0  44 41 54 41 0c 03 00 00  53 70 72 69 74 65 5f 52  |DATA....Sprite_R|
00097ee0  65 64 69 72 65 63 74 0a  53 79 6e 74 61 78 3a 09  |edirect.Syntax:.|
00097ef0  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 53 70 72 69  |<os_error> *Spri|
00097f00  74 65 5f 52 65 64 69 72  65 63 74 20 28 3c 73 70  |te_Redirect (<sp|
00097f10  72 69 74 65 5f 61 72 65  61 3e 20 61 72 65 61 2c  |rite_area> area,|
00097f20  20 63 68 61 72 20 2a 6e  61 6d 65 2c 20 76 6f 69  | char *name, voi|
00097f30  64 20 2a 73 61 76 65 2c  20 3c 73 70 72 69 74 65  |d *save, <sprite|
00097f40  5f 6f 75 74 70 75 74 73  74 61 74 65 3e 20 2a 6f  |_outputstate> *o|
00097f50  6c 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |ld);.Header:.<De|
00097f60  73 6b 4c 69 62 3a 53 70  72 69 74 65 2e 68 3d 3e  |skLib:Sprite.h=>|
00097f70  53 70 72 69 74 65 5f 44  4c 3e 0a 0a 52 65 74 75  |Sprite_DL>..Retu|
00097f80  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
00097f90  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
00097fa0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
00097fb0  66 75 6e 63 74 69 6f 6e  20 63 61 75 73 65 73 20  |function causes |
00097fc0  56 44 55 20 6f 75 74 70  75 74 20 74 6f 20 62 65  |VDU output to be|
00097fd0  20 73 65 6e 74 20 74 6f  20 61 20 73 70 72 69 74  | sent to a sprit|
00097fe0  65 20 28 67 69 76 65 6e  20 69 6e 20 7b 2f 7d 61  |e (given in {/}a|
00097ff0  72 65 61 7b 2f 7d 20 61  6e 64 20 7b 2f 7d 6e 61  |rea{/} and {/}na|
00098000  6d 65 7b 2f 7d 29 20 69  6e 73 74 65 61 64 20 6f  |me{/}) instead o|
00098010  66 20 74 68 65 20 73 63  72 65 65 6e 2e 20 2f 73  |f the screen. /s|
00098020  61 76 65 2f 20 69 73 20  61 20 70 6f 69 6e 74 65  |ave/ is a pointe|
00098030  72 20 74 6f 20 61 20 62  6c 6f 63 6b 20 77 68 6f  |r to a block who|
00098040  73 65 20 73 69 7a 65 20  69 73 20 74 68 61 74 20  |se size is that |
00098050  72 65 74 75 72 6e 65 64  20 62 79 20 74 68 65 20  |returned by the |
00098060  66 75 6e 63 74 69 6f 6e  20 3c 53 70 72 69 74 65  |function <Sprite|
00098070  5f 52 65 61 64 53 61 76  65 41 72 65 61 53 69 7a  |_ReadSaveAreaSiz|
00098080  65 3e 2e 20 54 68 65 20  66 69 72 73 74 20 66 6f  |e>. The first fo|
00098090  75 72 20 62 79 74 65 73  20 6f 66 20 74 68 69 73  |ur bytes of this|
000980a0  20 62 6c 6f 63 6b 20 6d  75 73 74 20 62 65 20 73  | block must be s|
000980b0  65 74 20 74 6f 20 7a 65  72 6f 2e 20 41 6c 74 65  |et to zero. Alte|
000980c0  72 6e 61 74 69 76 65 6c  79 2c 20 69 74 20 6d 61  |rnatively, it ma|
000980d0  79 20 62 65 20 30 20 66  6f 72 20 6e 6f 20 73 61  |y be 0 for no sa|
000980e0  76 65 20 61 72 65 61 2e  20 54 68 69 73 20 62 6c  |ve area. This bl|
000980f0  6f 63 6b 20 69 73 20 75  73 65 64 20 74 6f 20 73  |ock is used to s|
00098100  74 6f 72 65 20 74 68 65  20 63 75 72 72 65 6e 74  |tore the current|
00098110  20 56 44 55 20 73 74 61  74 65 20 66 6f 72 20 72  | VDU state for r|
00098120  65 73 74 6f 72 61 74 69  6f 6e 20 62 79 20 3c 53  |estoration by <S|
00098130  70 72 69 74 65 5f 55 6e  52 65 64 69 72 65 63 74  |prite_UnRedirect|
00098140  3e 20 69 6e 20 74 68 65  20 65 76 65 6e 74 20 6f  |> in the event o|
00098150  66 20 61 6e 6f 74 68 65  72 20 72 65 64 69 72 65  |f another redire|
00098160  63 74 69 6f 6e 2e 20 54  68 65 20 6f 6c 64 20 73  |ction. The old s|
00098170  74 61 74 65 20 69 73 20  72 65 74 75 72 6e 65 64  |tate is returned|
00098180  20 69 6e 20 2f 6f 6c 64  2f 2e 0a 0a 54 68 65 20  | in /old/...The |
00098190  57 69 6d 70 20 6d 75 73  74 20 6e 6f 74 20 62 65  |Wimp must not be|
000981a0  20 63 61 6c 6c 65 64 20  77 68 69 6c 73 74 20 6f  | called whilst o|
000981b0  75 74 70 75 74 20 69 73  20 73 77 69 74 63 68 65  |utput is switche|
000981c0  64 20 69 6e 20 74 68 69  73 20 77 61 79 2e 20 44  |d in this way. D|
000981d0  75 6e 6e 6f 20 77 68 79  2e 2e 2e 2e 44 41 54 41  |unno why....DATA|
000981e0  2e 01 00 00 73 70 72 69  74 65 5f 72 65 6d 6f 76  |....sprite_remov|
000981f0  65 5f 6d 61 73 6b 0a 53  79 6e 74 61 78 3a 09 3c  |e_mask.Syntax:.<|
00098200  6f 73 5f 65 72 72 6f 72  3e 20 2a 73 70 72 69 74  |os_error> *sprit|
00098210  65 5f 72 65 6d 6f 76 65  5f 6d 61 73 6b 20 28 3c  |e_remove_mask (<|
00098220  73 70 72 69 74 65 5f 61  72 65 61 3e 20 2a 61 72  |sprite_area> *ar|
00098230  65 61 2c 20 3c 73 70 72  69 74 65 5f 69 64 3e 20  |ea, <sprite_id> |
00098240  2a 73 70 72 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |*spr);.Header:.<|
00098250  73 70 72 69 74 65 2e 68  3d 3e 73 70 72 69 74 65  |sprite.h=>sprite|
00098260  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |_h>..Returns:.Po|
00098270  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
00098280  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
00098290  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
000982a0  6e 20 72 65 6d 6f 76 65  73 20 74 68 65 20 6d 61  |n removes the ma|
000982b0  73 6b 20 64 65 66 69 6e  69 74 69 6f 6e 20 66 6f  |sk definition fo|
000982c0  72 20 74 68 65 20 67 69  76 65 6e 20 73 70 72 69  |r the given spri|
000982d0  74 65 2e 20 49 74 20 69  73 20 65 71 75 69 76 61  |te. It is equiva|
000982e0  6c 65 6e 74 20 74 6f 20  3c 4f 53 5f 53 70 72 69  |lent to <OS_Spri|
000982f0  74 65 4f 70 3d 3e 53 57  49 3a 4f 53 5f 53 70 72  |teOp=>SWI:OS_Spr|
00098300  69 74 65 4f 70 3e 20 33  30 2e 00 00 44 41 54 41  |iteOp> 30...DATA|
00098310  26 01 00 00 53 70 72 69  74 65 5f 52 65 6d 6f 76  |&...Sprite_Remov|
00098320  65 50 61 6c 65 74 74 65  0a 53 79 6e 74 61 78 3a  |ePalette.Syntax:|
00098330  09 69 6e 74 20 53 70 72  69 74 65 5f 52 65 6d 6f  |.int Sprite_Remo|
00098340  76 65 50 61 6c 65 74 74  65 20 28 3c 73 70 72 69  |vePalette (<spri|
00098350  74 65 5f 61 72 65 61 3e  20 61 72 65 61 2c 20 63  |te_area> area, c|
00098360  68 61 72 20 2a 6e 61 6d  65 29 3b 0a 48 65 61 64  |har *name);.Head|
00098370  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 53 70 72  |er:.<DeskLib:Spr|
00098380  69 74 65 2e 68 3d 3e 53  70 72 69 74 65 5f 44 4c  |ite.h=>Sprite_DL|
00098390  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000983a0  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000983b0  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000983c0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000983d0  72 65 6d 6f 76 65 73 20  74 68 65 20 70 61 6c 65  |removes the pale|
000983e0  74 74 65 20 66 6f 72 20  74 68 65 20 67 69 76 65  |tte for the give|
000983f0  6e 20 73 70 72 69 74 65  2e 20 54 68 69 73 20 69  |n sprite. This i|
00098400  73 20 65 71 75 69 76 61  6c 65 6e 74 20 74 6f 20  |s equivalent to |
00098410  3c 4f 53 5f 53 70 72 69  74 65 4f 70 3d 3e 53 57  |<OS_SpriteOp=>SW|
00098420  49 3a 4f 53 5f 53 70 72  69 74 65 4f 70 3e 20 33  |I:OS_SpriteOp> 3|
00098430  37 2e 00 00 44 41 54 41  2d 01 00 00 73 70 72 69  |7...DATA-...spri|
00098440  74 65 5f 72 65 6d 6f 76  65 77 61 73 74 61 67 65  |te_removewastage|
00098450  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00098460  6f 72 3e 20 2a 73 70 72  69 74 65 5f 72 65 6d 6f  |or> *sprite_remo|
00098470  76 65 77 61 73 74 61 67  65 20 28 3c 73 70 72 69  |vewastage (<spri|
00098480  74 65 5f 61 72 65 61 3e  20 2a 61 72 65 61 2c 20  |te_area> *area, |
00098490  3c 73 70 72 69 74 65 5f  69 64 3e 20 2a 73 70 72  |<sprite_id> *spr|
000984a0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 73 70 72 69  |);.Header:.<spri|
000984b0  74 65 2e 68 3d 3e 73 70  72 69 74 65 5f 68 3e 0a  |te.h=>sprite_h>.|
000984c0  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
000984d0  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
000984e0  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
000984f0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 72 65  |This function re|
00098500  6d 6f 76 65 73 20 74 68  65 20 6c 65 66 74 20 68  |moves the left h|
00098510  61 6e 64 20 77 61 73 74  61 67 65 20 66 72 6f 6d  |and wastage from|
00098520  20 61 20 73 70 72 69 74  65 2e 20 49 74 20 69 73  | a sprite. It is|
00098530  20 65 71 75 69 76 61 6c  65 6e 74 20 74 6f 20 3c  | equivalent to <|
00098540  4f 53 5f 53 70 72 69 74  65 4f 70 3d 3e 53 57 49  |OS_SpriteOp=>SWI|
00098550  3a 4f 53 5f 53 50 72 69  74 65 4f 70 3e 20 35 34  |:OS_SPriteOp> 54|
00098560  2e 00 00 00 44 41 54 41  e7 01 00 00 73 70 72 69  |....DATA....spri|
00098570  74 65 5f 72 65 6e 61 6d  65 0a 53 79 6e 74 61 78  |te_rename.Syntax|
00098580  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 73 70  |:.<os_error> *sp|
00098590  72 69 74 65 5f 72 65 6e  61 6d 65 20 28 3c 73 70  |rite_rename (<sp|
000985a0  72 69 74 65 5f 61 72 65  61 3e 20 2a 61 72 65 61  |rite_area> *area|
000985b0  2c 20 3c 73 70 72 69 74  65 5f 69 64 3e 20 2a 73  |, <sprite_id> *s|
000985c0  70 72 2c 20 63 68 61 72  20 2a 6e 61 6d 65 29 3b  |pr, char *name);|
000985d0  0a 48 65 61 64 65 72 3a  09 3c 73 70 72 69 74 65  |.Header:.<sprite|
000985e0  2e 68 3d 3e 73 70 72 69  74 65 3e 0a 0a 52 65 74  |.h=>sprite>..Ret|
000985f0  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
00098600  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
00098610  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
00098620  20 66 75 6e 63 74 69 6f  6e 20 72 65 6e 61 6d 65  | function rename|
00098630  73 20 73 70 65 63 69 66  69 65 64 20 73 70 72 69  |s specified spri|
00098640  74 65 20 69 6e 20 74 68  65 20 67 69 76 65 6e 20  |te in the given |
00098650  73 70 72 69 74 65 20 61  72 65 61 20 73 6f 20 74  |sprite area so t|
00098660  68 61 74 20 69 74 73 20  6e 65 77 20 6e 61 6d 65  |hat its new name|
00098670  20 69 73 20 74 68 61 74  20 70 6f 69 6e 74 65 64  | is that pointed|
00098680  20 74 6f 20 62 79 20 2f  6e 61 6d 65 2f 2e 20 41  | to by /name/. A|
00098690  6e 20 65 72 72 6f 72 20  69 73 20 72 65 74 75 72  |n error is retur|
000986a0  6e 65 64 20 69 66 20 61  20 73 70 72 69 74 65 20  |ned if a sprite |
000986b0  6f 66 20 74 68 65 20 6e  65 77 20 6e 61 6d 65 20  |of the new name |
000986c0  61 6c 72 65 61 64 79 20  65 78 69 73 74 73 20 69  |already exists i|
000986d0  6e 20 74 68 61 74 20 73  70 72 69 74 65 20 61 72  |n that sprite ar|
000986e0  65 61 2e 20 49 74 20 69  73 20 65 71 75 69 76 61  |ea. It is equiva|
000986f0  6c 65 6e 74 20 74 6f 20  3c 4f 53 5f 53 70 72 69  |lent to <OS_Spri|
00098700  74 65 4f 70 3d 3e 53 57  49 3a 4f 53 5f 53 70 72  |teOp=>SWI:OS_Spr|
00098710  69 74 65 4f 70 3e 20 32  36 2c 20 6f 72 20 2a 53  |iteOp> 26, or *S|
00098720  52 65 6e 61 6d 65 20 69  66 20 75 73 65 64 20 77  |Rename if used w|
00098730  69 74 68 20 74 68 65 20  73 79 73 74 65 6d 20 73  |ith the system s|
00098740  70 72 69 74 65 20 61 72  65 61 2e 00 44 41 54 41  |prite area..DATA|
00098750  b1 01 00 00 53 70 72 69  74 65 5f 52 65 6e 61 6d  |....Sprite_Renam|
00098760  65 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |e.Syntax:.<os_er|
00098770  72 6f 72 3e 20 2a 53 70  72 69 74 65 5f 52 65 6e  |ror> *Sprite_Ren|
00098780  61 6d 65 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |ame (<sprite_are|
00098790  61 3e 20 61 72 65 61 2c  20 63 68 61 72 20 2a 6f  |a> area, char *o|
000987a0  6c 64 2c 20 63 68 61 72  20 2a 6e 65 77 29 3b 0a  |ld, char *new);.|
000987b0  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
000987c0  3a 53 70 72 69 74 65 2e  68 3d 3e 53 70 72 69 74  |:Sprite.h=>Sprit|
000987d0  65 5f 44 4c 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |e_DL>..Returns:.|
000987e0  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000987f0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
00098800  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
00098810  69 6f 6e 20 72 65 6e 61  6d 65 73 20 74 68 65 20  |ion renames the |
00098820  73 70 72 69 74 65 20 69  6e 20 74 68 65 20 67 69  |sprite in the gi|
00098830  76 65 6e 20 61 72 65 61  20 77 68 6f 73 65 20 6e  |ven area whose n|
00098840  61 6d 65 20 69 73 20 67  69 76 65 6e 20 69 6e 20  |ame is given in |
00098850  2f 6f 6c 64 2f 20 73 6f  20 74 68 61 74 20 69 74  |/old/ so that it|
00098860  73 20 6e 65 77 20 6e 61  6d 65 20 69 73 20 74 68  |s new name is th|
00098870  61 74 20 67 69 76 65 6e  20 69 6e 20 2f 6e 65 77  |at given in /new|
00098880  2f 2e 20 41 6e 20 65 72  72 6f 72 20 69 73 20 72  |/. An error is r|
00098890  65 74 75 72 6e 65 64 20  69 66 20 61 20 73 70 72  |eturned if a spr|
000988a0  69 74 65 20 6f 66 20 74  68 65 20 6e 65 77 20 6e  |ite of the new n|
000988b0  61 6d 65 20 61 6c 72 65  61 64 79 20 65 78 69 73  |ame already exis|
000988c0  74 73 2e 20 49 74 20 69  73 20 69 64 65 6e 74 69  |ts. It is identi|
000988d0  63 61 6c 20 74 6f 20 53  57 49 20 3c 4f 53 5f 53  |cal to SWI <OS_S|
000988e0  70 72 69 74 65 4f 70 3d  3e 53 57 49 3a 4f 53 5f  |priteOp=>SWI:OS_|
000988f0  53 70 72 69 74 65 4f 70  3e 20 32 36 2e 00 00 00  |SpriteOp> 26....|
00098900  44 41 54 41 f8 00 00 00  73 70 72 69 74 65 5f 72  |DATA....sprite_r|
00098910  65 73 74 6f 72 65 73 74  61 74 65 0a 53 79 6e 74  |estorestate.Synt|
00098920  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
00098930  73 70 72 69 74 65 5f 72  65 73 74 6f 72 65 73 74  |sprite_restorest|
00098940  61 74 65 20 28 3c 73 70  72 69 74 65 5f 73 74 61  |ate (<sprite_sta|
00098950  74 65 3e 20 73 74 61 74  65 29 3b 0a 48 65 61 64  |te> state);.Head|
00098960  65 72 3a 09 3c 73 70 72  69 74 65 2e 68 3d 3e 73  |er:.<sprite.h=>s|
00098970  70 72 69 74 65 5f 68 3e  0a 0a 52 65 74 75 72 6e  |prite_h>..Return|
00098980  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
00098990  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000989a0  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000989b0  6e 63 74 69 6f 6e 20 72  65 73 74 6f 72 65 73 20  |nction restores |
000989c0  74 68 65 20 6f 6c 64 20  73 74 61 74 65 20 61 66  |the old state af|
000989d0  74 65 72 20 6f 6e 65 20  6f 66 20 74 68 65 20 73  |ter one of the s|
000989e0  70 72 69 74 65 20 72 65  64 69 72 65 63 74 69 6f  |prite redirectio|
000989f0  6e 20 63 61 6c 6c 73 2e  44 41 54 41 ca 00 00 00  |n calls.DATA....|
00098a00  73 70 72 69 74 65 2e 68  20 52 49 53 43 20 4f 53  |sprite.h RISC OS|
00098a10  20 33 20 46 75 6e 63 74  69 6f 6e 73 0a 54 68 65  | 3 Functions.The|
00098a20  73 65 20 66 75 6e 63 74  69 6f 6e 73 20 63 61 6e  |se functions can|
00098a30  20 6f 6e 6c 79 20 62 65  20 75 73 65 64 20 6f 6e  | only be used on|
00098a40  20 52 49 53 43 20 4f 53  20 33 2e 0a 7b 61 6c 69  | RISC OS 3..{ali|
00098a50  67 6e 20 63 65 6e 74 72  65 7d 0a 3c 73 70 72 69  |gn centre}.<spri|
00098a60  74 65 5f 63 68 61 6e 67  65 5f 73 69 7a 65 3e 0a  |te_change_size>.|
00098a70  3c 73 70 72 69 74 65 5f  70 75 74 5f 6d 61 73 6b  |<sprite_put_mask|
00098a80  5f 74 72 61 6e 73 3e 0a  3c 73 70 72 69 74 65 5f  |_trans>.<sprite_|
00098a90  70 75 74 5f 6d 61 73 6b  5f 70 67 6d 3e 0a 3c 73  |put_mask_pgm>.<s|
00098aa0  70 72 69 74 65 5f 70 75  74 5f 74 72 61 6e 73 3e  |prite_put_trans>|
00098ab0  0a 3c 73 70 72 69 74 65  5f 70 75 74 5f 70 67 6d  |.<sprite_put_pgm|
00098ac0  20 3e 00 00 44 41 54 41  17 01 00 00 53 70 72 69  | >..DATA....Spri|
00098ad0  74 65 5f 53 61 76 65 0a  53 79 6e 74 61 78 3a 09  |te_Save.Syntax:.|
00098ae0  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 53 70 72 69  |<os_error> *Spri|
00098af0  74 65 5f 53 61 76 65 20  28 3c 73 70 72 69 74 65  |te_Save (<sprite|
00098b00  5f 61 72 65 61 3e 20 61  72 65 61 2c 20 63 68 61  |_area> area, cha|
00098b10  72 20 2a 66 69 6c 65 6e  61 6d 65 29 3b 0a 48 65  |r *filename);.He|
00098b20  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 53  |ader:.<DeskLib:S|
00098b30  70 72 69 74 65 2e 68 3d  3e 53 70 72 69 74 65 5f  |prite.h=>Sprite_|
00098b40  44 4c 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |DL>..Returns:.Po|
00098b50  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
00098b60  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
00098b70  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
00098b80  6e 20 73 61 76 65 73 20  61 6c 6c 20 74 68 65 20  |n saves all the |
00098b90  73 70 72 69 74 65 73 20  69 6e 20 61 20 73 70 72  |sprites in a spr|
00098ba0  69 74 65 20 61 72 65 61  20 74 6f 20 61 20 66 69  |ite area to a fi|
00098bb0  6c 65 2e 20 49 74 20 69  73 20 65 71 75 69 76 61  |le. It is equiva|
00098bc0  6c 65 6e 74 20 74 6f 20  53 57 49 20 4f 53 5f 53  |lent to SWI OS_S|
00098bd0  70 72 69 74 65 4f 70 20  31 32 2e 00 44 41 54 41  |priteOp 12..DATA|
00098be0  db 00 00 00 73 70 72 69  74 65 5f 73 63 61 6c 65  |....sprite_scale|
00098bf0  66 61 63 74 6f 72 73 0a  54 68 69 73 20 74 79 70  |factors.This typ|
00098c00  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
00098c10  3c 44 65 73 6b 4c 69 62  3a 53 70 72 69 74 65 2e  |<DeskLib:Sprite.|
00098c20  68 3d 3e 53 70 72 69 74  65 5f 44 4c 3e 20 61 73  |h=>Sprite_DL> as|
00098c30  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 73  | the following s|
00098c40  74 72 75 63 74 75 72 65  3a 0a 0a 20 20 5c 7b 0a  |tructure:..  \{.|
00098c50  20 20 20 20 3c 77 69 6d  70 5f 70 6f 69 6e 74 3e  |    <wimp_point>|
00098c60  20 6d 75 6c 74 69 70 6c  79 3b 0a 20 20 20 20 3c  | multiply;.    <|
00098c70  77 69 6d 70 5f 70 6f 69  6e 74 3e 20 64 69 76 69  |wimp_point> divi|
00098c80  64 65 3b 0a 20 20 7d 0a  0a 55 73 69 6e 67 20 74  |de;.  }..Using t|
00098c90  68 69 73 20 73 74 72 75  63 74 75 72 65 20 61 6e  |his structure an|
00098ca0  79 20 73 63 61 6c 65 20  63 61 6e 20 62 65 20 63  |y scale can be c|
00098cb0  72 65 61 74 65 64 2e 00  44 41 54 41 40 01 00 00  |reated..DATA@...|
00098cc0  73 70 72 69 74 65 5f 73  63 72 65 65 6e 6c 6f 61  |sprite_screenloa|
00098cd0  64 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 73  |d.Syntax:.void s|
00098ce0  70 72 69 74 65 5f 73 63  72 65 65 6e 6c 6f 61 64  |prite_screenload|
00098cf0  20 28 63 68 61 72 20 2a  66 69 6c 65 29 3b 0a 48  | (char *file);.H|
00098d00  65 61 64 65 72 3a 09 3c  73 70 72 69 74 65 2e 68  |eader:.<sprite.h|
00098d10  3d 3e 73 70 72 69 74 65  5f 68 3e 0a 0a 54 68 69  |=>sprite_h>..Thi|
00098d20  73 20 66 75 6e 63 74 69  6f 6e 20 6c 6f 61 64 73  |s function loads|
00098d30  20 74 68 65 20 66 69 72  73 74 20 73 70 72 69 74  | the first sprit|
00098d40  65 20 69 6e 20 74 68 65  20 67 69 76 65 6e 20 73  |e in the given s|
00098d50  70 72 69 74 65 20 66 69  6c 65 20 61 6e 64 20 64  |prite file and d|
00098d60  69 73 70 6c 61 79 73 20  69 74 20 61 74 20 74 68  |isplays it at th|
00098d70  65 20 62 6f 74 74 6f 6d  20 6c 65 66 74 20 6f 66  |e bottom left of|
00098d80  20 74 68 65 20 73 63 72  65 65 6e 2c 20 69 6e 20  | the screen, in |
00098d90  74 68 65 20 63 6f 72 72  65 63 74 20 6d 6f 64 65  |the correct mode|
00098da0  20 61 6e 64 20 70 61 6c  65 74 74 65 2e 0a 0a 54  | and palette...T|
00098db0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 69 73 20  |his function is |
00098dc0  65 71 75 69 76 61 6c 65  6e 74 20 74 6f 20 74 68  |equivalent to th|
00098dd0  65 20 53 57 49 20 3c 4f  53 5f 53 70 72 69 74 65  |e SWI <OS_Sprite|
00098de0  4f 70 20 33 3d 3e 53 57  49 3a 6f 73 5f 73 70 72  |Op 3=>SWI:os_spr|
00098df0  69 74 65 6f 70 33 3e 2e  44 41 54 41 83 01 00 00  |iteop3>.DATA....|
00098e00  53 70 72 69 74 65 5f 53  63 72 65 65 6e 4c 6f 61  |Sprite_ScreenLoa|
00098e10  64 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |d.Syntax:.<os_er|
00098e20  72 6f 72 3e 20 2a 53 70  72 69 74 65 5f 53 63 72  |ror> *Sprite_Scr|
00098e30  65 65 6e 4c 6f 61 64 20  28 63 68 61 72 20 2a 66  |eenLoad (char *f|
00098e40  69 6c 65 6e 61 6d 65 29  3b 0a 48 65 61 64 65 72  |ilename);.Header|
00098e50  3a 09 3c 44 65 73 6b 4c  69 62 3a 53 70 72 69 74  |:.<DeskLib:Sprit|
00098e60  65 2e 68 3d 3e 53 70 72  69 74 65 5f 44 4c 3e 0a  |e.h=>Sprite_DL>.|
00098e70  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
00098e80  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
00098e90  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
00098ea0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 6c 6f  |This function lo|
00098eb0  61 64 73 20 74 68 65 20  66 69 72 73 74 20 73 70  |ads the first sp|
00098ec0  72 69 74 65 20 69 6e 20  74 68 65 20 67 69 76 65  |rite in the give|
00098ed0  6e 20 73 70 72 69 74 65  20 66 69 6c 65 20 61 6e  |n sprite file an|
00098ee0  64 20 64 69 73 70 6c 61  79 73 20 69 74 20 61 74  |d displays it at|
00098ef0  20 74 68 65 20 62 6f 74  74 6f 6d 20 6c 65 66 74  | the bottom left|
00098f00  20 6f 66 20 74 68 65 20  73 63 72 65 65 6e 2c 20  | of the screen, |
00098f10  69 6e 20 74 68 65 20 63  6f 72 72 65 63 74 20 6d  |in the correct m|
00098f20  6f 64 65 20 61 6e 64 20  70 61 6c 65 74 74 65 2e  |ode and palette.|
00098f30  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00098f40  69 73 20 65 71 75 69 76  61 6c 65 6e 74 20 74 6f  |is equivalent to|
00098f50  20 74 68 65 20 53 57 49  20 3c 4f 53 5f 53 70 72  | the SWI <OS_Spr|
00098f60  69 74 65 4f 70 20 33 3d  3e 53 57 49 3a 6f 73 5f  |iteOp 3=>SWI:os_|
00098f70  53 70 72 69 74 65 6f 70  33 3e 2e 00 44 41 54 41  |Spriteop3>..DATA|
00098f80  38 01 00 00 73 70 72 69  74 65 5f 73 63 72 65 65  |8...sprite_scree|
00098f90  6e 73 61 76 65 0a 53 79  6e 74 61 78 3a 09 76 6f  |nsave.Syntax:.vo|
00098fa0  69 64 20 73 70 72 69 74  65 5f 73 63 72 65 65 6e  |id sprite_screen|
00098fb0  73 61 76 65 20 28 63 68  61 72 20 2a 66 69 6c 65  |save (char *file|
00098fc0  2c 20 3c 73 70 72 69 74  65 5f 70 61 6c 66 6c 61  |, <sprite_palfla|
00098fd0  67 3e 20 66 6c 67 29 3b  0a 48 65 61 64 65 72 3a  |g> flg);.Header:|
00098fe0  09 3c 73 70 72 69 74 65  2e 68 3d 3e 73 70 72 69  |.<sprite.h=>spri|
00098ff0  74 65 5f 68 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |te_h>..This func|
00099000  74 69 6f 6e 20 73 61 76  65 73 20 74 68 65 20 63  |tion saves the c|
00099010  75 72 72 65 6e 74 20 67  72 61 70 68 69 63 73 20  |urrent graphics |
00099020  77 69 6e 64 6f 77 20 77  69 74 68 20 61 20 70 61  |window with a pa|
00099030  6c 65 74 74 65 20 69 66  20 72 65 71 75 65 73 74  |lette if request|
00099040  65 64 20 61 73 20 74 68  65 20 73 70 72 69 74 65  |ed as the sprite|
00099050  66 69 6c 65 20 77 68 6f  73 65 20 6e 61 6d 65 20  |file whose name |
00099060  69 73 20 67 69 76 65 6e  2e 0a 0a 54 68 69 73 20  |is given...This |
00099070  66 75 6e 63 74 69 6f 6e  20 69 73 20 65 71 75 69  |function is equi|
00099080  76 61 6c 65 6e 74 20 74  6f 20 74 68 65 20 53 57  |valent to the SW|
00099090  49 20 3c 4f 53 5f 53 70  72 69 74 65 4f 70 20 32  |I <OS_SpriteOp 2|
000990a0  3d 3e 53 57 49 3a 6f 73  5f 73 70 72 69 74 65 6f  |=>SWI:os_spriteo|
000990b0  70 32 3e 2e 44 41 54 41  b7 01 00 00 53 70 72 69  |p2>.DATA....Spri|
000990c0  74 65 5f 53 63 72 65 65  6e 53 61 76 65 0a 53 79  |te_ScreenSave.Sy|
000990d0  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
000990e0  20 2a 53 70 72 69 74 65  5f 53 63 72 65 65 6e 53  | *Sprite_ScreenS|
000990f0  61 76 65 20 28 63 68 61  72 20 2a 66 69 6c 65 6e  |ave (char *filen|
00099100  61 6d 65 2c 20 3c 42 4f  4f 4c 3e 20 70 61 6c 66  |ame, <BOOL> palf|
00099110  6c 61 67 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |lag);.Header:.<D|
00099120  65 73 6b 4c 69 62 3a 53  70 72 69 74 65 2e 68 3d  |eskLib:Sprite.h=|
00099130  3e 53 70 72 69 74 65 5f  44 4c 3e 0a 0a 52 65 74  |>Sprite_DL>..Ret|
00099140  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
00099150  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
00099160  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
00099170  20 66 75 6e 63 74 69 6f  6e 20 73 61 76 65 73 20  | function saves |
00099180  74 68 65 20 63 75 72 72  65 6e 74 20 67 72 61 70  |the current grap|
00099190  68 69 63 73 20 77 69 6e  64 6f 77 20 77 69 74 68  |hics window with|
000991a0  20 61 20 70 61 6c 65 74  74 65 20 69 66 20 72 65  | a palette if re|
000991b0  71 75 65 73 74 65 64 20  61 73 20 74 68 65 20 73  |quested as the s|
000991c0  70 72 69 74 65 66 69 6c  65 20 77 68 6f 73 65 20  |pritefile whose |
000991d0  6e 61 6d 65 20 69 73 20  67 69 76 65 6e 2e 20 49  |name is given. I|
000991e0  66 20 2f 70 61 6c 66 6c  61 67 2f 20 69 73 20 3c  |f /palflag/ is <|
000991f0  54 52 55 45 3e 20 74 68  65 6e 20 74 68 65 20 70  |TRUE> then the p|
00099200  61 6c 65 74 74 65 20 69  73 20 73 61 76 65 64 20  |alette is saved |
00099210  77 69 74 68 20 74 68 65  20 73 70 72 69 74 65 2e  |with the sprite.|
00099220  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
00099230  69 73 20 65 71 75 69 76  61 6c 65 6e 74 20 74 6f  |is equivalent to|
00099240  20 74 68 65 20 53 57 49  20 3c 4f 53 5f 53 70 72  | the SWI <OS_Spr|
00099250  69 74 65 4f 70 20 32 3d  3e 53 57 49 3a 4f 53 5f  |iteOp 2=>SWI:OS_|
00099260  53 70 72 69 74 65 4f 70  32 3e 2e 00 44 41 54 41  |SpriteOp2>..DATA|
00099270  85 01 00 00 73 70 72 69  74 65 5f 73 65 6c 65 63  |....sprite_selec|
00099280  74 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |t.Syntax:.<os_er|
00099290  72 6f 72 3e 20 2a 73 70  72 69 74 65 5f 73 65 6c  |ror> *sprite_sel|
000992a0  65 63 74 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |ect (<sprite_are|
000992b0  61 3e 20 2a 61 72 65 61  2c 20 3c 73 70 72 69 74  |a> *area, <sprit|
000992c0  65 5f 69 64 3e 20 2a 73  70 72 29 3b 0a 48 65 61  |e_id> *spr);.Hea|
000992d0  64 65 72 3a 09 3c 73 70  72 69 74 65 2e 68 3d 3e  |der:.<sprite.h=>|
000992e0  73 70 72 69 74 65 5f 68  3e 0a 0a 52 65 74 75 72  |sprite_h>..Retur|
000992f0  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
00099300  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
00099310  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
00099320  75 6e 63 74 69 6f 6e 20  73 65 6c 65 63 74 73 20  |unction selects |
00099330  74 68 65 20 73 70 65 63  69 66 69 65 64 20 73 70  |the specified sp|
00099340  72 69 74 65 20 66 6f 72  20 70 6c 6f 74 74 69 6e  |rite for plottin|
00099350  67 20 28 70 65 72 68 61  70 73 20 75 73 69 6e 67  |g (perhaps using|
00099360  20 3c 6f 73 5f 70 6c 6f  74 3e 29 20 77 69 74 68  | <os_plot>) with|
00099370  20 70 6c 6f 74 20 63 6f  64 65 20 30 78 45 44 20  | plot code 0xED |
00099380  28 61 6e 64 20 73 69 6d  69 6c 61 72 29 2e 20 49  |(and similar). I|
00099390  74 20 69 73 20 65 71 75  69 76 61 6c 65 6e 74 20  |t is equivalent |
000993a0  74 6f 20 3c 4f 53 5f 53  70 72 69 74 65 4f 70 3d  |to <OS_SpriteOp=|
000993b0  3e 53 57 49 3a 4f 53 5f  53 70 72 69 74 65 4f 70  |>SWI:OS_SpriteOp|
000993c0  3e 20 32 34 2c 20 6f 72  20 2a 53 43 68 6f 6f 73  |> 24, or *SChoos|
000993d0  65 20 77 68 65 6e 20 75  73 65 64 20 77 69 74 68  |e when used with|
000993e0  20 74 68 65 20 73 79 73  74 65 6d 20 61 72 65 61  | the system area|
000993f0  2e 00 00 00 44 41 54 41  7a 01 00 00 73 70 72 69  |....DATAz...spri|
00099400  74 65 5f 73 65 6c 65 63  74 5f 72 70 0a 53 79 6e  |te_select_rp.Syn|
00099410  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
00099420  2a 73 70 72 69 74 65 5f  73 65 6c 65 63 74 5f 72  |*sprite_select_r|
00099430  70 20 28 3c 73 70 72 69  74 65 5f 61 72 65 61 3e  |p (<sprite_area>|
00099440  20 2a 61 72 65 61 2c 20  3c 73 70 72 69 74 65 5f  | *area, <sprite_|
00099450  69 64 3e 20 2a 73 70 72  2c 20 3c 73 70 72 69 74  |id> *spr, <sprit|
00099460  65 5f 70 74 72 3e 20 2a  61 64 64 72 29 3b 0a 48  |e_ptr> *addr);.H|
00099470  65 61 64 65 72 3a 09 3c  73 70 72 69 74 65 2e 68  |eader:.<sprite.h|
00099480  3d 3e 73 70 72 69 74 65  5f 68 3e 0a 0a 52 65 74  |=>sprite_h>..Ret|
00099490  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
000994a0  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
000994b0  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
000994c0  20 66 75 6e 63 74 69 6f  6e 20 73 65 6c 65 63 74  | function select|
000994d0  73 20 61 20 73 70 72 69  74 65 20 66 6f 72 20 70  |s a sprite for p|
000994e0  6c 6f 74 74 69 6e 67 2e  0a 0a 49 74 20 69 73 20  |lotting...It is |
000994f0  69 64 65 6e 74 69 63 61  6c 20 74 6f 20 74 68 65  |identical to the|
00099500  20 66 75 6e 63 74 69 6f  6e 20 3c 73 70 72 69 74  | function <sprit|
00099510  65 5f 73 65 6c 65 63 74  3e 2c 20 62 75 74 20 72  |e_select>, but r|
00099520  65 74 75 72 6e 73 20 74  68 65 20 61 64 64 72 65  |eturns the addre|
00099530  73 73 20 6f 66 20 74 68  65 20 73 70 72 69 74 65  |ss of the sprite|
00099540  20 69 6e 20 74 68 65 20  7b 2f 7d 73 70 72 69 74  | in the {/}sprit|
00099550  65 5f 70 74 72 7b 2f 7d  20 70 6f 69 6e 74 65 64  |e_ptr{/} pointed|
00099560  20 74 6f 20 62 79 20 2f  61 64 64 72 2f 2e 00 00  | to by /addr/...|
00099570  44 41 54 41 57 00 00 00  73 70 72 69 74 65 2e 68  |DATAW...sprite.h|
00099580  20 53 69 6d 70 6c 65 20  46 75 6e 63 74 69 6f 6e  | Simple Function|
00099590  73 0a 23 61 6c 69 67 6e  20 63 65 6e 74 72 65 0a  |s.#align centre.|
000995a0  3c 73 70 72 69 74 65 5f  73 63 72 65 65 6e 6c 6f  |<sprite_screenlo|
000995b0  61 64 3e 0a 3c 73 70 72  69 74 65 5f 73 63 72 65  |ad>.<sprite_scre|
000995c0  65 6e 73 61 76 65 3e 00  44 41 54 41 1a 01 00 00  |ensave>.DATA....|
000995d0  73 70 72 69 74 65 5f 73  69 7a 65 6f 66 5f 73 63  |sprite_sizeof_sc|
000995e0  72 65 65 6e 63 6f 6e 74  65 78 74 0a 53 79 6e 74  |reencontext.Synt|
000995f0  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
00099600  73 70 72 69 74 65 5f 73  69 7a 65 6f 66 5f 73 63  |sprite_sizeof_sc|
00099610  72 65 65 6e 63 6f 6e 74  65 78 74 20 28 69 6e 74  |reencontext (int|
00099620  20 2a 73 69 7a 65 29 3b  0a 48 65 61 64 65 72 3a  | *size);.Header:|
00099630  09 3c 73 70 72 69 74 65  2e 68 3d 3e 73 70 72 69  |.<sprite.h=>spri|
00099640  74 65 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 20  |te_h>..Returns: |
00099650  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
00099660  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
00099670  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
00099680  69 6f 6e 20 67 65 74 73  20 74 68 65 20 73 69 7a  |ion gets the siz|
00099690  65 20 6f 66 20 74 68 65  20 73 61 76 65 20 61 72  |e of the save ar|
000996a0  65 61 20 6e 65 65 64 65  64 20 74 6f 20 73 61 76  |ea needed to sav|
000996b0  65 20 74 68 65 20 73 63  72 65 65 6e 20 63 6f 6e  |e the screen con|
000996c0  74 65 78 74 20 61 6e 64  20 72 65 74 75 72 6e 73  |text and returns|
000996d0  20 69 74 20 69 6e 20 7b  2f 7d 2a 73 70 72 7b 2f  | it in {/}*spr{/|
000996e0  7d 2e 00 00 44 41 54 41  41 01 00 00 73 70 72 69  |}...DATAA...spri|
000996f0  74 65 5f 73 69 7a 65 6f  66 5f 73 70 72 69 74 65  |te_sizeof_sprite|
00099700  63 6f 6e 74 65 78 74 0a  53 79 6e 74 61 78 3a 09  |context.Syntax:.|
00099710  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 73 70 72 69  |<os_error> *spri|
00099720  74 65 5f 73 69 7a 65 6f  66 5f 73 70 72 69 74 65  |te_sizeof_sprite|
00099730  63 6f 6e 74 65 78 74 20  28 3c 73 70 72 69 74 65  |context (<sprite|
00099740  5f 61 72 65 61 3e 20 2a  61 72 65 61 2c 20 3c 73  |_area> *area, <s|
00099750  70 72 69 74 65 5f 69 64  3e 20 2a 73 70 72 2c 20  |prite_id> *spr, |
00099760  69 6e 74 20 2a 73 69 7a  65 29 3b 0a 48 65 61 64  |int *size);.Head|
00099770  65 72 3a 09 3c 73 70 72  69 74 65 2e 68 3d 3e 73  |er:.<sprite.h=>s|
00099780  70 72 69 74 65 5f 68 3e  0a 0a 52 65 74 75 72 6e  |prite_h>..Return|
00099790  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000997a0  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000997b0  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000997c0  6e 63 74 69 6f 6e 20 67  65 74 73 20 74 68 65 20  |nction gets the |
000997d0  73 69 7a 65 20 6f 66 20  74 68 65 20 73 61 76 65  |size of the save|
000997e0  20 61 72 65 61 20 6e 65  65 64 65 64 20 74 6f 20  | area needed to |
000997f0  73 61 76 65 20 74 68 65  20 73 70 72 69 74 65 20  |save the sprite |
00099800  63 6f 6e 74 65 78 74 20  61 6e 64 20 72 65 74 75  |context and retu|
00099810  72 6e 73 20 69 74 20 69  6e 20 7b 2f 7d 2a 73 70  |rns it in {/}*sp|
00099820  72 7b 2f 7d 2e 00 00 00  44 41 54 41 75 00 00 00  |r{/}....DATAu...|
00099830  73 70 72 69 74 65 5f 73  74 61 74 65 0a 54 68 69  |sprite_state.Thi|
00099840  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
00099850  64 20 69 6e 20 3c 73 70  72 69 74 65 2e 68 3d 3e  |d in <sprite.h=>|
00099860  73 70 72 69 74 65 5f 68  3e 20 61 73 20 74 68 65  |sprite_h> as the|
00099870  20 66 6f 6c 6c 6f 77 69  6e 67 20 73 74 72 75 63  | following struc|
00099880  74 75 72 65 3a 0a 0a 20  20 5c 7b 0a 20 20 20 20  |ture:..  \{.    |
00099890  69 6e 74 20 72 5b 34 5d  3b 0a 20 20 7d 00 00 00  |int r[4];.  }...|
000998a0  44 41 54 41 72 00 00 00  73 70 72 69 74 65 5f 74  |DATAr...sprite_t|
000998b0  72 61 6e 73 6d 61 74 0a  54 68 69 73 20 74 79 70  |ransmat.This typ|
000998c0  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
000998d0  3c 73 70 72 69 74 65 2e  68 3d 3e 73 70 72 69 74  |<sprite.h=>sprit|
000998e0  65 5f 68 3e 20 61 73 20  61 20 7b 2f 7d 69 6e 74  |e_h> as a {/}int|
000998f0  20 5b 36 5d 7b 2f 7d 20  69 65 20 61 6e 20 61 72  | [6]{/} ie an ar|
00099900  72 61 79 20 6f 66 20 36  20 69 6e 74 65 67 65 72  |ray of 6 integer|
00099910  73 2e 00 00 44 41 54 41  f9 00 00 00 73 70 72 69  |s...DATA....spri|
00099920  74 65 5f 74 79 70 65 0a  54 68 69 73 20 69 73 20  |te_type.This is |
00099930  61 20 74 79 70 65 20 64  65 66 69 6e 65 64 20 69  |a type defined i|
00099940  6e 20 3c 73 70 72 69 74  65 2e 68 3d 3e 73 70 72  |n <sprite.h=>spr|
00099950  69 74 65 5f 68 3e 20 61  73 20 74 68 65 20 66 6f  |ite_h> as the fo|
00099960  6c 6c 6f 77 69 6e 67 20  65 6e 75 6d 65 72 61 74  |llowing enumerat|
00099970  65 64 20 74 79 70 65 3a  0a 0a 20 20 5c 7b 0a 20  |ed type:..  \{. |
00099980  20 20 20 73 70 72 69 74  65 5f 69 64 5f 6e 61 6d  |   sprite_id_nam|
00099990  65 09 3d 20 30 2c 0a 20  20 20 20 73 70 72 69 74  |e.= 0,.    sprit|
000999a0  65 5f 69 64 5f 61 64 64  72 09 3d 20 30 78 37 34  |e_id_addr.= 0x74|
000999b0  35 32 37 30 35 33 0a 20  20 7d 0a 0a 49 74 20 69  |527053.  }..It i|
000999c0  73 20 75 73 65 64 20 74  6f 20 69 6e 64 69 63 61  |s used to indica|
000999d0  74 65 20 77 68 65 74 68  65 72 20 61 20 73 70 72  |te whether a spr|
000999e0  69 74 65 20 6e 61 6d 65  20 6f 72 20 61 64 64 72  |ite name or addr|
000999f0  65 73 73 20 69 73 20 75  73 65 64 20 69 6e 20 61  |ess is used in a|
00099a00  20 3c 73 70 72 69 74 65  5f 69 64 3e 2e 00 00 00  | <sprite_id>....|
00099a10  44 41 54 41 36 01 00 00  53 70 72 69 74 65 5f 55  |DATA6...Sprite_U|
00099a20  6e 52 65 64 69 72 65 63  74 0a 53 79 6e 74 61 78  |nRedirect.Syntax|
00099a30  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 53 70  |:.<os_error> *Sp|
00099a40  72 69 74 65 5f 55 6e 52  65 64 69 72 65 63 74 20  |rite_UnRedirect |
00099a50  28 3c 73 70 72 69 74 65  5f 6f 75 74 70 75 74 73  |(<sprite_outputs|
00099a60  74 61 74 65 3e 20 2a 6f  6c 64 29 3b 0a 48 65 61  |tate> *old);.Hea|
00099a70  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 53 70  |der:.<DeskLib:Sp|
00099a80  72 69 74 65 2e 68 3d 3e  53 70 72 69 74 65 5f 44  |rite.h=>Sprite_D|
00099a90  4c 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |L>..Returns:.Poi|
00099aa0  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
00099ab0  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
00099ac0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
00099ad0  20 72 65 73 74 6f 72 65  73 20 56 44 55 20 6f 75  | restores VDU ou|
00099ae0  74 70 75 74 20 62 61 63  6b 20 74 6f 20 61 20 73  |tput back to a s|
00099af0  61 76 65 64 20 73 74 61  74 65 2e 20 54 68 69 73  |aved state. This|
00099b00  20 73 74 61 74 65 20 73  68 6f 75 6c 64 20 62 65  | state should be|
00099b10  20 74 68 61 74 20 72 65  74 75 72 6e 65 64 20 69  | that returned i|
00099b20  6e 20 2f 6f 6c 64 2f 20  62 79 20 3c 53 70 72 69  |n /old/ by <Spri|
00099b30  74 65 5f 52 65 64 69 72  65 63 74 3e 2c 20 49 20  |te_Redirect>, I |
00099b40  74 68 69 6e 6b 21 00 00  44 41 54 41 e8 01 00 00  |think!..DATA....|
00099b50  53 70 72 69 74 65 5f 57  69 6d 70 50 6c 6f 74 0a  |Sprite_WimpPlot.|
00099b60  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
00099b70  72 3e 20 2a 53 70 72 69  74 65 5f 57 69 6d 70 50  |r> *Sprite_WimpP|
00099b80  6c 6f 74 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |lot (<sprite_are|
00099b90  61 3e 20 61 72 65 61 2c  20 63 68 61 72 20 2a 6e  |a> area, char *n|
00099ba0  61 6d 65 2c 20 3c 77 69  6d 70 5f 70 6f 69 6e 74  |ame, <wimp_point|
00099bb0  3e 20 2a 70 6f 73 2c 20  3c 63 6f 6e 76 65 72 74  |> *pos, <convert|
00099bc0  5f 62 6c 6f 63 6b 3e 20  2a 63 6f 6e 76 65 72 74  |_block> *convert|
00099bd0  2c 20 69 6e 74 20 61 63  74 69 6f 6e 29 3b 0a 48  |, int action);.H|
00099be0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
00099bf0  53 70 72 69 74 65 2e 68  3d 3e 53 70 72 69 74 65  |Sprite.h=>Sprite|
00099c00  5f 44 4c 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |_DL>..Returns:.P|
00099c10  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
00099c20  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
00099c30  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
00099c40  6f 6e 20 70 6c 6f 74 73  20 74 68 65 20 73 70 65  |on plots the spe|
00099c50  63 69 66 69 65 64 20 73  70 72 69 74 65 20 61 74  |cified sprite at|
00099c60  20 77 6f 72 6b 20 61 72  65 61 20 63 6f 6f 72 64  | work area coord|
00099c70  69 6e 61 74 65 73 20 2f  70 6f 73 2f 20 66 6f 72  |inates /pos/ for|
00099c80  20 74 68 65 20 77 69 6e  64 6f 77 20 77 68 6f 73  | the window whos|
00099c90  65 20 63 6f 6e 76 65 72  74 20 62 6c 6f 63 6b 20  |e convert block |
00099ca0  69 73 20 67 69 76 65 6e  2c 20 77 69 74 68 20 67  |is given, with g|
00099cb0  72 61 70 68 69 63 73 20  61 63 74 69 6f 6e 20 2f  |raphics action /|
00099cc0  61 63 74 69 6f 6e 2f 2e  20 41 6c 6c 20 72 65 6c  |action/. All rel|
00099cd0  65 76 61 6e 74 20 73 63  61 6c 69 6e 67 2f 63 6f  |evant scaling/co|
00099ce0  6c 6f 75 72 20 74 72 61  6e 73 6c 61 74 69 6f 6e  |lour translation|
00099cf0  20 6f 63 63 75 72 73 20  74 6f 20 70 6c 6f 74 20  | occurs to plot |
00099d00  74 68 65 20 73 70 72 69  74 65 20 61 73 20 74 68  |the sprite as th|
00099d10  65 20 57 69 6d 70 20 77  6f 75 6c 64 20 64 6f 20  |e Wimp would do |
00099d20  77 65 72 65 20 69 74 20  61 6e 20 69 63 6f 6e 2e  |were it an icon.|
00099d30  44 41 54 41 95 01 00 00  73 70 72 69 74 65 5f 77  |DATA....sprite_w|
00099d40  72 69 74 65 6d 61 73 6b  0a 53 79 6e 74 61 78 3a  |ritemask.Syntax:|
00099d50  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 73 70 72  |.<os_error> *spr|
00099d60  69 74 65 5f 77 72 69 74  65 6d 61 73 6b 20 28 3c  |ite_writemask (<|
00099d70  73 70 72 69 74 65 5f 61  72 65 61 3e 20 2a 61 72  |sprite_area> *ar|
00099d80  65 61 2c 20 3c 73 70 72  69 74 65 5f 69 64 3e 20  |ea, <sprite_id> |
00099d90  2a 73 70 72 2c 20 69 6e  74 20 78 2c 20 69 6e 74  |*spr, int x, int|
00099da0  20 79 2c 20 3c 73 70 72  69 74 65 5f 6d 61 73 6b  | y, <sprite_mask|
00099db0  73 74 61 74 65 3e 20 2a  6d 61 73 6b 29 3b 0a 48  |state> *mask);.H|
00099dc0  65 61 64 65 72 3a 09 3c  73 70 72 69 74 65 2e 68  |eader:.<sprite.h|
00099dd0  3d 3e 73 70 72 69 74 65  5f 68 3e 0a 0a 52 65 74  |=>sprite_h>..Ret|
00099de0  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
00099df0  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
00099e00  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 44 65 73 6b  |> if none...Desk|
00099e10  4c 69 62 3a 20 53 65 65  20 3c 53 70 72 69 74 65  |Lib: See <Sprite|
00099e20  5f 57 72 69 74 65 4d 61  73 6b 3d 3e 53 70 72 69  |_WriteMask=>Spri|
00099e30  74 65 5f 57 72 69 74 65  4d 61 73 6b 5f 3e 2e 0a  |te_WriteMask_>..|
00099e40  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 77  |.This function w|
00099e50  72 69 74 65 73 20 74 68  65 20 73 74 61 74 65 20  |rites the state |
00099e60  6f 66 20 61 20 67 69 76  65 6e 20 70 69 78 65 6c  |of a given pixel|
00099e70  20 69 6e 20 74 68 65 20  73 70 65 63 69 66 69 65  | in the specifie|
00099e80  64 20 73 70 72 69 74 65  20 6d 61 73 6b 2e 20 49  |d sprite mask. I|
00099e90  74 20 69 73 20 65 71 75  69 76 61 6c 65 6e 74 20  |t is equivalent |
00099ea0  74 6f 20 3c 4f 53 5f 53  70 72 69 74 65 4f 70 3d  |to <OS_SpriteOp=|
00099eb0  3e 53 57 49 3a 4f 53 5f  53 70 72 69 74 65 4f 70  |>SWI:OS_SpriteOp|
00099ec0  3e 20 34 34 2e 00 00 00  44 41 54 41 59 01 00 00  |> 44....DATAY...|
00099ed0  53 70 72 69 74 65 5f 57  72 69 74 65 4d 61 73 6b  |Sprite_WriteMask|
00099ee0  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
00099ef0  6f 72 3e 20 2a 53 70 72  69 74 65 5f 57 72 69 74  |or> *Sprite_Writ|
00099f00  65 4d 61 73 6b 20 28 3c  73 70 72 69 74 65 5f 61  |eMask (<sprite_a|
00099f10  72 65 61 3e 20 61 72 65  61 2c 20 63 68 61 72 20  |rea> area, char |
00099f20  2a 6e 61 6d 65 2c 20 3c  77 69 6d 70 5f 70 6f 69  |*name, <wimp_poi|
00099f30  6e 74 3e 20 2a 70 6f 73  2c 20 3c 42 4f 4f 4c 3e  |nt> *pos, <BOOL>|
00099f40  20 73 6f 6c 69 64 29 3b  0a 48 65 61 64 65 72 3a  | solid);.Header:|
00099f50  09 3c 44 65 73 6b 4c 69  62 3a 53 70 72 69 74 65  |.<DeskLib:Sprite|
00099f60  2e 68 3d 3e 53 70 72 69  74 65 5f 44 4c 3e 0a 0a  |.h=>Sprite_DL>..|
00099f70  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
00099f80  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
00099f90  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
00099fa0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 65 74  |his function set|
00099fb0  73 20 74 68 65 20 73 74  61 74 65 20 6f 66 20 61  |s the state of a|
00099fc0  20 67 69 76 65 6e 20 70  69 78 65 6c 20 69 6e 20  | given pixel in |
00099fd0  74 68 65 20 73 70 65 63  69 66 69 65 64 20 73 70  |the specified sp|
00099fe0  72 69 74 65 20 6d 61 73  6b 2e 20 49 74 20 69 73  |rite mask. It is|
00099ff0  20 65 71 75 69 76 61 6c  65 6e 74 20 74 6f 20 3c  | equivalent to <|
0009a000  4f 53 5f 53 70 72 69 74  65 4f 70 3d 3e 53 57 49  |OS_SpriteOp=>SWI|
0009a010  3a 4f 53 5f 53 70 72 69  74 65 4f 70 3e 20 34 33  |:OS_SpriteOp> 43|
0009a020  2e 00 00 00 44 41 54 41  94 01 00 00 73 70 72 69  |....DATA....spri|
0009a030  74 65 5f 77 72 69 74 65  70 69 78 65 6c 0a 53 79  |te_writepixel.Sy|
0009a040  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
0009a050  20 2a 73 70 72 69 74 65  5f 77 72 69 74 65 70 69  | *sprite_writepi|
0009a060  78 65 6c 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |xel (<sprite_are|
0009a070  61 3e 20 2a 61 72 65 61  2c 20 3c 73 70 72 69 74  |a> *area, <sprit|
0009a080  65 5f 69 64 3e 20 2a 73  70 72 2c 20 69 6e 74 20  |e_id> *spr, int |
0009a090  78 2c 20 69 6e 74 20 79  2c 20 3c 73 70 72 69 74  |x, int y, <sprit|
0009a0a0  65 5f 63 6f 6c 6f 75 72  3e 20 2a 63 6f 6c 6f 75  |e_colour> *colou|
0009a0b0  72 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 70 72  |r);.Header:.<spr|
0009a0c0  69 74 65 2e 68 3d 3e 73  70 72 69 74 65 5f 68 3e  |ite.h=>sprite_h>|
0009a0d0  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
0009a0e0  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
0009a0f0  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
0009a100  0a 44 65 73 6b 4c 69 62  3a 20 53 65 65 20 3c 53  |.DeskLib: See <S|
0009a110  70 72 69 74 65 5f 57 72  69 74 65 50 69 78 65 6c  |prite_WritePixel|
0009a120  3d 3e 53 70 72 69 74 65  5f 57 72 69 74 65 50 69  |=>Sprite_WritePi|
0009a130  78 65 6c 5f 3e 2e 0a 0a  54 68 69 73 20 66 75 6e  |xel_>...This fun|
0009a140  63 74 69 6f 6e 20 77 72  69 74 65 73 20 74 68 65  |ction writes the|
0009a150  20 63 6f 6c 6f 75 72 20  6f 66 20 61 20 67 69 76  | colour of a giv|
0009a160  65 6e 20 70 69 78 65 6c  20 69 6e 20 74 68 65 20  |en pixel in the |
0009a170  73 70 65 63 69 66 69 65  64 20 73 70 72 69 74 65  |specified sprite|
0009a180  2e 20 49 74 20 69 73 20  65 71 75 69 76 61 6c 65  |. It is equivale|
0009a190  6e 74 20 74 6f 20 3c 4f  53 5f 53 70 72 69 74 65  |nt to <OS_Sprite|
0009a1a0  4f 70 3d 3e 53 57 49 3a  4f 53 5f 53 70 72 69 74  |Op=>SWI:OS_Sprit|
0009a1b0  65 4f 70 3e 20 34 32 2e  44 41 54 41 64 01 00 00  |eOp> 42.DATAd...|
0009a1c0  53 70 72 69 74 65 5f 57  72 69 74 65 50 69 78 65  |Sprite_WritePixe|
0009a1d0  6c 0a 53 79 6e 74 61 78  3a 09 6f 73 5f 65 72 72  |l.Syntax:.os_err|
0009a1e0  6f 72 20 2a 53 70 72 69  74 65 5f 57 72 69 74 65  |or *Sprite_Write|
0009a1f0  50 69 78 65 6c 20 28 3c  73 70 72 69 74 65 5f 61  |Pixel (<sprite_a|
0009a200  72 65 61 3e 20 61 72 65  61 2c 20 63 68 61 72 20  |rea> area, char |
0009a210  2a 6e 61 6d 65 2c 20 3c  77 69 6d 70 5f 70 6f 69  |*name, <wimp_poi|
0009a220  6e 74 3e 20 2a 70 6f 73  2c 20 69 6e 74 20 63 6f  |nt> *pos, int co|
0009a230  6c 2c 20 69 6e 74 20 74  69 6e 74 29 3b 0a 48 65  |l, int tint);.He|
0009a240  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 53  |ader:.<DeskLib:S|
0009a250  70 72 69 74 65 2e 68 3d  3e 53 70 72 69 74 65 5f  |prite.h=>Sprite_|
0009a260  44 4c 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |DL>..Returns:.Po|
0009a270  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
0009a280  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
0009a290  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
0009a2a0  6e 20 73 65 74 73 20 74  68 65 20 63 6f 6c 6f 75  |n sets the colou|
0009a2b0  72 20 61 6e 64 20 74 69  6e 74 20 6f 66 20 74 68  |r and tint of th|
0009a2c0  65 20 70 69 78 65 6c 20  61 74 20 2f 70 6f 73 2f  |e pixel at /pos/|
0009a2d0  20 69 6e 20 74 68 65 20  67 69 76 65 6e 20 73 70  | in the given sp|
0009a2e0  72 69 74 65 2e 20 49 74  20 69 73 20 65 71 75 69  |rite. It is equi|
0009a2f0  76 61 6c 65 6e 74 20 74  6f 20 3c 4f 53 5f 53 70  |valent to <OS_Sp|
0009a300  72 69 74 65 4f 70 3d 3e  53 57 49 3a 4f 53 5f 53  |riteOp=>SWI:OS_S|
0009a310  70 72 69 74 65 4f 70 3e  20 34 32 2e 44 41 54 41  |priteOp> 42.DATA|
0009a320  61 01 00 00 73 70 72 69  74 65 5f 61 72 65 61 5f  |a...sprite_area_|
0009a330  69 6e 69 74 69 61 6c 69  73 65 0a 53 79 6e 74 61  |initialise.Synta|
0009a340  78 3a 09 76 6f 69 64 20  73 70 72 69 74 65 5f 61  |x:.void sprite_a|
0009a350  72 65 61 5f 69 6e 69 74  69 61 6c 69 73 65 20 28  |rea_initialise (|
0009a360  3c 73 70 72 69 74 65 5f  61 72 65 61 3e 20 2a 70  |<sprite_area> *p|
0009a370  74 72 2c 20 69 6e 74 20  73 69 7a 65 29 3b 0a 48  |tr, int size);.H|
0009a380  65 61 64 65 72 3a 09 3c  73 70 72 69 74 65 2e 68  |eader:.<sprite.h|
0009a390  3d 3e 73 70 72 69 74 65  5f 68 3e 0a 0a 54 68 69  |=>sprite_h>..Thi|
0009a3a0  73 20 66 75 6e 63 74 69  6f 6e 20 69 6e 69 74 69  |s function initi|
0009a3b0  61 6c 69 73 65 73 20 61  6e 20 61 72 65 61 20 6f  |alises an area o|
0009a3c0  66 20 6d 65 6d 6f 72 79  20 70 6f 69 6e 74 65 64  |f memory pointed|
0009a3d0  20 74 6f 20 62 79 20 2f  70 74 72 2f 2c 20 77 68  | to by /ptr/, wh|
0009a3e0  6f 73 65 20 73 69 7a 65  20 69 73 20 67 69 76 65  |ose size is give|
0009a3f0  6e 20 69 6e 20 2f 73 69  7a 65 2f 2c 20 66 6f 72  |n in /size/, for|
0009a400  20 75 73 65 20 61 73 20  61 20 73 70 72 69 74 65  | use as a sprite|
0009a410  20 61 72 65 61 2e 20 54  68 65 72 65 20 69 73 20  | area. There is |
0009a420  6e 6f 20 7b 2a 7d 4f 53  5f 53 70 72 69 74 65 4f  |no {*}OS_SpriteO|
0009a430  70 7b 2a 7d 20 63 61 6c  6c 20 74 6f 20 64 6f 20  |p{*} call to do |
0009a440  74 68 69 73 2c 20 73 6f  20 74 68 69 73 20 69 73  |this, so this is|
0009a450  20 61 20 75 73 65 66 75  6c 20 66 75 6e 63 74 69  | a useful functi|
0009a460  6f 6e 20 77 68 69 63 68  20 73 61 76 65 73 20 79  |on which saves y|
0009a470  6f 75 20 73 6f 6d 65 20  77 6f 72 6b 2e 00 00 00  |ou some work....|
0009a480  44 41 54 41 67 01 00 00  73 70 72 69 74 65 5f 61  |DATAg...sprite_a|
0009a490  72 65 61 5f 72 65 61 64  69 6e 66 6f 0a 53 79 6e  |rea_readinfo.Syn|
0009a4a0  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
0009a4b0  2a 73 70 72 69 74 65 5f  61 72 65 61 5f 72 65 61  |*sprite_area_rea|
0009a4c0  64 69 6e 66 6f 20 28 3c  73 70 72 69 74 65 5f 61  |dinfo (<sprite_a|
0009a4d0  72 65 61 3e 20 2a 61 72  65 61 2c 20 73 70 72 69  |rea> *area, spri|
0009a4e0  74 65 5f 61 72 65 61 20  2a 72 65 73 75 6c 74 29  |te_area *result)|
0009a4f0  3b 0a 48 65 61 64 65 72  3a 09 3c 73 70 72 69 74  |;.Header:.<sprit|
0009a500  65 2e 68 3d 3e 73 70 72  69 74 65 5f 68 3e 0a 0a  |e.h=>sprite_h>..|
0009a510  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
0009a520  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
0009a530  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
0009a540  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 61  |his function rea|
0009a550  64 73 20 61 6c 6c 20 74  68 65 20 69 6e 66 6f 72  |ds all the infor|
0009a560  6d 61 74 69 6f 6e 20 63  6f 6e 74 61 69 6e 65 64  |mation contained|
0009a570  20 69 6e 20 74 68 65 20  63 6f 6e 74 72 6f 6c 20  | in the control |
0009a580  62 6c 6f 63 6b 20 6f 66  20 74 68 65 20 73 70 72  |block of the spr|
0009a590  69 74 65 20 61 72 65 61  20 70 6f 69 6e 74 65 64  |ite area pointed|
0009a5a0  20 74 6f 20 62 79 20 2f  61 72 65 61 2f 2c 20 61  | to by /area/, a|
0009a5b0  6e 64 20 70 6c 61 63 65  73 20 69 74 20 69 6e 20  |nd places it in |
0009a5c0  74 68 65 20 73 70 72 69  74 65 20 61 72 65 61 20  |the sprite area |
0009a5d0  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 2f 72  |pointed to by /r|
0009a5e0  65 73 75 6c 74 2f 2e 00  44 41 54 41 f5 02 00 00  |esult/..DATA....|
0009a5f0  73 70 72 69 74 65 5f 70  75 74 5f 67 72 65 79 73  |sprite_put_greys|
0009a600  63 61 6c 65 64 0a 53 79  6e 74 61 78 3a 09 09 3c  |caled.Syntax:..<|
0009a610  6f 73 5f 65 72 72 6f 72  3e 20 2a 73 70 72 69 74  |os_error> *sprit|
0009a620  65 5f 70 75 74 5f 67 72  65 79 73 63 61 6c 65 64  |e_put_greyscaled|
0009a630  20 28 3c 73 70 72 69 74  65 5f 61 72 65 61 3e 20  | (<sprite_area> |
0009a640  2a 61 72 65 61 2c 20 3c  73 70 72 69 74 65 5f 69  |*area, <sprite_i|
0009a650  64 3e 20 2a 73 70 72 2c  20 69 6e 74 20 78 2c 20  |d> *spr, int x, |
0009a660  69 6e 74 20 79 2c 20 3c  73 70 72 69 74 65 5f 66  |int y, <sprite_f|
0009a670  61 63 74 6f 72 73 3e 20  2a 66 61 63 74 2c 20 3c  |actors> *fact, <|
0009a680  73 70 72 69 74 65 5f 70  69 78 74 72 61 6e 73 3e  |sprite_pixtrans>|
0009a690  20 2a 70 69 78 74 29 3b  0a 48 65 61 64 65 72 3a  | *pixt);.Header:|
0009a6a0  09 09 3c 73 70 72 69 74  65 2e 68 3d 3e 73 70 72  |..<sprite.h=>spr|
0009a6b0  69 74 65 5f 68 3e 0a 0a  52 65 74 75 72 6e 73 3a  |ite_h>..Returns:|
0009a6c0  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
0009a6d0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
0009a6e0  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
0009a6f0  74 69 6f 6e 20 69 73 20  73 69 6d 69 6c 61 72 20  |tion is similar |
0009a700  74 6f 20 3c 73 70 72 69  74 65 5f 70 75 74 5f 73  |to <sprite_put_s|
0009a710  63 61 6c 65 64 3e 2c 20  65 78 63 65 70 74 20 74  |caled>, except t|
0009a720  68 61 74 20 69 74 20 61  6e 74 69 2d 61 6c 69 61  |hat it anti-alia|
0009a730  73 65 73 20 74 68 65 20  73 70 72 69 74 65 20 61  |ses the sprite a|
0009a740  73 20 69 74 20 73 63 61  6c 65 73 20 69 74 2e 20  |s it scales it. |
0009a750  54 68 65 20 73 70 72 69  74 65 20 6d 75 73 74 20  |The sprite must |
0009a760  68 61 76 65 20 62 65 65  6e 20 64 65 66 69 6e 65  |have been define|
0009a770  64 20 69 6e 20 61 20 31  36 20 63 6f 6c 6f 75 72  |d in a 16 colour|
0009a780  20 6d 6f 64 65 2c 20 61  6e 64 20 74 68 65 20 70  | mode, and the p|
0009a790  61 6c 65 74 74 65 20 6d  75 73 74 20 62 65 20 61  |alette must be a|
0009a7a0  20 6c 69 6e 65 61 72 20  67 72 65 79 2d 73 63 61  | linear grey-sca|
0009a7b0  6c 65 2e 0a 0a 54 68 69  73 20 63 61 6c 6c 20 69  |le...This call i|
0009a7c0  73 20 73 6c 6f 77 20 61  6e 64 20 73 68 6f 75 6c  |s slow and shoul|
0009a7d0  64 20 6f 6e 6c 79 20 62  65 20 75 73 65 64 20 77  |d only be used w|
0009a7e0  68 65 6e 20 74 68 65 20  71 75 61 6c 69 74 79 20  |hen the quality |
0009a7f0  69 73 20 6d 6f 72 65 20  69 6d 70 6f 72 74 61 6e  |is more importan|
0009a800  74 20 74 68 61 6e 20 73  70 65 65 64 2e 20 49 66  |t than speed. If|
0009a810  20 74 68 69 73 20 71 75  61 6c 69 74 79 20 69 73  | this quality is|
0009a820  20 6e 65 65 64 65 64 20  66 6f 72 20 73 6f 6d 65  | needed for some|
0009a830  74 68 69 6e 67 20 74 68  61 74 20 77 69 6c 6c 20  |thing that will |
0009a840  62 65 20 72 65 64 72 61  77 6e 20 6d 6f 72 65 20  |be redrawn more |
0009a850  74 68 61 6e 20 6f 6e 63  65 2c 20 69 74 20 69 73  |than once, it is|
0009a860  20 61 64 76 69 73 61 62  6c 65 20 74 6f 20 72 65  | advisable to re|
0009a870  64 72 61 77 20 69 74 20  6f 6e 63 65 20 69 6e 74  |draw it once int|
0009a880  6f 20 61 6e 6f 74 68 65  72 20 73 70 72 69 74 65  |o another sprite|
0009a890  2c 20 75 73 69 6e 67 20  3c 73 70 72 69 74 65 5f  |, using <sprite_|
0009a8a0  6f 75 74 70 75 74 74 6f  73 70 72 69 74 65 3e 2c  |outputtosprite>,|
0009a8b0  20 61 6e 64 20 74 68 65  6e 20 72 65 64 72 61 77  | and then redraw|
0009a8c0  20 74 6f 20 73 63 72 65  65 6e 20 75 73 69 6e 67  | to screen using|
0009a8d0  20 74 68 69 73 20 73 70  72 69 74 65 2e 00 00 00  | this sprite....|
0009a8e0  44 41 54 41 1b 02 00 00  73 70 72 69 74 65 5f 70  |DATA....sprite_p|
0009a8f0  75 74 5f 6d 61 73 6b 5f  67 69 76 65 6e 0a 53 79  |ut_mask_given.Sy|
0009a900  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
0009a910  20 2a 73 70 72 69 74 65  5f 70 75 74 5f 6d 61 73  | *sprite_put_mas|
0009a920  6b 5f 67 69 76 65 6e 20  28 3c 73 70 72 69 74 65  |k_given (<sprite|
0009a930  5f 61 72 65 61 3e 20 2a  61 72 65 61 2c 20 3c 73  |_area> *area, <s|
0009a940  70 72 69 74 65 5f 69 64  3e 20 2a 73 70 72 2c 20  |prite_id> *spr, |
0009a950  69 6e 74 20 78 2c 20 69  6e 74 20 79 29 3b 0a 48  |int x, int y);.H|
0009a960  65 61 64 65 72 3a 09 3c  73 70 72 69 74 65 2e 68  |eader:.<sprite.h|
0009a970  3d 3e 73 70 72 69 74 65  5f 68 3e 0a 0a 52 65 74  |=>sprite_h>..Ret|
0009a980  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
0009a990  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
0009a9a0  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
0009a9b0  20 66 75 6e 63 74 69 6f  6e 20 70 6c 6f 74 73 20  | function plots |
0009a9c0  61 20 73 70 72 69 74 65  20 6d 61 73 6b 20 69 6e  |a sprite mask in|
0009a9d0  20 74 68 65 20 63 75 72  72 65 6e 74 20 62 61 63  | the current bac|
0009a9e0  6b 67 72 6f 75 6e 64 20  67 72 61 70 68 69 63 73  |kground graphics|
0009a9f0  20 63 6f 6c 6f 75 72 20  61 6e 64 20 61 63 74 69  | colour and acti|
0009aa00  6f 6e 20 28 73 65 74 20  75 73 69 6e 67 20 3c 6f  |on (set using <o|
0009aa10  73 5f 67 63 6f 6c 3e 29  2c 20 61 74 20 7b 2f 7d  |s_gcol>), at {/}|
0009aa20  28 78 2c 79 29 7b 2f 7d  2e 20 41 6c 6c 20 31 20  |(x,y){/}. All 1 |
0009aa30  62 69 74 73 20 69 6e 20  74 68 65 20 6d 61 73 6b  |bits in the mask|
0009aa40  20 61 72 65 20 70 6c 6f  74 74 65 64 2c 20 30 20  | are plotted, 0 |
0009aa50  62 69 74 73 20 61 72 65  20 6e 6f 74 2e 20 49 66  |bits are not. If|
0009aa60  20 74 68 65 20 73 70 65  63 69 66 69 65 64 20 73  | the specified s|
0009aa70  70 72 69 74 65 20 68 61  73 20 6e 6f 20 6d 61 73  |prite has no mas|
0009aa80  6b 2c 20 61 20 72 65 63  74 61 6e 67 6c 65 20 74  |k, a rectangle t|
0009aa90  68 65 20 73 69 7a 65 20  6f 66 20 74 68 65 20 73  |he size of the s|
0009aaa0  70 72 69 74 65 20 69 73  20 70 6c 6f 74 74 65 64  |prite is plotted|
0009aab0  20 69 6e 73 74 65 61 64  2e 20 54 68 69 73 20 66  | instead. This f|
0009aac0  75 6e 63 74 69 6f 6e 20  69 73 20 65 71 75 69 76  |unction is equiv|
0009aad0  61 6c 65 6e 74 20 74 6f  20 3c 4f 53 5f 53 70 72  |alent to <OS_Spr|
0009aae0  69 74 65 4f 70 3d 3e 53  57 49 3a 4f 53 5f 53 70  |iteOp=>SWI:OS_Sp|
0009aaf0  72 69 74 65 4f 70 3e 20  34 39 2e 00 44 41 54 41  |riteOp> 49..DATA|
0009ab00  21 02 00 00 73 70 72 69  74 65 5f 70 75 74 5f 6d  |!...sprite_put_m|
0009ab10  61 73 6b 5f 73 63 61 6c  65 64 0a 53 79 6e 74 61  |ask_scaled.Synta|
0009ab20  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 73  |x:.<os_error> *s|
0009ab30  70 72 69 74 65 5f 70 75  74 5f 6d 61 73 6b 5f 73  |prite_put_mask_s|
0009ab40  63 61 6c 65 64 20 28 3c  73 70 72 69 74 65 5f 61  |caled (<sprite_a|
0009ab50  72 65 61 3e 20 2a 61 72  65 61 2c 20 3c 73 70 72  |rea> *area, <spr|
0009ab60  69 74 65 5f 69 64 3e 20  2a 73 70 72 2c 20 69 6e  |ite_id> *spr, in|
0009ab70  74 20 78 2c 20 69 6e 74  20 79 2c 20 3c 73 70 72  |t x, int y, <spr|
0009ab80  69 74 65 5f 66 61 63 74  6f 72 73 3e 20 2a 66 61  |ite_factors> *fa|
0009ab90  63 74 29 3b 0a 48 65 61  64 65 72 3a 09 3c 73 70  |ct);.Header:.<sp|
0009aba0  72 69 74 65 2e 68 3d 3e  73 70 72 69 74 65 5f 68  |rite.h=>sprite_h|
0009abb0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
0009abc0  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
0009abd0  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
0009abe0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0009abf0  70 6c 6f 74 73 20 61 20  73 70 72 69 74 65 20 6d  |plots a sprite m|
0009ac00  61 73 6b 20 69 6e 20 74  68 65 20 63 75 72 72 65  |ask in the curre|
0009ac10  6e 74 20 62 61 63 6b 67  72 6f 75 6e 64 20 67 72  |nt background gr|
0009ac20  61 70 68 69 63 73 20 63  6f 6c 6f 75 72 20 61 6e  |aphics colour an|
0009ac30  64 20 61 63 74 69 6f 6e  20 28 73 65 74 20 75 73  |d action (set us|
0009ac40  69 6e 67 20 3c 6f 73 5f  67 63 6f 6c 3e 29 20 61  |ing <os_gcol>) a|
0009ac50  74 20 7b 2f 7d 28 78 2c  79 29 7b 2f 7d 2e 20 41  |t {/}(x,y){/}. A|
0009ac60  6c 6c 20 31 20 62 69 74  73 20 69 6e 20 74 68 65  |ll 1 bits in the|
0009ac70  20 6d 61 73 6b 20 61 72  65 20 70 6c 6f 74 74 65  | mask are plotte|
0009ac80  64 2c 20 30 20 62 69 74  73 20 61 72 65 20 6e 6f  |d, 0 bits are no|
0009ac90  74 2e 20 54 68 65 20 6d  61 73 6b 20 69 73 20 73  |t. The mask is s|
0009aca0  63 61 6c 65 64 20 61 63  63 6f 72 64 69 6e 67 20  |caled according |
0009acb0  74 6f 20 74 68 65 20 73  63 61 6c 65 64 20 66 61  |to the scaled fa|
0009acc0  63 74 6f 72 73 20 70 6f  69 6e 74 65 64 20 74 6f  |ctors pointed to|
0009acd0  20 62 79 20 2f 66 61 63  74 2f 2e 20 54 68 69 73  | by /fact/. This|
0009ace0  20 66 75 6e 63 74 69 6f  6e 20 69 73 20 65 71 75  | function is equ|
0009acf0  69 76 61 6c 65 6e 74 20  74 6f 20 3c 4f 53 5f 53  |ivalent to <OS_S|
0009ad00  70 72 69 74 65 4f 70 3d  3e 53 57 49 3a 4f 53 5f  |priteOp=>SWI:OS_|
0009ad10  53 70 72 69 74 65 4f 70  3e 20 35 30 2e 00 00 00  |SpriteOp> 50....|
0009ad20  44 41 54 41 fc 01 00 00  73 70 72 69 74 65 5f 70  |DATA....sprite_p|
0009ad30  75 74 5f 63 68 61 72 5f  73 63 61 6c 65 64 0a 53  |ut_char_scaled.S|
0009ad40  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
0009ad50  3e 20 2a 73 70 72 69 74  65 5f 70 75 74 5f 63 68  |> *sprite_put_ch|
0009ad60  61 72 5f 73 63 61 6c 65  64 20 28 63 68 61 72 20  |ar_scaled (char |
0009ad70  63 2c 20 69 6e 74 20 78  2c 20 69 6e 74 20 79 2c  |c, int x, int y,|
0009ad80  20 3c 73 70 72 69 74 65  5f 66 61 63 74 6f 72 73  | <sprite_factors|
0009ad90  3e 20 2a 66 61 63 74 29  3b 0a 48 65 61 64 65 72  |> *fact);.Header|
0009ada0  3a 09 3c 73 70 72 69 74  65 2e 68 3d 3e 73 70 72  |:.<sprite.h=>spr|
0009adb0  69 74 65 5f 68 3e 0a 0a  52 65 74 75 72 6e 73 3a  |ite_h>..Returns:|
0009adc0  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
0009add0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
0009ade0  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
0009adf0  74 69 6f 6e 20 70 6c 6f  74 73 20 61 20 74 65 78  |tion plots a tex|
0009ae00  74 20 63 68 61 72 61 63  74 65 72 2c 20 77 68 6f  |t character, who|
0009ae10  73 65 20 63 68 61 72 61  63 74 65 72 20 63 6f 64  |se character cod|
0009ae20  65 20 69 73 20 67 69 76  65 6e 20 69 6e 20 2f 63  |e is given in /c|
0009ae30  2f 2c 20 6f 6e 20 74 68  65 20 73 63 72 65 65 6e  |/, on the screen|
0009ae40  20 69 6e 20 74 68 65 20  63 75 72 72 65 6e 74 20  | in the current |
0009ae50  67 72 61 70 68 69 63 73  20 66 6f 72 65 67 72 6f  |graphics foregro|
0009ae60  75 6e 64 20 63 6f 6c 6f  75 72 20 61 6e 64 20 61  |und colour and a|
0009ae70  63 74 69 6f 6e 2c 20 77  69 74 68 20 69 74 73 20  |ction, with its |
0009ae80  62 6f 74 74 6f 6d 20 6c  65 66 74 20 61 74 20 7b  |bottom left at {|
0009ae90  2f 7d 28 78 2c 79 29 7b  2f 7d 2e 20 49 74 20 69  |/}(x,y){/}. It i|
0009aea0  73 20 73 63 61 6c 65 64  20 61 63 63 6f 72 64 69  |s scaled accordi|
0009aeb0  6e 67 20 74 6f 20 74 68  65 20 73 63 61 6c 69 6e  |ng to the scalin|
0009aec0  67 20 66 61 63 74 6f 72  73 20 67 69 76 65 6e 20  |g factors given |
0009aed0  62 79 20 2f 66 61 63 74  2f 2e 20 54 68 69 73 20  |by /fact/. This |
0009aee0  66 75 6e 63 74 69 6f 6e  20 69 73 20 65 71 75 69  |function is equi|
0009aef0  76 61 6c 65 6e 74 20 74  6f 20 3c 4f 53 5f 53 70  |valent to <OS_Sp|
0009af00  72 69 74 65 4f 70 3d 3e  53 57 49 3a 4f 53 5f 53  |riteOp=>SWI:OS_S|
0009af10  70 72 69 74 65 4f 70 3e  20 35 31 2e 44 41 54 41  |priteOp> 51.DATA|
0009af20  b4 01 00 00 73 70 72 69  74 65 5f 69 6e 73 65 72  |....sprite_inser|
0009af30  74 5f 63 6f 6c 75 6d 6e  0a 53 79 6e 74 61 78 3a  |t_column.Syntax:|
0009af40  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 73 70 72  |.<os_error> *spr|
0009af50  69 74 65 5f 69 6e 73 65  72 74 5f 63 6f 6c 75 6d  |ite_insert_colum|
0009af60  6e 20 28 3c 73 70 72 69  74 65 5f 61 72 65 61 3e  |n (<sprite_area>|
0009af70  20 2a 61 72 65 61 2c 20  3c 73 70 72 69 74 65 5f  | *area, <sprite_|
0009af80  69 64 3e 20 2a 73 70 72  2c 20 69 6e 74 20 63 6f  |id> *spr, int co|
0009af90  6c 75 6d 6e 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |lumn);.Header:.<|
0009afa0  73 70 72 69 74 65 2e 68  3d 3e 73 70 72 69 74 65  |sprite.h=>sprite|
0009afb0  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |_h>..Returns:.Po|
0009afc0  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
0009afd0  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
0009afe0  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
0009aff0  6e 20 69 6e 73 65 72 74  73 20 61 20 63 6f 6c 75  |n inserts a colu|
0009b000  6d 6e 20 69 6e 20 74 68  65 20 67 69 76 65 6e 20  |mn in the given |
0009b010  73 70 72 69 74 65 20 61  74 20 74 68 65 20 70 6f  |sprite at the po|
0009b020  73 69 74 69 6f 6e 20 69  64 65 6e 74 69 66 69 65  |sition identifie|
0009b030  64 2c 20 73 68 69 66 74  69 6e 67 20 61 6c 6c 20  |d, shifting all |
0009b040  63 6f 6c 75 6d 6e 73 20  61 66 74 65 72 20 69 74  |columns after it|
0009b050  20 28 69 66 20 61 6e 79  29 20 74 6f 20 74 68 65  | (if any) to the|
0009b060  20 72 69 67 68 74 2e 20  54 68 65 20 6c 65 66 74  | right. The left|
0009b070  2d 68 61 6e 64 20 63 6f  6c 75 6d 6e 20 69 73 20  |-hand column is |
0009b080  6e 75 6d 62 65 72 65 64  20 7a 65 72 6f 2e 20 54  |numbered zero. T|
0009b090  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 69 73 20  |his function is |
0009b0a0  65 71 75 69 76 61 6c 65  6e 74 20 74 6f 20 3c 4f  |equivalent to <O|
0009b0b0  53 5f 53 70 72 69 74 65  4f 70 3d 3e 53 57 49 3a  |S_SpriteOp=>SWI:|
0009b0c0  4f 53 5f 53 70 72 69 74  65 4f 70 3e 20 34 35 2e  |OS_SpriteOp> 45.|
0009b0d0  44 41 54 41 90 01 00 00  73 70 72 69 74 65 5f 64  |DATA....sprite_d|
0009b0e0  65 6c 65 74 65 5f 63 6f  6c 75 6d 6e 0a 53 79 6e  |elete_column.Syn|
0009b0f0  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
0009b100  2a 73 70 72 69 74 65 5f  64 65 6c 65 74 65 5f 63  |*sprite_delete_c|
0009b110  6f 6c 75 6d 6e 20 28 3c  73 70 72 69 74 65 5f 61  |olumn (<sprite_a|
0009b120  72 65 61 3e 20 2a 61 72  65 61 2c 20 3c 73 70 72  |rea> *area, <spr|
0009b130  69 74 65 5f 69 64 3e 20  2a 73 70 72 2c 20 69 6e  |ite_id> *spr, in|
0009b140  74 20 63 6f 6c 75 6d 6e  29 3b 0a 48 65 61 64 65  |t column);.Heade|
0009b150  72 3a 09 3c 73 70 72 69  74 65 2e 68 3d 3e 73 70  |r:.<sprite.h=>sp|
0009b160  72 69 74 65 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |rite_h>..Returns|
0009b170  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
0009b180  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
0009b190  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
0009b1a0  63 74 69 6f 6e 20 64 65  6c 65 74 65 73 20 61 20  |ction deletes a |
0009b1b0  63 6f 6c 75 6d 6e 20 69  6e 20 74 68 65 20 73 70  |column in the sp|
0009b1c0  72 69 74 65 20 61 74 20  74 68 65 20 70 6f 73 69  |rite at the posi|
0009b1d0  74 69 6f 6e 20 69 64 65  6e 74 69 66 69 65 64 20  |tion identified |
0009b1e0  28 74 68 65 20 6c 65 66  74 20 63 6f 6c 75 6d 6e  |(the left column|
0009b1f0  20 69 73 20 72 6f 77 20  30 29 2c 20 73 68 69 66  | is row 0), shif|
0009b200  74 69 6e 67 20 61 6c 6c  20 72 6f 77 73 20 61 66  |ting all rows af|
0009b210  74 65 72 20 69 74 20 28  69 66 20 61 6e 79 29 20  |ter it (if any) |
0009b220  6c 65 66 74 20 6f 6e 65  2e 20 49 74 20 69 73 20  |left one. It is |
0009b230  65 71 75 69 76 61 6c 65  6e 74 20 74 6f 20 3c 4f  |equivalent to <O|
0009b240  53 5f 53 70 72 69 74 65  4f 70 3d 3e 53 57 49 3a  |S_SpriteOp=>SWI:|
0009b250  6f 73 5f 73 70 72 69 74  65 6f 70 3e 20 34 36 2e  |os_spriteop> 46.|
0009b260  44 41 54 41 5f 01 00 00  53 70 72 69 74 65 5f 4c  |DATA_...Sprite_L|
0009b270  6f 61 64 46 69 6c 65 73  0a 53 79 6e 74 61 78 3a  |oadFiles.Syntax:|
0009b280  09 3c 73 70 72 69 74 65  5f 61 72 65 61 3e 20 53  |.<sprite_area> S|
0009b290  70 72 69 74 65 5f 4c 6f  61 64 46 69 6c 65 73 20  |prite_LoadFiles |
0009b2a0  28 69 6e 74 20 6e 75 6d  2c 20 2e 2e 2e 29 3b 0a  |(int num, ...);.|
0009b2b0  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
0009b2c0  3a 53 70 72 69 74 65 2e  68 3d 3e 53 70 72 69 74  |:Sprite.h=>Sprit|
0009b2d0  65 5f 44 4c 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |e_DL>..Returns:.|
0009b2e0  50 6f 69 6e 74 65 72 20  74 6f 20 73 70 72 69 74  |Pointer to sprit|
0009b2f0  65 20 61 72 65 61 20 63  72 65 61 74 65 64 2e 0a  |e area created..|
0009b300  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 61  |.This function a|
0009b310  6c 6c 6f 63 61 74 65 73  20 73 70 61 63 65 20 66  |llocates space f|
0009b320  6f 72 20 61 20 73 70 72  69 74 65 20 61 72 65 61  |or a sprite area|
0009b330  20 77 69 74 68 20 3c 6d  61 6c 6c 6f 63 3e 2c 20  | with <malloc>, |
0009b340  69 6e 69 74 69 61 6c 69  73 65 73 20 69 74 20 61  |initialises it a|
0009b350  6e 64 20 6c 6f 61 64 73  20 2f 6e 75 6d 2f 20 73  |nd loads /num/ s|
0009b360  70 72 69 74 65 20 66 69  6c 65 73 20 69 6e 74 6f  |prite files into|
0009b370  20 69 74 2c 20 61 6c 6c  20 6f 66 20 77 68 6f 73  | it, all of whos|
0009b380  65 20 6e 61 6d 65 73 20  61 72 65 20 70 61 73 73  |e names are pass|
0009b390  65 64 20 61 73 20 70 61  72 61 6d 65 74 65 72 73  |ed as parameters|
0009b3a0  20 69 6e 20 74 68 65 20  76 61 72 69 61 62 6c 65  | in the variable|
0009b3b0  20 61 72 67 75 6d 65 6e  74 20 6c 69 73 74 2e 00  | argument list..|
0009b3c0  44 41 54 41 ed 00 00 00  53 70 72 69 74 65 5f 52  |DATA....Sprite_R|
0009b3d0  65 6d 6f 76 65 4d 61 73  6b 0a 53 79 6e 74 61 78  |emoveMask.Syntax|
0009b3e0  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 53 70  |:.<os_error> *Sp|
0009b3f0  72 69 74 65 5f 52 65 6d  6f 76 65 4d 61 73 6b 20  |rite_RemoveMask |
0009b400  28 3c 73 70 72 69 74 65  5f 61 72 65 61 3e 20 61  |(<sprite_area> a|
0009b410  72 65 61 2c 20 63 68 61  72 20 2a 6e 61 6d 65 29  |rea, char *name)|
0009b420  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
0009b430  69 62 3a 53 70 72 69 74  65 2e 68 3d 3e 53 70 72  |ib:Sprite.h=>Spr|
0009b440  69 74 65 5f 44 4c 3e 0a  0a 52 65 74 75 72 6e 73  |ite_DL>..Returns|
0009b450  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
0009b460  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
0009b470  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
0009b480  63 74 69 6f 6e 20 72 65  6d 6f 76 65 73 20 74 68  |ction removes th|
0009b490  65 20 6d 61 73 6b 20 66  72 6f 6d 20 74 68 65 20  |e mask from the |
0009b4a0  67 69 76 65 6e 20 73 70  72 69 74 65 2e 00 00 00  |given sprite....|
0009b4b0  44 41 54 41 b1 01 00 00  53 70 72 69 74 65 5f 49  |DATA....Sprite_I|
0009b4c0  6e 73 65 72 74 43 6f 6c  75 6d 6e 0a 53 79 6e 74  |nsertColumn.Synt|
0009b4d0  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
0009b4e0  53 70 72 69 74 65 5f 49  6e 73 65 72 74 43 6f 6c  |Sprite_InsertCol|
0009b4f0  75 6d 6e 20 28 3c 73 70  72 69 74 65 5f 61 72 65  |umn (<sprite_are|
0009b500  61 3e 20 61 72 65 61 2c  20 63 68 61 72 20 2a 6e  |a> area, char *n|
0009b510  61 6d 65 2c 20 69 6e 74  20 70 6f 73 29 3b 0a 48  |ame, int pos);.H|
0009b520  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
0009b530  53 70 72 69 74 65 2e 68  3d 3e 53 70 72 69 74 65  |Sprite.h=>Sprite|
0009b540  5f 44 4c 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |_DL>..Returns:.P|
0009b550  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
0009b560  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
0009b570  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
0009b580  6f 6e 20 69 6e 73 65 72  74 73 20 61 20 63 6f 6c  |on inserts a col|
0009b590  75 6d 6e 20 69 6e 20 74  68 65 20 67 69 76 65 6e  |umn in the given|
0009b5a0  20 73 70 72 69 74 65 20  61 74 20 74 68 65 20 70  | sprite at the p|
0009b5b0  6f 73 69 74 69 6f 6e 20  69 64 65 6e 74 69 66 69  |osition identifi|
0009b5c0  65 64 2c 20 73 68 69 66  74 69 6e 67 20 61 6c 6c  |ed, shifting all|
0009b5d0  20 63 6f 6c 75 6d 6e 73  20 61 66 74 65 72 20 69  | columns after i|
0009b5e0  74 20 28 69 66 20 61 6e  79 29 20 74 6f 20 74 68  |t (if any) to th|
0009b5f0  65 20 72 69 67 68 74 2e  20 54 68 65 20 6c 65 66  |e right. The lef|
0009b600  74 2d 68 61 6e 64 20 63  6f 6c 75 6d 6e 20 69 73  |t-hand column is|
0009b610  20 6e 75 6d 62 65 72 65  64 20 7a 65 72 6f 2e 20  | numbered zero. |
0009b620  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 69 73  |This function is|
0009b630  20 65 71 75 69 76 61 6c  65 6e 74 20 74 6f 20 3c  | equivalent to <|
0009b640  4f 53 5f 53 70 72 69 74  65 4f 70 3d 3e 53 57 49  |OS_SpriteOp=>SWI|
0009b650  3a 4f 53 5f 53 70 72 69  74 65 4f 70 3e 20 34 35  |:OS_SpriteOp> 45|
0009b660  2e 00 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |....DIR$,...,...|
0009b670  90 b6 09 00 46 ff ff ff  15 a0 55 26 b7 00 00 00  |....F.....U&....|
0009b680  13 00 00 00 00 00 00 00  4f 4e 4c 59 00 00 00 00  |........ONLY....|
0009b690  44 41 54 41 b7 00 00 00  53 50 52 5f 4f 4e 4c 59  |DATA....SPR_ONLY|
0009b6a0  0a 54 68 69 73 20 6d 61  63 72 6f 20 69 73 20 64  |.This macro is d|
0009b6b0  65 66 69 6e 65 64 20 69  6e 20 3c 54 69 6d 73 4c  |efined in <TimsL|
0009b6c0  69 62 3a 49 63 6f 6e 2e  68 3d 3e 49 63 6f 6e 5f  |ib:Icon.h=>Icon_|
0009b6d0  54 4c 3e 2e 20 49 74 20  69 73 20 74 68 65 20 76  |TL>. It is the v|
0009b6e0  61 6c 75 65 20 74 68 65  20 72 65 74 75 72 6e 65  |alue the returne|
0009b6f0  64 20 62 79 20 3c 49 43  4f 4e 5f 54 59 50 45 3e  |d by <ICON_TYPE>|
0009b700  20 77 68 65 6e 20 74 68  65 20 69 63 6f 6e 20 69  | when the icon i|
0009b710  6e 20 71 75 65 73 74 69  6f 6e 20 69 73 20 61 20  |n question is a |
0009b720  27 73 70 72 69 74 65 20  6f 6e 6c 79 27 20 69 63  |'sprite only' ic|
0009b730  6f 6e 2e 20 49 74 20 69  73 20 64 65 66 69 6e 65  |on. It is define|
0009b740  64 20 61 73 20 32 2e 00  44 41 54 41 ab 00 00 00  |d as 2..DATA....|
0009b750  73 71 72 74 0a 53 79 6e  74 61 78 3a 09 64 6f 75  |sqrt.Syntax:.dou|
0009b760  62 6c 65 20 73 71 72 74  20 28 64 6f 75 62 6c 65  |ble sqrt (double|
0009b770  20 78 29 3b 0a 48 65 61  64 65 72 3a 09 3c 6d 61  | x);.Header:.<ma|
0009b780  74 68 2e 68 3d 3e 6d 61  74 68 3e 0a 0a 52 65 74  |th.h=>math>..Ret|
0009b790  75 72 6e 73 3a 09 54 68  65 20 73 71 75 61 72 65  |urns:.The square|
0009b7a0  20 72 6f 6f 74 20 6f 66  20 78 2e 0a 0a 54 68 69  | root of x...Thi|
0009b7b0  73 20 66 75 6e 63 74 69  6f 6e 20 63 61 6c 63 75  |s function calcu|
0009b7c0  6c 61 74 65 73 20 74 68  65 20 73 71 75 61 72 65  |lates the square|
0009b7d0  20 72 6f 6f 74 20 6f 66  20 78 2e 20 78 20 6d 75  | root of x. x mu|
0009b7e0  73 74 20 6e 6f 74 20 62  65 20 6e 65 67 61 74 69  |st not be negati|
0009b7f0  76 65 2e 00 44 41 54 41  86 01 00 00 73 72 61 6e  |ve..DATA....sran|
0009b800  64 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 73  |d.Syntax:.void s|
0009b810  72 61 6e 64 20 28 75 6e  73 69 67 6e 65 64 20 69  |rand (unsigned i|
0009b820  6e 74 20 73 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |nt s);.Header:.<|
0009b830  73 74 64 6c 69 62 2e 68  3d 3e 73 74 64 6c 69 62  |stdlib.h=>stdlib|
0009b840  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
0009b850  20 73 65 65 64 73 20 74  68 65 20 70 73 75 65 64  | seeds the psued|
0009b860  6f 2d 72 61 6e 64 6f 6d  20 6e 75 6d 62 65 72 20  |o-random number |
0009b870  67 65 6e 65 72 61 74 69  6e 67 20 66 75 6e 63 74  |generating funct|
0009b880  69 6f 6e 20 77 69 74 68  20 74 68 65 20 76 61 6c  |ion with the val|
0009b890  75 65 20 69 6e 20 2f 73  2f 2e 20 54 68 65 20 73  |ue in /s/. The s|
0009b8a0  65 65 64 20 64 65 66 69  6e 65 73 20 77 68 61 74  |eed defines what|
0009b8b0  20 73 65 71 75 65 6e 63  65 20 6f 66 20 6e 75 6d  | sequence of num|
0009b8c0  62 65 72 73 20 3c 72 61  6e 64 3e 20 77 69 6c 6c  |bers <rand> will|
0009b8d0  20 67 69 76 65 20 2d 20  61 66 74 65 72 20 63 61  | give - after ca|
0009b8e0  6c 6c 69 6e 67 20 2f 73  72 61 6e 64 2f 20 77 69  |lling /srand/ wi|
0009b8f0  74 68 20 74 68 65 20 73  61 6d 65 20 76 61 6c 75  |th the same valu|
0009b900  65 20 74 68 65 20 73 61  6d 65 20 73 65 71 75 65  |e the same seque|
0009b910  6e 63 65 20 77 69 6c 6c  20 62 65 20 67 65 6e 65  |nce will be gene|
0009b920  72 61 74 65 64 2e 20 41  74 20 74 68 65 20 73 74  |rated. At the st|
0009b930  61 72 74 20 6f 66 20 65  78 65 63 75 74 69 6f 6e  |art of execution|
0009b940  20 74 68 65 20 73 65 71  75 65 6e 63 65 20 67 65  | the sequence ge|
0009b950  6e 65 72 61 74 65 64 20  69 73 20 61 73 20 69 66  |nerated is as if|
0009b960  20 73 72 61 6e 64 28 31  29 20 68 61 64 20 62 65  | srand(1) had be|
0009b970  65 6e 20 63 61 6c 6c 65  64 2e 00 00 44 41 54 41  |en called...DATA|
0009b980  a4 01 00 00 73 73 63 61  6e 66 0a 53 79 6e 74 61  |....sscanf.Synta|
0009b990  78 3a 09 69 6e 74 20 73  73 63 61 6e 66 20 28 63  |x:.int sscanf (c|
0009b9a0  68 61 72 20 2a 69 6e 2c  20 63 68 61 72 20 2a 66  |har *in, char *f|
0009b9b0  6f 72 6d 61 74 2c 20 2e  2e 2e 29 3b 0a 48 65 61  |ormat, ...);.Hea|
0009b9c0  64 65 72 3a 09 3c 73 74  64 69 6f 2e 68 3d 3e 73  |der:.<stdio.h=>s|
0009b9d0  74 64 69 6f 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |tdio>..Returns:.|
0009b9e0  54 68 65 20 6e 75 6d 62  65 72 20 6f 66 20 73 75  |The number of su|
0009b9f0  63 63 65 73 73 66 75 6c  20 69 6e 70 75 74 73 20  |ccessful inputs |
0009ba00  6f 72 20 3c 45 4f 46 3e  20 69 66 20 74 68 65 72  |or <EOF> if ther|
0009ba10  65 20 77 61 73 20 61 6e  20 69 6e 70 75 74 20 65  |e was an input e|
0009ba20  72 72 6f 72 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |rror...This func|
0009ba30  74 69 6f 6e 20 72 65 61  64 73 20 69 6e 70 75 74  |tion reads input|
0009ba40  20 66 72 6f 6d 20 74 68  65 20 73 74 72 69 6e 67  | from the string|
0009ba50  20 70 6f 69 6e 74 65 64  20 74 6f 20 62 79 20 2f  | pointed to by /|
0009ba60  69 6e 2f 20 75 6e 64 65  72 20 63 6f 6e 74 72 6f  |in/ under contro|
0009ba70  6c 20 6f 66 20 74 68 65  20 3c 66 6f 72 6d 61 74  |l of the <format|
0009ba80  20 73 74 72 69 6e 67 3d  3e 73 66 6f 72 6d 5f 3e  | string=>sform_>|
0009ba90  2e 0a 0a 49 6e 20 6f 70  65 72 61 74 69 6f 6e 20  |...In operation |
0009baa0  69 74 20 69 73 20 73 69  6d 69 6c 61 72 20 74 6f  |it is similar to|
0009bab0  20 3c 66 73 63 61 6e 66  3e 2c 20 62 75 74 20 69  | <fscanf>, but i|
0009bac0  6e 70 75 74 20 69 73 20  72 65 61 64 20 66 72 6f  |nput is read fro|
0009bad0  6d 20 61 20 73 74 72 69  6e 67 20 69 6e 73 74 65  |m a string inste|
0009bae0  61 64 20 6f 66 20 61 20  73 74 72 65 61 6d 2e 20  |ad of a stream. |
0009baf0  54 68 65 20 65 6e 64 20  6f 66 20 74 68 65 20 73  |The end of the s|
0009bb00  74 72 69 6e 67 20 63 6f  75 6e 74 73 20 61 73 20  |tring counts as |
0009bb10  74 68 65 20 65 6e 64 20  6f 66 20 66 69 6c 65 2e  |the end of file.|
0009bb20  44 41 54 41 ed 00 00 00  73 74 64 61 72 67 2e 68  |DATA....stdarg.h|
0009bb30  0a 54 68 65 20 5c 3c 73  74 64 61 72 67 2e 68 3e  |.The \<stdarg.h>|
0009bb40  20 68 65 61 64 65 72 20  64 65 63 6c 61 72 65 73  | header declares|
0009bb50  20 74 68 72 65 65 20 66  75 6e 63 74 69 6f 6e 73  | three functions|
0009bb60  20 61 6e 64 20 6f 6e 65  20 74 79 70 65 20 66 6f  | and one type fo|
0009bb70  72 20 68 61 6e 64 6c 69  6e 67 20 76 61 72 69 61  |r handling varia|
0009bb80  62 6c 65 20 61 72 67 75  6d 65 6e 74 20 6c 69 73  |ble argument lis|
0009bb90  74 73 2e 0a 0a 46 75 6e  63 74 69 6f 6e 73 3a 0a  |ts...Functions:.|
0009bba0  0a 23 49 6e 64 65 6e 74  20 36 0a 23 54 61 62 6c  |.#Indent 6.#Tabl|
0009bbb0  65 20 31 20 31 34 0a 3c  76 61 5f 73 74 61 72 74  |e 1 14.<va_start|
0009bbc0  3e 0a 3c 76 61 5f 61 72  67 3e 0a 3c 76 61 5f 65  |>.<va_arg>.<va_e|
0009bbd0  6e 64 3e 0a 23 45 6e 64  54 61 62 6c 65 0a 0a 23  |nd>.#EndTable..#|
0009bbe0  49 6e 64 65 6e 74 20 30  0a 54 79 70 65 3a 0a 0a  |Indent 0.Type:..|
0009bbf0  23 49 6e 64 65 6e 74 20  36 0a 3c 76 61 5f 6c 69  |#Indent 6.<va_li|
0009bc00  73 74 3e 0a 23 49 6e 64  65 6e 74 20 30 00 00 00  |st>.#Indent 0...|
0009bc10  44 41 54 41 da 00 00 00  73 74 64 64 65 66 2e 68  |DATA....stddef.h|
0009bc20  0a 54 68 65 20 5c 3c 73  74 64 64 65 66 2e 68 3e  |.The \<stddef.h>|
0009bc30  20 68 65 61 64 65 72 20  64 65 63 6c 61 72 65 73  | header declares|
0009bc40  20 61 20 66 65 77 20 74  79 70 65 73 20 61 6e 64  | a few types and|
0009bc50  20 74 77 6f 20 6d 61 63  72 6f 73 2e 0a 0a 4d 61  | two macros...Ma|
0009bc60  63 72 6f 73 3a 0a 0a 23  49 6e 64 65 6e 74 20 35  |cros:..#Indent 5|
0009bc70  0a 23 54 61 62 6c 65 20  31 20 31 34 0a 3c 6f 66  |.#Table 1 14.<of|
0009bc80  66 73 65 74 6f 66 3e 0a  3c 4e 55 4c 4c 3e 0a 23  |fsetof>.<NULL>.#|
0009bc90  45 6e 64 54 61 62 6c 65  0a 0a 23 49 6e 64 65 6e  |EndTable..#Inden|
0009bca0  74 20 30 0a 54 79 70 65  73 3a 0a 0a 23 49 6e 64  |t 0.Types:..#Ind|
0009bcb0  65 6e 74 20 35 0a 23 54  61 62 6c 65 20 31 20 31  |ent 5.#Table 1 1|
0009bcc0  34 0a 3c 70 74 72 64 69  66 66 5f 74 3e 0a 3c 73  |4.<ptrdiff_t>.<s|
0009bcd0  69 7a 65 5f 74 3e 0a 3c  77 63 68 61 72 5f 74 3e  |ize_t>.<wchar_t>|
0009bce0  0a 23 45 6e 64 54 61 62  6c 65 00 00 44 41 54 41  |.#EndTable..DATA|
0009bcf0  af 00 00 00 73 74 64 65  72 72 0a 54 68 65 20 6d  |....stderr.The m|
0009bd00  61 63 72 6f 20 73 74 64  65 72 72 20 69 73 20 64  |acro stderr is d|
0009bd10  65 66 69 6e 65 64 20 69  6e 20 3c 73 74 64 69 6f  |efined in <stdio|
0009bd20  2e 68 3d 3e 73 74 64 69  6f 3e 20 61 6e 64 20 69  |.h=>stdio> and i|
0009bd30  73 20 61 20 70 6f 69 6e  74 65 72 20 74 6f 20 74  |s a pointer to t|
0009bd40  79 70 65 20 3c 46 49 4c  45 3e 2e 20 49 74 20 63  |ype <FILE>. It c|
0009bd50  61 6e 20 62 65 20 75 73  65 64 20 61 73 20 61 20  |an be used as a |
0009bd60  73 74 72 65 61 6d 20 66  6f 72 20 72 65 70 6f 72  |stream for repor|
0009bd70  74 69 6e 67 20 65 72 72  6f 72 73 20 69 6e 20 66  |ting errors in f|
0009bd80  75 6e 63 74 69 6f 6e 73  20 73 75 63 68 20 61 73  |unctions such as|
0009bd90  20 3c 66 70 72 69 6e 74  66 3e 2e 00 44 41 54 41  | <fprintf>..DATA|
0009bda0  c9 00 00 00 73 74 64 69  6e 0a 54 68 65 20 6d 61  |....stdin.The ma|
0009bdb0  63 72 6f 20 73 74 64 69  6e 20 69 73 20 64 65 66  |cro stdin is def|
0009bdc0  69 6e 65 64 20 69 6e 20  3c 73 74 64 69 6f 2e 68  |ined in <stdio.h|
0009bdd0  3d 3e 73 74 64 69 6f 3e  20 61 6e 64 20 69 73 20  |=>stdio> and is |
0009bde0  61 20 70 6f 69 6e 74 65  72 20 74 6f 20 74 79 70  |a pointer to typ|
0009bdf0  65 20 3c 46 49 4c 45 3e  2e 20 49 74 20 72 65 66  |e <FILE>. It ref|
0009be00  65 72 73 20 74 6f 20 74  68 65 20 73 74 61 6e 64  |ers to the stand|
0009be10  61 72 64 20 69 6e 70 75  74 20 73 74 72 65 61 6d  |ard input stream|
0009be20  20 28 6b 65 79 62 6f 61  72 64 20 62 79 20 64 65  | (keyboard by de|
0009be30  66 61 75 6c 74 29 20 61  6e 64 20 63 61 6e 20 62  |fault) and can b|
0009be40  65 20 75 73 65 64 20 69  6e 20 66 75 6e 63 74 69  |e used in functi|
0009be50  6f 6e 73 20 73 75 63 68  20 61 73 20 3c 66 73 63  |ons such as <fsc|
0009be60  61 6e 66 3e 2e 00 00 00  44 41 54 41 8c 02 00 00  |anf>....DATA....|
0009be70  73 74 64 69 6f 2e 68 0a  23 50 61 72 65 6e 74 20  |stdio.h.#Parent |
0009be80  61 6e 73 69 5f 0a 54 68  65 20 5c 3c 73 74 64 69  |ansi_.The \<stdi|
0009be90  6f 2e 68 5c 3e 20 68 65  61 64 65 72 20 64 65 63  |o.h\> header dec|
0009bea0  6c 61 72 65 73 20 6d 61  6e 79 20 66 75 6e 63 74  |lares many funct|
0009beb0  69 6f 6e 73 20 63 6f 6e  63 65 72 6e 65 64 20 77  |ions concerned w|
0009bec0  69 74 68 20 69 6e 70 75  74 20 61 6e 64 20 6f 75  |ith input and ou|
0009bed0  74 70 75 74 2e 20 49 6e  20 61 64 64 69 74 69 6f  |tput. In additio|
0009bee0  6e 2c 20 69 74 20 64 65  63 6c 61 72 65 73 20 74  |n, it declares t|
0009bef0  68 72 65 65 20 74 79 70  65 73 20 61 6e 64 20 61  |hree types and a|
0009bf00  20 6e 75 6d 62 65 72 20  6f 66 20 6d 61 63 72 6f  | number of macro|
0009bf10  73 2e 0a 0a 46 75 6e 63  74 69 6f 6e 73 3a 0a 0a  |s...Functions:..|
0009bf20  23 49 6e 64 65 6e 74 20  35 0a 23 54 61 62 6c 65  |#Indent 5.#Table|
0009bf30  20 33 20 32 33 0a 3c 46  69 6c 65 20 6f 70 65 72  | 3 23.<File oper|
0009bf40  61 74 69 6f 6e 73 3d 3e  66 69 6c 65 6f 70 5f 3e  |ations=>fileop_>|
0009bf50  0a 3c 46 69 6c 65 20 68  61 6e 64 6c 69 6e 67 3d  |.<File handling=|
0009bf60  3e 66 69 6c 65 68 6e 64  5f 3e 0a 3c 43 68 61 72  |>filehnd_>.<Char|
0009bf70  61 63 74 65 72 20 49 2f  4f 3d 3e 63 68 61 72 69  |acter I/O=>chari|
0009bf80  6f 5f 3e 0a 3c 46 6f 72  6d 61 74 74 65 64 20 49  |o_>.<Formatted I|
0009bf90  2f 4f 3d 3e 66 6f 72 6d  69 6f 5f 3e 0a 3c 53 74  |/O=>formio_>.<St|
0009bfa0  72 65 61 6d 20 49 2f 4f  3d 3e 73 74 72 65 61 6d  |ream I/O=>stream|
0009bfb0  69 6f 5f 3e 0a 3c 45 72  72 6f 72 20 68 61 6e 64  |io_>.<Error hand|
0009bfc0  6c 69 6e 67 3d 3e 65 72  72 68 6e 64 5f 3e 0a 23  |ling=>errhnd_>.#|
0009bfd0  45 6e 64 54 61 62 6c 65  0a 0a 23 49 6e 64 65 6e  |EndTable..#Inden|
0009bfe0  74 20 30 0a 4d 61 63 72  6f 73 3a 0a 0a 23 49 6e  |t 0.Macros:..#In|
0009bff0  64 65 6e 74 20 35 0a 23  54 61 62 6c 65 20 36 20  |dent 5.#Table 6 |
0009c000  31 34 0a 3c 4e 55 4c 4c  3e 0a 3c 5f 49 4f 46 42  |14.<NULL>.<_IOFB|
0009c010  46 3e 0a 3c 5f 49 4f 4c  42 46 3e 0a 3c 5f 49 4f  |F>.<_IOLBF>.<_IO|
0009c020  4e 42 46 3e 0a 3c 42 55  46 53 49 5a 3e 0a 3c 45  |NBF>.<BUFSIZ>.<E|
0009c030  4f 46 3e 0a 3c 46 4f 50  45 4e 5f 4d 41 58 3e 0a  |OF>.<FOPEN_MAX>.|
0009c040  3c 46 49 4c 45 4e 41 4d  45 5f 4d 41 58 3e 0a 3c  |<FILENAME_MAX>.<|
0009c050  4c 5f 74 6d 70 6e 61 6d  3e 0a 3c 53 45 45 4b 5f  |L_tmpnam>.<SEEK_|
0009c060  43 55 52 3e 0a 3c 53 45  45 4b 5f 45 4e 44 3e 0a  |CUR>.<SEEK_END>.|
0009c070  3c 53 45 45 4b 5f 53 45  54 3e 0a 3c 54 4d 50 5f  |<SEEK_SET>.<TMP_|
0009c080  4d 41 58 3e 0a 3c 73 74  64 69 6e 3e 0a 3c 73 74  |MAX>.<stdin>.<st|
0009c090  64 6f 75 74 3e 0a 3c 73  74 64 65 72 72 3e 0a 23  |dout>.<stderr>.#|
0009c0a0  45 6e 64 54 61 62 6c 65  0a 0a 23 49 6e 64 65 6e  |EndTable..#Inden|
0009c0b0  74 20 30 0a 54 79 70 65  73 3a 0a 0a 23 49 6e 64  |t 0.Types:..#Ind|
0009c0c0  65 6e 74 20 35 0a 23 54  61 62 6c 65 20 31 20 31  |ent 5.#Table 1 1|
0009c0d0  35 0a 3c 46 49 4c 45 3e  0a 3c 66 70 6f 73 5f 74  |5.<FILE>.<fpos_t|
0009c0e0  3e 0a 3c 73 69 7a 65 5f  74 3e 0a 23 45 6e 64 54  |>.<size_t>.#EndT|
0009c0f0  61 62 6c 65 44 41 54 41  68 02 00 00 73 74 64 6c  |ableDATAh...stdl|
0009c100  69 62 2e 68 0a 54 68 65  20 5c 3c 73 74 64 6c 69  |ib.h.The \<stdli|
0009c110  62 2e 68 3e 20 68 65 61  64 65 72 20 64 65 63 6c  |b.h> header decl|
0009c120  61 72 65 73 20 6d 61 6e  79 20 66 75 6e 63 74 69  |ares many functi|
0009c130  6f 6e 73 20 6f 66 20 67  65 6e 65 72 61 6c 20 75  |ons of general u|
0009c140  74 69 6c 69 74 79 2e 20  49 6e 20 61 64 64 69 74  |tility. In addit|
0009c150  69 6f 6e 2c 20 69 74 20  64 65 63 6c 61 72 65 73  |ion, it declares|
0009c160  20 66 6f 75 72 20 74 79  70 65 73 20 61 6e 64 20  | four types and |
0009c170  66 69 76 65 20 6d 61 63  72 6f 73 2e 0a 0a 46 75  |five macros...Fu|
0009c180  6e 63 74 69 6f 6e 73 3a  0a 0a 23 49 6e 64 65 6e  |nctions:..#Inden|
0009c190  74 20 32 0a 23 54 61 62  6c 65 20 34 20 32 34 0a  |t 2.#Table 4 24.|
0009c1a0  3c 53 74 72 69 6e 67 20  63 6f 6e 76 65 72 73 69  |<String conversi|
0009c1b0  6f 6e 3d 3e 73 6c 5f 73  74 72 63 6f 6e 76 5f 3e  |on=>sl_strconv_>|
0009c1c0  0a 3c 52 61 6e 64 6f 6d  20 6e 75 6d 62 65 72 73  |.<Random numbers|
0009c1d0  3d 3e 73 6c 5f 72 61 6e  64 5f 3e 0a 3c 4d 65 6d  |=>sl_rand_>.<Mem|
0009c1e0  6f 72 79 20 6d 61 6e 61  67 65 6d 65 6e 74 3d 3e  |ory management=>|
0009c1f0  73 6c 5f 6d 65 6d 5f 3e  0a 3c 45 6e 76 69 72 6f  |sl_mem_>.<Enviro|
0009c200  6e 6d 65 6e 74 20 6d 61  6e 61 67 65 6d 65 6e 74  |nment management|
0009c210  3d 3e 73 6c 5f 65 6e 76  5f 3e 0a 3c 44 61 74 61  |=>sl_env_>.<Data|
0009c220  20 70 72 6f 63 65 73 73  69 6e 67 3d 3e 73 6c 5f  | processing=>sl_|
0009c230  64 61 74 61 5f 3e 0a 3c  41 72 69 74 68 6d 65 74  |data_>.<Arithmet|
0009c240  69 63 3d 3e 73 6c 5f 61  72 69 74 68 5f 3e 0a 3c  |ic=>sl_arith_>.<|
0009c250  4d 75 6c 74 69 62 79 74  65 20 63 68 61 72 61 63  |Multibyte charac|
0009c260  74 65 72 3d 3e 73 6c 5f  6d 62 63 68 61 72 5f 3e  |ter=>sl_mbchar_>|
0009c270  0a 3c 4d 75 6c 74 69 62  79 74 65 20 73 74 72 69  |.<Multibyte stri|
0009c280  6e 67 3d 3e 73 6c 5f 6d  62 73 74 72 5f 3e 0a 23  |ng=>sl_mbstr_>.#|
0009c290  45 6e 64 54 61 62 6c 65  0a 0a 23 49 6e 64 65 6e  |EndTable..#Inden|
0009c2a0  74 20 30 0a 4d 61 63 72  6f 73 3a 0a 0a 23 49 6e  |t 0.Macros:..#In|
0009c2b0  64 65 6e 74 20 35 0a 23  54 61 62 6c 65 20 32 0a  |dent 5.#Table 2.|
0009c2c0  3c 45 58 49 54 5f 46 41  49 4c 55 52 45 3e 0a 3c  |<EXIT_FAILURE>.<|
0009c2d0  45 58 49 54 5f 53 55 43  43 45 53 53 3e 0a 3c 4d  |EXIT_SUCCESS>.<M|
0009c2e0  42 5f 43 55 52 5f 4d 41  58 3e 0a 3c 4e 55 4c 4c  |B_CUR_MAX>.<NULL|
0009c2f0  3e 0a 3c 52 41 4e 44 5f  4d 41 58 3e 0a 0a 23 45  |>.<RAND_MAX>..#E|
0009c300  6e 64 54 61 62 6c 65 0a  0a 23 49 6e 64 65 6e 74  |ndTable..#Indent|
0009c310  20 30 0a 54 79 70 65 73  3a 0a 0a 23 49 6e 64 65  | 0.Types:..#Inde|
0009c320  6e 74 20 31 31 0a 23 54  61 62 6c 65 20 31 0a 3c  |nt 11.#Table 1.<|
0009c330  64 69 76 5f 74 3e 0a 3c  6c 64 69 76 5f 74 3e 0a  |div_t>.<ldiv_t>.|
0009c340  3c 73 69 7a 65 5f 74 3e  0a 3c 77 63 68 61 72 5f  |<size_t>.<wchar_|
0009c350  74 3e 0a 23 45 6e 64 54  61 62 6c 65 44 41 54 41  |t>.#EndTableDATA|
0009c360  cb 00 00 00 73 74 64 6f  75 74 0a 54 68 65 20 6d  |....stdout.The m|
0009c370  61 63 72 6f 20 73 74 64  6f 75 74 20 69 73 20 64  |acro stdout is d|
0009c380  65 66 69 6e 65 64 20 69  6e 20 3c 73 74 64 69 6f  |efined in <stdio|
0009c390  2e 68 3d 3e 73 74 64 69  6f 3e 20 61 6e 64 20 69  |.h=>stdio> and i|
0009c3a0  73 20 61 20 70 6f 69 6e  74 65 72 20 74 6f 20 74  |s a pointer to t|
0009c3b0  79 70 65 20 3c 46 49 4c  45 3e 2e 20 49 74 20 72  |ype <FILE>. It r|
0009c3c0  65 66 65 72 73 20 74 6f  20 74 68 65 20 73 74 61  |efers to the sta|
0009c3d0  6e 64 61 72 64 20 6f 75  74 70 75 74 20 73 74 72  |ndard output str|
0009c3e0  65 61 6d 20 28 73 63 72  65 65 6e 20 62 79 20 64  |eam (screen by d|
0009c3f0  65 66 61 75 6c 74 29 20  61 6e 64 20 63 61 6e 20  |efault) and can |
0009c400  62 65 20 75 73 65 64 20  69 6e 20 66 75 6e 63 74  |be used in funct|
0009c410  69 6f 6e 73 20 73 75 63  68 20 61 73 20 3c 66 70  |ions such as <fp|
0009c420  72 69 6e 74 66 3e 2e 00  44 41 54 41 6a 00 00 00  |rintf>..DATAj...|
0009c430  53 54 46 20 3c 72 65 67  69 73 74 65 72 3e 2c 3c  |STF <register>,<|
0009c440  61 64 64 72 65 73 73 3e  0a 54 68 69 73 20 69 73  |address>.This is|
0009c450  20 65 71 75 69 76 61 6c  65 6e 74 20 74 6f 20 3c  | equivalent to <|
0009c460  53 54 52 3e 2c 20 62 75  74 20 66 6f 72 20 66 6c  |STR>, but for fl|
0009c470  6f 61 74 69 6e 67 20 70  6f 69 6e 74 20 72 65 67  |oating point reg|
0009c480  69 73 74 65 72 73 20 61  6e 64 20 76 61 6c 75 65  |isters and value|
0009c490  73 2e 00 00 44 41 54 41  4d 01 00 00 53 54 52 20  |s...DATAM...STR |
0009c4a0  3c 72 65 67 69 73 74 65  72 3e 2c 3c 61 64 64 72  |<register>,<addr|
0009c4b0  65 73 73 3e 0a 54 68 69  73 20 73 65 74 73 20 74  |ess>.This sets t|
0009c4c0  68 65 20 67 69 76 65 6e  20 61 64 64 72 65 73 73  |he given address|
0009c4d0  20 28 75 73 75 61 6c 6c  79 20 61 20 6c 61 62 65  | (usually a labe|
0009c4e0  6c 29 20 74 6f 20 63 6f  6e 74 61 69 6e 20 74 68  |l) to contain th|
0009c4f0  65 20 63 6f 6e 74 65 6e  74 73 20 6f 66 20 74 68  |e contents of th|
0009c500  65 20 67 69 76 65 6e 20  72 65 67 69 73 74 65 72  |e given register|
0009c510  2e 20 54 68 65 20 63 6f  6e 74 65 6e 74 73 20 61  |. The contents a|
0009c520  72 65 20 61 20 77 6f 72  64 2c 20 75 6e 6c 65 73  |re a word, unles|
0009c530  73 20 53 54 52 42 20 69  73 20 75 73 65 64 20 69  |s STRB is used i|
0009c540  6e 20 77 68 69 63 68 20  63 61 73 65 20 6f 6e 6c  |n which case onl|
0009c550  79 20 61 20 62 79 74 65  20 69 73 20 73 74 6f 72  |y a byte is stor|
0009c560  65 64 2e 0a 0a 23 66 43  6f 64 65 0a 20 20 20 20  |ed...#fCode.    |
0009c570  20 20 20 20 4d 4f 56 20  20 20 52 30 2c 23 31 30  |    MOV   R0,#10|
0009c580  0a 20 20 20 20 20 20 20  20 53 54 52 20 20 20 52  |.        STR   R|
0009c590  30 2c 6c 61 62 65 6c 0a  20 20 20 20 20 20 20 20  |0,label.        |
0009c5a0  2e 2e 2e 0a 20 2e 6c 61  62 65 6c 20 3c 44 43 44  |.... .label <DCD|
0009c5b0  3e 20 20 20 30 0a 23 66  0a 0a 54 68 65 20 63 6f  |>   0.#f..The co|
0009c5c0  6e 74 65 6e 74 73 20 61  74 20 27 6c 61 62 65 6c  |ntents at 'label|
0009c5d0  27 20 77 69 6c 6c 20 6e  6f 77 20 62 65 20 31 30  |' will now be 10|
0009c5e0  2e 00 00 00 44 41 54 41  fb 00 00 00 73 74 72 63  |....DATA....strc|
0009c5f0  61 74 0a 53 79 6e 74 61  78 3a 09 63 68 61 72 20  |at.Syntax:.char |
0009c600  2a 73 74 72 63 61 74 20  28 63 68 61 72 20 2a 73  |*strcat (char *s|
0009c610  74 72 31 2c 20 63 68 61  72 20 2a 73 74 72 32 29  |tr1, char *str2)|
0009c620  3b 0a 48 65 61 64 65 72  3a 09 3c 73 74 72 69 6e  |;.Header:.<strin|
0009c630  67 2e 68 3d 3e 73 74 72  69 6e 67 3e 0a 0a 52 65  |g.h=>string>..Re|
0009c640  74 75 72 6e 73 3a 09 73  74 72 31 0a 0a 54 68 69  |turns:.str1..Thi|
0009c650  73 20 66 75 6e 63 74 69  6f 6e 20 61 70 70 65 6e  |s function appen|
0009c660  64 73 20 7b 2f 7d 73 74  72 32 7b 2f 7d 20 74 6f  |ds {/}str2{/} to|
0009c670  20 74 68 65 20 65 6e 64  20 6f 66 20 7b 2f 7d 73  | the end of {/}s|
0009c680  74 72 31 7b 2f 7d 2c 20  6f 76 65 72 77 72 69 74  |tr1{/}, overwrit|
0009c690  69 6e 67 20 74 68 65 20  6e 75 6c 6c 20 62 79 74  |ing the null byt|
0009c6a0  65 20 61 74 20 74 68 65  20 65 6e 64 20 6f 66 20  |e at the end of |
0009c6b0  7b 2f 7d 73 74 72 31 7b  2f 7d 2e 20 54 68 65 20  |{/}str1{/}. The |
0009c6c0  74 77 6f 20 73 74 72 69  6e 67 73 20 73 68 6f 75  |two strings shou|
0009c6d0  6c 64 20 6e 6f 74 20 6f  76 65 72 6c 61 70 2e 00  |ld not overlap..|
0009c6e0  44 41 54 41 2b 01 00 00  73 74 72 63 61 74 63 72  |DATA+...strcatcr|
0009c6f0  0a 53 79 6e 74 61 78 3a  09 63 68 61 72 20 2a 73  |.Syntax:.char *s|
0009c700  74 72 63 61 74 63 72 20  28 63 68 61 72 20 2a 73  |trcatcr (char *s|
0009c710  31 2c 20 63 68 61 72 20  2a 73 32 29 3b 0a 48 65  |1, char *s2);.He|
0009c720  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 53  |ader:.<DeskLib:S|
0009c730  74 72 2e 68 3d 3e 53 74  72 5f 44 4c 3e 0a 0a 52  |tr.h=>Str_DL>..R|
0009c740  65 74 75 72 6e 73 3a 09  73 31 0a 0a 54 68 69 73  |eturns:.s1..This|
0009c750  20 66 75 6e 63 74 69 6f  6e 20 61 70 70 65 6e 64  | function append|
0009c760  73 20 7b 2f 7d 73 32 7b  2f 7d 20 74 6f 20 74 68  |s {/}s2{/} to th|
0009c770  65 20 65 6e 64 20 6f 66  20 7b 2f 7d 73 31 7b 2f  |e end of {/}s1{/|
0009c780  7d 2c 20 6f 76 65 72 77  72 69 74 69 6e 67 20 74  |}, overwriting t|
0009c790  68 65 20 74 65 72 6d 69  6e 61 74 6f 72 20 61 74  |he terminator at|
0009c7a0  20 74 68 65 20 65 6e 64  20 6f 66 20 7b 2f 7d 73  | the end of {/}s|
0009c7b0  31 7b 2f 7d 2e 20 54 68  65 20 74 77 6f 20 73 74  |1{/}. The two st|
0009c7c0  72 69 6e 67 73 20 73 68  6f 75 6c 64 20 6e 6f 74  |rings should not|
0009c7d0  20 6f 76 65 72 6c 61 70  2c 20 61 6e 64 20 74 68  | overlap, and th|
0009c7e0  65 20 72 65 73 75 6c 74  69 6e 67 20 73 74 72 69  |e resulting stri|
0009c7f0  6e 67 20 77 69 6c 6c 20  62 65 20 6e 75 6c 6c 2d  |ng will be null-|
0009c800  74 65 72 6d 69 6e 61 74  65 64 2e 00 44 41 54 41  |terminated..DATA|
0009c810  21 01 00 00 73 74 72 63  68 72 0a 53 79 6e 74 61  |!...strchr.Synta|
0009c820  78 3a 09 63 68 61 72 20  2a 73 74 72 63 68 72 20  |x:.char *strchr |
0009c830  28 63 68 61 72 20 2a 73  74 72 2c 20 69 6e 74 20  |(char *str, int |
0009c840  63 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 74 72  |c);.Header:.<str|
0009c850  69 6e 67 2e 68 3d 3e 73  74 72 69 6e 67 3e 0a 0a  |ing.h=>string>..|
0009c860  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
0009c870  20 74 6f 20 74 68 65 20  66 6f 75 6e 64 20 63 68  | to the found ch|
0009c880  61 72 61 63 74 65 72 2c  20 6f 72 20 61 20 6e 75  |aracter, or a nu|
0009c890  6c 6c 20 70 6f 69 6e 74  65 72 20 69 66 20 6e 6f  |ll pointer if no|
0009c8a0  74 20 66 6f 75 6e 64 2e  0a 0a 54 68 69 73 20 66  |t found...This f|
0009c8b0  75 6e 63 74 69 6f 6e 20  73 65 61 72 63 68 65 73  |unction searches|
0009c8c0  20 66 6f 72 20 2f 63 2f  20 28 63 6f 6e 76 65 72  | for /c/ (conver|
0009c8d0  74 65 64 20 74 6f 20 61  6e 20 7b 2f 7d 75 6e 73  |ted to an {/}uns|
0009c8e0  69 67 6e 65 64 20 63 68  61 72 7b 2f 7d 29 20 69  |igned char{/}) i|
0009c8f0  6e 20 74 68 65 20 73 74  72 69 6e 67 20 70 6f 69  |n the string poi|
0009c900  6e 74 65 64 20 74 6f 20  62 79 20 2f 73 74 72 2f  |nted to by /str/|
0009c910  20 28 69 6e 63 6c 75 64  69 6e 67 20 6e 75 6c 6c  | (including null|
0009c920  20 74 65 72 6d 69 6e 61  74 6f 72 29 2e 00 00 00  | terminator)....|
0009c930  44 41 54 41 51 01 00 00  73 74 72 63 6d 70 0a 53  |DATAQ...strcmp.S|
0009c940  79 6e 74 61 78 3a 09 69  6e 74 20 73 74 72 63 6d  |yntax:.int strcm|
0009c950  70 20 28 63 68 61 72 20  2a 73 74 72 31 2c 20 63  |p (char *str1, c|
0009c960  68 61 72 20 2a 73 74 72  32 29 3b 0a 48 65 61 64  |har *str2);.Head|
0009c970  65 72 3a 09 3c 73 74 72  69 6e 67 2e 68 3d 3e 73  |er:.<string.h=>s|
0009c980  74 72 69 6e 67 3e 0a 0a  52 65 74 75 72 6e 73 3a  |tring>..Returns:|
0009c990  09 47 72 65 61 74 65 72  20 74 68 61 6e 2c 20 6c  |.Greater than, l|
0009c9a0  65 73 73 20 74 68 61 6e  20 6f 72 20 65 71 75 61  |ess than or equa|
0009c9b0  6c 20 74 6f 20 7a 65 72  6f 2c 20 64 65 70 65 6e  |l to zero, depen|
0009c9c0  64 69 6e 67 20 69 66 20  74 68 65 20 73 74 72 69  |ding if the stri|
0009c9d0  6e 67 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |ng pointed to by|
0009c9e0  20 7b 2f 7d 73 74 72 31  7b 2f 7d 20 69 73 20 67  | {/}str1{/} is g|
0009c9f0  72 65 61 74 65 72 20 74  68 61 6e 2c 20 6c 65 73  |reater than, les|
0009ca00  73 20 74 68 61 6e 20 6f  72 20 65 71 75 61 6c 20  |s than or equal |
0009ca10  74 6f 20 74 68 65 20 73  74 72 69 6e 67 20 70 6f  |to the string po|
0009ca20  69 6e 74 65 64 20 74 6f  20 62 79 20 7b 2f 7d 73  |inted to by {/}s|
0009ca30  74 72 32 7b 2f 7d 2e 0a  0a 54 68 69 73 20 66 75  |tr2{/}...This fu|
0009ca40  6e 63 74 69 6f 6e 73 20  63 6f 6d 70 61 72 65 73  |nctions compares|
0009ca50  20 74 68 65 20 74 77 6f  20 73 74 72 69 6e 67 73  | the two strings|
0009ca60  20 61 6e 64 20 72 65 74  75 72 6e 73 20 61 20 76  | and returns a v|
0009ca70  61 6c 75 65 20 61 63 63  6f 72 64 69 6e 67 6c 79  |alue accordingly|
0009ca80  2e 00 00 00 44 41 54 41  04 01 00 00 73 74 72 63  |....DATA....strc|
0009ca90  6d 70 63 72 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |mpcr.Syntax:.int|
0009caa0  20 73 74 72 63 6d 70 63  72 20 28 63 68 61 72 20  | strcmpcr (char |
0009cab0  2a 73 31 2c 20 63 68 61  72 20 2a 73 32 29 3b 0a  |*s1, char *s2);.|
0009cac0  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
0009cad0  3a 53 74 72 2e 68 3d 3e  53 74 72 5f 44 4c 3e 0a  |:Str.h=>Str_DL>.|
0009cae0  0a 52 65 74 75 72 6e 73  3a 09 30 20 69 66 20 74  |.Returns:.0 if t|
0009caf0  68 65 20 73 74 72 69 6e  67 73 20 6d 61 74 63 68  |he strings match|
0009cb00  0a 09 09 2d 31 20 69 66  20 73 31 5c 3c 73 32 20  |...-1 if s1\<s2 |
0009cb10  28 61 6c 70 68 61 62 65  74 69 63 61 6c 6c 79 29  |(alphabetically)|
0009cb20  0a 09 09 2b 31 20 69 66  20 73 31 3e 73 32 20 28  |...+1 if s1>s2 (|
0009cb30  61 6c 70 68 61 62 65 74  69 63 61 6c 6c 79 29 0a  |alphabetically).|
0009cb40  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
0009cb50  6f 6d 70 61 72 65 73 20  74 68 65 20 74 77 6f 20  |ompares the two |
0009cb60  73 74 72 69 6e 67 73 20  61 6e 64 20 72 65 74 75  |strings and retu|
0009cb70  72 6e 73 20 61 20 76 61  6c 75 65 20 61 63 63 6f  |rns a value acco|
0009cb80  72 64 69 6e 67 6c 79 2e  44 41 54 41 88 01 00 00  |rdingly.DATA....|
0009cb90  73 74 72 63 6f 6c 6c 0a  53 79 6e 74 61 78 3a 09  |strcoll.Syntax:.|
0009cba0  69 6e 74 20 73 74 72 63  6f 6c 6c 20 28 63 68 61  |int strcoll (cha|
0009cbb0  72 20 2a 73 74 72 31 2c  20 63 68 61 72 20 2a 73  |r *str1, char *s|
0009cbc0  74 72 32 29 3b 0a 48 65  61 64 65 72 3a 09 3c 73  |tr2);.Header:.<s|
0009cbd0  74 72 69 6e 67 2e 68 3d  3e 73 74 72 69 6e 67 3e  |tring.h=>string>|
0009cbe0  0a 0a 52 65 74 75 72 6e  73 3a 09 47 72 65 61 74  |..Returns:.Great|
0009cbf0  65 72 20 74 68 61 6e 2c  20 6c 65 73 73 20 74 68  |er than, less th|
0009cc00  61 6e 20 6f 72 20 65 71  75 61 6c 20 74 6f 20 7a  |an or equal to z|
0009cc10  65 72 6f 2c 20 64 65 70  65 6e 64 69 6e 67 20 69  |ero, depending i|
0009cc20  66 20 74 68 65 20 73 74  72 69 6e 67 20 70 6f 69  |f the string poi|
0009cc30  6e 74 65 64 20 74 6f 20  62 79 20 7b 2f 7d 73 74  |nted to by {/}st|
0009cc40  72 31 7b 2f 7d 20 69 73  20 67 72 65 61 74 65 72  |r1{/} is greater|
0009cc50  20 74 68 61 6e 2c 20 6c  65 73 73 20 74 68 61 6e  | than, less than|
0009cc60  20 6f 72 20 65 71 75 61  6c 20 74 6f 20 74 68 65  | or equal to the|
0009cc70  20 73 74 72 69 6e 67 20  70 6f 69 6e 74 65 64 20  | string pointed |
0009cc80  74 6f 20 62 79 20 7b 2f  7d 73 74 72 32 7b 2f 7d  |to by {/}str2{/}|
0009cc90  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
0009cca0  20 69 6e 74 65 72 70 72  65 74 73 20 74 68 65 20  | interprets the |
0009ccb0  74 77 6f 20 73 74 72 69  6e 67 73 20 61 63 63 6f  |two strings acco|
0009ccc0  72 64 69 6e 67 20 74 6f  20 74 68 65 20 3c 4c 43  |rding to the <LC|
0009ccd0  5f 43 4f 4c 4c 41 54 45  3e 20 63 61 74 65 67 6f  |_COLLATE> catego|
0009cce0  72 79 20 6f 66 20 74 68  65 20 63 75 72 72 65 6e  |ry of the curren|
0009ccf0  74 20 6c 6f 63 61 6c 65  20 61 6e 64 20 74 68 65  |t locale and the|
0009cd00  6e 20 63 6f 6d 70 61 72  65 73 20 74 68 65 6d 2e  |n compares them.|
0009cd10  44 41 54 41 d2 00 00 00  73 74 72 63 70 79 0a 53  |DATA....strcpy.S|
0009cd20  79 6e 74 61 78 3a 09 63  68 61 72 20 2a 73 74 72  |yntax:.char *str|
0009cd30  63 70 79 20 28 63 68 61  72 20 2a 73 74 72 31 2c  |cpy (char *str1,|
0009cd40  20 63 68 61 72 20 2a 73  74 72 32 29 3b 0a 48 65  | char *str2);.He|
0009cd50  61 64 65 72 3a 09 3c 73  74 72 69 6e 67 2e 68 3d  |ader:.<string.h=|
0009cd60  3e 73 74 72 69 6e 67 3e  0a 0a 52 65 74 75 72 6e  |>string>..Return|
0009cd70  73 3a 09 73 74 72 31 0a  0a 54 68 69 73 20 66 75  |s:.str1..This fu|
0009cd80  6e 63 74 69 6f 6e 20 63  6f 70 69 65 73 20 74 68  |nction copies th|
0009cd90  65 20 77 68 6f 6c 65 20  6f 66 20 74 68 65 20 73  |e whole of the s|
0009cda0  74 72 69 6e 67 20 69 6e  20 7b 2f 7d 73 74 72 32  |tring in {/}str2|
0009cdb0  7b 2f 7d 20 74 6f 20 7b  2f 7d 73 74 72 31 7b 2f  |{/} to {/}str1{/|
0009cdc0  7d 20 28 69 6e 63 6c 75  64 69 6e 67 20 74 68 65  |} (including the|
0009cdd0  20 6e 75 6c 6c 20 74 65  72 6d 69 6e 61 74 6f 72  | null terminator|
0009cde0  29 2e 00 00 44 41 54 41  05 01 00 00 73 74 72 63  |)...DATA....strc|
0009cdf0  70 79 63 72 0a 53 79 6e  74 61 78 3a 09 63 68 61  |pycr.Syntax:.cha|
0009ce00  72 20 2a 73 74 72 63 70  79 63 72 20 28 63 68 61  |r *strcpycr (cha|
0009ce10  72 20 2a 73 31 2c 20 63  68 61 72 20 2a 73 32 29  |r *s1, char *s2)|
0009ce20  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
0009ce30  69 62 3a 53 74 72 2e 68  3d 3e 53 74 72 5f 44 4c  |ib:Str.h=>Str_DL|
0009ce40  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 73 31 0a 0a  |>..Returns:.s1..|
0009ce50  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 63 6f  |This function co|
0009ce60  70 69 65 73 20 74 68 65  20 77 68 6f 6c 65 20 6f  |pies the whole o|
0009ce70  66 20 74 68 65 20 73 74  72 69 6e 67 20 69 6e 20  |f the string in |
0009ce80  7b 2f 7d 73 32 7b 2f 7d  20 74 6f 20 7b 2f 7d 73  |{/}s2{/} to {/}s|
0009ce90  31 7b 2f 7d 2e 20 54 68  65 20 74 65 72 6d 69 6e  |1{/}. The termin|
0009cea0  61 74 6f 72 20 6f 66 20  7b 2f 7d 73 31 7b 2f 7d  |ator of {/}s1{/}|
0009ceb0  20 77 69 6c 6c 20 62 65  20 6e 75 6c 6c 2c 20 72  | will be null, r|
0009cec0  65 67 61 72 64 6c 65 73  73 20 6f 66 20 74 68 65  |egardless of the|
0009ced0  20 74 68 65 20 7b 2f 7d  73 32 7b 2f 7d 20 74 65  | the {/}s2{/} te|
0009cee0  72 6d 69 6e 61 74 6f 72  2e 00 00 00 44 41 54 41  |rminator....DATA|
0009cef0  ef 00 00 00 73 74 72 63  73 70 6e 0a 53 79 6e 74  |....strcspn.Synt|
0009cf00  61 78 3a 09 3c 73 69 7a  65 5f 74 3e 20 73 74 72  |ax:.<size_t> str|
0009cf10  63 73 70 6e 20 28 63 68  61 72 20 2a 73 74 72 31  |cspn (char *str1|
0009cf20  2c 20 63 68 61 72 20 2a  73 74 72 32 29 3b 0a 48  |, char *str2);.H|
0009cf30  65 61 64 65 72 3a 09 3c  73 74 72 69 6e 67 2e 68  |eader:.<string.h|
0009cf40  3d 3e 73 74 72 69 6e 67  3e 0a 0a 52 65 74 75 72  |=>string>..Retur|
0009cf50  6e 73 3a 09 54 68 65 20  6e 75 6d 62 65 72 20 6f  |ns:.The number o|
0009cf60  66 20 63 68 61 72 61 63  74 65 72 73 2e 0a 0a 54  |f characters...T|
0009cf70  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 66 69 6e  |his function fin|
0009cf80  64 73 20 74 68 65 20 6e  75 6d 62 65 72 20 6f 66  |ds the number of|
0009cf90  20 63 68 61 72 61 63 74  65 72 73 20 61 74 20 74  | characters at t|
0009cfa0  68 65 20 73 74 61 72 74  20 6f 66 20 7b 2f 7d 73  |he start of {/}s|
0009cfb0  74 72 31 7b 2f 7d 20 77  68 69 63 68 20 61 72 65  |tr1{/} which are|
0009cfc0  20 6e 6f 74 20 70 72 65  73 65 6e 74 20 69 6e 20  | not present in |
0009cfd0  7b 2f 7d 73 74 72 32 7b  2f 7d 2e 00 44 41 54 41  |{/}str2{/}..DATA|
0009cfe0  1a 01 00 00 73 74 72 64  75 70 0a 53 79 6e 74 61  |....strdup.Synta|
0009cff0  78 3a 09 63 68 61 72 20  2a 73 74 72 64 75 70 20  |x:.char *strdup |
0009d000  28 63 68 61 72 20 2a 73  74 72 29 3b 0a 48 65 61  |(char *str);.Hea|
0009d010  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 53 74  |der:.<DeskLib:St|
0009d020  72 2e 68 3d 3e 53 74 72  5f 44 4c 3e 0a 0a 52 65  |r.h=>Str_DL>..Re|
0009d030  74 75 72 6e 73 3a 09 41  64 64 72 65 73 73 20 6f  |turns:.Address o|
0009d040  66 20 6e 65 77 20 73 74  72 69 6e 67 2e 0a 0a 54  |f new string...T|
0009d050  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 61 6c 6c  |his function all|
0009d060  6f 63 61 74 65 73 20 6d  65 6d 6f 72 79 20 61 6e  |ocates memory an|
0009d070  64 20 63 6f 70 69 65 73  20 74 68 65 20 73 74 72  |d copies the str|
0009d080  69 6e 67 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |ing pointed to b|
0009d090  79 20 2f 73 74 72 2f 20  69 6e 74 6f 20 74 68 61  |y /str/ into tha|
0009d0a0  74 20 6d 65 6d 6f 72 79  2e 20 49 74 20 74 68 65  |t memory. It the|
0009d0b0  6e 20 72 65 74 75 72 6e  73 20 61 20 70 6f 69 6e  |n returns a poin|
0009d0c0  74 65 72 20 74 6f 20 69  74 2c 20 6f 72 20 3c 4e  |ter to it, or <N|
0009d0d0  55 4c 4c 3e 20 69 66 20  6d 65 6d 6f 72 79 20 63  |ULL> if memory c|
0009d0e0  6f 75 6c 64 20 6e 6f 74  20 62 65 20 61 6c 6c 6f  |ould not be allo|
0009d0f0  63 61 74 65 64 2e 00 00  44 49 52 24 2c 00 00 00  |cated...DIR$,...|
0009d100  2c 00 00 00 24 d1 09 00  46 fd ff ff e1 2a c4 22  |,...$...F....*."|
0009d110  a6 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
0009d120  74 00 00 00 44 41 54 41  a6 00 00 00 53 74 72 65  |t...DATA....Stre|
0009d130  61 6d 20 49 2f 4f 20 46  75 6e 63 74 69 6f 6e 73  |am I/O Functions|
0009d140  0a 23 50 61 72 65 6e 74  20 73 74 64 69 6f 0a 54  |.#Parent stdio.T|
0009d150  68 65 73 65 20 66 75 6e  63 74 69 6f 6e 73 20 72  |hese functions r|
0009d160  65 61 64 20 61 6e 64 20  77 72 69 74 65 20 61 6e  |ead and write an|
0009d170  79 20 6e 75 6d 62 65 72  20 6f 66 20 64 61 74 61  |y number of data|
0009d180  20 69 74 65 6d 73 20 6f  66 20 61 6e 79 20 73 69  | items of any si|
0009d190  7a 65 2c 20 69 6e 74 6f  20 61 6e 20 61 72 72 61  |ze, into an arra|
0009d1a0  79 2e 0a 0a 23 54 61 62  6c 65 20 31 20 31 38 0a  |y...#Table 1 18.|
0009d1b0  3c 66 72 65 61 64 3e 0a  3c 66 77 72 69 74 65 3e  |<fread>.<fwrite>|
0009d1c0  0a 23 45 6e 64 54 61 62  6c 65 00 00 44 41 54 41  |.#EndTable..DATA|
0009d1d0  e9 00 00 00 73 74 72 65  72 72 6f 72 0a 53 79 6e  |....strerror.Syn|
0009d1e0  74 61 78 3a 09 63 68 61  72 20 2a 73 74 72 65 72  |tax:.char *strer|
0009d1f0  72 6f 72 20 28 69 6e 74  20 65 72 72 29 3b 0a 48  |ror (int err);.H|
0009d200  65 61 64 65 72 3a 09 3c  73 74 72 69 6e 67 2e 68  |eader:.<string.h|
0009d210  3d 3e 73 74 72 69 6e 67  3e 0a 0a 52 65 74 75 72  |=>string>..Retur|
0009d220  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 74  |ns:.Pointer to t|
0009d230  68 65 20 65 72 72 6f 72  20 6d 65 73 73 61 67 65  |he error message|
0009d240  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
0009d250  20 63 6f 6e 76 65 72 74  73 20 74 68 65 20 65 72  | converts the er|
0009d260  72 6f 72 20 6e 75 6d 62  65 72 20 69 6e 20 2f 65  |ror number in /e|
0009d270  72 72 2f 20 69 6e 74 6f  20 61 6e 20 65 72 72 6f  |rr/ into an erro|
0009d280  72 20 6d 65 73 73 61 67  65 20 73 74 72 69 6e 67  |r message string|
0009d290  2e 20 2a 44 6f 20 6e 6f  74 20 61 6c 74 65 72 20  |. *Do not alter |
0009d2a0  74 68 65 20 72 65 74 75  72 6e 65 64 20 73 74 72  |the returned str|
0009d2b0  69 6e 67 2a 2e 00 00 00  44 41 54 41 6c 01 00 00  |ing*....DATAl...|
0009d2c0  73 74 72 66 74 69 6d 65  0a 53 79 6e 74 61 78 3a  |strftime.Syntax:|
0009d2d0  09 3c 73 69 7a 65 5f 74  3e 20 73 74 72 66 74 69  |.<size_t> strfti|
0009d2e0  6d 65 20 28 63 68 61 72  20 2a 73 2c 20 73 69 7a  |me (char *s, siz|
0009d2f0  65 5f 74 20 6c 65 6e 2c  20 63 68 61 72 20 2a 66  |e_t len, char *f|
0009d300  6f 72 6d 61 74 2c 20 3c  73 74 72 75 63 74 a0 74  |ormat, <struct.t|
0009d310  6d 3e 20 2a 74 70 74 72  29 3b 0a 48 65 61 64 65  |m> *tptr);.Heade|
0009d320  72 3a 09 3c 74 69 6d 65  2e 68 3d 3e 74 69 6d 65  |r:.<time.h=>time|
0009d330  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 54 68 65 20  |>..Returns:.The |
0009d340  6e 75 6d 62 65 72 20 6f  66 20 63 68 61 72 61 63  |number of charac|
0009d350  74 65 72 73 20 77 72 69  74 74 65 6e 2e 0a 0a 54  |ters written...T|
0009d360  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 77 72 69  |his function wri|
0009d370  74 65 73 20 74 68 65 20  74 69 6d 65 20 70 6f 69  |tes the time poi|
0009d380  6e 74 65 64 20 74 6f 20  62 79 20 2f 74 70 74 72  |nted to by /tptr|
0009d390  2f 20 74 6f 20 74 68 65  20 63 68 61 72 61 63 74  |/ to the charact|
0009d3a0  65 72 20 61 72 72 61 79  20 70 6f 69 6e 74 65 64  |er array pointed|
0009d3b0  20 74 6f 20 62 79 20 2f  73 2f 20 75 6e 64 65 72  | to by /s/ under|
0009d3c0  20 63 6f 6e 74 72 6f 6c  20 6f 66 20 74 68 65 20  | control of the |
0009d3d0  3c 66 6f 72 6d 61 74 20  73 74 72 69 6e 67 3d 3e  |<format string=>|
0009d3e0  74 66 6f 72 6d 5f 3e 2e  0a 0a 4e 6f 20 6d 6f 72  |tform_>...No mor|
0009d3f0  65 20 74 68 61 6e 20 6c  65 6e 20 63 68 61 72 61  |e than len chara|
0009d400  63 74 65 72 73 20 77 69  6c 6c 20 62 65 20 77 72  |cters will be wr|
0009d410  69 74 74 65 6e 20 74 6f  20 74 68 65 20 73 74 72  |itten to the str|
0009d420  69 6e 67 2e 44 41 54 41  8c 01 00 00 73 74 72 69  |ing.DATA....stri|
0009d430  63 6d 70 0a 53 79 6e 74  61 78 3a 09 69 6e 74 20  |cmp.Syntax:.int |
0009d440  73 74 72 69 63 6d 70 20  28 63 68 61 72 20 2a 73  |stricmp (char *s|
0009d450  74 72 31 2c 20 63 68 61  72 20 2a 73 74 72 32 29  |tr1, char *str2)|
0009d460  3b 0a 48 65 61 64 65 72  3a 09 3c 54 69 6d 73 4c  |;.Header:.<TimsL|
0009d470  69 62 3a 4c 69 62 2e 68  3d 3e 4c 69 62 3e 0a 09  |ib:Lib.h=>Lib>..|
0009d480  3c 44 65 73 6b 4c 69 62  3a 53 74 72 2e 68 3d 3e  |<DeskLib:Str.h=>|
0009d490  53 74 72 5f 44 4c 3e 0a  0a 52 65 74 75 72 6e 73  |Str_DL>..Returns|
0009d4a0  3a 09 47 72 65 61 74 65  72 20 74 68 61 6e 2c 20  |:.Greater than, |
0009d4b0  6c 65 73 73 20 74 68 61  6e 20 6f 72 20 65 71 75  |less than or equ|
0009d4c0  61 6c 20 74 6f 20 7a 65  72 6f 2c 20 64 65 70 65  |al to zero, depe|
0009d4d0  6e 64 69 6e 67 20 69 66  20 74 68 65 20 73 74 72  |nding if the str|
0009d4e0  69 6e 67 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |ing pointed to b|
0009d4f0  79 20 73 74 72 31 20 69  73 20 67 72 65 61 74 65  |y str1 is greate|
0009d500  72 20 74 68 61 6e 2c 20  6c 65 73 73 20 74 68 61  |r than, less tha|
0009d510  6e 20 6f 72 20 65 71 75  61 6c 20 74 6f 20 74 68  |n or equal to th|
0009d520  65 20 73 74 72 69 6e 67  20 70 6f 69 6e 74 65 64  |e string pointed|
0009d530  20 74 6f 20 62 79 20 73  74 72 32 2e 0a 0a 54 68  | to by str2...Th|
0009d540  69 73 20 66 75 6e 63 74  69 6f 6e 73 20 63 6f 6d  |is functions com|
0009d550  70 61 72 65 73 20 74 68  65 20 74 77 6f 20 73 74  |pares the two st|
0009d560  72 69 6e 67 73 20 61 6e  64 20 72 65 74 75 72 6e  |rings and return|
0009d570  73 20 61 20 76 61 6c 75  65 20 61 63 63 6f 72 64  |s a value accord|
0009d580  69 6e 67 6c 79 2e 20 49  74 20 69 73 20 6e 6f 74  |ingly. It is not|
0009d590  20 63 61 73 65 20 73 65  6e 73 74 69 76 65 2c 20  | case senstive, |
0009d5a0  75 6e 6c 69 6b 65 20 3c  73 74 72 63 6d 70 3e 2e  |unlike <strcmp>.|
0009d5b0  44 41 54 41 5d 01 00 00  73 74 72 69 63 6d 70 63  |DATA]...stricmpc|
0009d5c0  72 0a 53 79 6e 74 61 78  3a 09 69 6e 74 20 73 74  |r.Syntax:.int st|
0009d5d0  72 69 63 6d 70 63 72 20  28 63 68 61 72 20 2a 73  |ricmpcr (char *s|
0009d5e0  74 72 31 2c 20 63 68 61  72 20 2a 73 74 72 32 29  |tr1, char *str2)|
0009d5f0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
0009d600  69 62 3a 53 74 72 2e 68  3d 3e 53 74 72 5f 44 4c  |ib:Str.h=>Str_DL|
0009d610  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 47 72 65 61  |>..Returns:.Grea|
0009d620  74 65 72 20 74 68 61 6e  2c 20 6c 65 73 73 20 74  |ter than, less t|
0009d630  68 61 6e 20 6f 72 20 65  71 75 61 6c 20 74 6f 20  |han or equal to |
0009d640  7a 65 72 6f 2c 20 64 65  70 65 6e 64 69 6e 67 20  |zero, depending |
0009d650  69 66 20 74 68 65 20 73  74 72 69 6e 67 20 70 6f  |if the string po|
0009d660  69 6e 74 65 64 20 74 6f  20 62 79 20 73 74 72 31  |inted to by str1|
0009d670  20 69 73 20 67 72 65 61  74 65 72 20 74 68 61 6e  | is greater than|
0009d680  2c 20 6c 65 73 73 20 74  68 61 6e 20 6f 72 20 65  |, less than or e|
0009d690  71 75 61 6c 20 74 6f 20  74 68 65 20 73 74 72 69  |qual to the stri|
0009d6a0  6e 67 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |ng pointed to by|
0009d6b0  20 73 74 72 32 2e 0a 0a  54 68 69 73 20 66 75 6e  | str2...This fun|
0009d6c0  63 74 69 6f 6e 20 69 73  20 65 71 75 69 76 61 6c  |ction is equival|
0009d6d0  65 6e 74 20 74 6f 20 3c  73 74 72 69 63 6d 70 3e  |ent to <stricmp>|
0009d6e0  2c 20 62 75 74 20 77 6f  72 6b 73 20 77 69 74 68  |, but works with|
0009d6f0  20 61 6e 79 20 63 6f 6e  74 72 6f 6c 20 63 6f 64  | any control cod|
0009d700  65 20 74 65 72 6d 69 6e  61 74 6f 72 2e 00 00 00  |e terminator....|
0009d710  44 41 54 41 97 01 00 00  73 74 72 69 6e 67 2e 68  |DATA....string.h|
0009d720  0a 54 68 65 20 5c 3c 73  74 72 69 6e 67 2e 68 5c  |.The \<string.h\|
0009d730  3e 20 68 65 61 64 65 72  20 64 65 63 6c 61 72 65  |> header declare|
0009d740  73 20 71 75 69 74 65 20  61 20 66 65 77 20 66 75  |s quite a few fu|
0009d750  6e 63 74 69 6f 6e 73 20  6d 61 69 6e 6c 79 20 74  |nctions mainly t|
0009d760  6f 20 64 6f 20 77 69 74  68 20 73 74 72 69 6e 67  |o do with string|
0009d770  73 20 28 6e 6f 20 73 75  72 70 72 69 73 65 20 74  |s (no surprise t|
0009d780  68 65 72 65 21 29 2e 20  49 74 20 61 6c 73 6f 20  |here!). It also |
0009d790  64 65 63 6c 61 72 65 73  20 6f 6e 65 20 74 79 70  |declares one typ|
0009d7a0  65 20 61 6e 64 20 64 65  66 69 6e 65 73 20 61 20  |e and defines a |
0009d7b0  6d 61 63 72 6f 2e 0a 0a  46 75 6e 63 74 69 6f 6e  |macro...Function|
0009d7c0  73 3a 0a 0a 23 49 6e 64  65 6e 74 20 35 0a 23 54  |s:..#Indent 5.#T|
0009d7d0  61 62 6c 65 20 33 20 32  33 0a 3c 43 6f 70 79 69  |able 3 23.<Copyi|
0009d7e0  6e 67 3d 3e 73 74 72 5f  63 6f 70 79 5f 3e 0a 3c  |ng=>str_copy_>.<|
0009d7f0  41 70 70 65 6e 64 69 6e  67 3d 3e 73 74 72 5f 63  |Appending=>str_c|
0009d800  61 74 5f 3e 0a 3c 43 6f  6d 70 61 72 69 73 6f 6e  |at_>.<Comparison|
0009d810  3d 3e 73 74 72 5f 63 6d  70 5f 3e 0a 3c 53 65 61  |=>str_cmp_>.<Sea|
0009d820  72 63 68 69 6e 67 3d 3e  73 74 72 5f 66 69 6e 64  |rching=>str_find|
0009d830  5f 3e 0a 3c 4d 69 73 63  65 6c 6c 61 6e 65 6f 75  |_>.<Miscellaneou|
0009d840  73 3d 3e 73 74 72 5f 6d  69 73 63 5f 3e 0a 23 45  |s=>str_misc_>.#E|
0009d850  6e 64 54 61 62 6c 65 0a  0a 23 49 6e 64 65 6e 74  |ndTable..#Indent|
0009d860  20 30 0a 4d 61 63 72 6f  3a 20 20 20 20 20 20 20  | 0.Macro:       |
0009d870  20 20 20 20 20 20 20 20  20 20 54 79 70 65 3a 0a  |          Type:.|
0009d880  0a 20 20 20 20 20 3c 4e  55 4c 4c 3e 20 20 20 20  |.     <NULL>    |
0009d890  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3c  |               <|
0009d8a0  73 69 7a 65 5f 74 3e 00  44 41 54 41 91 00 00 00  |size_t>.DATA....|
0009d8b0  44 65 73 6b 4c 69 62 3a  53 74 72 69 6e 67 43 52  |DeskLib:StringCR|
0009d8c0  2e 68 0a 56 65 72 73 69  6f 6e 3a 20 31 2e 31 33  |.h.Version: 1.13|
0009d8d0  20 28 33 30 20 4d 61 79  20 31 39 39 33 29 0a 23  | (30 May 1993).#|
0009d8e0  6c 69 6e 65 0a 54 68 69  73 20 68 65 61 64 65 72  |line.This header|
0009d8f0  20 69 73 20 6f 62 73 6f  6c 65 74 65 2e 20 49 74  | is obsolete. It|
0009d900  20 6e 6f 77 20 73 69 6d  70 6c 79 0a 3c 23 69 6e  | now simply.<#in|
0009d910  63 6c 75 64 65 3d 3e 69  6e 63 6c 75 64 65 3e 73  |clude=>include>s|
0009d920  20 3c 44 65 73 6b 4c 69  62 3a 53 74 72 2e 68 3d  | <DeskLib:Str.h=|
0009d930  3e 53 74 72 5f 44 4c 3e  2e 00 00 00 44 41 54 41  |>Str_DL>....DATA|
0009d940  ee 00 00 00 73 74 72 6c  65 6e 0a 53 79 6e 74 61  |....strlen.Synta|
0009d950  78 3a 09 3c 73 69 7a 65  5f 74 3e 20 73 74 72 6c  |x:.<size_t> strl|
0009d960  65 6e 20 28 63 68 61 72  20 2a 73 74 72 29 3b 0a  |en (char *str);.|
0009d970  48 65 61 64 65 72 3a 09  3c 73 74 72 69 6e 67 2e  |Header:.<string.|
0009d980  68 3d 3e 73 74 72 69 6e  67 3e 0a 0a 52 65 74 75  |h=>string>..Retu|
0009d990  72 6e 73 3a 09 4c 65 6e  67 74 68 20 6f 66 20 74  |rns:.Length of t|
0009d9a0  68 65 20 73 74 72 69 6e  67 2e 0a 0a 54 68 69 73  |he string...This|
0009d9b0  20 66 75 6e 63 74 69 6f  6e 20 77 6f 72 6b 73 20  | function works |
0009d9c0  6f 75 74 20 74 68 65 20  6c 65 6e 67 74 68 20 6f  |out the length o|
0009d9d0  66 20 74 68 65 20 73 74  72 69 6e 67 20 70 6f 69  |f the string poi|
0009d9e0  6e 74 65 64 20 74 6f 20  62 79 20 2f 73 74 72 2f  |nted to by /str/|
0009d9f0  20 28 69 65 20 74 68 65  20 6e 75 6d 62 65 72 20  | (ie the number |
0009da00  6f 66 20 63 68 61 72 61  63 74 65 72 73 20 62 65  |of characters be|
0009da10  66 6f 72 65 20 74 68 65  20 6e 75 6c 6c 20 74 65  |fore the null te|
0009da20  72 6d 69 6e 61 74 6f 72  29 2e 00 00 44 41 54 41  |rminator)...DATA|
0009da30  e9 00 00 00 73 74 72 6c  65 6e 63 72 0a 53 79 6e  |....strlencr.Syn|
0009da40  74 61 78 3a 09 69 6e 74  20 73 74 72 6c 65 6e 63  |tax:.int strlenc|
0009da50  72 20 28 63 68 61 72 20  2a 73 29 3b 0a 48 65 61  |r (char *s);.Hea|
0009da60  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 53 74  |der:.<DeskLib:St|
0009da70  72 2e 68 3d 3e 53 74 72  5f 44 4c 3e 0a 0a 52 65  |r.h=>Str_DL>..Re|
0009da80  74 75 72 6e 73 3a 09 4c  65 6e 67 74 68 20 6f 66  |turns:.Length of|
0009da90  20 74 68 65 20 73 74 72  69 6e 67 2e 0a 0a 54 68  | the string...Th|
0009daa0  69 73 20 66 75 6e 63 74  69 6f 6e 20 77 6f 72 6b  |is function work|
0009dab0  73 20 6f 75 74 20 74 68  65 20 6c 65 6e 67 74 68  |s out the length|
0009dac0  20 6f 66 20 74 68 65 20  73 74 72 69 6e 67 20 70  | of the string p|
0009dad0  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 2f 73 2f  |ointed to by /s/|
0009dae0  20 28 69 65 20 74 68 65  20 6e 75 6d 62 65 72 20  | (ie the number |
0009daf0  6f 66 20 63 68 61 72 61  63 74 65 72 73 20 62 65  |of characters be|
0009db00  66 6f 72 65 20 74 68 65  20 74 65 72 6d 69 6e 61  |fore the termina|
0009db10  74 6f 72 29 2e 00 00 00  44 41 54 41 15 01 00 00  |tor)....DATA....|
0009db20  73 74 72 6e 63 61 74 0a  53 79 6e 74 61 78 3a 09  |strncat.Syntax:.|
0009db30  63 68 61 72 20 2a 73 74  72 6e 63 61 74 20 28 63  |char *strncat (c|
0009db40  68 61 72 20 2a 73 74 72  31 2c 20 63 68 61 72 20  |har *str1, char |
0009db50  2a 73 74 72 32 2c 20 3c  73 69 7a 65 5f 74 3e 20  |*str2, <size_t> |
0009db60  6e 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 74 72  |n);.Header:.<str|
0009db70  69 6e 67 2e 68 3d 3e 73  74 72 69 6e 67 3e 0a 0a  |ing.h=>string>..|
0009db80  52 65 74 75 72 6e 73 3a  09 73 74 72 31 0a 0a 54  |Returns:.str1..T|
0009db90  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 61 70 70  |his function app|
0009dba0  65 6e 64 73 20 75 70 20  74 6f 20 2f 6e 2f 20 63  |ends up to /n/ c|
0009dbb0  68 61 72 61 63 74 65 72  73 20 6f 66 20 7b 2f 7d  |haracters of {/}|
0009dbc0  73 74 72 32 7b 2f 7d 20  74 6f 20 74 68 65 20 65  |str2{/} to the e|
0009dbd0  6e 64 20 6f 66 20 7b 2f  7d 73 74 72 31 7b 2f 7d  |nd of {/}str1{/}|
0009dbe0  2e 20 43 68 61 72 61 63  74 65 72 73 20 61 66 74  |. Characters aft|
0009dbf0  65 72 20 61 20 6e 75 6c  6c 20 62 79 74 65 20 61  |er a null byte a|
0009dc00  72 65 20 6e 6f 74 20 61  64 64 65 64 2e 20 54 68  |re not added. Th|
0009dc10  65 20 73 74 72 69 6e 67  73 20 73 68 6f 75 6c 64  |e strings should|
0009dc20  20 6e 6f 74 20 6f 76 65  72 6c 61 70 2e 00 00 00  | not overlap....|
0009dc30  44 41 54 41 95 01 00 00  73 74 72 6e 63 6d 70 0a  |DATA....strncmp.|
0009dc40  53 79 6e 74 61 78 3a 09  69 6e 74 20 73 74 72 6e  |Syntax:.int strn|
0009dc50  63 6d 70 20 28 63 68 61  72 20 2a 73 74 72 31 2c  |cmp (char *str1,|
0009dc60  20 63 68 61 72 20 2a 73  74 72 32 2c 20 3c 73 69  | char *str2, <si|
0009dc70  7a 65 5f 74 3e 20 6e 29  3b 0a 48 65 61 64 65 72  |ze_t> n);.Header|
0009dc80  3a 09 3c 73 74 72 69 6e  67 2e 68 3d 3e 73 74 72  |:.<string.h=>str|
0009dc90  69 6e 67 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 47  |ing>..Returns:.G|
0009dca0  72 65 61 74 65 72 20 74  68 61 6e 2c 20 6c 65 73  |reater than, les|
0009dcb0  73 20 74 68 61 6e 20 6f  72 20 65 71 75 61 6c 20  |s than or equal |
0009dcc0  74 6f 20 7a 65 72 6f 2c  20 64 65 70 65 6e 64 69  |to zero, dependi|
0009dcd0  6e 67 20 69 66 20 74 68  65 20 73 74 72 69 6e 67  |ng if the string|
0009dce0  20 70 6f 69 6e 74 65 64  20 74 6f 20 62 79 20 7b  | pointed to by {|
0009dcf0  2f 7d 73 74 72 31 7b 2f  7d 20 69 73 20 67 72 65  |/}str1{/} is gre|
0009dd00  61 74 65 72 20 74 68 61  6e 2c 20 6c 65 73 73 20  |ater than, less |
0009dd10  74 68 61 6e 20 6f 72 20  65 71 75 61 6c 20 74 6f  |than or equal to|
0009dd20  20 74 68 65 20 73 74 72  69 6e 67 20 70 6f 69 6e  | the string poin|
0009dd30  74 65 64 20 74 6f 20 62  79 20 7b 2f 7d 73 74 72  |ted to by {/}str|
0009dd40  32 7b 2f 7d 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |2{/}...This func|
0009dd50  74 69 6f 6e 20 63 6f 6d  70 61 72 65 73 20 75 70  |tion compares up|
0009dd60  20 74 6f 20 2f 6e 2f 20  63 68 61 72 61 63 74 65  | to /n/ characte|
0009dd70  72 73 20 61 6e 64 20 72  65 74 75 72 6e 73 20 61  |rs and returns a|
0009dd80  20 76 61 6c 75 65 20 61  73 20 61 70 70 72 6f 70  | value as approp|
0009dd90  72 69 61 74 65 2e 20 43  68 61 72 61 63 74 65 72  |riate. Character|
0009dda0  73 20 61 66 74 65 72 20  61 20 6e 75 6c 6c 20 62  |s after a null b|
0009ddb0  79 74 65 20 61 72 65 20  6e 6f 74 20 63 6f 6d 70  |yte are not comp|
0009ddc0  61 72 65 64 2e 00 00 00  44 41 54 41 3d 01 00 00  |ared....DATA=...|
0009ddd0  73 74 72 6e 63 70 79 0a  53 79 6e 74 61 78 3a 09  |strncpy.Syntax:.|
0009dde0  63 68 61 72 20 2a 73 74  72 6e 63 70 79 20 28 63  |char *strncpy (c|
0009ddf0  68 61 72 20 2a 73 74 72  31 2c 20 63 68 61 72 20  |har *str1, char |
0009de00  2a 73 74 72 32 2c 20 3c  73 69 7a 65 5f 74 3e 20  |*str2, <size_t> |
0009de10  6e 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 74 72  |n);.Header:.<str|
0009de20  69 6e 67 2e 68 3d 3e 73  74 72 69 6e 67 3e 0a 0a  |ing.h=>string>..|
0009de30  52 65 74 75 72 6e 73 3a  09 73 74 72 31 0a 0a 54  |Returns:.str1..T|
0009de40  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 6f 70  |his function cop|
0009de50  69 65 73 20 75 70 20 74  6f 20 2f 6e 2f 20 63 68  |ies up to /n/ ch|
0009de60  61 72 61 63 74 65 72 73  20 66 72 6f 6d 20 7b 2f  |aracters from {/|
0009de70  7d 73 74 72 32 7b 2f 7d  20 74 6f 20 7b 2f 7d 73  |}str2{/} to {/}s|
0009de80  74 72 31 7b 2f 7d 2e 20  49 66 20 61 20 6e 75 6c  |tr1{/}. If a nul|
0009de90  6c 20 63 68 61 72 61 63  74 65 72 20 69 73 20 72  |l character is r|
0009dea0  65 61 63 68 65 64 2c 20  74 68 65 20 72 65 6d 61  |eached, the rema|
0009deb0  69 6e 69 6e 67 20 63 68  61 72 61 63 74 65 72 73  |ining characters|
0009dec0  20 61 72 65 20 66 69 6c  6c 65 64 20 77 69 74 68  | are filled with|
0009ded0  20 6e 75 6c 6c 73 2e 20  7b 2f 7d 73 74 72 31 7b  | nulls. {/}str1{|
0009dee0  2f 7d 20 61 6e 64 20 7b  2f 7d 73 74 72 32 7b 2f  |/} and {/}str2{/|
0009def0  7d 20 73 68 6f 75 6c 64  20 6e 6f 74 20 6f 76 65  |} should not ove|
0009df00  72 6c 61 70 2e 00 00 00  44 41 54 41 3c 01 00 00  |rlap....DATA<...|
0009df10  73 74 72 6e 63 70 79 63  72 0a 53 79 6e 74 61 78  |strncpycr.Syntax|
0009df20  3a 09 63 68 61 72 20 2a  73 74 72 6e 63 70 79 63  |:.char *strncpyc|
0009df30  72 20 28 63 68 61 72 20  2a 73 31 2c 20 63 68 61  |r (char *s1, cha|
0009df40  72 20 2a 73 32 2c 20 3c  73 69 7a 65 5f 74 3e 20  |r *s2, <size_t> |
0009df50  6e 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |n);.Header:.<Des|
0009df60  6b 4c 69 62 3a 53 74 72  2e 68 3d 3e 53 74 72 5f  |kLib:Str.h=>Str_|
0009df70  44 4c 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 73 31  |DL>..Returns:.s1|
0009df80  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
0009df90  63 6f 70 69 65 73 20 75  70 20 74 6f 20 6e 20 63  |copies up to n c|
0009dfa0  68 61 72 61 63 74 65 72  73 20 66 72 6f 6d 20 7b  |haracters from {|
0009dfb0  2f 7d 73 32 7b 2f 7d 20  74 6f 20 7b 2f 7d 73 31  |/}s2{/} to {/}s1|
0009dfc0  7b 2f 7d 2e 20 49 66 20  61 20 74 65 72 6d 69 6e  |{/}. If a termin|
0009dfd0  61 74 6f 72 20 63 68 61  72 61 63 74 65 72 20 69  |ator character i|
0009dfe0  73 20 72 65 61 63 68 65  64 2c 20 74 68 65 20 72  |s reached, the r|
0009dff0  65 6d 61 69 6e 69 6e 67  20 63 68 61 72 61 63 74  |emaining charact|
0009e000  65 72 73 20 61 72 65 20  66 69 6c 6c 65 64 20 77  |ers are filled w|
0009e010  69 74 68 20 6e 75 6c 6c  73 2e 20 7b 2f 7d 73 31  |ith nulls. {/}s1|
0009e020  7b 2f 7d 20 61 6e 64 20  7b 2f 7d 73 32 7b 2f 7d  |{/} and {/}s2{/}|
0009e030  20 73 68 6f 75 6c 64 20  6e 6f 74 20 6f 76 65 72  | should not over|
0009e040  6c 61 70 2e 44 41 54 41  a0 01 00 00 73 74 72 6e  |lap.DATA....strn|
0009e050  69 63 6d 70 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |icmp.Syntax:.int|
0009e060  20 73 74 72 6e 69 63 6d  70 20 28 63 68 61 72 20  | strnicmp (char |
0009e070  2a 73 74 72 31 2c 20 63  68 61 72 20 2a 73 74 72  |*str1, char *str|
0009e080  32 2c 20 3c 73 69 7a 65  5f 74 3e 20 6e 29 3b 0a  |2, <size_t> n);.|
0009e090  48 65 61 64 65 72 3a 09  3c 54 69 6d 73 4c 69 62  |Header:.<TimsLib|
0009e0a0  3a 4c 69 62 2e 68 3d 3e  4c 69 62 3e 0a 09 3c 44  |:Lib.h=>Lib>..<D|
0009e0b0  65 73 6b 4c 69 62 3a 53  74 72 2e 68 3d 3e 53 74  |eskLib:Str.h=>St|
0009e0c0  72 5f 44 4c 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |r_DL>..Returns:.|
0009e0d0  47 72 65 61 74 65 72 20  74 68 61 6e 2c 20 6c 65  |Greater than, le|
0009e0e0  73 73 20 74 68 61 6e 20  6f 72 20 65 71 75 61 6c  |ss than or equal|
0009e0f0  20 74 6f 20 7a 65 72 6f  2c 20 64 65 70 65 6e 64  | to zero, depend|
0009e100  69 6e 67 20 69 66 20 74  68 65 20 73 74 72 69 6e  |ing if the strin|
0009e110  67 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 79 20  |g pointed to by |
0009e120  73 74 72 31 20 69 73 20  67 72 65 61 74 65 72 20  |str1 is greater |
0009e130  74 68 61 6e 2c 20 6c 65  73 73 20 74 68 61 6e 20  |than, less than |
0009e140  6f 72 20 65 71 75 61 6c  20 74 6f 20 74 68 65 20  |or equal to the |
0009e150  73 74 72 69 6e 67 20 70  6f 69 6e 74 65 64 20 74  |string pointed t|
0009e160  6f 20 62 79 20 73 74 72  32 2e 0a 0a 54 68 69 73  |o by str2...This|
0009e170  20 66 75 6e 63 74 69 6f  6e 73 20 63 6f 6d 70 61  | functions compa|
0009e180  72 65 73 20 75 70 20 74  6f 20 2f 6e 2f 20 63 68  |res up to /n/ ch|
0009e190  61 72 61 63 74 65 72 73  20 61 6e 64 20 72 65 74  |aracters and ret|
0009e1a0  75 72 6e 73 20 61 20 76  61 6c 75 65 20 61 63 63  |urns a value acc|
0009e1b0  6f 72 64 69 6e 67 6c 79  2e 20 49 74 20 69 73 20  |ordingly. It is |
0009e1c0  6e 6f 74 20 63 61 73 65  20 73 65 6e 73 74 69 76  |not case senstiv|
0009e1d0  65 2c 20 75 6e 6c 69 6b  65 20 3c 73 74 72 6e 63  |e, unlike <strnc|
0009e1e0  6d 70 3e 2e 44 41 54 41  6c 01 00 00 73 74 72 6e  |mp>.DATAl...strn|
0009e1f0  69 63 6d 70 63 72 0a 53  79 6e 74 61 78 3a 09 69  |icmpcr.Syntax:.i|
0009e200  6e 74 20 73 74 72 6e 69  63 6d 70 63 72 20 28 63  |nt strnicmpcr (c|
0009e210  68 61 72 20 2a 73 74 72  31 2c 20 63 68 61 72 20  |har *str1, char |
0009e220  2a 73 74 72 32 2c 20 3c  73 69 7a 65 5f 74 3e 20  |*str2, <size_t> |
0009e230  6e 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |n);.Header:.<Des|
0009e240  6b 4c 69 62 3a 53 74 72  2e 68 3d 3e 53 74 72 5f  |kLib:Str.h=>Str_|
0009e250  44 4c 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 47 72  |DL>..Returns:.Gr|
0009e260  65 61 74 65 72 20 74 68  61 6e 2c 20 6c 65 73 73  |eater than, less|
0009e270  20 74 68 61 6e 20 6f 72  20 65 71 75 61 6c 20 74  | than or equal t|
0009e280  6f 20 7a 65 72 6f 2c 20  64 65 70 65 6e 64 69 6e  |o zero, dependin|
0009e290  67 20 69 66 20 74 68 65  20 73 74 72 69 6e 67 20  |g if the string |
0009e2a0  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 73 74  |pointed to by st|
0009e2b0  72 31 20 69 73 20 67 72  65 61 74 65 72 20 74 68  |r1 is greater th|
0009e2c0  61 6e 2c 20 6c 65 73 73  20 74 68 61 6e 20 6f 72  |an, less than or|
0009e2d0  20 65 71 75 61 6c 20 74  6f 20 74 68 65 20 73 74  | equal to the st|
0009e2e0  72 69 6e 67 20 70 6f 69  6e 74 65 64 20 74 6f 20  |ring pointed to |
0009e2f0  62 79 20 73 74 72 32 2e  0a 0a 54 68 69 73 20 66  |by str2...This f|
0009e300  75 6e 63 74 69 6f 6e 20  69 73 20 65 71 75 69 76  |unction is equiv|
0009e310  61 6c 65 6e 74 20 74 6f  20 3c 73 74 72 6e 69 63  |alent to <strnic|
0009e320  6d 70 3e 2c 20 62 75 74  20 77 6f 72 6b 73 20 77  |mp>, but works w|
0009e330  69 74 68 20 61 6e 79 20  63 6f 6e 74 72 6f 6c 20  |ith any control |
0009e340  63 6f 64 65 20 74 65 72  6d 69 6e 61 74 6f 72 2e  |code terminator.|
0009e350  44 41 54 41 ff 00 00 00  73 74 72 70 62 72 6b 0a  |DATA....strpbrk.|
0009e360  53 79 6e 74 61 78 3a 09  63 68 61 72 20 2a 73 74  |Syntax:.char *st|
0009e370  72 70 62 72 6b 20 28 63  68 61 72 20 2a 73 74 72  |rpbrk (char *str|
0009e380  31 2c 20 63 68 61 72 20  2a 73 74 72 32 29 3b 0a  |1, char *str2);.|
0009e390  48 65 61 64 65 72 3a 09  3c 73 74 72 69 6e 67 2e  |Header:.<string.|
0009e3a0  68 3d 3e 73 74 72 69 6e  67 3e 0a 0a 52 65 74 75  |h=>string>..Retu|
0009e3b0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
0009e3c0  74 68 65 20 66 6f 75 6e  64 20 63 68 61 72 61 63  |the found charac|
0009e3d0  74 65 72 2c 20 6f 72 20  6e 75 6c 6c 20 70 6f 69  |ter, or null poi|
0009e3e0  6e 74 65 72 20 69 66 20  6e 6f 6e 65 20 66 6f 75  |nter if none fou|
0009e3f0  6e 64 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |nd...This functi|
0009e400  6f 6e 20 66 69 6e 64 73  20 74 68 65 20 66 69 72  |on finds the fir|
0009e410  73 74 20 63 68 61 72 61  63 74 65 72 20 69 6e 20  |st character in |
0009e420  7b 2f 7d 73 74 72 31 7b  2f 7d 20 77 68 69 63 68  |{/}str1{/} which|
0009e430  20 69 73 20 61 6c 73 6f  20 70 72 65 73 65 6e 74  | is also present|
0009e440  20 69 6e 20 7b 2f 7d 73  74 72 32 7b 2f 7d 2e 00  | in {/}str2{/}..|
0009e450  44 41 54 41 2c 01 00 00  73 74 72 72 63 68 72 0a  |DATA,...strrchr.|
0009e460  53 79 6e 74 61 78 3a 09  63 68 61 72 20 2a 73 74  |Syntax:.char *st|
0009e470  72 72 63 68 72 20 28 63  68 61 72 20 2a 73 74 72  |rrchr (char *str|
0009e480  2c 20 69 6e 74 20 63 29  3b 0a 48 65 61 64 65 72  |, int c);.Header|
0009e490  3a 09 3c 73 74 72 69 6e  67 2e 68 3d 3e 73 74 72  |:.<string.h=>str|
0009e4a0  69 6e 67 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |ing>..Returns:.P|
0009e4b0  6f 69 6e 74 65 72 20 74  68 65 20 66 6f 75 6e 64  |ointer the found|
0009e4c0  20 63 68 61 72 61 63 74  65 72 2c 20 6f 72 20 61  | character, or a|
0009e4d0  20 6e 75 6c 6c 20 70 6f  69 6e 74 65 72 20 69 66  | null pointer if|
0009e4e0  20 6e 6f 74 20 66 6f 75  6e 64 2e 0a 0a 54 68 69  | not found...Thi|
0009e4f0  73 20 66 75 6e 63 74 69  6f 6e 20 73 65 61 72 63  |s function searc|
0009e500  68 65 73 20 66 6f 72 20  74 68 65 20 6c 61 73 74  |hes for the last|
0009e510  20 6f 63 63 75 72 65 6e  63 65 20 6f 66 20 2f 63  | occurence of /c|
0009e520  2f 20 28 63 6f 6e 76 65  72 74 65 64 20 74 6f 20  |/ (converted to |
0009e530  61 20 7b 2f 7d 63 68 61  72 7b 2f 7d 29 20 69 6e  |a {/}char{/}) in|
0009e540  20 74 68 65 20 73 74 72  69 6e 67 20 70 6f 69 6e  | the string poin|
0009e550  74 65 64 20 74 6f 20 62  79 20 2f 73 74 72 2f 20  |ted to by /str/ |
0009e560  28 69 6e 63 6c 75 64 69  6e 67 20 6e 75 6c 6c 20  |(including null |
0009e570  74 65 72 6d 69 6e 61 74  6f 72 29 2e 44 41 54 41  |terminator).DATA|
0009e580  5c 01 00 00 53 74 72 53  61 76 65 0a 53 79 6e 74  |\...StrSave.Synt|
0009e590  61 78 3a 09 63 68 61 72  20 2a 53 74 72 53 61 76  |ax:.char *StrSav|
0009e5a0  65 20 28 63 68 61 72 20  2a 73 72 63 2c 20 69 6e  |e (char *src, in|
0009e5b0  74 20 6c 65 6e 67 74 68  29 3b 0a 48 65 61 64 65  |t length);.Heade|
0009e5c0  72 3a 09 3c 54 69 6d 73  4c 69 62 3a 4c 69 62 2e  |r:.<TimsLib:Lib.|
0009e5d0  68 3d 3e 4c 69 62 3e 0a  0a 52 65 74 75 72 6e 73  |h=>Lib>..Returns|
0009e5e0  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 74 68 65  |:.Pointer to the|
0009e5f0  20 6e 65 77 20 63 6f 70  79 20 6f 66 20 74 68 65  | new copy of the|
0009e600  20 73 74 72 69 6e 67 2e  0a 0a 54 68 69 73 20 66  | string...This f|
0009e610  75 6e 63 74 69 6f 6e 20  63 6f 70 69 65 73 20 61  |unction copies a|
0009e620  20 73 74 72 69 6e 67 20  2f 73 74 72 2f 2c 20 61  | string /str/, a|
0009e630  6c 6c 6f 63 61 74 69 6e  67 20 73 70 61 63 65 20  |llocating space |
0009e640  66 6f 72 20 74 68 65 20  64 65 73 74 69 6e 61 74  |for the destinat|
0009e650  69 6f 6e 2e 20 49 66 20  2f 6c 65 6e 67 74 68 2f  |ion. If /length/|
0009e660  20 3e 20 30 20 74 68 65  6e 20 2f 6c 65 6e 67 74  | > 0 then /lengt|
0009e670  68 2f 20 62 79 74 65 73  20 77 69 6c 6c 20 62 65  |h/ bytes will be|
0009e680  20 61 6c 6c 6f 63 61 74  65 64 2c 20 65 6c 73 65  | allocated, else|
0009e690  20 69 66 20 2f 6c 65 6e  67 74 68 2f 20 3d 20 30  | if /length/ = 0|
0009e6a0  20 6a 75 73 74 20 65 6e  6f 75 67 68 20 73 70 61  | just enough spa|
0009e6b0  63 65 20 74 6f 20 68 6f  6c 64 20 74 68 65 20 73  |ce to hold the s|
0009e6c0  74 72 69 6e 67 20 77 69  6c 6c 20 62 65 20 61 6c  |tring will be al|
0009e6d0  6c 6f 63 61 74 65 64 2e  44 41 54 41 b2 01 00 00  |located.DATA....|
0009e6e0  53 74 72 53 61 76 65 44  62 75 67 0a 53 79 6e 74  |StrSaveDbug.Synt|
0009e6f0  61 78 3a 09 63 68 61 72  20 2a 53 74 72 53 61 76  |ax:.char *StrSav|
0009e700  65 44 62 75 67 20 28 63  68 61 72 20 2a 73 72 63  |eDbug (char *src|
0009e710  2c 20 69 6e 74 20 6c 65  6e 67 74 68 2c 20 63 68  |, int length, ch|
0009e720  61 72 20 2a 66 69 6c 65  2c 20 69 6e 74 20 6c 69  |ar *file, int li|
0009e730  6e 65 29 3b 0a 48 65 61  64 65 72 3a 09 3c 54 69  |ne);.Header:.<Ti|
0009e740  6d 73 4c 69 62 3a 4c 69  62 2e 68 3d 3e 4c 69 62  |msLib:Lib.h=>Lib|
0009e750  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
0009e760  74 65 72 20 74 6f 20 74  68 65 20 6e 65 77 20 63  |ter to the new c|
0009e770  6f 70 79 20 6f 66 20 74  68 65 20 73 74 72 69 6e  |opy of the strin|
0009e780  67 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |g...This functio|
0009e790  6e 20 69 73 20 69 64 65  6e 74 69 63 61 6c 20 74  |n is identical t|
0009e7a0  6f 20 3c 53 74 72 53 61  76 65 3e 2c 20 62 75 74  |o <StrSave>, but|
0009e7b0  20 61 64 64 73 20 73 6f  75 72 63 65 20 66 69 6c  | adds source fil|
0009e7c0  65 20 61 6e 64 20 6c 69  6e 65 20 69 6e 66 6f 72  |e and line infor|
0009e7d0  6d 61 74 69 6f 6e 2e 20  49 74 20 69 73 20 69 6e  |mation. It is in|
0009e7e0  74 65 6e 64 65 64 20 74  6f 20 62 65 20 75 73 65  |tended to be use|
0009e7f0  64 20 77 69 74 68 20 74  68 65 20 6d 61 63 72 6f  |d with the macro|
0009e800  20 2f 73 74 72 73 61 76  65 64 62 75 67 2f 2c 20  | /strsavedbug/, |
0009e810  77 68 69 63 68 20 69 73  20 63 61 6c 6c 65 64 20  |which is called |
0009e820  62 79 20 53 74 72 53 61  76 65 20 69 66 20 3c 45  |by StrSave if <E|
0009e830  6e 61 62 6c 65 44 62 75  67 3e 20 69 73 20 3c 23  |nableDbug> is <#|
0009e840  69 6e 63 6c 75 64 65 3d  3e 69 6e 63 6c 75 64 65  |include=>include|
0009e850  3e 64 2e 20 42 61 73 69  63 61 6c 6c 79 2c 20 74  |>d. Basically, t|
0009e860  68 69 73 20 69 73 20 6e  65 76 65 72 20 63 61 6c  |his is never cal|
0009e870  6c 65 64 20 2d 20 61 6c  77 61 79 73 20 63 61 6c  |led - always cal|
0009e880  6c 20 53 74 72 53 61 76  65 2e 00 00 44 41 54 41  |l StrSave...DATA|
0009e890  02 01 00 00 73 74 72 73  70 6e 0a 53 79 6e 74 61  |....strspn.Synta|
0009e8a0  78 3a 09 3c 73 69 7a 65  5f 74 3e 20 73 74 72 73  |x:.<size_t> strs|
0009e8b0  70 6e 20 28 63 68 61 72  20 2a 73 74 72 31 2c 20  |pn (char *str1, |
0009e8c0  63 68 61 72 20 2a 73 74  72 32 29 3b 0a 48 65 61  |char *str2);.Hea|
0009e8d0  64 65 72 3a 09 3c 73 74  72 69 6e 67 2e 68 3d 3e  |der:.<string.h=>|
0009e8e0  73 74 72 69 6e 67 3e 0a  0a 52 65 74 75 72 6e 73  |string>..Returns|
0009e8f0  3a 09 54 68 65 20 6e 75  6d 62 65 72 20 6f 66 20  |:.The number of |
0009e900  63 68 61 72 61 63 74 65  72 73 2e 0a 0a 54 68 69  |characters...Thi|
0009e910  73 20 66 75 6e 63 74 69  6f 6e 20 66 69 6e 64 73  |s function finds|
0009e920  20 74 68 65 20 6e 75 6d  62 65 72 20 6f 66 20 63  | the number of c|
0009e930  68 61 72 61 63 74 65 72  73 20 61 74 20 74 68 65  |haracters at the|
0009e940  20 73 74 61 72 74 20 6f  66 20 7b 2f 7d 73 74 72  | start of {/}str|
0009e950  31 7b 2f 7d 20 77 68 69  63 68 20 61 72 65 20 61  |1{/} which are a|
0009e960  6c 73 6f 20 70 72 65 73  65 6e 74 20 69 6e 20 7b  |lso present in {|
0009e970  2f 7d 73 74 72 32 7b 2f  7d 2e 20 53 65 65 20 61  |/}str2{/}. See a|
0009e980  6c 73 6f 20 3c 73 74 72  63 73 70 6e 3e 2e 00 00  |lso <strcspn>...|
0009e990  44 41 54 41 4a 01 00 00  73 74 72 73 74 72 0a 53  |DATAJ...strstr.S|
0009e9a0  79 6e 74 61 78 3a 09 63  68 61 72 20 2a 73 74 72  |yntax:.char *str|
0009e9b0  73 74 72 20 28 63 68 61  72 20 2a 73 74 72 31 2c  |str (char *str1,|
0009e9c0  20 63 68 61 72 20 2a 73  74 72 32 29 3b 0a 48 65  | char *str2);.He|
0009e9d0  61 64 65 72 3a 09 3c 73  74 72 69 6e 67 2e 68 3d  |ader:.<string.h=|
0009e9e0  3e 73 74 72 69 6e 67 3e  0a 0a 52 65 74 75 72 6e  |>string>..Return|
0009e9f0  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 74 68  |s:.Pointer to th|
0009ea00  65 20 66 6f 75 6e 64 20  73 74 72 69 6e 67 2c 20  |e found string, |
0009ea10  6f 72 20 61 20 6e 75 6c  6c 20 70 6f 69 6e 74 65  |or a null pointe|
0009ea20  72 20 69 66 20 6e 6f 74  20 66 6f 75 6e 64 2e 0a  |r if not found..|
0009ea30  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 73  |.This function s|
0009ea40  65 61 72 63 68 65 73 20  66 6f 72 20 74 68 65 20  |earches for the |
0009ea50  73 74 72 69 6e 67 20 70  6f 69 6e 74 65 64 20 74  |string pointed t|
0009ea60  6f 20 62 79 20 7b 2f 7d  73 74 72 32 7b 2f 7d 20  |o by {/}str2{/} |
0009ea70  69 6e 20 74 68 65 20 73  74 72 69 6e 67 20 70 6f  |in the string po|
0009ea80  69 6e 74 65 64 20 74 6f  20 62 79 20 7b 2f 7d 73  |inted to by {/}s|
0009ea90  74 72 31 7b 2f 7d 2e 20  49 66 20 7b 2f 7d 73 74  |tr1{/}. If {/}st|
0009eaa0  72 32 7b 2f 7d 20 69 73  20 61 6e 20 65 6d 70 74  |r2{/} is an empt|
0009eab0  79 20 73 74 72 69 6e 67  2c 20 74 68 65 20 66 75  |y string, the fu|
0009eac0  6e 63 74 69 6f 6e 20 72  65 74 75 72 6e 73 20 7b  |nction returns {|
0009ead0  2f 7d 73 74 72 31 7b 2f  7d 2e 00 00 44 41 54 41  |/}str1{/}...DATA|
0009eae0  ce 02 00 00 73 74 72 74  6f 64 0a 53 79 6e 74 61  |....strtod.Synta|
0009eaf0  78 3a 09 64 6f 75 62 6c  65 20 73 74 72 74 6f 64  |x:.double strtod|
0009eb00  20 28 63 68 61 72 20 2a  73 74 72 2c 20 63 68 61  | (char *str, cha|
0009eb10  72 20 2a 2a 65 6e 64 29  3b 0a 48 65 61 64 65 72  |r **end);.Header|
0009eb20  3a 09 3c 73 74 64 6c 69  62 2e 68 3d 3e 73 74 64  |:.<stdlib.h=>std|
0009eb30  6c 69 62 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 54  |lib>..Returns:.T|
0009eb40  68 65 20 63 6f 6e 76 65  72 74 65 64 20 76 61 6c  |he converted val|
0009eb50  75 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ue...This functi|
0009eb60  6f 6e 20 63 6f 6e 76 65  72 74 73 20 74 68 65 20  |on converts the |
0009eb70  73 74 72 69 6e 67 20 70  6f 69 6e 74 65 64 20 74  |string pointed t|
0009eb80  6f 20 62 79 20 2f 73 74  72 2f 20 74 6f 20 61 20  |o by /str/ to a |
0009eb90  2f 64 6f 75 62 6c 65 2f  2e 20 49 74 20 64 6f 65  |/double/. It doe|
0009eba0  73 20 74 68 69 73 20 62  79 20 73 70 6c 69 74 74  |s this by splitt|
0009ebb0  69 6e 67 20 74 68 65 20  73 74 72 69 6e 67 20 69  |ing the string i|
0009ebc0  6e 74 6f 20 74 68 72 65  65 20 62 69 74 73 20 2d  |nto three bits -|
0009ebd0  20 77 68 69 74 65 20 73  70 61 63 65 20 61 74 20  | white space at |
0009ebe0  74 68 65 20 73 74 61 72  74 2c 20 74 68 65 6e 20  |the start, then |
0009ebf0  74 68 65 20 6e 75 6d 62  65 72 2c 20 74 68 65 6e  |the number, then|
0009ec00  20 74 68 65 20 72 65 73  74 20 6f 66 20 74 68 65  | the rest of the|
0009ec10  20 73 74 72 69 6e 67 20  77 68 69 63 68 20 69 73  | string which is|
0009ec20  20 75 6e 72 65 63 6f 67  6e 69 73 65 64 2e 20 54  | unrecognised. T|
0009ec30  68 65 20 6d 69 64 64 6c  65 20 62 69 74 20 69 73  |he middle bit is|
0009ec40  20 63 6f 6e 76 65 72 74  65 64 20 74 6f 20 61 20  | converted to a |
0009ec50  2f 64 6f 75 62 6c 65 2f  20 61 6e 64 20 72 65 74  |/double/ and ret|
0009ec60  75 72 6e 65 64 2c 20 61  6e 64 20 61 20 70 6f 69  |urned, and a poi|
0009ec70  6e 74 65 72 20 74 6f 20  74 68 65 20 6c 61 73 74  |nter to the last|
0009ec80  20 62 69 74 20 69 73 20  72 65 74 75 72 6e 65 64  | bit is returned|
0009ec90  20 69 6e 20 74 68 65 20  7b 2f 7d 63 68 61 72 a0  | in the {/}char.|
0009eca0  2a 7b 2f 7d 20 70 6f 69  6e 74 65 64 20 74 6f 20  |*{/} pointed to |
0009ecb0  62 79 20 2f 65 6e 64 2f  2e 0a 0a 49 66 20 74 68  |by /end/...If th|
0009ecc0  65 20 73 74 72 69 6e 67  20 63 6f 75 6c 64 20 6e  |e string could n|
0009ecd0  6f 74 20 62 65 20 63 6f  6e 76 65 72 74 65 64 2c  |ot be converted,|
0009ece0  20 7a 65 72 6f 20 69 73  20 72 65 74 75 72 6e 65  | zero is returne|
0009ecf0  64 2e 20 49 66 20 69 74  20 63 6f 75 6c 64 20 62  |d. If it could b|
0009ed00  75 74 20 77 61 73 20 74  6f 6f 20 62 69 67 20 74  |ut was too big t|
0009ed10  6f 20 62 65 20 72 65 74  75 72 6e 65 64 2c 20 2b  |o be returned, +|
0009ed20  2f 2d 20 3c 48 55 47 45  5f 56 41 4c 3e 20 69 73  |/- <HUGE_VAL> is|
0009ed30  20 72 65 74 75 72 6e 65  64 20 61 6e 64 20 3c 45  | returned and <E|
0009ed40  52 41 4e 47 45 3e 20 69  73 20 73 74 6f 72 65 64  |RANGE> is stored|
0009ed50  20 69 6e 20 3c 65 72 72  6e 6f 3e 2e 20 49 66 20  | in <errno>. If |
0009ed60  69 74 20 69 73 20 74 6f  6f 20 73 6d 61 6c 6c 20  |it is too small |
0009ed70  74 6f 20 72 65 74 75 72  6e 2c 20 7a 65 72 6f 20  |to return, zero |
0009ed80  69 73 20 72 65 74 75 72  6e 65 64 20 61 6e 64 20  |is returned and |
0009ed90  45 52 41 4e 47 45 20 69  73 20 73 74 6f 72 65 64  |ERANGE is stored|
0009eda0  20 69 6e 20 65 72 72 6e  6f 2e 00 00 44 41 54 41  | in errno...DATA|
0009edb0  64 03 00 00 73 74 72 74  6f 6b 0a 53 79 6e 74 61  |d...strtok.Synta|
0009edc0  78 3a 09 63 68 61 72 20  2a 73 74 72 74 6f 6b 20  |x:.char *strtok |
0009edd0  28 63 68 61 72 20 2a 73  74 72 31 2c 20 63 68 61  |(char *str1, cha|
0009ede0  72 20 2a 73 74 72 32 29  3b 0a 48 65 61 64 65 72  |r *str2);.Header|
0009edf0  3a 09 3c 73 74 72 69 6e  67 2e 68 3d 3e 73 74 72  |:.<string.h=>str|
0009ee00  69 6e 67 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |ing>..Returns:.P|
0009ee10  6f 69 6e 74 65 72 20 74  6f 20 74 68 65 20 74 6f  |ointer to the to|
0009ee20  6b 65 6e 2c 20 6f 72 20  61 20 6e 75 6c 6c 20 70  |ken, or a null p|
0009ee30  6f 69 6e 74 65 72 20 69  66 20 6e 6f 6e 65 20 66  |ointer if none f|
0009ee40  6f 75 6e 64 2e 0a 0a 54  68 69 73 20 69 73 20 61  |ound...This is a|
0009ee50  20 75 73 65 66 75 6c 20  66 75 6e 63 74 69 6f 6e  | useful function|
0009ee60  21 20 54 68 65 20 66 69  72 73 74 20 74 69 6d 65  |! The first time|
0009ee70  20 79 6f 75 20 63 61 6c  6c 20 69 74 2c 20 79 6f  | you call it, yo|
0009ee80  75 20 70 61 73 73 20 69  74 20 61 20 73 74 72 69  |u pass it a stri|
0009ee90  6e 67 20 69 6e 20 7b 2f  7d 73 74 72 31 7b 2f 7d  |ng in {/}str1{/}|
0009eea0  20 61 6e 64 20 61 20 73  65 70 61 72 61 74 6f 72  | and a separator|
0009eeb0  20 69 6e 20 7b 2f 7d 73  74 72 32 7b 2f 7d 2e 20  | in {/}str2{/}. |
0009eec0  53 75 62 73 65 71 75 65  6e 74 20 63 61 6c 6c 73  |Subsequent calls|
0009eed0  20 64 6f 20 6e 6f 74 20  6e 65 65 64 20 74 6f 20  | do not need to |
0009eee0  70 61 73 73 20 7b 2f 7d  73 74 72 31 7b 2f 7d 2c  |pass {/}str1{/},|
0009eef0  20 69 74 20 69 73 20 72  65 6d 65 6d 62 65 72 65  | it is remembere|
0009ef00  64 2e 0a 0a 54 68 65 20  66 75 6e 63 74 69 6f 6e  |d...The function|
0009ef10  20 73 65 61 72 63 68 65  73 20 74 68 65 20 73 74  | searches the st|
0009ef20  72 69 6e 67 20 69 6e 20  7b 2f 7d 73 74 72 31 7b  |ring in {/}str1{|
0009ef30  2f 7d 20 66 6f 72 20 61  20 63 68 61 72 61 63 74  |/} for a charact|
0009ef40  65 72 20 77 68 69 63 68  20 69 73 20 63 6f 6e 74  |er which is cont|
0009ef50  61 69 6e 65 64 20 69 6e  20 7b 2f 7d 73 74 72 32  |ained in {/}str2|
0009ef60  7b 2f 7d 2e 20 49 74 20  74 68 65 6e 20 73 74 6f  |{/}. It then sto|
0009ef70  72 65 73 20 61 20 6e 75  6c 6c 20 62 79 74 65 20  |res a null byte |
0009ef80  68 65 72 65 20 61 6e 64  20 72 65 74 75 72 6e 73  |here and returns|
0009ef90  20 61 20 70 6f 69 6e 74  65 72 20 74 6f 20 74 68  | a pointer to th|
0009efa0  65 20 73 74 61 72 74 20  6f 66 20 7b 2f 7d 73 74  |e start of {/}st|
0009efb0  72 31 7b 2f 7d 20 73 6f  20 74 68 65 20 72 65 74  |r1{/} so the ret|
0009efc0  75 72 6e 65 64 20 73 74  72 69 6e 67 20 69 73 20  |urned string is |
0009efd0  65 76 65 72 79 74 68 69  6e 67 20 75 70 20 74 6f  |everything up to|
0009efe0  20 74 68 69 73 20 70 6f  69 6e 74 2e 20 46 6f 72  | this point. For|
0009eff0  20 73 75 62 73 65 71 75  65 6e 74 20 63 61 6c 6c  | subsequent call|
0009f000  73 2c 20 74 68 65 20 73  65 61 72 63 68 69 6e 67  |s, the searching|
0009f010  20 73 74 61 72 74 73 20  61 66 74 65 72 20 74 68  | starts after th|
0009f020  65 20 6e 75 6c 6c 20 62  79 74 65 20 70 6c 61 63  |e null byte plac|
0009f030  65 64 20 6c 61 73 74 20  74 69 6d 65 2e 20 45 78  |ed last time. Ex|
0009f040  61 6d 70 6c 65 3a 0a 0a  23 54 61 62 0a 20 73 74  |ample:..#Tab. st|
0009f050  72 74 6f 6b 28 22 41 44  46 53 3a 3a 42 6f 62 2e  |rtok("ADFS::Bob.|
0009f060  24 2e 4d 61 65 6c 73 74  72 6f 6d 22 2c 22 3a 22  |$.Maelstrom",":"|
0009f070  29 09 3d 20 22 41 44 46  53 22 0a 20 73 74 72 74  |).= "ADFS". strt|
0009f080  6f 6b 28 3c 4e 55 4c 4c  3e 2c 22 2e 22 29 09 3d  |ok(<NULL>,".").=|
0009f090  20 22 3a 42 6f 62 22 0a  20 73 74 72 74 6f 6b 28  | ":Bob". strtok(|
0009f0a0  4e 55 4c 4c 2c 22 20 22  29 09 3d 20 22 24 2e 4d  |NULL," ").= "$.M|
0009f0b0  61 65 6c 73 74 72 6f 6d  22 0a 0a 54 68 69 73 20  |aelstrom"..This |
0009f0c0  6d 61 6b 65 73 20 69 74  20 76 65 72 79 20 65 61  |makes it very ea|
0009f0d0  73 79 20 74 6f 20 65 78  74 72 61 63 74 20 66 69  |sy to extract fi|
0009f0e0  6c 69 6e 67 20 73 79 73  74 65 6d 73 2c 20 64 72  |ling systems, dr|
0009f0f0  69 76 65 73 20 61 6e 64  20 70 61 74 68 6e 61 6d  |ives and pathnam|
0009f100  65 73 2c 20 64 6f 65 73  6e 27 74 20 69 74 3f 21  |es, doesn't it?!|
0009f110  44 41 54 41 28 03 00 00  73 74 72 74 6f 6c 0a 53  |DATA(...strtol.S|
0009f120  79 6e 74 61 78 3a 09 6c  6f 6e 67 20 69 6e 74 20  |yntax:.long int |
0009f130  73 74 72 74 6f 6c 20 28  63 68 61 72 20 2a 73 74  |strtol (char *st|
0009f140  72 2c 20 63 68 61 72 20  2a 2a 65 6e 64 2c 20 69  |r, char **end, i|
0009f150  6e 74 20 62 61 73 65 29  3b 0a 48 65 61 64 65 72  |nt base);.Header|
0009f160  3a 09 3c 73 74 64 6c 69  62 2e 68 3d 3e 73 74 64  |:.<stdlib.h=>std|
0009f170  6c 69 62 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 54  |lib>..Returns:.T|
0009f180  68 65 20 63 6f 6e 76 65  72 74 65 64 20 76 61 6c  |he converted val|
0009f190  75 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ue...This functi|
0009f1a0  6f 6e 20 63 6f 6e 76 65  72 74 73 20 74 68 65 20  |on converts the |
0009f1b0  73 74 72 69 6e 67 20 70  6f 69 6e 74 65 64 20 74  |string pointed t|
0009f1c0  6f 20 62 79 20 2f 73 74  72 2f 20 74 6f 20 61 20  |o by /str/ to a |
0009f1d0  2f 6c 6f 6e 67 20 69 6e  74 2f 2e 20 49 74 20 64  |/long int/. It d|
0009f1e0  6f 65 73 20 74 68 69 73  20 62 79 20 73 70 6c 69  |oes this by spli|
0009f1f0  74 74 69 6e 67 20 74 68  65 20 73 74 72 69 6e 67  |tting the string|
0009f200  20 69 6e 74 6f 20 74 68  72 65 65 20 62 69 74 73  | into three bits|
0009f210  20 2d 20 77 68 69 74 65  20 73 70 61 63 65 20 61  | - white space a|
0009f220  74 20 74 68 65 20 73 74  61 72 74 2c 20 74 68 65  |t the start, the|
0009f230  6e 20 74 68 65 20 6e 75  6d 62 65 72 20 69 6e 20  |n the number in |
0009f240  74 68 65 20 67 69 76 65  6e 20 62 61 73 65 20 28  |the given base (|
0009f250  32 2d 20 33 36 29 2c 20  74 68 65 6e 20 74 68 65  |2- 36), then the|
0009f260  20 72 65 73 74 20 6f 66  20 74 68 65 20 73 74 72  | rest of the str|
0009f270  69 6e 67 20 77 68 69 63  68 20 69 73 20 75 6e 72  |ing which is unr|
0009f280  65 63 6f 67 6e 69 73 65  64 2e 20 54 68 65 20 6d  |ecognised. The m|
0009f290  69 64 64 6c 65 20 62 69  74 20 69 73 20 63 6f 6e  |iddle bit is con|
0009f2a0  76 65 72 74 65 64 20 74  6f 20 61 20 2f 6c 6f 6e  |verted to a /lon|
0009f2b0  67 20 69 6e 74 2f 20 61  6e 64 20 72 65 74 75 72  |g int/ and retur|
0009f2c0  6e 65 64 2c 20 61 6e 64  20 61 20 70 6f 69 6e 74  |ned, and a point|
0009f2d0  65 72 20 74 6f 20 74 68  65 20 6c 61 73 74 20 62  |er to the last b|
0009f2e0  69 74 20 69 73 20 72 65  74 75 72 6e 65 64 20 69  |it is returned i|
0009f2f0  6e 20 74 68 65 20 7b 2f  7d 63 68 61 72 a0 2a 7b  |n the {/}char.*{|
0009f300  2f 7d 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |/} pointed to by|
0009f310  20 2f 65 6e 64 2f 2e 0a  0a 49 66 20 74 68 65 20  | /end/...If the |
0009f320  73 74 72 69 6e 67 20 63  6f 75 6c 64 20 6e 6f 74  |string could not|
0009f330  20 62 65 20 63 6f 6e 76  65 72 74 65 64 2c 20 7a  | be converted, z|
0009f340  65 72 6f 20 69 73 20 72  65 74 75 72 6e 65 64 2e  |ero is returned.|
0009f350  20 49 66 20 69 74 20 63  6f 75 6c 64 20 62 75 74  | If it could but|
0009f360  20 77 61 73 20 74 6f 6f  20 62 69 67 20 74 6f 20  | was too big to |
0009f370  62 65 20 72 65 74 75 72  6e 65 64 2c 20 3c 4c 4f  |be returned, <LO|
0009f380  4e 47 5f 4d 41 58 3e 20  6f 72 20 3c 4c 4f 4e 47  |NG_MAX> or <LONG|
0009f390  5f 4d 49 4e 3e 20 69 73  20 72 65 74 75 72 6e 65  |_MIN> is returne|
0009f3a0  64 2c 20 61 6e 64 20 3c  45 52 41 4e 47 45 3e 20  |d, and <ERANGE> |
0009f3b0  69 73 20 73 74 6f 72 65  64 20 69 6e 20 3c 65 72  |is stored in <er|
0009f3c0  72 6e 6f 3e 2e 0a 0a 46  6f 72 20 62 61 73 65 20  |rno>...For base |
0009f3d0  31 36 2c 20 74 68 65 20  73 74 72 69 6e 67 20 6d  |16, the string m|
0009f3e0  61 79 20 68 61 76 65 20  22 30 78 22 20 6f 72 20  |ay have "0x" or |
0009f3f0  22 30 58 22 20 70 72 65  63 65 64 69 6e 67 20 74  |"0X" preceding t|
0009f400  68 65 20 6e 75 6d 62 65  72 2e 20 54 68 65 20 6c  |he number. The l|
0009f410  65 74 74 65 72 73 20 61  2d 7a 20 28 41 2d 5a 29  |etters a-z (A-Z)|
0009f420  20 61 72 65 20 67 69 76  65 6e 20 76 61 6c 75 65  | are given value|
0009f430  73 20 31 30 2d 33 35 2e  44 41 54 41 30 03 00 00  |s 10-35.DATA0...|
0009f440  73 74 72 74 6f 75 6c 0a  53 79 6e 74 61 78 3a 09  |strtoul.Syntax:.|
0009f450  6c 6f 6e 67 20 69 6e 74  20 73 74 72 74 6f 75 6c  |long int strtoul|
0009f460  20 28 63 68 61 72 20 2a  73 74 72 2c 20 63 68 61  | (char *str, cha|
0009f470  72 20 2a 2a 65 6e 64 2c  20 69 6e 74 20 62 61 73  |r **end, int bas|
0009f480  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 74 64  |e);.Header:.<std|
0009f490  6c 69 62 2e 68 3d 3e 73  74 64 6c 69 62 3e 0a 0a  |lib.h=>stdlib>..|
0009f4a0  52 65 74 75 72 6e 73 3a  09 54 68 65 20 63 6f 6e  |Returns:.The con|
0009f4b0  76 65 72 74 65 64 20 76  61 6c 75 65 2e 0a 0a 54  |verted value...T|
0009f4c0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 6f 6e  |his function con|
0009f4d0  76 65 72 74 73 20 74 68  65 20 73 74 72 69 6e 67  |verts the string|
0009f4e0  20 70 6f 69 6e 74 65 64  20 74 6f 20 62 79 20 2f  | pointed to by /|
0009f4f0  73 74 72 2f 20 74 6f 20  61 6e 20 2f 75 6e 73 69  |str/ to an /unsi|
0009f500  67 6e 65 64 20 6c 6f 6e  67 20 69 6e 74 2f 2e 20  |gned long int/. |
0009f510  49 74 20 64 6f 65 73 20  74 68 69 73 20 62 79 20  |It does this by |
0009f520  73 70 6c 69 74 74 69 6e  67 20 74 68 65 20 73 74  |splitting the st|
0009f530  72 69 6e 67 20 69 6e 74  6f 20 74 68 72 65 65 20  |ring into three |
0009f540  62 69 74 73 20 2d 20 77  68 69 74 65 20 73 70 61  |bits - white spa|
0009f550  63 65 20 61 74 20 74 68  65 20 73 74 61 72 74 2c  |ce at the start,|
0009f560  20 74 68 65 6e 20 74 68  65 20 6e 75 6d 62 65 72  | then the number|
0009f570  20 69 6e 20 74 68 65 20  67 69 76 65 6e 20 62 61  | in the given ba|
0009f580  73 65 20 28 32 2d 33 36  29 2c 20 74 68 65 6e 20  |se (2-36), then |
0009f590  74 68 65 20 72 65 73 74  20 6f 66 20 74 68 65 20  |the rest of the |
0009f5a0  73 74 72 69 6e 67 20 77  68 69 63 68 20 69 73 20  |string which is |
0009f5b0  75 6e 72 65 63 6f 67 6e  69 73 65 64 2e 20 54 68  |unrecognised. Th|
0009f5c0  65 20 6d 69 64 64 6c 65  20 62 69 74 20 69 73 20  |e middle bit is |
0009f5d0  63 6f 6e 76 65 72 74 65  64 20 74 6f 20 61 6e 20  |converted to an |
0009f5e0  2f 75 6e 73 69 67 6e 65  64 20 6c 6f 6e 67 20 69  |/unsigned long i|
0009f5f0  6e 74 2f 20 61 6e 64 20  72 65 74 75 72 6e 65 64  |nt/ and returned|
0009f600  2c 20 61 6e 64 20 61 20  70 6f 69 6e 74 65 72 20  |, and a pointer |
0009f610  74 6f 20 74 68 65 20 6c  61 73 74 20 62 69 74 20  |to the last bit |
0009f620  69 73 20 72 65 74 75 72  6e 65 64 20 69 6e 20 74  |is returned in t|
0009f630  68 65 20 7b 2f 7d 63 68  61 72 a0 2a 7b 2f 7d 20  |he {/}char.*{/} |
0009f640  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 2f 65  |pointed to by /e|
0009f650  6e 64 2f 2e 0a 0a 49 66  20 74 68 65 20 73 74 72  |nd/...If the str|
0009f660  69 6e 67 20 63 6f 75 6c  64 20 6e 6f 74 20 62 65  |ing could not be|
0009f670  20 63 6f 6e 76 65 72 74  65 64 2c 20 7a 65 72 6f  | converted, zero|
0009f680  20 69 73 20 72 65 74 75  72 6e 65 64 2e 20 49 66  | is returned. If|
0009f690  20 69 74 20 63 6f 75 6c  64 20 62 75 74 20 77 61  | it could but wa|
0009f6a0  73 20 74 6f 6f 20 62 69  67 20 74 6f 20 62 65 20  |s too big to be |
0009f6b0  72 65 74 75 72 6e 65 64  2c 20 3c 55 4c 4f 4e 47  |returned, <ULONG|
0009f6c0  5f 4d 41 58 3e 20 69 73  20 72 65 74 75 72 6e 65  |_MAX> is returne|
0009f6d0  64 2c 20 61 6e 64 20 3c  45 52 41 4e 47 45 3e 20  |d, and <ERANGE> |
0009f6e0  69 73 20 73 74 6f 72 65  64 20 69 6e 20 3c 65 72  |is stored in <er|
0009f6f0  72 6e 6f 3e 2e 0a 0a 46  6f 72 20 62 61 73 65 20  |rno>...For base |
0009f700  31 36 2c 20 74 68 65 20  73 74 72 69 6e 67 20 6d  |16, the string m|
0009f710  61 79 20 68 61 76 65 20  94 30 78 95 20 6f 72 20  |ay have .0x. or |
0009f720  94 30 58 95 20 70 72 65  63 65 64 69 6e 67 20 74  |.0X. preceding t|
0009f730  68 65 20 6e 75 6d 62 65  72 2e 20 54 68 65 20 6c  |he number. The l|
0009f740  65 74 74 65 72 73 20 61  2d 7a 20 28 41 2d 5a 29  |etters a-z (A-Z)|
0009f750  20 61 72 65 20 67 69 76  65 6e 20 76 61 6c 75 65  | are given value|
0009f760  73 20 31 30 2d 33 35 2e  44 41 54 41 7d 03 00 00  |s 10-35.DATA}...|
0009f770  73 74 72 75 63 74 0a 54  68 69 73 20 6b 65 79 77  |struct.This keyw|
0009f780  6f 72 64 20 64 65 66 69  6e 65 73 20 61 20 63 6f  |ord defines a co|
0009f790  6d 70 6c 65 78 20 76 61  72 69 61 62 6c 65 20 74  |mplex variable t|
0009f7a0  79 70 65 20 63 61 6c 6c  65 64 20 61 20 73 74 72  |ype called a str|
0009f7b0  75 63 74 75 72 65 2e 20  54 68 65 20 64 65 66 69  |ucture. The defi|
0009f7c0  6e 69 74 69 6f 6e 20 68  61 73 20 74 68 65 20 67  |nition has the g|
0009f7d0  65 6e 65 72 61 6c 20 66  6f 72 6d 3a 0a 0a 20 20  |eneral form:..  |
0009f7e0  20 20 20 73 74 72 75 63  74 20 5c 3c 6e 61 6d 65  |   struct \<name|
0009f7f0  3e 0a 20 20 20 20 20 5c  7b 0a 20 20 20 20 20 20  |>.     \{.      |
0009f800  20 20 20 5c 3c 76 61 72  69 61 62 6c 65 31 3e 0a  |   \<variable1>.|
0009f810  20 20 20 20 20 20 20 20  20 5c 3c 76 61 72 69 61  |         \<varia|
0009f820  62 6c 65 32 3e 0a 20 20  20 20 20 20 20 20 20 2e  |ble2>.         .|
0009f830  2e 2e 0a 20 20 20 20 20  20 20 20 20 5c 3c 76 61  |...         \<va|
0009f840  72 69 61 62 6c 65 4e 3e  0a 20 20 20 20 20 7d 20  |riableN>.     } |
0009f850  5c 3c 76 61 72 73 3e 3b  0a 0a 5c 3c 6e 61 6d 65  |\<vars>;..\<name|
0009f860  3e 20 69 73 20 61 20 6e  61 6d 65 20 66 6f 72 20  |> is a name for |
0009f870  73 74 72 75 63 74 75 72  65 2e 20 49 74 20 63 61  |structure. It ca|
0009f880  6e 20 62 65 20 75 73 65  64 20 74 6f 20 64 65 63  |n be used to dec|
0009f890  6c 61 72 65 20 66 75 72  74 68 65 72 20 73 74 72  |lare further str|
0009f8a0  75 63 74 75 72 65 73 20  6f 66 20 74 68 65 20 73  |uctures of the s|
0009f8b0  61 6d 65 20 74 79 70 65  20 77 69 74 68 6f 75 74  |ame type without|
0009f8c0  20 61 63 74 75 61 6c 6c  79 20 64 65 66 69 6e 69  | actually defini|
0009f8d0  6e 67 20 74 68 65 20 5c  7b 7d 20 62 69 74 20 61  |ng the \{} bit a|
0009f8e0  67 61 69 6e 2e 0a 0a 41  20 73 74 72 75 63 74 75  |gain...A structu|
0009f8f0  72 65 20 63 6f 6e 74 61  69 6e 73 20 6f 6e 65 20  |re contains one |
0009f900  6f 72 20 6d 6f 72 65 20  6e 6f 72 6d 61 6c 20 3c  |or more normal <|
0009f910  76 61 72 69 61 62 6c 65  73 3d 3e 63 5f 76 61 72  |variables=>c_var|
0009f920  5f 3e 20 64 65 73 63 72  69 62 65 64 20 69 6e 20  |_> described in |
0009f930  74 68 65 20 6e 6f 72 6d  61 6c 20 77 61 79 2e 0a  |the normal way..|
0009f940  0a 5c 3c 76 61 72 73 3e  20 61 72 65 20 74 68 65  |.\<vars> are the|
0009f950  20 73 74 72 75 63 74 75  72 65 73 20 63 72 65 61  | structures crea|
0009f960  74 65 64 20 69 6e 20 74  68 65 20 77 61 79 20 61  |ted in the way a|
0009f970  20 6c 69 73 74 20 6f 66  20 76 61 72 69 61 62 6c  | list of variabl|
0009f980  65 73 20 66 6f 6c 6c 6f  77 73 20 74 68 65 20 74  |es follows the t|
0009f990  79 70 65 20 69 6e 20 61  20 6e 6f 72 6d 61 6c 20  |ype in a normal |
0009f9a0  76 61 72 69 61 62 6c 65  20 64 65 63 6c 61 72 61  |variable declara|
0009f9b0  74 69 6f 6e 2e 0a 0a 56  61 72 69 61 62 6c 65 73  |tion...Variables|
0009f9c0  20 77 69 74 68 69 6e 20  74 68 65 20 73 74 72 75  | within the stru|
0009f9d0  63 74 75 72 65 20 61 72  65 20 61 63 63 65 73 73  |cture are access|
0009f9e0  65 64 20 75 73 69 6e 67  20 74 68 65 20 66 6f 72  |ed using the for|
0009f9f0  6d 3a 20 7b 2f 7d 73 74  72 75 63 74 75 72 65 2e  |m: {/}structure.|
0009fa00  76 61 72 69 61 62 6c 65  7b 2f 7d 2e 20 53 74 72  |variable{/}. Str|
0009fa10  75 63 74 75 72 65 73 20  6d 61 79 20 62 65 20 6e  |uctures may be n|
0009fa20  65 73 74 65 64 20 74 6f  20 67 69 76 65 20 7b 2f  |ested to give {/|
0009fa30  7d 73 74 72 75 63 74 75  72 65 31 2e 73 74 72 75  |}structure1.stru|
0009fa40  63 74 75 72 65 32 2e 76  61 72 69 61 62 6c 65 7b  |cture2.variable{|
0009fa50  2f 7d 20 65 74 63 2e 20  49 66 20 79 6f 75 20 61  |/} etc. If you a|
0009fa60  72 65 20 67 69 76 65 6e  20 61 20 70 6f 69 6e 74  |re given a point|
0009fa70  65 72 20 74 6f 20 61 20  73 74 72 75 63 74 75 72  |er to a structur|
0009fa80  65 20 74 68 69 73 20 66  6f 72 6d 20 62 65 63 6f  |e this form beco|
0009fa90  6d 65 73 20 63 6c 75 6d  73 79 20 69 65 20 7b 2f  |mes clumsy ie {/|
0009faa0  7d 28 2a 70 6f 69 6e 74  65 72 29 2e 76 61 72 69  |}(*pointer).vari|
0009fab0  61 62 6c 65 7b 2f 7d 2e  20 59 6f 75 20 63 61 6e  |able{/}. You can|
0009fac0  20 75 73 65 20 7b 2f 7d  70 6f 69 6e 74 65 72 2d  | use {/}pointer-|
0009fad0  3e 76 61 72 69 61 62 6c  65 7b 2f 7d 20 69 6e 73  |>variable{/} ins|
0009fae0  74 65 61 64 2e 00 00 00  44 41 54 41 e1 01 00 00  |tead....DATA....|
0009faf0  73 74 72 75 63 74 20 74  6d 0a 54 68 65 20 74 79  |struct tm.The ty|
0009fb00  70 65 20 7b 2f 7d 73 74  72 75 63 74 20 74 6d 7b  |pe {/}struct tm{|
0009fb10  2f 7d 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |/} is defined in|
0009fb20  20 3c 74 69 6d 65 2e 68  3d 3e 74 69 6d 65 5f 68  | <time.h=>time_h|
0009fb30  3e 20 61 73 20 61 20 73  74 72 75 63 74 75 72 65  |> as a structure|
0009fb40  20 63 61 70 61 62 6c 65  20 6f 66 20 68 6f 6c 64  | capable of hold|
0009fb50  69 6e 67 20 61 6e 79 20  62 72 6f 6b 65 6e 2d 64  |ing any broken-d|
0009fb60  6f 77 6e 20 74 69 6d 65  2e 20 49 74 20 69 73 20  |own time. It is |
0009fb70  64 65 66 69 6e 65 64 20  61 73 20 66 6f 6c 6c 6f  |defined as follo|
0009fb80  77 73 3a 0a 0a 5c 7b 0a  20 20 20 20 69 6e 74 20  |ws:..\{.    int |
0009fb90  74 6d 5f 73 65 63 3b 0a  20 20 20 20 69 6e 74 20  |tm_sec;.    int |
0009fba0  74 6d 5f 6d 69 6e 3b 0a  20 20 20 20 69 6e 74 20  |tm_min;.    int |
0009fbb0  74 6d 5f 68 6f 75 72 3b  0a 20 20 20 20 69 6e 74  |tm_hour;.    int|
0009fbc0  20 74 6d 5f 6d 64 61 79  3b 0a 20 20 20 20 69 6e  | tm_mday;.    in|
0009fbd0  74 20 74 6d 5f 6d 6f 6e  3b 0a 20 20 20 20 69 6e  |t tm_mon;.    in|
0009fbe0  74 20 74 6d 5f 79 65 61  72 3b 0a 20 20 20 20 69  |t tm_year;.    i|
0009fbf0  6e 74 20 74 6d 5f 77 64  61 79 3b 09 2f 2a 20 44  |nt tm_wday;./* D|
0009fc00  61 79 20 6f 66 20 74 68  65 20 77 65 65 6b 20 2a  |ay of the week *|
0009fc10  2f 0a 20 20 20 20 69 6e  74 20 74 6d 5f 79 64 61  |/.    int tm_yda|
0009fc20  79 3b 09 2f 2a 20 44 61  79 20 6f 66 20 74 68 65  |y;./* Day of the|
0009fc30  20 79 65 61 72 20 2a 2f  0a 20 20 20 20 69 6e 74  | year */.    int|
0009fc40  20 74 6d 5f 69 73 64 73  74 3b 09 2f 2a 20 44 53  | tm_isdst;./* DS|
0009fc50  54 20 69 6e 64 69 63 61  74 6f 72 20 2a 2f 0a 7d  |T indicator */.}|
0009fc60  0a 0a 54 68 65 20 44 61  79 6c 69 67 68 74 20 53  |..The Daylight S|
0009fc70  61 76 69 6e 67 20 49 6e  64 69 63 61 74 6f 72 20  |aving Indicator |
0009fc80  69 73 20 75 73 65 64 20  74 6f 20 72 65 70 72 65  |is used to repre|
0009fc90  73 65 6e 74 20 6c 6f 63  61 6c 65 20 73 70 65 63  |sent locale spec|
0009fca0  69 66 69 63 20 74 69 6d  65 20 63 68 61 6e 67 65  |ific time change|
0009fcb0  73 20 65 67 20 42 72 69  74 69 73 68 20 53 75 6d  |s eg British Sum|
0009fcc0  6d 65 72 20 54 69 6d 65  2e 00 00 00 44 41 54 41  |mer Time....DATA|
0009fcd0  1e 02 00 00 73 74 72 78  66 72 6d 0a 53 79 6e 74  |....strxfrm.Synt|
0009fce0  61 78 3a 09 3c 73 69 7a  65 5f 74 3e 20 73 74 72  |ax:.<size_t> str|
0009fcf0  78 66 72 6d 20 28 63 68  61 72 20 2a 73 74 72 31  |xfrm (char *str1|
0009fd00  2c 20 63 68 61 72 20 2a  73 74 72 32 2c 20 73 69  |, char *str2, si|
0009fd10  7a 65 5f 74 20 6e 29 3b  0a 48 65 61 64 65 72 3a  |ze_t n);.Header:|
0009fd20  09 3c 73 74 72 69 6e 67  2e 68 3d 3e 73 74 72 69  |.<string.h=>stri|
0009fd30  6e 67 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 4c 65  |ng>..Returns:.Le|
0009fd40  6e 67 74 68 20 6f 66 20  74 68 65 20 74 72 61 6e  |ngth of the tran|
0009fd50  73 66 6f 72 6d 65 64 20  73 74 72 69 6e 67 2c 20  |sformed string, |
0009fd60  6e 6f 74 20 69 6e 63 6c  75 64 69 6e 67 20 74 68  |not including th|
0009fd70  65 20 6e 75 6c 6c 20 74  65 72 6d 69 6e 61 74 6f  |e null terminato|
0009fd80  72 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |r...This functio|
0009fd90  6e 73 20 63 6f 6e 76 65  72 74 73 20 74 68 65 20  |ns converts the |
0009fda0  73 74 72 69 6e 67 20 70  6f 69 6e 74 65 64 20 74  |string pointed t|
0009fdb0  6f 20 62 79 20 7b 2f 7d  73 74 72 32 7b 2f 7d 20  |o by {/}str2{/} |
0009fdc0  74 6f 20 74 68 65 20 73  61 6d 65 20 66 6f 72 6d  |to the same form|
0009fdd0  20 61 73 20 3c 73 74 72  63 6f 6c 6c 3e 20 64 6f  | as <strcoll> do|
0009fde0  65 73 20 77 68 65 6e 20  63 6f 6d 70 61 72 69 6e  |es when comparin|
0009fdf0  67 20 73 74 72 69 6e 67  73 2e 20 55 70 20 74 6f  |g strings. Up to|
0009fe00  20 2f 6e 2f 20 63 68 61  72 61 63 74 65 72 73 20  | /n/ characters |
0009fe10  61 72 65 20 74 72 61 6e  73 66 6f 72 6d 65 64 20  |are transformed |
0009fe20  61 6e 64 20 70 6c 61 63  65 64 20 69 6e 20 74 68  |and placed in th|
0009fe30  65 20 73 74 72 69 6e 67  20 70 6f 69 6e 74 65 64  |e string pointed|
0009fe40  20 74 6f 20 62 79 20 7b  2f 7d 73 74 72 31 7b 2f  | to by {/}str1{/|
0009fe50  7d 2e 20 54 68 65 20 75  70 73 68 6f 74 20 6f 66  |}. The upshot of|
0009fe60  20 61 6c 6c 20 74 68 69  73 20 69 73 20 74 68 61  | all this is tha|
0009fe70  74 20 69 66 20 74 77 6f  20 73 74 72 69 6e 67 73  |t if two strings|
0009fe80  20 61 72 65 20 74 72 61  6e 73 66 6f 72 6d 65 64  | are transformed|
0009fe90  20 75 73 69 6e 67 20 74  68 69 73 20 61 6e 64 20  | using this and |
0009fea0  74 68 65 6e 20 63 6f 6d  70 61 72 65 64 2c 20 74  |then compared, t|
0009feb0  68 65 20 72 65 73 75 6c  74 20 69 73 20 74 68 65  |he result is the|
0009fec0  20 73 61 6d 65 20 61 73  20 75 73 69 6e 67 20 3c  | same as using <|
0009fed0  73 74 72 63 6f 6c 6c 3e  20 6f 6e 20 74 68 65 6d  |strcoll> on them|
0009fee0  20 64 69 72 65 63 74 6c  79 2e 00 00 44 49 52 24  | directly...DIR$|
0009fef0  50 01 00 00 50 01 00 00  3c 00 0a 00 46 fd ff ff  |P...P...<...F...|
0009ff00  bc 08 e0 22 94 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0009ff10  63 61 74 5f 00 00 00 00  d0 00 0a 00 46 fd ff ff  |cat_........F...|
0009ff20  85 10 e0 22 e4 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0009ff30  63 6d 70 5f 00 00 00 00  b4 01 0a 00 46 fd ff ff  |cmp_........F...|
0009ff40  c6 a0 df 22 a0 00 00 00  13 00 00 00 00 00 00 00  |..."............|
0009ff50  63 6f 70 79 5f 00 00 00  54 02 0a 00 46 ff ff ff  |copy_...T...F...|
0009ff60  b4 75 d6 25 23 01 00 00  13 00 00 00 00 00 00 00  |.u.%#...........|
0009ff70  44 65 63 6f 64 65 48 65  78 00 00 00 78 03 0a 00  |DecodeHex...x...|
0009ff80  46 fd ff ff 97 f0 d5 25  43 02 00 00 13 00 00 00  |F......%C.......|
0009ff90  00 00 00 00 44 4c 00 00  bc 05 0a 00 46 fd ff ff  |....DL......F...|
0009ffa0  09 79 e0 22 f8 00 00 00  13 00 00 00 00 00 00 00  |.y."............|
0009ffb0  66 69 6e 64 5f 00 00 00  b4 06 0a 00 46 ff ff ff  |find_.......F...|
0009ffc0  a4 67 d6 25 00 01 00 00  13 00 00 00 00 00 00 00  |.g.%............|
0009ffd0  4d 61 6b 65 41 53 43 49  49 5a 00 00 b4 07 0a 00  |MakeASCIIZ......|
0009ffe0  46 ff ff ff cd 61 d6 25  fc 00 00 00 13 00 00 00  |F....a.%........|
0009fff0  00 00 00 00 4d 61 6b 65  43 52 00 00 b0 08 0a 00  |....MakeCR......|
000a0000  46 ff ff ff f0 6e d6 25  14 01 00 00 13 00 00 00  |F....n.%........|
000a0010  00 00 00 00 4d 61 6b 65  48 65 78 00 c4 09 0a 00  |....MakeHex.....|
000a0020  46 fd ff ff 94 80 e1 22  5e 00 00 00 13 00 00 00  |F......"^.......|
000a0030  00 00 00 00 6d 69 73 63  5f 00 00 00 44 41 54 41  |....misc_...DATA|
000a0040  94 00 00 00 41 70 70 65  6e 64 69 6e 67 20 46 75  |....Appending Fu|
000a0050  6e 63 74 69 6f 6e 73 0a  23 50 61 72 65 6e 74 20  |nctions.#Parent |
000a0060  73 74 72 69 6e 67 0a 54  68 65 73 65 20 66 75 6e  |string.These fun|
000a0070  63 74 69 6f 6e 73 20 61  64 64 20 6f 6e 65 20 73  |ctions add one s|
000a0080  74 72 69 6e 67 20 74 6f  20 74 68 65 20 65 6e 64  |tring to the end|
000a0090  20 6f 66 20 61 6e 6f 74  68 65 72 2e 0a 0a 23 69  | of another...#i|
000a00a0  6e 64 65 6e 74 20 36 0a  23 54 61 62 6c 65 20 31  |ndent 6.#Table 1|
000a00b0  20 31 35 0a 3c 73 74 72  63 61 74 3e 0a 3c 73 74  | 15.<strcat>.<st|
000a00c0  72 6e 63 61 74 3e 0a 23  45 6e 64 54 61 62 6c 65  |rncat>.#EndTable|
000a00d0  44 41 54 41 e4 00 00 00  43 6f 6d 70 61 72 69 73  |DATA....Comparis|
000a00e0  6f 6e 20 46 75 6e 63 74  69 6f 6e 73 0a 23 50 61  |on Functions.#Pa|
000a00f0  72 65 6e 74 20 73 74 72  69 6e 67 0a 54 68 65 73  |rent string.Thes|
000a0100  65 20 66 75 6e 63 74 69  6f 6e 73 20 63 6f 6d 70  |e functions comp|
000a0110  61 72 65 20 74 68 65 20  74 77 6f 20 73 74 72 69  |are the two stri|
000a0120  6e 67 73 20 62 79 20 41  53 43 49 49 20 76 61 6c  |ngs by ASCII val|
000a0130  75 65 73 20 61 6e 64 20  69 6e 64 69 63 61 74 65  |ues and indicate|
000a0140  20 74 68 65 20 65 71 75  61 6c 69 74 79 20 6f 72  | the equality or|
000a0150  20 69 6e 65 71 75 61 6c  69 74 79 20 6f 66 20 74  | inequality of t|
000a0160  68 65 20 74 77 6f 20 73  74 72 69 6e 67 73 2e 0a  |he two strings..|
000a0170  0a 23 54 61 62 6c 65 20  32 0a 3c 6d 65 6d 63 6d  |.#Table 2.<memcm|
000a0180  70 3e 0a 3c 73 74 72 63  6d 70 3e 0a 3c 73 74 72  |p>.<strcmp>.<str|
000a0190  63 6f 6c 6c 3e 0a 3c 73  74 72 6e 63 6d 70 3e 0a  |coll>.<strncmp>.|
000a01a0  3c 73 74 72 78 66 72 6d  3e 0a 0a 23 45 6e 64 54  |<strxfrm>..#EndT|
000a01b0  61 62 6c 65 44 41 54 41  a0 00 00 00 43 6f 70 79  |ableDATA....Copy|
000a01c0  69 6e 67 20 46 75 6e 63  74 69 6f 6e 73 0a 23 50  |ing Functions.#P|
000a01d0  61 72 65 6e 74 20 73 74  72 69 6e 67 0a 54 68 65  |arent string.The|
000a01e0  73 65 20 66 75 6e 63 74  69 6f 6e 73 20 63 6f 70  |se functions cop|
000a01f0  79 20 63 68 61 72 61 63  74 65 72 73 20 66 72 6f  |y characters fro|
000a0200  6d 20 6f 6e 65 20 61 72  72 61 79 20 74 6f 20 61  |m one array to a|
000a0210  6e 6f 74 68 65 72 2e 0a  0a 23 54 61 62 6c 65 20  |nother...#Table |
000a0220  32 20 31 36 0a 3c 6d 65  6d 63 70 79 3e 0a 3c 6d  |2 16.<memcpy>.<m|
000a0230  65 6d 6d 6f 76 65 3e 0a  3c 73 74 72 63 70 79 3e  |emmove>.<strcpy>|
000a0240  0a 3c 73 74 72 6e 63 70  79 3e 0a 23 45 6e 64 54  |.<strncpy>.#EndT|
000a0250  61 62 6c 65 44 41 54 41  23 01 00 00 53 74 72 5f  |ableDATA#...Str_|
000a0260  44 65 63 6f 64 65 48 65  78 0a 53 79 6e 74 61 78  |DecodeHex.Syntax|
000a0270  3a 09 69 6e 74 20 53 74  72 5f 44 65 63 6f 64 65  |:.int Str_Decode|
000a0280  48 65 78 20 28 63 68 61  72 20 64 69 67 69 74 29  |Hex (char digit)|
000a0290  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000a02a0  69 62 3a 53 74 72 2e 68  3d 3e 53 74 72 5f 44 4c  |ib:Str.h=>Str_DL|
000a02b0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 56 61 6c 75  |>..Returns:.Valu|
000a02c0  65 20 6f 66 20 74 68 65  20 68 65 78 61 64 65 63  |e of the hexadec|
000a02d0  69 6d 61 6c 20 63 68 61  72 61 63 74 65 72 2e 0a  |imal character..|
000a02e0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 74  |.This function t|
000a02f0  61 6b 65 73 20 61 20 63  68 61 72 61 63 74 65 72  |akes a character|
000a0300  20 2f 64 69 67 69 74 2f  20 77 68 69 63 68 20 69  | /digit/ which i|
000a0310  73 20 61 20 68 65 78 61  64 65 63 69 6d 61 6c 20  |s a hexadecimal |
000a0320  64 69 67 69 74 20 28 30  2d 46 29 2e 20 49 74 20  |digit (0-F). It |
000a0330  72 65 74 75 72 6e 73 20  74 68 65 20 76 61 6c 75  |returns the valu|
000a0340  65 20 6f 66 20 74 68 69  73 20 28 30 2d 31 35 29  |e of this (0-15)|
000a0350  2e 20 2d 31 20 69 73 20  72 65 74 75 72 6e 65 64  |. -1 is returned|
000a0360  20 69 66 20 2f 64 69 67  69 74 2f 20 69 73 20 69  | if /digit/ is i|
000a0370  6e 76 61 6c 69 64 2e 00  44 41 54 41 43 02 00 00  |nvalid..DATAC...|
000a0380  44 65 73 6b 4c 69 62 3a  53 74 72 2e 68 0a 56 65  |DeskLib:Str.h.Ve|
000a0390  72 73 69 6f 6e 3a 20 31  2e 31 32 20 28 31 37 20  |rsion: 1.12 (17 |
000a03a0  4d 61 79 20 31 39 39 33  29 0a 23 6c 69 6e 65 0a  |May 1993).#line.|
000a03b0  54 68 69 73 20 68 65 61  64 65 72 20 64 65 63 6c  |This header decl|
000a03c0  61 72 65 73 20 75 73 65  66 75 6c 20 73 74 72 69  |ares useful stri|
000a03d0  6e 67 20 66 75 6e 63 74  69 6f 6e 73 2e 20 49 74  |ng functions. It|
000a03e0  20 69 73 20 61 20 72 65  70 6c 61 63 65 6d 65 6e  | is a replacemen|
000a03f0  74 20 66 6f 72 20 3c 44  65 73 6b 4c 69 62 3a 53  |t for <DeskLib:S|
000a0400  74 72 69 6e 67 43 52 2e  68 3d 3e 53 74 72 69 6e  |tringCR.h=>Strin|
000a0410  67 43 52 3e 2c 20 77 68  69 63 68 20 69 73 20 6e  |gCR>, which is n|
000a0420  6f 77 20 6f 62 73 6f 6c  65 74 65 2e 0a 0a 23 69  |ow obsolete...#i|
000a0430  6e 64 65 6e 74 20 34 0a  23 54 61 62 6c 65 20 63  |ndent 4.#Table c|
000a0440  6f 6c 75 6d 6e 73 20 33  0a 3c 73 74 72 6c 65 6e  |olumns 3.<strlen|
000a0450  63 72 3e 0a 3c 73 74 72  63 6d 70 63 72 3e 0a 3c  |cr>.<strcmpcr>.<|
000a0460  73 74 72 69 63 6d 70 3e  0a 3c 73 74 72 69 63 6d  |stricmp>.<stricm|
000a0470  70 63 72 3e 0a 3c 73 74  72 6e 69 63 6d 70 3e 0a  |pcr>.<strnicmp>.|
000a0480  3c 73 74 72 6e 69 63 6d  70 63 72 3e 0a 3c 73 74  |<strnicmpcr>.<st|
000a0490  72 63 61 74 63 72 3e 0a  3c 73 74 72 63 70 79 63  |rcatcr>.<strcpyc|
000a04a0  72 3e 0a 3c 73 74 72 6e  63 70 79 63 72 3e 0a 3c  |r>.<strncpycr>.<|
000a04b0  4c 65 61 66 4e 61 6d 65  3e 0a 3c 73 74 72 64 75  |LeafName>.<strdu|
000a04c0  70 3e 0a 3c 53 74 72 5f  4d 61 6b 65 43 52 3e 0a  |p>.<Str_MakeCR>.|
000a04d0  3c 53 74 72 5f 4d 61 6b  65 41 53 43 49 49 5a 3e  |<Str_MakeASCIIZ>|
000a04e0  0a 3c 53 74 72 5f 4d 61  6b 65 48 65 78 3e 0a 3c  |.<Str_MakeHex>.<|
000a04f0  53 74 72 5f 44 65 63 6f  64 65 48 65 78 3e 0a 23  |Str_DecodeHex>.#|
000a0500  45 6e 64 54 61 62 6c 65  0a 23 69 6e 64 65 6e 74  |EndTable.#indent|
000a0510  0a 0a 54 68 65 20 22 63  72 22 20 66 75 6e 63 74  |..The "cr" funct|
000a0520  69 6f 6e 73 20 61 72 65  20 69 64 65 6e 74 69 63  |ions are identic|
000a0530  61 6c 20 74 6f 20 74 68  65 69 72 20 41 4e 53 49  |al to their ANSI|
000a0540  20 65 71 75 69 76 61 6c  65 6e 74 73 2c 20 62 75  | equivalents, bu|
000a0550  74 20 61 63 63 65 70 74  20 61 6e 79 20 74 65 72  |t accept any ter|
000a0560  6d 69 6e 61 74 6f 72 20  5c 3c 20 33 32 2c 20 6e  |minator \< 32, n|
000a0570  6f 74 20 6a 75 73 74 20  6e 75 6c 6c 20 74 65 72  |ot just null ter|
000a0580  6d 69 6e 61 74 6f 72 73  2e 20 54 68 65 20 22 69  |minators. The "i|
000a0590  22 20 66 75 6e 63 74 69  6f 6e 73 20 61 72 65 20  |" functions are |
000a05a0  63 61 73 65 20 69 6e 73  65 6e 73 69 74 69 76 65  |case insensitive|
000a05b0  20 66 75 6e 63 74 69 6f  6e 73 2e 00 44 41 54 41  | functions..DATA|
000a05c0  f8 00 00 00 53 65 61 72  63 68 69 6e 67 20 46 75  |....Searching Fu|
000a05d0  6e 63 74 69 6f 6e 73 0a  23 50 61 72 65 6e 74 20  |nctions.#Parent |
000a05e0  73 74 72 69 6e 67 0a 54  68 65 20 66 6f 6c 6c 6f  |string.The follo|
000a05f0  77 69 6e 67 20 66 75 6e  63 74 69 6f 6e 73 20 73  |wing functions s|
000a0600  65 61 72 63 68 20 66 6f  72 20 65 69 74 68 65 72  |earch for either|
000a0610  20 69 6e 64 69 76 69 64  75 61 6c 20 63 68 61 72  | individual char|
000a0620  61 63 74 65 72 73 20 6f  72 20 73 74 72 69 6e 67  |acters or string|
000a0630  73 20 77 69 74 68 69 6e  20 6f 74 68 65 72 20 73  |s within other s|
000a0640  74 72 69 6e 67 73 2e 0a  0a 23 69 6e 64 65 6e 74  |trings...#indent|
000a0650  20 34 0a 23 54 61 62 6c  65 20 33 20 31 36 0a 3c  | 4.#Table 3 16.<|
000a0660  6d 65 6d 63 68 72 3e 0a  3c 73 74 72 63 68 72 3e  |memchr>.<strchr>|
000a0670  0a 3c 73 74 72 63 73 70  6e 3e 0a 3c 73 74 72 70  |.<strcspn>.<strp|
000a0680  62 72 6b 3e 0a 3c 73 74  72 72 63 68 72 3e 0a 3c  |brk>.<strrchr>.<|
000a0690  73 74 72 73 70 6e 3e 0a  3c 73 74 72 73 74 72 3e  |strspn>.<strstr>|
000a06a0  0a 3c 73 74 72 74 6f 6b  3e 0a 0a 23 45 6e 64 54  |.<strtok>..#EndT|
000a06b0  61 62 6c 65 44 41 54 41  00 01 00 00 53 74 72 5f  |ableDATA....Str_|
000a06c0  4d 61 6b 65 41 53 43 49  49 5a 0a 53 79 6e 74 61  |MakeASCIIZ.Synta|
000a06d0  78 3a 09 76 6f 69 64 20  53 74 72 5f 4d 61 6b 65  |x:.void Str_Make|
000a06e0  41 53 43 49 49 5a 20 28  63 68 61 72 20 2a 73 2c  |ASCIIZ (char *s,|
000a06f0  20 69 6e 74 20 6d 61 78  5f 6c 65 6e 29 3b 0a 48  | int max_len);.H|
000a0700  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
000a0710  53 74 72 2e 68 3d 3e 53  74 72 5f 44 4c 3e 0a 0a  |Str.h=>Str_DL>..|
000a0720  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 63 6f  |This function co|
000a0730  6e 76 65 72 74 73 20 74  68 65 20 63 61 72 72 69  |nverts the carri|
000a0740  61 67 65 20 72 65 74 75  72 6e 2d 74 65 72 6d 69  |age return-termi|
000a0750  6e 61 74 65 64 20 73 74  72 69 6e 67 20 70 6f 69  |nated string poi|
000a0760  6e 74 65 64 20 74 6f 20  62 79 20 2f 73 2f 20 69  |nted to by /s/ i|
000a0770  6e 74 6f 20 61 20 7a 65  72 6f 2d 74 65 72 6d 69  |nto a zero-termi|
000a0780  6e 61 74 65 64 20 73 74  72 69 6e 67 2e 20 3c 53  |nated string. <S|
000a0790  74 72 5f 4d 61 6b 65 43  52 3e 28 29 20 63 6f 6e  |tr_MakeCR>() con|
000a07a0  76 65 72 74 73 20 74 68  65 20 6f 74 68 65 72 20  |verts the other |
000a07b0  77 61 79 2e 44 41 54 41  fc 00 00 00 53 74 72 5f  |way.DATA....Str_|
000a07c0  4d 61 6b 65 43 52 0a 53  79 6e 74 61 78 3a 09 76  |MakeCR.Syntax:.v|
000a07d0  6f 69 64 20 53 74 72 5f  4d 61 6b 65 43 52 20 28  |oid Str_MakeCR (|
000a07e0  63 68 61 72 20 2a 73 2c  20 69 6e 74 20 6d 61 78  |char *s, int max|
000a07f0  5f 6c 65 6e 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |_len);.Header:.<|
000a0800  44 65 73 6b 4c 69 62 3a  53 74 72 2e 68 3d 3e 53  |DeskLib:Str.h=>S|
000a0810  74 72 5f 44 4c 3e 0a 0a  54 68 69 73 20 66 75 6e  |tr_DL>..This fun|
000a0820  63 74 69 6f 6e 20 63 6f  6e 76 65 72 74 73 20 74  |ction converts t|
000a0830  68 65 20 7a 65 72 6f 2d  74 65 72 6d 69 6e 61 74  |he zero-terminat|
000a0840  65 64 20 73 74 72 69 6e  67 20 70 6f 69 6e 74 65  |ed string pointe|
000a0850  64 20 74 6f 20 62 79 20  2f 73 2f 20 69 6e 74 6f  |d to by /s/ into|
000a0860  20 61 20 63 61 72 72 69  61 67 65 20 72 65 74 75  | a carriage retu|
000a0870  72 6e 2d 74 65 72 6d 69  6e 61 74 65 64 20 73 74  |rn-terminated st|
000a0880  72 69 6e 67 2e 20 3c 53  74 72 5f 4d 61 6b 65 41  |ring. <Str_MakeA|
000a0890  53 43 49 49 5a 3e 28 29  20 63 6f 6e 76 65 72 74  |SCIIZ>() convert|
000a08a0  73 20 74 68 65 20 6f 74  68 65 72 20 77 61 79 2e  |s the other way.|
000a08b0  44 41 54 41 14 01 00 00  53 74 72 5f 4d 61 6b 65  |DATA....Str_Make|
000a08c0  48 65 78 0a 53 79 6e 74  61 78 3a 09 63 68 61 72  |Hex.Syntax:.char|
000a08d0  20 53 74 72 5f 4d 61 6b  65 48 65 78 20 28 69 6e  | Str_MakeHex (in|
000a08e0  74 20 6e 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |t n);.Header:.<D|
000a08f0  65 73 6b 4c 69 62 3a 53  74 72 2e 68 3d 3e 53 74  |eskLib:Str.h=>St|
000a0900  72 5f 44 4c 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |r_DL>..Returns:.|
000a0910  43 68 61 72 61 63 74 65  72 20 72 65 70 72 65 73  |Character repres|
000a0920  65 6e 74 69 6e 67 20 27  6e 27 20 69 6e 20 68 65  |enting 'n' in he|
000a0930  78 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |x...This functio|
000a0940  6e 20 74 61 6b 65 73 20  61 20 6e 75 6d 62 65 72  |n takes a number|
000a0950  20 2f 6e 2f 20 69 6e 20  74 68 65 20 72 61 6e 67  | /n/ in the rang|
000a0960  65 20 30 2d 31 35 20 61  6e 64 20 72 65 74 75 72  |e 0-15 and retur|
000a0970  6e 73 20 74 68 65 20 61  70 70 72 6f 70 72 69 61  |ns the appropria|
000a0980  74 65 20 68 65 78 61 64  65 63 69 6d 61 6c 20 64  |te hexadecimal d|
000a0990  69 67 69 74 20 28 30 2d  46 29 2e 20 49 66 20 2f  |igit (0-F). If /|
000a09a0  6e 2f 20 69 73 20 6f 75  74 20 6f 66 20 72 61 6e  |n/ is out of ran|
000a09b0  67 65 2c 20 27 3f 27 20  69 73 20 72 65 74 75 72  |ge, '?' is retur|
000a09c0  6e 65 64 2e 44 41 54 41  5e 00 00 00 4d 69 73 63  |ned.DATA^...Misc|
000a09d0  65 6c 6c 61 6e 65 6f 75  73 20 46 75 6e 63 74 69  |ellaneous Functi|
000a09e0  6f 6e 73 0a 23 50 61 72  65 6e 74 20 73 74 72 69  |ons.#Parent stri|
000a09f0  6e 67 0a 23 54 61 62 6c  65 20 31 0a 3c 6d 65 6d  |ng.#Table 1.<mem|
000a0a00  73 65 74 3e 0a 3c 73 74  72 65 72 72 6f 72 3e 0a  |set>.<strerror>.|
000a0a10  3c 73 74 72 6c 65 6e 3e  0a 23 45 6e 64 54 61 62  |<strlen>.#EndTab|
000a0a20  6c 65 00 00 44 41 54 41  7a 03 00 00 44 65 73 6b  |le..DATAz...Desk|
000a0a30  4c 69 62 3a 53 57 49 2e  68 0a 56 65 72 73 69 6f  |Lib:SWI.h.Versio|
000a0a40  6e 3a 20 31 2e 30 32 20  28 33 30 20 4d 61 79 20  |n: 1.02 (30 May |
000a0a50  31 39 39 34 29 0a 23 6c  69 6e 65 0a 54 68 69 73  |1994).#line.This|
000a0a60  20 68 65 61 64 65 72 20  64 65 63 6c 61 72 65 73  | header declares|
000a0a70  20 6a 75 73 74 20 6f 6e  65 20 66 75 6e 63 74 69  | just one functi|
000a0a80  6f 6e 3a 20 53 57 49 2e  20 49 74 20 61 6c 73 6f  |on: SWI. It also|
000a0a90  20 64 65 63 6c 61 72 65  73 20 6c 6f 74 73 20 6f  | declares lots o|
000a0aa0  66 20 3c 6d 61 63 72 6f  73 3d 3e 53 57 49 5f 6d  |f <macros=>SWI_m|
000a0ab0  61 63 72 6f 73 5f 3e 2e  0a 23 6c 69 6e 65 0a 53  |acros_>..#line.S|
000a0ac0  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
000a0ad0  3e 20 2a 53 57 49 20 28  69 6e 74 20 6e 75 6d 72  |> *SWI (int numr|
000a0ae0  65 67 73 69 6e 2c 20 69  6e 74 20 6e 75 6d 72 65  |egsin, int numre|
000a0af0  67 73 6f 75 74 2c 20 69  6e 74 20 6e 2c 20 2e 2e  |gsout, int n, ..|
000a0b00  2e 20 29 3b 0a 48 65 61  64 65 72 3a 09 44 65 73  |. );.Header:.Des|
000a0b10  6b 4c 69 62 3a 53 57 49  2e 68 0a 0a 52 65 74 75  |kLib:SWI.h..Retu|
000a0b20  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000a0b30  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
000a0b40  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
000a0b50  66 75 6e 63 74 69 6f 6e  20 63 61 6c 6c 73 20 61  |function calls a|
000a0b60  20 3c 53 57 49 3d 3e 53  57 49 3a 21 52 6f 6f 74  | <SWI=>SWI:!Root|
000a0b70  3e 2c 20 77 68 6f 73 65  20 6e 75 6d 62 65 72 20  |>, whose number |
000a0b80  69 73 20 67 69 76 65 6e  20 69 6e 20 2f 6e 2f 2e  |is given in /n/.|
000a0b90  20 54 68 65 20 76 61 72  69 61 62 6c 65 20 61 72  | The variable ar|
000a0ba0  67 75 6d 65 6e 74 20 6c  69 73 74 20 28 2e 2e 2e  |gument list (...|
000a0bb0  29 20 63 6f 6e 74 61 69  6e 73 20 74 68 65 20 72  |) contains the r|
000a0bc0  65 67 69 73 74 65 72 20  63 6f 6e 74 65 6e 74 73  |egister contents|
000a0bd0  2e 20 46 69 72 73 74 2c  20 2f 6e 75 6d 72 65 67  |. First, /numreg|
000a0be0  73 69 6e 2f 20 76 61 6c  75 65 73 20 74 6f 20 62  |sin/ values to b|
000a0bf0  65 20 70 6c 61 63 65 64  20 69 6e 74 6f 20 74 68  |e placed into th|
000a0c00  65 20 72 65 67 69 73 74  65 72 73 20 62 65 66 6f  |e registers befo|
000a0c10  72 65 20 63 61 6c 6c 69  6e 67 20 74 68 65 20 53  |re calling the S|
000a0c20  57 49 2e 20 54 68 65 6e  2c 20 2f 6e 75 6d 72 65  |WI. Then, /numre|
000a0c30  67 73 6f 75 74 2f 20 70  6f 69 6e 74 65 72 73 20  |gsout/ pointers |
000a0c40  74 6f 20 76 61 72 69 61  62 6c 65 73 20 75 73 65  |to variables use|
000a0c50  64 20 66 6f 72 20 68 6f  6c 64 69 6e 67 20 74 68  |d for holding th|
000a0c60  65 20 72 65 67 69 73 74  65 72 73 20 6f 6e 20 65  |e registers on e|
000a0c70  78 69 74 20 66 72 6f 6d  20 74 68 65 20 53 57 49  |xit from the SWI|
000a0c80  2e 20 41 20 72 65 67 69  73 74 65 72 20 63 61 6e  |. A register can|
000a0c90  20 62 65 20 69 67 6e 6f  72 65 64 20 62 79 20 75  | be ignored by u|
000a0ca0  73 69 6e 67 20 3c 4e 55  4c 4c 3e 2e 0a 0a 45 78  |sing <NULL>...Ex|
000a0cb0  61 6d 70 6c 65 73 3a 0a  7b 77 72 61 70 20 6f 66  |amples:.{wrap of|
000a0cc0  66 7d 0a 7b 66 43 6f 64  65 7d 53 57 49 28 30 2c  |f}.{fCode}SWI(0,|
000a0cd0  30 2c 30 78 34 30 36 43  30 29 3b 20 2f 2a 20 43  |0,0x406C0); /* C|
000a0ce0  61 6c 6c 73 20 3c 48 6f  75 72 67 6c 61 73 73 5f  |alls <Hourglass_|
000a0cf0  4f 6e 3d 3e 53 57 49 3a  48 6f 75 72 67 6c 61 73  |On=>SWI:Hourglas|
000a0d00  73 5f 4f 6e 3e 20 2a 2f  7b 66 7d 0a 0a 7b 66 43  |s_On> */{f}..{fC|
000a0d10  6f 64 65 7d 53 57 49 28  32 2c 34 2c 30 78 33 32  |ode}SWI(2,4,0x32|
000a0d20  2c 78 2c 79 2c 4e 55 4c  4c 2c 4e 55 4c 4c 2c 26  |,x,y,NULL,NULL,&|
000a0d30  63 6f 6c 6f 75 72 2c 26  74 69 6e 74 29 3b 0a 2f  |colour,&tint);./|
000a0d40  2a 20 43 61 6c 6c 73 20  3c 4f 53 5f 52 65 61 64  |* Calls <OS_Read|
000a0d50  50 6f 69 6e 74 3d 3e 53  57 49 3a 4f 53 5f 52 65  |Point=>SWI:OS_Re|
000a0d60  61 64 50 6f 69 6e 74 3e  20 74 6f 20 72 65 61 64  |adPoint> to read|
000a0d70  20 70 6f 69 6e 74 20 28  78 2c 79 29 2c 0a 20 20  | point (x,y),.  |
000a0d80  20 72 65 74 75 72 6e 73  20 63 6f 6c 6f 75 72 20  | returns colour |
000a0d90  61 6e 64 20 74 69 6e 74  20 2a 2f 7b 66 7d 00 00  |and tint */{f}..|
000a0da0  44 41 54 41 4a 04 00 00  73 77 69 73 2e 68 0a 23  |DATAJ...swis.h.#|
000a0db0  50 61 72 65 6e 74 20 72  6f 5f 65 61 73 79 63 5f  |Parent ro_easyc_|
000a0dc0  0a 54 68 65 20 5c 3c 73  77 69 73 2e 68 5c 3e 20  |.The \<swis.h\> |
000a0dd0  68 65 61 64 65 72 20 64  65 66 69 6e 65 73 20 34  |header defines 4|
000a0de0  36 39 20 6d 61 63 72 6f  73 20 66 6f 72 20 63 61  |69 macros for ca|
000a0df0  6c 6c 69 6e 67 20 53 57  49 20 72 6f 75 74 69 6e  |lling SWI routin|
000a0e00  65 73 2e 20 54 68 65 20  69 64 65 61 20 69 73 20  |es. The idea is |
000a0e10  74 68 61 74 20 79 6f 75  20 75 73 65 20 6f 6e 65  |that you use one|
000a0e20  20 6f 66 20 74 68 65 73  65 20 61 73 20 61 6e 20  | of these as an |
000a0e30  61 72 67 75 6d 65 6e 74  20 66 6f 72 20 65 69 74  |argument for eit|
000a0e40  68 65 72 20 74 68 65 20  3c 5f 6b 65 72 6e 65 6c  |her the <_kernel|
000a0e50  5f 73 77 69 3e 20 6f 72  20 3c 6f 73 5f 73 77 69  |_swi> or <os_swi|
000a0e60  3e 20 66 75 6e 63 74 69  6f 6e 2e 20 45 61 63 68  |> function. Each|
000a0e70  20 6d 61 63 72 6f 20 69  73 20 74 68 65 20 6e 61  | macro is the na|
000a0e80  6d 65 20 6f 66 20 61 6e  20 53 57 49 20 63 61 6c  |me of an SWI cal|
000a0e90  6c 20 61 6e 64 20 72 65  70 72 65 73 65 6e 74 73  |l and represents|
000a0ea0  20 74 68 65 20 53 57 49  20 6e 75 6d 62 65 72 2e  | the SWI number.|
000a0eb0  0a 0a 23 49 6e 64 65 6e  74 20 39 0a 23 54 61 62  |..#Indent 9.#Tab|
000a0ec0  6c 65 20 63 6f 6c 75 6d  6e 73 20 33 0a 3c 4f 53  |le columns 3.<OS|
000a0ed0  3d 3e 53 57 49 3a 4f 53  5f 3e 0a 3c 49 49 43 3d  |=>SWI:OS_>.<IIC=|
000a0ee0  3e 53 57 49 3a 49 49 43  5f 3e 0a 3c 46 6f 6e 74  |>SWI:IIC_>.<Font|
000a0ef0  3d 3e 53 57 49 3a 46 6f  6e 74 5f 3e 0a 3c 57 69  |=>SWI:Font_>.<Wi|
000a0f00  6d 70 3d 3e 53 57 49 3a  57 69 6d 70 5f 3e 0a 3c  |mp=>SWI:Wimp_>.<|
000a0f10  53 6f 75 6e 64 3d 3e 53  57 49 3a 53 6f 75 6e 64  |Sound=>SWI:Sound|
000a0f20  5f 3e 0a 3c 41 44 46 53  3d 3e 53 57 49 3a 41 44  |_>.<ADFS=>SWI:AD|
000a0f30  46 53 5f 3e 0a 3c 50 6f  64 75 6c 65 3d 3e 53 57  |FS_>.<Podule=>SW|
000a0f40  49 3a 50 6f 64 75 6c 65  5f 3e 0a 3c 44 65 62 75  |I:Podule_>.<Debu|
000a0f50  67 67 65 72 3d 3e 53 57  49 3a 44 65 62 75 67 67  |gger=>SWI:Debugg|
000a0f60  65 72 5f 3e 0a 3c 46 50  45 6d 75 6c 61 74 6f 72  |er_>.<FPEmulator|
000a0f70  20 3d 3e 53 57 49 3a 46  50 45 6d 75 6c 61 74 6f  | =>SWI:FPEmulato|
000a0f80  72 5f 3e 0a 3c 46 69 6c  65 43 6f 72 65 3d 3e 53  |r_>.<FileCore=>S|
000a0f90  57 49 3a 46 69 6c 65 43  6f 72 65 5f 3e 0a 3c 53  |WI:FileCore_>.<S|
000a0fa0  68 65 6c 6c 3d 3e 53 57  49 3a 53 68 65 6c 6c 5f  |hell=>SWI:Shell_|
000a0fb0  3e 0a 3c 48 6f 75 72 67  6c 61 73 73 3d 3e 53 57  |>.<Hourglass=>SW|
000a0fc0  49 3a 48 6f 75 72 67 6c  61 73 73 5f 3e 0a 3c 44  |I:Hourglass_>.<D|
000a0fd0  72 61 77 3d 3e 53 57 49  3a 44 72 61 77 5f 3e 0a  |raw=>SWI:Draw_>.|
000a0fe0  3c 43 6f 6c 6f 75 72 54  72 61 6e 73 3d 3e 53 57  |<ColourTrans=>SW|
000a0ff0  49 3a 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 3e 0a  |I:ColourTrans_>.|
000a1000  3c 53 75 70 65 72 3d 3e  53 57 49 3a 53 75 70 65  |<Super=>SWI:Supe|
000a1010  72 5f 3e 0a 3c 46 69 6c  65 72 41 63 74 69 6f 6e  |r_>.<FilerAction|
000a1020  3d 3e 46 69 6c 65 72 41  63 74 69 6f 6e 5f 3e 0a  |=>FilerAction_>.|
000a1030  3c 4d 65 73 73 61 67 65  54 72 61 6e 73 20 3d 3e  |<MessageTrans =>|
000a1040  53 57 49 3a 4d 65 73 73  61 67 65 54 72 61 6e 73  |SWI:MessageTrans|
000a1050  5f 3e 0a 3c 50 44 75 6d  70 65 72 3d 3e 53 57 49  |_>.<PDumper=>SWI|
000a1060  3a 50 44 75 6d 70 65 72  5f 3e 0a 3c 52 65 73 6f  |:PDumper_>.<Reso|
000a1070  75 72 63 65 46 53 3d 3e  53 57 49 3a 52 65 73 6f  |urceFS=>SWI:Reso|
000a1080  75 72 63 65 46 53 5f 3e  0a 3c 44 72 61 67 41 53  |urceFS_>.<DragAS|
000a1090  70 72 69 74 65 3d 3e 53  57 49 3a 44 72 61 67 41  |prite=>SWI:DragA|
000a10a0  53 70 72 69 74 65 5f 3e  0a 3c 46 69 6c 74 65 72  |Sprite_>.<Filter|
000a10b0  3d 3e 53 57 49 3a 46 69  6c 74 65 72 5f 3e 0a 3c  |=>SWI:Filter_>.<|
000a10c0  54 61 73 6b 4d 61 6e 61  67 65 72 3d 3e 53 57 49  |TaskManager=>SWI|
000a10d0  3a 54 61 73 6b 4d 61 6e  61 67 65 72 5f 3e 0a 3c  |:TaskManager_>.<|
000a10e0  53 71 75 61 73 68 3d 3e  53 57 49 3a 53 71 75 61  |Squash=>SWI:Squa|
000a10f0  73 68 5f 3e 0a 3c 44 65  76 69 63 65 46 53 3d 3e  |sh_>.<DeviceFS=>|
000a1100  53 57 49 3a 44 65 76 69  63 65 46 53 5f 3e 0a 3c  |SWI:DeviceFS_>.<|
000a1110  42 75 66 66 65 72 3d 3e  53 57 49 3a 42 75 66 66  |Buffer=>SWI:Buff|
000a1120  65 72 5f 3e 0a 3c 42 41  53 49 43 54 72 61 6e 73  |er_>.<BASICTrans|
000a1130  3d 3e 53 57 49 3a 42 61  73 69 63 54 72 61 6e 73  |=>SWI:BasicTrans|
000a1140  5f 3e 0a 3c 50 61 72 61  6c 6c 65 6c 3d 3e 53 57  |_>.<Parallel=>SW|
000a1150  49 3a 50 61 72 61 6c 6c  65 6c 5f 3e 0a 3c 54 65  |I:Parallel_>.<Te|
000a1160  72 72 69 74 6f 72 79 3d  3e 53 57 49 3a 54 65 72  |rritory=>SWI:Ter|
000a1170  72 69 74 6f 72 79 5f 3e  0a 3c 53 63 72 65 65 6e  |ritory_>.<Screen|
000a1180  42 6c 61 6e 6b 65 72 3d  3e 53 57 49 3a 53 63 72  |Blanker=>SWI:Scr|
000a1190  65 65 6e 42 6c 61 6e 6b  65 72 5f 3e 0a 3c 54 61  |eenBlanker_>.<Ta|
000a11a0  73 6b 57 69 6e 64 6f 77  3d 3e 53 57 49 3a 54 61  |skWindow=>SWI:Ta|
000a11b0  73 6b 57 69 6e 64 6f 77  5f 3e 0a 3c 46 72 65 65  |skWindow_>.<Free|
000a11c0  3d 3e 53 57 49 3a 46 72  65 65 5f 3e 0a 3c 44 4f  |=>SWI:Free_>.<DO|
000a11d0  53 46 53 3d 3e 53 57 49  3a 44 4f 53 46 53 5f 3e  |SFS=>SWI:DOSFS_>|
000a11e0  0a 23 45 6e 64 54 61 62  6c 65 00 00 44 49 52 24  |.#EndTable..DIR$|
000a11f0  28 00 00 00 28 00 00 00  14 12 0a 00 46 fd ff ff  |(...(.......F...|
000a1200  29 42 58 26 ab 00 00 00  13 00 00 00 00 00 00 00  |)BX&............|
000a1210  54 4c 00 00 44 41 54 41  ab 00 00 00 54 69 6d 73  |TL..DATA....Tims|
000a1220  4c 69 62 3a 53 57 49 73  2e 68 0a 54 68 69 73 20  |Lib:SWIs.h.This |
000a1230  68 65 61 64 65 72 20 69  73 20 61 6e 20 61 6c 74  |header is an alt|
000a1240  65 72 6e 61 74 69 76 65  20 66 6f 72 20 44 65 73  |ernative for Des|
000a1250  6b 74 6f 70 20 43 27 73  20 3c 73 77 69 73 2e 68  |ktop C's <swis.h|
000a1260  3d 3e 73 77 69 73 3e 2c  20 77 69 74 68 20 74 68  |=>swis>, with th|
000a1270  65 20 57 69 6d 70 2c 20  46 6f 6e 74 20 61 6e 64  |e Wimp, Font and|
000a1280  20 48 6f 75 72 67 6c 61  73 73 20 53 57 49 73 20  | Hourglass SWIs |
000a1290  72 65 6d 6f 76 65 64 20  66 6f 72 20 63 6f 6d 70  |removed for comp|
000a12a0  61 74 69 62 69 6c 69 74  79 20 77 69 74 68 20 44  |atibility with D|
000a12b0  65 73 6b 4c 69 62 2f 54  69 6d 73 4c 69 62 2e 00  |eskLib/TimsLib..|
000a12c0  44 41 54 41 12 03 00 00  73 77 69 74 63 68 0a 54  |DATA....switch.T|
000a12d0  68 69 73 20 63 6f 6d 6d  61 6e 64 20 61 6c 6c 6f  |his command allo|
000a12e0  77 73 20 79 6f 75 20 74  6f 20 73 65 6c 65 63 74  |ws you to select|
000a12f0  20 6f 6e 65 20 61 63 74  69 6f 6e 20 66 72 6f 6d  | one action from|
000a1300  20 73 65 76 65 72 61 6c  20 6f 6e 20 74 68 65 20  | several on the |
000a1310  62 61 73 69 73 20 6f 66  20 61 20 76 61 6c 75 65  |basis of a value|
000a1320  2e 20 49 74 20 69 73 20  65 71 75 69 76 61 6c 65  |. It is equivale|
000a1330  6e 74 20 74 6f 20 42 41  53 49 43 27 73 20 3c 43  |nt to BASIC's <C|
000a1340  41 53 45 3d 3e 42 61 73  69 63 3a 43 41 53 45 3e  |ASE=>Basic:CASE>|
000a1350  2e 20 54 68 65 20 66 6f  72 6d 20 69 73 3a 0a 0a  |. The form is:..|
000a1360  23 66 43 6f 64 65 0a 20  20 73 77 69 74 63 68 20  |#fCode.  switch |
000a1370  28 5c 3c 65 78 70 72 65  73 73 69 6f 6e 3e 29 0a  |(\<expression>).|
000a1380  20 20 5c 7b 0a 20 20 63  61 73 65 20 5c 3c 63 6f  |  \{.  case \<co|
000a1390  6e 73 74 61 6e 74 31 3e  3a 20 5c 3c 73 74 61 74  |nstant1>: \<stat|
000a13a0  65 6d 65 6e 74 73 31 3e  3b 0a 20 20 63 61 73 65  |ements1>;.  case|
000a13b0  20 5c 3c 63 6f 6e 73 74  61 6e 74 32 3e 3a 20 5c  | \<constant2>: \|
000a13c0  3c 73 74 61 74 65 6d 65  6e 74 73 32 3e 3b 0a 20  |<statements2>;. |
000a13d0  20 2e 2e 2e 0a 20 20 64  65 66 61 75 6c 74 3a 20  | ....  default: |
000a13e0  5c 3c 73 74 61 74 65 6d  65 6e 74 73 3e 0a 20 20  |\<statements>.  |
000a13f0  7d 0a 23 66 0a 0a 46 6f  72 20 65 61 63 68 20 63  |}.#f..For each c|
000a1400  6f 6e 73 74 61 6e 74 2c  20 69 66 20 69 74 20 69  |onstant, if it i|
000a1410  73 20 74 68 65 20 73 61  6d 65 20 61 73 20 74 68  |s the same as th|
000a1420  65 20 76 61 6c 75 65 20  6f 66 20 74 68 65 20 65  |e value of the e|
000a1430  78 70 72 65 73 73 69 6f  6e 20 65 76 61 6c 75 61  |xpression evalua|
000a1440  74 65 64 20 61 74 20 74  68 65 20 73 74 61 72 74  |ted at the start|
000a1450  2c 20 61 6c 6c 20 73 74  61 74 65 6d 65 6e 74 73  |, all statements|
000a1460  20 66 72 6f 6d 20 74 68  69 73 20 70 6f 69 6e 74  | from this point|
000a1470  20 6f 6e 20 61 72 65 20  65 76 61 6c 75 61 74 65  | on are evaluate|
000a1480  64 2e 20 53 6f 20 69 66  20 5c 3c 65 78 70 72 65  |d. So if \<expre|
000a1490  73 73 69 6f 6e 3e 20 69  73 20 65 71 75 61 6c 20  |ssion> is equal |
000a14a0  74 6f 20 5c 3c 63 6f 6e  73 74 61 6e 74 31 3e 20  |to \<constant1> |
000a14b0  62 6f 74 68 20 5c 3c 73  74 61 74 65 6d 65 6e 74  |both \<statement|
000a14c0  73 31 3e 20 61 6e 64 20  5c 3c 73 74 61 74 65 6d  |s1> and \<statem|
000a14d0  65 6e 74 73 32 3e 20 61  72 65 20 65 78 65 63 75  |ents2> are execu|
000a14e0  74 65 64 20 28 74 68 69  73 20 6d 61 6b 65 73 20  |ted (this makes |
000a14f0  74 68 65 20 3c 62 72 65  61 6b 3e 20 63 6f 6d 6d  |the <break> comm|
000a1500  61 6e 64 20 75 73 65 66  75 6c 29 2e 0a 0a 54 68  |and useful)...Th|
000a1510  65 20 73 74 61 74 65 6d  65 6e 74 73 20 73 68 6f  |e statements sho|
000a1520  75 6c 64 2c 20 6f 66 20  63 6f 75 72 73 65 2c 20  |uld, of course, |
000a1530  62 65 20 73 65 70 61 72  61 74 65 64 20 62 79 20  |be separated by |
000a1540  73 65 6d 69 63 6f 6c 6f  6e 73 2c 20 62 75 74 20  |semicolons, but |
000a1550  73 65 76 65 72 61 6c 20  63 61 6e 20 61 70 70 65  |several can appe|
000a1560  61 72 20 77 69 74 68 6f  75 74 20 75 73 69 6e 67  |ar without using|
000a1570  20 62 72 61 63 65 73 20  5c 7b 7d 2e 0a 0a 54 68  | braces \{}...Th|
000a1580  65 20 7b 2f 7d 64 65 66  61 75 6c 74 3a 7b 2f 7d  |e {/}default:{/}|
000a1590  20 70 61 72 74 20 69 73  20 6f 70 74 69 6f 6e 61  | part is optiona|
000a15a0  6c 2c 20 61 6e 64 20 69  73 20 65 78 65 63 75 74  |l, and is execut|
000a15b0  65 64 20 69 66 20 6e 6f  6e 65 20 6f 66 20 74 68  |ed if none of th|
000a15c0  65 20 63 6f 6e 73 74 61  6e 74 73 20 6d 61 74 63  |e constants matc|
000a15d0  68 2e 00 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |h...DIR$,...,...|
000a15e0  00 16 0a 00 46 fd ff ff  6f c8 d6 25 3b 22 00 00  |....F...o..%;"..|
000a15f0  13 00 00 00 00 00 00 00  6d 61 63 72 6f 73 5f 00  |........macros_.|
000a1600  44 41 54 41 3b 22 00 00  53 57 49 20 4e 75 6d 62  |DATA;"..SWI Numb|
000a1610  65 72 20 4d 61 63 72 6f  73 0a 54 68 65 20 66 6f  |er Macros.The fo|
000a1620  6c 6c 6f 77 69 6e 67 20  6d 61 63 72 6f 73 20 61  |llowing macros a|
000a1630  72 65 20 61 6c 6c 20 64  65 66 69 6e 65 64 20 69  |re all defined i|
000a1640  6e 20 3c 44 65 73 6b 4c  69 62 3a 53 57 49 2e 68  |n <DeskLib:SWI.h|
000a1650  3d 3e 53 57 49 3e 20 74  6f 20 62 65 20 74 68 65  |=>SWI> to be the|
000a1660  20 6e 75 6d 62 65 72 20  6f 66 20 74 68 65 20 53  | number of the S|
000a1670  57 49 20 74 68 65 79 20  61 72 65 20 6e 61 6d 65  |WI they are name|
000a1680  64 20 61 66 74 65 72 3a  0a 0a 23 54 61 62 6c 65  |d after:..#Table|
000a1690  20 31 31 38 20 33 36 0a  53 57 49 5f 4f 53 5f 57  | 118 36.SWI_OS_W|
000a16a0  72 69 74 65 43 20 20 20  20 20 20 20 20 20 20 20  |riteC           |
000a16b0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a16c0  4f 53 5f 57 72 69 74 65  53 20 20 20 20 20 20 20  |OS_WriteS       |
000a16d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a16e0  53 57 49 5f 4f 53 5f 57  72 69 74 65 30 20 20 20  |SWI_OS_Write0   |
000a16f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a1700  20 20 20 0a 53 57 49 5f  4f 53 5f 4e 65 77 4c 69  |   .SWI_OS_NewLi|
000a1710  6e 65 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ne              |
000a1720  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 52  |       .SWI_OS_R|
000a1730  65 61 64 43 20 20 20 20  20 20 20 20 20 20 20 20  |eadC            |
000a1740  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1750  4f 53 5f 43 4c 49 20 20  20 20 20 20 20 20 20 20  |OS_CLI          |
000a1760  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a1770  53 57 49 5f 4f 53 5f 42  79 74 65 20 20 20 20 20  |SWI_OS_Byte     |
000a1780  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a1790  20 20 20 0a 53 57 49 5f  4f 53 5f 57 6f 72 64 20  |   .SWI_OS_Word |
000a17a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a17b0  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 46  |       .SWI_OS_F|
000a17c0  69 6c 65 20 20 20 20 20  20 20 20 20 20 20 20 20  |ile             |
000a17d0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a17e0  4f 53 5f 41 72 67 73 20  20 20 20 20 20 20 20 20  |OS_Args         |
000a17f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a1800  53 57 49 5f 4f 53 5f 42  47 65 74 20 20 20 20 20  |SWI_OS_BGet     |
000a1810  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a1820  20 20 20 0a 53 57 49 5f  4f 53 5f 42 50 75 74 20  |   .SWI_OS_BPut |
000a1830  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a1840  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 47  |       .SWI_OS_G|
000a1850  42 50 42 20 20 20 20 20  20 20 20 20 20 20 20 20  |BPB             |
000a1860  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1870  4f 53 5f 46 69 6e 64 20  20 20 20 20 20 20 20 20  |OS_Find         |
000a1880  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a1890  53 57 49 5f 4f 53 5f 52  65 61 64 4c 69 6e 65 20  |SWI_OS_ReadLine |
000a18a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a18b0  20 20 20 0a 53 57 49 5f  4f 53 5f 43 6f 6e 74 72  |   .SWI_OS_Contr|
000a18c0  6f 6c 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ol              |
000a18d0  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 47  |       .SWI_OS_G|
000a18e0  65 74 45 6e 76 20 20 20  20 20 20 20 20 20 20 20  |etEnv           |
000a18f0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1900  4f 53 5f 45 78 69 74 20  20 20 20 20 20 20 20 20  |OS_Exit         |
000a1910  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a1920  53 57 49 5f 4f 53 5f 53  65 74 45 6e 76 20 20 20  |SWI_OS_SetEnv   |
000a1930  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a1940  20 20 20 0a 53 57 49 5f  4f 53 5f 49 6e 74 4f 6e  |   .SWI_OS_IntOn|
000a1950  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a1960  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 49  |       .SWI_OS_I|
000a1970  6e 74 4f 66 66 20 20 20  20 20 20 20 20 20 20 20  |ntOff           |
000a1980  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1990  4f 53 5f 43 61 6c 6c 42  61 63 6b 20 20 20 20 20  |OS_CallBack     |
000a19a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a19b0  53 57 49 5f 4f 53 5f 45  6e 74 65 72 4f 53 20 20  |SWI_OS_EnterOS  |
000a19c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a19d0  20 20 20 0a 53 57 49 5f  4f 53 5f 42 72 65 61 6b  |   .SWI_OS_Break|
000a19e0  50 74 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |Pt              |
000a19f0  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 42  |       .SWI_OS_B|
000a1a00  72 65 61 6b 43 74 72 6c  20 20 20 20 20 20 20 20  |reakCtrl        |
000a1a10  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1a20  4f 53 5f 55 6e 75 73 65  64 53 57 49 20 20 20 20  |OS_UnusedSWI    |
000a1a30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a1a40  53 57 49 5f 4f 53 5f 55  70 64 61 74 65 4d 45 4d  |SWI_OS_UpdateMEM|
000a1a50  43 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |C               |
000a1a60  20 20 20 0a 53 57 49 5f  4f 53 5f 53 65 74 43 61  |   .SWI_OS_SetCa|
000a1a70  6c 6c 42 61 63 6b 20 20  20 20 20 20 20 20 20 20  |llBack          |
000a1a80  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 4d  |       .SWI_OS_M|
000a1a90  6f 75 73 65 20 20 20 20  20 20 20 20 20 20 20 20  |ouse            |
000a1aa0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1ab0  4f 53 5f 48 65 61 70 20  20 20 20 20 20 20 20 20  |OS_Heap         |
000a1ac0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a1ad0  53 57 49 5f 4f 53 5f 4d  6f 64 75 6c 65 20 20 20  |SWI_OS_Module   |
000a1ae0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a1af0  20 20 20 0a 53 57 49 5f  4f 53 5f 43 6c 61 69 6d  |   .SWI_OS_Claim|
000a1b00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a1b10  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 52  |       .SWI_OS_R|
000a1b20  65 6c 65 61 73 65 20 20  20 20 20 20 20 20 20 20  |elease          |
000a1b30  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1b40  4f 53 5f 52 65 61 64 55  6e 73 69 67 6e 65 64 20  |OS_ReadUnsigned |
000a1b50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a1b60  53 57 49 5f 4f 53 5f 47  65 6e 65 72 61 74 65 45  |SWI_OS_GenerateE|
000a1b70  76 65 6e 74 20 20 20 20  20 20 20 20 20 20 20 20  |vent            |
000a1b80  20 20 20 0a 53 57 49 5f  4f 53 5f 52 65 61 64 56  |   .SWI_OS_ReadV|
000a1b90  61 72 56 61 6c 20 20 20  20 20 20 20 20 20 20 20  |arVal           |
000a1ba0  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 53  |       .SWI_OS_S|
000a1bb0  65 74 56 61 72 56 61 6c  20 20 20 20 20 20 20 20  |etVarVal        |
000a1bc0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1bd0  4f 53 5f 47 53 49 6e 69  74 20 20 20 20 20 20 20  |OS_GSInit       |
000a1be0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a1bf0  53 57 49 5f 4f 53 5f 47  53 52 65 61 64 20 20 20  |SWI_OS_GSRead   |
000a1c00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a1c10  20 20 20 0a 53 57 49 5f  4f 53 5f 47 53 54 72 61  |   .SWI_OS_GSTra|
000a1c20  6e 73 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ns              |
000a1c30  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 42  |       .SWI_OS_B|
000a1c40  69 6e 61 72 79 54 6f 44  65 63 69 6d 61 6c 20 20  |inaryToDecimal  |
000a1c50  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1c60  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 20 20 20  |OS_FSControl    |
000a1c70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a1c80  53 57 49 5f 4f 53 5f 43  68 61 6e 67 65 44 79 6e  |SWI_OS_ChangeDyn|
000a1c90  61 6d 69 63 41 72 65 61  20 20 20 20 20 20 20 20  |amicArea        |
000a1ca0  20 20 20 0a 53 57 49 5f  4f 53 5f 47 65 6e 65 72  |   .SWI_OS_Gener|
000a1cb0  61 74 65 45 72 72 6f 72  20 20 20 20 20 20 20 20  |ateError        |
000a1cc0  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 52  |       .SWI_OS_R|
000a1cd0  65 61 64 45 73 63 61 70  65 53 74 61 74 65 20 20  |eadEscapeState  |
000a1ce0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1cf0  4f 53 5f 45 76 61 6c 75  61 74 65 45 78 70 72 65  |OS_EvaluateExpre|
000a1d00  73 73 69 6f 6e 20 20 20  20 20 20 20 20 20 20 0a  |ssion          .|
000a1d10  53 57 49 5f 4f 53 5f 53  70 72 69 74 65 4f 70 20  |SWI_OS_SpriteOp |
000a1d20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a1d30  20 20 20 0a 53 57 49 5f  4f 53 5f 52 65 61 64 50  |   .SWI_OS_ReadP|
000a1d40  61 6c 65 74 74 65 20 20  20 20 20 20 20 20 20 20  |alette          |
000a1d50  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 53  |       .SWI_OS_S|
000a1d60  65 72 76 69 63 65 43 61  6c 6c 20 20 20 20 20 20  |erviceCall      |
000a1d70  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1d80  4f 53 5f 52 65 61 64 56  64 75 56 61 72 69 61 62  |OS_ReadVduVariab|
000a1d90  6c 65 73 20 20 20 20 20  20 20 20 20 20 20 20 0a  |les            .|
000a1da0  53 57 49 5f 4f 53 5f 52  65 61 64 50 6f 69 6e 74  |SWI_OS_ReadPoint|
000a1db0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a1dc0  20 20 20 0a 53 57 49 5f  4f 53 5f 55 70 43 61 6c  |   .SWI_OS_UpCal|
000a1dd0  6c 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |l               |
000a1de0  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 43  |       .SWI_OS_C|
000a1df0  61 6c 6c 41 56 65 63 74  6f 72 20 20 20 20 20 20  |allAVector      |
000a1e00  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1e10  4f 53 5f 52 65 61 64 4d  6f 64 65 56 61 72 69 61  |OS_ReadModeVaria|
000a1e20  62 6c 65 20 20 20 20 20  20 20 20 20 20 20 20 0a  |ble            .|
000a1e30  53 57 49 5f 4f 53 5f 52  65 6d 6f 76 65 43 75 72  |SWI_OS_RemoveCur|
000a1e40  73 6f 72 73 20 20 20 20  20 20 20 20 20 20 20 20  |sors            |
000a1e50  20 20 20 0a 53 57 49 5f  4f 53 5f 52 65 73 74 6f  |   .SWI_OS_Resto|
000a1e60  72 65 43 75 72 73 6f 72  73 20 20 20 20 20 20 20  |reCursors       |
000a1e70  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 53  |       .SWI_OS_S|
000a1e80  57 49 4e 75 6d 62 65 72  54 6f 53 74 72 69 6e 67  |WINumberToString|
000a1e90  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1ea0  4f 53 5f 53 57 49 4e 75  6d 62 65 72 46 72 6f 6d  |OS_SWINumberFrom|
000a1eb0  53 74 72 69 6e 67 20 20  20 20 20 20 20 20 20 0a  |String         .|
000a1ec0  53 57 49 5f 4f 53 5f 56  61 6c 69 64 61 74 65 41  |SWI_OS_ValidateA|
000a1ed0  64 64 72 65 73 73 20 20  20 20 20 20 20 20 20 20  |ddress          |
000a1ee0  20 20 20 0a 53 57 49 5f  4f 53 5f 43 61 6c 6c 41  |   .SWI_OS_CallA|
000a1ef0  66 74 65 72 20 20 20 20  20 20 20 20 20 20 20 20  |fter            |
000a1f00  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 43  |       .SWI_OS_C|
000a1f10  61 6c 6c 45 76 65 72 79  20 20 20 20 20 20 20 20  |allEvery        |
000a1f20  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1f30  4f 53 5f 52 65 6d 6f 76  65 54 69 63 6b 65 72 45  |OS_RemoveTickerE|
000a1f40  76 65 6e 74 20 20 20 20  20 20 20 20 20 20 20 0a  |vent           .|
000a1f50  53 57 49 5f 4f 53 5f 49  6e 73 74 61 6c 6c 4b 65  |SWI_OS_InstallKe|
000a1f60  79 48 61 6e 64 6c 65 72  20 20 20 20 20 20 20 20  |yHandler        |
000a1f70  20 20 20 0a 53 57 49 5f  4f 53 5f 43 68 65 63 6b  |   .SWI_OS_Check|
000a1f80  4d 6f 64 65 56 61 6c 69  64 20 20 20 20 20 20 20  |ModeValid       |
000a1f90  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 43  |       .SWI_OS_C|
000a1fa0  68 61 6e 67 65 45 6e 76  69 72 6f 6e 6d 65 6e 74  |hangeEnvironment|
000a1fb0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a1fc0  4f 53 5f 43 6c 61 69 6d  53 63 72 65 65 6e 4d 65  |OS_ClaimScreenMe|
000a1fd0  6d 6f 72 79 20 20 20 20  20 20 20 20 20 20 20 0a  |mory           .|
000a1fe0  53 57 49 5f 4f 53 5f 52  65 61 64 4d 6f 6e 6f 74  |SWI_OS_ReadMonot|
000a1ff0  6f 6e 69 63 54 69 6d 65  20 20 20 20 20 20 20 20  |onicTime        |
000a2000  20 20 20 0a 53 57 49 5f  4f 53 5f 53 75 62 73 74  |   .SWI_OS_Subst|
000a2010  69 74 75 74 65 41 72 67  73 20 20 20 20 20 20 20  |ituteArgs       |
000a2020  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 50  |       .SWI_OS_P|
000a2030  72 65 74 74 79 50 72 69  6e 74 20 20 20 20 20 20  |rettyPrint      |
000a2040  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2050  4f 53 5f 50 6c 6f 74 20  20 20 20 20 20 20 20 20  |OS_Plot         |
000a2060  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a2070  53 57 49 5f 4f 53 5f 57  72 69 74 65 4e 20 20 20  |SWI_OS_WriteN   |
000a2080  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a2090  20 20 20 0a 53 57 49 5f  4f 53 5f 41 64 64 54 6f  |   .SWI_OS_AddTo|
000a20a0  56 65 63 74 6f 72 20 20  20 20 20 20 20 20 20 20  |Vector          |
000a20b0  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 57  |       .SWI_OS_W|
000a20c0  72 69 74 65 45 6e 76 20  20 20 20 20 20 20 20 20  |riteEnv         |
000a20d0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a20e0  4f 53 5f 52 65 61 64 41  72 67 73 20 20 20 20 20  |OS_ReadArgs     |
000a20f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a2100  53 57 49 5f 4f 53 5f 52  65 61 64 52 41 4d 46 73  |SWI_OS_ReadRAMFs|
000a2110  4c 69 6d 69 74 73 20 20  20 20 20 20 20 20 20 20  |Limits          |
000a2120  20 20 20 0a 53 57 49 5f  4f 53 5f 43 6c 61 69 6d  |   .SWI_OS_Claim|
000a2130  44 65 76 69 63 65 56 65  63 74 6f 72 20 20 20 20  |DeviceVector    |
000a2140  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 52  |       .SWI_OS_R|
000a2150  65 6c 65 61 73 65 44 65  76 69 63 65 56 65 63 74  |eleaseDeviceVect|
000a2160  6f 72 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |or         .SWI_|
000a2170  4f 53 5f 44 65 6c 69 6e  6b 41 70 70 6c 69 63 61  |OS_DelinkApplica|
000a2180  74 69 6f 6e 20 20 20 20  20 20 20 20 20 20 20 0a  |tion           .|
000a2190  53 57 49 5f 4f 53 5f 52  65 6c 69 6e 6b 41 70 70  |SWI_OS_RelinkApp|
000a21a0  6c 69 63 61 74 69 6f 6e  20 20 20 20 20 20 20 20  |lication        |
000a21b0  20 20 20 0a 53 57 49 5f  4f 53 5f 48 65 61 70 53  |   .SWI_OS_HeapS|
000a21c0  6f 72 74 20 20 20 20 20  20 20 20 20 20 20 20 20  |ort             |
000a21d0  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 45  |       .SWI_OS_E|
000a21e0  78 69 74 41 6e 64 44 69  65 20 20 20 20 20 20 20  |xitAndDie       |
000a21f0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2200  4f 53 5f 52 65 61 64 4d  65 6d 4d 61 70 49 6e 66  |OS_ReadMemMapInf|
000a2210  6f 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |o              .|
000a2220  53 57 49 5f 4f 53 5f 52  65 61 64 4d 65 6d 4d 61  |SWI_OS_ReadMemMa|
000a2230  70 45 6e 74 72 69 65 73  20 20 20 20 20 20 20 20  |pEntries        |
000a2240  20 20 20 0a 53 57 49 5f  4f 53 5f 53 65 74 4d 65  |   .SWI_OS_SetMe|
000a2250  6d 4d 61 70 45 6e 74 72  69 65 73 20 20 20 20 20  |mMapEntries     |
000a2260  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 41  |       .SWI_OS_A|
000a2270  64 64 43 61 6c 6c 42 61  63 6b 20 20 20 20 20 20  |ddCallBack      |
000a2280  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2290  4f 53 5f 52 65 61 64 44  65 66 61 75 6c 74 48 61  |OS_ReadDefaultHa|
000a22a0  6e 64 6c 65 72 20 20 20  20 20 20 20 20 20 20 0a  |ndler          .|
000a22b0  53 57 49 5f 4f 53 5f 53  65 74 45 43 46 4f 72 69  |SWI_OS_SetECFOri|
000a22c0  67 69 6e 20 20 20 20 20  20 20 20 20 20 20 20 20  |gin             |
000a22d0  20 20 20 0a 53 57 49 5f  4f 53 5f 53 65 72 69 61  |   .SWI_OS_Seria|
000a22e0  6c 4f 70 20 20 20 20 20  20 20 20 20 20 20 20 20  |lOp             |
000a22f0  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 52  |       .SWI_OS_R|
000a2300  65 61 64 53 79 73 49 6e  66 6f 20 20 20 20 20 20  |eadSysInfo      |
000a2310  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2320  4f 53 5f 43 6f 6e 66 69  72 6d 20 20 20 20 20 20  |OS_Confirm      |
000a2330  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a2340  53 57 49 5f 4f 53 5f 43  68 61 6e 67 65 64 42 6f  |SWI_OS_ChangedBo|
000a2350  78 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |x               |
000a2360  20 20 20 0a 53 57 49 5f  4f 53 5f 43 52 43 20 20  |   .SWI_OS_CRC  |
000a2370  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a2380  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 52  |       .SWI_OS_R|
000a2390  65 61 64 44 79 6e 61 6d  69 63 41 72 65 61 20 20  |eadDynamicArea  |
000a23a0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a23b0  4f 53 5f 50 72 69 6e 74  43 68 61 72 20 20 20 20  |OS_PrintChar    |
000a23c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a23d0  53 57 49 5f 4f 53 5f 43  6f 6e 76 65 72 74 53 74  |SWI_OS_ConvertSt|
000a23e0  61 6e 64 61 72 64 44 61  74 65 41 6e 64 54 69 6d  |andardDateAndTim|
000a23f0  65 20 20 0a 53 57 49 5f  4f 53 5f 43 6f 6e 76 65  |e  .SWI_OS_Conve|
000a2400  72 74 44 61 74 65 41 6e  64 54 69 6d 65 20 20 20  |rtDateAndTime   |
000a2410  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 43  |       .SWI_OS_C|
000a2420  6f 6e 76 65 72 74 48 65  78 31 20 20 20 20 20 20  |onvertHex1      |
000a2430  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2440  4f 53 5f 43 6f 6e 76 65  72 74 48 65 78 32 20 20  |OS_ConvertHex2  |
000a2450  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a2460  53 57 49 5f 4f 53 5f 43  6f 6e 76 65 72 74 48 65  |SWI_OS_ConvertHe|
000a2470  78 34 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |x4              |
000a2480  20 20 20 0a 53 57 49 5f  4f 53 5f 43 6f 6e 76 65  |   .SWI_OS_Conve|
000a2490  72 74 48 65 78 36 20 20  20 20 20 20 20 20 20 20  |rtHex6          |
000a24a0  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 43  |       .SWI_OS_C|
000a24b0  6f 6e 76 65 72 74 48 65  78 38 20 20 20 20 20 20  |onvertHex8      |
000a24c0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a24d0  4f 53 5f 43 6f 6e 76 65  72 74 43 61 72 64 69 6e  |OS_ConvertCardin|
000a24e0  61 6c 31 20 20 20 20 20  20 20 20 20 20 20 20 0a  |al1            .|
000a24f0  53 57 49 5f 4f 53 5f 43  6f 6e 76 65 72 74 43 61  |SWI_OS_ConvertCa|
000a2500  72 64 69 6e 61 6c 32 20  20 20 20 20 20 20 20 20  |rdinal2         |
000a2510  20 20 20 0a 53 57 49 5f  4f 53 5f 43 6f 6e 76 65  |   .SWI_OS_Conve|
000a2520  72 74 43 61 72 64 69 6e  61 6c 33 20 20 20 20 20  |rtCardinal3     |
000a2530  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 43  |       .SWI_OS_C|
000a2540  6f 6e 76 65 72 74 43 61  72 64 69 6e 61 6c 34 20  |onvertCardinal4 |
000a2550  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2560  4f 53 5f 43 6f 6e 76 65  72 74 49 6e 74 65 67 65  |OS_ConvertIntege|
000a2570  72 31 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |r1             .|
000a2580  53 57 49 5f 4f 53 5f 43  6f 6e 76 65 72 74 49 6e  |SWI_OS_ConvertIn|
000a2590  74 65 67 65 72 32 20 20  20 20 20 20 20 20 20 20  |teger2          |
000a25a0  20 20 20 0a 53 57 49 5f  4f 53 5f 43 6f 6e 76 65  |   .SWI_OS_Conve|
000a25b0  72 74 49 6e 74 65 67 65  72 33 20 20 20 20 20 20  |rtInteger3      |
000a25c0  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 43  |       .SWI_OS_C|
000a25d0  6f 6e 76 65 72 74 49 6e  74 65 67 65 72 34 20 20  |onvertInteger4  |
000a25e0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a25f0  4f 53 5f 43 6f 6e 76 65  72 74 42 69 6e 61 72 79  |OS_ConvertBinary|
000a2600  31 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |1              .|
000a2610  53 57 49 5f 4f 53 5f 43  6f 6e 76 65 72 74 42 69  |SWI_OS_ConvertBi|
000a2620  6e 61 72 79 32 20 20 20  20 20 20 20 20 20 20 20  |nary2           |
000a2630  20 20 20 0a 53 57 49 5f  4f 53 5f 43 6f 6e 76 65  |   .SWI_OS_Conve|
000a2640  72 74 42 69 6e 61 72 79  33 20 20 20 20 20 20 20  |rtBinary3       |
000a2650  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 43  |       .SWI_OS_C|
000a2660  6f 6e 76 65 72 74 42 69  6e 61 72 79 34 20 20 20  |onvertBinary4   |
000a2670  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2680  4f 53 5f 43 6f 6e 76 65  72 74 53 70 61 63 65 64  |OS_ConvertSpaced|
000a2690  43 61 72 64 69 6e 61 6c  31 20 20 20 20 20 20 0a  |Cardinal1      .|
000a26a0  53 57 49 5f 4f 53 5f 43  6f 6e 76 65 72 74 53 70  |SWI_OS_ConvertSp|
000a26b0  61 63 65 64 43 61 72 64  69 6e 61 6c 32 20 20 20  |acedCardinal2   |
000a26c0  20 20 20 0a 53 57 49 5f  4f 53 5f 43 6f 6e 76 65  |   .SWI_OS_Conve|
000a26d0  72 74 53 70 61 63 65 64  43 61 72 64 69 6e 61 6c  |rtSpacedCardinal|
000a26e0  33 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 43  |3      .SWI_OS_C|
000a26f0  6f 6e 76 65 72 74 53 70  61 63 65 64 43 61 72 64  |onvertSpacedCard|
000a2700  69 6e 61 6c 34 20 20 20  20 20 20 0a 53 57 49 5f  |inal4      .SWI_|
000a2710  4f 53 5f 43 6f 6e 76 65  72 74 53 70 61 63 65 64  |OS_ConvertSpaced|
000a2720  49 6e 74 65 67 65 72 31  20 20 20 20 20 20 20 0a  |Integer1       .|
000a2730  53 57 49 5f 4f 53 5f 43  6f 6e 76 65 72 74 53 70  |SWI_OS_ConvertSp|
000a2740  61 63 65 64 49 6e 74 65  67 65 72 32 20 20 20 20  |acedInteger2    |
000a2750  20 20 20 0a 53 57 49 5f  4f 53 5f 43 6f 6e 76 65  |   .SWI_OS_Conve|
000a2760  72 74 53 70 61 63 65 64  49 6e 74 65 67 65 72 33  |rtSpacedInteger3|
000a2770  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 43  |       .SWI_OS_C|
000a2780  6f 6e 76 65 72 74 53 70  61 63 65 64 49 6e 74 65  |onvertSpacedInte|
000a2790  67 65 72 34 20 20 20 20  20 20 20 0a 53 57 49 5f  |ger4       .SWI_|
000a27a0  4f 53 5f 43 6f 6e 76 65  72 74 46 69 78 65 64 4e  |OS_ConvertFixedN|
000a27b0  65 74 53 74 61 74 69 6f  6e 20 20 20 20 20 20 0a  |etStation      .|
000a27c0  53 57 49 5f 4f 53 5f 43  6f 6e 76 65 72 74 4e 65  |SWI_OS_ConvertNe|
000a27d0  74 53 74 61 74 69 6f 6e  20 20 20 20 20 20 20 20  |tStation        |
000a27e0  20 20 20 0a 53 57 49 5f  4f 53 5f 43 6f 6e 76 65  |   .SWI_OS_Conve|
000a27f0  72 74 46 69 78 65 64 46  69 6c 65 53 69 7a 65 20  |rtFixedFileSize |
000a2800  20 20 20 20 20 20 20 0a  53 57 49 5f 4f 53 5f 43  |       .SWI_OS_C|
000a2810  6f 6e 76 65 72 74 46 69  6c 65 53 69 7a 65 20 20  |onvertFileSize  |
000a2820  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2830  49 49 43 5f 43 6f 6e 74  72 6f 6c 20 20 20 20 20  |IIC_Control     |
000a2840  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a2850  53 57 49 5f 45 63 6f 6e  65 74 5f 43 72 65 61 74  |SWI_Econet_Creat|
000a2860  65 52 65 63 65 69 76 65  20 20 20 20 20 20 20 20  |eReceive        |
000a2870  20 20 20 0a 53 57 49 5f  45 63 6f 6e 65 74 5f 45  |   .SWI_Econet_E|
000a2880  78 61 6d 69 6e 65 52 65  63 65 69 76 65 20 20 20  |xamineReceive   |
000a2890  20 20 20 20 20 20 20 0a  53 57 49 5f 45 63 6f 6e  |       .SWI_Econ|
000a28a0  65 74 5f 52 65 61 64 52  65 63 65 69 76 65 20 20  |et_ReadReceive  |
000a28b0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a28c0  45 63 6f 6e 65 74 5f 41  62 61 6e 64 6f 6e 52 65  |Econet_AbandonRe|
000a28d0  63 65 69 76 65 20 20 20  20 20 20 20 20 20 20 0a  |ceive          .|
000a28e0  53 57 49 5f 45 63 6f 6e  65 74 5f 57 61 69 74 46  |SWI_Econet_WaitF|
000a28f0  6f 72 52 65 63 65 70 74  69 6f 6e 20 20 20 20 20  |orReception     |
000a2900  20 20 20 0a 53 57 49 5f  45 63 6f 6e 65 74 5f 45  |   .SWI_Econet_E|
000a2910  6e 75 6d 65 72 61 74 65  52 65 63 65 69 76 65 20  |numerateReceive |
000a2920  20 20 20 20 20 20 20 0a  53 57 49 5f 45 63 6f 6e  |       .SWI_Econ|
000a2930  65 74 5f 53 74 61 72 74  54 72 61 6e 73 6d 69 74  |et_StartTransmit|
000a2940  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2950  45 63 6f 6e 65 74 5f 50  6f 6c 6c 54 72 61 6e 73  |Econet_PollTrans|
000a2960  6d 69 74 20 20 20 20 20  20 20 20 20 20 20 20 0a  |mit            .|
000a2970  53 57 49 5f 45 63 6f 6e  65 74 5f 41 62 61 6e 64  |SWI_Econet_Aband|
000a2980  6f 6e 54 72 61 6e 73 6d  69 74 20 20 20 20 20 20  |onTransmit      |
000a2990  20 20 20 0a 53 57 49 5f  45 63 6f 6e 65 74 5f 44  |   .SWI_Econet_D|
000a29a0  6f 54 72 61 6e 73 6d 69  74 20 20 20 20 20 20 20  |oTransmit       |
000a29b0  20 20 20 20 20 20 20 0a  53 57 49 5f 45 63 6f 6e  |       .SWI_Econ|
000a29c0  65 74 5f 52 65 61 64 4c  6f 63 61 6c 53 74 61 74  |et_ReadLocalStat|
000a29d0  69 6f 6e 41 6e 64 4e 65  74 20 20 0a 53 57 49 5f  |ionAndNet  .SWI_|
000a29e0  45 63 6f 6e 65 74 5f 43  6f 6e 76 65 72 74 53 74  |Econet_ConvertSt|
000a29f0  61 74 75 73 54 4f 53 74  72 69 6e 67 20 20 20 0a  |atusTOString   .|
000a2a00  53 57 49 5f 45 63 6f 6e  65 74 5f 43 6f 6e 76 65  |SWI_Econet_Conve|
000a2a10  72 74 53 74 61 74 75 73  54 6f 45 72 72 6f 72 20  |rtStatusToError |
000a2a20  20 20 20 0a 53 57 49 5f  45 63 6f 6e 65 74 5f 52  |   .SWI_Econet_R|
000a2a30  65 61 64 50 72 6f 74 65  63 74 69 6f 6e 20 20 20  |eadProtection   |
000a2a40  20 20 20 20 20 20 20 0a  53 57 49 5f 45 63 6f 6e  |       .SWI_Econ|
000a2a50  65 74 5f 53 65 74 50 72  6f 74 65 63 74 69 6f 6e  |et_SetProtection|
000a2a60  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2a70  45 63 6f 6e 65 74 5f 52  65 61 64 53 74 61 74 69  |Econet_ReadStati|
000a2a80  6f 6e 4e 75 6d 62 65 72  20 20 20 20 20 20 20 0a  |onNumber       .|
000a2a90  53 57 49 5f 45 63 6f 6e  65 74 5f 50 72 69 6e 74  |SWI_Econet_Print|
000a2aa0  42 61 6e 6e 65 72 20 20  20 20 20 20 20 20 20 20  |Banner          |
000a2ab0  20 20 20 0a 53 57 49 5f  45 63 6f 6e 65 74 5f 52  |   .SWI_Econet_R|
000a2ac0  65 6c 65 61 73 65 50 6f  72 74 20 20 20 20 20 20  |eleasePort      |
000a2ad0  20 20 20 20 20 20 20 0a  53 57 49 5f 45 63 6f 6e  |       .SWI_Econ|
000a2ae0  65 74 5f 41 6c 6c 6f 63  61 74 65 50 6f 72 74 20  |et_AllocatePort |
000a2af0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2b00  45 63 6f 6e 65 74 5f 44  65 41 6c 6c 6f 63 61 74  |Econet_DeAllocat|
000a2b10  65 50 6f 72 74 20 20 20  20 20 20 20 20 20 20 0a  |ePort          .|
000a2b20  53 57 49 5f 45 63 6f 6e  65 74 5f 43 6c 61 69 6d  |SWI_Econet_Claim|
000a2b30  50 6f 72 74 20 20 20 20  20 20 20 20 20 20 20 20  |Port            |
000a2b40  20 20 20 0a 53 57 49 5f  45 63 6f 6e 65 74 5f 53  |   .SWI_Econet_S|
000a2b50  74 61 72 74 49 6d 6d 65  64 69 61 74 65 20 20 20  |tartImmediate   |
000a2b60  20 20 20 20 20 20 20 0a  53 57 49 5f 45 63 6f 6e  |       .SWI_Econ|
000a2b70  65 74 5f 44 6f 49 6d 6d  65 64 69 61 74 65 20 20  |et_DoImmediate  |
000a2b80  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2b90  4e 65 74 46 53 5f 52 65  61 64 46 53 4e 75 6d 62  |NetFS_ReadFSNumb|
000a2ba0  65 72 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |er             .|
000a2bb0  53 57 49 5f 4e 65 74 46  53 5f 53 65 74 46 53 4e  |SWI_NetFS_SetFSN|
000a2bc0  75 6d 62 65 72 20 20 20  20 20 20 20 20 20 20 20  |umber           |
000a2bd0  20 20 20 0a 53 57 49 5f  4e 65 74 46 53 5f 52 65  |   .SWI_NetFS_Re|
000a2be0  61 64 46 53 4e 61 6d 65  20 20 20 20 20 20 20 20  |adFSName        |
000a2bf0  20 20 20 20 20 20 20 0a  53 57 49 5f 4e 65 74 46  |       .SWI_NetF|
000a2c00  53 5f 53 65 74 46 53 4e  61 6d 65 20 20 20 20 20  |S_SetFSName     |
000a2c10  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2c20  4e 65 74 46 53 5f 52 65  61 64 43 75 72 72 65 6e  |NetFS_ReadCurren|
000a2c30  74 43 6f 6e 74 65 78 74  20 20 20 20 20 20 20 0a  |tContext       .|
000a2c40  53 57 49 5f 4e 65 74 46  53 5f 53 65 74 43 75 72  |SWI_NetFS_SetCur|
000a2c50  72 65 6e 74 43 6f 6e 74  65 78 74 20 20 20 20 20  |rentContext     |
000a2c60  20 20 20 0a 53 57 49 5f  4e 65 74 46 53 5f 52 65  |   .SWI_NetFS_Re|
000a2c70  61 64 46 53 54 69 6d 65  6f 75 74 73 20 20 20 20  |adFSTimeouts    |
000a2c80  20 20 20 20 20 20 20 0a  53 57 49 5f 4e 65 74 46  |       .SWI_NetF|
000a2c90  53 5f 53 65 74 46 53 54  69 6d 65 6f 75 74 73 20  |S_SetFSTimeouts |
000a2ca0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2cb0  4e 65 74 46 53 5f 44 6f  46 53 4f 70 20 20 20 20  |NetFS_DoFSOp    |
000a2cc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a2cd0  53 57 49 5f 4e 65 74 46  53 5f 45 6e 75 6d 65 72  |SWI_NetFS_Enumer|
000a2ce0  61 74 65 46 53 4c 69 73  74 20 20 20 20 20 20 20  |ateFSList       |
000a2cf0  20 20 20 0a 53 57 49 5f  4e 65 74 46 53 5f 45 6e  |   .SWI_NetFS_En|
000a2d00  75 6d 65 72 61 74 65 46  53 20 20 20 20 20 20 20  |umerateFS       |
000a2d10  20 20 20 20 20 20 20 0a  53 57 49 5f 4e 65 74 46  |       .SWI_NetF|
000a2d20  53 5f 43 6f 6e 76 65 72  74 44 61 74 65 20 20 20  |S_ConvertDate   |
000a2d30  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2d40  4e 65 74 46 53 5f 44 6f  46 53 4f 70 54 6f 47 69  |NetFS_DoFSOpToGi|
000a2d50  76 65 6e 46 53 20 20 20  20 20 20 20 20 20 20 0a  |venFS          .|
000a2d60  53 57 49 5f 53 6f 75 6e  64 5f 43 6f 6e 66 69 67  |SWI_Sound_Config|
000a2d70  75 72 65 20 20 20 20 20  20 20 20 20 20 20 20 20  |ure             |
000a2d80  20 20 20 0a 53 57 49 5f  53 6f 75 6e 64 5f 45 6e  |   .SWI_Sound_En|
000a2d90  61 62 6c 65 20 20 20 20  20 20 20 20 20 20 20 20  |able            |
000a2da0  20 20 20 20 20 20 20 0a  53 57 49 5f 53 6f 75 6e  |       .SWI_Soun|
000a2db0  64 5f 53 74 65 72 65 6f  20 20 20 20 20 20 20 20  |d_Stereo        |
000a2dc0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2dd0  53 6f 75 6e 64 5f 53 70  65 61 6b 65 72 20 20 20  |Sound_Speaker   |
000a2de0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a2df0  53 57 49 5f 53 6f 75 6e  64 5f 56 6f 6c 75 6d 65  |SWI_Sound_Volume|
000a2e00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a2e10  20 20 20 0a 53 57 49 5f  53 6f 75 6e 64 5f 53 6f  |   .SWI_Sound_So|
000a2e20  75 6e 64 4c 6f 67 20 20  20 20 20 20 20 20 20 20  |undLog          |
000a2e30  20 20 20 20 20 20 20 0a  53 57 49 5f 53 6f 75 6e  |       .SWI_Soun|
000a2e40  64 5f 4c 6f 67 53 63 61  6c 65 20 20 20 20 20 20  |d_LogScale      |
000a2e50  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2e60  53 6f 75 6e 64 5f 49 6e  73 74 61 6c 6c 56 6f 69  |Sound_InstallVoi|
000a2e70  63 65 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |ce             .|
000a2e80  53 57 49 5f 53 6f 75 6e  64 5f 52 65 6d 6f 76 65  |SWI_Sound_Remove|
000a2e90  56 6f 69 63 65 20 20 20  20 20 20 20 20 20 20 20  |Voice           |
000a2ea0  20 20 20 0a 53 57 49 5f  53 6f 75 6e 64 5f 41 74  |   .SWI_Sound_At|
000a2eb0  74 61 63 68 56 6f 69 63  65 20 20 20 20 20 20 20  |tachVoice       |
000a2ec0  20 20 20 20 20 20 20 0a  53 57 49 5f 53 6f 75 6e  |       .SWI_Soun|
000a2ed0  64 5f 43 6f 6e 74 72 6f  6c 50 61 63 6b 65 64 20  |d_ControlPacked |
000a2ee0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a2ef0  53 6f 75 6e 64 5f 54 75  6e 69 6e 67 20 20 20 20  |Sound_Tuning    |
000a2f00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a2f10  53 57 49 5f 53 6f 75 6e  64 5f 50 69 74 63 68 20  |SWI_Sound_Pitch |
000a2f20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a2f30  20 20 20 0a 53 57 49 5f  53 6f 75 6e 64 5f 43 6f  |   .SWI_Sound_Co|
000a2f40  6e 74 72 6f 6c 20 20 20  20 20 20 20 20 20 20 20  |ntrol           |
000a2f50  20 20 20 20 20 20 20 0a  53 57 49 5f 53 6f 75 6e  |       .SWI_Soun|
000a2f60  64 5f 41 74 74 61 63 68  4e 61 6d 65 64 56 6f 69  |d_AttachNamedVoi|
000a2f70  63 65 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |ce         .SWI_|
000a2f80  53 6f 75 6e 64 5f 52 65  61 64 43 6f 6e 74 72 6f  |Sound_ReadContro|
000a2f90  6c 42 6c 6f 63 6b 20 20  20 20 20 20 20 20 20 0a  |lBlock         .|
000a2fa0  53 57 49 5f 53 6f 75 6e  64 5f 57 72 69 74 65 43  |SWI_Sound_WriteC|
000a2fb0  6f 6e 74 72 6f 6c 42 6c  6f 63 6b 20 20 20 20 20  |ontrolBlock     |
000a2fc0  20 20 20 0a 53 57 49 5f  53 6f 75 6e 64 5f 51 49  |   .SWI_Sound_QI|
000a2fd0  6e 69 74 20 20 20 20 20  20 20 20 20 20 20 20 20  |nit             |
000a2fe0  20 20 20 20 20 20 20 0a  53 57 49 5f 53 6f 75 6e  |       .SWI_Soun|
000a2ff0  64 5f 51 53 63 68 65 64  75 6c 65 20 20 20 20 20  |d_QSchedule     |
000a3000  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a3010  53 6f 75 6e 64 5f 51 52  65 6d 6f 76 65 20 20 20  |Sound_QRemove   |
000a3020  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a3030  53 57 49 5f 53 6f 75 6e  64 5f 51 46 72 65 65 20  |SWI_Sound_QFree |
000a3040  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a3050  20 20 20 0a 53 57 49 5f  53 6f 75 6e 64 5f 51 53  |   .SWI_Sound_QS|
000a3060  44 69 73 70 61 74 63 68  20 20 20 20 20 20 20 20  |Dispatch        |
000a3070  20 20 20 20 20 20 20 0a  53 57 49 5f 53 6f 75 6e  |       .SWI_Soun|
000a3080  64 5f 51 54 65 6d 70 6f  20 20 20 20 20 20 20 20  |d_QTempo        |
000a3090  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a30a0  53 6f 75 6e 64 5f 51 42  65 61 74 20 20 20 20 20  |Sound_QBeat     |
000a30b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a30c0  53 57 49 5f 53 6f 75 6e  64 5f 51 49 6e 74 65 72  |SWI_Sound_QInter|
000a30d0  66 61 63 65 20 20 20 20  20 20 20 20 20 20 20 20  |face            |
000a30e0  20 20 20 0a 53 57 49 5f  4e 65 74 50 72 69 6e 74  |   .SWI_NetPrint|
000a30f0  5f 52 65 61 64 50 53 4e  75 6d 62 65 72 20 20 20  |_ReadPSNumber   |
000a3100  20 20 20 20 20 20 20 0a  53 57 49 5f 4e 65 74 50  |       .SWI_NetP|
000a3110  72 69 6e 74 5f 53 65 74  50 53 4e 75 6d 62 65 72  |rint_SetPSNumber|
000a3120  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a3130  4e 65 74 50 72 69 6e 74  5f 52 65 61 64 50 53 4e  |NetPrint_ReadPSN|
000a3140  61 6d 65 20 20 20 20 20  20 20 20 20 20 20 20 0a  |ame            .|
000a3150  53 57 49 5f 4e 65 74 50  72 69 6e 74 5f 53 65 74  |SWI_NetPrint_Set|
000a3160  50 53 4e 61 6d 65 20 20  20 20 20 20 20 20 20 20  |PSName          |
000a3170  20 20 20 0a 53 57 49 5f  4e 65 74 50 72 69 6e 74  |   .SWI_NetPrint|
000a3180  5f 52 65 61 64 50 53 54  69 6d 65 6f 75 74 73 20  |_ReadPSTimeouts |
000a3190  20 20 20 20 20 20 20 0a  53 57 49 5f 4e 65 74 50  |       .SWI_NetP|
000a31a0  72 69 6e 74 5f 53 65 74  50 53 54 69 6d 65 6f 75  |rint_SetPSTimeou|
000a31b0  74 73 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |ts         .SWI_|
000a31c0  41 44 46 53 5f 44 69 73  63 4f 70 20 20 20 20 20  |ADFS_DiscOp     |
000a31d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a31e0  53 57 49 5f 41 44 46 53  5f 48 44 43 20 20 20 20  |SWI_ADFS_HDC    |
000a31f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a3200  20 20 20 0a 53 57 49 5f  41 44 46 53 5f 44 72 69  |   .SWI_ADFS_Dri|
000a3210  76 65 73 20 20 20 20 20  20 20 20 20 20 20 20 20  |ves             |
000a3220  20 20 20 20 20 20 20 0a  53 57 49 5f 41 44 46 53  |       .SWI_ADFS|
000a3230  5f 46 72 65 65 53 70 61  63 65 20 20 20 20 20 20  |_FreeSpace      |
000a3240  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a3250  41 44 46 53 5f 52 65 74  72 69 65 73 20 20 20 20  |ADFS_Retries    |
000a3260  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a3270  53 57 49 5f 41 44 46 53  5f 44 65 73 63 72 69 62  |SWI_ADFS_Describ|
000a3280  65 44 69 73 63 20 20 20  20 20 20 20 20 20 20 20  |eDisc           |
000a3290  20 20 20 0a 53 57 49 5f  50 6f 64 75 6c 65 5f 52  |   .SWI_Podule_R|
000a32a0  65 61 64 49 44 20 20 20  20 20 20 20 20 20 20 20  |eadID           |
000a32b0  20 20 20 20 20 20 20 0a  53 57 49 5f 50 6f 64 75  |       .SWI_Podu|
000a32c0  6c 65 5f 52 65 61 64 48  65 61 64 65 72 20 20 20  |le_ReadHeader   |
000a32d0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a32e0  50 6f 64 75 6c 65 5f 45  6e 75 6d 65 72 61 74 65  |Podule_Enumerate|
000a32f0  43 68 75 6e 6b 73 20 20  20 20 20 20 20 20 20 0a  |Chunks         .|
000a3300  53 57 49 5f 50 6f 64 75  6c 65 5f 52 65 61 64 43  |SWI_Podule_ReadC|
000a3310  68 75 6e 6b 20 20 20 20  20 20 20 20 20 20 20 20  |hunk            |
000a3320  20 20 20 0a 53 57 49 5f  50 6f 64 75 6c 65 5f 52  |   .SWI_Podule_R|
000a3330  65 61 64 42 79 74 65 73  20 20 20 20 20 20 20 20  |eadBytes        |
000a3340  20 20 20 20 20 20 20 0a  53 57 49 5f 50 6f 64 75  |       .SWI_Podu|
000a3350  6c 65 5f 57 72 69 74 65  42 79 74 65 73 20 20 20  |le_WriteBytes   |
000a3360  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a3370  50 6f 64 75 6c 65 5f 43  61 6c 6c 4c 6f 61 64 65  |Podule_CallLoade|
000a3380  72 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |r              .|
000a3390  53 57 49 5f 50 6f 64 75  6c 65 5f 52 61 77 52 65  |SWI_Podule_RawRe|
000a33a0  61 64 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ad              |
000a33b0  20 20 20 0a 53 57 49 5f  50 6f 64 75 6c 65 5f 52  |   .SWI_Podule_R|
000a33c0  61 77 57 72 69 74 65 20  20 20 20 20 20 20 20 20  |awWrite         |
000a33d0  20 20 20 20 20 20 20 0a  53 57 49 5f 50 6f 64 75  |       .SWI_Podu|
000a33e0  6c 65 5f 48 61 72 64 77  61 72 65 41 64 64 72 65  |le_HardwareAddre|
000a33f0  73 73 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |ss         .SWI_|
000a3400  57 61 76 65 53 79 6e 74  68 5f 4c 6f 61 64 20 20  |WaveSynth_Load  |
000a3410  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a3420  53 57 49 5f 44 65 62 75  67 67 65 72 5f 44 69 73  |SWI_Debugger_Dis|
000a3430  61 73 73 65 6d 62 6c 65  20 20 20 20 20 20 20 20  |assemble        |
000a3440  20 20 20 0a 53 57 49 5f  46 50 45 6d 75 6c 61 74  |   .SWI_FPEmulat|
000a3450  6f 72 5f 56 65 72 73 69  6f 6e 20 20 20 20 20 20  |or_Version      |
000a3460  20 20 20 20 20 20 20 0a  53 57 49 5f 46 69 6c 65  |       .SWI_File|
000a3470  43 6f 72 65 5f 44 69 73  63 4f 70 20 20 20 20 20  |Core_DiscOp     |
000a3480  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a3490  46 69 6c 65 43 6f 72 65  5f 43 72 65 61 74 65 20  |FileCore_Create |
000a34a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000a34b0  53 57 49 5f 46 69 6c 65  43 6f 72 65 5f 44 72 69  |SWI_FileCore_Dri|
000a34c0  76 65 73 20 20 20 20 20  20 20 20 20 20 20 20 20  |ves             |
000a34d0  20 20 20 0a 53 57 49 5f  46 69 6c 65 43 6f 72 65  |   .SWI_FileCore|
000a34e0  5f 46 72 65 65 53 70 61  63 65 20 20 20 20 20 20  |_FreeSpace      |
000a34f0  20 20 20 20 20 20 20 0a  53 57 49 5f 46 69 6c 65  |       .SWI_File|
000a3500  43 6f 72 65 5f 46 6c 6f  70 70 79 53 74 72 75 63  |Core_FloppyStruc|
000a3510  74 75 72 65 20 20 20 20  20 20 20 0a 53 57 49 5f  |ture       .SWI_|
000a3520  46 69 6c 65 43 6f 72 65  5f 44 65 73 63 72 69 62  |FileCore_Describ|
000a3530  65 44 69 73 63 20 20 20  20 20 20 20 20 20 20 0a  |eDisc          .|
000a3540  53 57 49 5f 53 68 65 6c  6c 5f 43 72 65 61 74 65  |SWI_Shell_Create|
000a3550  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a3560  20 20 20 0a 53 57 49 5f  53 68 65 6c 6c 5f 44 65  |   .SWI_Shell_De|
000a3570  73 74 72 6f 79 20 20 20  20 20 20 20 20 20 20 20  |stroy           |
000a3580  20 20 20 20 20 20 20 0a  53 57 49 5f 44 72 61 77  |       .SWI_Draw|
000a3590  5f 50 72 6f 63 65 73 73  50 61 74 68 20 20 20 20  |_ProcessPath    |
000a35a0  20 20 20 20 20 20 20 20  20 20 20 0a 53 57 49 5f  |           .SWI_|
000a35b0  44 72 61 77 5f 50 72 6f  63 65 73 73 50 61 74 68  |Draw_ProcessPath|
000a35c0  46 50 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |FP             .|
000a35d0  53 57 49 5f 44 72 61 77  5f 46 69 6c 6c 0a 53 57  |SWI_Draw_Fill.SW|
000a35e0  49 5f 44 72 61 77 5f 46  69 6c 6c 46 50 20 20 20  |I_Draw_FillFP   |
000a35f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000a3600  20 0a 53 57 49 5f 44 72  61 77 5f 53 74 72 6f 6b  | .SWI_Draw_Strok|
000a3610  65 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |e               |
000a3620  20 20 20 20 20 0a 53 57  49 5f 44 72 61 77 5f 53  |     .SWI_Draw_S|
000a3630  74 72 6f 6b 65 46 50 20  20 20 20 20 20 20 20 20  |trokeFP         |
000a3640  20 20 20 20 20 20 20 20  20 0a 53 57 49 5f 44 72  |         .SWI_Dr|
000a3650  61 77 5f 53 74 72 6f 6b  65 50 61 74 68 20 20 20  |aw_StrokePath   |
000a3660  20 20 20 20 20 20 20 20  20 20 20 20 20 0a 53 57  |             .SW|
000a3670  49 5f 44 72 61 77 5f 53  74 72 6f 6b 65 50 61 74  |I_Draw_StrokePat|
000a3680  68 46 50 20 20 20 20 20  20 20 20 20 20 20 20 20  |hFP             |
000a3690  20 0a 53 57 49 5f 44 72  61 77 5f 46 6c 61 74 74  | .SWI_Draw_Flatt|
000a36a0  65 6e 50 61 74 68 20 20  20 20 20 20 20 20 20 20  |enPath          |
000a36b0  20 20 20 20 20 0a 53 57  49 5f 44 72 61 77 5f 46  |     .SWI_Draw_F|
000a36c0  6c 61 74 74 65 6e 50 61  74 68 46 50 20 20 20 20  |lattenPathFP    |
000a36d0  20 20 20 20 20 20 20 20  20 0a 53 57 49 5f 44 72  |         .SWI_Dr|
000a36e0  61 77 5f 54 72 61 6e 73  66 6f 72 6d 50 61 74 68  |aw_TransformPath|
000a36f0  20 20 20 20 20 20 20 20  20 20 20 20 20 0a 53 57  |             .SW|
000a3700  49 5f 44 72 61 77 5f 54  72 61 6e 73 66 6f 72 6d  |I_Draw_Transform|
000a3710  50 61 74 68 46 50 20 20  20 20 20 20 20 20 20 20  |PathFP          |
000a3720  20 0a 53 57 49 5f 52 61  6d 46 53 5f 44 69 73 63  | .SWI_RamFS_Disc|
000a3730  4f 70 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |Op              |
000a3740  20 20 20 20 20 0a 53 57  49 5f 52 61 6d 46 53 5f  |     .SWI_RamFS_|
000a3750  44 72 69 76 65 73 20 20  20 20 20 20 20 20 20 20  |Drives          |
000a3760  20 20 20 20 20 20 20 20  20 0a 53 57 49 5f 52 61  |         .SWI_Ra|
000a3770  6d 46 53 5f 46 72 65 65  53 70 61 63 65 20 20 20  |mFS_FreeSpace   |
000a3780  20 20 20 20 20 20 20 20  20 20 20 20 20 0a 53 57  |             .SW|
000a3790  49 5f 52 61 6d 46 53 5f  44 65 73 63 72 69 62 65  |I_RamFS_Describe|
000a37a0  44 69 73 63 20 20 20 20  20 20 20 20 20 20 20 20  |Disc            |
000a37b0  20 0a 23 45 6e 64 54 61  62 6c 65 0a 0a 49 6e 20  | .#EndTable..In |
000a37c0  61 64 64 69 74 69 6f 6e  2c 20 7b 2a 7d 58 4f 53  |addition, {*}XOS|
000a37d0  5f 42 69 74 7b 2a 7d 20  69 73 20 64 65 66 69 6e  |_Bit{*} is defin|
000a37e0  65 64 20 28 4f 52 20 74  68 69 73 20 77 69 74 68  |ed (OR this with|
000a37f0  20 74 68 65 20 53 57 49  20 6e 75 6d 62 65 72 20  | the SWI number |
000a3800  74 6f 20 73 65 74 20 74  68 65 20 58 20 62 69 74  |to set the X bit|
000a3810  29 2c 20 61 6e 64 20 7b  2a 7d 53 57 49 5f 4f 53  |), and {*}SWI_OS|
000a3820  5f 57 72 69 74 65 49 7b  2a 7d 20 69 73 20 61 6c  |_WriteI{*} is al|
000a3830  73 6f 20 64 65 66 69 6e  65 64 2e 00 44 41 54 41  |so defined..DATA|
000a3840  83 02 00 00 73 79 73 74  65 6d 0a 53 79 6e 74 61  |....system.Synta|
000a3850  78 3a 09 69 6e 74 20 73  79 73 74 65 6d 20 28 63  |x:.int system (c|
000a3860  68 61 72 20 2a 73 74 72  29 3b 0a 48 65 61 64 65  |har *str);.Heade|
000a3870  72 3a 09 3c 73 74 64 6c  69 62 2e 68 3d 3e 73 74  |r:.<stdlib.h=>st|
000a3880  64 6c 69 62 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |dlib>..Returns:.|
000a3890  30 20 66 6f 72 20 73 75  63 63 65 73 73 2c 20 2d  |0 for success, -|
000a38a0  32 20 66 6f 72 20 66 61  69 6c 75 72 65 2e 0a 0a  |2 for failure...|
000a38b0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 70 61  |This function pa|
000a38c0  73 73 65 73 20 74 68 65  20 73 74 72 69 6e 67 20  |sses the string |
000a38d0  67 69 76 65 6e 20 74 6f  20 74 68 65 20 68 6f 73  |given to the hos|
000a38e0  74 20 65 6e 76 69 72 6f  6e 6d 65 6e 74 20 74 6f  |t environment to|
000a38f0  20 62 65 20 65 78 65 63  75 74 65 64 2e 20 41 66  | be executed. Af|
000a3900  74 65 72 20 65 78 65 63  75 74 69 6f 6e 20 74 68  |ter execution th|
000a3910  65 20 63 6f 6d 6d 61 6e  64 20 72 65 74 75 72 6e  |e command return|
000a3920  73 20 73 75 63 63 65 73  73 20 6f 72 20 66 61 69  |s success or fai|
000a3930  6c 75 72 65 3b 20 61 6e  79 20 6f 74 68 65 72 20  |lure; any other |
000a3940  76 61 6c 75 65 20 69 73  20 63 6f 6d 6d 61 6e 64  |value is command|
000a3950  20 73 70 65 63 69 66 69  63 2e 0a 0a 49 66 20 2f  | specific...If /|
000a3960  73 74 72 2f 20 69 73 20  61 20 6e 75 6c 6c 20 70  |str/ is a null p|
000a3970  6f 69 6e 74 65 72 20 74  68 65 6e 20 74 68 65 20  |ointer then the |
000a3980  66 75 6e 63 74 69 6f 6e  20 72 65 74 75 72 6e 73  |function returns|
000a3990  20 6e 6f 6e 2d 7a 65 72  6f 20 69 66 20 74 68 69  | non-zero if thi|
000a39a0  73 20 66 75 6e 63 74 69  6f 6e 20 63 61 6e 20 62  |s function can b|
000a39b0  65 20 75 73 65 64 20 66  6f 72 20 65 78 65 63 75  |e used for execu|
000a39c0  74 69 6e 67 20 63 6f 6d  6d 61 6e 64 73 20 28 79  |ting commands (y|
000a39d0  6f 75 20 73 68 6f 75 6c  64 20 63 68 65 63 6b 20  |ou should check |
000a39e0  74 68 69 73 20 62 65 66  6f 72 65 20 64 6f 69 6e  |this before doin|
000a39f0  67 20 73 6f 29 2e 0a 0a  4f 6e 20 52 49 53 43 20  |g so)...On RISC |
000a3a00  4f 53 20 74 68 69 73 20  66 75 6e 63 74 69 6f 6e  |OS this function|
000a3a10  20 70 61 73 73 65 73 20  74 68 65 20 73 74 72 69  | passes the stri|
000a3a20  6e 67 20 67 69 76 65 6e  20 74 6f 20 74 68 65 20  |ng given to the |
000a3a30  43 4c 49 20 74 6f 20 62  65 20 65 78 65 63 75 74  |CLI to be execut|
000a3a40  65 64 20 61 73 20 69 66  20 69 74 20 68 61 64 20  |ed as if it had |
000a3a50  62 65 65 6e 20 74 79 70  65 64 20 69 6e 20 61 73  |been typed in as|
000a3a60  20 61 20 94 73 74 61 72  20 63 6f 6d 6d 61 6e 64  | a .star command|
000a3a70  95 2e 20 46 6f 72 20 69  6e 73 74 61 6e 63 65 2c  |.. For instance,|
000a3a80  20 7b 66 43 6f 64 65 7d  73 79 73 74 65 6d 28 22  | {fCode}system("|
000a3a90  4d 6f 64 75 6c 65 73 22  29 7b 66 7d 20 68 61 73  |Modules"){f} has|
000a3aa0  20 74 68 65 20 73 61 6d  65 20 65 66 66 65 63 74  | the same effect|
000a3ab0  20 61 73 20 3c 2a 4d 6f  64 75 6c 65 73 3e 2e 00  | as <*Modules>..|
000a3ac0  44 49 52 24 1c 04 00 00  1c 04 00 00 dc 3e 0a 00  |DIR$.........>..|
000a3ad0  46 ff ff ff 3c be bd 22  ab 00 00 00 13 00 00 00  |F...<.."........|
000a3ae0  00 00 00 00 74 61 6e 00  88 3f 0a 00 46 ff ff ff  |....tan..?..F...|
000a3af0  55 d4 bd 22 ac 00 00 00  13 00 00 00 00 00 00 00  |U.."............|
000a3b00  74 61 6e 68 00 00 00 00  34 40 0a 00 46 fd ff ff  |tanh....4@..F...|
000a3b10  07 e3 84 2f 2c 00 00 00  13 01 00 00 00 00 00 00  |.../,...........|
000a3b20  74 61 73 6b 5f 00 00 00  e0 40 0a 00 46 ff ff ff  |task_....@..F...|
000a3b30  53 b1 35 26 f3 01 00 00  13 00 00 00 00 00 00 00  |S.5&............|
000a3b40  54 65 6d 70 6c 61 74 65  00 00 00 00 d4 42 0a 00  |Template.....B..|
000a3b50  46 fd ff ff 4a e3 84 2f  28 03 00 00 13 01 00 00  |F...J../(.......|
000a3b60  00 00 00 00 74 65 6d 70  6c 61 74 65 5f 00 00 00  |....template_...|
000a3b70  4c 60 0a 00 46 ff ff ff  78 ea 35 26 fd 00 00 00  |L`..F...x.5&....|
000a3b80  13 00 00 00 00 00 00 00  54 65 78 74 46 69 6c 65  |........TextFile|
000a3b90  00 00 00 00 4c 61 0a 00  46 fd ff ff 1e e5 84 2f  |....La..F....../|
000a3ba0  a0 00 00 00 13 01 00 00  00 00 00 00 54 65 78 74  |............Text|
000a3bb0  46 69 6c 65 5f 00 00 00  a4 66 0a 00 46 fd ff ff  |File_....f..F...|
000a3bc0  7e e5 84 2f 48 00 00 00  13 01 00 00 00 00 00 00  |~../H...........|
000a3bd0  74 66 6f 72 6d 5f 00 00  a4 6a 0a 00 46 fd ff ff  |tform_...j..F...|
000a3be0  bd e5 84 2f 4c 00 00 00  13 01 00 00 00 00 00 00  |.../L...........|
000a3bf0  74 66 5f 00 0c 71 0a 00  46 ff ff ff 67 35 e2 22  |tf_..q..F...g5."|
000a3c00  a3 00 00 00 13 00 00 00  00 00 00 00 74 69 6d 65  |............time|
000a3c10  00 00 00 00 b0 71 0a 00  46 fd ff ff 12 e6 84 2f  |.....q..F....../|
000a3c20  e0 01 00 00 13 01 00 00  00 00 00 00 54 69 6d 65  |............Time|
000a3c30  5f 00 00 00 10 83 0a 00  46 ff ff ff 1c e5 c0 22  |_.......F......"|
000a3c40  7f 01 00 00 13 00 00 00  00 00 00 00 74 6d 70 66  |............tmpf|
000a3c50  69 6c 65 00 90 84 0a 00  46 ff ff ff 5d 4c c1 22  |ile.....F...]L."|
000a3c60  cd 01 00 00 13 00 00 00  00 00 00 00 74 6d 70 6e  |............tmpn|
000a3c70  61 6d 00 00 60 86 0a 00  46 fd ff ff 4e e7 84 2f  |am..`...F...N../|
000a3c80  28 00 00 00 13 01 00 00  00 00 00 00 54 4d 50 5f  |(...........TMP_|
000a3c90  00 00 00 00 34 87 0a 00  46 ff ff ff cc 59 bb 22  |....4...F....Y."|
000a3ca0  e9 00 00 00 13 00 00 00  00 00 00 00 74 6f 6c 6f  |............tolo|
000a3cb0  77 65 72 00 20 88 0a 00  46 ff ff ff a0 60 bb 22  |wer. ...F....`."|
000a3cc0  e9 00 00 00 13 00 00 00  00 00 00 00 74 6f 75 70  |............toup|
000a3cd0  70 65 72 00 0c 89 0a 00  46 ff ff ff 22 f3 e1 24  |per.....F..."..$|
000a3ce0  b0 01 00 00 13 00 00 00  00 00 00 00 74 72 61 63  |............trac|
000a3cf0  65 00 00 00 bc 8a 0a 00  46 ff ff ff 83 fd e1 24  |e.......F......$|
000a3d00  ad 00 00 00 13 00 00 00  00 00 00 00 74 72 61 63  |............trac|
000a3d10  65 66 00 00 6c 8b 0a 00  46 fd ff ff b1 e7 84 2f  |ef..l...F....../|
000a3d20  80 00 00 00 13 01 00 00  00 00 00 00 74 72 61 63  |............trac|
000a3d30  65 5f 00 00 b0 8e 0a 00  46 ff ff ff dc 86 b3 24  |e_......F......$|
000a3d40  c6 00 00 00 13 00 00 00  00 00 00 00 54 52 55 45  |............TRUE|
000a3d50  00 00 00 00 78 8f 0a 00  46 ff ff ff 7d 37 e4 24  |....x...F...}7.$|
000a3d60  88 00 00 00 13 00 00 00  00 00 00 00 74 78 74 00  |............txt.|
000a3d70  00 90 0a 00 46 ff ff ff  81 a6 e4 24 4a 03 00 00  |....F......$J...|
000a3d80  13 00 00 00 00 00 00 00  74 78 74 65 64 69 74 00  |........txtedit.|
000a3d90  4c 93 0a 00 46 fd ff ff  4c e8 84 2f dc 03 00 00  |L...F...L../....|
000a3da0  13 01 00 00 00 00 00 00  74 78 74 65 64 69 74 5f  |........txtedit_|
000a3db0  00 00 00 00 e8 b5 0a 00  46 ff ff ff 4d cf e5 24  |........F...M..$|
000a3dc0  95 00 00 00 13 00 00 00  00 00 00 00 74 78 74 6f  |............txto|
000a3dd0  70 74 00 00 80 b6 0a 00  46 fd ff ff 58 ea 84 2f  |pt......F...X../|
000a3de0  54 00 00 00 13 01 00 00  00 00 00 00 74 78 74 6f  |T...........txto|
000a3df0  70 74 5f 00 18 b9 0a 00  46 ff ff ff 1e eb e5 24  |pt_.....F......$|
000a3e00  b5 00 00 00 13 00 00 00  00 00 00 00 74 78 74 73  |............txts|
000a3e10  63 72 61 70 00 00 00 00  d0 b9 0a 00 46 fd ff ff  |crap........F...|
000a3e20  a2 ea 84 2f 54 00 00 00  13 01 00 00 00 00 00 00  |.../T...........|
000a3e30  74 78 74 73 63 72 61 70  5f 00 00 00 b8 bc 0a 00  |txtscrap_.......|
000a3e40  46 ff ff ff 5d 19 e6 24  d5 00 00 00 13 00 00 00  |F...]..$........|
000a3e50  00 00 00 00 74 78 74 77  69 6e 00 00 90 bd 0a 00  |....txtwin......|
000a3e60  46 fd ff ff f2 ea 84 2f  94 00 00 00 13 01 00 00  |F....../........|
000a3e70  00 00 00 00 74 78 74 77  69 6e 5f 00 14 c2 0a 00  |....txtwin_.....|
000a3e80  46 fd ff ff 6f eb 84 2f  84 07 00 00 13 01 00 00  |F...o../........|
000a3e90  00 00 00 00 54 58 54 5f  00 00 00 00 00 fe 0a 00  |....TXT_........|
000a3ea0  46 ff ff ff 30 b2 e2 24  8c 00 00 00 13 00 00 00  |F...0..$........|
000a3eb0  00 00 00 00 74 79 70 64  61 74 00 00 8c fe 0a 00  |....typdat......|
000a3ec0  46 ff ff ff 6f 91 e3 22  c1 01 00 00 13 00 00 00  |F...o.."........|
000a3ed0  00 00 00 00 74 79 70 65  64 65 66 00 44 41 54 41  |....typedef.DATA|
000a3ee0  ab 00 00 00 74 61 6e 0a  53 79 6e 74 61 78 3a 09  |....tan.Syntax:.|
000a3ef0  64 6f 75 62 6c 65 20 74  61 6e 20 28 64 6f 75 62  |double tan (doub|
000a3f00  6c 65 20 78 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |le x);.Header:.<|
000a3f10  6d 61 74 68 2e 68 3d 3e  6d 61 74 68 3e 0a 0a 52  |math.h=>math>..R|
000a3f20  65 74 75 72 6e 73 3a 09  54 68 65 20 74 61 6e 67  |eturns:.The tang|
000a3f30  65 6e 74 20 6f 66 20 78  20 69 6e 20 72 61 64 69  |ent of x in radi|
000a3f40  61 6e 73 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |ans...This funct|
000a3f50  69 6f 6e 20 63 61 6c 63  75 6c 61 74 65 73 20 74  |ion calculates t|
000a3f60  68 65 20 70 72 69 6e 63  69 70 61 6c 20 76 61 6c  |he principal val|
000a3f70  75 65 20 6f 66 20 74 68  65 20 74 61 6e 67 65 6e  |ue of the tangen|
000a3f80  74 20 6f 66 20 78 2e 00  44 41 54 41 ac 00 00 00  |t of x..DATA....|
000a3f90  74 61 6e 68 0a 53 79 6e  74 61 78 3a 09 64 6f 75  |tanh.Syntax:.dou|
000a3fa0  62 6c 65 20 74 61 6e 68  20 28 64 6f 75 62 6c 65  |ble tanh (double|
000a3fb0  20 78 29 3b 0a 48 65 61  64 65 72 3a 09 3c 6d 61  | x);.Header:.<ma|
000a3fc0  74 68 2e 68 3d 3e 6d 61  74 68 3e 0a 0a 52 65 74  |th.h=>math>..Ret|
000a3fd0  75 72 6e 73 3a 09 54 68  65 20 68 79 70 65 72 62  |urns:.The hyperb|
000a3fe0  6f 6c 69 63 20 74 61 6e  67 65 6e 74 20 6f 66 20  |olic tangent of |
000a3ff0  78 20 69 6e 20 72 61 64  69 61 6e 73 2e 0a 0a 54  |x in radians...T|
000a4000  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 61 6c  |his function cal|
000a4010  63 75 6c 61 74 65 73 20  74 68 65 20 68 79 70 65  |culates the hype|
000a4020  72 62 6f 6c 69 63 20 74  61 6e 67 65 6e 74 20 6f  |rbolic tangent o|
000a4030  66 20 78 2e 44 49 52 24  2c 00 00 00 2c 00 00 00  |f x.DIR$,...,...|
000a4040  60 40 0a 00 46 ff ff ff  1d 77 37 26 7e 00 00 00  |`@..F....w7&~...|
000a4050  13 00 00 00 00 00 00 00  68 61 6e 64 6c 65 00 00  |........handle..|
000a4060  44 41 54 41 7e 00 00 00  74 61 73 6b 5f 68 61 6e  |DATA~...task_han|
000a4070  64 6c 65 0a 54 68 69 73  20 74 79 70 65 20 69 73  |dle.This type is|
000a4080  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 44 65 73  | defined in <Des|
000a4090  6b 4c 69 62 3a 57 69 6d  70 2e 68 3d 3e 57 69 6d  |kLib:Wimp.h=>Wim|
000a40a0  70 3e 20 61 73 20 61 20  74 79 70 65 20 68 6f 6c  |p> as a type hol|
000a40b0  64 69 6e 67 20 61 20 74  61 73 6b 20 68 61 6e 64  |ding a task hand|
000a40c0  6c 65 2e 20 49 74 20 69  73 20 64 65 66 69 6e 65  |le. It is define|
000a40d0  64 20 61 73 20 61 6e 20  2f 69 6e 74 2f 2e 00 00  |d as an /int/...|
000a40e0  44 41 54 41 f3 01 00 00  44 65 73 6b 4c 69 62 3a  |DATA....DeskLib:|
000a40f0  54 65 6d 70 6c 61 74 65  2e 68 0a 56 65 72 73 69  |Template.h.Versi|
000a4100  6f 6e 3a 20 31 2e 30 35  20 28 44 65 63 20 31 39  |on: 1.05 (Dec 19|
000a4110  39 34 29 0a 23 6c 69 6e  65 0a 54 68 69 73 20 68  |94).#line.This h|
000a4120  65 61 64 65 72 20 64 65  63 6c 61 72 65 73 20 66  |eader declares f|
000a4130  75 6e 63 74 69 6f 6e 73  20 66 6f 72 20 6c 6f 61  |unctions for loa|
000a4140  64 69 6e 67 2c 20 63 61  63 68 65 69 6e 67 20 61  |ding, cacheing a|
000a4150  6e 64 20 72 65 74 72 69  76 65 69 6e 67 20 77 69  |nd retriveing wi|
000a4160  6e 64 6f 77 20 74 65 6d  70 6c 61 74 65 73 2e 0a  |ndow templates..|
000a4170  0a 46 75 6e 63 74 69 6f  6e 73 3a 0a 0a 23 69 6e  |.Functions:..#in|
000a4180  64 65 6e 74 20 35 0a 23  54 61 62 6c 65 20 63 6f  |dent 5.#Table co|
000a4190  6c 75 6d 6e 73 20 32 0a  3c 54 65 6d 70 6c 61 74  |lumns 2.<Templat|
000a41a0  65 5f 49 6e 69 74 69 61  6c 69 73 65 3e 0a 3c 54  |e_Initialise>.<T|
000a41b0  65 6d 70 6c 61 74 65 5f  46 69 6e 64 3e 0a 3c 54  |emplate_Find>.<T|
000a41c0  65 6d 70 6c 61 74 65 5f  43 6c 6f 6e 65 3e 0a 3c  |emplate_Clone>.<|
000a41d0  54 65 6d 70 6c 61 74 65  5f 46 72 65 65 3e 0a 3c  |Template_Free>.<|
000a41e0  54 65 6d 70 6c 61 74 65  5f 44 65 6c 65 74 65 3e  |Template_Delete>|
000a41f0  0a 3c 54 65 6d 70 6c 61  74 65 5f 43 6c 65 61 72  |.<Template_Clear|
000a4200  41 6c 6c 3e 0a 3c 54 65  6d 70 6c 61 74 65 5f 4c  |All>.<Template_L|
000a4210  6f 61 64 46 69 6c 65 3e  0a 3c 54 65 6d 70 6c 61  |oadFile>.<Templa|
000a4220  74 65 5f 55 73 65 4f 75  74 6c 69 6e 65 46 6f 6e  |te_UseOutlineFon|
000a4230  74 73 3e 0a 3c 54 65 6d  70 6c 61 74 65 5f 55 73  |ts>.<Template_Us|
000a4240  65 53 70 72 69 74 65 41  72 65 61 3e 0a 3c 54 65  |eSpriteArea>.<Te|
000a4250  6d 70 6c 61 74 65 5f 4c  69 6e 6b 53 70 72 69 74  |mplate_LinkSprit|
000a4260  65 41 72 65 61 3e 0a 23  45 6e 64 54 61 62 6c 65  |eArea>.#EndTable|
000a4270  0a 23 69 6e 64 65 6e 74  0a 0a 4d 61 63 72 6f 73  |.#indent..Macros|
000a4280  3a 0a 0a 23 69 6e 64 65  6e 74 20 34 0a 23 54 61  |:..#indent 4.#Ta|
000a4290  62 6c 65 20 63 6f 6c 75  6d 6e 73 20 32 0a 3c 74  |ble columns 2.<t|
000a42a0  65 6d 70 6c 61 74 65 5f  54 49 54 4c 45 4d 49 4e  |emplate_TITLEMIN|
000a42b0  3e 0a 3c 74 65 6d 70 6c  61 74 65 5f 54 49 54 4c  |>.<template_TITL|
000a42c0  45 44 45 46 41 55 4c 54  3e 0a 23 45 6e 64 54 61  |EDEFAULT>.#EndTa|
000a42d0  62 6c 65 00 44 49 52 24  28 03 00 00 28 03 00 00  |ble.DIR$(...(...|
000a42e0  fc 45 0a 00 46 fd ff ff  64 a2 e1 24 eb 00 00 00  |.E..F...d..$....|
000a42f0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000a4300  e8 46 0a 00 46 ff ff ff  b8 9f 48 26 0c 01 00 00  |.F..F.....H&....|
000a4310  13 00 00 00 00 00 00 00  62 6c 6f 63 6b 00 00 00  |........block...|
000a4320  f4 47 0a 00 46 ff ff ff  d3 1c b6 22 df 00 00 00  |.G..F......"....|
000a4330  13 00 00 00 00 00 00 00  43 6c 65 61 72 00 00 00  |........Clear...|
000a4340  d4 48 0a 00 46 ff ff ff  a9 80 34 26 5c 02 00 00  |.H..F.....4&\...|
000a4350  13 00 00 00 00 00 00 00  43 6c 6f 6e 65 00 00 00  |........Clone...|
000a4360  30 4b 0a 00 46 ff ff ff  1a 85 e1 24 c4 00 00 00  |0K..F......$....|
000a4370  13 00 00 00 00 00 00 00  63 6f 70 79 00 00 00 00  |........copy....|
000a4380  f4 4b 0a 00 46 ff ff ff  c1 f4 34 26 4d 01 00 00  |.K..F.....4&M...|
000a4390  13 00 00 00 00 00 00 00  44 65 6c 65 74 65 00 00  |........Delete..|
000a43a0  44 4d 0a 00 46 ff ff ff  35 67 e1 24 9b 01 00 00  |DM..F...5g.$....|
000a43b0  13 00 00 00 00 00 00 00  46 69 6e 64 00 00 00 00  |........Find....|
000a43c0  e0 4e 0a 00 46 ff ff ff  d8 6e e1 24 c7 00 00 00  |.N..F....n.$....|
000a43d0  13 00 00 00 00 00 00 00  66 69 6e 64 5f 00 00 00  |........find_...|
000a43e0  a8 4f 0a 00 46 ff ff ff  d1 e3 34 26 6f 01 00 00  |.O..F.....4&o...|
000a43f0  13 00 00 00 00 00 00 00  46 72 65 65 00 00 00 00  |........Free....|
000a4400  18 51 0a 00 46 ff ff ff  a9 74 e1 24 ae 01 00 00  |.Q..F....t.$....|
000a4410  13 00 00 00 00 00 00 00  68 00 00 00 c8 52 0a 00  |........h....R..|
000a4420  46 ff ff ff 6a 5a e1 24  cc 00 00 00 13 00 00 00  |F...jZ.$........|
000a4430  00 00 00 00 69 6e 69 74  00 00 00 00 94 53 0a 00  |....init.....S..|
000a4440  46 ff ff ff ca 67 34 26  e7 00 00 00 13 00 00 00  |F....g4&........|
000a4450  00 00 00 00 49 6e 69 74  69 61 6c 69 73 65 00 00  |....Initialise..|
000a4460  7c 54 0a 00 46 ff ff ff  1a 7f e1 24 cc 00 00 00  ||T..F......$....|
000a4470  13 00 00 00 00 00 00 00  6c 6f 61 64 65 64 00 00  |........loaded..|
000a4480  48 55 0a 00 46 ff ff ff  e1 1d 35 26 70 01 00 00  |HU..F.....5&p...|
000a4490  13 00 00 00 00 00 00 00  4c 6f 61 64 46 69 6c 65  |........LoadFile|
000a44a0  00 00 00 00 b8 56 0a 00  46 ff ff ff 86 5f e1 24  |.....V..F...._.$|
000a44b0  1c 01 00 00 13 00 00 00  00 00 00 00 72 65 61 64  |............read|
000a44c0  66 69 6c 65 00 00 00 00  d4 57 0a 00 46 ff ff ff  |file.....W..F...|
000a44d0  c9 99 e1 24 48 01 00 00  13 00 00 00 00 00 00 00  |...$H...........|
000a44e0  73 79 73 68 61 6e 64 6c  65 00 00 00 1c 59 0a 00  |syshandle....Y..|
000a44f0  46 ff ff ff f7 92 e1 24  df 00 00 00 13 00 00 00  |F......$........|
000a4500  00 00 00 00 75 73 65 5f  66 61 6e 63 79 66 6f 6e  |....use_fancyfon|
000a4510  74 73 00 00 fc 59 0a 00  46 ff ff ff bc 43 35 26  |ts...Y..F....C5&|
000a4520  6a 01 00 00 13 00 00 00  00 00 00 00 55 73 65 4f  |j...........UseO|
000a4530  75 74 6c 69 6e 65 46 6f  6e 74 73 00 68 5b 0a 00  |utlineFonts.h[..|
000a4540  46 ff ff ff 11 b4 34 26  06 01 00 00 13 00 00 00  |F.....4&........|
000a4550  00 00 00 00 54 49 54 4c  45 44 45 46 41 55 4c 54  |....TITLEDEFAULT|
000a4560  00 00 00 00 70 5c 0a 00  46 ff ff ff ab ce 34 26  |....p\..F.....4&|
000a4570  01 01 00 00 13 00 00 00  00 00 00 00 54 49 54 4c  |............TITL|
000a4580  45 4d 49 4e 00 00 00 00  74 5d 0a 00 46 ff ff ff  |EMIN....t]..F...|
000a4590  79 15 35 26 c8 00 00 00  13 00 00 00 00 00 00 00  |y.5&............|
000a45a0  43 6c 65 61 72 41 6c 6c  00 00 00 00 3c 5e 0a 00  |ClearAll....<^..|
000a45b0  46 ff ff ff 07 6e 35 26  43 01 00 00 13 00 00 00  |F....n5&C.......|
000a45c0  00 00 00 00 55 73 65 53  70 72 69 74 65 41 72 65  |....UseSpriteAre|
000a45d0  61 00 00 00 80 5f 0a 00  46 ff ff ff a5 d4 35 26  |a...._..F.....5&|
000a45e0  c9 00 00 00 13 00 00 00  00 00 00 00 4c 69 6e 6b  |............Link|
000a45f0  53 70 72 69 74 65 41 72  65 61 00 00 44 41 54 41  |SpriteArea..DATA|
000a4600  eb 00 00 00 74 65 6d 70  6c 61 74 65 0a 54 68 69  |....template.Thi|
000a4610  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
000a4620  64 20 69 6e 20 3c 74 65  6d 70 6c 61 74 65 2e 68  |d in <template.h|
000a4630  3d 3e 74 65 6d 70 6c 61  74 65 5f 68 3e 2e 20 49  |=>template_h>. I|
000a4640  74 20 69 73 20 61 6e 20  65 6c 65 6d 65 6e 74 20  |t is an element |
000a4650  6f 66 20 61 20 6c 69 6e  6b 65 64 20 6c 69 73 74  |of a linked list|
000a4660  2e 0a 0a 20 20 5c 7b 0a  20 20 20 20 74 65 6d 70  |...  \{.    temp|
000a4670  6c 61 74 65 09 2a 6e 65  78 74 3b 0a 20 20 20 20  |late.*next;.    |
000a4680  63 68 61 72 09 2a 77 6f  72 6b 73 70 61 63 65 3b  |char.*workspace;|
000a4690  0a 20 20 20 20 69 6e 74  09 09 77 6f 72 6b 73 70  |.    int..worksp|
000a46a0  61 63 65 73 69 7a 65 3b  0a 20 20 20 20 63 68 61  |acesize;.    cha|
000a46b0  72 09 2a 66 6f 6e 74 3b  0a 20 20 20 20 63 68 61  |r.*font;.    cha|
000a46c0  72 09 6e 61 6d 65 5b 31  32 5d 3b 0a 20 20 20 20  |r.name[12];.    |
000a46d0  3c 77 69 6d 70 5f 77 69  6e 64 3e 09 77 69 6e 64  |<wimp_wind>.wind|
000a46e0  6f 77 3b 0a 20 20 7d 00  44 41 54 41 0c 01 00 00  |ow;.  }.DATA....|
000a46f0  74 65 6d 70 6c 61 74 65  5f 62 6c 6f 63 6b 0a 54  |template_block.T|
000a4700  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
000a4710  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
000a4720  57 69 6d 70 2e 68 3d 3e  57 69 6d 70 3e 20 61 73  |Wimp.h=>Wimp> as|
000a4730  20 61 20 74 79 70 65 20  68 6f 6c 64 69 6e 67 20  | a type holding |
000a4740  64 61 74 61 20 66 6f 72  20 75 73 65 20 62 79 20  |data for use by |
000a4750  3c 57 69 6d 70 5f 4c 6f  61 64 54 65 6d 70 6c 61  |<Wimp_LoadTempla|
000a4760  74 65 3e 2e 0a 0a 20 20  5c 7b 0a 20 20 20 20 3c  |te>...  \{.    <|
000a4770  77 69 6e 64 6f 77 5f 62  6c 6f 63 6b 3e 09 2a 62  |window_block>.*b|
000a4780  75 66 66 65 72 3b 0a 20  20 20 20 63 68 61 72 09  |uffer;.    char.|
000a4790  09 2a 77 6f 72 6b 66 72  65 65 3b 0a 20 20 20 20  |.*workfree;.    |
000a47a0  63 68 61 72 09 09 2a 77  6f 72 6b 65 6e 64 3b 0a  |char..*workend;.|
000a47b0  20 20 20 20 3c 66 6f 6e  74 5f 61 72 72 61 79 3e  |    <font_array>|
000a47c0  09 2a 66 6f 6e 74 3b 0a  20 20 20 20 63 68 61 72  |.*font;.    char|
000a47d0  09 09 2a 6e 61 6d 65 3b  0a 20 20 20 20 75 6e 73  |..*name;.    uns|
000a47e0  69 67 6e 65 64 20 69 6e  74 09 69 6e 64 65 78 3b  |igned int.index;|
000a47f0  0a 20 20 7d 44 41 54 41  df 00 00 00 54 65 6d 70  |.  }DATA....Temp|
000a4800  6c 61 74 65 5f 43 6c 65  61 72 0a 53 79 6e 74 61  |late_Clear.Synta|
000a4810  78 3a 20 20 76 6f 69 64  20 54 65 6d 70 6c 61 74  |x:  void Templat|
000a4820  65 5f 43 6c 65 61 72 41  6c 6c 20 28 76 6f 69 64  |e_ClearAll (void|
000a4830  29 3b 0a 48 65 61 64 65  72 3a 20 20 3c 44 65 73  |);.Header:  <Des|
000a4840  6b 4c 69 62 3a 54 65 6d  70 6c 61 74 65 2e 68 3d  |kLib:Template.h=|
000a4850  3e 54 65 6d 70 6c 61 74  65 3e 0a 0a 54 68 69 73  |>Template>..This|
000a4860  20 66 75 6e 63 74 69 6f  6e 20 64 65 6c 65 74 65  | function delete|
000a4870  73 20 61 6c 6c 20 74 68  65 20 74 65 6d 70 6c 61  |s all the templa|
000a4880  74 65 73 20 66 72 6f 6d  0a 6d 65 6d 6f 72 79 2e  |tes from.memory.|
000a4890  20 49 74 20 69 73 20 65  71 75 69 76 61 6c 65 6e  | It is equivalen|
000a48a0  74 20 74 6f 20 54 65 6d  70 6c 61 74 65 5f 44 65  |t to Template_De|
000a48b0  6c 65 74 65 0a 75 73 65  64 20 6f 6e 20 65 76 65  |lete.used on eve|
000a48c0  72 79 20 74 65 6d 70 6c  61 74 65 20 6c 6f 61 64  |ry template load|
000a48d0  65 64 2e 00 44 41 54 41  5c 02 00 00 54 65 6d 70  |ed..DATA\...Temp|
000a48e0  6c 61 74 65 5f 43 6c 6f  6e 65 0a 53 79 6e 74 61  |late_Clone.Synta|
000a48f0  78 3a 09 3c 77 69 6e 64  6f 77 5f 62 6c 6f 63 6b  |x:.<window_block|
000a4900  3e 20 2a 54 65 6d 70 6c  61 74 65 5f 43 6c 6f 6e  |> *Template_Clon|
000a4910  65 20 28 63 68 61 72 20  2a 6e 61 6d 65 2c 20 69  |e (char *name, i|
000a4920  6e 74 20 6d 61 78 74 69  74 6c 65 73 69 7a 65 29  |nt maxtitlesize)|
000a4930  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000a4940  69 62 3a 54 65 6d 70 6c  61 74 65 2e 68 3d 3e 54  |ib:Template.h=>T|
000a4950  65 6d 70 6c 61 74 65 3e  0a 0a 52 65 74 75 72 6e  |emplate>..Return|
000a4960  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 77 69  |s:.Pointer to wi|
000a4970  6e 64 6f 77 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |ndow, or <NULL> |
000a4980  69 66 20 6e 6f 74 20 66  6f 75 6e 64 2e 0a 0a 54  |if not found...T|
000a4990  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 6d 61 6b  |his function mak|
000a49a0  65 73 20 61 20 63 6f 70  79 20 6f 66 20 74 68 65  |es a copy of the|
000a49b0  20 6e 61 6d 65 64 20 74  65 6d 70 6c 61 74 65 20  | named template |
000a49c0  61 6e 64 20 72 65 74 75  72 6e 73 20 61 20 70 6f  |and returns a po|
000a49d0  69 6e 74 65 72 20 74 6f  20 74 68 65 20 63 6f 70  |inter to the cop|
000a49e0  79 2e 20 2f 6d 61 78 74  69 74 6c 65 73 69 7a 65  |y. /maxtitlesize|
000a49f0  2f 20 69 73 20 74 68 65  20 6e 75 6d 62 65 72 20  |/ is the number |
000a4a00  6f 66 20 62 79 74 65 73  20 74 68 61 74 20 73 68  |of bytes that sh|
000a4a10  6f 75 6c 64 20 65 76 65  72 20 62 65 20 61 6c 6c  |ould ever be all|
000a4a20  6f 63 61 74 65 64 20 66  6f 72 20 74 68 65 20 74  |ocated for the t|
000a4a30  69 74 6c 65 2c 20 73 69  6e 63 65 20 6f 6e 63 65  |itle, since once|
000a4a40  20 74 68 65 20 77 69 6e  64 6f 77 20 69 73 20 63  | the window is c|
000a4a50  72 65 61 74 65 64 20 69  74 20 63 61 6e 6e 6f 74  |reated it cannot|
000a4a60  20 62 65 20 63 68 61 6e  67 65 64 2e 20 54 68 65  | be changed. The|
000a4a70  20 76 61 6c 75 65 20 30  20 28 6f 72 20 3c 74 65  | value 0 (or <te|
000a4a80  6d 70 6c 61 74 65 5f 54  49 54 4c 45 44 45 46 41  |mplate_TITLEDEFA|
000a4a90  55 4c 54 3e 29 20 77 69  6c 6c 20 61 6c 6c 6f 63  |ULT>) will alloc|
000a4aa0  61 74 65 20 32 36 30 20  62 79 74 65 73 2c 20 61  |ate 260 bytes, a|
000a4ab0  6e 64 20 2d 31 20 28 3c  74 65 6d 70 6c 61 74 65  |nd -1 (<template|
000a4ac0  5f 54 49 54 4c 45 4d 49  4e 3e 29 20 77 69 6c 6c  |_TITLEMIN>) will|
000a4ad0  20 61 6c 6c 6f 63 61 74  65 20 77 68 61 74 65 76  | allocate whatev|
000a4ae0  65 72 20 77 61 73 20 73  65 74 20 69 6e 20 74 68  |er was set in th|
000a4af0  65 20 74 65 6d 70 6c 61  74 65 20 66 69 6c 65 2e  |e template file.|
000a4b00  20 54 68 69 73 20 69 73  20 74 68 65 20 72 65 63  | This is the rec|
000a4b10  6f 6d 6d 65 6e 64 65 64  20 76 61 6c 75 65 20 66  |ommended value f|
000a4b20  6f 72 20 6d 6f 73 74 20  77 69 6e 64 6f 77 73 2e  |or most windows.|
000a4b30  44 41 54 41 c4 00 00 00  74 65 6d 70 6c 61 74 65  |DATA....template|
000a4b40  5f 63 6f 70 79 0a 53 79  6e 74 61 78 3a 09 3c 74  |_copy.Syntax:.<t|
000a4b50  65 6d 70 6c 61 74 65 3d  3e 74 65 6d 70 6c 61 74  |emplate=>templat|
000a4b60  65 5f 3e 20 2a 74 65 6d  70 6c 61 74 65 5f 63 6f  |e_> *template_co|
000a4b70  70 79 20 28 74 65 6d 70  6c 61 74 65 20 2a 66 72  |py (template *fr|
000a4b80  6f 6d 29 3b 0a 48 65 61  64 65 72 3a 09 3c 74 65  |om);.Header:.<te|
000a4b90  6d 70 6c 61 74 65 2e 68  3d 3e 74 65 6d 70 6c 61  |mplate.h=>templa|
000a4ba0  74 65 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |te_h>..Returns:.|
000a4bb0  50 6f 69 6e 74 65 72 20  74 6f 20 63 6f 70 79 2e  |Pointer to copy.|
000a4bc0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000a4bd0  63 72 65 61 74 65 73 20  61 20 63 6f 70 79 20 6f  |creates a copy o|
000a4be0  66 20 61 20 74 65 6d 70  6c 61 74 65 20 2f 66 72  |f a template /fr|
000a4bf0  6f 6d 2f 2e 44 41 54 41  4d 01 00 00 54 65 6d 70  |om/.DATAM...Temp|
000a4c00  6c 61 74 65 5f 44 65 6c  65 74 65 0a 53 79 6e 74  |late_Delete.Synt|
000a4c10  61 78 3a 09 76 6f 69 64  20 54 65 6d 70 6c 61 74  |ax:.void Templat|
000a4c20  65 5f 44 65 6c 65 74 65  20 28 63 68 61 72 20 2a  |e_Delete (char *|
000a4c30  6e 61 6d 65 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |name);.Header:.<|
000a4c40  44 65 73 6b 4c 69 62 3a  54 65 6d 70 6c 61 74 65  |DeskLib:Template|
000a4c50  2e 68 3d 3e 54 65 6d 70  6c 61 74 65 3e 0a 0a 54  |.h=>Template>..T|
000a4c60  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 64 65 6c  |his function del|
000a4c70  65 74 65 73 20 74 68 65  20 6e 61 6d 65 64 20 74  |etes the named t|
000a4c80  65 6d 70 6c 61 74 65 20  66 72 6f 6d 20 74 68 6f  |emplate from tho|
000a4c90  73 65 20 61 76 61 69 6c  61 62 6c 65 20 61 6e 64  |se available and|
000a4ca0  20 66 72 65 65 73 20 74  68 65 20 6d 65 6d 6f 72  | frees the memor|
000a4cb0  79 20 75 73 65 64 20 62  79 20 69 74 2e 20 49 66  |y used by it. If|
000a4cc0  20 61 6e 79 20 77 69 6e  64 6f 77 73 20 61 72 65  | any windows are|
000a4cd0  20 6f 70 65 6e 20 75 73  69 6e 67 20 74 68 69 73  | open using this|
000a4ce0  20 74 65 6d 70 6c 61 74  65 2c 20 79 6f 75 20 61  | template, you a|
000a4cf0  72 65 20 69 6e 20 6d 61  6a 6f 72 20 74 72 6f 75  |re in major trou|
000a4d00  62 6c 65 2c 20 6d 61 74  65 79 20 62 6f 79 21 20  |ble, matey boy! |
000a4d10  3c 54 65 6d 70 6c 61 74  65 5f 43 6c 6f 6e 65 3e  |<Template_Clone>|
000a4d20  27 64 20 74 65 6d 70 6c  61 74 65 73 20 77 69 6c  |'d templates wil|
000a4d30  6c 20 62 65 20 4f 4b 2c  20 74 68 6f 75 67 68 21  |l be OK, though!|
000a4d40  2e 00 00 00 44 41 54 41  9b 01 00 00 54 65 6d 70  |....DATA....Temp|
000a4d50  6c 61 74 65 5f 46 69 6e  64 0a 53 79 6e 74 61 78  |late_Find.Syntax|
000a4d60  3a 09 3c 77 69 6e 64 6f  77 5f 62 6c 6f 63 6b 3e  |:.<window_block>|
000a4d70  20 2a 54 65 6d 70 6c 61  74 65 5f 46 69 6e 64 20  | *Template_Find |
000a4d80  28 63 68 61 72 20 2a 6e  61 6d 65 29 3b 0a 48 65  |(char *name);.He|
000a4d90  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 54  |ader:.<DeskLib:T|
000a4da0  65 6d 70 6c 61 74 65 2e  68 3d 3e 54 65 6d 70 6c  |emplate.h=>Templ|
000a4db0  61 74 65 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |ate>..Returns:.P|
000a4dc0  6f 69 6e 74 65 72 20 74  6f 20 74 68 65 20 77 69  |ointer to the wi|
000a4dd0  6e 64 6f 77 20 64 65 66  69 6e 69 74 69 6f 6e 2e  |ndow definition.|
000a4de0  0a 0a 53 65 65 20 61 6c  73 6f 20 74 68 65 20 44  |..See also the D|
000a4df0  65 73 6b 74 6f 70 20 43  20 66 75 6e 63 74 69 6f  |esktop C functio|
000a4e00  6e 2c 20 3c 74 65 6d 70  6c 61 74 65 5f 66 69 6e  |n, <template_fin|
000a4e10  64 3d 3e 74 65 6d 70 6c  61 74 65 5f 66 69 6e 64  |d=>template_find|
000a4e20  5f 3e 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |_>...This functi|
000a4e30  6f 6e 20 74 72 69 65 73  20 74 6f 20 66 69 6e 64  |on tries to find|
000a4e40  20 74 68 65 20 6e 61 6d  65 64 20 74 65 6d 70 6c  | the named templ|
000a4e50  61 74 65 2c 20 61 6e 64  20 72 65 74 75 72 6e 20  |ate, and return |
000a4e60  61 20 70 6f 69 6e 74 65  72 20 74 6f 20 69 74 2e  |a pointer to it.|
000a4e70  20 54 68 69 73 20 69 73  20 74 68 65 20 6f 72 69  | This is the ori|
000a4e80  67 69 6e 61 6c 2c 20 73  6f 20 64 6f 6e 27 74 20  |ginal, so don't |
000a4e90  6d 65 73 73 20 69 74 20  75 70 20 70 6c 65 61 73  |mess it up pleas|
000a4ea0  65 21 20 54 68 65 20 74  65 6d 70 6c 61 74 65 20  |e! The template |
000a4eb0  6d 75 73 74 20 68 61 76  65 20 62 65 65 6e 20 6c  |must have been l|
000a4ec0  6f 61 64 65 64 20 77 69  74 68 20 3c 54 65 6d 70  |oaded with <Temp|
000a4ed0  6c 61 74 65 5f 4c 6f 61  64 46 69 6c 65 3e 2e 00  |late_LoadFile>..|
000a4ee0  44 41 54 41 c7 00 00 00  74 65 6d 70 6c 61 74 65  |DATA....template|
000a4ef0  5f 66 69 6e 64 0a 53 79  6e 74 61 78 3a 09 3c 74  |_find.Syntax:.<t|
000a4f00  65 6d 70 6c 61 74 65 3d  3e 74 65 6d 70 6c 61 74  |emplate=>templat|
000a4f10  65 5f 3e 20 2a 74 65 6d  70 6c 61 74 65 5f 66 69  |e_> *template_fi|
000a4f20  6e 64 20 28 63 68 61 72  20 2a 6e 61 6d 65 29 3b  |nd (char *name);|
000a4f30  0a 48 65 61 64 65 72 3a  09 3c 74 65 6d 70 6c 61  |.Header:.<templa|
000a4f40  74 65 2e 68 3d 3e 74 65  6d 70 6c 61 74 65 5f 68  |te.h=>template_h|
000a4f50  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000a4f60  74 65 72 20 74 6f 20 66  6f 75 6e 64 20 74 65 6d  |ter to found tem|
000a4f70  70 6c 61 74 65 2e 0a 0a  54 68 69 73 20 66 75 6e  |plate...This fun|
000a4f80  63 74 69 6f 6e 20 74 72  69 65 73 20 74 6f 20 66  |ction tries to f|
000a4f90  69 6e 64 20 74 68 65 20  6e 61 6d 65 64 20 74 65  |ind the named te|
000a4fa0  6d 70 6c 61 74 65 2e 00  44 41 54 41 6f 01 00 00  |mplate..DATAo...|
000a4fb0  54 65 6d 70 6c 61 74 65  5f 46 72 65 65 0a 53 79  |Template_Free.Sy|
000a4fc0  6e 74 61 78 3a 09 76 6f  69 64 20 54 65 6d 70 6c  |ntax:.void Templ|
000a4fd0  61 74 65 5f 46 72 65 65  20 28 3c 77 69 6e 64 6f  |ate_Free (<windo|
000a4fe0  77 5f 62 6c 6f 63 6b 3e  20 2a 2a 77 69 6e 64 6f  |w_block> **windo|
000a4ff0  77 64 65 66 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |wdef);.Header:.<|
000a5000  44 65 73 6b 4c 69 62 3a  54 65 6d 70 6c 61 74 65  |DeskLib:Template|
000a5010  2e 68 3d 3e 54 65 6d 70  6c 61 74 65 3e 0a 0a 54  |.h=>Template>..T|
000a5020  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 66 72 65  |his function fre|
000a5030  65 73 20 74 68 65 20 6d  65 6d 6f 72 79 20 75 73  |es the memory us|
000a5040  65 64 20 62 79 20 61 20  77 69 6e 64 6f 77 20 64  |ed by a window d|
000a5050  65 66 69 6e 69 74 69 6f  6e 20 63 72 65 61 74 65  |efinition create|
000a5060  64 20 62 79 20 3c 54 65  6d 70 6c 61 74 65 5f 43  |d by <Template_C|
000a5070  6c 6f 6e 65 3e 2e 20 59  6f 75 20 6d 75 73 74 20  |lone>. You must |
000a5080  70 61 73 73 20 69 6e 20  61 20 70 6f 69 6e 74 65  |pass in a pointe|
000a5090  72 20 74 6f 20 61 20 7b  2a 7d 77 69 6e 64 6f 77  |r to a {*}window|
000a50a0  5f 62 6c 6f 63 6b 20 2a  7b 2a 7d 2e 20 54 68 65  |_block *{*}. The|
000a50b0  20 6d 65 6d 6f 72 79 20  77 69 6c 6c 20 62 65 20  | memory will be |
000a50c0  66 72 65 65 64 20 28 69  6e 63 6c 75 64 69 6e 67  |freed (including|
000a50d0  20 69 6e 64 69 72 65 63  74 65 64 20 73 70 61 63  | indirected spac|
000a50e0  65 29 2c 20 61 6e 64 20  74 68 65 20 7b 2a 7d 77  |e), and the {*}w|
000a50f0  69 6e 64 6f 77 5f 62 6c  6f 63 6b 20 2a 7b 2a 7d  |indow_block *{*}|
000a5100  20 77 69 6c 6c 20 62 65  20 73 65 74 20 74 6f 20  | will be set to |
000a5110  3c 4e 55 4c 4c 3e 2e 00  44 41 54 41 ae 01 00 00  |<NULL>..DATA....|
000a5120  74 65 6d 70 6c 61 74 65  2e 68 0a 54 68 69 73 20  |template.h.This |
000a5130  68 65 61 64 65 72 20 64  65 63 6c 61 72 65 73 20  |header declares |
000a5140  66 75 6e 63 74 69 6f 6e  73 20 75 73 65 64 20 66  |functions used f|
000a5150  6f 72 20 6c 6f 61 64 69  6e 67 2f 6d 61 6e 69 70  |or loading/manip|
000a5160  75 6c 61 74 69 6e 67 20  74 65 6d 70 6c 61 74 65  |ulating template|
000a5170  73 2e 20 54 68 65 20 74  65 6d 70 6c 61 74 65 73  |s. The templates|
000a5180  20 61 72 65 20 61 73 73  75 6d 65 64 20 74 6f 20  | are assumed to |
000a5190  62 65 20 68 65 6c 64 20  69 6e 20 61 20 66 69 6c  |be held in a fil|
000a51a0  65 20 22 54 65 6d 70 6c  61 74 65 73 22 20 69 6e  |e "Templates" in|
000a51b0  20 74 68 65 20 61 70 70  6c 69 63 61 74 69 6f 6e  | the application|
000a51c0  27 73 20 64 69 72 65 63  74 6f 72 79 2e 0a 0a 46  |'s directory...F|
000a51d0  75 6e 63 74 69 6f 6e 73  3a 0a 0a 23 49 6e 64 65  |unctions:..#Inde|
000a51e0  6e 74 20 35 0a 23 54 61  62 6c 65 20 34 20 32 31  |nt 5.#Table 4 21|
000a51f0  0a 3c 74 65 6d 70 6c 61  74 65 5f 69 6e 69 74 3e  |.<template_init>|
000a5200  0a 3c 74 65 6d 70 6c 61  74 65 5f 72 65 61 64 66  |.<template_readf|
000a5210  69 6c 65 3e 0a 3c 74 65  6d 70 6c 61 74 65 5f 66  |ile>.<template_f|
000a5220  69 6e 64 3d 3e 74 65 6d  70 6c 61 74 65 5f 66 69  |ind=>template_fi|
000a5230  6e 64 5f 3e 0a 3c 74 65  6d 70 6c 61 74 65 5f 6c  |nd_>.<template_l|
000a5240  6f 61 64 65 64 3e 0a 3c  74 65 6d 70 6c 61 74 65  |oaded>.<template|
000a5250  5f 63 6f 70 79 3e 0a 3c  74 65 6d 70 6c 61 74 65  |_copy>.<template|
000a5260  5f 75 73 65 5f 66 61 6e  63 79 66 6f 6e 74 73 3e  |_use_fancyfonts>|
000a5270  0a 3c 74 65 6d 70 6c 61  74 65 5f 73 79 73 68 61  |.<template_sysha|
000a5280  6e 64 6c 65 3e 0a 23 45  6e 64 54 61 62 6c 65 0a  |ndle>.#EndTable.|
000a5290  23 49 6e 64 65 6e 74 20  30 0a 0a 54 79 70 65 73  |#Indent 0..Types|
000a52a0  3a 0a 0a 7b 61 6c 69 67  6e 20 63 65 6e 74 72 65  |:..{align centre|
000a52b0  7d 3c 74 65 6d 70 6c 61  74 65 3d 3e 74 65 6d 70  |}<template=>temp|
000a52c0  6c 61 74 65 5f 3e 00 00  44 41 54 41 cc 00 00 00  |late_>..DATA....|
000a52d0  74 65 6d 70 6c 61 74 65  5f 69 6e 69 74 0a 53 79  |template_init.Sy|
000a52e0  6e 74 61 78 3a 09 76 6f  69 64 20 74 65 6d 70 6c  |ntax:.void templ|
000a52f0  61 74 65 5f 69 6e 69 74  20 28 76 6f 69 64 29 3b  |ate_init (void);|
000a5300  0a 48 65 61 64 65 72 3a  09 3c 74 65 6d 70 6c 61  |.Header:.<templa|
000a5310  74 65 2e 68 3d 3e 74 65  6d 70 6c 61 74 65 5f 68  |te.h=>template_h|
000a5320  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
000a5330  20 6d 75 73 74 20 62 65  20 63 61 6c 6c 65 64 20  | must be called |
000a5340  62 65 66 6f 72 65 20 61  6e 79 20 6f 70 65 72 61  |before any opera|
000a5350  74 69 6f 6e 73 20 77 68  69 63 68 20 75 73 65 20  |tions which use |
000a5360  74 65 6d 70 6c 61 74 65  73 20 28 69 6e 63 6c 75  |templates (inclu|
000a5370  64 69 6e 67 20 64 69 61  6c 6f 67 75 65 20 62 6f  |ding dialogue bo|
000a5380  78 65 73 20 61 6e 64 20  65 76 65 72 79 74 68 69  |xes and everythi|
000a5390  6e 67 29 2e 44 41 54 41  e7 00 00 00 54 65 6d 70  |ng).DATA....Temp|
000a53a0  6c 61 74 65 5f 49 6e 69  74 69 61 6c 69 73 65 0a  |late_Initialise.|
000a53b0  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 54 65 6d  |Syntax:.void Tem|
000a53c0  70 6c 61 74 65 5f 49 6e  69 74 69 61 6c 69 73 65  |plate_Initialise|
000a53d0  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
000a53e0  09 3c 44 65 73 6b 4c 69  62 3a 54 65 6d 70 6c 61  |.<DeskLib:Templa|
000a53f0  74 65 2e 68 3d 3e 54 65  6d 70 6c 61 74 65 3e 0a  |te.h=>Template>.|
000a5400  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 69  |.This function i|
000a5410  6e 69 74 69 61 6c 69 73  65 73 20 74 68 65 20 54  |nitialises the T|
000a5420  65 6d 70 6c 61 74 65 20  6d 61 6e 61 67 65 72 20  |emplate manager |
000a5430  72 65 61 64 79 20 66 6f  72 20 75 73 65 2e 20 49  |ready for use. I|
000a5440  74 20 6d 75 73 74 20 62  65 20 63 61 6c 6c 65 64  |t must be called|
000a5450  20 62 65 66 6f 72 65 20  75 73 69 6e 67 20 61 6e  | before using an|
000a5460  79 20 6f 74 68 65 72 20  54 65 6d 70 6c 61 74 65  |y other Template|
000a5470  20 66 75 6e 63 74 69 6f  6e 73 2e 00 44 41 54 41  | functions..DATA|
000a5480  cc 00 00 00 74 65 6d 70  6c 61 74 65 5f 6c 6f 61  |....template_loa|
000a5490  64 65 64 0a 53 79 6e 74  61 78 3a 09 3c 42 4f 4f  |ded.Syntax:.<BOO|
000a54a0  4c 3e 20 74 65 6d 70 6c  61 74 65 5f 6c 6f 61 64  |L> template_load|
000a54b0  65 64 20 28 76 6f 69 64  29 3b 0a 48 65 61 64 65  |ed (void);.Heade|
000a54c0  72 3a 09 3c 74 65 6d 70  6c 61 74 65 2e 68 3d 3e  |r:.<template.h=>|
000a54d0  74 65 6d 70 6c 61 74 65  5f 68 3e 0a 0a 52 65 74  |template_h>..Ret|
000a54e0  75 72 6e 73 3a 09 3c 54  52 55 45 3e 20 69 66 20  |urns:.<TRUE> if |
000a54f0  61 6e 79 20 74 65 6d 70  6c 61 74 65 73 20 61 72  |any templates ar|
000a5500  65 20 6c 6f 61 64 65 64  2e 0a 0a 54 68 69 73 20  |e loaded...This |
000a5510  66 75 6e 63 74 69 6f 6e  20 73 65 65 73 20 69 66  |function sees if|
000a5520  20 74 68 65 72 65 20 69  73 20 61 6e 79 74 68 69  | there is anythi|
000a5530  6e 67 20 69 6e 20 74 68  65 20 74 65 6d 70 6c 61  |ng in the templa|
000a5540  74 65 20 6c 69 73 74 2e  44 41 54 41 70 01 00 00  |te list.DATAp...|
000a5550  54 65 6d 70 6c 61 74 65  5f 4c 6f 61 64 46 69 6c  |Template_LoadFil|
000a5560  65 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 54  |e.Syntax:.void T|
000a5570  65 6d 70 6c 61 74 65 5f  4c 6f 61 64 46 69 6c 65  |emplate_LoadFile|
000a5580  20 28 63 68 61 72 20 2a  6c 65 61 66 29 3b 0a 48  | (char *leaf);.H|
000a5590  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
000a55a0  54 65 6d 70 6c 61 74 65  2e 68 3d 3e 54 65 6d 70  |Template.h=>Temp|
000a55b0  6c 61 74 65 3e 0a 0a 4c  6f 61 64 73 20 61 6c 6c  |late>..Loads all|
000a55c0  20 74 65 6d 70 6c 61 74  65 73 20 69 6e 20 74 68  | templates in th|
000a55d0  65 20 67 69 76 65 6e 20  66 69 6c 65 2e 20 54 68  |e given file. Th|
000a55e0  65 20 66 69 6c 65 20 69  73 20 66 6f 75 6e 64 20  |e file is found |
000a55f0  75 73 69 6e 67 20 74 68  65 20 3c 72 65 73 6f 75  |using the <resou|
000a5600  72 63 65 5f 70 61 74 68  6e 61 6d 65 3e 2c 20 61  |rce_pathname>, a|
000a5610  6e 64 20 2f 6c 65 61 66  2f 20 77 68 69 63 68 20  |nd /leaf/ which |
000a5620  63 6f 6e 74 61 69 6e 73  20 74 68 65 20 6c 65 61  |contains the lea|
000a5630  66 6e 61 6d 65 2e 20 4c  6f 61 64 69 6e 67 20 6d  |fname. Loading m|
000a5640  6f 72 65 20 74 68 61 6e  20 6f 6e 65 20 66 69 6c  |ore than one fil|
000a5650  65 20 61 64 64 73 20 74  68 65 20 74 65 6d 70 6c  |e adds the templ|
000a5660  61 74 65 73 2e 0a 0a 49  66 20 79 6f 75 20 77 61  |ates...If you wa|
000a5670  6e 74 20 74 6f 20 75 73  65 20 6f 75 74 6c 69 6e  |nt to use outlin|
000a5680  65 20 66 6f 6e 74 73 2c  20 79 6f 75 20 6d 75 73  |e fonts, you mus|
000a5690  74 20 63 61 6c 6c 20 3c  54 65 6d 70 6c 61 74 65  |t call <Template|
000a56a0  5f 55 73 65 4f 75 74 6c  69 6e 65 46 6f 6e 74 73  |_UseOutlineFonts|
000a56b0  3e 20 66 69 72 73 74 2e  44 41 54 41 1c 01 00 00  |> first.DATA....|
000a56c0  74 65 6d 70 6c 61 74 65  5f 72 65 61 64 66 69 6c  |template_readfil|
000a56d0  65 0a 53 79 6e 74 61 78  3a 09 3c 42 4f 4f 4c 3e  |e.Syntax:.<BOOL>|
000a56e0  20 74 65 6d 70 6c 61 74  65 5f 72 65 61 64 66 69  | template_readfi|
000a56f0  6c 65 20 28 63 68 61 72  20 2a 6e 61 6d 65 29 3b  |le (char *name);|
000a5700  0a 48 65 61 64 65 72 3a  09 3c 74 65 6d 70 6c 61  |.Header:.<templa|
000a5710  74 65 2e 68 3d 3e 74 65  6d 70 6c 61 74 65 5f 68  |te.h=>template_h|
000a5720  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 3c 46 41 4c  |>..Returns:.<FAL|
000a5730  53 45 3e 20 69 66 20 6e  6f 20 73 70 72 69 74 65  |SE> if no sprite|
000a5740  73 20 61 72 65 20 75 73  65 64 2e 0a 0a 54 68 69  |s are used...Thi|
000a5750  73 20 66 75 6e 63 74 69  6f 6e 20 72 65 61 64 73  |s function reads|
000a5760  20 74 68 65 20 74 65 6d  70 6c 61 74 65 20 66 69  | the template fi|
000a5770  6c 65 20 77 68 6f 73 65  20 6c 65 61 66 20 6e 61  |le whose leaf na|
000a5780  6d 65 20 69 73 20 67 69  76 65 6e 20 69 6e 20 2f  |me is given in /|
000a5790  6e 61 6d 65 2f 2e 20 49  74 20 63 61 6c 6c 73 20  |name/. It calls |
000a57a0  3c 72 65 73 73 70 72 5f  61 72 65 61 3e 20 73 6f  |<resspr_area> so|
000a57b0  20 79 6f 75 20 6d 75 73  74 20 68 61 76 65 20 63  | you must have c|
000a57c0  61 6c 6c 65 64 20 3c 72  65 73 73 70 72 5f 69 6e  |alled <resspr_in|
000a57d0  69 74 3e 2e 44 41 54 41  48 01 00 00 74 65 6d 70  |it>.DATAH...temp|
000a57e0  6c 61 74 65 5f 73 79 73  68 61 6e 64 6c 65 0a 53  |late_syshandle.S|
000a57f0  79 6e 74 61 78 3a 09 3c  77 69 6d 70 5f 77 69 6e  |yntax:.<wimp_win|
000a5800  64 3e 20 2a 74 65 6d 70  6c 61 74 65 5f 73 79 73  |d> *template_sys|
000a5810  68 61 6e 64 6c 65 20 28  63 68 61 72 20 2a 6e 61  |handle (char *na|
000a5820  6d 65 29 3b 0a 48 65 61  64 65 72 3a 09 3c 74 65  |me);.Header:.<te|
000a5830  6d 70 6c 61 74 65 2e 68  3d 3e 74 65 6d 70 6c 61  |mplate.h=>templa|
000a5840  74 65 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |te_h>..Returns:.|
000a5850  50 6f 69 6e 74 65 72 20  74 6f 20 75 6e 64 65 72  |Pointer to under|
000a5860  6c 79 69 6e 67 20 77 69  6e 64 6f 77 2e 0a 0a 54  |lying window...T|
000a5870  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 67 65 74  |his function get|
000a5880  73 20 61 20 70 6f 69 6e  74 65 72 20 74 6f 20 74  |s a pointer to t|
000a5890  68 65 20 75 6e 64 65 72  6c 79 69 6e 67 20 77 69  |he underlying wi|
000a58a0  6e 64 6f 77 20 75 73 65  64 20 74 6f 20 63 72 65  |ndow used to cre|
000a58b0  61 74 65 20 61 20 74 65  6d 70 6c 61 74 65 2e 20  |ate a template. |
000a58c0  41 6e 79 20 63 68 61 6e  67 65 73 20 6d 61 64 65  |Any changes made|
000a58d0  20 74 6f 20 74 68 69 73  20 73 74 72 75 63 74 75  | to this structu|
000a58e0  72 65 20 77 69 6c 6c 20  61 66 66 65 63 74 20 66  |re will affect f|
000a58f0  75 74 75 72 65 20 77 69  6e 64 6f 77 73 20 67 65  |uture windows ge|
000a5900  6e 65 72 61 74 65 64 20  75 73 69 6e 67 20 74 68  |nerated using th|
000a5910  69 73 20 74 65 6d 70 6c  61 74 65 2e 44 41 54 41  |is template.DATA|
000a5920  df 00 00 00 74 65 6d 70  6c 61 74 65 5f 75 73 65  |....template_use|
000a5930  5f 66 61 6e 63 79 66 6f  6e 74 73 0a 53 79 6e 74  |_fancyfonts.Synt|
000a5940  61 78 3a 09 76 6f 69 64  20 74 65 6d 70 6c 61 74  |ax:.void templat|
000a5950  65 5f 75 73 65 5f 66 61  6e 63 79 66 6f 6e 74 73  |e_use_fancyfonts|
000a5960  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
000a5970  09 3c 74 65 6d 70 6c 61  74 65 2e 68 3d 3e 74 65  |.<template.h=>te|
000a5980  6d 70 6c 61 74 65 5f 68  3e 0a 0a 54 68 69 73 20  |mplate_h>..This |
000a5990  66 75 6e 63 74 69 6f 6e  20 6d 75 73 74 20 62 65  |function must be|
000a59a0  20 63 61 6c 6c 65 64 20  6f 6e 63 65 20 62 65 66  | called once bef|
000a59b0  6f 72 65 20 3c 74 65 6d  70 6c 61 74 65 5f 69 6e  |ore <template_in|
000a59c0  69 74 3e 2c 20 69 66 20  79 6f 75 20 77 69 73 68  |it>, if you wish|
000a59d0  20 74 6f 20 75 73 65 20  74 65 6d 70 6c 61 74 65  | to use template|
000a59e0  73 20 63 6f 6e 74 61 69  6e 69 6e 67 20 6f 75 74  |s containing out|
000a59f0  6c 69 6e 65 20 66 6f 6e  74 73 2e 00 44 41 54 41  |line fonts..DATA|
000a5a00  6a 01 00 00 54 65 6d 70  6c 61 74 65 5f 55 73 65  |j...Template_Use|
000a5a10  4f 75 74 6c 69 6e 65 46  6f 6e 74 73 0a 53 79 6e  |OutlineFonts.Syn|
000a5a20  74 61 78 3a 09 76 6f 69  64 20 54 65 6d 70 6c 61  |tax:.void Templa|
000a5a30  74 65 5f 55 73 65 4f 75  74 6c 69 6e 65 46 6f 6e  |te_UseOutlineFon|
000a5a40  74 73 20 28 76 6f 69 64  29 3b 0a 48 65 61 64 65  |ts (void);.Heade|
000a5a50  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 54 65 6d 70  |r:.<DeskLib:Temp|
000a5a60  6c 61 74 65 2e 68 3d 3e  54 65 6d 70 6c 61 74 65  |late.h=>Template|
000a5a70  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
000a5a80  20 6d 75 73 74 20 62 65  20 63 61 6c 6c 65 64 20  | must be called |
000a5a90  62 65 66 6f 72 65 20 3c  54 65 6d 70 6c 61 74 65  |before <Template|
000a5aa0  5f 4c 6f 61 64 46 69 6c  65 3e 20 69 66 20 79 6f  |_LoadFile> if yo|
000a5ab0  75 20 77 61 6e 74 20 74  6f 20 75 73 65 20 6f 75  |u want to use ou|
000a5ac0  74 6c 69 6e 65 20 66 6f  6e 74 73 20 69 6e 20 77  |tline fonts in w|
000a5ad0  69 6e 64 6f 77 73 2e 20  59 6f 75 20 73 68 6f 75  |indows. You shou|
000a5ae0  6c 64 6e 27 74 20 75 73  65 20 6f 75 74 6c 69 6e  |ldn't use outlin|
000a5af0  65 20 66 6f 6e 74 73 20  66 6f 72 20 67 65 6e 65  |e fonts for gene|
000a5b00  72 61 6c 20 74 65 78 74  20 69 63 6f 6e 73 20 62  |ral text icons b|
000a5b10  65 63 61 75 73 65 20 75  73 65 72 73 20 77 69 74  |ecause users wit|
000a5b20  68 20 6d 6f 72 65 20 72  65 63 65 6e 74 20 76 65  |h more recent ve|
000a5b30  72 73 69 6f 6e 73 20 6f  66 20 52 49 53 43 20 4f  |rsions of RISC O|
000a5b40  53 20 77 69 6c 6c 20 70  72 6f 62 61 62 6c 79 20  |S will probably |
000a5b50  77 61 6e 74 20 74 6f 20  75 73 65 20 74 68 65 69  |want to use thei|
000a5b60  72 20 6f 77 6e 2e 00 00  44 41 54 41 06 01 00 00  |r own...DATA....|
000a5b70  74 65 6d 70 6c 61 74 65  5f 54 49 54 4c 45 44 45  |template_TITLEDE|
000a5b80  46 41 55 4c 54 0a 54 68  69 73 20 6d 61 63 72 6f  |FAULT.This macro|
000a5b90  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
000a5ba0  44 65 73 6b 4c 69 62 3a  54 65 6d 70 6c 61 74 65  |DeskLib:Template|
000a5bb0  2e 68 3d 3e 54 65 6d 70  6c 61 74 65 3e 2e 20 49  |.h=>Template>. I|
000a5bc0  74 20 69 73 20 61 20 76  61 6c 75 65 20 74 6f 20  |t is a value to |
000a5bd0  62 65 20 70 61 73 73 65  64 20 74 6f 20 66 75 6e  |be passed to fun|
000a5be0  63 74 69 6f 6e 73 20 77  68 69 63 68 20 63 6f 70  |ctions which cop|
000a5bf0  79 20 74 65 6d 70 6c 61  74 65 20 64 65 66 69 6e  |y template defin|
000a5c00  69 74 69 6f 6e 73 20 77  68 69 63 68 20 74 65 6c  |itions which tel|
000a5c10  6c 73 20 74 68 65 6d 20  74 6f 20 72 65 73 65 72  |ls them to reser|
000a5c20  76 65 20 74 68 65 20 64  65 66 61 75 6c 74 20 61  |ve the default a|
000a5c30  6d 6f 75 6e 74 20 6f 66  20 73 70 61 63 65 20 66  |mount of space f|
000a5c40  6f 72 20 74 68 65 20 69  6e 64 69 72 65 63 74 65  |or the indirecte|
000a5c50  64 20 74 69 74 6c 65 20  28 63 75 72 72 65 6e 74  |d title (current|
000a5c60  6c 79 20 32 36 30 20 62  79 74 65 73 29 2e 00 00  |ly 260 bytes)...|
000a5c70  44 41 54 41 01 01 00 00  74 65 6d 70 6c 61 74 65  |DATA....template|
000a5c80  5f 54 49 54 4c 45 4d 49  4e 0a 54 68 69 73 20 6d  |_TITLEMIN.This m|
000a5c90  61 63 72 6f 20 69 73 20  64 65 66 69 6e 65 64 20  |acro is defined |
000a5ca0  69 6e 20 3c 44 65 73 6b  4c 69 62 3a 54 65 6d 70  |in <DeskLib:Temp|
000a5cb0  6c 61 74 65 2e 68 3d 3e  54 65 6d 70 6c 61 74 65  |late.h=>Template|
000a5cc0  3e 2e 20 49 74 20 69 73  20 61 20 76 61 6c 75 65  |>. It is a value|
000a5cd0  20 74 6f 20 62 65 20 70  61 73 73 65 64 20 74 6f  | to be passed to|
000a5ce0  20 66 75 6e 63 74 69 6f  6e 73 20 77 68 69 63 68  | functions which|
000a5cf0  20 63 6f 70 79 20 74 65  6d 70 6c 61 74 65 20 64  | copy template d|
000a5d00  65 66 69 6e 69 74 69 6f  6e 73 20 77 68 69 63 68  |efinitions which|
000a5d10  20 74 65 6c 6c 73 20 74  68 65 6d 20 74 6f 20 72  | tells them to r|
000a5d20  65 73 65 72 76 65 20 74  68 65 20 73 61 6d 65 20  |eserve the same |
000a5d30  73 70 61 63 65 20 61 73  20 73 70 65 63 69 66 69  |space as specifi|
000a5d40  65 64 20 69 6e 20 74 68  65 20 74 65 6d 70 6c 61  |ed in the templa|
000a5d50  74 65 20 66 69 6c 65 20  66 6f 72 20 74 68 65 20  |te file for the |
000a5d60  69 6e 64 69 72 65 63 74  65 64 20 74 69 74 6c 65  |indirected title|
000a5d70  2e 00 00 00 44 41 54 41  c8 00 00 00 54 65 6d 70  |....DATA....Temp|
000a5d80  6c 61 74 65 5f 43 6c 65  61 72 41 6c 6c 0a 53 79  |late_ClearAll.Sy|
000a5d90  6e 74 61 78 3a 09 76 6f  69 64 20 54 65 6d 70 6c  |ntax:.void Templ|
000a5da0  61 74 65 5f 43 6c 65 61  72 41 6c 6c 20 28 76 6f  |ate_ClearAll (vo|
000a5db0  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |id);.Header:.<De|
000a5dc0  73 6b 4c 69 62 3a 54 65  6d 70 6c 61 74 65 2e 68  |skLib:Template.h|
000a5dd0  3d 3e 54 65 6d 70 6c 61  74 65 3e 0a 0a 54 68 69  |=>Template>..Thi|
000a5de0  73 20 66 75 6e 63 74 69  6f 6e 20 72 65 6d 6f 76  |s function remov|
000a5df0  65 73 20 61 6c 6c 20 74  65 6d 70 6c 61 74 65 20  |es all template |
000a5e00  64 65 66 69 6e 69 74 69  6f 6e 73 20 66 72 6f 6d  |definitions from|
000a5e10  20 6d 65 6d 6f 72 79 20  61 6e 64 20 72 65 6c 65  | memory and rele|
000a5e20  61 73 65 73 20 61 6c 6c  20 66 6f 6e 74 73 20 75  |ases all fonts u|
000a5e30  73 65 64 20 62 79 20 74  68 65 6d 2e 44 41 54 41  |sed by them.DATA|
000a5e40  43 01 00 00 54 65 6d 70  6c 61 74 65 5f 55 73 65  |C...Template_Use|
000a5e50  53 70 72 69 74 65 41 72  65 61 0a 53 79 6e 74 61  |SpriteArea.Synta|
000a5e60  78 3a 09 76 6f 69 64 20  54 65 6d 70 6c 61 74 65  |x:.void Template|
000a5e70  5f 55 73 65 53 70 72 69  74 65 41 72 65 61 20 28  |_UseSpriteArea (|
000a5e80  3c 73 70 72 69 74 65 5f  61 72 65 61 3e 20 2a 61  |<sprite_area> *a|
000a5e90  72 65 61 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |rea);.Header:.<D|
000a5ea0  65 73 6b 4c 69 62 3a 54  65 6d 70 6c 61 74 65 2e  |eskLib:Template.|
000a5eb0  68 3d 3e 54 65 6d 70 6c  61 74 65 3e 0a 0a 54 68  |h=>Template>..Th|
000a5ec0  69 73 20 66 75 6e 63 74  69 6f 6e 20 73 65 74 73  |is function sets|
000a5ed0  20 74 68 65 20 73 70 72  69 74 65 20 61 72 65 61  | the sprite area|
000a5ee0  20 77 68 69 63 68 20 77  69 6c 6c 20 62 65 20 75  | which will be u|
000a5ef0  73 65 64 20 62 79 20 61  6c 6c 20 66 75 74 75 72  |sed by all futur|
000a5f00  65 20 3c 54 65 6d 70 6c  61 74 65 5f 46 69 6e 64  |e <Template_Find|
000a5f10  3e 20 6f 72 20 3c 54 65  6d 70 6c 61 74 65 5f 43  |> or <Template_C|
000a5f20  6c 6f 6e 65 3e 64 20 74  65 6d 70 6c 61 74 65 73  |lone>d templates|
000a5f30  2e 20 49 74 20 73 68 6f  75 6c 64 20 62 65 20 73  |. It should be s|
000a5f40  65 74 20 74 6f 20 3c 4e  55 4c 4c 3e 20 74 6f 20  |et to <NULL> to |
000a5f50  75 73 65 20 74 68 65 20  57 69 6d 70 20 73 70 72  |use the Wimp spr|
000a5f60  69 74 65 20 70 6f 6f 6c  2c 20 77 68 69 63 68 20  |ite pool, which |
000a5f70  69 73 20 74 68 65 20 64  65 66 61 75 6c 74 2e 00  |is the default..|
000a5f80  44 41 54 41 c9 00 00 00  54 65 6d 70 6c 61 74 65  |DATA....Template|
000a5f90  5f 4c 69 6e 6b 53 70 72  69 74 65 41 72 65 61 0a  |_LinkSpriteArea.|
000a5fa0  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 54 65 6d  |Syntax:.void Tem|
000a5fb0  70 6c 61 74 65 5f 4c 69  6e 6b 53 70 72 69 74 65  |plate_LinkSprite|
000a5fc0  41 72 65 61 20 28 63 68  61 72 20 2a 6e 61 6d 65  |Area (char *name|
000a5fd0  2c 20 3c 73 70 72 69 74  65 5f 61 72 65 61 3e 20  |, <sprite_area> |
000a5fe0  61 72 65 61 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |area);.Header:.<|
000a5ff0  44 65 73 6b 4c 69 62 3a  54 65 6d 70 6c 61 74 65  |DeskLib:Template|
000a6000  2e 68 3d 3e 54 65 6d 70  6c 61 74 65 3e 0a 0a 54  |.h=>Template>..T|
000a6010  68 69 73 20 73 65 74 73  20 74 68 65 20 77 69 6e  |his sets the win|
000a6020  64 6f 77 20 2f 6e 61 6d  65 2f 20 74 6f 20 75 73  |dow /name/ to us|
000a6030  65 20 74 68 65 20 73 70  72 69 74 65 20 61 72 65  |e the sprite are|
000a6040  61 20 2f 61 72 65 61 2f  2e 00 00 00 44 41 54 41  |a /area/....DATA|
000a6050  fd 00 00 00 44 65 73 6b  4c 69 62 3a 54 65 78 74  |....DeskLib:Text|
000a6060  46 69 6c 65 2e 68 0a 56  65 72 73 69 6f 6e 3a 20  |File.h.Version: |
000a6070  31 2e 30 30 20 28 30 37  20 41 70 72 20 31 39 39  |1.00 (07 Apr 199|
000a6080  32 29 0a 23 6c 69 6e 65  0a 54 68 69 73 20 68 65  |2).#line.This he|
000a6090  61 64 65 72 20 64 65 63  6c 61 72 65 73 20 73 65  |ader declares se|
000a60a0  76 65 72 61 6c 20 66 75  6e 63 74 69 6f 6e 73 20  |veral functions |
000a60b0  66 6f 72 20 68 61 6e 64  6c 69 6e 67 20 74 65 78  |for handling tex|
000a60c0  74 66 69 6c 65 73 2e 0a  0a 46 75 6e 63 74 69 6f  |tfiles...Functio|
000a60d0  6e 73 3a 0a 0a 23 74 61  62 6c 65 20 63 6f 6c 75  |ns:..#table colu|
000a60e0  6d 6e 73 20 32 0a 3c 54  65 78 74 46 69 6c 65 5f  |mns 2.<TextFile_|
000a60f0  47 65 74 54 6f 6b 65 6e  3e 0a 3c 54 65 78 74 46  |GetToken>.<TextF|
000a6100  69 6c 65 5f 4c 6f 77 65  72 63 61 73 65 3e 0a 3c  |ile_Lowercase>.<|
000a6110  54 65 78 74 46 69 6c 65  5f 52 65 61 64 54 6f 44  |TextFile_ReadToD|
000a6120  65 6c 69 6d 65 74 65 72  3e 0a 3c 54 65 78 74 46  |elimeter>.<TextF|
000a6130  69 6c 65 5f 53 6b 69 70  42 6c 61 6e 6b 73 3e 0a  |ile_SkipBlanks>.|
000a6140  23 65 6e 64 74 61 62 6c  65 00 00 00 44 49 52 24  |#endtable...DIR$|
000a6150  a0 00 00 00 a0 00 00 00  ec 61 0a 00 46 ff ff ff  |.........a..F...|
000a6160  e6 f5 35 26 82 01 00 00  13 00 00 00 00 00 00 00  |..5&............|
000a6170  47 65 74 54 6f 6b 65 6e  00 00 00 00 70 63 0a 00  |GetToken....pc..|
000a6180  46 ff ff ff f6 fc 35 26  c1 00 00 00 13 00 00 00  |F.....5&........|
000a6190  00 00 00 00 4c 6f 77 65  72 63 61 73 65 00 00 00  |....Lowercase...|
000a61a0  34 64 0a 00 46 ff ff ff  c9 50 36 26 f7 00 00 00  |4d..F....P6&....|
000a61b0  13 00 00 00 00 00 00 00  53 6b 69 70 42 6c 61 6e  |........SkipBlan|
000a61c0  6b 73 00 00 2c 65 0a 00  46 ff ff ff 65 46 36 26  |ks..,e..F...eF6&|
000a61d0  78 01 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |x...........Read|
000a61e0  54 6f 44 65 6c 69 6d 65  74 65 72 00 44 41 54 41  |ToDelimeter.DATA|
000a61f0  82 01 00 00 54 65 78 74  46 69 6c 65 5f 47 65 74  |....TextFile_Get|
000a6200  54 6f 6b 65 6e 0a 53 79  6e 74 61 78 3a 09 76 6f  |Token.Syntax:.vo|
000a6210  69 64 20 54 65 78 74 46  69 6c 65 5f 47 65 74 54  |id TextFile_GetT|
000a6220  6f 6b 65 6e 20 28 3c 46  49 4c 45 3e 20 2a 66 2c  |oken (<FILE> *f,|
000a6230  20 63 68 61 72 20 64 65  6c 69 6d 2c 20 63 68 61  | char delim, cha|
000a6240  72 20 2a 74 6f 6b 65 6e  2c 20 3c 42 4f 4f 4c 3e  |r *token, <BOOL>|
000a6250  20 6c 6f 77 65 72 29 3b  0a 48 65 61 64 65 72 3a  | lower);.Header:|
000a6260  09 3c 44 65 73 6b 4c 69  62 3a 54 65 78 74 46 69  |.<DeskLib:TextFi|
000a6270  6c 65 2e 68 3d 3e 54 65  78 74 46 69 6c 65 3e 0a  |le.h=>TextFile>.|
000a6280  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
000a6290  65 61 64 73 20 69 6e 20  61 20 74 6f 6b 65 6e 20  |eads in a token |
000a62a0  66 72 6f 6d 20 61 20 66  69 6c 65 20 2f 66 2f 2e  |from a file /f/.|
000a62b0  20 41 20 74 6f 6b 65 6e  20 69 73 20 64 65 66 69  | A token is defi|
000a62c0  6e 65 64 20 61 73 20 61  20 73 65 71 75 65 6e 63  |ned as a sequenc|
000a62d0  65 20 6f 66 20 75 70 20  74 6f 20 33 32 20 63 68  |e of up to 32 ch|
000a62e0  61 72 61 63 74 65 72 73  2c 20 74 65 72 6d 69 6e  |aracters, termin|
000a62f0  61 74 65 64 20 69 6e 20  61 20 6e 65 77 6c 69 6e  |ated in a newlin|
000a6300  65 20 6f 72 20 2f 64 65  6c 69 6d 2f 2e 20 4c 65  |e or /delim/. Le|
000a6310  61 64 69 6e 67 20 62 6c  61 6e 6b 20 73 70 61 63  |ading blank spac|
000a6320  65 20 69 73 20 73 6b 69  70 70 65 64 2e 0a 0a 49  |e is skipped...I|
000a6330  66 20 2f 6c 6f 77 65 72  2f 20 69 73 20 3c 54 52  |f /lower/ is <TR|
000a6340  55 45 3e 20 74 68 65 6e  20 74 68 65 20 74 6f 6b  |UE> then the tok|
000a6350  65 6e 20 69 73 20 63 6f  6e 76 65 72 74 65 64 20  |en is converted |
000a6360  74 6f 20 6c 6f 77 65 72  20 63 61 73 65 2e 00 00  |to lower case...|
000a6370  44 41 54 41 c1 00 00 00  54 65 78 74 46 69 6c 65  |DATA....TextFile|
000a6380  5f 4c 6f 77 65 72 63 61  73 65 0a 53 79 6e 74 61  |_Lowercase.Synta|
000a6390  78 3a 09 63 68 61 72 20  54 65 78 74 46 69 6c 65  |x:.char TextFile|
000a63a0  5f 4c 6f 77 65 72 63 61  73 65 20 28 63 68 61 72  |_Lowercase (char|
000a63b0  20 78 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  | x);.Header:.<De|
000a63c0  73 6b 4c 69 62 3a 54 65  78 74 46 69 6c 65 2e 68  |skLib:TextFile.h|
000a63d0  3d 3e 54 65 78 74 46 69  6c 65 3e 0a 0a 52 65 74  |=>TextFile>..Ret|
000a63e0  75 72 6e 73 3a 09 2f 78  2f 20 63 6f 6e 76 65 72  |urns:./x/ conver|
000a63f0  74 65 64 20 74 6f 20 6c  6f 77 65 72 20 63 61 73  |ted to lower cas|
000a6400  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
000a6410  6e 20 69 73 20 61 63 74  75 61 6c 6c 79 20 64 65  |n is actually de|
000a6420  66 69 6e 65 64 20 61 73  20 61 20 6d 61 63 72 6f  |fined as a macro|
000a6430  2e 00 00 00 44 41 54 41  f7 00 00 00 54 65 78 74  |....DATA....Text|
000a6440  46 69 6c 65 5f 53 6b 69  70 42 6c 61 6e 6b 73 0a  |File_SkipBlanks.|
000a6450  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 54 65 78  |Syntax:.void Tex|
000a6460  74 46 69 6c 65 5f 53 6b  69 70 42 6c 61 6e 6b 73  |tFile_SkipBlanks|
000a6470  20 28 3c 46 49 4c 45 3e  20 2a 66 29 3b 0a 48 65  | (<FILE> *f);.He|
000a6480  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 54  |ader:.<DeskLib:T|
000a6490  65 78 74 46 69 6c 65 2e  68 3d 3e 54 65 78 74 46  |extFile.h=>TextF|
000a64a0  69 6c 65 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |ile>..This funct|
000a64b0  69 6f 6e 20 72 65 61 64  73 20 63 68 61 72 61 63  |ion reads charac|
000a64c0  74 65 72 73 20 66 72 6f  6d 20 74 68 65 20 67 69  |ters from the gi|
000a64d0  76 65 6e 20 66 69 6c 65  20 75 6e 74 69 6c 20 65  |ven file until e|
000a64e0  6e 64 20 6f 66 20 66 69  6c 65 2c 20 6f 72 20 75  |nd of file, or u|
000a64f0  6e 74 69 6c 20 61 20 6e  6f 6e 2d 62 6c 61 6e 6b  |ntil a non-blank|
000a6500  20 63 68 61 72 61 63 74  65 72 20 28 69 65 20 6e  | character (ie n|
000a6510  6f 74 20 73 70 61 63 65  20 6f 72 20 74 61 62 29  |ot space or tab)|
000a6520  20 20 69 73 20 66 6f 75  6e 64 2e 00 44 41 54 41  |  is found..DATA|
000a6530  78 01 00 00 54 65 78 74  46 69 6c 65 5f 52 65 61  |x...TextFile_Rea|
000a6540  64 54 6f 44 65 6c 69 6d  65 74 65 72 0a 53 79 6e  |dToDelimeter.Syn|
000a6550  74 61 78 3a 09 76 6f 69  64 20 54 65 78 74 46 69  |tax:.void TextFi|
000a6560  6c 65 5f 52 65 61 64 54  6f 44 65 6c 69 6d 65 74  |le_ReadToDelimet|
000a6570  65 72 20 28 3c 46 49 4c  45 3e 20 2a 66 2c 20 63  |er (<FILE> *f, c|
000a6580  68 61 72 20 64 65 6c 69  6d 2c 20 63 68 61 72 20  |har delim, char |
000a6590  2a 6c 69 6e 65 2c 20 69  6e 74 20 6d 61 78 6c 65  |*line, int maxle|
000a65a0  6e 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |n);.Header:.<Des|
000a65b0  6b 4c 69 62 3a 54 65 78  74 46 69 6c 65 2e 68 3d  |kLib:TextFile.h=|
000a65c0  3e 54 65 78 74 46 69 6c  65 3e 0a 0a 54 68 69 73  |>TextFile>..This|
000a65d0  20 66 75 6e 63 74 69 6f  6e 20 72 65 61 64 73 20  | function reads |
000a65e0  69 6e 20 63 68 61 72 61  63 74 65 72 73 20 66 72  |in characters fr|
000a65f0  6f 6d 20 74 68 65 20 66  69 6c 65 20 2f 66 2f 20  |om the file /f/ |
000a6600  75 6e 74 69 6c 20 74 68  65 20 65 6e 64 20 6f 66  |until the end of|
000a6610  20 66 69 6c 65 20 6f 72  20 61 20 63 68 61 72 61  | file or a chara|
000a6620  63 74 65 72 20 2f 64 65  6c 69 6d 2f 20 69 73 20  |cter /delim/ is |
000a6630  72 65 61 63 68 65 64 2c  20 6f 72 20 2f 6d 61 78  |reached, or /max|
000a6640  6c 65 6e 2f 20 63 68 61  72 61 63 74 65 72 73 20  |len/ characters |
000a6650  68 61 76 65 20 62 65 65  6e 20 72 65 61 64 20 28  |have been read (|
000a6660  69 6e 63 6c 75 64 69 6e  67 20 74 68 65 20 6e 75  |including the nu|
000a6670  6c 6c 20 74 65 72 6d 69  6e 61 74 6f 72 29 2e 20  |ll terminator). |
000a6680  54 68 65 20 63 68 61 72  61 63 74 65 72 73 20 61  |The characters a|
000a6690  72 65 20 72 65 61 64 20  69 6e 74 6f 20 2f 6c 69  |re read into /li|
000a66a0  6e 65 2f 2e 44 49 52 24  48 00 00 00 48 00 00 00  |ne/.DIR$H...H...|
000a66b0  ec 66 0a 00 46 fd ff ff  32 10 e2 22 d4 01 00 00  |.f..F...2.."....|
000a66c0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000a66d0  c0 68 0a 00 46 fd ff ff  6a 86 36 26 e1 01 00 00  |.h..F...j.6&....|
000a66e0  13 00 00 00 00 00 00 00  5f 00 00 00 44 41 54 41  |........_...DATA|
000a66f0  d4 01 00 00 73 74 72 66  74 69 6d 65 28 29 20 46  |....strftime() F|
000a6700  6f 72 6d 61 74 20 53 74  72 69 6e 67 0a 54 68 65  |ormat String.The|
000a6710  20 66 6f 72 6d 61 74 20  73 74 72 69 6e 67 20 69  | format string i|
000a6720  73 20 63 6f 6d 70 6f 73  65 64 20 6f 66 20 61 20  |s composed of a |
000a6730  73 65 71 75 65 6e 63 65  20 6f 66 20 63 68 61 72  |sequence of char|
000a6740  61 63 74 65 72 73 2e 20  41 6c 6c 20 63 68 61 72  |acters. All char|
000a6750  61 63 74 65 72 73 20 65  78 63 65 70 74 20 27 25  |acters except '%|
000a6760  27 20 61 72 65 20 63 6f  70 69 65 64 20 64 69 72  |' are copied dir|
000a6770  65 63 74 6c 79 20 74 6f  20 74 68 65 20 6f 75 74  |ectly to the out|
000a6780  70 75 74 2e 20 27 25 27  20 6d 61 72 6b 73 20 74  |put. '%' marks t|
000a6790  68 65 20 62 65 67 69 6e  6e 69 6e 67 20 6f 66 20  |he beginning of |
000a67a0  63 6f 6e 76 65 72 73 69  6f 6e 20 73 70 65 63 69  |conversion speci|
000a67b0  66 69 63 61 74 69 6f 6e  2e 20 49 66 20 61 20 6c  |fication. If a l|
000a67c0  69 74 65 72 61 6c 20 70  65 72 63 65 6e 74 20 69  |iteral percent i|
000a67d0  73 20 72 65 71 75 69 72  65 64 2c 20 74 68 65 6e  |s required, then|
000a67e0  20 94 25 25 95 20 73 68  6f 75 6c 64 20 62 65 20  | .%%. should be |
000a67f0  75 73 65 64 2e 0a 0a 41  20 63 6f 6e 76 65 72 73  |used...A convers|
000a6800  69 6f 6e 20 73 70 65 63  69 66 69 63 61 74 69 6f  |ion specificatio|
000a6810  6e 20 72 65 73 75 6c 74  73 20 69 6e 20 70 61 72  |n results in par|
000a6820  74 20 6f 66 20 74 68 65  20 74 69 6d 65 20 62 65  |t of the time be|
000a6830  69 6e 67 20 70 72 69 6e  74 65 64 20 61 63 63 6f  |ing printed acco|
000a6840  72 64 69 6e 67 20 74 6f  20 74 68 65 20 73 70 65  |rding to the spe|
000a6850  63 69 66 69 63 61 74 69  6f 6e 2e 20 54 68 65 20  |cification. The |
000a6860  73 74 72 75 63 74 75 72  65 20 6f 66 20 61 20 63  |structure of a c|
000a6870  6f 6e 76 65 72 73 69 6f  6e 20 73 70 65 63 69 66  |onversion specif|
000a6880  69 63 61 74 69 6f 6e 20  69 73 20 61 20 27 25 27  |ication is a '%'|
000a6890  20 66 6f 6c 6c 6f 77 65  64 20 62 79 20 61 20 3c  | followed by a <|
000a68a0  63 6f 6e 76 65 72 73 69  6f 6e 20 63 68 61 72 61  |conversion chara|
000a68b0  63 74 65 72 3d 3e 74 66  5f 63 6f 6e 76 5f 3e 2e  |cter=>tf_conv_>.|
000a68c0  44 41 54 41 e1 01 00 00  54 69 6d 65 5f 43 6f 6e  |DATA....Time_Con|
000a68d0  76 65 72 74 44 61 74 65  41 6e 64 54 69 6d 65 28  |vertDateAndTime(|
000a68e0  29 20 46 6f 72 6d 61 74  20 53 74 72 69 6e 67 0a  |) Format String.|
000a68f0  54 68 65 20 66 6f 72 6d  61 74 20 73 74 72 69 6e  |The format strin|
000a6900  67 20 69 73 20 63 6f 6d  70 6f 73 65 64 20 6f 66  |g is composed of|
000a6910  20 61 20 73 65 71 75 65  6e 63 65 20 6f 66 20 63  | a sequence of c|
000a6920  68 61 72 61 63 74 65 72  73 2e 20 41 6c 6c 20 63  |haracters. All c|
000a6930  68 61 72 61 63 74 65 72  73 20 65 78 63 65 70 74  |haracters except|
000a6940  20 27 25 27 20 61 72 65  20 63 6f 70 69 65 64 20  | '%' are copied |
000a6950  64 69 72 65 63 74 6c 79  20 74 6f 20 74 68 65 20  |directly to the |
000a6960  6f 75 74 70 75 74 2e 20  27 25 27 20 6d 61 72 6b  |output. '%' mark|
000a6970  73 20 74 68 65 20 62 65  67 69 6e 6e 69 6e 67 20  |s the beginning |
000a6980  6f 66 20 63 6f 6e 76 65  72 73 69 6f 6e 20 73 70  |of conversion sp|
000a6990  65 63 69 66 69 63 61 74  69 6f 6e 2e 20 49 66 20  |ecification. If |
000a69a0  61 20 6c 69 74 65 72 61  6c 20 70 65 72 63 65 6e  |a literal percen|
000a69b0  74 20 69 73 20 72 65 71  75 69 72 65 64 2c 20 74  |t is required, t|
000a69c0  68 65 6e 20 22 25 25 22  20 73 68 6f 75 6c 64 20  |hen "%%" should |
000a69d0  62 65 20 75 73 65 64 2e  0a 0a 41 20 63 6f 6e 76  |be used...A conv|
000a69e0  65 72 73 69 6f 6e 20 73  70 65 63 69 66 69 63 61  |ersion specifica|
000a69f0  74 69 6f 6e 20 72 65 73  75 6c 74 73 20 69 6e 20  |tion results in |
000a6a00  70 61 72 74 20 6f 66 20  74 68 65 20 74 69 6d 65  |part of the time|
000a6a10  20 62 65 69 6e 67 20 70  72 69 6e 74 65 64 20 61  | being printed a|
000a6a20  63 63 6f 72 64 69 6e 67  20 74 6f 20 74 68 65 20  |ccording to the |
000a6a30  73 70 65 63 69 66 69 63  61 74 69 6f 6e 2e 20 54  |specification. T|
000a6a40  68 65 20 73 74 72 75 63  74 75 72 65 20 6f 66 20  |he structure of |
000a6a50  61 20 63 6f 6e 76 65 72  73 69 6f 6e 20 73 70 65  |a conversion spe|
000a6a60  63 69 66 69 63 61 74 69  6f 6e 20 69 73 20 61 20  |cification is a |
000a6a70  27 25 27 20 66 6f 6c 6c  6f 77 65 64 20 62 79 20  |'%' followed by |
000a6a80  61 20 3c 63 6f 6e 76 65  72 73 69 6f 6e 20 73 74  |a <conversion st|
000a6a90  72 69 6e 67 3d 3e 74 66  5f 63 6f 6e 76 5f 5f 3e  |ring=>tf_conv__>|
000a6aa0  2e 00 00 00 44 49 52 24  4c 00 00 00 4c 00 00 00  |....DIR$L...L...|
000a6ab0  f0 6a 0a 00 46 fd ff ff  f2 23 e2 22 af 03 00 00  |.j..F....#."....|
000a6ac0  13 00 00 00 00 00 00 00  63 6f 6e 76 5f 00 00 00  |........conv_...|
000a6ad0  a0 6e 0a 00 46 fd ff ff  8c 9f 36 26 6b 02 00 00  |.n..F.....6&k...|
000a6ae0  13 00 00 00 00 00 00 00  63 6f 6e 76 5f 5f 00 00  |........conv__..|
000a6af0  44 41 54 41 af 03 00 00  46 6f 72 6d 61 74 20 53  |DATA....Format S|
000a6b00  74 72 69 6e 67 20 43 6f  6e 76 65 72 73 69 6f 6e  |tring Conversion|
000a6b10  20 43 68 61 72 61 63 74  65 72 0a 4f 6e 65 20 6f  | Character.One o|
000a6b20  66 20 74 68 65 20 66 6f  6c 6c 6f 77 69 6e 67 3a  |f the following:|
000a6b30  0a 0a 61 2c 41 2c 77 09  54 68 65 20 77 65 65 6b  |..a,A,w.The week|
000a6b40  64 61 79 20 69 73 20 6f  75 74 70 75 74 20 61 73  |day is output as|
000a6b50  20 61 6e 20 61 62 62 72  65 76 69 61 74 65 64 20  | an abbreviated |
000a6b60  6e 61 6d 65 20 28 61 29  2c 20 66 75 6c 6c 20 6e  |name (a), full n|
000a6b70  61 6d 65 20 28 41 29 2c  20 6f 72 20 64 65 63 69  |ame (A), or deci|
000a6b80  6d 61 6c 20 28 77 29 20  77 69 74 68 20 30 3d 53  |mal (w) with 0=S|
000a6b90  75 6e 64 61 79 2c 20 36  3d 53 61 74 75 72 64 61  |unday, 6=Saturda|
000a6ba0  79 2e 0a 62 2c 42 2c 6d  09 54 68 65 20 6d 6f 6e  |y..b,B,m.The mon|
000a6bb0  74 68 20 69 73 20 6f 75  74 70 75 74 20 61 73 20  |th is output as |
000a6bc0  61 6e 20 61 62 62 72 65  76 69 61 74 65 64 20 6e  |an abbreviated n|
000a6bd0  61 6d 65 20 28 62 29 2c  20 66 75 6c 6c 20 6e 61  |ame (b), full na|
000a6be0  6d 65 20 28 42 29 2c 20  6f 72 20 64 65 63 69 6d  |me (B), or decim|
000a6bf0  61 6c 20 28 77 29 20 77  69 74 68 20 31 3d 4a 61  |al (w) with 1=Ja|
000a6c00  6e 75 61 72 79 2c 20 31  32 3d 44 65 63 65 6d 62  |nuary, 12=Decemb|
000a6c10  65 72 2e 0a 63 09 54 68  65 20 64 61 74 65 20 61  |er..c.The date a|
000a6c20  6e 64 20 74 69 6d 65 20  61 72 65 20 6f 75 74 70  |nd time are outp|
000a6c30  75 74 20 69 6e 20 6c 6f  63 61 6c 20 66 6f 72 6d  |ut in local form|
000a6c40  61 74 2e 0a 64 09 54 68  65 20 64 61 79 20 6f 66  |at..d.The day of|
000a6c50  20 74 68 65 20 6d 6f 6e  74 68 20 69 73 20 6f 75  | the month is ou|
000a6c60  74 70 75 74 20 28 30 31  2d 33 31 29 2e 0a 48 2c  |tput (01-31)..H,|
000a6c70  49 09 54 68 65 20 68 6f  75 72 20 69 73 20 6f 75  |I.The hour is ou|
000a6c80  74 70 75 74 20 69 6e 20  32 34 20 28 48 29 20 6f  |tput in 24 (H) o|
000a6c90  72 20 31 32 20 28 49 29  20 68 6f 75 72 20 66 6f  |r 12 (I) hour fo|
000a6ca0  72 6d 61 74 2e 0a 6a 09  54 68 65 20 64 61 79 20  |rmat..j.The day |
000a6cb0  6f 66 20 74 68 65 20 79  65 61 72 20 69 73 20 6f  |of the year is o|
000a6cc0  75 74 70 75 74 20 28 30  30 31 2d 33 36 36 29 2e  |utput (001-366).|
000a6cd0  0a 4d 09 54 68 65 20 6d  69 6e 75 74 65 20 69 73  |.M.The minute is|
000a6ce0  20 6f 75 74 70 75 74 20  61 73 20 61 20 64 65 63  | output as a dec|
000a6cf0  69 6d 61 6c 20 28 30 30  2d 35 39 29 2e 0a 70 09  |imal (00-59)..p.|
000a6d00  54 68 65 20 31 32 20 68  6f 75 72 20 73 74 61 74  |The 12 hour stat|
000a6d10  75 73 20 28 69 65 20 41  4d 20 6f 72 20 50 4d 29  |us (ie AM or PM)|
000a6d20  20 69 73 20 6f 75 74 70  75 74 2e 0a 53 09 54 68  | is output..S.Th|
000a6d30  65 20 73 65 63 6f 6e 64  20 69 73 20 6f 75 74 70  |e second is outp|
000a6d40  75 74 20 61 73 20 61 20  64 65 63 69 6d 61 6c 20  |ut as a decimal |
000a6d50  28 30 30 2d 36 31 29 2e  0a 55 2c 57 09 54 68 65  |(00-61)..U,W.The|
000a6d60  20 77 65 65 6b 20 6f 66  20 74 68 65 20 79 65 61  | week of the yea|
000a6d70  72 20 69 73 20 6f 75 74  70 75 74 20 61 73 20 61  |r is output as a|
000a6d80  20 64 65 63 69 6d 61 6c  20 28 30 30 2d 35 33 29  | decimal (00-53)|
000a6d90  2c 20 63 6f 75 6e 74 69  6e 67 20 53 75 6e 64 61  |, counting Sunda|
000a6da0  79 20 28 55 29 20 6f 72  20 4d 6f 6e 64 61 79 20  |y (U) or Monday |
000a6db0  28 57 29 20 61 73 20 74  68 65 20 66 69 72 73 74  |(W) as the first|
000a6dc0  20 64 61 79 20 6f 66 20  74 68 65 20 77 65 65 6b  | day of the week|
000a6dd0  2e 0a 78 09 54 68 65 20  64 61 74 65 20 69 73 20  |..x.The date is |
000a6de0  6f 75 74 70 75 74 20 69  6e 20 6c 6f 63 61 6c 20  |output in local |
000a6df0  66 6f 72 6d 61 74 2e 0a  58 09 54 68 65 20 74 69  |format..X.The ti|
000a6e00  6d 65 20 69 73 20 6f 75  74 70 75 74 20 69 6e 20  |me is output in |
000a6e10  6c 6f 63 61 6c 20 66 6f  72 6d 61 74 2e 0a 79 2c  |local format..y,|
000a6e20  59 09 54 68 65 20 79 65  61 72 20 69 73 20 6f 75  |Y.The year is ou|
000a6e30  74 70 75 74 20 61 73 20  61 20 64 65 63 69 6d 61  |tput as a decima|
000a6e40  6c 2c 20 77 69 74 68 6f  75 74 20 63 65 6e 74 75  |l, without centu|
000a6e50  72 79 20 28 79 29 20 6f  72 20 77 69 74 68 20 63  |ry (y) or with c|
000a6e60  65 6e 74 75 72 79 20 28  59 29 2e 0a 5a 09 54 68  |entury (Y)..Z.Th|
000a6e70  65 20 74 69 6d 65 7a 6f  6e 65 20 6e 61 6d 65 20  |e timezone name |
000a6e80  69 73 20 6f 75 74 70 75  74 20 28 6f 72 20 6e 6f  |is output (or no|
000a6e90  74 68 69 6e 67 20 69 66  20 6e 6f 6e 65 29 2e 00  |thing if none)..|
000a6ea0  44 41 54 41 6b 02 00 00  46 6f 72 6d 61 74 20 53  |DATAk...Format S|
000a6eb0  74 72 69 6e 67 20 43 6f  6e 76 65 72 73 69 6f 6e  |tring Conversion|
000a6ec0  20 53 74 72 69 6e 67 0a  4f 6e 65 20 6f 66 20 74  | String.One of t|
000a6ed0  68 65 20 66 6f 6c 6c 6f  77 69 6e 67 3a 0a 0a 43  |he following:..C|
000a6ee0  53 09 09 43 65 6e 74 69  73 65 63 6f 6e 64 73 20  |S..Centiseconds |
000a6ef0  61 73 20 61 20 64 65 63  69 6d 61 6c 20 28 30 30  |as a decimal (00|
000a6f00  2d 39 39 29 0a 53 45 09  09 53 65 63 6f 6e 64 73  |-99).SE..Seconds|
000a6f10  20 61 73 20 61 20 64 65  63 69 6d 61 6c 20 28 30  | as a decimal (0|
000a6f20  30 2d 35 39 29 0a 4d 49  09 09 4d 69 6e 75 74 65  |0-59).MI..Minute|
000a6f30  73 20 61 73 20 61 20 64  65 63 69 6d 61 6c 20 28  |s as a decimal (|
000a6f40  30 30 2d 35 39 29 0a 31  32 2c 32 34 09 09 48 6f  |00-59).12,24..Ho|
000a6f50  75 72 73 20 69 6e 20 31  32 20 6f 72 20 32 34 20  |urs in 12 or 24 |
000a6f60  68 6f 75 72 20 66 6f 72  6d 61 74 0a 41 4d 2c 50  |hour format.AM,P|
000a6f70  4d 09 09 4f 75 74 70 75  74 73 20 22 61 6d 22 20  |M..Outputs "am" |
000a6f80  6f 72 20 22 70 6d 22 20  61 73 20 61 70 70 72 6f  |or "pm" as appro|
000a6f90  70 72 69 61 74 65 0a 57  45 2c 57 33 2c 57 4e 09  |priate.WE,W3,WN.|
000a6fa0  57 65 65 6b 64 61 79 20  61 73 20 66 75 6c 6c 20  |Weekday as full |
000a6fb0  6e 61 6d 65 2c 20 33 20  6c 65 74 74 65 72 20 6e  |name, 3 letter n|
000a6fc0  61 6d 65 20 6f 72 20 6e  75 6d 62 65 72 0a 44 59  |ame or number.DY|
000a6fd0  09 09 44 61 79 20 6f 66  20 74 68 65 20 6d 6f 6e  |..Day of the mon|
000a6fe0  74 68 20 28 30 31 2d 33  31 29 0a 53 54 09 09 22  |th (01-31).ST.."|
000a6ff0  73 74 22 2c 20 22 6e 64  22 2c 20 22 72 64 22 20  |st", "nd", "rd" |
000a7000  6f 72 20 22 74 68 22 20  61 73 20 61 70 70 72 6f  |or "th" as appro|
000a7010  70 72 69 61 74 65 0a 4d  4f 2c 4d 33 2c 4d 4e 09  |priate.MO,M3,MN.|
000a7020  4d 6f 6e 74 68 20 61 73  20 66 75 6c 6c 20 6e 61  |Month as full na|
000a7030  6d 65 2c 20 33 20 6c 65  74 74 65 72 20 6e 61 6d  |me, 3 letter nam|
000a7040  65 20 6f 72 20 6e 75 6d  62 65 72 0a 43 45 09 09  |e or number.CE..|
000a7050  43 65 6e 74 75 72 79 20  6e 75 6d 62 65 72 0a 59  |Century number.Y|
000a7060  52 09 09 59 65 61 72 20  77 69 74 68 6f 75 74 20  |R..Year without |
000a7070  63 65 6e 74 75 72 79 20  28 30 30 2d 39 39 29 0a  |century (00-99).|
000a7080  57 4b 09 09 57 65 65 6b  20 6e 75 6d 62 65 72 0a  |WK..Week number.|
000a7090  44 4e 09 09 44 61 79 20  6f 66 20 74 68 65 20 79  |DN..Day of the y|
000a70a0  65 61 72 0a 30 09 09 4e  75 6c 6c 20 62 79 74 65  |ear.0..Null byte|
000a70b0  0a 0a 43 6f 6e 76 65 72  73 69 6f 6e 20 73 74 72  |..Conversion str|
000a70c0  69 6e 67 73 20 70 72 6f  64 75 63 69 6e 67 20 6e  |ings producing n|
000a70d0  75 6d 62 65 72 73 20 6d  61 79 20 62 65 20 70 72  |umbers may be pr|
000a70e0  65 66 69 78 65 64 20 77  69 74 68 20 27 5a 27 20  |efixed with 'Z' |
000a70f0  74 6f 20 73 75 70 70 72  65 73 73 20 6c 65 61 64  |to suppress lead|
000a7100  69 6e 67 20 7a 65 72 6f  65 73 2e 00 44 41 54 41  |ing zeroes..DATA|
000a7110  a3 00 00 00 74 69 6d 65  0a 53 79 6e 74 61 78 3a  |....time.Syntax:|
000a7120  09 3c 74 69 6d 65 5f 74  3e 20 74 69 6d 65 20 28  |.<time_t> time (|
000a7130  74 69 6d 65 5f 74 20 2a  74 69 6d 65 72 29 3b 0a  |time_t *timer);.|
000a7140  48 65 61 64 65 72 3a 09  3c 74 69 6d 65 2e 68 3d  |Header:.<time.h=|
000a7150  3e 74 69 6d 65 5f 68 3e  0a 0a 52 65 74 75 72 6e  |>time_h>..Return|
000a7160  73 3a 09 54 68 65 20 63  75 72 72 65 6e 74 20 63  |s:.The current c|
000a7170  61 6c 65 6e 64 61 72 20  74 69 6d 65 2e 0a 0a 54  |alendar time...T|
000a7180  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 74  |his function ret|
000a7190  75 72 6e 73 20 74 68 65  20 63 75 72 72 65 6e 74  |urns the current|
000a71a0  20 63 61 6c 65 6e 64 61  72 20 74 69 6d 65 2e 00  | calendar time..|
000a71b0  44 49 52 24 e0 01 00 00  e0 01 00 00 90 73 0a 00  |DIR$.........s..|
000a71c0  46 ff ff ff 4a 81 36 26  b9 01 00 00 13 00 00 00  |F...J.6&........|
000a71d0  00 00 00 00 43 6f 6e 76  65 72 74 44 61 74 65 41  |....ConvertDateA|
000a71e0  6e 64 54 69 6d 65 00 00  4c 75 0a 00 46 ff ff ff  |ndTime..Lu..F...|
000a71f0  3a d8 36 26 1a 01 00 00  13 00 00 00 00 00 00 00  |:.6&............|
000a7200  43 54 49 4d 45 00 00 00  68 76 0a 00 46 ff ff ff  |CTIME...hv..F...|
000a7210  c4 10 37 26 02 01 00 00  13 00 00 00 00 00 00 00  |..7&............|
000a7220  45 55 52 4f 54 49 4d 45  00 00 00 00 6c 77 0a 00  |EUROTIME....lw..|
000a7230  46 ff ff ff 4f f2 36 26  1c 01 00 00 13 00 00 00  |F...O.6&........|
000a7240  00 00 00 00 46 41 4e 43  59 44 41 54 45 00 00 00  |....FANCYDATE...|
000a7250  88 78 0a 00 46 fd ff ff  0a 5f bc 22 93 01 00 00  |.x..F...._."....|
000a7260  13 00 00 00 00 00 00 00  68 00 00 00 1c 7a 0a 00  |........h....z..|
000a7270  46 ff ff ff a6 08 37 26  07 01 00 00 13 00 00 00  |F.....7&........|
000a7280  00 00 00 00 4c 4f 4e 47  54 49 4d 45 00 00 00 00  |....LONGTIME....|
000a7290  24 7b 0a 00 46 ff ff ff  6c 77 36 26 b6 01 00 00  |${..F...lw6&....|
000a72a0  13 00 00 00 00 00 00 00  4d 6f 6e 6f 74 6f 6e 69  |........Monotoni|
000a72b0  63 00 00 00 dc 7c 0a 00  46 ff ff ff 19 4d 58 26  |c....|..F....MX&|
000a72c0  e7 00 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |............Read|
000a72d0  4d 6f 6e 6f 74 6f 6e 69  63 00 00 00 c4 7d 0a 00  |Monotonic....}..|
000a72e0  46 ff ff ff 60 00 37 26  01 01 00 00 13 00 00 00  |F...`.7&........|
000a72f0  00 00 00 00 53 48 4f 52  54 54 49 4d 45 00 00 00  |....SHORTTIME...|
000a7300  c8 7e 0a 00 46 ff ff ff  a9 e4 36 26 14 01 00 00  |.~..F.....6&....|
000a7310  13 00 00 00 00 00 00 00  53 54 41 4e 44 41 52 44  |........STANDARD|
000a7320  00 00 00 00 dc 7f 0a 00  46 ff ff ff 16 52 e2 22  |........F....R."|
000a7330  0c 01 00 00 13 00 00 00  00 00 00 00 74 00 00 00  |............t...|
000a7340  e8 80 0a 00 46 fd ff ff  0a 45 58 26 59 00 00 00  |....F....EX&Y...|
000a7350  13 00 00 00 00 00 00 00  54 4c 00 00 44 81 0a 00  |........TL..D...|
000a7360  46 ff ff ff a8 c4 36 26  c9 01 00 00 13 00 00 00  |F.....6&........|
000a7370  00 00 00 00 43 6f 6e 76  65 72 74 53 74 61 6e 64  |....ConvertStand|
000a7380  61 72 64 44 61 74 65 41  6e 64 54 69 6d 65 00 00  |ardDateAndTime..|
000a7390  44 41 54 41 b9 01 00 00  54 69 6d 65 5f 43 6f 6e  |DATA....Time_Con|
000a73a0  76 65 72 74 44 61 74 65  41 6e 64 54 69 6d 65 0a  |vertDateAndTime.|
000a73b0  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
000a73c0  72 3e 20 2a 54 69 6d 65  5f 43 6f 6e 76 65 72 74  |r> *Time_Convert|
000a73d0  44 61 74 65 41 6e 64 54  69 6d 65 20 28 63 68 61  |DateAndTime (cha|
000a73e0  72 20 2a 62 6c 6f 63 6b  2c 20 63 68 61 72 20 2a  |r *block, char *|
000a73f0  62 75 66 66 65 72 2c 20  69 6e 74 20 6c 65 6e 2c  |buffer, int len,|
000a7400  20 63 68 61 72 20 2a 66  6f 72 6d 61 74 29 3b 0a  | char *format);.|
000a7410  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
000a7420  3a 54 69 6d 65 2e 68 3d  3e 44 4c 5f 54 69 6d 65  |:Time.h=>DL_Time|
000a7430  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000a7440  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000a7450  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000a7460  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000a7470  77 72 69 74 65 73 20 74  68 65 20 66 69 76 65 2d  |writes the five-|
000a7480  62 79 74 65 20 74 69 6d  65 20 28 63 65 6e 74 69  |byte time (centi|
000a7490  73 65 63 6f 6e 64 73 20  73 69 6e 63 65 20 31 39  |seconds since 19|
000a74a0  30 30 29 20 69 6e 20 2f  62 6c 6f 63 6b 2f 20 74  |00) in /block/ t|
000a74b0  6f 20 74 68 65 20 63 68  61 72 61 63 74 65 72 20  |o the character |
000a74c0  61 72 72 61 79 20 70 6f  69 6e 74 65 64 20 74 6f  |array pointed to|
000a74d0  20 62 79 20 2f 62 75 66  66 65 72 2f 20 75 6e 64  | by /buffer/ und|
000a74e0  65 72 20 63 6f 6e 74 72  6f 6c 20 6f 66 20 74 68  |er control of th|
000a74f0  65 20 3c 66 6f 72 6d 61  74 20 73 74 72 69 6e 67  |e <format string|
000a7500  3d 3e 74 66 6f 72 6d 5f  5f 3e 2e 0a 0a 4e 6f 20  |=>tform__>...No |
000a7510  6d 6f 72 65 20 74 68 61  6e 20 2f 6c 65 6e 2f 20  |more than /len/ |
000a7520  63 68 61 72 61 63 74 65  72 73 20 77 69 6c 6c 20  |characters will |
000a7530  62 65 20 77 72 69 74 74  65 6e 20 74 6f 20 74 68  |be written to th|
000a7540  65 20 73 74 72 69 6e 67  2e 00 00 00 44 41 54 41  |e string....DATA|
000a7550  1a 01 00 00 54 69 6d 65  5f 43 54 49 4d 45 0a 54  |....Time_CTIME.T|
000a7560  68 69 73 20 6d 61 63 72  6f 20 69 73 20 64 65 66  |his macro is def|
000a7570  69 6e 65 64 20 69 6e 20  3c 44 65 73 6b 4c 69 62  |ined in <DeskLib|
000a7580  3a 54 69 6d 65 2e 68 3d  3e 44 4c 5f 54 69 6d 65  |:Time.h=>DL_Time|
000a7590  3e 20 66 6f 72 20 75 73  65 20 77 69 74 68 20 74  |> for use with t|
000a75a0  68 65 20 3c 54 69 6d 65  5f 43 6f 6e 76 65 72 74  |he <Time_Convert|
000a75b0  44 61 74 65 41 6e 64 54  69 6d 65 3e 20 66 75 6e  |DateAndTime> fun|
000a75c0  63 74 69 6f 6e 2e 20 49  74 20 70 72 6f 64 75 63  |ction. It produc|
000a75d0  65 73 20 74 69 6d 65 73  20 6f 66 20 74 68 65 20  |es times of the |
000a75e0  66 6f 72 6d 3a 0a 0a 7b  66 43 6f 64 65 3b 61 6c  |form:..{fCode;al|
000a75f0  69 67 6e 20 63 65 6e 74  72 65 7d 46 72 69 20 4a  |ign centre}Fri J|
000a7600  75 6c 20 31 35 20 31 36  3a 35 32 3a 30 30 20 31  |ul 15 16:52:00 1|
000a7610  39 39 34 7b 66 3b 61 6c  69 67 6e 7d 0a 0a 49 74  |994{f;align}..It|
000a7620  20 69 73 20 64 65 66 69  6e 65 64 20 61 73 3a 0a  | is defined as:.|
000a7630  0a 7b 66 43 6f 64 65 3b  61 6c 69 67 6e 20 63 65  |.{fCode;align ce|
000a7640  6e 74 72 65 7d 22 25 57  33 20 25 4d 33 20 25 44  |ntre}"%W3 %M3 %D|
000a7650  59 20 25 7a 32 34 3a 25  4d 49 3a 25 53 45 20 25  |Y %z24:%MI:%SE %|
000a7660  43 45 25 59 52 22 00 00  44 41 54 41 02 01 00 00  |CE%YR"..DATA....|
000a7670  54 69 6d 65 5f 45 55 52  4f 54 49 4d 45 0a 54 68  |Time_EUROTIME.Th|
000a7680  69 73 20 6d 61 63 72 6f  20 69 73 20 64 65 66 69  |is macro is defi|
000a7690  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
000a76a0  54 69 6d 65 2e 68 3d 3e  44 4c 5f 54 69 6d 65 3e  |Time.h=>DL_Time>|
000a76b0  20 66 6f 72 20 75 73 65  20 77 69 74 68 20 74 68  | for use with th|
000a76c0  65 20 3c 54 69 6d 65 5f  43 6f 6e 76 65 72 74 44  |e <Time_ConvertD|
000a76d0  61 74 65 41 6e 64 54 69  6d 65 3e 20 66 75 6e 63  |ateAndTime> func|
000a76e0  74 69 6f 6e 2e 20 49 74  20 70 72 6f 64 75 63 65  |tion. It produce|
000a76f0  73 20 74 69 6d 65 73 20  6f 66 20 74 68 65 20 66  |s times of the f|
000a7700  6f 72 6d 3a 0a 0a 7b 66  43 6f 64 65 3b 61 6c 69  |orm:..{fCode;ali|
000a7710  67 6e 20 63 65 6e 74 72  65 7d 31 36 3a 35 32 3a  |gn centre}16:52:|
000a7720  30 30 7b 66 3b 61 6c 69  67 6e 7d 0a 0a 49 74 20  |00{f;align}..It |
000a7730  69 73 20 64 65 66 69 6e  65 64 20 61 73 3a 0a 0a  |is defined as:..|
000a7740  7b 66 43 6f 64 65 3b 61  6c 69 67 6e 20 63 65 6e  |{fCode;align cen|
000a7750  74 72 65 7d 22 7a 32 34  3a 25 4d 49 3a 25 53 45  |tre}"z24:%MI:%SE|
000a7760  22 7b 66 3b 61 6c 69 67  6e 7d 00 00 44 41 54 41  |"{f;align}..DATA|
000a7770  1c 01 00 00 54 69 6d 65  5f 46 41 4e 43 59 44 41  |....Time_FANCYDA|
000a7780  54 45 0a 54 68 69 73 20  6d 61 63 72 6f 20 69 73  |TE.This macro is|
000a7790  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 44 65 73  | defined in <Des|
000a77a0  6b 4c 69 62 3a 54 69 6d  65 2e 68 3d 3e 44 4c 5f  |kLib:Time.h=>DL_|
000a77b0  54 69 6d 65 3e 20 66 6f  72 20 75 73 65 20 77 69  |Time> for use wi|
000a77c0  74 68 20 74 68 65 20 3c  54 69 6d 65 5f 43 6f 6e  |th the <Time_Con|
000a77d0  76 65 72 74 44 61 74 65  41 6e 64 54 69 6d 65 3e  |vertDateAndTime>|
000a77e0  20 66 75 6e 63 74 69 6f  6e 2e 20 49 74 20 70 72  | function. It pr|
000a77f0  6f 64 75 63 65 73 20 74  69 6d 65 73 20 6f 66 20  |oduces times of |
000a7800  74 68 65 20 66 6f 72 6d  3a 0a 0a 7b 66 43 6f 64  |the form:..{fCod|
000a7810  65 3b 61 6c 69 67 6e 20  63 65 6e 74 72 65 7d 46  |e;align centre}F|
000a7820  72 69 64 61 79 2c 20 31  36 74 68 20 6f 66 20 4a  |riday, 16th of J|
000a7830  75 6c 79 2c 20 31 39 39  34 7b 66 3b 61 6c 69 67  |uly, 1994{f;alig|
000a7840  6e 7d 0a 0a 49 74 20 69  73 20 64 65 66 69 6e 65  |n}..It is define|
000a7850  64 20 61 73 3a 0a 0a 7b  66 43 6f 64 65 3b 61 6c  |d as:..{fCode;al|
000a7860  69 67 6e 20 63 65 6e 74  72 65 7d 22 25 57 45 2c  |ign centre}"%WE,|
000a7870  20 25 7a 44 59 25 53 54  20 6f 66 20 25 4d 4f 2c  | %zDY%ST of %MO,|
000a7880  20 25 43 45 25 59 52 22  44 41 54 41 93 01 00 00  | %CE%YR"DATA....|
000a7890  74 69 6d 65 2e 68 0a 54  68 65 20 5c 3c 74 69 6d  |time.h.The \<tim|
000a78a0  65 2e 68 3e 20 68 65 61  64 65 72 20 64 65 63 6c  |e.h> header decl|
000a78b0  61 72 65 73 20 61 20 6e  75 6d 62 65 72 20 6f 66  |ares a number of|
000a78c0  20 66 75 6e 63 74 69 6f  6e 73 20 72 65 6c 61 74  | functions relat|
000a78d0  69 6e 67 20 74 6f 20 72  65 61 64 69 6e 67 20 74  |ing to reading t|
000a78e0  68 65 20 73 79 73 74 65  6d 20 64 61 74 65 20 61  |he system date a|
000a78f0  6e 64 20 74 69 6d 65 2e  20 49 74 20 61 6c 73 6f  |nd time. It also|
000a7900  20 64 65 66 69 6e 65 73  20 6f 6e 65 20 6d 61 63  | defines one mac|
000a7910  72 6f 20 61 6e 64 20 74  68 72 65 65 20 74 79 70  |ro and three typ|
000a7920  65 73 2e 0a 0a 46 75 6e  63 74 69 6f 6e 73 3a 0a  |es...Functions:.|
000a7930  0a 23 49 6e 64 65 6e 74  20 34 0a 23 54 61 62 6c  |.#Indent 4.#Tabl|
000a7940  65 20 63 6f 6c 75 6d 6e  73 20 35 0a 3c 61 73 63  |e columns 5.<asc|
000a7950  74 69 6d 65 3e 0a 3c 63  6c 6f 63 6b 3e 0a 3c 63  |time>.<clock>.<c|
000a7960  74 69 6d 65 3e 0a 3c 64  69 66 66 74 69 6d 65 3e  |time>.<difftime>|
000a7970  0a 3c 67 6d 74 69 6d 65  3e 0a 3c 6c 6f 63 61 6c  |.<gmtime>.<local|
000a7980  74 69 6d 65 3e 0a 3c 6d  6b 74 69 6d 65 3e 0a 3c  |time>.<mktime>.<|
000a7990  73 74 72 66 74 69 6d 65  3e 0a 3c 74 69 6d 65 3e  |strftime>.<time>|
000a79a0  0a 23 45 6e 64 54 61 62  6c 65 0a 0a 0a 23 69 6e  |.#EndTable...#in|
000a79b0  64 65 6e 74 20 30 0a 4d  61 63 72 6f 3a 0a 0a 20  |dent 0.Macro:.. |
000a79c0  20 20 20 3c 43 4c 4f 43  4b 53 5f 50 45 52 5f 53  |   <CLOCKS_PER_S|
000a79d0  45 43 3e 0a 0a 54 79 70  65 73 3a 0a 0a 23 49 6e  |EC>..Types:..#In|
000a79e0  64 65 6e 74 20 34 0a 23  54 61 62 6c 65 20 31 20  |dent 4.#Table 1 |
000a79f0  31 35 0a 3c 63 6c 6f 63  6b 5f 74 3e 0a 3c 74 69  |15.<clock_t>.<ti|
000a7a00  6d 65 5f 74 3e 0a 3c 73  74 72 75 63 74 a0 74 6d  |me_t>.<struct.tm|
000a7a10  3e 0a 23 45 6e 64 54 61  62 6c 65 00 44 41 54 41  |>.#EndTable.DATA|
000a7a20  07 01 00 00 54 69 6d 65  5f 4c 4f 4e 47 54 49 4d  |....Time_LONGTIM|
000a7a30  45 0a 54 68 69 73 20 6d  61 63 72 6f 20 69 73 20  |E.This macro is |
000a7a40  64 65 66 69 6e 65 64 20  69 6e 20 3c 44 65 73 6b  |defined in <Desk|
000a7a50  4c 69 62 3a 54 69 6d 65  2e 68 3d 3e 44 4c 5f 54  |Lib:Time.h=>DL_T|
000a7a60  69 6d 65 3e 20 66 6f 72  20 75 73 65 20 77 69 74  |ime> for use wit|
000a7a70  68 20 74 68 65 20 3c 54  69 6d 65 5f 43 6f 6e 76  |h the <Time_Conv|
000a7a80  65 72 74 44 61 74 65 41  6e 64 54 69 6d 65 3e 20  |ertDateAndTime> |
000a7a90  66 75 6e 63 74 69 6f 6e  2e 20 49 74 20 70 72 6f  |function. It pro|
000a7aa0  64 75 63 65 73 20 74 69  6d 65 73 20 6f 66 20 74  |duces times of t|
000a7ab0  68 65 20 66 6f 72 6d 3a  0a 0a 7b 66 43 6f 64 65  |he form:..{fCode|
000a7ac0  3b 61 6c 69 67 6e 20 63  65 6e 74 72 65 7d 34 3a  |;align centre}4:|
000a7ad0  35 32 3a 30 30 70 6d 7b  66 3b 61 6c 69 67 6e 7d  |52:00pm{f;align}|
000a7ae0  0a 0a 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |..It is defined |
000a7af0  61 73 3a 0a 0a 7b 66 43  6f 64 65 3b 61 6c 69 67  |as:..{fCode;alig|
000a7b00  6e 20 63 65 6e 74 72 65  7d 22 25 7a 31 32 3a 25  |n centre}"%z12:%|
000a7b10  4d 49 3a 25 53 45 25 70  6d 22 7b 66 3b 61 6c 69  |MI:%SE%pm"{f;ali|
000a7b20  67 6e 7d 00 44 41 54 41  b6 01 00 00 54 69 6d 65  |gn}.DATA....Time|
000a7b30  5f 4d 6f 6e 6f 74 6f 6e  69 63 0a 53 79 6e 74 61  |_Monotonic.Synta|
000a7b40  78 3a 09 69 6e 74 20 54  69 6d 65 5f 4d 6f 6e 6f  |x:.int Time_Mono|
000a7b50  74 6f 6e 69 63 20 28 76  6f 69 64 29 3b 0a 48 65  |tonic (void);.He|
000a7b60  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 54  |ader:.<DeskLib:T|
000a7b70  69 6d 65 2e 68 3d 3e 44  4c 5f 54 69 6d 65 3e 0a  |ime.h=>DL_Time>.|
000a7b80  0a 52 65 74 75 72 6e 73  3a 09 54 69 6d 65 20 73  |.Returns:.Time s|
000a7b90  69 6e 63 65 20 70 6f 77  65 72 2d 6f 6e 2c 20 69  |ince power-on, i|
000a7ba0  6e 20 63 65 6e 74 69 73  65 63 6f 6e 64 73 2e 0a  |n centiseconds..|
000a7bb0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
000a7bc0  65 74 75 72 6e 73 20 61  6e 20 69 6e 74 65 67 65  |eturns an intege|
000a7bd0  72 20 72 65 70 72 65 73  65 6e 74 69 6e 67 20 74  |r representing t|
000a7be0  68 65 20 74 69 6d 65 20  73 69 6e 63 65 20 74 68  |he time since th|
000a7bf0  65 20 63 6f 6d 70 75 74  65 72 20 77 61 73 20 73  |e computer was s|
000a7c00  77 69 74 63 68 65 64 20  6f 6e 2c 20 69 6e 20 63  |witched on, in c|
000a7c10  65 6e 74 69 73 65 63 6f  6e 64 73 2e 20 54 68 69  |entiseconds. Thi|
000a7c20  73 20 69 73 20 65 71 75  69 76 61 6c 65 6e 74 20  |s is equivalent |
000a7c30  74 6f 20 3c 54 49 4d 45  3d 3e 42 61 73 69 63 3a  |to <TIME=>Basic:|
000a7c40  54 49 4d 45 3e 20 69 6e  20 42 61 73 69 63 2c 20  |TIME> in Basic, |
000a7c50  6f 72 20 74 68 65 20 53  57 49 20 3c 4f 53 5f 52  |or the SWI <OS_R|
000a7c60  65 61 64 4d 6f 6e 6f 74  6f 6e 69 63 54 69 6d 65  |eadMonotonicTime|
000a7c70  3d 3e 53 57 49 3a 4f 53  5f 52 65 61 64 4d 6f 6e  |=>SWI:OS_ReadMon|
000a7c80  6f 74 6f 6e 69 63 54 69  6d 65 3e 2e 20 54 68 65  |otonicTime>. The|
000a7c90  20 74 69 6d 65 20 77 72  61 70 73 20 61 72 6f 75  | time wraps arou|
000a7ca0  6e 64 20 61 62 6f 75 74  20 65 76 65 72 79 20 31  |nd about every 1|
000a7cb0  36 20 6d 6f 6e 74 68 73  2c 20 73 6f 20 74 68 69  |6 months, so thi|
000a7cc0  73 20 73 68 6f 75 6c 64  20 6e 6f 74 20 62 65 20  |s should not be |
000a7cd0  61 20 70 72 6f 62 6c 65  6d 21 00 00 44 41 54 41  |a problem!..DATA|
000a7ce0  e7 00 00 00 54 69 6d 65  5f 52 65 61 64 4d 6f 6e  |....Time_ReadMon|
000a7cf0  6f 74 6f 6e 69 63 0a 53  79 6e 74 61 78 3a 09 54  |otonic.Syntax:.T|
000a7d00  69 6d 65 5f 52 65 61 64  4d 6f 6e 6f 74 6f 6e 69  |ime_ReadMonotoni|
000a7d10  63 20 28 75 6e 73 69 67  6e 65 64 20 2a 74 69 6d  |c (unsigned *tim|
000a7d20  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 54 69 6d  |e);.Header:.<Tim|
000a7d30  73 4c 69 62 3a 54 69 6d  65 2e 68 3d 3e 54 69 6d  |sLib:Time.h=>Tim|
000a7d40  65 5f 54 4c 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |e_TL>..This func|
000a7d50  74 69 6f 6e 2d 6c 69 6b  65 20 6d 61 63 72 6f 20  |tion-like macro |
000a7d60  63 61 6c 6c 73 20 74 68  65 20 53 57 49 20 3c 4f  |calls the SWI <O|
000a7d70  53 5f 52 65 61 64 4d 6f  6e 6f 74 6f 6e 69 63 54  |S_ReadMonotonicT|
000a7d80  69 6d 65 3d 3e 53 57 49  3a 4f 53 5f 52 65 61 64  |ime=>SWI:OS_Read|
000a7d90  4d 6f 6e 6f 74 6f 6e 69  63 54 69 6d 65 3e 20 61  |MonotonicTime> a|
000a7da0  6e 64 20 72 65 74 75 72  6e 73 20 74 68 65 20 74  |nd returns the t|
000a7db0  69 6d 65 20 69 6e 20 7b  2f 7d 2a 74 69 6d 65 7b  |ime in {/}*time{|
000a7dc0  2f 7d 2e 00 44 41 54 41  01 01 00 00 54 69 6d 65  |/}..DATA....Time|
000a7dd0  5f 53 48 4f 52 54 54 49  4d 45 0a 54 68 69 73 20  |_SHORTTIME.This |
000a7de0  6d 61 63 72 6f 20 69 73  20 64 65 66 69 6e 65 64  |macro is defined|
000a7df0  20 69 6e 20 3c 44 65 73  6b 4c 69 62 3a 54 69 6d  | in <DeskLib:Tim|
000a7e00  65 2e 68 3d 3e 44 4c 5f  54 69 6d 65 3e 20 66 6f  |e.h=>DL_Time> fo|
000a7e10  72 20 75 73 65 20 77 69  74 68 20 74 68 65 20 3c  |r use with the <|
000a7e20  54 69 6d 65 5f 43 6f 6e  76 65 72 74 44 61 74 65  |Time_ConvertDate|
000a7e30  41 6e 64 54 69 6d 65 3e  20 66 75 6e 63 74 69 6f  |AndTime> functio|
000a7e40  6e 2e 20 49 74 20 70 72  6f 64 75 63 65 73 20 74  |n. It produces t|
000a7e50  69 6d 65 73 20 6f 66 20  74 68 65 20 66 6f 72 6d  |imes of the form|
000a7e60  3a 0a 0a 7b 66 43 6f 64  65 3b 61 6c 69 67 6e 20  |:..{fCode;align |
000a7e70  63 65 6e 74 72 65 7d 34  3a 35 32 70 6d 7b 66 3b  |centre}4:52pm{f;|
000a7e80  61 6c 69 67 6e 7d 0a 0a  49 74 20 69 73 20 64 65  |align}..It is de|
000a7e90  66 69 6e 65 64 20 61 73  3a 0a 0a 7b 66 43 6f 64  |fined as:..{fCod|
000a7ea0  65 3b 61 6c 69 67 6e 20  63 65 6e 74 72 65 7d 22  |e;align centre}"|
000a7eb0  25 7a 31 32 3a 25 4d 49  25 70 6d 22 7b 66 3b 61  |%z12:%MI%pm"{f;a|
000a7ec0  6c 69 67 6e 7d 00 00 00  44 41 54 41 14 01 00 00  |lign}...DATA....|
000a7ed0  54 69 6d 65 5f 53 54 41  4e 44 41 52 44 0a 54 68  |Time_STANDARD.Th|
000a7ee0  69 73 20 6d 61 63 72 6f  20 69 73 20 64 65 66 69  |is macro is defi|
000a7ef0  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
000a7f00  54 69 6d 65 2e 68 3d 3e  44 4c 5f 54 69 6d 65 3e  |Time.h=>DL_Time>|
000a7f10  20 66 6f 72 20 75 73 65  20 77 69 74 68 20 74 68  | for use with th|
000a7f20  65 20 3c 54 69 6d 65 5f  43 6f 6e 76 65 72 74 44  |e <Time_ConvertD|
000a7f30  61 74 65 41 6e 64 54 69  6d 65 3e 20 66 75 6e 63  |ateAndTime> func|
000a7f40  74 69 6f 6e 2e 20 49 74  20 70 72 6f 64 75 63 65  |tion. It produce|
000a7f50  73 20 74 69 6d 65 73 20  6f 66 20 74 68 65 20 66  |s times of the f|
000a7f60  6f 72 6d 3a 0a 0a 7b 66  43 6f 64 65 3b 61 6c 69  |orm:..{fCode;ali|
000a7f70  67 6e 20 63 65 6e 74 72  65 7d 31 36 3a 35 32 3a  |gn centre}16:52:|
000a7f80  30 30 20 31 35 2d 4a 75  6c 2d 31 39 39 34 7b 66  |00 15-Jul-1994{f|
000a7f90  3b 61 6c 69 67 6e 7d 0a  0a 49 74 20 69 73 20 64  |;align}..It is d|
000a7fa0  65 66 69 6e 65 64 20 61  73 3a 0a 0a 7b 66 43 6f  |efined as:..{fCo|
000a7fb0  64 65 3b 61 6c 69 67 6e  20 63 65 6e 74 72 65 7d  |de;align centre}|
000a7fc0  22 25 32 34 3a 25 6d 69  3a 25 73 65 20 25 64 79  |"%24:%mi:%se %dy|
000a7fd0  2d 25 6d 33 2d 25 63 65  25 79 72 22 44 41 54 41  |-%m3-%ce%yr"DATA|
000a7fe0  0c 01 00 00 74 69 6d 65  5f 74 0a 54 68 65 20 74  |....time_t.The t|
000a7ff0  79 70 65 20 7b 2f 7d 74  69 6d 65 5f 74 7b 2f 7d  |ype {/}time_t{/}|
000a8000  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
000a8010  74 69 6d 65 2e 68 3d 3e  74 69 6d 65 5f 68 3e 20  |time.h=>time_h> |
000a8020  61 73 20 61 6e 20 6f 62  6a 65 63 74 20 63 61 70  |as an object cap|
000a8030  61 62 6c 65 20 6f 66 20  68 6f 6c 64 69 6e 67 20  |able of holding |
000a8040  61 6e 79 20 67 69 76 65  6e 20 63 61 6c 65 6e 64  |any given calend|
000a8050  61 72 20 74 69 6d 65 20  76 61 6c 75 65 2e 20 54  |ar time value. T|
000a8060  68 65 20 63 61 6c 65 6e  64 61 72 20 74 69 6d 65  |he calendar time|
000a8070  20 76 61 6c 75 65 20 69  73 20 69 6e 20 66 61 63  | value is in fac|
000a8080  74 20 74 68 65 20 6e 75  6d 62 65 72 20 6f 66 20  |t the number of |
000a8090  55 6e 69 78 20 73 65 63  6f 6e 64 73 20 73 69 6e  |Unix seconds sin|
000a80a0  63 65 20 31 2f 31 2f 31  39 37 30 2e 20 49 6e 20  |ce 1/1/1970. In |
000a80b0  45 61 73 79 20 43 20 61  6e 64 20 44 65 73 6b 74  |Easy C and Deskt|
000a80c0  6f 70 20 43 20 69 74 20  69 73 20 64 65 66 69 6e  |op C it is defin|
000a80d0  65 64 20 61 73 20 61 6e  20 2f 75 6e 73 69 67 6e  |ed as an /unsign|
000a80e0  65 64 20 69 6e 74 2f 2e  44 41 54 41 59 00 00 00  |ed int/.DATAY...|
000a80f0  54 69 6d 73 4c 69 62 3a  54 69 6d 65 2e 68 0a 54  |TimsLib:Time.h.T|
000a8100  68 69 73 20 68 65 61 64  65 72 20 64 65 66 69 6e  |his header defin|
000a8110  65 73 20 6f 6e 65 20 66  75 6e 63 74 69 6f 6e 2d  |es one function-|
000a8120  6c 69 6b 65 20 6d 61 63  72 6f 2c 20 3c 54 69 6d  |like macro, <Tim|
000a8130  65 5f 52 65 61 64 4d 6f  6e 6f 74 6f 6e 69 63 3e  |e_ReadMonotonic>|
000a8140  2e 00 00 00 44 41 54 41  c9 01 00 00 54 69 6d 65  |....DATA....Time|
000a8150  5f 43 6f 6e 76 65 72 74  53 74 61 6e 64 61 72 64  |_ConvertStandard|
000a8160  44 61 74 65 41 6e 64 54  69 6d 65 0a 53 79 6e 74  |DateAndTime.Synt|
000a8170  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
000a8180  54 69 6d 65 5f 43 6f 6e  76 65 72 74 53 74 61 6e  |Time_ConvertStan|
000a8190  64 61 72 64 44 61 74 65  41 6e 64 54 69 6d 65 20  |dardDateAndTime |
000a81a0  28 63 68 61 72 20 2a 62  6c 6f 63 6b 2c 20 63 68  |(char *block, ch|
000a81b0  61 72 20 2a 62 75 66 66  65 72 2c 20 69 6e 74 20  |ar *buffer, int |
000a81c0  6c 65 6e 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |len);.Header:.<D|
000a81d0  65 73 6b 4c 69 62 3a 54  69 6d 65 2e 68 3d 3e 44  |eskLib:Time.h=>D|
000a81e0  4c 5f 54 69 6d 65 3e 0a  0a 52 65 74 75 72 6e 73  |L_Time>..Returns|
000a81f0  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
000a8200  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
000a8210  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
000a8220  63 74 69 6f 6e 20 77 72  69 74 65 73 20 74 68 65  |ction writes the|
000a8230  20 66 69 76 65 2d 62 79  74 65 20 74 69 6d 65 20  | five-byte time |
000a8240  28 63 65 6e 74 69 73 65  63 6f 6e 64 73 20 73 69  |(centiseconds si|
000a8250  6e 63 65 20 31 39 30 30  29 20 69 6e 20 2f 62 6c  |nce 1900) in /bl|
000a8260  6f 63 6b 2f 20 74 6f 20  74 68 65 20 63 68 61 72  |ock/ to the char|
000a8270  61 63 74 65 72 20 61 72  72 61 79 20 70 6f 69 6e  |acter array poin|
000a8280  74 65 64 20 74 6f 20 62  79 20 2f 62 75 66 66 65  |ted to by /buffe|
000a8290  72 2f 20 75 73 69 6e 67  20 74 68 65 20 3c 66 6f  |r/ using the <fo|
000a82a0  72 6d 61 74 20 73 74 72  69 6e 67 3d 3e 54 66 6f  |rmat string=>Tfo|
000a82b0  72 6d 5f 5f 3e 20 73 74  6f 72 65 64 20 69 6e 20  |rm__> stored in |
000a82c0  53 79 73 24 44 61 74 65  46 6f 72 6d 61 74 2e 0a  |Sys$DateFormat..|
000a82d0  0a 4e 6f 20 6d 6f 72 65  20 74 68 61 6e 20 2f 6c  |.No more than /l|
000a82e0  65 6e 2f 20 63 68 61 72  61 63 74 65 72 73 20 77  |en/ characters w|
000a82f0  69 6c 6c 20 62 65 20 77  72 69 74 74 65 6e 20 74  |ill be written t|
000a8300  6f 20 74 68 65 20 73 74  72 69 6e 67 2e 00 00 00  |o the string....|
000a8310  44 41 54 41 7f 01 00 00  74 6d 70 66 69 6c 65 0a  |DATA....tmpfile.|
000a8320  53 79 6e 74 61 78 3a 09  3c 46 49 4c 45 3e 20 2a  |Syntax:.<FILE> *|
000a8330  74 6d 70 66 69 6c 65 20  28 76 6f 69 64 29 3b 0a  |tmpfile (void);.|
000a8340  48 65 61 64 65 72 3a 09  3c 73 74 64 69 6f 2e 68  |Header:.<stdio.h|
000a8350  3d 3e 73 74 64 69 6f 3e  0a 0a 52 65 74 75 72 6e  |=>stdio>..Return|
000a8360  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 74 68  |s:.Pointer to th|
000a8370  65 20 66 69 6c 65 20 73  74 72 65 61 6d 2e 0a 0a  |e file stream...|
000a8380  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 63 72  |This function cr|
000a8390  65 61 74 65 73 20 61 20  74 65 6d 70 6f 72 61 72  |eates a temporar|
000a83a0  79 20 66 69 6c 65 20 77  68 69 63 68 20 77 69 6c  |y file which wil|
000a83b0  6c 20 62 65 20 61 75 74  6f 6d 61 74 69 63 61 6c  |l be automatical|
000a83c0  6c 79 20 64 65 6c 65 74  65 64 20 6f 6e 20 63 6c  |ly deleted on cl|
000a83d0  6f 73 75 72 65 20 6f 72  20 77 68 65 6e 20 74 68  |osure or when th|
000a83e0  65 20 70 72 6f 67 72 61  6d 20 66 69 6e 69 73 68  |e program finish|
000a83f0  65 73 20 6e 6f 72 6d 61  6c 6c 79 20 28 62 75 74  |es normally (but|
000a8400  20 6e 6f 74 20 6e 65 63  65 73 73 61 72 69 6c 79  | not necessarily|
000a8410  20 75 70 6f 6e 20 61 62  6e 6f 72 6d 61 6c 20 74  | upon abnormal t|
000a8420  65 72 6d 69 6e 61 74 69  6f 6e 29 2e 20 49 74 20  |ermination). It |
000a8430  69 73 20 6f 70 65 6e 65  64 20 77 69 74 68 20 3c  |is opened with <|
000a8440  94 77 62 2b 95 20 6d 6f  64 65 3d 3e 66 69 6c 65  |.wb+. mode=>file|
000a8450  5f 6d 6f 64 65 5f 3e 2e  20 49 66 20 74 68 65 20  |_mode_>. If the |
000a8460  66 69 6c 65 20 63 61 6e  6e 6f 74 20 62 65 20 63  |file cannot be c|
000a8470  72 65 61 74 65 64 20 74  68 65 6e 20 3c 4e 55 4c  |reated then <NUL|
000a8480  4c 3e 20 69 73 20 72 65  74 75 72 6e 65 64 2e 00  |L> is returned..|
000a8490  44 41 54 41 cd 01 00 00  74 6d 70 6e 61 6d 0a 53  |DATA....tmpnam.S|
000a84a0  79 6e 74 61 78 3a 09 63  68 61 72 20 2a 74 6d 70  |yntax:.char *tmp|
000a84b0  6e 61 6d 20 28 63 68 61  72 20 2a 6e 61 6d 65 29  |nam (char *name)|
000a84c0  3b 0a 48 65 61 64 65 72  3a 09 3c 73 74 64 69 6f  |;.Header:.<stdio|
000a84d0  2e 68 3d 3e 73 74 64 69  6f 3e 0a 0a 52 65 74 75  |.h=>stdio>..Retu|
000a84e0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000a84f0  66 69 6c 65 6e 61 6d 65  2e 0a 0a 54 68 65 20 66  |filename...The f|
000a8500  75 6e 63 74 69 6f 6e 20  67 65 6e 65 72 61 74 65  |unction generate|
000a8510  73 20 61 20 6f 72 69 67  69 6e 61 6c 20 28 69 65  |s a original (ie|
000a8520  20 6e 6f 74 20 75 73 65  64 20 66 6f 72 20 61 6e  | not used for an|
000a8530  20 65 78 69 73 69 74 69  6e 67 20 66 69 6c 65 29  | exisiting file)|
000a8540  20 66 69 6c 65 6e 61 6d  65 2e 20 49 74 20 77 69  | filename. It wi|
000a8550  6c 6c 20 67 65 6e 65 72  61 74 65 20 75 70 20 74  |ll generate up t|
000a8560  6f 20 3c 54 4d 50 5f 4d  41 58 3e 20 75 6e 69 71  |o <TMP_MAX> uniq|
000a8570  75 65 20 6e 61 6d 65 73  2e 20 49 66 20 2f 6e 61  |ue names. If /na|
000a8580  6d 65 2f 20 70 6f 69 6e  74 73 20 74 6f 20 61 6e  |me/ points to an|
000a8590  20 61 72 72 61 79 20 74  68 65 6e 20 74 68 65 20  | array then the |
000a85a0  6e 61 6d 65 20 69 73 20  63 6f 70 69 65 64 20 69  |name is copied i|
000a85b0  6e 74 6f 20 74 68 69 73  20 61 72 72 61 79 20 28  |nto this array (|
000a85c0  77 68 69 63 68 20 73 68  6f 75 6c 64 20 68 61 76  |which should hav|
000a85d0  65 20 6c 65 6e 67 74 68  20 6f 66 20 61 74 20 6c  |e length of at l|
000a85e0  65 61 73 74 20 3c 4c 5f  74 6d 70 6e 61 6d 3e 29  |east <L_tmpnam>)|
000a85f0  2e 20 49 66 20 2f 6e 61  6d 65 2f 20 69 73 20 61  |. If /name/ is a|
000a8600  20 6e 75 6c 6c 20 70 6f  69 6e 74 65 72 20 74 68  | null pointer th|
000a8610  65 6e 20 74 6d 70 6e 61  6d 20 63 72 65 61 74 65  |en tmpnam create|
000a8620  73 20 69 74 73 20 6f 77  6e 20 61 72 72 61 79 2c  |s its own array,|
000a8630  20 62 75 74 20 73 75 62  73 65 71 75 65 6e 74 20  | but subsequent |
000a8640  63 61 6c 6c 73 20 6d 61  79 20 6f 76 65 72 77 72  |calls may overwr|
000a8650  69 74 65 20 74 68 65 20  6e 61 6d 65 2e 00 00 00  |ite the name....|
000a8660  44 49 52 24 28 00 00 00  28 00 00 00 88 86 0a 00  |DIR$(...(.......|
000a8670  46 ff ff ff bd 5f c1 22  a9 00 00 00 13 00 00 00  |F...._."........|
000a8680  00 00 00 00 4d 41 58 00  44 41 54 41 a9 00 00 00  |....MAX.DATA....|
000a8690  54 4d 50 5f 4d 41 58 0a  23 50 61 72 65 6e 74 20  |TMP_MAX.#Parent |
000a86a0  73 74 64 69 6f 0a 54 68  65 20 6d 61 63 72 6f 20  |stdio.The macro |
000a86b0  54 4d 50 5f 4d 41 58 20  69 73 20 64 65 66 69 6e  |TMP_MAX is defin|
000a86c0  65 64 20 69 6e 20 3c 73  74 64 69 6f 2e 68 3d 3e  |ed in <stdio.h=>|
000a86d0  73 74 64 69 6f 3e 20 61  73 20 74 68 65 20 6d 69  |stdio> as the mi|
000a86e0  6e 69 6d 75 6d 20 6e 75  6d 62 65 72 20 6f 66 20  |nimum number of |
000a86f0  75 6e 69 71 75 65 20 66  69 6c 65 6e 61 6d 65 73  |unique filenames|
000a8700  20 77 68 69 63 68 20 63  61 6e 20 62 65 20 67 65  | which can be ge|
000a8710  6e 65 72 61 74 65 64 20  62 79 20 74 68 65 20 66  |nerated by the f|
000a8720  75 6e 63 74 69 6f 6e 20  3c 74 6d 70 6e 61 6d 3e  |unction <tmpnam>|
000a8730  2e 00 00 00 44 41 54 41  e9 00 00 00 74 6f 6c 6f  |....DATA....tolo|
000a8740  77 65 72 0a 23 50 61 72  65 6e 74 20 63 74 79 70  |wer.#Parent ctyp|
000a8750  65 0a 53 79 6e 74 61 78  3a 09 69 6e 74 20 74 6f  |e.Syntax:.int to|
000a8760  6c 6f 77 65 72 20 28 69  6e 74 20 63 29 3b 0a 48  |lower (int c);.H|
000a8770  65 61 64 65 72 3a 09 3c  63 74 79 70 65 2e 68 3d  |eader:.<ctype.h=|
000a8780  3e 63 74 79 70 65 3e 0a  0a 52 65 74 75 72 6e 73  |>ctype>..Returns|
000a8790  3a 09 63 2c 20 63 6f 6e  76 65 72 74 65 64 20 74  |:.c, converted t|
000a87a0  6f 20 6c 6f 77 65 72 20  63 61 73 65 2e 0a 0a 49  |o lower case...I|
000a87b0  66 20 63 20 69 73 20 75  70 70 65 72 20 63 61 73  |f c is upper cas|
000a87c0  65 2c 20 74 68 69 73 20  66 75 6e 63 74 69 6f 6e  |e, this function|
000a87d0  20 72 65 74 75 72 6e 73  20 74 68 65 20 6c 6f 77  | returns the low|
000a87e0  65 72 20 63 61 73 65 20  65 71 75 69 76 61 6c 65  |er case equivale|
000a87f0  6e 74 2c 20 65 6c 73 65  20 74 68 65 20 63 68 61  |nt, else the cha|
000a8800  72 61 63 74 65 72 20 69  73 20 72 65 74 75 72 6e  |racter is return|
000a8810  65 64 20 75 6e 63 68 61  6e 67 65 64 2e 00 00 00  |ed unchanged....|
000a8820  44 41 54 41 e9 00 00 00  74 6f 75 70 70 65 72 0a  |DATA....toupper.|
000a8830  23 50 61 72 65 6e 74 20  63 74 79 70 65 0a 53 79  |#Parent ctype.Sy|
000a8840  6e 74 61 78 3a 09 69 6e  74 20 74 6f 75 70 70 65  |ntax:.int touppe|
000a8850  72 20 28 69 6e 74 20 63  29 3b 0a 48 65 61 64 65  |r (int c);.Heade|
000a8860  72 3a 09 3c 63 74 79 70  65 2e 68 3d 3e 63 74 79  |r:.<ctype.h=>cty|
000a8870  70 65 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 63 2c  |pe>..Returns:.c,|
000a8880  20 63 6f 6e 76 65 72 74  65 64 20 74 6f 20 75 70  | converted to up|
000a8890  70 65 72 20 63 61 73 65  2e 0a 0a 49 66 20 63 20  |per case...If c |
000a88a0  69 73 20 6c 6f 77 65 72  20 63 61 73 65 2c 20 74  |is lower case, t|
000a88b0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 74  |his function ret|
000a88c0  75 72 6e 73 20 74 68 65  20 75 70 70 65 72 20 63  |urns the upper c|
000a88d0  61 73 65 20 65 71 75 69  76 61 6c 65 6e 74 2c 20  |ase equivalent, |
000a88e0  65 6c 73 65 20 74 68 65  20 63 68 61 72 61 63 74  |else the charact|
000a88f0  65 72 20 69 73 20 72 65  74 75 72 6e 65 64 20 75  |er is returned u|
000a8900  6e 63 68 61 6e 67 65 64  2e 00 00 00 44 41 54 41  |nchanged....DATA|
000a8910  b0 01 00 00 74 72 61 63  65 2e 68 0a 54 68 69 73  |....trace.h.This|
000a8920  20 68 65 61 64 65 72 20  64 65 63 6c 61 72 65 73  | header declares|
000a8930  20 66 75 6e 63 74 69 6f  6e 73 20 66 6f 72 20 74  | functions for t|
000a8940  72 61 63 69 6e 67 2f 64  65 62 75 67 67 69 6e 67  |racing/debugging|
000a8950  20 70 72 6f 67 72 61 6d  73 2e 0a 0a 46 75 6e 63  | programs...Func|
000a8960  74 69 6f 6e 73 3a 0a 0a  23 49 6e 64 65 6e 74 20  |tions:..#Indent |
000a8970  39 0a 23 54 61 62 6c 65  20 6c 69 6e 65 73 20 31  |9.#Table lines 1|
000a8980  0a 3c 74 72 61 63 65 66  3e 0a 3c 74 72 61 63 65  |.<tracef>.<trace|
000a8990  5f 69 73 5f 6f 6e 3e 0a  3c 74 72 61 63 65 5f 6f  |_is_on>.<trace_o|
000a89a0  6e 20 3e 0a 3c 74 72 61  63 65 5f 6f 66 66 3e 0a  |n >.<trace_off>.|
000a89b0  23 45 6e 64 54 61 62 6c  65 0a 23 49 6e 64 65 6e  |#EndTable.#Inden|
000a89c0  74 20 30 0a 0a 59 6f 75  20 6d 75 73 74 20 23 64  |t 0..You must #d|
000a89d0  65 66 69 6e 65 20 54 52  41 43 45 20 31 20 69 6e  |efine TRACE 1 in|
000a89e0  20 6f 72 64 65 72 20 74  6f 20 75 73 65 20 74 68  | order to use th|
000a89f0  65 73 65 20 66 75 6e 63  74 69 6f 6e 73 2e 20 41  |ese functions. A|
000a8a00  6c 6c 20 63 61 6c 6c 73  20 74 6f 20 2a 74 72 61  |ll calls to *tra|
000a8a10  63 65 66 2a 20 73 68 6f  75 6c 64 20 62 65 20 73  |cef* should be s|
000a8a20  75 72 72 6f 75 6e 64 65  64 20 77 69 74 68 3a 0a  |urrounded with:.|
000a8a30  0a 7b 66 43 6f 64 65 7d  20 20 5c 23 69 66 20 54  |.{fCode}  \#if T|
000a8a40  52 41 43 45 0a 20 20 20  20 2e 2e 2e 0a 20 20 20  |RACE.    ....   |
000a8a50  20 2e 2e 2e 0a 20 20 5c  23 65 6e 64 69 66 7b 66  | ....  \#endif{f|
000a8a60  7d 0a 0a 74 6f 20 65 6e  73 75 72 65 20 74 68 61  |}..to ensure tha|
000a8a70  74 20 74 72 61 63 69 6e  67 20 69 73 20 6e 6f 74  |t tracing is not|
000a8a80  20 63 6f 6d 70 69 6c 65  64 20 69 6e 20 74 6f 20  | compiled in to |
000a8a90  74 68 65 20 66 69 6e 61  6c 20 76 65 72 73 69 6f  |the final versio|
000a8aa0  6e 20 28 77 61 73 74 69  6e 67 20 74 69 6d 65 20  |n (wasting time |
000a8ab0  61 6e 64 20 6d 65 6d 6f  72 79 29 2e 44 41 54 41  |and memory).DATA|
000a8ac0  ad 00 00 00 74 72 61 63  65 66 0a 53 79 6e 74 61  |....tracef.Synta|
000a8ad0  78 3a 09 76 6f 69 64 20  74 72 61 63 65 66 20 28  |x:.void tracef (|
000a8ae0  63 68 61 72 20 2a 66 6f  72 6d 61 74 2c 20 2e 2e  |char *format, ..|
000a8af0  2e 29 3b 0a 48 65 61 64  65 72 3a 09 3c 74 72 61  |.);.Header:.<tra|
000a8b00  63 65 2e 68 3d 3e 74 72  61 63 65 3e 0a 0a 54 68  |ce.h=>trace>..Th|
000a8b10  69 73 20 66 75 6e 63 74  69 6f 6e 20 6f 75 74 70  |is function outp|
000a8b20  75 74 73 20 74 72 61 63  69 6e 67 20 69 6e 66 6f  |uts tracing info|
000a8b30  20 61 63 63 6f 72 64 69  6e 67 20 74 6f 20 74 68  | according to th|
000a8b40  65 20 3c 70 72 69 6e 74  66 3e 2d 73 74 79 6c 65  |e <printf>-style|
000a8b50  20 3c 66 6f 72 6d 61 74  20 73 74 72 69 6e 67 3d  | <format string=|
000a8b60  3e 70 66 6f 72 6d 5f 3e  2e 00 00 00 44 49 52 24  |>pform_>....DIR$|
000a8b70  80 00 00 00 80 00 00 00  ec 8b 0a 00 46 ff ff ff  |............F...|
000a8b80  80 05 e2 24 76 00 00 00  13 00 00 00 00 00 00 00  |...$v...........|
000a8b90  69 73 5f 6f 6e 00 00 00  64 8c 0a 00 46 ff ff ff  |is_on...d...F...|
000a8ba0  0f 0b e2 24 5d 00 00 00  13 00 00 00 00 00 00 00  |...$]...........|
000a8bb0  6f 66 66 00 c4 8c 0a 00  46 ff ff ff 65 08 e2 24  |off.....F...e..$|
000a8bc0  5a 00 00 00 13 00 00 00  00 00 00 00 6f 6e 00 00  |Z...........on..|
000a8bd0  20 8d 0a 00 46 fd ff ff  98 55 58 26 8d 01 00 00  | ...F....UX&....|
000a8be0  13 00 00 00 00 00 00 00  54 4c 00 00 44 41 54 41  |........TL..DATA|
000a8bf0  76 00 00 00 74 72 61 63  65 5f 69 73 5f 6f 6e 0a  |v...trace_is_on.|
000a8c00  53 79 6e 74 61 78 3a 09  69 6e 74 20 74 72 61 63  |Syntax:.int trac|
000a8c10  65 5f 69 73 5f 6f 6e 20  28 76 6f 69 64 29 3b 0a  |e_is_on (void);.|
000a8c20  48 65 61 64 65 72 3a 09  3c 74 72 61 63 65 2e 68  |Header:.<trace.h|
000a8c30  3d 3e 74 72 61 63 65 3e  0a 0a 52 65 74 75 72 6e  |=>trace>..Return|
000a8c40  73 3a 09 3c 54 52 55 45  3e 20 69 66 20 74 72 61  |s:.<TRUE> if tra|
000a8c50  63 69 6e 67 20 69 73 20  74 75 72 6e 65 64 20 6f  |cing is turned o|
000a8c60  6e 2e 00 00 44 41 54 41  5d 00 00 00 74 72 61 63  |n...DATA]...trac|
000a8c70  65 5f 6f 66 66 0a 53 79  6e 74 61 78 3a 09 76 6f  |e_off.Syntax:.vo|
000a8c80  69 64 20 74 72 61 63 65  5f 6f 66 66 20 28 76 6f  |id trace_off (vo|
000a8c90  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 74 72  |id);.Header:.<tr|
000a8ca0  61 63 65 2e 68 3d 3e 74  72 61 63 65 3e 0a 0a 54  |ace.h=>trace>..T|
000a8cb0  75 72 6e 73 20 74 72 61  63 69 6e 67 20 6f 66 66  |urns tracing off|
000a8cc0  2e 00 00 00 44 41 54 41  5a 00 00 00 74 72 61 63  |....DATAZ...trac|
000a8cd0  65 5f 6f 6e 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |e_on.Syntax:.voi|
000a8ce0  64 20 74 72 61 63 65 5f  6f 6e 20 28 76 6f 69 64  |d trace_on (void|
000a8cf0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 74 72 61 63  |);.Header:.<trac|
000a8d00  65 2e 68 3d 3e 74 72 61  63 65 3e 0a 0a 54 75 72  |e.h=>trace>..Tur|
000a8d10  6e 73 20 74 72 61 63 69  6e 67 20 6f 6e 2e 00 00  |ns tracing on...|
000a8d20  44 41 54 41 8d 01 00 00  54 69 6d 73 4c 69 62 3a  |DATA....TimsLib:|
000a8d30  54 72 61 63 65 2e 68 0a  54 68 69 73 20 68 65 61  |Trace.h.This hea|
000a8d40  64 65 72 20 64 65 63 6c  61 72 65 73 20 6a 75 73  |der declares jus|
000a8d50  74 20 6f 6e 65 20 66 75  6e 63 74 69 6f 6e 2c 20  |t one function, |
000a8d60  54 72 61 63 65 2e 20 49  6e 20 61 64 64 69 74 69  |Trace. In additi|
000a8d70  6f 6e 20 69 74 20 64 65  66 69 6e 65 73 20 6d 61  |on it defines ma|
000a8d80  63 72 6f 73 20 66 6f 72  20 65 61 63 68 20 6f 66  |cros for each of|
000a8d90  20 74 68 65 20 53 74 72  65 61 6d 20 53 57 49 73  | the Stream SWIs|
000a8da0  2e 0a 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |...Syntax:.void |
000a8db0  54 72 61 63 65 20 28 63  68 61 72 20 2a 72 65 70  |Trace (char *rep|
000a8dc0  6f 72 74 2c 20 2e 2e 2e  29 3b 0a 0a 54 68 69 73  |ort, ...);..This|
000a8dd0  20 66 75 6e 63 74 69 6f  6e 20 74 61 6b 65 73 20  | function takes |
000a8de0  61 20 70 72 69 6e 74 66  2d 73 74 79 6c 65 20 3c  |a printf-style <|
000a8df0  66 6f 72 6d 61 74 20 73  74 72 69 6e 67 3d 3e 70  |format string=>p|
000a8e00  66 6f 72 6d 5f 3e 20 61  6e 64 20 70 72 69 6e 74  |form_> and print|
000a8e10  73 20 69 74 20 75 73 69  6e 67 20 74 68 65 20 56  |s it using the V|
000a8e20  44 55 53 74 72 65 61 6d  20 6d 6f 64 75 6c 65 2e  |DUStream module.|
000a8e30  20 54 68 65 20 56 44 55  53 74 72 65 61 6d 20 6d  | The VDUStream m|
000a8e40  6f 64 75 6c 65 20 69 73  20 61 74 20 70 72 65 73  |odule is at pres|
000a8e50  65 6e 74 20 6f 6e 6c 79  20 61 76 61 69 6c 61 62  |ent only availab|
000a8e60  6c 65 20 69 66 20 79 6f  75 20 68 61 76 65 20 74  |le if you have t|
000a8e70  68 65 20 41 72 74 57 6f  72 6b 73 20 53 6f 66 74  |he ArtWorks Soft|
000a8e80  77 61 72 65 20 44 65 76  65 6c 6f 70 65 72 27 73  |ware Developer's|
000a8e90  20 4b 69 74 2e 20 56 65  72 79 20 75 73 65 66 75  | Kit. Very usefu|
000a8ea0  6c 20 49 27 6d 20 73 75  72 65 2e 2e 2e 00 00 00  |l I'm sure......|
000a8eb0  44 41 54 41 c6 00 00 00  54 52 55 45 0a 54 68 65  |DATA....TRUE.The|
000a8ec0  20 6d 61 63 72 6f 20 54  52 55 45 20 69 73 20 64  | macro TRUE is d|
000a8ed0  65 66 69 6e 65 64 20 69  6e 20 3c 44 65 73 6b 4c  |efined in <DeskL|
000a8ee0  69 62 3a 43 6f 72 65 2e  68 3d 3e 43 6f 72 65 3e  |ib:Core.h=>Core>|
000a8ef0  2c 20 3c 54 69 6d 73 4c  69 62 3a 43 6f 72 65 2e  |, <TimsLib:Core.|
000a8f00  68 3d 3e 43 6f 72 65 5f  54 4c 3e 20 61 6e 64 20  |h=>Core_TL> and |
000a8f10  3c 6f 73 2e 68 3d 3e 6f  73 3e 20 28 44 65 73 6b  |<os.h=>os> (Desk|
000a8f20  74 6f 70 20 43 29 20 61  73 20 61 20 76 61 6c 75  |top C) as a valu|
000a8f30  65 20 72 65 70 72 65 73  65 6e 74 69 6e 67 20 74  |e representing t|
000a8f40  68 65 20 6c 6f 67 69 63  61 6c 20 73 74 61 74 65  |he logical state|
000a8f50  20 6f 66 20 54 72 75 65  2e 20 49 74 20 69 73 20  | of True. It is |
000a8f60  61 63 74 75 61 6c 6c 79  20 64 65 66 69 6e 65 64  |actually defined|
000a8f70  20 61 73 20 31 2e 00 00  44 41 54 41 88 00 00 00  | as 1...DATA....|
000a8f80  74 78 74 0a 54 68 65 20  74 79 70 65 20 27 74 78  |txt.The type 'tx|
000a8f90  74 27 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |t' is defined in|
000a8fa0  20 3c 74 78 74 2e 68 3d  3e 74 78 74 5f 68 3e 20  | <txt.h=>txt_h> |
000a8fb0  61 73 20 61 6e 20 61 62  73 74 72 61 63 74 20 68  |as an abstract h|
000a8fc0  61 6e 64 6c 65 20 6f 6e  20 61 20 74 65 78 74 20  |andle on a text |
000a8fd0  6f 62 6a 65 63 74 2e 20  49 74 20 69 73 20 61 63  |object. It is ac|
000a8fe0  74 75 61 6c 6c 79 20 61  20 70 6f 69 6e 74 65 72  |tually a pointer|
000a8ff0  20 74 6f 20 61 20 73 74  72 75 63 74 75 72 65 2e  | to a structure.|
000a9000  44 41 54 41 4a 03 00 00  74 78 74 65 64 69 74 2e  |DATAJ...txtedit.|
000a9010  68 0a 54 68 69 73 20 68  65 61 64 65 72 20 66 69  |h.This header fi|
000a9020  6c 65 20 69 73 20 61 20  70 61 72 74 6e 65 72 20  |le is a partner |
000a9030  66 6f 72 20 3c 74 78 74  2e 68 3d 3e 74 78 74 5f  |for <txt.h=>txt_|
000a9040  68 3e 2c 20 70 72 6f 76  69 64 69 6e 67 20 74 65  |h>, providing te|
000a9050  78 74 20 65 64 69 74 69  6e 67 20 66 61 63 69 6c  |xt editing facil|
000a9060  69 74 69 65 73 2e 20 49  74 20 70 72 6f 76 69 64  |ities. It provid|
000a9070  65 73 20 79 6f 75 20 77  69 74 68 20 6d 6f 73 74  |es you with most|
000a9080  20 6f 66 20 74 68 65 20  66 65 61 74 75 72 65 73  | of the features|
000a9090  20 6f 66 20 52 49 53 43  20 4f 53 20 32 20 21 45  | of RISC OS 2 !E|
000a90a0  64 69 74 2e 0a 0a 46 75  6e 63 74 69 6f 6e 73 3a  |dit...Functions:|
000a90b0  0a 0a 23 69 6e 64 65 6e  74 20 32 0a 23 54 61 62  |..#indent 2.#Tab|
000a90c0  6c 65 20 39 20 32 30 0a  3c 74 78 74 65 64 69 74  |le 9 20.<txtedit|
000a90d0  5f 69 6e 69 74 3e 0a 3c  74 78 74 65 64 69 74 5f  |_init>.<txtedit_|
000a90e0  69 6e 73 74 61 6c 6c 3e  0a 3c 74 78 74 65 64 69  |install>.<txtedi|
000a90f0  74 5f 6e 65 77 3e 0a 3c  74 78 74 65 64 69 74 5f  |t_new>.<txtedit_|
000a9100  64 69 73 70 6f 73 65 3e  0a 3c 74 78 74 65 64 69  |dispose>.<txtedi|
000a9110  74 5f 6d 61 79 71 75 69  74 3e 0a 3c 74 78 74 65  |t_mayquit>.<txte|
000a9120  64 69 74 5f 70 72 65 71  75 69 74 3e 0a 3c 74 78  |dit_prequit>.<tx|
000a9130  74 65 64 69 74 5f 6d 65  6e 75 3e 0a 3c 74 78 74  |tedit_menu>.<txt|
000a9140  65 64 69 74 5f 6d 65 6e  75 65 76 65 6e 74 3e 0a  |edit_menuevent>.|
000a9150  3c 74 78 74 65 64 69 74  5f 64 6f 69 6d 70 6f 72  |<txtedit_doimpor|
000a9160  74 3e 0a 3c 74 78 74 65  64 69 74 5f 64 6f 69 6e  |t>.<txtedit_doin|
000a9170  73 65 72 74 66 69 6c 65  3e 0a 3c 74 78 74 65 64  |sertfile>.<txted|
000a9180  69 74 5f 72 65 67 69 73  74 65 72 5f 75 70 64 61  |it_register_upda|
000a9190  74 65 5f 68 61 6e 64 6c  65 72 3e 0a 3c 74 78 74  |te_handler>.<txt|
000a91a0  65 64 69 74 5f 72 65 67  69 73 74 65 72 5f 73 61  |edit_register_sa|
000a91b0  76 65 5f 68 61 6e 64 6c  65 72 3e 0a 3c 74 78 74  |ve_handler>.<txt|
000a91c0  65 64 69 74 5f 72 65 67  69 73 74 65 72 5f 63 6c  |edit_register_cl|
000a91d0  6f 73 65 5f 68 61 6e 64  6c 65 72 3e 0a 3c 74 78  |ose_handler>.<tx|
000a91e0  74 65 64 69 74 5f 72 65  67 69 73 74 65 72 5f 73  |tedit_register_s|
000a91f0  68 75 74 64 6f 77 6e 5f  68 61 6e 64 6c 65 72 3e  |hutdown_handler>|
000a9200  0a 3c 74 78 74 65 64 69  74 5f 72 65 67 69 73 74  |.<txtedit_regist|
000a9210  65 72 5f 75 6e 64 6f 66  61 69 6c 5f 68 61 6e 64  |er_undofail_hand|
000a9220  6c 65 72 3e 0a 3c 74 78  74 65 64 69 74 5f 72 65  |ler>.<txtedit_re|
000a9230  67 69 73 74 65 72 5f 6f  70 65 6e 5f 68 61 6e 64  |gister_open_hand|
000a9240  6c 65 72 3e 0a 3c 74 78  74 65 64 69 74 5f 67 65  |ler>.<txtedit_ge|
000a9250  74 73 74 61 74 65 73 3e  0a 23 45 6e 64 54 61 62  |tstates>.#EndTab|
000a9260  6c 65 0a 23 69 6e 64 65  6e 74 0a 0a 54 79 70 65  |le.#indent..Type|
000a9270  73 3a 0a 0a 23 69 6e 64  65 6e 74 20 34 0a 23 54  |s:..#indent 4.#T|
000a9280  61 62 6c 65 20 34 20 32  35 0a 3c 74 78 74 65 64  |able 4 25.<txted|
000a9290  69 74 5f 73 65 6c 74 79  70 65 3e 0a 3c 74 78 74  |it_seltype>.<txt|
000a92a0  65 64 69 74 5f 73 74 61  74 65 3e 0a 3c 74 78 74  |edit_state>.<txt|
000a92b0  65 64 69 74 5f 75 70 64  61 74 65 5f 68 61 6e 64  |edit_update_hand|
000a92c0  6c 65 72 3e 0a 3c 74 78  74 65 64 69 74 5f 63 6c  |ler>.<txtedit_cl|
000a92d0  6f 73 65 5f 68 61 6e 64  6c 65 72 3e 0a 3c 74 78  |ose_handler>.<tx|
000a92e0  74 65 64 69 74 5f 73 61  76 65 5f 68 61 6e 64 6c  |tedit_save_handl|
000a92f0  65 72 3e 0a 3c 74 78 74  65 64 69 74 5f 73 68 75  |er>.<txtedit_shu|
000a9300  74 64 6f 77 6e 5f 68 61  6e 64 6c 65 72 3e 0a 3c  |tdown_handler>.<|
000a9310  74 78 74 65 64 69 74 5f  75 6e 64 6f 66 61 69 6c  |txtedit_undofail|
000a9320  5f 68 61 6e 64 6c 65 72  3e 0a 3c 74 78 74 65 64  |_handler>.<txted|
000a9330  69 74 5f 6f 70 65 6e 5f  68 61 6e 64 6c 65 72 3e  |it_open_handler>|
000a9340  0a 23 45 6e 64 54 61 62  6c 65 00 00 44 49 52 24  |.#EndTable..DIR$|
000a9350  dc 03 00 00 dc 03 00 00  28 97 0a 00 46 ff ff ff  |........(...F...|
000a9360  8e 88 e5 24 48 01 00 00  13 00 00 00 00 00 00 00  |...$H...........|
000a9370  63 6c 6f 73 65 5f 68 61  6e 64 6c 65 72 00 00 00  |close_handler...|
000a9380  70 98 0a 00 46 ff ff ff  c8 c2 e4 24 b2 00 00 00  |p...F......$....|
000a9390  13 00 00 00 00 00 00 00  64 69 73 70 6f 73 65 00  |........dispose.|
000a93a0  24 99 0a 00 46 ff ff ff  4b f5 e4 24 1d 01 00 00  |$...F...K..$....|
000a93b0  13 00 00 00 00 00 00 00  64 6f 69 6d 70 6f 72 74  |........doimport|
000a93c0  00 00 00 00 44 9a 0a 00  46 ff ff ff e9 fd e4 24  |....D...F......$|
000a93d0  55 01 00 00 13 00 00 00  00 00 00 00 64 6f 69 6e  |U...........doin|
000a93e0  73 65 72 74 66 69 6c 65  00 00 00 00 9c 9b 0a 00  |sertfile........|
000a93f0  46 ff ff ff c2 46 e5 24  21 01 00 00 13 00 00 00  |F....F.$!.......|
000a9400  00 00 00 00 67 65 74 73  74 61 74 65 73 00 00 00  |....getstates...|
000a9410  c0 9c 0a 00 46 ff ff ff  c7 ac e4 24 b4 00 00 00  |....F......$....|
000a9420  13 00 00 00 00 00 00 00  69 6e 69 74 00 00 00 00  |........init....|
000a9430  74 9d 0a 00 46 ff ff ff  15 b4 e4 24 f4 00 00 00  |t...F......$....|
000a9440  13 00 00 00 00 00 00 00  69 6e 73 74 61 6c 6c 00  |........install.|
000a9450  68 9e 0a 00 46 ff ff ff  85 c7 e4 24 32 01 00 00  |h...F......$2...|
000a9460  13 00 00 00 00 00 00 00  6d 61 79 71 75 69 74 00  |........mayquit.|
000a9470  9c 9f 0a 00 46 ff ff ff  0a ea e4 24 fb 00 00 00  |....F......$....|
000a9480  13 00 00 00 00 00 00 00  6d 65 6e 75 00 00 00 00  |........menu....|
000a9490  98 a0 0a 00 46 ff ff ff  12 f0 e4 24 de 00 00 00  |....F......$....|
000a94a0  13 00 00 00 00 00 00 00  6d 65 6e 75 65 76 65 6e  |........menueven|
000a94b0  74 00 00 00 78 a1 0a 00  46 ff ff ff c3 bb e4 24  |t...x...F......$|
000a94c0  b1 01 00 00 13 00 00 00  00 00 00 00 6e 65 77 00  |............new.|
000a94d0  2c a3 0a 00 46 ff ff ff  47 c6 e5 24 41 01 00 00  |,...F...G..$A...|
000a94e0  13 00 00 00 00 00 00 00  6f 70 65 6e 5f 68 61 6e  |........open_han|
000a94f0  64 6c 65 72 00 00 00 00  70 a4 0a 00 46 ff ff ff  |dler....p...F...|
000a9500  43 df e4 24 1a 01 00 00  13 00 00 00 00 00 00 00  |C..$............|
000a9510  70 72 65 71 75 69 74 00  8c a5 0a 00 46 ff ff ff  |prequit.....F...|
000a9520  e3 22 e5 24 43 01 00 00  13 00 00 00 00 00 00 00  |.".$C...........|
000a9530  72 65 67 69 73 74 65 72  5f 63 6c 6f 73 65 5f 68  |register_close_h|
000a9540  61 6e 64 6c 65 72 00 00  d0 a6 0a 00 46 ff ff ff  |andler......F...|
000a9550  f2 3e e5 24 46 01 00 00  13 00 00 00 00 00 00 00  |.>.$F...........|
000a9560  72 65 67 69 73 74 65 72  5f 6f 70 65 6e 5f 68 61  |register_open_ha|
000a9570  6e 64 6c 65 72 00 00 00  18 a8 0a 00 46 ff ff ff  |ndler.......F...|
000a9580  1b 1b e5 24 48 01 00 00  13 00 00 00 00 00 00 00  |...$H...........|
000a9590  72 65 67 69 73 74 65 72  5f 73 61 76 65 5f 68 61  |register_save_ha|
000a95a0  6e 64 6c 65 72 00 00 00  60 a9 0a 00 46 ff ff ff  |ndler...`...F...|
000a95b0  89 9a e5 24 8a 01 00 00  13 00 00 00 00 00 00 00  |...$............|
000a95c0  73 61 76 65 5f 68 61 6e  64 6c 65 72 00 00 00 00  |save_handler....|
000a95d0  ec aa 0a 00 46 ff ff ff  46 4e e5 24 c9 00 00 00  |....F...FN.$....|
000a95e0  13 00 00 00 00 00 00 00  73 65 6c 74 79 70 65 00  |........seltype.|
000a95f0  b8 ab 0a 00 46 ff ff ff  10 ab e5 24 f3 00 00 00  |....F......$....|
000a9600  13 00 00 00 00 00 00 00  73 68 75 74 64 6f 77 6e  |........shutdown|
000a9610  5f 68 61 6e 64 6c 65 72  00 00 00 00 ac ac 0a 00  |_handler........|
000a9620  46 ff ff ff ba 69 e5 24  f0 01 00 00 13 00 00 00  |F....i.$........|
000a9630  00 00 00 00 73 74 61 74  65 00 00 00 9c ae 0a 00  |....state.......|
000a9640  46 ff ff ff 9f b7 e5 24  45 01 00 00 13 00 00 00  |F......$E.......|
000a9650  00 00 00 00 75 6e 64 6f  66 61 69 6c 5f 68 61 6e  |....undofail_han|
000a9660  64 6c 65 72 00 00 00 00  e4 af 0a 00 46 ff ff ff  |dler........F...|
000a9670  b8 79 e5 24 8c 01 00 00  13 00 00 00 00 00 00 00  |.y.$............|
000a9680  75 70 64 61 74 65 5f 68  61 6e 64 6c 65 72 00 00  |update_handler..|
000a9690  70 b1 0a 00 46 ff ff ff  41 0f e5 24 66 01 00 00  |p...F...A..$f...|
000a96a0  13 00 00 00 00 00 00 00  72 65 67 69 73 74 65 72  |........register|
000a96b0  5f 75 70 64 61 74 65 5f  68 61 6e 64 6c 65 72 00  |_update_handler.|
000a96c0  d8 b2 0a 00 46 ff ff ff  aa 2b e5 24 78 01 00 00  |....F....+.$x...|
000a96d0  13 00 00 00 00 00 00 00  72 65 67 69 73 74 65 72  |........register|
000a96e0  5f 73 68 75 74 64 6f 77  6e 5f 68 61 6e 64 6c 65  |_shutdown_handle|
000a96f0  72 00 00 00 50 b4 0a 00  46 ff ff ff d7 32 e5 24  |r...P...F....2.$|
000a9700  98 01 00 00 13 00 00 00  00 00 00 00 72 65 67 69  |............regi|
000a9710  73 74 65 72 5f 75 6e 64  6f 66 61 69 6c 5f 68 61  |ster_undofail_ha|
000a9720  6e 64 6c 65 72 00 00 00  44 41 54 41 48 01 00 00  |ndler...DATAH...|
000a9730  74 78 74 65 64 69 74 5f  63 6c 6f 73 65 5f 68 61  |txtedit_close_ha|
000a9740  6e 64 6c 65 72 0a 54 68  69 73 20 74 79 70 65 20  |ndler.This type |
000a9750  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 74  |is defined in <t|
000a9760  78 74 65 64 69 74 2e 68  3d 3e 74 78 74 65 64 69  |xtedit.h=>txtedi|
000a9770  74 3e 2e 20 49 74 20 69  73 20 61 20 66 75 6e 63  |t>. It is a func|
000a9780  74 69 6f 6e 20 6f 66 20  74 68 65 20 66 6f 72 6d  |tion of the form|
000a9790  3a 0a 0a 7b 66 43 6f 64  65 3b 61 6c 69 67 6e 20  |:..{fCode;align |
000a97a0  63 65 6e 74 72 65 7d 76  6f 69 64 20 6d 79 66 75  |centre}void myfu|
000a97b0  6e 63 20 28 63 68 61 72  20 2a 66 69 6c 65 6e 61  |nc (char *filena|
000a97c0  6d 65 2c 20 3c 74 78 74  65 64 69 74 5f 73 74 61  |me, <txtedit_sta|
000a97d0  74 65 3e 20 2a 73 2c 20  76 6f 69 64 20 2a 68 61  |te> *s, void *ha|
000a97e0  6e 64 6c 65 29 3b 7b 66  3b 61 6c 69 67 6e 7d 0a  |ndle);{f;align}.|
000a97f0  0a 2f 68 61 6e 64 6c 65  2f 20 69 73 20 74 68 65  |./handle/ is the|
000a9800  20 76 61 6c 75 65 20 70  61 73 73 65 64 20 77 68  | value passed wh|
000a9810  65 6e 20 72 65 67 69 73  74 65 72 69 6e 67 20 74  |en registering t|
000a9820  68 65 20 66 75 6e 63 74  69 6f 6e 2e 20 2f 66 69  |he function. /fi|
000a9830  6c 65 6e 61 6d 65 2f 20  69 73 20 74 68 65 20 77  |lename/ is the w|
000a9840  69 6e 64 6f 77 20 74 69  74 6c 65 20 66 69 6c 65  |indow title file|
000a9850  6e 61 6d 65 2c 20 61 6e  64 20 2f 73 2f 20 69 73  |name, and /s/ is|
000a9860  20 74 68 65 20 74 65 78  74 20 73 74 61 74 65 2e  | the text state.|
000a9870  44 41 54 41 b2 00 00 00  74 78 74 65 64 69 74 5f  |DATA....txtedit_|
000a9880  64 69 73 70 6f 73 65 0a  53 79 6e 74 61 78 3a 09  |dispose.Syntax:.|
000a9890  76 6f 69 64 20 74 78 74  65 64 69 74 5f 64 69 73  |void txtedit_dis|
000a98a0  70 6f 73 65 20 28 3c 74  78 74 65 64 69 74 5f 73  |pose (<txtedit_s|
000a98b0  74 61 74 65 3e 20 2a 73  29 3b 0a 48 65 61 64 65  |tate> *s);.Heade|
000a98c0  72 3a 09 3c 74 78 74 65  64 69 74 2e 68 3d 3e 74  |r:.<txtedit.h=>t|
000a98d0  78 74 65 64 69 74 3e 0a  0a 54 68 69 73 20 66 75  |xtedit>..This fu|
000a98e0  6e 63 74 69 6f 6e 20 64  65 73 74 72 6f 79 73 20  |nction destroys |
000a98f0  74 68 65 20 74 65 78 74  20 77 68 6f 73 65 20 73  |the text whose s|
000a9900  74 61 74 65 20 69 73 20  67 69 76 65 6e 2c 20 6e  |tate is given, n|
000a9910  6f 20 71 75 65 73 74 69  6f 6e 73 20 61 73 6b 65  |o questions aske|
000a9920  64 2e 00 00 44 41 54 41  1d 01 00 00 74 78 74 65  |d...DATA....txte|
000a9930  64 69 74 5f 64 6f 69 6d  70 6f 72 74 0a 53 79 6e  |dit_doimport.Syn|
000a9940  74 61 78 3a 09 3c 42 4f  4f 4c 3e 20 74 78 74 65  |tax:.<BOOL> txte|
000a9950  64 69 74 5f 64 6f 69 6d  70 6f 72 74 20 28 3c 74  |dit_doimport (<t|
000a9960  78 74 65 64 69 74 5f 73  74 61 74 65 3e 20 2a 73  |xtedit_state> *s|
000a9970  2c 20 69 6e 74 20 66 69  6c 65 74 79 70 65 2c 20  |, int filetype, |
000a9980  69 6e 74 20 65 73 74 73  69 7a 65 29 3b 0a 48 65  |int estsize);.He|
000a9990  61 64 65 72 3a 09 3c 74  78 74 65 64 69 74 2e 68  |ader:.<txtedit.h|
000a99a0  3d 3e 74 78 74 65 64 69  74 3e 0a 0a 52 65 74 75  |=>txtedit>..Retu|
000a99b0  72 6e 73 3a 09 3c 54 52  55 45 3e 20 69 66 20 73  |rns:.<TRUE> if s|
000a99c0  75 63 63 65 73 73 66 75  6c 2e 0a 0a 54 68 69 73  |uccessful...This|
000a99d0  20 66 75 6e 63 74 69 6f  6e 20 69 6d 70 6f 72 74  | function import|
000a99e0  73 20 64 61 74 61 20 69  6e 74 6f 20 74 68 65 20  |s data into the |
000a99f0  73 70 65 63 69 66 69 65  64 20 74 78 74 65 64 69  |specified txtedi|
000a9a00  74 20 6f 62 6a 65 63 74  2c 20 66 72 6f 6d 20 61  |t object, from a|
000a9a10  20 66 69 6c 65 20 77 68  6f 73 65 20 74 79 70 65  | file whose type|
000a9a20  20 61 6e 64 20 65 73 74  69 6d 61 74 65 64 20 73  | and estimated s|
000a9a30  69 7a 65 20 61 72 65 20  61 73 20 67 69 76 65 6e  |ize are as given|
000a9a40  2e 00 00 00 44 41 54 41  55 01 00 00 74 78 74 65  |....DATAU...txte|
000a9a50  64 69 74 5f 64 6f 69 6e  73 65 72 74 66 69 6c 65  |dit_doinsertfile|
000a9a60  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 74 78  |.Syntax:.void tx|
000a9a70  74 65 64 69 74 5f 64 6f  69 6e 73 65 72 74 66 69  |tedit_doinsertfi|
000a9a80  6c 65 20 28 3c 74 78 74  65 64 69 74 5f 73 74 61  |le (<txtedit_sta|
000a9a90  74 65 3e 20 2a 73 2c 20  63 68 61 72 20 2a 66 69  |te> *s, char *fi|
000a9aa0  6c 65 6e 61 6d 65 2c 20  3c 42 4f 4f 4c 3e 20 6e  |lename, <BOOL> n|
000a9ab0  65 77 74 69 74 6c 65 29  3b 0a 48 65 61 64 65 72  |ewtitle);.Header|
000a9ac0  3a 09 3c 74 78 74 65 64  69 74 2e 68 3d 3e 74 78  |:.<txtedit.h=>tx|
000a9ad0  74 65 64 69 74 3e 0a 0a  54 68 69 73 20 66 75 6e  |tedit>..This fun|
000a9ae0  63 74 69 6f 6e 20 69 6e  73 65 72 74 73 20 74 68  |ction inserts th|
000a9af0  65 20 6e 61 6d 65 64 20  66 69 6c 65 20 69 6e 74  |e named file int|
000a9b00  6f 20 74 68 65 20 74 65  78 74 20 6f 62 6a 65 63  |o the text objec|
000a9b10  74 20 77 68 6f 73 65 20  73 74 61 74 65 20 69 73  |t whose state is|
000a9b20  20 70 6f 69 6e 74 65 64  20 74 6f 20 62 79 20 2f  | pointed to by /|
000a9b30  73 2f 2e 20 49 66 20 2f  6e 65 77 74 69 74 6c 65  |s/. If /newtitle|
000a9b40  2f 20 69 73 20 3c 54 52  55 45 3e 20 74 68 65 6e  |/ is <TRUE> then|
000a9b50  20 74 68 65 20 74 65 78  74 20 6f 62 6a 65 63 74  | the text object|
000a9b60  20 77 69 6c 6c 20 6e 6f  77 20 62 65 20 6b 6e 6f  | will now be kno|
000a9b70  77 6e 20 62 79 20 74 68  65 20 66 69 6c 65 20 6e  |wn by the file n|
000a9b80  61 6d 65 20 6f 66 20 74  68 65 20 69 6e 73 65 72  |ame of the inser|
000a9b90  74 65 64 20 66 69 6c 65  2e 00 00 00 44 41 54 41  |ted file....DATA|
000a9ba0  21 01 00 00 74 78 74 65  64 69 74 5f 67 65 74 73  |!...txtedit_gets|
000a9bb0  74 61 74 65 73 0a 53 79  6e 74 61 78 3a 09 3c 74  |tates.Syntax:.<t|
000a9bc0  78 74 65 64 69 74 5f 73  74 61 74 65 3e 20 2a 74  |xtedit_state> *t|
000a9bd0  78 74 65 64 69 74 5f 67  65 74 73 74 61 74 65 73  |xtedit_getstates|
000a9be0  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
000a9bf0  09 3c 74 78 74 65 64 69  74 2e 68 3d 3e 74 78 74  |.<txtedit.h=>txt|
000a9c00  65 64 69 74 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |edit>..Returns:.|
000a9c10  50 6f 69 6e 74 65 72 20  74 6f 20 73 74 61 72 74  |Pointer to start|
000a9c20  20 6f 66 20 6c 69 73 74  2e 0a 0a 54 68 69 73 20  | of list...This |
000a9c30  66 75 6e 63 74 69 6f 6e  20 67 65 74 73 20 61 20  |function gets a |
000a9c40  70 6f 69 6e 74 65 72 20  74 6f 20 74 68 65 20 73  |pointer to the s|
000a9c50  74 61 72 74 20 6f 66 20  74 68 65 20 6c 69 73 74  |tart of the list|
000a9c60  20 6f 66 20 65 64 69 74  61 62 6c 65 20 74 65 78  | of editable tex|
000a9c70  74 73 2e 20 45 61 63 68  20 65 6e 74 72 79 20 63  |ts. Each entry c|
000a9c80  61 6e 20 62 65 20 66 6f  75 6e 64 20 61 73 20 7b  |an be found as {|
000a9c90  2f 7d 73 2d 3e 6e 65 78  74 7b 2f 7d 20 77 68 65  |/}s->next{/} whe|
000a9ca0  72 65 20 2f 73 2f 20 69  73 20 74 68 65 20 70 72  |re /s/ is the pr|
000a9cb0  65 76 69 6f 75 73 0a 65  6e 74 72 79 2e 00 00 00  |evious.entry....|
000a9cc0  44 41 54 41 b4 00 00 00  74 78 74 65 64 69 74 5f  |DATA....txtedit_|
000a9cd0  69 6e 69 74 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |init.Syntax:.voi|
000a9ce0  64 20 74 78 74 65 64 69  74 5f 69 6e 69 74 20 28  |d txtedit_init (|
000a9cf0  76 6f 69 64 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |void);.Header:.<|
000a9d00  74 78 74 65 64 69 74 2e  68 3d 3e 74 78 74 65 64  |txtedit.h=>txted|
000a9d10  69 74 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |it>..This functi|
000a9d20  6f 6e 20 69 6e 69 74 69  61 6c 69 73 65 73 20 74  |on initialises t|
000a9d30  68 65 20 74 78 74 65 64  69 74 20 6d 6f 64 75 6c  |he txtedit modul|
000a9d40  65 2e 20 49 74 20 6d 75  73 74 20 62 65 20 63 61  |e. It must be ca|
000a9d50  6c 6c 65 64 20 62 65 66  6f 72 65 20 6f 74 68 65  |lled before othe|
000a9d60  72 20 74 78 74 65 64 69  74 20 66 75 6e 63 74 69  |r txtedit functi|
000a9d70  6f 6e 73 2e 44 41 54 41  f4 00 00 00 74 78 74 65  |ons.DATA....txte|
000a9d80  64 69 74 5f 69 6e 73 74  61 6c 6c 0a 53 79 6e 74  |dit_install.Synt|
000a9d90  61 78 3a 09 3c 74 78 74  65 64 69 74 5f 73 74 61  |ax:.<txtedit_sta|
000a9da0  74 65 3e 20 2a 74 78 74  65 64 69 74 5f 69 6e 73  |te> *txtedit_ins|
000a9db0  74 61 6c 6c 20 28 3c 74  78 74 3e 20 74 29 3b 0a  |tall (<txt> t);.|
000a9dc0  48 65 61 64 65 72 3a 09  3c 74 78 74 65 64 69 74  |Header:.<txtedit|
000a9dd0  2e 68 3d 3e 74 78 74 65  64 69 74 3e 0a 0a 52 65  |.h=>txtedit>..Re|
000a9de0  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
000a9df0  6f 20 74 68 65 20 73 74  61 74 65 2e 0a 0a 54 68  |o the state...Th|
000a9e00  69 73 20 69 6e 73 74 61  6c 6c 73 20 61 6e 20 65  |is installs an e|
000a9e10  76 65 6e 74 20 68 61 6e  64 6c 65 72 20 66 6f 72  |vent handler for|
000a9e20  20 2f 74 78 74 20 74 2f  2c 20 6d 61 6b 69 6e 67  | /txt t/, making|
000a9e30  20 69 74 20 65 64 69 74  61 62 6c 65 2e 20 2f 74  | it editable. /t|
000a9e40  2f 20 6d 75 73 74 20 68  61 76 65 20 62 65 65 6e  |/ must have been|
000a9e50  20 63 72 65 61 74 65 64  20 77 69 74 68 20 3c 74  | created with <t|
000a9e60  78 74 5f 6e 65 77 3e 2e  44 41 54 41 32 01 00 00  |xt_new>.DATA2...|
000a9e70  74 78 74 65 64 69 74 5f  6d 61 79 71 75 69 74 0a  |txtedit_mayquit.|
000a9e80  53 79 6e 74 61 78 3a 09  3c 42 4f 4f 4c 3e 20 74  |Syntax:.<BOOL> t|
000a9e90  78 74 65 64 69 74 5f 6d  61 79 71 75 69 74 20 28  |xtedit_mayquit (|
000a9ea0  76 6f 69 64 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |void);.Header:.<|
000a9eb0  74 78 74 65 64 69 74 2e  68 3d 3e 74 78 74 65 64  |txtedit.h=>txted|
000a9ec0  69 74 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 3c 54  |it>..Returns:.<T|
000a9ed0  52 55 45 3e 20 69 66 20  77 65 20 6d 61 79 20 73  |RUE> if we may s|
000a9ee0  61 66 65 6c 79 20 71 75  69 74 2e 0a 0a 0a 54 68  |afely quit....Th|
000a9ef0  69 73 20 66 75 6e 63 74  69 6f 6e 20 63 68 65 63  |is function chec|
000a9f00  6b 73 20 74 6f 20 73 65  65 20 69 66 20 77 65 20  |ks to see if we |
000a9f10  63 61 6e 20 73 61 66 65  6c 79 20 71 75 69 74 20  |can safely quit |
000a9f20  65 64 69 74 69 6e 67 2e  20 49 66 20 61 20 74 65  |editing. If a te|
000a9f30  78 74 20 69 73 20 62 65  69 6e 67 20 65 64 69 74  |xt is being edit|
000a9f40  65 64 2c 20 61 20 64 69  61 6c 6f 67 75 65 20 62  |ed, a dialogue b|
000a9f50  6f 78 20 69 73 20 64 69  73 70 6c 61 79 65 64 20  |ox is displayed |
000a9f60  75 73 69 6e 67 20 3c 64  62 6f 78 71 75 65 72 79  |using <dboxquery|
000a9f70  3e 2c 20 73 6f 20 74 68  65 20 74 65 6d 70 6c 61  |>, so the templa|
000a9f80  74 65 20 22 71 75 65 72  79 22 20 6d 75 73 74 20  |te "query" must |
000a9f90  62 65 20 6c 6f 61 64 65  64 2e 00 00 44 41 54 41  |be loaded...DATA|
000a9fa0  fb 00 00 00 74 78 74 65  64 69 74 5f 6d 65 6e 75  |....txtedit_menu|
000a9fb0  0a 53 79 6e 74 61 78 3a  09 3c 6d 65 6e 75 3e 20  |.Syntax:.<menu> |
000a9fc0  74 78 74 65 64 69 74 5f  6d 65 6e 75 20 28 3c 74  |txtedit_menu (<t|
000a9fd0  78 74 65 64 69 74 5f 73  74 61 74 65 3e 20 2a 73  |xtedit_state> *s|
000a9fe0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 74 78 74 65  |);.Header:.<txte|
000a9ff0  64 69 74 2e 68 3d 3e 74  78 74 65 64 69 74 3e 0a  |dit.h=>txtedit>.|
000aa000  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
000aa010  72 20 74 6f 20 6d 65 6e  75 20 73 74 72 75 63 74  |r to menu struct|
000aa020  75 72 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |ure...This funct|
000aa030  69 6f 6e 20 63 72 65 61  74 65 73 20 61 20 6d 65  |ion creates a me|
000aa040  6e 75 20 66 6f 72 20 74  68 65 20 74 65 78 74 20  |nu for the text |
000aa050  77 68 6f 73 65 20 73 74  61 74 65 20 69 73 20 67  |whose state is g|
000aa060  69 76 65 6e 2e 20 54 68  65 20 6d 65 6e 75 20 69  |iven. The menu i|
000aa070  73 20 74 68 65 20 73 61  6d 65 20 61 73 20 74 68  |s the same as th|
000aa080  61 74 20 66 6f 72 20 52  49 53 43 20 4f 53 20 32  |at for RISC OS 2|
000aa090  20 21 45 64 69 74 2e 00  44 41 54 41 de 00 00 00  | !Edit..DATA....|
000aa0a0  74 78 74 65 64 69 74 5f  6d 65 6e 75 65 76 65 6e  |txtedit_menueven|
000aa0b0  74 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 74  |t.Syntax:.void t|
000aa0c0  78 74 65 64 69 74 5f 6d  65 6e 75 65 76 65 6e 74  |xtedit_menuevent|
000aa0d0  20 28 3c 74 78 74 65 64  69 74 5f 73 74 61 74 65  | (<txtedit_state|
000aa0e0  3e 20 2a 73 2c 20 63 68  61 72 20 2a 68 69 74 29  |> *s, char *hit)|
000aa0f0  3b 0a 48 65 61 64 65 72  3a 09 3c 74 78 74 65 64  |;.Header:.<txted|
000aa100  69 74 2e 68 3d 3e 74 78  74 65 64 69 74 3e 0a 0a  |it.h=>txtedit>..|
000aa110  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 70 72  |This function pr|
000aa120  6f 63 65 73 73 65 73 20  61 20 6d 65 6e 75 20 68  |ocesses a menu h|
000aa130  69 74 20 66 6f 72 20 61  20 67 69 76 65 6e 20 74  |it for a given t|
000aa140  65 78 74 2e 20 49 74 20  73 68 6f 75 6c 64 20 62  |ext. It should b|
000aa150  65 20 63 61 6c 6c 65 64  20 66 72 6f 6d 20 79 6f  |e called from yo|
000aa160  75 72 20 6d 65 6e 75 20  65 76 65 6e 74 20 68 61  |ur menu event ha|
000aa170  6e 64 6c 65 72 2e 00 00  44 41 54 41 b1 01 00 00  |ndler...DATA....|
000aa180  74 78 74 65 64 69 74 5f  6e 65 77 0a 53 79 6e 74  |txtedit_new.Synt|
000aa190  61 78 3a 09 3c 74 78 74  65 64 69 74 5f 73 74 61  |ax:.<txtedit_sta|
000aa1a0  74 65 3e 20 2a 74 78 74  65 64 69 74 5f 6e 65 77  |te> *txtedit_new|
000aa1b0  20 28 63 68 61 72 20 2a  6e 61 6d 65 29 3b 0a 48  | (char *name);.H|
000aa1c0  65 61 64 65 72 3a 09 3c  74 78 74 65 64 69 74 2e  |eader:.<txtedit.|
000aa1d0  68 3d 3e 74 78 74 65 64  69 74 3e 0a 0a 52 65 74  |h=>txtedit>..Ret|
000aa1e0  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
000aa1f0  20 74 68 65 20 73 74 61  74 65 2e 0a 0a 54 68 69  | the state...Thi|
000aa200  73 20 66 75 6e 63 74 69  6f 6e 20 63 72 65 61 74  |s function creat|
000aa210  65 73 20 61 20 6e 65 77  20 74 65 78 74 20 6f 62  |es a new text ob|
000aa220  6a 65 63 74 2c 20 6c 6f  61 64 73 20 74 68 65 20  |ject, loads the |
000aa230  66 69 6c 65 20 77 68 6f  73 65 20 6e 61 6d 65 20  |file whose name |
000aa240  69 73 20 67 69 76 65 6e  20 69 6e 74 6f 20 69 74  |is given into it|
000aa250  2c 20 61 6e 64 20 6d 61  6b 65 73 20 69 74 20 65  |, and makes it e|
000aa260  64 69 74 61 62 6c 65 2e  20 49 66 20 74 68 65 20  |ditable. If the |
000aa270  66 69 6c 65 20 63 61 6e  6e 6f 74 20 62 65 20 6c  |file cannot be l|
000aa280  6f 61 64 65 64 2c 20 69  74 20 72 65 74 75 72 6e  |oaded, it return|
000aa290  20 30 20 61 6e 64 20 6e  6f 20 74 65 78 74 20 69  | 0 and no text i|
000aa2a0  73 20 63 72 65 61 74 65  64 2e 20 49 66 20 2f 6e  |s created. If /n|
000aa2b0  61 6d 65 2f 20 69 73 20  61 20 6e 75 6c 6c 20 70  |ame/ is a null p|
000aa2c0  6f 69 6e 74 65 72 20 74  68 65 6e 20 61 20 65 6d  |ointer then a em|
000aa2d0  70 74 79 20 74 65 78 74  20 69 73 20 63 72 65 61  |pty text is crea|
000aa2e0  74 65 64 2e 20 49 66 20  74 68 65 20 66 69 6c 65  |ted. If the file|
000aa2f0  20 69 73 20 61 6c 72 65  61 64 79 20 62 65 69 6e  | is already bein|
000aa300  67 20 65 64 69 74 65 64  2c 20 74 68 65 20 65 78  |g edited, the ex|
000aa310  69 73 74 69 6e 67 20 73  74 61 74 65 20 69 73 20  |isting state is |
000aa320  72 65 74 75 72 6e 65 64  2e 00 00 00 44 41 54 41  |returned....DATA|
000aa330  41 01 00 00 74 78 74 65  64 69 74 5f 6f 70 65 6e  |A...txtedit_open|
000aa340  5f 68 61 6e 64 6c 65 72  0a 54 68 69 73 20 74 79  |_handler.This ty|
000aa350  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
000aa360  20 3c 74 78 74 65 64 69  74 2e 68 3d 3e 74 78 74  | <txtedit.h=>txt|
000aa370  65 64 69 74 3e 2e 20 49  74 20 69 73 20 61 20 66  |edit>. It is a f|
000aa380  75 6e 63 74 69 6f 6e 20  6f 66 20 74 68 65 20 66  |unction of the f|
000aa390  6f 72 6d 3a 0a 0a 7b 66  43 6f 64 65 3b 61 6c 69  |orm:..{fCode;ali|
000aa3a0  67 6e 20 63 65 6e 74 72  65 7d 76 6f 69 64 20 6d  |gn centre}void m|
000aa3b0  79 66 75 6e 63 20 28 63  68 61 72 20 2a 66 69 6c  |yfunc (char *fil|
000aa3c0  65 6e 61 6d 65 2c 20 3c  74 78 74 65 64 69 74 5f  |ename, <txtedit_|
000aa3d0  73 74 61 74 65 3e 20 2a  73 2c 20 76 6f 69 64 20  |state> *s, void |
000aa3e0  2a 68 61 6e 64 6c 65 29  3b 7b 66 3b 61 6c 69 67  |*handle);{f;alig|
000aa3f0  6e 7d 0a 0a 2f 68 61 6e  64 6c 65 2f 20 69 73 20  |n}../handle/ is |
000aa400  74 68 65 20 76 61 6c 75  65 20 70 61 73 73 65 64  |the value passed|
000aa410  20 77 68 65 6e 20 72 65  67 69 73 74 65 72 69 6e  | when registerin|
000aa420  67 20 74 68 65 20 66 75  6e 63 74 69 6f 6e 2e 20  |g the function. |
000aa430  2f 66 69 6c 65 6e 61 6d  65 2f 20 69 73 20 74 68  |/filename/ is th|
000aa440  65 20 66 69 6c 65 6e 61  6d 65 20 6f 66 20 74 68  |e filename of th|
000aa450  65 20 74 65 78 74 2c 20  61 6e 64 20 2f 73 2f 20  |e text, and /s/ |
000aa460  69 73 20 69 74 73 20 73  74 61 74 65 2e 00 00 00  |is its state....|
000aa470  44 41 54 41 1a 01 00 00  74 78 74 65 64 69 74 5f  |DATA....txtedit_|
000aa480  70 72 65 71 75 69 74 0a  53 79 6e 74 61 78 3a 09  |prequit.Syntax:.|
000aa490  76 6f 69 64 20 74 78 74  65 64 69 74 5f 70 72 65  |void txtedit_pre|
000aa4a0  71 75 69 74 20 28 76 6f  69 64 29 3b 0a 48 65 61  |quit (void);.Hea|
000aa4b0  64 65 72 3a 09 3c 74 78  74 65 64 69 74 2e 68 3d  |der:.<txtedit.h=|
000aa4c0  3e 74 78 74 65 64 69 74  3e 0a 0a 54 68 69 73 20  |>txtedit>..This |
000aa4d0  66 75 6e 63 74 69 6f 6e  20 69 73 20 69 6e 74 65  |function is inte|
000aa4e0  6e 64 65 64 20 74 6f 20  64 65 61 6c 20 77 69 74  |nded to deal wit|
000aa4f0  68 20 61 20 3c 4d 65 73  73 61 67 65 5f 50 72 65  |h a <Message_Pre|
000aa500  51 75 69 74 3d 3e 53 57  49 3a 57 69 6d 70 5f 75  |Quit=>SWI:Wimp_u|
000aa510  6d 38 3e 2e 20 49 74 20  63 61 6c 6c 73 20 3c 74  |m8>. It calls <t|
000aa520  78 74 65 64 69 74 5f 6d  61 79 71 75 69 74 3e 2c  |xtedit_mayquit>,|
000aa530  20 61 6e 64 20 69 66 20  77 65 20 6d 61 79 20 74  | and if we may t|
000aa540  68 65 6e 20 69 74 20 64  69 73 70 6f 73 65 73 20  |hen it disposes |
000aa550  6f 66 20 61 6c 6c 20 74  65 78 74 73 20 61 6e 64  |of all texts and|
000aa560  20 74 65 6c 6c 73 20 74  68 65 20 54 61 73 6b 20  | tells the Task |
000aa570  4d 61 6e 61 67 65 72 20  77 65 27 72 65 20 63 6c  |Manager we're cl|
000aa580  65 61 72 20 74 6f 20 67  6f 2e 00 00 44 41 54 41  |ear to go...DATA|
000aa590  43 01 00 00 74 78 74 65  64 69 74 5f 72 65 67 69  |C...txtedit_regi|
000aa5a0  73 74 65 72 5f 63 6c 6f  73 65 5f 68 61 6e 64 6c  |ster_close_handl|
000aa5b0  65 72 0a 53 79 6e 74 61  78 3a 09 3c 74 78 74 65  |er.Syntax:.<txte|
000aa5c0  64 69 74 5f 63 6c 6f 73  65 5f 68 61 6e 64 6c 65  |dit_close_handle|
000aa5d0  72 3e 20 74 78 74 65 64  69 74 5f 72 65 67 69 73  |r> txtedit_regis|
000aa5e0  74 65 72 5f 63 6c 6f 73  65 5f 68 61 6e 64 6c 65  |ter_close_handle|
000aa5f0  72 20 28 74 78 74 65 64  69 74 5f 63 6c 6f 73 65  |r (txtedit_close|
000aa600  5f 68 61 6e 64 6c 65 72  20 68 2c 20 76 6f 69 64  |_handler h, void|
000aa610  20 2a 68 61 6e 64 6c 65  29 3b 0a 48 65 61 64 65  | *handle);.Heade|
000aa620  72 3a 09 3c 74 78 74 65  64 69 74 2e 68 3d 3e 74  |r:.<txtedit.h=>t|
000aa630  78 74 65 64 69 74 3e 0a  0a 52 65 74 75 72 6e 73  |xtedit>..Returns|
000aa640  3a 09 54 68 65 20 6f 6c  64 20 68 61 6e 64 6c 65  |:.The old handle|
000aa650  72 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |r...This functio|
000aa660  6e 20 72 65 67 69 73 74  65 72 73 20 61 20 68 61  |n registers a ha|
000aa670  6e 64 6c 65 72 20 74 6f  20 62 65 20 63 61 6c 6c  |ndler to be call|
000aa680  65 64 20 77 68 65 6e 65  76 65 72 20 61 20 74 65  |ed whenever a te|
000aa690  78 74 20 77 69 6e 64 6f  77 20 69 73 20 63 6c 6f  |xt window is clo|
000aa6a0  73 65 64 2e 20 49 66 20  7b 2f 7d 68 3d 3d 30 7b  |sed. If {/}h==0{|
000aa6b0  2f 7d 20 74 68 65 6e 20  74 68 65 20 68 61 6e 64  |/} then the hand|
000aa6c0  6c 65 72 20 69 73 20 72  65 6d 6f 76 65 64 2e 00  |ler is removed..|
000aa6d0  44 41 54 41 46 01 00 00  74 78 74 65 64 69 74 5f  |DATAF...txtedit_|
000aa6e0  72 65 67 69 73 74 65 72  5f 6f 70 65 6e 5f 68 61  |register_open_ha|
000aa6f0  6e 64 6c 65 72 0a 53 79  6e 74 61 78 3a 09 3c 74  |ndler.Syntax:.<t|
000aa700  78 74 65 64 69 74 5f 6f  70 65 6e 5f 68 61 6e 64  |xtedit_open_hand|
000aa710  6c 65 72 3e 20 74 78 74  65 64 69 74 5f 72 65 67  |ler> txtedit_reg|
000aa720  69 73 74 65 72 5f 6f 70  65 6e 5f 68 61 6e 64 6c  |ister_open_handl|
000aa730  65 72 20 28 74 78 74 65  64 69 74 5f 6f 70 65 6e  |er (txtedit_open|
000aa740  5f 68 61 6e 64 6c 65 72  20 68 2c 20 76 6f 69 64  |_handler h, void|
000aa750  20 2a 68 61 6e 64 6c 65  29 3b 0a 48 65 61 64 65  | *handle);.Heade|
000aa760  72 3a 09 3c 74 78 74 65  64 69 74 2e 68 3d 3e 74  |r:.<txtedit.h=>t|
000aa770  78 74 65 64 69 74 3e 0a  0a 52 65 74 75 72 6e 73  |xtedit>..Returns|
000aa780  3a 09 54 68 65 20 6f 6c  64 20 68 61 6e 64 6c 65  |:.The old handle|
000aa790  72 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |r...This functio|
000aa7a0  6e 20 72 65 67 69 73 74  65 72 73 20 61 20 68 61  |n registers a ha|
000aa7b0  6e 64 6c 65 72 20 74 6f  20 62 65 20 63 61 6c 6c  |ndler to be call|
000aa7c0  65 64 20 77 68 65 6e 65  76 65 72 20 61 20 6e 65  |ed whenever a ne|
000aa7d0  77 20 65 64 69 74 61 62  6c 65 20 74 65 78 74 20  |w editable text |
000aa7e0  69 73 20 63 72 65 61 74  65 64 2e 20 49 66 20 7b  |is created. If {|
000aa7f0  2f 7d 68 3d 3d 30 7b 2f  7d 20 74 68 65 6e 20 74  |/}h==0{/} then t|
000aa800  68 65 20 68 61 6e 64 6c  65 72 20 69 73 20 72 65  |he handler is re|
000aa810  6d 6f 76 65 64 2e 00 00  44 41 54 41 48 01 00 00  |moved...DATAH...|
000aa820  74 78 74 65 64 69 74 5f  72 65 67 69 73 74 65 72  |txtedit_register|
000aa830  5f 73 61 76 65 5f 68 61  6e 64 6c 65 72 0a 53 79  |_save_handler.Sy|
000aa840  6e 74 61 78 3a 09 3c 74  78 74 65 64 69 74 5f 73  |ntax:.<txtedit_s|
000aa850  61 76 65 5f 68 61 6e 64  6c 65 72 3e 20 74 78 74  |ave_handler> txt|
000aa860  65 64 69 74 5f 72 65 67  69 73 74 65 72 5f 73 61  |edit_register_sa|
000aa870  76 65 5f 68 61 6e 64 6c  65 72 20 28 74 78 74 65  |ve_handler (txte|
000aa880  64 69 74 5f 73 61 76 65  5f 68 61 6e 64 6c 65 72  |dit_save_handler|
000aa890  20 68 2c 20 76 6f 69 64  20 2a 68 61 6e 64 6c 65  | h, void *handle|
000aa8a0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 74 78 74 65  |);.Header:.<txte|
000aa8b0  64 69 74 2e 68 3d 3e 74  78 74 65 64 69 74 3e 0a  |dit.h=>txtedit>.|
000aa8c0  0a 52 65 74 75 72 6e 73  3a 09 54 68 65 20 6f 6c  |.Returns:.The ol|
000aa8d0  64 20 68 61 6e 64 6c 65  72 2e 0a 0a 54 68 69 73  |d handler...This|
000aa8e0  20 66 75 6e 63 74 69 6f  6e 20 72 65 67 69 73 74  | function regist|
000aa8f0  65 72 73 20 61 20 68 61  6e 64 6c 65 72 20 74 6f  |ers a handler to|
000aa900  20 62 65 20 63 61 6c 6c  65 64 20 77 68 65 6e 65  | be called whene|
000aa910  76 65 72 20 61 20 74 65  78 74 20 77 69 6e 64 6f  |ver a text windo|
000aa920  77 20 69 73 20 73 61 76  65 64 20 74 6f 20 61 20  |w is saved to a |
000aa930  66 69 6c 65 2e 20 49 66  20 7b 2f 7d 68 3d 3d 30  |file. If {/}h==0|
000aa940  7b 2f 7d 20 74 68 65 6e  20 74 68 65 20 68 61 6e  |{/} then the han|
000aa950  64 6c 65 72 20 69 73 20  72 65 6d 6f 76 65 64 2e  |dler is removed.|
000aa960  44 41 54 41 8a 01 00 00  74 78 74 65 64 69 74 5f  |DATA....txtedit_|
000aa970  73 61 76 65 5f 68 61 6e  64 6c 65 72 0a 54 68 69  |save_handler.Thi|
000aa980  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
000aa990  64 20 69 6e 20 3c 74 78  74 65 64 69 74 2e 68 3d  |d in <txtedit.h=|
000aa9a0  3e 74 78 74 65 64 69 74  3e 2e 20 49 74 20 69 73  |>txtedit>. It is|
000aa9b0  20 61 20 66 75 6e 63 74  69 6f 6e 20 6f 66 20 74  | a function of t|
000aa9c0  68 65 20 66 6f 72 6d 3a  0a 0a 7b 66 43 6f 64 65  |he form:..{fCode|
000aa9d0  3b 61 6c 69 67 6e 20 63  65 6e 74 72 65 7d 3c 42  |;align centre}<B|
000aa9e0  4f 4f 4c 3e 20 6d 79 66  75 6e 63 20 28 63 68 61  |OOL> myfunc (cha|
000aa9f0  72 20 2a 66 69 6c 65 6e  61 6d 65 2c 20 3c 74 78  |r *filename, <tx|
000aaa00  74 65 64 69 74 5f 73 74  61 74 65 3e 20 2a 73 2c  |tedit_state> *s,|
000aaa10  20 76 6f 69 64 20 2a 68  61 6e 64 6c 65 29 3b 7b  | void *handle);{|
000aaa20  66 3b 61 6c 69 67 6e 7d  0a 0a 2f 68 61 6e 64 6c  |f;align}../handl|
000aaa30  65 2f 20 69 73 20 74 68  65 20 76 61 6c 75 65 20  |e/ is the value |
000aaa40  70 61 73 73 65 64 20 77  68 65 6e 20 72 65 67 69  |passed when regi|
000aaa50  73 74 65 72 69 6e 67 20  74 68 65 20 66 75 6e 63  |stering the func|
000aaa60  74 69 6f 6e 2e 20 2f 66  69 6c 65 6e 61 6d 65 2f  |tion. /filename/|
000aaa70  20 69 73 20 74 68 65 20  77 69 6e 64 6f 77 20 74  | is the window t|
000aaa80  69 74 6c 65 20 66 69 6c  65 6e 61 6d 65 2c 20 61  |itle filename, a|
000aaa90  6e 64 20 2f 73 2f 20 69  73 20 74 68 65 20 74 65  |nd /s/ is the te|
000aaaa0  78 74 20 73 74 61 74 65  2e 20 54 68 69 73 20 66  |xt state. This f|
000aaab0  75 6e 63 74 69 6f 6e 20  73 68 6f 75 6c 64 20 72  |unction should r|
000aaac0  65 74 75 72 6e 20 3c 46  41 4c 53 45 3e 20 74 6f  |eturn <FALSE> to|
000aaad0  20 61 62 6f 72 74 20 74  68 65 20 73 61 76 65 20  | abort the save |
000aaae0  6f 70 65 72 61 74 69 6f  6e 2e 00 00 44 41 54 41  |operation...DATA|
000aaaf0  c9 00 00 00 74 78 74 65  64 69 74 5f 73 65 6c 74  |....txtedit_selt|
000aab00  79 70 65 0a 54 68 69 73  20 74 79 70 65 20 69 73  |ype.This type is|
000aab10  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 74 78 74  | defined in <txt|
000aab20  65 64 69 74 2e 68 3d 3e  74 78 74 65 64 69 74 3e  |edit.h=>txtedit>|
000aab30  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
000aab40  61 73 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |as the following|
000aab50  20 65 6e 75 6d 65 72 61  74 65 64 20 74 79 70 65  | enumerated type|
000aab60  3a 0a 0a 20 20 5c 7b 0a  20 20 20 20 74 78 74 65  |:..  \{.    txte|
000aab70  64 69 74 5f 43 48 41 52  53 45 4c 09 3d 20 31 2c  |dit_CHARSEL.= 1,|
000aab80  0a 20 20 20 20 74 78 74  65 64 69 74 5f 57 4f 52  |.    txtedit_WOR|
000aab90  44 53 45 4c 09 3d 20 32  2c 0a 20 20 20 20 74 78  |DSEL.= 2,.    tx|
000aaba0  74 65 64 69 74 5f 4c 49  4e 45 53 45 4c 09 3d 20  |tedit_LINESEL.= |
000aabb0  34 0a 20 20 7d 00 00 00  44 41 54 41 f3 00 00 00  |4.  }...DATA....|
000aabc0  74 78 74 65 64 69 74 5f  73 68 75 74 64 6f 77 6e  |txtedit_shutdown|
000aabd0  5f 68 61 6e 64 6c 65 72  0a 54 68 69 73 20 74 79  |_handler.This ty|
000aabe0  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
000aabf0  20 3c 74 78 74 65 64 69  74 2e 68 3d 3e 74 78 74  | <txtedit.h=>txt|
000aac00  65 64 69 74 3e 2e 20 49  74 20 69 73 20 61 20 66  |edit>. It is a f|
000aac10  75 6e 63 74 69 6f 6e 20  6f 66 20 74 68 65 20 66  |unction of the f|
000aac20  6f 72 6d 3a 0a 7b 77 72  61 70 20 6f 66 66 7d 0a  |orm:.{wrap off}.|
000aac30  7b 66 43 6f 64 65 3b 61  6c 69 67 6e 20 63 65 6e  |{fCode;align cen|
000aac40  74 72 65 7d 76 6f 69 64  20 6d 79 66 75 6e 63 20  |tre}void myfunc |
000aac50  28 76 6f 69 64 20 2a 68  61 6e 64 6c 65 29 3b 7b  |(void *handle);{|
000aac60  66 3b 61 6c 69 67 6e 7d  0a 7b 77 72 61 70 7d 0a  |f;align}.{wrap}.|
000aac70  2f 68 61 6e 64 6c 65 2f  20 69 73 20 74 68 65 20  |/handle/ is the |
000aac80  76 61 6c 75 65 20 70 61  73 73 65 64 20 77 68 65  |value passed whe|
000aac90  6e 20 72 65 67 69 73 74  65 72 69 6e 67 20 74 68  |n registering th|
000aaca0  65 20 66 75 6e 63 74 69  6f 6e 2e 00 44 41 54 41  |e function..DATA|
000aacb0  f0 01 00 00 74 78 74 65  64 69 74 5f 73 74 61 74  |....txtedit_stat|
000aacc0  65 0a 54 68 69 73 20 74  79 70 65 20 69 73 20 64  |e.This type is d|
000aacd0  65 66 69 6e 65 64 20 69  6e 20 3c 74 78 74 65 64  |efined in <txted|
000aace0  69 74 2e 68 3d 3e 74 78  74 65 64 69 74 3e 20 61  |it.h=>txtedit> a|
000aacf0  73 20 61 20 74 79 70 65  20 68 6f 6c 64 69 6e 67  |s a type holding|
000aad00  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 61 62 6f  | information abo|
000aad10  75 74 20 61 6e 20 65 64  69 74 61 62 6c 65 20 74  |ut an editable t|
000aad20  65 78 74 2e 20 49 74 20  69 73 20 64 65 66 69 6e  |ext. It is defin|
000aad30  65 64 20 61 73 20 74 68  65 20 66 6f 6c 6c 6f 77  |ed as the follow|
000aad40  69 6e 67 20 73 74 72 75  63 74 75 72 65 3a 0a 0a  |ing structure:..|
000aad50  20 20 5c 7b 0a 20 20 20  20 3c 74 78 74 3e 09 09  |  \{.    <txt>..|
000aad60  74 3b 0a 20 20 20 20 3c  74 78 74 5f 6d 61 72 6b  |t;.    <txt_mark|
000aad70  65 72 3e 09 73 65 6c 70  69 76 6f 74 3b 0a 20 20  |er>.selpivot;.  |
000aad80  20 20 3c 74 78 74 65 64  69 74 5f 73 65 6c 74 79  |  <txtedit_selty|
000aad90  70 65 3e 09 73 65 6c 74  79 70 65 3b 0a 20 20 20  |pe>.seltype;.   |
000aada0  20 69 6e 74 09 09 09 73  65 6c 65 63 74 72 65 63  | int...selectrec|
000aadb0  65 6e 74 3b 0a 20 20 20  20 69 6e 74 09 09 09 73  |ent;.    int...s|
000aadc0  65 6c 65 63 74 63 74 6c  3b 0a 20 20 20 20 63 68  |electctl;.    ch|
000aadd0  61 72 09 09 66 69 6c 65  6e 61 6d 65 5b 32 35 36  |ar..filename[256|
000aade0  5d 3b 0a 20 20 20 20 3c  74 79 70 64 61 74 3e 09  |];.    <typdat>.|
000aadf0  09 74 79 3b 0a 20 20 20  20 69 6e 74 09 09 09 64  |.ty;.    int...d|
000aae00  65 6c 65 74 65 70 65 6e  64 69 6e 67 3b 0a 20 20  |eletepending;.  |
000aae10  20 20 3c 74 78 74 65 64  69 74 5f 73 74 61 74 65  |  <txtedit_state|
000aae20  3e 09 2a 6e 65 78 74 3b  0a 20 20 20 20 3c 42 4f  |>.*next;.    <BO|
000aae30  4f 4c 3e 09 09 6f 76 65  72 77 72 69 74 65 3b 0a  |OL>..overwrite;.|
000aae40  20 20 20 20 42 4f 4f 4c  09 09 77 6f 72 64 74 61  |    BOOL..wordta|
000aae50  62 3b 0a 20 20 20 20 42  4f 4f 4c 09 09 77 6f 72  |b;.    BOOL..wor|
000aae60  64 77 72 61 70 3b 0a 20  20 7d 0a 0a 54 68 65 20  |dwrap;.  }..The |
000aae70  66 69 65 6c 64 73 20 61  72 65 20 70 72 65 74 74  |fields are prett|
000aae80  79 20 73 65 6c 66 2d 65  78 70 6c 61 6e 61 74 6f  |y self-explanato|
000aae90  72 79 2c 20 49 20 74 68  69 6e 6b 2e 44 41 54 41  |ry, I think.DATA|
000aaea0  45 01 00 00 74 78 74 65  64 69 74 5f 75 6e 64 6f  |E...txtedit_undo|
000aaeb0  66 61 69 6c 5f 68 61 6e  64 6c 65 72 0a 54 68 69  |fail_handler.Thi|
000aaec0  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
000aaed0  64 20 69 6e 20 3c 74 78  74 65 64 69 74 2e 68 3d  |d in <txtedit.h=|
000aaee0  3e 74 78 74 65 64 69 74  3e 2e 20 49 74 20 69 73  |>txtedit>. It is|
000aaef0  20 61 20 66 75 6e 63 74  69 6f 6e 20 6f 66 20 74  | a function of t|
000aaf00  68 65 20 66 6f 72 6d 3a  0a 0a 7b 66 43 6f 64 65  |he form:..{fCode|
000aaf10  3b 61 6c 69 67 6e 20 63  65 6e 74 72 65 7d 76 6f  |;align centre}vo|
000aaf20  69 64 20 6d 79 66 75 6e  63 20 28 63 68 61 72 20  |id myfunc (char |
000aaf30  2a 66 69 6c 65 6e 61 6d  65 2c 20 3c 74 78 74 65  |*filename, <txte|
000aaf40  64 69 74 5f 73 74 61 74  65 3e 20 2a 73 2c 20 76  |dit_state> *s, v|
000aaf50  6f 69 64 20 2a 68 61 6e  64 6c 65 29 3b 7b 66 3b  |oid *handle);{f;|
000aaf60  61 6c 69 67 6e 7d 0a 0a  2f 68 61 6e 64 6c 65 2f  |align}../handle/|
000aaf70  20 69 73 20 74 68 65 20  76 61 6c 75 65 20 70 61  | is the value pa|
000aaf80  73 73 65 64 20 77 68 65  6e 20 72 65 67 69 73 74  |ssed when regist|
000aaf90  65 72 69 6e 67 20 74 68  65 20 66 75 6e 63 74 69  |ering the functi|
000aafa0  6f 6e 2e 20 2f 66 69 6c  65 6e 61 6d 65 2f 20 69  |on. /filename/ i|
000aafb0  73 20 74 68 65 20 66 69  6c 65 6e 61 6d 65 20 6f  |s the filename o|
000aafc0  66 20 74 68 65 20 74 65  78 74 2c 20 61 6e 64 20  |f the text, and |
000aafd0  2f 73 2f 20 69 73 20 69  74 73 20 73 74 61 74 65  |/s/ is its state|
000aafe0  2e 00 00 00 44 41 54 41  8c 01 00 00 74 78 74 65  |....DATA....txte|
000aaff0  64 69 74 5f 75 70 64 61  74 65 5f 68 61 6e 64 6c  |dit_update_handl|
000ab000  65 72 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |er.This type is |
000ab010  64 65 66 69 6e 65 64 20  69 6e 20 3c 74 78 74 65  |defined in <txte|
000ab020  64 69 74 2e 68 3d 3e 74  78 74 65 64 69 74 3e 2e  |dit.h=>txtedit>.|
000ab030  20 49 74 20 69 73 20 61  20 66 75 6e 63 74 69 6f  | It is a functio|
000ab040  6e 20 6f 66 20 74 68 65  20 66 6f 72 6d 3a 0a 0a  |n of the form:..|
000ab050  7b 66 43 6f 64 65 3b 61  6c 69 67 6e 20 63 65 6e  |{fCode;align cen|
000ab060  74 72 65 7d 3c 42 4f 4f  4c 3e 20 6d 79 66 75 6e  |tre}<BOOL> myfun|
000ab070  63 20 28 63 68 61 72 20  2a 66 69 6c 65 6e 61 6d  |c (char *filenam|
000ab080  65 2c 20 3c 74 78 74 65  64 69 74 5f 73 74 61 74  |e, <txtedit_stat|
000ab090  65 3e 20 2a 73 2c 76 6f  69 64 20 2a 68 61 6e 64  |e> *s,void *hand|
000ab0a0  6c 65 29 3b 7b 66 3b 61  6c 69 67 6e 7d 0a 0a 2f  |le);{f;align}../|
000ab0b0  68 61 6e 64 6c 65 2f 20  69 73 20 74 68 65 20 76  |handle/ is the v|
000ab0c0  61 6c 75 65 20 70 61 73  73 65 64 20 77 68 65 6e  |alue passed when|
000ab0d0  20 72 65 67 69 73 74 65  72 69 6e 67 20 74 68 65  | registering the|
000ab0e0  20 66 75 6e 63 74 69 6f  6e 2e 20 2f 66 69 6c 65  | function. /file|
000ab0f0  6e 61 6d 65 2f 20 69 73  20 74 68 65 20 77 69 6e  |name/ is the win|
000ab100  64 6f 77 20 74 69 74 6c  65 20 66 69 6c 65 6e 61  |dow title filena|
000ab110  6d 65 2c 20 61 6e 64 20  2f 73 2f 20 69 73 20 74  |me, and /s/ is t|
000ab120  68 65 20 74 65 78 74 20  73 74 61 74 65 2e 20 54  |he text state. T|
000ab130  68 65 20 66 75 6e 63 74  69 6f 6e 20 73 68 6f 75  |he function shou|
000ab140  6c 64 20 72 65 74 75 72  6e 20 3c 46 41 4c 53 45  |ld return <FALSE|
000ab150  3e 20 74 6f 20 75 6e 64  6f 20 74 68 65 20 6c 61  |> to undo the la|
000ab160  73 74 20 6d 6f 64 69 66  69 63 61 74 69 6f 6e 2e  |st modification.|
000ab170  44 41 54 41 66 01 00 00  74 78 74 65 64 69 74 5f  |DATAf...txtedit_|
000ab180  72 65 67 69 73 74 65 72  5f 75 70 64 61 74 65 5f  |register_update_|
000ab190  68 61 6e 64 6c 65 72 0a  53 79 6e 74 61 78 3a 09  |handler.Syntax:.|
000ab1a0  3c 74 78 74 65 64 69 74  5f 75 70 64 61 74 65 5f  |<txtedit_update_|
000ab1b0  68 61 6e 64 6c 65 72 3e  20 74 78 74 65 64 69 74  |handler> txtedit|
000ab1c0  5f 72 65 67 69 73 74 65  72 5f 75 70 64 61 74 65  |_register_update|
000ab1d0  5f 68 61 6e 64 6c 65 72  20 28 74 78 74 65 64 69  |_handler (txtedi|
000ab1e0  74 5f 75 70 64 61 74 65  5f 68 61 6e 64 6c 65 72  |t_update_handler|
000ab1f0  20 68 2c 20 76 6f 69 64  20 2a 68 61 6e 64 6c 65  | h, void *handle|
000ab200  29 3b 0a 48 65 61 64 65  72 3a 09 3c 74 78 74 65  |);.Header:.<txte|
000ab210  64 69 74 2e 68 3d 3e 74  78 74 65 64 69 74 3e 0a  |dit.h=>txtedit>.|
000ab220  0a 52 65 74 75 72 6e 73  3a 09 54 68 65 20 6f 6c  |.Returns:.The ol|
000ab230  64 20 68 61 6e 64 6c 65  72 2e 0a 0a 54 68 69 73  |d handler...This|
000ab240  20 66 75 6e 63 74 69 6f  6e 20 72 65 67 69 73 74  | function regist|
000ab250  65 72 73 20 61 20 68 61  6e 64 6c 65 72 20 74 6f  |ers a handler to|
000ab260  20 62 65 20 63 61 6c 6c  65 64 20 77 68 65 6e 65  | be called whene|
000ab270  76 65 72 20 61 20 74 65  78 74 20 77 69 6e 64 6f  |ver a text windo|
000ab280  77 20 69 73 20 6d 6f 64  69 66 69 65 64 20 69 65  |w is modified ie|
000ab290  20 77 68 65 6e 65 76 65  72 20 74 68 65 20 74 69  | whenever the ti|
000ab2a0  74 6c 65 20 63 68 61 6e  67 65 73 2e 20 49 66 20  |tle changes. If |
000ab2b0  7b 2f 7d 68 3d 30 7b 2f  7d 20 74 68 65 6e 20 74  |{/}h=0{/} then t|
000ab2c0  68 65 20 68 61 6e 64 6c  65 72 20 69 73 20 72 65  |he handler is re|
000ab2d0  6d 6f 76 65 64 2e 00 00  44 41 54 41 78 01 00 00  |moved...DATAx...|
000ab2e0  74 78 74 65 64 69 74 5f  72 65 67 69 73 74 65 72  |txtedit_register|
000ab2f0  5f 73 68 75 74 64 6f 77  6e 5f 68 61 6e 64 6c 65  |_shutdown_handle|
000ab300  72 0a 53 79 6e 74 61 78  3a 09 3c 74 78 74 65 64  |r.Syntax:.<txted|
000ab310  69 74 5f 73 68 75 74 64  6f 77 6e 5f 68 61 6e 64  |it_shutdown_hand|
000ab320  6c 65 72 3e 20 74 78 74  65 64 69 74 5f 72 65 67  |ler> txtedit_reg|
000ab330  69 73 74 65 72 5f 73 68  75 74 64 6f 77 6e 5f 68  |ister_shutdown_h|
000ab340  61 6e 64 6c 65 72 20 28  74 78 74 65 64 69 74 5f  |andler (txtedit_|
000ab350  73 68 75 74 64 6f 77 6e  5f 68 61 6e 64 6c 65 72  |shutdown_handler|
000ab360  20 68 2c 20 76 6f 69 64  20 2a 68 61 6e 64 6c 65  | h, void *handle|
000ab370  29 3b 0a 48 65 61 64 65  72 3a 09 3c 74 78 74 65  |);.Header:.<txte|
000ab380  64 69 74 2e 68 3d 3e 74  78 74 65 64 69 74 3e 0a  |dit.h=>txtedit>.|
000ab390  0a 52 65 74 75 72 6e 73  3a 09 54 68 65 20 6f 6c  |.Returns:.The ol|
000ab3a0  64 20 68 61 6e 64 6c 65  72 2e 0a 0a 54 68 69 73  |d handler...This|
000ab3b0  20 66 75 6e 63 74 69 6f  6e 20 72 65 67 69 73 74  | function regist|
000ab3c0  65 72 73 20 61 20 68 61  6e 64 6c 65 72 20 74 6f  |ers a handler to|
000ab3d0  20 62 65 20 63 61 6c 6c  65 64 20 77 68 65 6e 65  | be called whene|
000ab3e0  76 65 72 20 3c 74 78 74  65 64 69 74 5f 70 72 65  |ver <txtedit_pre|
000ab3f0  71 75 69 74 3e 20 69 73  20 63 61 6c 6c 65 64 20  |quit> is called |
000ab400  61 6e 64 20 61 20 73 68  75 74 64 6f 77 6e 20 69  |and a shutdown i|
000ab410  73 20 61 6c 6c 6f 77 65  64 20 74 6f 20 70 72 6f  |s allowed to pro|
000ab420  63 65 65 64 2e 20 49 66  20 7b 2f 7d 68 3d 3d 30  |ceed. If {/}h==0|
000ab430  7b 2f 7d 20 74 68 65 6e  20 74 68 65 20 68 61 6e  |{/} then the han|
000ab440  64 6c 65 72 20 69 73 20  72 65 6d 6f 76 65 64 2e  |dler is removed.|
000ab450  44 41 54 41 98 01 00 00  74 78 74 65 64 69 74 5f  |DATA....txtedit_|
000ab460  72 65 67 69 73 74 65 72  5f 75 6e 64 6f 66 61 69  |register_undofai|
000ab470  6c 5f 68 61 6e 64 6c 65  72 0a 53 79 6e 74 61 78  |l_handler.Syntax|
000ab480  3a 09 3c 74 78 74 65 64  69 74 5f 75 6e 64 6f 66  |:.<txtedit_undof|
000ab490  61 69 6c 5f 68 61 6e 64  6c 65 72 3e 20 74 78 74  |ail_handler> txt|
000ab4a0  65 64 69 74 5f 72 65 67  69 73 74 65 72 5f 75 6e  |edit_register_un|
000ab4b0  64 6f 66 61 69 6c 5f 68  61 6e 64 6c 65 72 20 28  |dofail_handler (|
000ab4c0  74 78 74 65 64 69 74 5f  75 6e 64 6f 66 61 69 6c  |txtedit_undofail|
000ab4d0  5f 68 61 6e 64 6c 65 72  20 68 2c 20 76 6f 69 64  |_handler h, void|
000ab4e0  20 2a 68 61 6e 64 6c 65  29 3b 0a 48 65 61 64 65  | *handle);.Heade|
000ab4f0  72 3a 09 3c 74 78 74 65  64 69 74 2e 68 3d 3e 74  |r:.<txtedit.h=>t|
000ab500  78 74 65 64 69 74 3e 0a  0a 52 65 74 75 72 6e 73  |xtedit>..Returns|
000ab510  3a 09 54 68 65 20 6f 6c  64 20 68 61 6e 64 6c 65  |:.The old handle|
000ab520  72 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |r...This functio|
000ab530  6e 20 72 65 67 69 73 74  65 72 73 20 61 20 68 61  |n registers a ha|
000ab540  6e 64 6c 65 72 20 74 6f  20 62 65 20 63 61 6c 6c  |ndler to be call|
000ab550  65 64 20 77 68 65 6e 65  76 65 72 20 74 68 65 20  |ed whenever the |
000ab560  6d 6f 64 69 66 69 63 61  74 69 6f 6e 20 6d 61 64  |modification mad|
000ab570  65 20 74 6f 20 61 6e 20  65 64 69 74 65 64 20 66  |e to an edited f|
000ab580  69 6c 65 20 63 61 6e 6e  6f 74 20 62 65 20 75 6e  |ile cannot be un|
000ab590  64 6f 6e 65 20 28 69 6e  20 63 6f 6e 6a 75 6e 63  |done (in conjunc|
000ab5a0  74 69 6f 6e 20 77 69 74  68 20 61 6e 20 75 70 64  |tion with an upd|
000ab5b0  61 74 65 20 68 61 6e 64  6c 65 72 29 2e 20 49 66  |ate handler). If|
000ab5c0  20 7b 2f 7d 68 3d 3d 30  7b 2f 7d 20 74 68 65 6e  | {/}h==0{/} then|
000ab5d0  20 74 68 65 20 68 61 6e  64 6c 65 72 20 69 73 20  | the handler is |
000ab5e0  72 65 6d 6f 76 65 64 2e  44 41 54 41 95 00 00 00  |removed.DATA....|
000ab5f0  74 78 74 6f 70 74 2e 68  0a 54 68 69 73 20 68 65  |txtopt.h.This he|
000ab600  61 64 65 72 20 64 65 63  6c 61 72 65 73 20 74 77  |ader declares tw|
000ab610  6f 20 66 75 6e 63 74 69  6f 6e 73 20 64 65 61 6c  |o functions deal|
000ab620  69 6e 67 20 77 69 74 68  20 74 65 78 74 20 65 64  |ing with text ed|
000ab630  69 74 69 6e 67 20 6f 70  74 69 6f 6e 73 2e 0a 0a  |iting options...|
000ab640  46 75 6e 63 74 69 6f 6e  73 3a 0a 7b 61 6c 69 67  |Functions:.{alig|
000ab650  6e 20 63 65 6e 74 72 65  7d 0a 3c 74 78 74 6f 70  |n centre}.<txtop|
000ab660  74 5f 73 65 74 5f 6e 61  6d 65 3e 0a 3c 74 78 74  |t_set_name>.<txt|
000ab670  6f 70 74 5f 67 65 74 5f  6e 61 6d 65 3e 00 00 00  |opt_get_name>...|
000ab680  44 49 52 24 54 00 00 00  54 00 00 00 d4 b6 0a 00  |DIR$T...T.......|
000ab690  46 ff ff ff 91 da e5 24  3c 01 00 00 13 00 00 00  |F......$<.......|
000ab6a0  00 00 00 00 67 65 74 5f  6e 61 6d 65 00 00 00 00  |....get_name....|
000ab6b0  10 b8 0a 00 46 ff ff ff  4f d5 e5 24 08 01 00 00  |....F...O..$....|
000ab6c0  13 00 00 00 00 00 00 00  73 65 74 5f 6e 61 6d 65  |........set_name|
000ab6d0  00 00 00 00 44 41 54 41  3c 01 00 00 74 78 74 6f  |....DATA<...txto|
000ab6e0  70 74 5f 67 65 74 5f 6e  61 6d 65 0a 53 79 6e 74  |pt_get_name.Synt|
000ab6f0  61 78 3a 09 63 68 61 72  20 2a 74 78 74 6f 70 74  |ax:.char *txtopt|
000ab700  5f 67 65 74 5f 6e 61 6d  65 20 28 76 6f 69 64 29  |_get_name (void)|
000ab710  3b 0a 48 65 61 64 65 72  3a 09 3c 74 78 74 6f 70  |;.Header:.<txtop|
000ab720  74 2e 68 3d 3e 74 78 74  6f 70 74 3e 0a 0a 52 65  |t.h=>txtopt>..Re|
000ab730  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
000ab740  6f 20 74 68 65 20 6e 61  6d 65 2e 0a 0a 54 68 69  |o the name...Thi|
000ab750  73 20 66 75 6e 63 74 69  6f 6e 20 67 65 74 73 20  |s function gets |
000ab760  74 68 65 20 66 69 72 73  74 20 70 61 72 74 20 6f  |the first part o|
000ab770  66 20 74 68 65 20 6e 61  6d 65 20 75 73 65 64 20  |f the name used |
000ab780  61 73 20 61 20 73 79 73  74 65 6d 20 76 61 72 69  |as a system vari|
000ab790  61 62 6c 65 20 66 6f 72  20 73 65 74 74 69 6e 67  |able for setting|
000ab7a0  20 74 65 78 74 20 65 64  69 74 69 6e 67 20 6f 70  | text editing op|
000ab7b0  74 69 6f 6e 73 20 28 74  68 65 20 6c 61 73 74 20  |tions (the last |
000ab7c0  70 61 72 74 20 62 65 69  6e 67 20 22 24 4f 70 74  |part being "$Opt|
000ab7d0  69 6f 6e 73 22 29 2e 20  49 74 20 64 65 66 61 75  |ions"). It defau|
000ab7e0  6c 74 73 20 74 6f 20 22  45 64 69 74 22 20 69 65  |lts to "Edit" ie|
000ab7f0  20 74 68 65 20 76 61 72  69 61 62 6c 65 20 69 73  | the variable is|
000ab800  20 22 45 64 69 74 24 4f  70 74 69 6f 6e 73 22 2e  | "Edit$Options".|
000ab810  44 41 54 41 08 01 00 00  74 78 74 6f 70 74 5f 73  |DATA....txtopt_s|
000ab820  65 74 5f 6e 61 6d 65 0a  53 79 6e 74 61 78 3a 09  |et_name.Syntax:.|
000ab830  76 6f 69 64 20 74 78 74  6f 70 74 5f 73 65 74 5f  |void txtopt_set_|
000ab840  6e 61 6d 65 20 28 63 68  61 72 20 2a 6e 61 6d 65  |name (char *name|
000ab850  29 3b 0a 48 65 61 64 65  72 3a 09 3c 74 78 74 6f  |);.Header:.<txto|
000ab860  70 74 2e 68 3d 3e 74 78  74 6f 70 74 3e 0a 0a 54  |pt.h=>txtopt>..T|
000ab870  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 65 74  |his function set|
000ab880  73 20 74 68 65 20 66 69  72 73 74 20 70 61 72 74  |s the first part|
000ab890  20 6f 66 20 74 68 65 20  6e 61 6d 65 20 75 73 65  | of the name use|
000ab8a0  64 20 61 73 20 61 20 73  79 73 74 65 6d 20 76 61  |d as a system va|
000ab8b0  72 69 61 62 6c 65 20 66  6f 72 20 73 65 74 74 69  |riable for setti|
000ab8c0  6e 67 20 74 65 78 74 20  65 64 69 74 69 6e 67 20  |ng text editing |
000ab8d0  6f 70 74 69 6f 6e 73 20  28 74 68 65 20 6c 61 73  |options (the las|
000ab8e0  74 20 70 61 72 74 20 62  65 69 6e 67 20 22 24 4f  |t part being "$O|
000ab8f0  70 74 69 6f 6e 73 22 29  2e 20 49 74 20 64 65 66  |ptions"). It def|
000ab900  61 75 6c 74 73 20 74 6f  20 22 45 64 69 74 24 4f  |aults to "Edit$O|
000ab910  70 74 69 6f 6e 73 22 2e  44 41 54 41 b5 00 00 00  |ptions".DATA....|
000ab920  74 78 74 73 63 72 61 70  2e 68 0a 54 68 69 73 20  |txtscrap.h.This |
000ab930  68 65 61 64 65 72 20 64  65 63 6c 61 72 65 73 20  |header declares |
000ab940  66 75 6e 63 74 69 6f 6e  73 20 74 6f 20 63 6f 6f  |functions to coo|
000ab950  72 64 69 6e 61 74 65 20  61 20 75 6e 69 71 75 65  |rdinate a unique|
000ab960  20 74 78 74 20 73 65 6c  65 63 74 69 6f 6e 20 61  | txt selection a|
000ab970  6d 6f 6e 67 20 6d 61 6e  74 20 74 78 74 20 6f 62  |mong mant txt ob|
000ab980  6a 65 63 74 73 2e 0a 0a  46 75 6e 63 74 69 6f 6e  |jects...Function|
000ab990  73 3a 0a 7b 61 6c 69 67  6e 20 63 65 6e 74 72 65  |s:.{align centre|
000ab9a0  7d 0a 3c 74 78 74 73 63  72 61 70 5f 73 65 74 73  |}.<txtscrap_sets|
000ab9b0  65 6c 65 63 74 3e 0a 3c  74 78 74 73 63 72 61 70  |elect>.<txtscrap|
000ab9c0  5f 73 65 6c 65 63 74 6f  77 6e 65 72 3e 00 00 00  |_selectowner>...|
000ab9d0  44 49 52 24 54 00 00 00  54 00 00 00 24 ba 0a 00  |DIR$T...T...$...|
000ab9e0  46 ff ff ff 93 07 e6 24  df 00 00 00 13 00 00 00  |F......$........|
000ab9f0  00 00 00 00 73 65 6c 65  63 74 6f 77 6e 65 72 00  |....selectowner.|
000aba00  04 bb 0a 00 46 ff ff ff  12 f9 e5 24 b3 01 00 00  |....F......$....|
000aba10  13 00 00 00 00 00 00 00  73 65 74 73 65 6c 65 63  |........setselec|
000aba20  74 00 00 00 44 41 54 41  df 00 00 00 74 78 74 73  |t...DATA....txts|
000aba30  63 72 61 70 5f 73 65 6c  65 63 74 6f 77 6e 65 72  |crap_selectowner|
000aba40  0a 53 79 6e 74 61 78 3a  09 3c 74 78 74 3e 20 74  |.Syntax:.<txt> t|
000aba50  78 74 73 63 72 61 70 5f  73 65 6c 65 63 74 6f 77  |xtscrap_selectow|
000aba60  6e 65 72 20 28 76 6f 69  64 29 3b 0a 48 65 61 64  |ner (void);.Head|
000aba70  65 72 3a 09 3c 74 78 74  73 63 72 61 70 2e 68 3d  |er:.<txtscrap.h=|
000aba80  3e 74 78 74 73 63 72 61  70 3e 0a 0a 52 65 74 75  |>txtscrap>..Retu|
000aba90  72 6e 73 3a 09 48 61 6e  64 6c 65 20 6f 66 20 74  |rns:.Handle of t|
000abaa0  68 65 20 74 78 74 20 68  6f 6c 64 69 6e 67 20 73  |he txt holding s|
000abab0  65 6c 65 63 74 69 6f 6e  2e 0a 0a 54 68 69 73 20  |election...This |
000abac0  66 75 6e 63 74 69 6f 6e  20 72 65 74 75 72 6e 73  |function returns|
000abad0  20 74 68 65 20 63 75 72  72 65 6e 74 20 68 6f 6c  | the current hol|
000abae0  64 65 72 20 6f 66 20 74  68 65 20 73 65 6c 65 63  |der of the selec|
000abaf0  74 69 6f 6e 2c 20 6f 72  20 30 20 69 66 20 6e 6f  |tion, or 0 if no|
000abb00  6e 65 2e 00 44 41 54 41  b3 01 00 00 74 78 74 73  |ne..DATA....txts|
000abb10  63 72 61 70 5f 73 65 74  73 65 6c 65 63 74 0a 53  |crap_setselect.S|
000abb20  79 6e 74 61 78 3a 09 76  6f 69 64 20 74 78 74 73  |yntax:.void txts|
000abb30  63 72 61 70 5f 73 65 74  73 65 6c 65 63 74 20 28  |crap_setselect (|
000abb40  3c 74 78 74 3e 20 74 2c  20 3c 74 78 74 5f 69 6e  |<txt> t, <txt_in|
000abb50  64 65 78 3e 20 66 72 6f  6d 2c 20 74 78 74 5f 69  |dex> from, txt_i|
000abb60  6e 64 65 78 20 74 6f 29  3b 0a 48 65 61 64 65 72  |ndex to);.Header|
000abb70  3a 09 3c 74 78 74 73 63  72 61 70 2e 68 3d 3e 74  |:.<txtscrap.h=>t|
000abb80  78 74 73 63 72 61 70 3e  0a 0a 54 68 69 73 20 66  |xtscrap>..This f|
000abb90  75 6e 63 74 69 6f 6e 20  63 61 6c 6c 73 20 7b 66  |unction calls {f|
000abba0  43 6f 64 65 7d 3c 74 78  74 5f 73 65 74 73 65 6c  |Code}<txt_setsel|
000abbb0  65 63 74 3e 28 74 2c 66  72 6f 6d 2c 74 6f 29 7b  |ect>(t,from,to){|
000abbc0  66 7d 20 61 6e 64 20 72  65 6d 65 6d 62 65 72 73  |f} and remembers|
000abbd0  20 2f 74 2f 2e 20 49 66  20 61 6e 6f 74 68 65 72  | /t/. If another|
000abbe0  20 74 78 74 20 6f 62 6a  65 63 74 20 63 75 72 72  | txt object curr|
000abbf0  65 6e 74 6c 79 20 68 6f  6c 64 73 20 74 68 65 20  |ently holds the |
000abc00  73 65 6c 65 63 74 69 6f  6e 20 74 68 65 6e 20 74  |selection then t|
000abc10  68 69 73 20 69 73 20 66  69 72 73 74 20 63 6c 65  |his is first cle|
000abc20  61 72 65 64 2e 20 49 66  20 2f 66 72 6f 6d 2f 20  |ared. If /from/ |
000abc30  3e 3d 20 2f 74 6f 2f 20  74 68 65 6e 20 74 68 65  |>= /to/ then the|
000abc40  20 73 65 6c 65 63 74 69  6f 6e 20 77 69 6c 6c 20  | selection will |
000abc50  62 65 20 75 6e 73 65 74  20 61 6e 64 20 2f 74 2f  |be unset and /t/|
000abc60  20 77 69 6c 6c 20 6e 6f  74 20 62 65 20 72 65 6d  | will not be rem|
000abc70  65 6d 62 65 72 65 64 2e  20 41 20 74 78 74 20 6d  |embered. A txt m|
000abc80  75 73 74 20 62 65 20 6e  6f 74 20 64 65 73 74 72  |ust be not destr|
000abc90  6f 79 65 64 20 77 68 69  6c 65 20 73 74 69 6c 6c  |oyed while still|
000abca0  20 68 6f 6c 64 69 6e 67  20 74 68 65 20 73 65 6c  | holding the sel|
000abcb0  65 63 74 69 6f 6e 2e 00  44 41 54 41 d5 00 00 00  |ection..DATA....|
000abcc0  74 78 74 77 69 6e 2e 68  0a 54 68 69 73 20 68 65  |txtwin.h.This he|
000abcd0  61 64 65 72 20 64 65 63  6c 61 72 65 73 20 66 75  |ader declares fu|
000abce0  6e 63 74 69 6f 6e 73 20  66 6f 72 20 6d 75 6c 74  |nctions for mult|
000abcf0  69 70 6c 65 20 77 69 6e  64 6f 77 73 20 63 6f 6e  |iple windows con|
000abd00  74 61 69 6e 69 6e 67 20  74 68 65 20 73 61 6d 65  |taining the same|
000abd10  20 74 65 78 74 20 6f 62  6a 65 63 74 2e 0a 0a 46  | text object...F|
000abd20  75 6e 63 74 69 6f 6e 73  3a 0a 0a 23 74 61 62 6c  |unctions:..#tabl|
000abd30  65 20 63 6f 6c 75 6d 6e  73 20 32 0a 3c 74 78 74  |e columns 2.<txt|
000abd40  77 69 6e 5f 6e 65 77 3e  0a 3c 74 78 74 77 69 6e  |win_new>.<txtwin|
000abd50  5f 6e 75 6d 62 65 72 3e  0a 3c 74 78 74 77 69 6e  |_number>.<txtwin|
000abd60  5f 64 69 73 70 6f 73 65  3e 0a 3c 74 78 74 77 69  |_dispose>.<txtwi|
000abd70  6e 5f 73 65 74 63 75 72  72 65 6e 74 77 69 6e 64  |n_setcurrentwind|
000abd80  6f 77 3e 0a 23 65 6e 64  74 61 62 6c 65 00 00 00  |ow>.#endtable...|
000abd90  44 49 52 24 94 00 00 00  94 00 00 00 24 be 0a 00  |DIR$........$...|
000abda0  46 ff ff ff 7e 2a e6 24  bd 00 00 00 13 00 00 00  |F...~*.$........|
000abdb0  00 00 00 00 64 69 73 70  6f 73 65 00 e4 be 0a 00  |....dispose.....|
000abdc0  46 ff ff ff 78 1f e6 24  10 01 00 00 13 00 00 00  |F...x..$........|
000abdd0  00 00 00 00 6e 65 77 00  f4 bf 0a 00 46 ff ff ff  |....new.....F...|
000abde0  c2 24 e6 24 c4 00 00 00  13 00 00 00 00 00 00 00  |.$.$............|
000abdf0  6e 75 6d 62 65 72 00 00  b8 c0 0a 00 46 ff ff ff  |number......F...|
000abe00  95 2f e6 24 59 01 00 00  13 00 00 00 00 00 00 00  |./.$Y...........|
000abe10  73 65 74 63 75 72 72 65  6e 74 77 69 6e 64 6f 77  |setcurrentwindow|
000abe20  00 00 00 00 44 41 54 41  bd 00 00 00 74 78 74 77  |....DATA....txtw|
000abe30  69 6e 5f 64 69 73 70 6f  73 65 0a 53 79 6e 74 61  |in_dispose.Synta|
000abe40  78 3a 09 76 6f 69 64 20  74 78 74 77 69 6e 5f 64  |x:.void txtwin_d|
000abe50  69 73 70 6f 73 65 20 28  3c 74 78 74 3e 20 74 29  |ispose (<txt> t)|
000abe60  3b 0a 48 65 61 64 65 72  3a 09 3c 74 78 74 77 69  |;.Header:.<txtwi|
000abe70  6e 2e 68 3d 3e 74 78 74  77 69 6e 3e 0a 0a 54 68  |n.h=>txtwin>..Th|
000abe80  69 73 20 66 75 6e 63 74  69 6f 6e 20 72 65 6d 6f  |is function remo|
000abe90  76 65 73 20 61 20 77 69  6e 64 6f 77 20 6f 6e 20  |ves a window on |
000abea0  74 68 65 20 74 65 78 74  20 2f 74 2f 2e 20 49 74  |the text /t/. It|
000abeb0  20 68 61 73 20 6e 6f 20  65 66 66 65 63 74 20 69  | has no effect i|
000abec0  66 20 6f 6e 6c 79 20 6f  6e 65 20 77 69 6e 64 6f  |f only one windo|
000abed0  77 20 69 73 20 6c 65 66  74 20 6f 6e 20 2f 74 2f  |w is left on /t/|
000abee0  2e 00 00 00 44 41 54 41  10 01 00 00 74 78 74 77  |....DATA....txtw|
000abef0  69 6e 5f 6e 65 77 0a 53  79 6e 74 61 78 3a 09 76  |in_new.Syntax:.v|
000abf00  6f 69 64 20 74 78 74 77  69 6e 5f 6e 65 77 20 28  |oid txtwin_new (|
000abf10  3c 74 78 74 3e 20 74 29  3b 0a 48 65 61 64 65 72  |<txt> t);.Header|
000abf20  3a 09 3c 74 78 74 77 69  6e 2e 68 3d 3e 74 78 74  |:.<txtwin.h=>txt|
000abf30  77 69 6e 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |win>..This funct|
000abf40  69 6f 6e 20 63 72 65 61  74 65 73 20 61 6e 20 65  |ion creates an e|
000abf50  78 74 72 61 20 77 69 6e  64 6f 77 20 6f 6e 20 61  |xtra window on a|
000abf60  20 67 69 76 65 6e 20 74  65 78 74 20 6f 62 6a 65  | given text obje|
000abf70  63 74 2e 20 54 68 65 20  63 72 65 61 74 65 64 20  |ct. The created |
000abf80  77 69 6e 64 6f 77 20 77  69 6c 6c 20 62 65 20 69  |window will be i|
000abf90  6e 20 74 68 65 20 73 61  6d 65 20 73 74 79 6c 65  |n the same style|
000abfa0  20 61 73 20 66 6f 72 20  3c 74 78 74 5f 6e 65 77  | as for <txt_new|
000abfb0  3e 2c 20 77 69 74 68 20  74 68 65 20 73 61 6d 65  |>, with the same|
000abfc0  20 74 69 74 6c 65 20 69  6e 66 6f 72 6d 61 74 69  | title informati|
000abfd0  6f 6e 2e 20 54 68 65 20  77 69 6e 64 6f 77 20 77  |on. The window w|
000abfe0  69 6c 6c 20 62 65 20 6d  61 64 65 20 76 69 73 69  |ill be made visi|
000abff0  62 6c 65 2e 44 41 54 41  c4 00 00 00 74 78 74 77  |ble.DATA....txtw|
000ac000  69 6e 5f 6e 75 6d 62 65  72 0a 53 79 6e 74 61 78  |in_number.Syntax|
000ac010  3a 09 69 6e 74 20 74 78  74 77 69 6e 5f 6e 75 6d  |:.int txtwin_num|
000ac020  62 65 72 20 28 3c 74 78  74 3e 20 74 29 3b 0a 48  |ber (<txt> t);.H|
000ac030  65 61 64 65 72 3a 09 3c  74 78 74 77 69 6e 2e 68  |eader:.<txtwin.h|
000ac040  3d 3e 74 78 74 77 69 6e  3e 0a 0a 52 65 74 75 72  |=>txtwin>..Retur|
000ac050  6e 73 3a 09 4e 75 6d 62  65 72 20 6f 66 20 77 69  |ns:.Number of wi|
000ac060  6e 64 6f 77 73 2e 0a 0a  54 68 69 73 20 66 75 6e  |ndows...This fun|
000ac070  63 74 69 6f 6e 20 69 6e  66 6f 72 6d 73 20 79 6f  |ction informs yo|
000ac080  75 20 6f 66 20 74 68 65  20 6e 75 6d 62 65 72 20  |u of the number |
000ac090  6f 66 20 77 69 6e 64 6f  77 20 63 75 72 72 65 6e  |of window curren|
000ac0a0  74 6c 79 20 6f 6e 20 61  20 67 69 76 65 6e 20 74  |tly on a given t|
000ac0b0  65 78 74 20 2f 74 2f 2e  44 41 54 41 59 01 00 00  |ext /t/.DATAY...|
000ac0c0  74 78 74 77 69 6e 5f 73  65 74 63 75 72 72 65 6e  |txtwin_setcurren|
000ac0d0  74 77 69 6e 64 6f 77 0a  53 79 6e 74 61 78 3a 09  |twindow.Syntax:.|
000ac0e0  76 6f 69 64 20 74 78 74  77 69 6e 5f 73 65 74 63  |void txtwin_setc|
000ac0f0  75 72 72 65 6e 74 77 69  6e 64 6f 77 20 28 3c 74  |urrentwindow (<t|
000ac100  78 74 3e 20 74 29 3b 0a  48 65 61 64 65 72 3a 09  |xt> t);.Header:.|
000ac110  3c 74 78 74 77 69 6e 2e  68 3d 3e 74 78 74 77 69  |<txtwin.h=>txtwi|
000ac120  6e 3e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |n>..This functio|
000ac130  6e 20 65 6e 73 75 72 65  73 20 74 68 61 74 20 74  |n ensures that t|
000ac140  68 65 20 6c 61 73 74 20  77 69 6e 64 6f 77 20 74  |he last window t|
000ac150  6f 20 77 68 69 63 68 20  74 68 65 20 6c 61 73 74  |o which the last|
000ac160  20 65 76 65 6e 74 20 77  61 73 20 64 65 6c 69 76  | event was deliv|
000ac170  65 72 65 64 20 69 73 20  74 68 65 20 63 75 72 72  |ered is the curr|
000ac180  65 6e 74 20 77 69 6e 64  6f 77 20 6f 6e 20 74 68  |ent window on th|
000ac190  65 20 67 69 76 65 6e 20  74 65 78 74 2e 20 54 68  |e given text. Th|
000ac1a0  69 73 20 73 68 6f 75 6c  64 20 62 65 20 63 61 6c  |is should be cal|
000ac1b0  6c 65 64 20 77 68 65 6e  20 6d 61 6b 69 6e 67 20  |led when making |
000ac1c0  6d 65 6e 75 73 2c 20 73  69 6e 63 65 20 74 68 65  |menus, since the|
000ac1d0  20 73 61 6d 65 20 6d 65  6e 75 20 73 74 72 75 63  | same menu struc|
000ac1e0  74 75 72 65 20 69 73 20  61 74 74 61 63 68 65 64  |ture is attached|
000ac1f0  20 74 6f 20 61 6c 6c 20  77 69 6e 64 6f 77 73 20  | to all windows |
000ac200  6f 6e 20 74 68 65 20 73  61 6d 65 20 74 65 78 74  |on the same text|
000ac210  2e 00 00 00 44 49 52 24  84 07 00 00 84 07 00 00  |....DIR$........|
000ac220  98 c9 0a 00 46 ff ff ff  f5 a2 55 26 be 00 00 00  |....F.....U&....|
000ac230  13 00 00 00 00 00 00 00  41 4e 44 5f 53 50 52 00  |........AND_SPR.|
000ac240  58 ca 0a 00 46 ff ff ff  be 2b e4 24 95 01 00 00  |X...F....+.$....|
000ac250  13 00 00 00 00 00 00 00  61 72 72 61 79 73 65 67  |........arrayseg|
000ac260  00 00 00 00 f0 cb 0a 00  46 ff ff ff 1a 23 e3 24  |........F....#.$|
000ac270  ed 00 00 00 13 00 00 00  00 00 00 00 62 75 66 73  |............bufs|
000ac280  69 7a 65 00 e0 cc 0a 00  46 ff ff ff 77 93 e3 24  |ize.....F...w..$|
000ac290  e8 00 00 00 13 00 00 00  00 00 00 00 63 68 61 72  |............char|
000ac2a0  61 74 00 00 c8 cd 0a 00  46 ff ff ff 92 8f e3 24  |at......F......$|
000ac2b0  a5 00 00 00 13 00 00 00  00 00 00 00 63 68 61 72  |............char|
000ac2c0  61 74 64 6f 74 00 00 00  70 ce 0a 00 46 ff ff ff  |atdot...p...F...|
000ac2d0  8a 41 e4 24 1f 01 00 00  13 00 00 00 00 00 00 00  |.A.$............|
000ac2e0  63 68 61 72 6f 70 74 69  6f 6e 00 00 90 cf 0a 00  |charoption......|
000ac2f0  46 ff ff ff be 2c e3 24  87 00 00 00 13 00 00 00  |F....,.$........|
000ac300  00 00 00 00 63 68 61 72  6f 70 74 69 6f 6e 73 00  |....charoptions.|
000ac310  18 d0 0a 00 46 ff ff ff  f0 a3 e3 24 40 01 00 00  |....F......$@...|
000ac320  13 00 00 00 00 00 00 00  63 68 61 72 73 61 74 64  |........charsatd|
000ac330  6f 74 00 00 58 d1 0a 00  46 ff ff ff 93 7f e3 24  |ot..X...F......$|
000ac340  91 00 00 00 13 00 00 00  00 00 00 00 64 65 6c 65  |............dele|
000ac350  74 65 00 00 ec d1 0a 00  46 ff ff ff 79 1e e3 24  |te......F...y..$|
000ac360  91 00 00 00 13 00 00 00  00 00 00 00 64 69 73 70  |............disp|
000ac370  6f 73 65 00 80 d2 0a 00  46 ff ff ff 70 dc e3 24  |ose.....F...p..$|
000ac380  f6 00 00 00 13 00 00 00  00 00 00 00 64 69 73 70  |............disp|
000ac390  6f 73 65 6d 61 72 6b 65  72 00 00 00 78 d3 0a 00  |osemarker...x...|
000ac3a0  46 ff ff ff 6e 6a e3 24  f6 00 00 00 13 00 00 00  |F...nj.$........|
000ac3b0  00 00 00 00 64 6f 74 00  70 d4 0a 00 46 ff ff ff  |....dot.p...F...|
000ac3c0  91 75 e4 24 d1 00 00 00  13 00 00 00 00 00 00 00  |.u.$............|
000ac3d0  65 76 65 6e 74 5f 70 72  6f 63 00 00 44 d5 0a 00  |event_proc..D...|
000ac3e0  46 ff ff ff 2d 59 e4 24  49 00 00 00 13 00 00 00  |F...-Y.$I.......|
000ac3f0  00 00 00 00 65 76 65 6e  74 63 6f 64 65 00 00 00  |....eventcode...|
000ac400  90 d5 0a 00 46 ff ff ff  f4 0c e4 24 71 01 00 00  |....F......$q...|
000ac410  13 00 00 00 00 00 00 00  65 76 65 6e 74 68 61 6e  |........eventhan|
000ac420  64 6c 65 72 00 00 00 00  04 d7 0a 00 46 ff ff ff  |dler........F...|
000ac430  f2 f9 e3 24 f3 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000ac440  67 65 74 00 f8 d7 0a 00  46 ff ff ff f9 ed e2 24  |get.....F......$|
000ac450  2d 04 00 00 13 00 00 00  00 00 00 00 68 00 00 00  |-...........h...|
000ac460  28 dc 0a 00 46 ff ff ff  9a 17 e3 24 7e 00 00 00  |(...F......$~...|
000ac470  13 00 00 00 00 00 00 00  68 69 64 65 00 00 00 00  |........hide....|
000ac480  a8 dc 0a 00 46 ff ff ff  51 49 e4 24 82 00 00 00  |....F...QI.$....|
000ac490  13 00 00 00 00 00 00 00  69 6e 64 65 78 00 00 00  |........index...|
000ac4a0  2c dd 0a 00 46 ff ff ff  67 d8 e3 24 d9 00 00 00  |,...F...g..$....|
000ac4b0  13 00 00 00 00 00 00 00  69 6e 64 65 78 6f 66 6d  |........indexofm|
000ac4c0  61 72 6b 65 72 00 00 00  08 de 0a 00 46 ff ff ff  |arker.......F...|
000ac4d0  cf 20 b6 22 81 00 00 00  13 00 00 00 00 00 00 00  |. ."............|
000ac4e0  69 6e 69 74 00 00 00 00  8c de 0a 00 46 ff ff ff  |init........F...|
000ac4f0  79 78 e3 24 a3 00 00 00  13 00 00 00 00 00 00 00  |yx.$............|
000ac500  69 6e 73 65 72 74 63 68  61 72 00 00 30 df 0a 00  |insertchar..0...|
000ac510  46 ff ff ff 8e 7b e3 24  a0 00 00 00 13 00 00 00  |F....{.$........|
000ac520  00 00 00 00 69 6e 73 65  72 74 73 74 72 69 6e 67  |....insertstring|
000ac530  00 00 00 00 d0 df 0a 00  46 ff ff ff ff 48 e3 24  |........F....H.$|
000ac540  78 00 00 00 13 00 00 00  00 00 00 00 6c 61 73 74  |x...........last|
000ac550  72 65 66 00 48 e0 0a 00  46 ff ff ff ee 50 e4 24  |ref.H...F....P.$|
000ac560  8e 01 00 00 13 00 00 00  00 00 00 00 6d 61 72 6b  |............mark|
000ac570  65 72 00 00 d8 e1 0a 00  46 ff ff ff 87 66 e4 24  |er......F....f.$|
000ac580  a3 01 00 00 13 00 00 00  00 00 00 00 6d 6f 75 73  |............mous|
000ac590  65 65 76 65 6e 74 66 6c  61 67 00 00 7c e3 0a 00  |eeventflag..|...|
000ac5a0  46 ff ff ff 28 75 e3 24  ef 00 00 00 13 00 00 00  |F...(u.$........|
000ac5b0  00 00 00 00 6d 6f 76 65  64 6f 74 00 6c e4 0a 00  |....movedot.l...|
000ac5c0  46 ff ff ff 99 d2 e3 24  a4 00 00 00 13 00 00 00  |F......$........|
000ac5d0  00 00 00 00 6d 6f 76 65  64 6f 74 74 6f 6d 61 72  |....movedottomar|
000ac5e0  6b 65 72 00 10 e5 0a 00  46 ff ff ff fa bc e3 24  |ker.....F......$|
000ac5f0  d6 00 00 00 13 00 00 00  00 00 00 00 6d 6f 76 65  |............move|
000ac600  68 6f 72 69 7a 6f 6e 74  61 6c 00 00 e8 e5 0a 00  |horizontal......|
000ac610  46 ff ff ff 17 21 b6 22  04 01 00 00 13 00 00 00  |F....!."........|
000ac620  00 00 00 00 6d 6f 76 65  6d 61 72 6b 65 72 00 00  |....movemarker..|
000ac630  ec e6 0a 00 46 ff ff ff  bd b6 e3 24 29 01 00 00  |....F......$)...|
000ac640  13 00 00 00 00 00 00 00  6d 6f 76 65 76 65 72 74  |........movevert|
000ac650  69 63 61 6c 00 00 00 00  18 e8 0a 00 46 ff ff ff  |ical........F...|
000ac660  1f 0e e3 24 76 01 00 00  13 00 00 00 00 00 00 00  |...$v...........|
000ac670  6e 65 77 00 90 e9 0a 00  46 ff ff ff d3 cc e3 24  |new.....F......$|
000ac680  d4 00 00 00 13 00 00 00  00 00 00 00 6e 65 77 6d  |............newm|
000ac690  61 72 6b 65 72 00 00 00  64 ea 0a 00 46 ff ff ff  |arker...d...F...|
000ac6a0  22 9d 55 26 b5 00 00 00  13 00 00 00 00 00 00 00  |".U&............|
000ac6b0  4f 4e 4c 59 00 00 00 00  1c eb 0a 00 46 ff ff ff  |ONLY........F...|
000ac6c0  2d fd e3 24 c6 00 00 00  13 00 00 00 00 00 00 00  |-..$............|
000ac6d0  71 75 65 75 65 00 00 00  e4 eb 0a 00 46 ff ff ff  |queue.......F...|
000ac6e0  8b 1b e4 24 40 01 00 00  13 00 00 00 00 00 00 00  |...$@...........|
000ac6f0  72 65 61 64 65 76 65 6e  74 68 61 6e 64 6c 65 72  |readeventhandler|
000ac700  00 00 00 00 24 ed 0a 00  46 ff ff ff 9a ac e3 24  |....$...F......$|
000ac710  ed 00 00 00 13 00 00 00  00 00 00 00 72 65 70 6c  |............repl|
000ac720  61 63 65 61 74 65 6e 64  00 00 00 00 14 ee 0a 00  |aceatend........|
000ac730  46 ff ff ff 8d 87 e3 24  1e 01 00 00 13 00 00 00  |F......$........|
000ac740  00 00 00 00 72 65 70 6c  61 63 65 63 68 61 72 73  |....replacechars|
000ac750  00 00 00 00 34 ef 0a 00  46 ff ff ff 50 e8 e3 24  |....4...F...P..$|
000ac760  d0 00 00 00 13 00 00 00  00 00 00 00 73 65 6c 65  |............sele|
000ac770  63 74 65 6e 64 00 00 00  04 f0 0a 00 46 ff ff ff  |ctend.......F...|
000ac780  08 e0 e3 24 c4 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000ac790  73 65 6c 65 63 74 73 65  74 00 00 00 c8 f0 0a 00  |selectset.......|
000ac7a0  46 ff ff ff 25 e4 e3 24  d8 00 00 00 13 00 00 00  |F...%..$........|
000ac7b0  00 00 00 00 73 65 6c 65  63 74 73 74 61 72 74 00  |....selectstart.|
000ac7c0  a0 f1 0a 00 46 ff ff ff  5b 29 e3 24 2e 01 00 00  |....F...[).$....|
000ac7d0  13 00 00 00 00 00 00 00  73 65 74 62 75 66 73 69  |........setbufsi|
000ac7e0  7a 65 00 00 d0 f2 0a 00  46 ff ff ff 62 39 e3 24  |ze......F...b9.$|
000ac7f0  f9 00 00 00 13 00 00 00  00 00 00 00 73 65 74 63  |............setc|
000ac800  68 61 72 6f 70 74 69 6f  6e 73 00 00 cc f3 0a 00  |haroptions......|
000ac810  46 ff ff ff 4d 66 e3 24  e4 00 00 00 13 00 00 00  |F...Mf.$........|
000ac820  00 00 00 00 73 65 74 64  69 73 70 6c 61 79 6f 6b  |....setdisplayok|
000ac830  00 00 00 00 b0 f4 0a 00  46 ff ff ff 92 21 b6 22  |........F....!."|
000ac840  01 01 00 00 13 00 00 00  00 00 00 00 73 65 74 64  |............setd|
000ac850  6f 74 00 00 b4 f5 0a 00  46 ff ff ff 5d 5c e3 24  |ot......F...]\.$|
000ac860  d9 00 00 00 13 00 00 00  00 00 00 00 73 65 74 6c  |............setl|
000ac870  61 73 74 72 65 66 00 00  90 f6 0a 00 46 ff ff ff  |astref......F...|
000ac880  3a f4 e3 24 16 01 00 00  13 00 00 00 00 00 00 00  |:..$............|
000ac890  73 65 74 73 65 6c 65 63  74 00 00 00 a8 f7 0a 00  |setselect.......|
000ac8a0  46 ff ff ff f0 1a e3 24  d8 00 00 00 13 00 00 00  |F......$........|
000ac8b0  00 00 00 00 73 65 74 74  69 74 6c 65 00 00 00 00  |....settitle....|
000ac8c0  80 f8 0a 00 46 ff ff ff  ef 13 e3 24 c8 00 00 00  |....F......$....|
000ac8d0  13 00 00 00 00 00 00 00  73 68 6f 77 00 00 00 00  |........show....|
000ac8e0  48 f9 0a 00 46 ff ff ff  b0 70 e3 24 00 01 00 00  |H...F....p.$....|
000ac8f0  13 00 00 00 00 00 00 00  73 69 7a 65 00 00 00 00  |........size....|
000ac900  48 fa 0a 00 46 ff ff ff  26 33 e4 24 c2 00 00 00  |H...F...&3.$....|
000ac910  13 00 00 00 00 00 00 00  73 79 73 68 61 6e 64 6c  |........syshandl|
000ac920  65 00 00 00 0c fb 0a 00  46 ff ff ff 93 01 e4 24  |e.......F......$|
000ac930  b9 00 00 00 13 00 00 00  00 00 00 00 75 6e 67 65  |............unge|
000ac940  74 00 00 00 c8 fb 0a 00  46 ff ff ff 00 c7 e3 24  |t.......F......$|
000ac950  2a 01 00 00 13 00 00 00  00 00 00 00 76 69 73 69  |*...........visi|
000ac960  62 6c 65 63 6f 6c 63 6f  75 6e 74 00 f4 fc 0a 00  |blecolcount.....|
000ac970  46 ff ff ff 9b c0 e3 24  0c 01 00 00 13 00 00 00  |F......$........|
000ac980  00 00 00 00 76 69 73 69  62 6c 65 6c 69 6e 65 63  |....visiblelinec|
000ac990  6f 75 6e 74 00 00 00 00  44 41 54 41 be 00 00 00  |ount....DATA....|
000ac9a0  54 58 54 5f 41 4e 44 5f  53 50 52 0a 54 68 69 73  |TXT_AND_SPR.This|
000ac9b0  20 6d 61 63 72 6f 20 69  73 20 64 65 66 69 6e 65  | macro is define|
000ac9c0  64 20 69 6e 20 3c 54 69  6d 73 4c 69 62 3a 49 63  |d in <TimsLib:Ic|
000ac9d0  6f 6e 2e 68 3d 3e 49 63  6f 6e 5f 54 4c 3e 2e 20  |on.h=>Icon_TL>. |
000ac9e0  49 74 20 69 73 20 74 68  65 20 76 61 6c 75 65 20  |It is the value |
000ac9f0  74 68 65 20 72 65 74 75  72 6e 65 64 20 62 79 20  |the returned by |
000aca00  3c 49 43 4f 4e 5f 54 59  50 45 3e 20 77 68 65 6e  |<ICON_TYPE> when|
000aca10  20 74 68 65 20 69 63 6f  6e 20 69 6e 20 71 75 65  | the icon in que|
000aca20  73 74 69 6f 6e 20 69 73  20 61 20 27 74 65 78 74  |stion is a 'text|
000aca30  20 61 6e 64 20 73 70 72  69 74 65 27 20 69 63 6f  | and sprite' ico|
000aca40  6e 2e 20 49 74 20 69 73  20 64 65 66 69 6e 65 64  |n. It is defined|
000aca50  20 61 73 20 33 2e 00 00  44 41 54 41 95 01 00 00  | as 3...DATA....|
000aca60  74 78 74 5f 61 72 72 61  79 73 65 67 0a 53 79 6e  |txt_arrayseg.Syn|
000aca70  74 61 78 3a 09 76 6f 69  64 20 74 78 74 5f 61 72  |tax:.void txt_ar|
000aca80  72 61 79 73 65 67 20 28  3c 74 78 74 3e 20 74 2c  |rayseg (<txt> t,|
000aca90  20 3c 74 78 74 5f 69 6e  64 65 78 3e 20 61 74 2c  | <txt_index> at,|
000acaa0  20 63 68 61 72 20 2a 2a  61 2c 20 69 6e 74 20 2a  | char **a, int *|
000acab0  6e 29 3b 0a 48 65 61 64  65 72 3a 09 3c 74 78 74  |n);.Header:.<txt|
000acac0  2e 68 3d 3e 74 78 74 5f  68 3e 0a 0a 54 68 69 73  |.h=>txt_h>..This|
000acad0  20 66 75 6e 63 74 69 6f  6e 20 67 69 76 65 73 20  | function gives |
000acae0  61 20 64 69 72 65 63 74  20 70 6f 69 6e 74 65 72  |a direct pointer|
000acaf0  20 69 6e 74 6f 20 74 68  65 20 6d 65 6d 6f 72 79  | into the memory|
000acb00  20 75 73 65 64 20 74 6f  20 68 6f 6c 64 20 74 68  | used to hold th|
000acb10  65 20 63 68 61 72 61 63  74 65 72 73 20 69 6e 20  |e characters in |
000acb20  61 20 74 65 78 74 2e 20  2f 61 74 2f 20 69 73 20  |a text. /at/ is |
000acb30  74 68 65 20 69 6e 64 65  78 20 69 6e 74 6f 20 74  |the index into t|
000acb40  68 65 20 74 65 78 74 2c  20 7b 2f 7d 2a 61 7b 2f  |he text, {/}*a{/|
000acb50  7d 20 77 69 6c 6c 20 70  6f 69 6e 74 20 61 74 20  |} will point at |
000acb60  74 68 65 20 63 68 61 72  61 63 74 65 72 20 77 68  |the character wh|
000acb70  6f 73 65 20 69 6e 64 65  78 20 69 6e 20 74 68 65  |ose index in the|
000acb80  20 74 65 78 74 20 69 73  20 2f 61 74 2f 2c 20 61  | text is /at/, a|
000acb90  6e 64 20 7b 2f 7d 2a 6e  7b 2f 7d 20 77 69 6c 6c  |nd {/}*n{/} will|
000acba0  20 63 6f 6e 74 61 69 6e  20 74 68 65 20 6e 75 6d  | contain the num|
000acbb0  62 65 72 20 6f 66 20 63  6f 6e 74 69 67 75 6f 75  |ber of contiguou|
000acbc0  73 20 62 79 74 65 73 20  61 66 74 65 72 20 2f 61  |s bytes after /a|
000acbd0  74 2f 2e 20 59 6f 75 20  6d 61 79 20 61 6c 74 65  |t/. You may alte|
000acbe0  72 20 74 68 65 20 74 65  78 74 2e 2e 2e 00 00 00  |r the text......|
000acbf0  44 41 54 41 ed 00 00 00  74 78 74 5f 62 75 66 73  |DATA....txt_bufs|
000acc00  69 7a 65 0a 53 79 6e 74  61 78 3a 09 69 6e 74 20  |ize.Syntax:.int |
000acc10  74 78 74 5f 62 75 66 73  69 7a 65 20 28 3c 74 78  |txt_bufsize (<tx|
000acc20  74 3e 20 74 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |t> t);.Header:.<|
000acc30  74 78 74 2e 68 3d 3e 74  78 74 5f 68 3e 0a 0a 52  |txt.h=>txt_h>..R|
000acc40  65 74 75 72 6e 73 3a 09  53 69 7a 65 20 6f 66 20  |eturns:.Size of |
000acc50  74 68 65 20 62 75 66 66  65 72 2e 0a 0a 54 68 69  |the buffer...Thi|
000acc60  73 20 66 75 6e 63 74 69  6f 6e 20 69 6e 66 6f 72  |s function infor|
000acc70  6d 73 20 79 6f 75 20 68  6f 77 20 6d 61 6e 79 20  |ms you how many |
000acc80  63 68 61 72 61 63 74 65  72 73 20 63 61 6e 20 62  |characters can b|
000acc90  65 20 73 74 6f 72 65 64  20 69 6e 20 74 68 65 20  |e stored in the |
000acca0  62 75 66 66 65 72 2c 20  62 65 66 6f 72 65 20 6d  |buffer, before m|
000accb0  6f 72 65 20 6d 65 6d 6f  72 79 20 6e 65 65 64 73  |ore memory needs|
000accc0  20 74 6f 20 62 65 20 72  65 71 75 65 73 74 65 64  | to be requested|
000accd0  20 66 72 6f 6d 20 74 68  65 20 4f 53 2e 00 00 00  | from the OS....|
000acce0  44 41 54 41 e8 00 00 00  74 78 74 5f 63 68 61 72  |DATA....txt_char|
000accf0  61 74 0a 53 79 6e 74 61  78 3a 09 63 68 61 72 20  |at.Syntax:.char |
000acd00  74 78 74 5f 63 68 61 72  61 74 20 28 3c 74 78 74  |txt_charat (<txt|
000acd10  3e 20 74 2c 20 3c 74 78  74 5f 69 6e 64 65 78 3e  |> t, <txt_index>|
000acd20  20 69 29 3b 0a 48 65 61  64 65 72 3a 09 3c 74 78  | i);.Header:.<tx|
000acd30  74 2e 68 3d 3e 74 78 74  5f 68 3e 0a 0a 52 65 74  |t.h=>txt_h>..Ret|
000acd40  75 72 6e 73 3a 09 54 68  65 20 63 68 61 72 61 63  |urns:.The charac|
000acd50  74 65 72 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |ter...This funct|
000acd60  69 6f 6e 20 72 65 61 64  73 20 74 68 65 20 63 68  |ion reads the ch|
000acd70  61 72 61 63 74 65 72 20  61 74 20 74 68 65 20 67  |aracter at the g|
000acd80  69 76 65 6e 20 69 6e 64  65 78 20 69 6e 20 74 68  |iven index in th|
000acd90  65 20 61 72 72 61 79 2e  20 49 74 20 72 65 74 75  |e array. It retu|
000acda0  72 6e 73 20 30 20 69 66  20 74 68 65 20 69 6e 64  |rns 0 if the ind|
000acdb0  65 78 20 69 73 20 61 74  2f 62 65 79 6f 6e 64 20  |ex is at/beyond |
000acdc0  74 68 65 20 65 6e 64 2e  44 41 54 41 a5 00 00 00  |the end.DATA....|
000acdd0  74 78 74 5f 63 68 61 72  61 74 64 6f 74 0a 53 79  |txt_charatdot.Sy|
000acde0  6e 74 61 78 3a 09 63 68  61 72 20 74 78 74 5f 63  |ntax:.char txt_c|
000acdf0  68 61 72 61 74 64 6f 74  20 28 3c 74 78 74 3e 20  |haratdot (<txt> |
000ace00  74 29 3b 0a 48 65 61 64  65 72 3a 09 3c 74 78 74  |t);.Header:.<txt|
000ace10  2e 68 3d 3e 74 78 74 5f  68 3e 0a 0a 52 65 74 75  |.h=>txt_h>..Retu|
000ace20  72 6e 73 3a 09 54 68 65  20 63 68 61 72 61 63 74  |rns:.The charact|
000ace30  65 72 20 61 74 20 22 64  6f 74 22 2e 0a 0a 54 68  |er at "dot"...Th|
000ace40  69 73 20 66 75 6e 63 74  69 6f 6e 20 72 65 61 64  |is function read|
000ace50  73 20 74 68 65 20 63 68  61 72 61 63 74 65 72 20  |s the character |
000ace60  61 74 20 74 68 65 20 22  64 6f 74 22 2e 00 00 00  |at the "dot"....|
000ace70  44 41 54 41 1f 01 00 00  74 78 74 5f 63 68 61 72  |DATA....txt_char|
000ace80  6f 70 74 69 6f 6e 0a 54  68 69 73 20 74 79 70 65  |option.This type|
000ace90  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
000acea0  74 78 74 2e 68 3d 3e 74  78 74 5f 68 3e 2e 20 49  |txt.h=>txt_h>. I|
000aceb0  74 20 69 73 20 74 68 65  20 66 6f 6c 6c 6f 77 69  |t is the followi|
000acec0  6e 67 20 65 6e 75 6d 65  72 61 74 65 64 20 74 79  |ng enumerated ty|
000aced0  70 65 3a 0a 7b 77 72 61  70 20 6f 66 66 7d 0a 5c  |pe:.{wrap off}.\|
000acee0  7b 0a 20 20 74 78 74 5f  44 49 53 50 4c 41 59 09  |{.  txt_DISPLAY.|
000acef0  3d 20 31 2c 09 2f 2a 20  64 69 73 70 6c 61 79 20  |= 1,./* display |
000acf00  63 68 61 6e 67 65 73 20  61 73 20 6d 61 64 65 20  |changes as made |
000acf10  2a 2f 0a 20 20 74 78 74  5f 43 41 52 45 54 09 3d  |*/.  txt_CARET.=|
000acf20  20 32 2c 09 2f 2a 20 64  69 73 70 6c 61 79 20 63  | 2,./* display c|
000acf30  75 72 72 65 6e 74 20 74  65 78 74 70 6f 73 20 2a  |urrent textpos *|
000acf40  2f 0a 20 20 74 78 74 5f  55 50 44 41 54 45 44 09  |/.  txt_UPDATED.|
000acf50  3d 20 34 09 2f 2a 20 73  65 74 20 69 66 20 63 68  |= 4./* set if ch|
000acf60  61 6e 67 65 64 20 2a 2f  0a 7d 0a 0a 49 74 20 64  |anged */.}..It d|
000acf70  65 66 69 6e 65 73 20 74  68 65 20 76 61 6c 75 65  |efines the value|
000acf80  73 20 6f 66 20 66 6c 61  67 20 62 69 74 73 2e 00  |s of flag bits..|
000acf90  44 41 54 41 87 00 00 00  74 78 74 5f 63 68 61 72  |DATA....txt_char|
000acfa0  6f 70 74 69 6f 6e 73 0a  53 79 6e 74 61 78 3a 09  |options.Syntax:.|
000acfb0  3c 74 78 74 5f 63 68 61  72 6f 70 74 69 6f 6e 3e  |<txt_charoption>|
000acfc0  20 74 78 74 5f 63 68 61  72 6f 70 74 69 6f 6e 73  | txt_charoptions|
000acfd0  20 28 3c 74 78 74 3e 20  74 29 3b 0a 48 65 61 64  | (<txt> t);.Head|
000acfe0  65 72 3a 09 3c 74 78 74  2e 68 3d 3e 74 78 74 5f  |er:.<txt.h=>txt_|
000acff0  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 20 54 68 65  |h>..Returns: The|
000ad000  20 63 75 72 72 65 6e 74  6c 79 20 73 65 74 20 6f  | currently set o|
000ad010  70 74 69 6f 6e 73 2e 00  44 41 54 41 40 01 00 00  |ptions..DATA@...|
000ad020  74 78 74 5f 63 68 61 72  73 61 74 64 6f 74 0a 53  |txt_charsatdot.S|
000ad030  79 6e 74 61 78 3a 09 76  6f 69 64 20 74 78 74 5f  |yntax:.void txt_|
000ad040  63 68 61 72 73 61 74 64  6f 74 20 28 3c 74 78 74  |charsatdot (<txt|
000ad050  3e 20 74 2c 20 63 68 61  72 20 2a 62 75 66 66 65  |> t, char *buffe|
000ad060  72 2c 20 69 6e 74 20 2a  6e 29 3b 0a 48 65 61 64  |r, int *n);.Head|
000ad070  65 72 3a 09 3c 74 78 74  2e 68 3d 3e 74 78 74 5f  |er:.<txt.h=>txt_|
000ad080  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 54 68 65  |h>..Returns:.The|
000ad090  20 63 68 61 72 61 63 74  65 72 2e 0a 0a 54 68 69  | character...Thi|
000ad0a0  73 20 66 75 6e 63 74 69  6f 6e 20 63 6f 70 69 65  |s function copie|
000ad0b0  73 20 61 74 20 6d 6f 73  74 20 7b 2f 7d 2a 6e 7b  |s at most {/}*n{|
000ad0c0  2f 7d 20 63 68 61 72 61  63 74 65 72 73 20 66 72  |/} characters fr|
000ad0d0  6f 6d 20 74 68 65 20 22  64 6f 74 22 20 69 6e 20  |om the "dot" in |
000ad0e0  74 68 65 20 61 72 72 61  79 2c 20 69 6e 74 6f 20  |the array, into |
000ad0f0  61 20 73 75 70 70 6c 69  65 64 20 62 75 66 66 65  |a supplied buffe|
000ad100  72 2e 20 49 66 20 7b 2f  7d 2a 6e 7b 2f 7d 20 63  |r. If {/}*n{/} c|
000ad110  68 61 72 61 63 74 65 72  73 20 63 61 6e 6e 6f 74  |haracters cannot|
000ad120  20 62 65 20 63 6f 70 69  65 64 2c 20 7b 2f 7d 2a  | be copied, {/}*|
000ad130  6e 7b 2f 7d 20 69 73 20  75 70 64 61 74 65 64 20  |n{/} is updated |
000ad140  74 6f 20 72 65 70 6f 72  74 20 68 6f 77 20 6d 61  |to report how ma|
000ad150  6e 79 20 77 65 72 65 2e  44 41 54 41 91 00 00 00  |ny were.DATA....|
000ad160  74 78 74 5f 64 65 6c 65  74 65 0a 53 79 6e 74 61  |txt_delete.Synta|
000ad170  78 3a 09 76 6f 69 64 20  74 78 74 5f 64 65 6c 65  |x:.void txt_dele|
000ad180  74 65 20 28 3c 74 78 74  3e 20 74 2c 20 69 6e 74  |te (<txt> t, int|
000ad190  20 6e 29 3b 0a 48 65 61  64 65 72 3a 09 3c 74 78  | n);.Header:.<tx|
000ad1a0  74 2e 68 3d 3e 74 78 74  5f 68 3e 0a 0a 54 68 69  |t.h=>txt_h>..Thi|
000ad1b0  73 20 66 75 6e 63 74 69  6f 6e 20 64 65 6c 65 74  |s function delet|
000ad1c0  65 73 20 2f 6e 2f 20 63  68 61 72 61 63 74 65 72  |es /n/ character|
000ad1d0  73 20 66 72 6f 6d 20 74  68 65 20 22 64 6f 74 22  |s from the "dot"|
000ad1e0  20 6f 6e 77 61 72 64 73  2e 00 00 00 44 41 54 41  | onwards....DATA|
000ad1f0  91 00 00 00 74 78 74 5f  64 69 73 70 6f 73 65 0a  |....txt_dispose.|
000ad200  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 74 78 74  |Syntax:.void txt|
000ad210  5f 64 69 73 70 6f 73 65  20 28 3c 74 78 74 3e 20  |_dispose (<txt> |
000ad220  2a 74 29 3b 0a 48 65 61  64 65 72 3a 09 3c 74 78  |*t);.Header:.<tx|
000ad230  74 2e 68 3d 3e 74 78 74  5f 68 3e 0a 0a 54 68 69  |t.h=>txt_h>..Thi|
000ad240  73 20 66 75 6e 63 74 69  6f 6e 20 64 65 73 74 72  |s function destr|
000ad250  6f 79 73 20 61 20 74 65  78 74 20 61 6e 64 20 74  |oys a text and t|
000ad260  68 65 20 77 69 6e 64 6f  77 20 61 73 73 6f 63 69  |he window associ|
000ad270  61 74 65 64 20 77 69 74  68 20 69 74 2e 00 00 00  |ated with it....|
000ad280  44 41 54 41 f6 00 00 00  74 78 74 5f 64 69 73 70  |DATA....txt_disp|
000ad290  6f 73 65 6d 61 72 6b 65  72 0a 53 79 6e 74 61 78  |osemarker.Syntax|
000ad2a0  3a 09 76 6f 69 64 20 74  78 74 5f 64 69 73 70 6f  |:.void txt_dispo|
000ad2b0  73 65 6d 61 72 6b 65 72  20 28 3c 74 78 74 3e 20  |semarker (<txt> |
000ad2c0  74 2c 20 3c 74 78 74 5f  6d 61 72 6b 65 72 3e 20  |t, <txt_marker> |
000ad2d0  2a 6d 61 72 6b 29 3b 0a  48 65 61 64 65 72 3a 09  |*mark);.Header:.|
000ad2e0  3c 74 78 74 2e 68 3d 3e  74 78 74 5f 68 3e 0a 0a  |<txt.h=>txt_h>..|
000ad2f0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 64 69  |This function di|
000ad300  73 70 6f 73 65 73 20 6f  66 20 74 68 65 20 67 69  |sposes of the gi|
000ad310  76 65 6e 20 6d 61 72 6b  65 72 2e 20 54 68 69 73  |ven marker. This|
000ad320  20 4d 55 53 54 20 62 65  20 64 6f 6e 65 20 77 68  | MUST be done wh|
000ad330  65 6e 20 74 68 65 20 6d  61 72 6b 65 72 20 69 73  |en the marker is|
000ad340  20 6e 6f 20 6c 6f 6e 67  65 72 20 69 6e 20 75 73  | no longer in us|
000ad350  65 2c 20 6f 74 68 65 72  77 69 73 65 20 69 74 20  |e, otherwise it |
000ad360  77 69 6c 6c 20 73 74 69  6c 6c 20 62 65 20 75 70  |will still be up|
000ad370  64 61 74 65 64 2e 00 00  44 41 54 41 f6 00 00 00  |dated...DATA....|
000ad380  74 78 74 5f 64 6f 74 0a  53 79 6e 74 61 78 3a 09  |txt_dot.Syntax:.|
000ad390  3c 74 78 74 5f 69 6e 64  65 78 3e 20 74 78 74 5f  |<txt_index> txt_|
000ad3a0  64 6f 74 20 28 3c 74 78  74 3e 20 74 29 3b 0a 48  |dot (<txt> t);.H|
000ad3b0  65 61 64 65 72 3a 09 3c  74 78 74 2e 68 3d 3e 74  |eader:.<txt.h=>t|
000ad3c0  78 74 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |xt_h>..Returns:.|
000ad3d0  49 6e 64 65 78 20 69 6e  74 6f 20 74 68 65 20 63  |Index into the c|
000ad3e0  68 61 72 61 63 74 65 72  20 61 72 72 61 79 2e 0a  |haracter array..|
000ad3f0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
000ad400  65 74 75 72 6e 73 20 74  68 65 20 70 6f 73 69 74  |eturns the posit|
000ad410  69 6f 6e 20 6f 66 20 74  68 65 20 22 64 6f 74 22  |ion of the "dot"|
000ad420  20 69 65 20 74 68 65 20  63 75 72 72 65 6e 74 20  | ie the current |
000ad430  65 64 69 74 69 6e 67 20  70 6f 73 69 74 69 6f 6e  |editing position|
000ad440  20 6f 66 20 74 68 65 20  74 65 78 74 2e 20 30 20  | of the text. 0 |
000ad450  69 73 20 62 65 66 6f 72  65 20 74 68 65 20 66 69  |is before the fi|
000ad460  72 73 74 20 63 68 61 72  61 63 74 65 72 2e 00 00  |rst character...|
000ad470  44 41 54 41 d1 00 00 00  74 78 74 5f 65 76 65 6e  |DATA....txt_even|
000ad480  74 5f 70 72 6f 63 0a 54  68 69 73 20 74 79 70 65  |t_proc.This type|
000ad490  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
000ad4a0  74 78 74 2e 68 3d 3e 74  78 74 5f 68 3e 2e 20 49  |txt.h=>txt_h>. I|
000ad4b0  74 20 69 73 20 74 68 65  20 66 75 6e 63 74 69 6f  |t is the functio|
000ad4c0  6e 20 74 79 70 65 20 66  6f 72 20 74 65 78 74 20  |n type for text |
000ad4d0  65 76 65 6e 74 20 68 61  6e 64 6c 65 72 73 2e 20  |event handlers. |
000ad4e0  46 75 6e 63 74 69 6f 6e  73 20 73 68 6f 75 6c 64  |Functions should|
000ad4f0  20 62 65 20 6f 66 20 74  68 65 20 66 6f 72 6d 3a  | be of the form:|
000ad500  0a 7b 77 72 61 70 20 6f  66 66 7d 0a 7b 66 43 6f  |.{wrap off}.{fCo|
000ad510  64 65 3b 61 6c 69 67 6e  20 63 65 6e 74 72 65 7d  |de;align centre}|
000ad520  76 6f 69 64 20 6d 79 66  75 6e 63 20 28 3c 74 78  |void myfunc (<tx|
000ad530  74 3e 20 74 2c 20 76 6f  69 64 20 2a 68 6e 64 29  |t> t, void *hnd)|
000ad540  3b 00 00 00 44 41 54 41  49 00 00 00 74 78 74 5f  |;...DATAI...txt_|
000ad550  65 76 65 6e 74 63 6f 64  65 0a 54 68 69 73 20 74  |eventcode.This t|
000ad560  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
000ad570  6e 20 3c 74 78 74 2e 68  3d 3e 74 78 74 5f 68 3e  |n <txt.h=>txt_h>|
000ad580  20 61 73 20 61 6e 20 2f  69 6e 74 2f 2e 00 00 00  | as an /int/....|
000ad590  44 41 54 41 71 01 00 00  74 78 74 5f 65 76 65 6e  |DATAq...txt_even|
000ad5a0  74 68 61 6e 64 6c 65 72  0a 53 79 6e 74 61 78 3a  |thandler.Syntax:|
000ad5b0  09 76 6f 69 64 20 74 78  74 5f 65 76 65 6e 74 68  |.void txt_eventh|
000ad5c0  61 6e 64 6c 65 72 20 28  3c 74 78 74 3e 20 74 2c  |andler (<txt> t,|
000ad5d0  20 3c 74 78 74 5f 65 76  65 6e 74 5f 70 72 6f 63  | <txt_event_proc|
000ad5e0  3e 20 66 75 6e 63 2c 20  76 6f 69 64 20 2a 68 6e  |> func, void *hn|
000ad5f0  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 74 78 74  |d);.Header:.<txt|
000ad600  2e 68 3d 3e 74 78 74 5f  68 3e 0a 0a 54 68 69 73  |.h=>txt_h>..This|
000ad610  20 66 75 6e 63 74 69 6f  6e 20 72 65 67 69 73 74  | function regist|
000ad620  65 72 73 20 61 6e 20 65  76 65 6e 74 68 61 6e 64  |ers an eventhand|
000ad630  6c 65 72 20 66 75 6e 63  74 69 6f 6e 20 66 6f 72  |ler function for|
000ad640  20 61 20 67 69 76 65 6e  20 74 65 78 74 2c 20 77  | a given text, w|
000ad650  68 69 63 68 20 77 69 6c  6c 20 62 65 20 63 61 6c  |hich will be cal|
000ad660  6c 65 64 20 77 68 65 6e  65 76 65 72 20 74 68 65  |led whenever the|
000ad670  72 65 20 69 73 20 61 20  76 61 6c 75 65 20 72 65  |re is a value re|
000ad680  61 64 79 20 77 68 69 63  68 20 63 61 6e 20 62 65  |ady which can be|
000ad690  20 70 69 63 6b 65 64 20  75 70 20 62 79 20 3c 74  | picked up by <t|
000ad6a0  78 74 5f 67 65 74 3e 2e  20 2f 68 6e 64 2f 20 69  |xt_get>. /hnd/ i|
000ad6b0  73 20 70 61 73 73 65 64  20 73 74 72 61 69 67 68  |s passed straigh|
000ad6c0  74 20 74 6f 20 74 68 65  20 68 61 6e 64 6c 65 72  |t to the handler|
000ad6d0  2e 20 49 66 20 7b 2f 7d  66 75 6e 63 3d 30 7b 2f  |. If {/}func=0{/|
000ad6e0  7d 20 74 68 65 6e 20 6e  6f 20 66 75 6e 63 74 69  |} then no functi|
000ad6f0  6f 6e 20 69 73 20 72 65  67 69 73 74 65 72 65 64  |on is registered|
000ad700  2e 00 00 00 44 41 54 41  f3 00 00 00 74 78 74 5f  |....DATA....txt_|
000ad710  67 65 74 0a 53 79 6e 74  61 78 3a 09 3c 74 78 74  |get.Syntax:.<txt|
000ad720  5f 65 76 65 6e 74 63 6f  64 65 3e 20 74 78 74 5f  |_eventcode> txt_|
000ad730  67 65 74 20 28 3c 74 78  74 3e 20 74 29 3b 0a 48  |get (<txt> t);.H|
000ad740  65 61 64 65 72 3a 09 3c  74 78 74 2e 68 3d 3e 74  |eader:.<txt.h=>t|
000ad750  78 74 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |xt_h>..Returns:.|
000ad760  54 68 65 20 65 76 65 6e  74 20 63 6f 64 65 2e 0a  |The event code..|
000ad770  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 67  |.This function g|
000ad780  69 76 65 73 20 74 68 65  20 6e 65 78 74 20 75 73  |ives the next us|
000ad790  65 72 20 65 76 65 6e 74  20 63 6f 64 65 20 74 6f  |er event code to|
000ad7a0  20 74 68 65 20 63 61 6c  6c 65 72 2e 20 54 68 65  | the caller. The|
000ad7b0  20 72 65 74 75 72 6e 65  64 20 63 6f 64 65 20 63  | returned code c|
000ad7c0  61 6e 20 62 65 20 41 53  43 49 49 2c 20 6f 72 20  |an be ASCII, or |
000ad7d0  76 61 72 69 6f 75 73 20  6f 74 68 65 72 20 76 61  |various other va|
000ad7e0  6c 75 65 73 20 66 6f 72  20 66 75 6e 63 74 69 6f  |lues for functio|
000ad7f0  6e 20 6b 65 79 73 2e 00  44 41 54 41 2d 04 00 00  |n keys..DATA-...|
000ad800  74 78 74 2e 68 0a 54 68  69 73 20 68 65 61 64 65  |txt.h.This heade|
000ad810  72 20 64 65 63 6c 61 72  65 73 20 66 75 6e 63 74  |r declares funct|
000ad820  69 6f 6e 73 20 66 6f 72  20 68 61 6e 64 6c 69 6e  |ions for handlin|
000ad830  67 20 74 65 78 74 73 2c  20 69 65 20 77 69 6e 64  |g texts, ie wind|
000ad840  6f 77 73 20 6c 69 6b 65  20 21 45 64 69 74 27 73  |ows like !Edit's|
000ad850  2c 20 6f 72 20 6f 74 68  65 72 20 73 69 6d 69 6c  |, or other simil|
000ad860  61 72 20 73 6c 6f 77 20  74 65 78 74 20 64 69 73  |ar slow text dis|
000ad870  70 6c 61 79 73 20 28 62  75 74 20 6e 6f 74 20 6e  |plays (but not n|
000ad880  69 63 65 20 66 61 73 74  20 6f 6e 65 73 20 6c 69  |ice fast ones li|
000ad890  6b 65 20 21 53 74 72 6f  6e 67 45 44 21 29 2e 0a  |ke !StrongED!)..|
000ad8a0  0a 46 75 6e 63 74 69 6f  6e 73 3a 0a 0a 23 54 61  |.Functions:..#Ta|
000ad8b0  62 6c 65 20 31 35 0a 3c  74 78 74 5f 6e 65 77 3e  |ble 15.<txt_new>|
000ad8c0  0a 3c 74 78 74 5f 73 68  6f 77 3e 0a 3c 74 78 74  |.<txt_show>.<txt|
000ad8d0  5f 68 69 64 65 3e 0a 3c  74 78 74 5f 73 65 74 74  |_hide>.<txt_sett|
000ad8e0  69 74 6c 65 3e 0a 3c 74  78 74 5f 64 69 73 70 6f  |itle>.<txt_dispo|
000ad8f0  73 65 3e 0a 3c 74 78 74  5f 62 75 66 73 69 7a 65  |se>.<txt_bufsize|
000ad900  3e 0a 3c 74 78 74 5f 73  65 74 62 75 66 73 69 7a  |>.<txt_setbufsiz|
000ad910  65 3e 0a 3c 74 78 74 5f  63 68 61 72 6f 70 74 69  |e>.<txt_charopti|
000ad920  6f 6e 73 3e 0a 3c 74 78  74 5f 73 65 74 63 68 61  |ons>.<txt_setcha|
000ad930  72 6f 70 74 69 6f 6e 73  3e 0a 3c 74 78 74 5f 6c  |roptions>.<txt_l|
000ad940  61 73 74 72 65 66 3e 0a  3c 74 78 74 5f 73 65 74  |astref>.<txt_set|
000ad950  6c 61 73 74 72 65 66 3e  0a 3c 74 78 74 5f 73 65  |lastref>.<txt_se|
000ad960  74 64 69 73 70 6c 61 79  6f 6b 3e 0a 3c 74 78 74  |tdisplayok>.<txt|
000ad970  5f 64 6f 74 3e 0a 3c 74  78 74 5f 73 69 7a 65 3e  |_dot>.<txt_size>|
000ad980  0a 3c 74 78 74 5f 73 65  74 64 6f 74 3e 0a 3c 74  |.<txt_setdot>.<t|
000ad990  78 74 5f 6d 6f 76 65 64  6f 74 3e 0a 3c 74 78 74  |xt_movedot>.<txt|
000ad9a0  5f 69 6e 73 65 72 74 63  68 61 72 3e 0a 3c 74 78  |_insertchar>.<tx|
000ad9b0  74 5f 69 6e 73 65 72 74  73 74 72 69 6e 67 3e 0a  |t_insertstring>.|
000ad9c0  3c 74 78 74 5f 64 65 6c  65 74 65 3e 0a 3c 74 78  |<txt_delete>.<tx|
000ad9d0  74 5f 72 65 70 6c 61 63  65 63 68 61 72 73 3e 0a  |t_replacechars>.|
000ad9e0  3c 74 78 74 5f 63 68 61  72 61 74 64 6f 74 3e 0a  |<txt_charatdot>.|
000ad9f0  3c 74 78 74 5f 63 68 61  72 61 74 3e 0a 3c 74 78  |<txt_charat>.<tx|
000ada00  74 5f 63 68 61 72 73 61  74 64 6f 74 3e 0a 3c 74  |t_charsatdot>.<t|
000ada10  78 74 5f 72 65 70 6c 61  63 65 61 74 65 6e 64 3e  |xt_replaceatend>|
000ada20  0a 3c 74 78 74 5f 6d 6f  76 65 76 65 72 74 69 63  |.<txt_movevertic|
000ada30  61 6c 3e 0a 3c 74 78 74  5f 6d 6f 76 65 68 6f 72  |al>.<txt_movehor|
000ada40  69 7a 6f 6e 74 61 6c 3e  0a 3c 74 78 74 5f 76 69  |izontal>.<txt_vi|
000ada50  73 69 62 6c 65 6c 69 6e  65 63 6f 75 6e 74 3e 0a  |siblelinecount>.|
000ada60  3c 74 78 74 5f 76 69 73  69 62 6c 65 63 6f 6c 63  |<txt_visiblecolc|
000ada70  6f 75 6e 74 3e 0a 3c 74  78 74 5f 6e 65 77 6d 61  |ount>.<txt_newma|
000ada80  72 6b 65 72 3e 0a 3c 74  78 74 5f 6d 6f 76 65 6d  |rker>.<txt_movem|
000ada90  61 72 6b 65 72 3e 0a 3c  74 78 74 5f 6d 6f 76 65  |arker>.<txt_move|
000adaa0  64 6f 74 74 6f 6d 61 72  6b 65 72 3e 0a 3c 74 78  |dottomarker>.<tx|
000adab0  74 5f 69 6e 64 65 78 6f  66 6d 61 72 6b 65 72 3e  |t_indexofmarker>|
000adac0  0a 3c 74 78 74 5f 64 69  73 70 6f 73 65 6d 61 72  |.<txt_disposemar|
000adad0  6b 65 72 3e 0a 3c 74 78  74 5f 73 65 6c 65 63 74  |ker>.<txt_select|
000adae0  73 65 74 3e 0a 3c 74 78  74 5f 73 65 6c 65 63 74  |set>.<txt_select|
000adaf0  73 74 61 72 74 3e 0a 3c  74 78 74 5f 73 65 6c 65  |start>.<txt_sele|
000adb00  63 74 65 6e 64 3e 0a 3c  74 78 74 5f 73 65 74 73  |ctend>.<txt_sets|
000adb10  65 6c 65 63 74 3e 0a 3c  74 78 74 5f 67 65 74 3e  |elect>.<txt_get>|
000adb20  0a 3c 74 78 74 5f 71 75  65 75 65 3e 0a 3c 74 78  |.<txt_queue>.<tx|
000adb30  74 5f 75 6e 67 65 74 3e  0a 3c 74 78 74 5f 65 76  |t_unget>.<txt_ev|
000adb40  65 6e 74 68 61 6e 64 6c  65 72 3e 0a 3c 74 78 74  |enthandler>.<txt|
000adb50  5f 72 65 61 64 65 76 65  6e 74 68 61 6e 64 6c 65  |_readeventhandle|
000adb60  72 3e 0a 3c 74 78 74 5f  61 72 72 61 79 73 65 67  |r>.<txt_arrayseg|
000adb70  3e 0a 3c 74 78 74 5f 73  79 73 68 61 6e 64 6c 65  |>.<txt_syshandle|
000adb80  3e 0a 3c 74 78 74 5f 69  6e 69 74 3e 0a 23 45 6e  |>.<txt_init>.#En|
000adb90  64 54 61 62 6c 65 0a 0a  54 79 70 65 73 3a 0a 0a  |dTable..Types:..|
000adba0  23 69 6e 64 65 6e 74 20  35 0a 23 54 61 62 6c 65  |#indent 5.#Table|
000adbb0  20 33 20 32 31 0a 3c 74  78 74 3e 0a 3c 74 78 74  | 3 21.<txt>.<txt|
000adbc0  5f 63 68 61 72 6f 70 74  69 6f 6e 3e 0a 3c 74 78  |_charoption>.<tx|
000adbd0  74 5f 69 6e 64 65 78 3e  0a 3c 74 78 74 5f 6d 61  |t_index>.<txt_ma|
000adbe0  72 6b 65 72 3e 0a 3c 74  78 74 5f 65 76 65 6e 74  |rker>.<txt_event|
000adbf0  63 6f 64 65 3e 0a 3c 74  78 74 5f 6d 6f 75 73 65  |code>.<txt_mouse|
000adc00  65 76 65 6e 74 66 6c 61  67 3e 0a 3c 74 78 74 5f  |eventflag>.<txt_|
000adc10  65 76 65 6e 74 5f 70 72  6f 63 3e 0a 23 45 6e 64  |event_proc>.#End|
000adc20  54 61 62 6c 65 00 00 00  44 41 54 41 7e 00 00 00  |Table...DATA~...|
000adc30  74 78 74 5f 68 69 64 65  0a 53 79 6e 74 61 78 3a  |txt_hide.Syntax:|
000adc40  09 76 6f 69 64 20 74 78  74 5f 68 69 64 65 20 28  |.void txt_hide (|
000adc50  3c 74 78 74 3e 20 74 29  3b 0a 48 65 61 64 65 72  |<txt> t);.Header|
000adc60  3a 09 3c 74 78 74 2e 68  3d 3e 74 78 74 5f 68 3e  |:.<txt.h=>txt_h>|
000adc70  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000adc80  68 69 64 65 73 20 61 20  74 65 78 74 20 77 68 69  |hides a text whi|
000adc90  63 68 20 68 61 73 20 62  65 65 6e 20 64 69 73 70  |ch has been disp|
000adca0  6c 61 79 65 64 2e 00 00  44 41 54 41 82 00 00 00  |layed...DATA....|
000adcb0  74 78 74 5f 69 6e 64 65  78 0a 54 68 69 73 20 74  |txt_index.This t|
000adcc0  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
000adcd0  6e 20 3c 74 78 74 2e 68  3d 3e 74 78 74 5f 68 3e  |n <txt.h=>txt_h>|
000adce0  20 61 73 20 61 6e 20 69  6e 64 65 78 20 69 6e 74  | as an index int|
000adcf0  6f 20 74 68 65 20 63 68  61 72 61 63 74 65 72 20  |o the character |
000add00  61 72 72 61 79 2e 20 49  74 20 69 73 20 61 63 74  |array. It is act|
000add10  75 61 6c 6c 79 20 64 65  66 69 6e 65 64 20 61 73  |ually defined as|
000add20  20 61 6e 20 2f 69 6e 74  2f 2e 00 00 44 41 54 41  | an /int/...DATA|
000add30  d9 00 00 00 74 78 74 5f  69 6e 64 65 78 6f 66 6d  |....txt_indexofm|
000add40  61 72 6b 65 72 0a 53 79  6e 74 61 78 3a 09 3c 74  |arker.Syntax:.<t|
000add50  78 74 5f 69 6e 64 65 78  3e 20 74 78 74 5f 69 6e  |xt_index> txt_in|
000add60  64 65 78 6f 66 6d 61 72  6b 65 72 20 28 3c 74 78  |dexofmarker (<tx|
000add70  74 3e 20 74 2c 20 3c 74  78 74 5f 6d 61 72 6b 65  |t> t, <txt_marke|
000add80  72 3e 20 2a 6d 61 72 6b  29 3b 0a 48 65 61 64 65  |r> *mark);.Heade|
000add90  72 3a 09 3c 74 78 74 2e  68 3d 3e 74 78 74 5f 68  |r:.<txt.h=>txt_h|
000adda0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 49 6e 64 65  |>..Returns:.Inde|
000addb0  78 20 6f 66 20 6d 61 72  6b 65 72 2e 0a 0a 54 68  |x of marker...Th|
000addc0  69 73 20 66 75 6e 63 74  69 6f 6e 20 67 69 76 65  |is function give|
000addd0  73 20 74 68 65 20 63 75  72 72 65 6e 74 20 69 6e  |s the current in|
000adde0  64 65 78 20 69 6e 74 6f  20 74 68 65 20 61 72 72  |dex into the arr|
000addf0  61 79 20 6f 66 20 61 20  67 69 76 65 6e 20 6d 61  |ay of a given ma|
000ade00  72 6b 65 72 2e 00 00 00  44 41 54 41 81 00 00 00  |rker....DATA....|
000ade10  74 78 74 5f 69 6e 69 74  0a 53 79 6e 74 61 78 3a  |txt_init.Syntax:|
000ade20  20 20 76 6f 69 64 20 74  78 74 5f 69 6e 69 74 20  |  void txt_init |
000ade30  28 76 6f 69 64 29 3b 0a  48 65 61 64 65 72 3a 20  |(void);.Header: |
000ade40  20 3c 74 78 74 2e 68 3d  3e 74 78 74 5f 68 3e 0a  | <txt.h=>txt_h>.|
000ade50  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 69  |.This function i|
000ade60  6e 69 74 69 61 6c 69 73  65 73 20 74 68 65 20 74  |nitialises the t|
000ade70  78 74 20 6d 6f 64 75 6c  65 20 6f 66 20 74 68 65  |xt module of the|
000ade80  0a 6c 69 62 72 61 72 79  2e 00 00 00 44 41 54 41  |.library....DATA|
000ade90  a3 00 00 00 74 78 74 5f  69 6e 73 65 72 74 63 68  |....txt_insertch|
000adea0  61 72 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |ar.Syntax:.void |
000adeb0  74 78 74 5f 69 6e 73 65  72 74 63 68 61 72 20 28  |txt_insertchar (|
000adec0  3c 74 78 74 3e 20 74 2c  20 63 68 61 72 20 63 29  |<txt> t, char c)|
000aded0  3b 0a 48 65 61 64 65 72  3a 09 3c 74 78 74 2e 68  |;.Header:.<txt.h|
000adee0  3d 3e 74 78 74 5f 68 3e  0a 0a 54 68 69 73 20 66  |=>txt_h>..This f|
000adef0  75 6e 63 74 69 6f 6e 20  69 6e 73 65 72 74 73 20  |unction inserts |
000adf00  61 20 63 68 61 72 61 63  74 65 72 20 69 6e 74 6f  |a character into|
000adf10  20 74 68 65 20 74 65 78  74 20 6a 75 73 74 20 61  | the text just a|
000adf20  66 74 65 72 20 74 68 65  20 22 64 6f 74 22 2e 00  |fter the "dot"..|
000adf30  44 41 54 41 a0 00 00 00  74 78 74 5f 69 6e 73 65  |DATA....txt_inse|
000adf40  72 74 73 74 72 69 6e 67  0a 53 79 6e 74 61 78 3a  |rtstring.Syntax:|
000adf50  09 76 6f 69 64 20 74 78  74 5f 69 6e 73 65 72 74  |.void txt_insert|
000adf60  73 74 72 69 6e 67 20 28  3c 74 78 74 3e 20 74 2c  |string (<txt> t,|
000adf70  20 63 68 61 72 20 2a 73  29 3b 0a 48 65 61 64 65  | char *s);.Heade|
000adf80  72 3a 09 3c 74 78 74 2e  68 3d 3e 74 78 74 5f 68  |r:.<txt.h=>txt_h|
000adf90  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
000adfa0  20 69 6e 73 65 72 74 73  20 74 68 65 20 67 69 76  | inserts the giv|
000adfb0  65 6e 20 63 68 61 72 61  63 74 65 72 20 73 74 72  |en character str|
000adfc0  69 6e 67 20 69 6e 74 6f  20 61 20 74 65 78 74 2e  |ing into a text.|
000adfd0  44 41 54 41 78 00 00 00  74 78 74 5f 6c 61 73 74  |DATAx...txt_last|
000adfe0  72 65 66 0a 53 79 6e 74  61 78 3a 09 69 6e 74 20  |ref.Syntax:.int |
000adff0  74 78 74 5f 6c 61 73 74  72 65 66 20 28 3c 74 78  |txt_lastref (<tx|
000ae000  74 3e 20 74 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |t> t);.Header:.<|
000ae010  74 78 74 2e 68 3d 3e 74  78 74 5f 68 3e 0a 0a 52  |txt.h=>txt_h>..R|
000ae020  65 74 75 72 6e 73 3a 09  43 75 72 72 65 6e 74 20  |eturns:.Current |
000ae030  76 61 6c 75 65 20 6f 66  20 7b 2a 7d 6c 61 73 74  |value of {*}last|
000ae040  5f 72 65 66 7b 2a 7d 2e  44 41 54 41 8e 01 00 00  |_ref{*}.DATA....|
000ae050  74 78 74 5f 6d 61 72 6b  65 72 0a 54 68 69 73 20  |txt_marker.This |
000ae060  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
000ae070  69 6e 20 3c 74 78 74 2e  68 3d 3e 74 78 74 5f 68  |in <txt.h=>txt_h|
000ae080  3e 2e 20 49 74 20 63 6f  6e 74 61 69 6e 73 20 61  |>. It contains a|
000ae090  20 6d 61 72 6b 65 72 20  70 6f 73 69 74 69 6f 6e  | marker position|
000ae0a0  2e 20 4d 61 72 6b 65 72  73 20 61 72 65 20 69 6e  |. Markers are in|
000ae0b0  64 69 63 65 73 20 69 6e  74 6f 20 74 68 65 20 61  |dices into the a|
000ae0c0  72 72 61 79 2e 20 4f 6e  63 65 20 73 65 74 2c 20  |rray. Once set, |
000ae0d0  61 20 6d 61 72 6b 65 72  20 77 69 6c 6c 20 70 6f  |a marker will po|
000ae0e0  69 6e 74 20 74 6f 20 74  68 65 20 73 61 6d 65 20  |int to the same |
000ae0f0  63 68 61 72 61 63 74 65  72 20 69 6e 20 74 68 65  |character in the|
000ae100  20 61 72 72 61 79 20 72  65 67 61 72 64 6c 65 73  | array regardles|
000ae110  73 20 6f 66 20 69 6e 73  65 72 74 69 6f 6e 73 20  |s of insertions |
000ae120  6f 72 20 64 65 6c 65 74  69 6f 6e 73 2e 20 49 66  |or deletions. If|
000ae130  20 74 68 65 20 63 68 61  72 61 63 74 65 72 20 69  | the character i|
000ae140  73 20 64 65 6c 65 74 65  64 2c 20 74 68 65 20 6e  |s deleted, the n|
000ae150  65 78 74 20 63 68 61 72  61 63 74 65 72 20 69 73  |ext character is|
000ae160  20 70 6f 69 6e 74 65 64  20 74 6f 2e 20 49 74 20  | pointed to. It |
000ae170  69 73 20 64 65 66 69 6e  65 64 20 61 73 20 74 68  |is defined as th|
000ae180  65 20 66 6f 6c 6c 6f 77  69 6e 67 20 73 74 72 75  |e following stru|
000ae190  63 74 75 72 65 3a 0a 0a  20 20 5c 7b 0a 20 20 20  |cture:..  \{.   |
000ae1a0  20 69 6e 74 20 61 3b 0a  20 20 20 20 69 6e 74 20  | int a;.    int |
000ae1b0  62 3b 0a 20 20 7d 0a 0a  53 65 6c 66 2d 65 78 70  |b;.  }..Self-exp|
000ae1c0  6c 61 6e 61 74 6f 72 79  20 49 20 74 68 69 6e 6b  |lanatory I think|
000ae1d0  2e 20 4e 6f 74 2e 00 00  44 41 54 41 a3 01 00 00  |. Not...DATA....|
000ae1e0  74 78 74 5f 6d 6f 75 73  65 65 76 65 6e 74 66 6c  |txt_mouseeventfl|
000ae1f0  61 67 0a 54 68 69 73 20  69 73 20 61 6e 20 65 6e  |ag.This is an en|
000ae200  75 6d 65 72 61 74 65 64  20 74 79 70 65 20 64 65  |umerated type de|
000ae210  66 69 6e 65 64 20 69 6e  20 3c 74 78 74 2e 68 3d  |fined in <txt.h=|
000ae220  3e 74 78 74 5f 68 3e 20  61 73 20 66 6f 6c 6c 6f  |>txt_h> as follo|
000ae230  77 73 3a 0a 0a 20 20 5c  7b 0a 20 20 a0 20 74 78  |ws:..  \{.  . tx|
000ae240  74 5f 4d 53 45 4c 45 43  54 09 3d 20 20 30 78 30  |t_MSELECT.=  0x0|
000ae250  31 30 30 30 30 30 30 2c  0a 20 20 20 20 74 78 74  |1000000,.    txt|
000ae260  5f 4d 45 58 54 45 4e 44  09 3d 20 20 30 78 30 32  |_MEXTEND.=  0x02|
000ae270  30 30 30 30 30 30 2c 0a  20 20 20 20 74 78 74 5f  |000000,.    txt_|
000ae280  4d 53 45 4c 4f 4c 44 09  3d 20 20 30 78 30 34 30  |MSELOLD.=  0x040|
000ae290  30 30 30 30 30 2c 0a 20  20 20 20 74 78 74 5f 4d  |00000,.    txt_M|
000ae2a0  45 58 54 4f 4c 44 09 3d  20 20 30 78 30 38 30 30  |EXTOLD.=  0x0800|
000ae2b0  30 30 30 30 2c 0a 20 20  20 20 74 78 74 5f 4d 45  |0000,.    txt_ME|
000ae2c0  58 41 43 54 09 3d 20 20  30 78 31 30 30 30 30 30  |XACT.=  0x100000|
000ae2d0  30 30 2c 0a 20 20 20 20  74 78 74 5f 45 58 54 52  |00,.    txt_EXTR|
000ae2e0  41 43 4f 44 45 09 3d 20  20 30 78 34 30 30 30 30  |ACODE.=  0x40000|
000ae2f0  30 30 30 2c 0a 20 20 20  20 74 78 74 5f 4d 4f 55  |000,.    txt_MOU|
000ae300  53 45 43 4f 44 45 09 3d  20 7e 30 78 37 66 66 66  |SECODE.= ~0x7fff|
000ae310  66 66 66 66 0a 20 20 7d  0a 0a 41 20 6d 6f 75 73  |ffff.  }..A mous|
000ae320  65 20 65 76 65 6e 74 20  70 72 6f 64 75 63 65 73  |e event produces|
000ae330  20 61 6e 20 65 76 65 6e  74 20 63 6f 64 65 20 77  | an event code w|
000ae340  69 74 68 20 62 69 74 20  33 31 20 73 65 74 20 61  |ith bit 31 set a|
000ae350  6e 64 20 62 69 74 73 20  32 34 2d 32 38 20 61 73  |nd bits 24-28 as|
000ae360  20 74 68 65 20 6d 6f 75  73 65 65 76 65 6e 74 66  | the mouseeventf|
000ae370  6c 61 67 73 20 76 61 6c  75 65 2e 00 44 41 54 41  |lags value..DATA|
000ae380  ef 00 00 00 74 78 74 5f  6d 6f 76 65 64 6f 74 0a  |....txt_movedot.|
000ae390  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 74 78 74  |Syntax:.void txt|
000ae3a0  5f 6d 6f 76 65 64 6f 74  20 28 3c 74 78 74 3e 20  |_movedot (<txt> |
000ae3b0  74 2c 20 3c 74 78 74 5f  69 6e 64 65 78 3e 20 62  |t, <txt_index> b|
000ae3c0  79 29 3b 0a 48 65 61 64  65 72 3a 09 3c 74 78 74  |y);.Header:.<txt|
000ae3d0  2e 68 3d 3e 74 78 74 5f  68 3e 0a 0a 54 68 69 73  |.h=>txt_h>..This|
000ae3e0  20 66 75 6e 63 74 69 6f  6e 20 6d 6f 76 65 73 20  | function moves |
000ae3f0  74 68 65 20 22 64 6f 74  22 20 62 79 20 61 20 67  |the "dot" by a g|
000ae400  69 76 65 6e 20 64 69 73  74 61 6e 63 65 20 69 6e  |iven distance in|
000ae410  20 74 68 65 20 61 72 72  61 79 2e 20 49 74 20 74  | the array. It t|
000ae420  68 65 20 72 65 73 75 6c  74 61 6e 74 20 70 6f 73  |he resultant pos|
000ae430  69 74 69 6f 6e 20 69 73  20 6f 75 74 73 69 64 65  |ition is outside|
000ae440  20 74 68 65 20 61 72 72  61 79 2c 20 69 74 20 69  | the array, it i|
000ae450  73 20 73 65 74 20 74 6f  20 74 68 65 20 62 65 67  |s set to the beg|
000ae460  69 6e 6e 69 6e 67 2f 65  6e 64 2e 00 44 41 54 41  |inning/end..DATA|
000ae470  a4 00 00 00 74 78 74 5f  6d 6f 76 65 64 6f 74 74  |....txt_movedott|
000ae480  6f 6d 61 72 6b 65 72 0a  53 79 6e 74 61 78 3a 09  |omarker.Syntax:.|
000ae490  76 6f 69 64 20 74 78 74  5f 6d 6f 76 65 64 6f 74  |void txt_movedot|
000ae4a0  74 6f 6d 61 72 6b 65 72  20 28 3c 74 78 74 3e 20  |tomarker (<txt> |
000ae4b0  74 2c 20 3c 74 78 74 5f  6d 61 72 6b 65 72 3e 20  |t, <txt_marker> |
000ae4c0  2a 6d 61 72 6b 29 3b 0a  48 65 61 64 65 72 3a 09  |*mark);.Header:.|
000ae4d0  3c 74 78 74 2e 68 3d 3e  74 78 74 5f 68 3e 0a 0a  |<txt.h=>txt_h>..|
000ae4e0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 6d 6f  |This function mo|
000ae4f0  76 65 73 20 74 68 65 20  22 64 6f 74 22 20 74 6f  |ves the "dot" to|
000ae500  20 61 20 67 69 76 65 6e  20 6d 61 72 6b 65 72 2e  | a given marker.|
000ae510  44 41 54 41 d6 00 00 00  74 78 74 5f 6d 6f 76 65  |DATA....txt_move|
000ae520  68 6f 72 69 7a 6f 6e 74  61 6c 0a 53 79 6e 74 61  |horizontal.Synta|
000ae530  78 3a 09 76 6f 69 64 20  74 78 74 5f 6d 6f 76 65  |x:.void txt_move|
000ae540  68 6f 72 69 7a 6f 6e 74  61 6c 20 28 3c 74 78 74  |horizontal (<txt|
000ae550  3e 20 74 2c 20 69 6e 74  20 62 79 29 3b 0a 48 65  |> t, int by);.He|
000ae560  61 64 65 72 3a 09 3c 74  78 74 2e 68 3d 3e 74 78  |ader:.<txt.h=>tx|
000ae570  74 5f 68 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |t_h>..This funct|
000ae580  69 6f 6e 20 6d 6f 76 65  73 20 74 68 65 20 22 64  |ion moves the "d|
000ae590  6f 74 22 20 62 79 20 61  20 73 70 65 63 69 66 69  |ot" by a specifi|
000ae5a0  65 64 20 6e 75 6d 62 65  72 20 6f 66 20 63 6f 6c  |ed number of col|
000ae5b0  75 6d 6e 73 2c 20 6b 65  65 70 69 6e 67 20 74 68  |umns, keeping th|
000ae5c0  65 20 63 61 72 65 74 20  69 6e 20 74 68 65 20 73  |e caret in the s|
000ae5d0  61 6d 65 20 76 65 72 74  69 63 61 6c 20 70 6f 73  |ame vertical pos|
000ae5e0  69 74 69 6f 6e 2e 00 00  44 41 54 41 04 01 00 00  |ition...DATA....|
000ae5f0  74 78 74 5f 6d 6f 76 65  6d 61 72 6b 65 72 0a 53  |txt_movemarker.S|
000ae600  79 6e 74 61 78 3a 20 20  76 6f 69 64 20 74 78 74  |yntax:  void txt|
000ae610  5f 6d 6f 76 65 6d 61 72  6b 65 72 20 28 3c 74 78  |_movemarker (<tx|
000ae620  74 3e 20 74 2c 0a 20 20  20 20 20 20 20 20 20 3c  |t> t,.         <|
000ae630  74 78 74 5f 6d 61 72 6b  65 72 3e 20 2a 6d 61 72  |txt_marker> *mar|
000ae640  6b 2c 20 3c 74 78 74 5f  69 6e 64 65 78 3e 20 74  |k, <txt_index> t|
000ae650  6f 29 3b 0a 48 65 61 64  65 72 3a 20 20 3c 74 78  |o);.Header:  <tx|
000ae660  74 2e 68 3d 3e 74 78 74  5f 68 3e 0a 0a 54 68 69  |t.h=>txt_h>..Thi|
000ae670  73 20 66 75 6e 63 74 69  6f 6e 20 63 68 61 6e 67  |s function chang|
000ae680  65 73 20 61 6e 20 65 78  69 73 69 74 69 6e 67 20  |es an exisiting |
000ae690  6d 61 72 6b 65 72 20 74  6f 0a 70 6f 69 6e 74 20  |marker to.point |
000ae6a0  74 6f 20 27 74 6f 27 2e  20 54 68 65 20 6d 61 72  |to 'to'. The mar|
000ae6b0  6b 65 72 20 6d 75 73 74  20 68 61 76 65 20 62 65  |ker must have be|
000ae6c0  65 6e 0a 69 6e 69 74 69  61 6c 69 73 65 64 20 74  |en.initialised t|
000ae6d0  6f 20 70 6f 69 6e 74 20  61 74 20 74 68 69 73 20  |o point at this |
000ae6e0  74 65 78 74 20 6f 62 6a  65 63 74 2e 44 41 54 41  |text object.DATA|
000ae6f0  29 01 00 00 74 78 74 5f  6d 6f 76 65 76 65 72 74  |)...txt_movevert|
000ae700  69 63 61 6c 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |ical.Syntax:.voi|
000ae710  64 20 74 78 74 5f 6d 6f  76 65 76 65 72 74 69 63  |d txt_movevertic|
000ae720  61 6c 20 28 3c 74 78 74  3e 20 74 2c 20 69 6e 74  |al (<txt> t, int|
000ae730  20 62 79 2c 20 69 6e 74  20 6d 6f 76 65 74 65 78  | by, int movetex|
000ae740  74 29 0a 48 65 61 64 65  72 3a 09 3c 74 78 74 2e  |t).Header:.<txt.|
000ae750  68 3d 3e 74 78 74 5f 68  3e 0a 0a 54 68 69 73 20  |h=>txt_h>..This |
000ae760  66 75 6e 63 74 69 6f 6e  20 6d 6f 76 65 73 20 74  |function moves t|
000ae770  68 65 20 22 64 6f 74 22  20 62 79 20 61 20 73 70  |he "dot" by a sp|
000ae780  65 63 69 66 69 65 64 20  6e 75 6d 62 65 72 20 6f  |ecified number o|
000ae790  66 20 74 65 78 74 20 6c  69 6e 65 73 2c 20 6b 65  |f text lines, ke|
000ae7a0  65 70 69 6e 67 20 74 68  65 20 63 61 72 65 74 20  |eping the caret |
000ae7b0  69 6e 20 74 68 65 20 73  61 6d 65 20 68 6f 72 69  |in the same hori|
000ae7c0  7a 6f 6e 74 61 6c 20 70  6f 73 69 74 69 6f 6e 2e  |zontal position.|
000ae7d0  20 49 66 20 2f 6d 6f 76  65 74 65 78 74 2f 20 69  | If /movetext/ i|
000ae7e0  73 20 6e 6f 6e 2d 7a 65  72 6f 20 74 68 65 6e 20  |s non-zero then |
000ae7f0  74 68 65 20 74 65 78 74  20 6d 6f 76 65 73 20 72  |the text moves r|
000ae800  61 74 68 65 72 20 74 68  61 6e 20 74 68 65 20 63  |ather than the c|
000ae810  61 72 65 74 2e 00 00 00  44 41 54 41 76 01 00 00  |aret....DATAv...|
000ae820  74 78 74 5f 6e 65 77 0a  53 79 6e 74 61 78 3a 09  |txt_new.Syntax:.|
000ae830  09 3c 74 78 74 3e 20 74  78 74 5f 6e 65 77 20 28  |.<txt> txt_new (|
000ae840  63 68 61 72 20 2a 74 69  74 6c 65 29 3b 0a 48 65  |char *title);.He|
000ae850  61 64 65 72 3a 09 09 3c  74 78 74 2e 68 3d 3e 74  |ader:..<txt.h=>t|
000ae860  78 74 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |xt_h>..Returns:.|
000ae870  50 6f 69 6e 74 65 72 20  74 6f 20 74 68 65 20 6e  |Pointer to the n|
000ae880  65 77 6c 79 20 63 72 65  61 74 65 64 20 74 65 78  |ewly created tex|
000ae890  74 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |t...This functio|
000ae8a0  6e 20 63 72 65 61 74 65  73 20 61 20 6e 65 77 20  |n creates a new |
000ae8b0  74 65 78 74 20 6f 62 6a  65 63 74 2c 20 63 6f 6e  |text object, con|
000ae8c0  74 61 69 6e 69 6e 67 20  6e 6f 20 63 68 61 72 61  |taining no chara|
000ae8d0  63 74 65 72 73 2c 20 77  69 74 68 20 61 20 67 69  |cters, with a gi|
000ae8e0  76 65 6e 20 74 69 74 6c  65 20 28 74 6f 20 61 70  |ven title (to ap|
000ae8f0  70 65 61 72 20 69 6e 20  69 74 73 20 77 69 6e 64  |pear in its wind|
000ae900  6f 77 29 2e 20 54 68 69  73 20 66 75 6e 63 74 69  |ow). This functi|
000ae910  6f 6e 20 64 6f 65 73 20  6e 6f 74 20 72 65 73 75  |on does not resu|
000ae920  6c 74 20 69 6e 20 74 68  65 20 74 65 78 74 20 62  |lt in the text b|
000ae930  65 69 6e 67 20 64 69 73  70 6c 61 79 65 64 20 6f  |eing displayed o|
000ae940  6e 20 74 68 65 20 73 63  72 65 65 6e 2e 20 30 20  |n the screen. 0 |
000ae950  69 73 20 72 65 74 75 72  6e 65 64 20 69 66 20 74  |is returned if t|
000ae960  68 65 72 65 20 69 73 20  6e 6f 74 20 65 6e 6f 75  |here is not enou|
000ae970  67 68 20 73 70 61 63 65  20 74 6f 20 63 72 65 61  |gh space to crea|
000ae980  74 65 20 74 68 65 20 6f  62 6a 65 63 74 2e 00 00  |te the object...|
000ae990  44 41 54 41 d4 00 00 00  74 78 74 5f 6e 65 77 6d  |DATA....txt_newm|
000ae9a0  61 72 6b 65 72 0a 53 79  6e 74 61 78 3a 09 76 6f  |arker.Syntax:.vo|
000ae9b0  69 64 20 74 78 74 5f 6e  65 77 6d 61 72 6b 65 72  |id txt_newmarker|
000ae9c0  20 28 3c 74 78 74 3e 20  74 2c 20 3c 74 78 74 5f  | (<txt> t, <txt_|
000ae9d0  6d 61 72 6b 65 72 3e 20  2a 6d 61 72 6b 29 3b 0a  |marker> *mark);.|
000ae9e0  48 65 61 64 65 72 3a 09  3c 74 78 74 2e 68 3d 3e  |Header:.<txt.h=>|
000ae9f0  74 78 74 5f 68 3e 0a 0a  54 68 69 73 20 66 75 6e  |txt_h>..This fun|
000aea00  63 74 69 6f 6e 20 69 6e  69 74 69 61 6c 69 73 65  |ction initialise|
000aea10  73 20 61 20 6e 65 77 20  6d 61 72 6b 65 72 2c 20  |s a new marker, |
000aea20  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 2f 6d  |pointed to by /m|
000aea30  61 72 6b 2f 2e 20 49 74  20 69 73 20 73 65 74 20  |ark/. It is set |
000aea40  74 6f 20 62 65 20 61 74  20 74 68 65 20 63 75 72  |to be at the cur|
000aea50  72 65 6e 74 20 22 64 6f  74 22 20 70 6f 73 69 74  |rent "dot" posit|
000aea60  69 6f 6e 2e 44 41 54 41  b5 00 00 00 54 58 54 5f  |ion.DATA....TXT_|
000aea70  4f 4e 4c 59 0a 54 68 69  73 20 6d 61 63 72 6f 20  |ONLY.This macro |
000aea80  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 54  |is defined in <T|
000aea90  69 6d 73 4c 69 62 3a 49  63 6f 6e 2e 68 3d 3e 49  |imsLib:Icon.h=>I|
000aeaa0  63 6f 6e 5f 54 4c 3e 2e  20 49 74 20 69 73 20 74  |con_TL>. It is t|
000aeab0  68 65 20 76 61 6c 75 65  20 74 68 65 20 72 65 74  |he value the ret|
000aeac0  75 72 6e 65 64 20 62 79  20 3c 49 43 4f 4e 5f 54  |urned by <ICON_T|
000aead0  59 50 45 3e 20 77 68 65  6e 20 74 68 65 20 69 63  |YPE> when the ic|
000aeae0  6f 6e 20 69 6e 20 71 75  65 73 74 69 6f 6e 20 69  |on in question i|
000aeaf0  73 20 61 20 27 74 65 78  74 20 6f 6e 6c 79 27 20  |s a 'text only' |
000aeb00  69 63 6f 6e 2e 20 49 74  20 69 73 20 64 65 66 69  |icon. It is defi|
000aeb10  6e 65 64 20 61 73 20 31  2e 00 00 00 44 41 54 41  |ned as 1....DATA|
000aeb20  c6 00 00 00 74 78 74 5f  71 75 65 75 65 0a 53 79  |....txt_queue.Sy|
000aeb30  6e 74 61 78 3a 09 69 6e  74 20 74 78 74 5f 71 75  |ntax:.int txt_qu|
000aeb40  65 75 65 20 28 3c 74 78  74 3e 20 74 29 3b 0a 48  |eue (<txt> t);.H|
000aeb50  65 61 64 65 72 3a 09 3c  74 78 74 2e 68 3d 3e 74  |eader:.<txt.h=>t|
000aeb60  78 74 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |xt_h>..Returns:.|
000aeb70  4e 75 6d 62 65 72 20 6f  66 20 62 75 66 66 65 72  |Number of buffer|
000aeb80  65 64 20 65 76 65 6e 74  20 63 6f 64 65 73 2e 0a  |ed event codes..|
000aeb90  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
000aeba0  65 61 64 73 20 68 6f 77  20 6d 61 6e 79 20 65 76  |eads how many ev|
000aebb0  65 6e 74 20 63 6f 64 65  73 20 61 72 65 20 63 75  |ent codes are cu|
000aebc0  72 72 65 6e 74 6c 79 20  62 75 66 66 65 72 65 64  |rrently buffered|
000aebd0  20 66 6f 72 20 61 20 67  69 76 65 6e 20 74 65 78  | for a given tex|
000aebe0  74 2e 00 00 44 41 54 41  40 01 00 00 74 78 74 5f  |t...DATA@...txt_|
000aebf0  72 65 61 64 65 76 65 6e  74 68 61 6e 64 6c 65 72  |readeventhandler|
000aec00  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 74 78  |.Syntax:.void tx|
000aec10  74 5f 72 65 61 64 65 76  65 6e 74 68 61 6e 64 6c  |t_readeventhandl|
000aec20  65 72 20 28 3c 74 78 74  3e 20 74 2c 20 3c 74 78  |er (<txt> t, <tx|
000aec30  74 5f 65 76 65 6e 74 5f  70 72 6f 63 3e 20 2a 66  |t_event_proc> *f|
000aec40  75 6e 63 2c 20 76 6f 69  64 20 2a 2a 68 6e 64 29  |unc, void **hnd)|
000aec50  3b 0a 48 65 61 64 65 72  3a 09 3c 74 78 74 2e 68  |;.Header:.<txt.h|
000aec60  3d 3e 74 78 74 5f 68 3e  0a 0a 54 68 69 73 20 66  |=>txt_h>..This f|
000aec70  75 6e 63 74 69 6f 6e 20  72 65 61 64 73 20 74 68  |unction reads th|
000aec80  65 20 63 75 72 72 65 6e  74 6c 79 20 72 65 67 69  |e currently regi|
000aec90  73 74 65 72 65 64 20 65  76 65 6e 74 68 61 6e 64  |stered eventhand|
000aeca0  6c 65 72 20 66 75 6e 63  74 69 6f 6e 20 61 73 73  |ler function ass|
000aecb0  6f 63 69 61 74 65 64 20  77 69 74 68 20 61 20 67  |ociated with a g|
000aecc0  69 76 65 6e 20 74 65 78  74 2c 20 61 6e 64 20 72  |iven text, and r|
000aecd0  65 74 75 72 6e 73 20 62  6f 74 68 20 69 74 73 20  |eturns both its |
000aece0  70 6f 69 6e 74 65 72 20  61 6e 64 20 69 74 73 20  |pointer and its |
000aecf0  68 61 6e 64 6c 65 20 28  69 6e 20 7b 2f 7d 2a 66  |handle (in {/}*f|
000aed00  75 6e 63 7b 2f 7d 20 61  6e 64 20 7b 2f 7d 2a 68  |unc{/} and {/}*h|
000aed10  6e 64 7b 2f 7d 20 72 65  73 70 65 63 74 69 76 65  |nd{/} respective|
000aed20  6c 79 29 2e 44 41 54 41  ed 00 00 00 74 78 74 5f  |ly).DATA....txt_|
000aed30  72 65 70 6c 61 63 65 61  74 65 6e 64 0a 53 79 6e  |replaceatend.Syn|
000aed40  74 61 78 3a 09 76 6f 69  64 20 74 78 74 5f 72 65  |tax:.void txt_re|
000aed50  70 6c 61 63 65 61 74 65  6e 64 20 28 3c 74 78 74  |placeatend (<txt|
000aed60  3e 20 74 2c 20 69 6e 74  20 6e 74 6f 64 65 6c 2c  |> t, int ntodel,|
000aed70  20 63 68 61 72 20 2a 73  2c 20 69 6e 74 20 6e 74  | char *s, int nt|
000aed80  6f 69 6e 73 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |oins);.Header:.<|
000aed90  74 78 74 2e 68 3d 3e 74  78 74 5f 68 3e 0a 0a 54  |txt.h=>txt_h>..T|
000aeda0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 64 65 6c  |his function del|
000aedb0  65 74 65 73 20 2f 6e 74  6f 64 65 6c 2f 20 63 68  |etes /ntodel/ ch|
000aedc0  61 72 61 63 74 65 72 73  20 66 72 6f 6d 0a 74 68  |aracters from.th|
000aedd0  65 20 65 6e 64 20 6f 66  20 74 68 65 20 61 72 72  |e end of the arr|
000aede0  61 79 20 61 6e 64 20 74  68 65 6e 20 69 6e 73 65  |ay and then inse|
000aedf0  72 74 73 20 2f 6e 74 6f  69 6e 73 2f 0a 63 68 61  |rts /ntoins/.cha|
000aee00  72 61 63 74 65 72 73 20  66 72 6f 6d 20 2f 73 2f  |racters from /s/|
000aee10  2e 00 00 00 44 41 54 41  1e 01 00 00 74 78 74 5f  |....DATA....txt_|
000aee20  72 65 70 6c 61 63 65 63  68 61 72 73 0a 53 79 6e  |replacechars.Syn|
000aee30  74 61 78 3a 09 76 6f 69  64 20 74 78 74 5f 72 65  |tax:.void txt_re|
000aee40  70 6c 61 63 65 63 68 61  72 73 20 28 3c 74 78 74  |placechars (<txt|
000aee50  3e 20 74 2c 20 69 6e 74  20 6e 74 6f 64 65 6c 2c  |> t, int ntodel,|
000aee60  20 63 68 61 72 20 2a 61  2c 20 69 6e 74 20 6e 74  | char *a, int nt|
000aee70  6f 69 6e 73 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |oins);.Header:.<|
000aee80  74 78 74 2e 68 3d 3e 74  78 74 5f 68 3e 0a 0a 54  |txt.h=>txt_h>..T|
000aee90  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 64 65 6c  |his function del|
000aeea0  65 74 65 73 20 2f 6e 74  6f 64 65 6c 2f 20 63 68  |etes /ntodel/ ch|
000aeeb0  61 72 61 63 74 65 72 73  20 66 72 6f 6d 20 74 68  |aracters from th|
000aeec0  65 20 22 64 6f 74 22 20  6f 6e 77 61 72 64 73 2c  |e "dot" onwards,|
000aeed0  20 61 6e 64 20 69 6e 73  65 72 74 73 20 2f 6e 74  | and inserts /nt|
000aeee0  6f 69 6e 73 2f 20 63 68  61 72 61 63 74 65 72 73  |oins/ characters|
000aeef0  20 61 74 20 74 68 65 20  73 61 6d 65 20 70 6f 69  | at the same poi|
000aef00  6e 74 2e 20 54 68 65 20  69 6e 73 65 72 74 65 64  |nt. The inserted|
000aef10  20 63 68 61 72 61 63 74  65 72 73 20 61 72 65 20  | characters are |
000aef20  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 2f 61  |pointed to by /a|
000aef30  2f 2e 00 00 44 41 54 41  d0 00 00 00 74 78 74 5f  |/...DATA....txt_|
000aef40  73 65 6c 65 63 74 65 6e  64 0a 53 79 6e 74 61 78  |selectend.Syntax|
000aef50  3a 09 3c 74 78 74 5f 69  6e 64 65 78 3e 20 74 78  |:.<txt_index> tx|
000aef60  74 5f 73 65 6c 65 63 74  65 6e 64 20 28 3c 74 78  |t_selectend (<tx|
000aef70  74 3e 20 74 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |t> t);.Header:.<|
000aef80  74 78 74 2e 68 3d 3e 74  78 74 5f 68 3e 0a 0a 52  |txt.h=>txt_h>..R|
000aef90  65 74 75 72 6e 73 3a 09  49 6e 64 65 78 20 6f 66  |eturns:.Index of|
000aefa0  20 61 20 73 65 6c 65 63  74 69 6f 6e 20 65 6e 64  | a selection end|
000aefb0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000aefc0  20 67 69 76 65 73 20 74  68 65 20 69 6e 64 65 78  | gives the index|
000aefd0  20 69 6e 74 6f 20 74 68  65 20 61 72 72 61 79 20  | into the array |
000aefe0  6f 66 20 74 68 65 20 65  6e 64 20 6f 66 20 74 68  |of the end of th|
000aeff0  65 20 63 75 72 72 65 6e  74 20 73 65 6c 65 63 74  |e current select|
000af000  69 6f 6e 2e 44 41 54 41  c4 00 00 00 74 78 74 5f  |ion.DATA....txt_|
000af010  73 65 6c 65 63 74 73 65  74 0a 53 79 6e 74 61 78  |selectset.Syntax|
000af020  3a 09 3c 42 4f 4f 4c 3e  20 74 78 74 5f 73 65 6c  |:.<BOOL> txt_sel|
000af030  65 63 74 73 65 74 20 28  3c 74 78 74 3e 20 74 29  |ectset (<txt> t)|
000af040  3b 0a 48 65 61 64 65 72  3a 09 3c 74 78 74 2e 68  |;.Header:.<txt.h|
000af050  3d 3e 74 78 74 5f 68 3e  0a 0a 52 65 74 75 72 6e  |=>txt_h>..Return|
000af060  73 3a 09 3c 54 52 55 45  3e 20 69 66 20 74 68 65  |s:.<TRUE> if the|
000af070  72 65 20 69 73 20 61 20  73 65 6c 65 63 74 69 6f  |re is a selectio|
000af080  6e 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |n...This functio|
000af090  6e 20 74 65 6c 6c 73 20  79 6f 75 20 77 68 65 74  |n tells you whet|
000af0a0  68 65 72 20 74 68 65 72  65 20 69 73 20 61 20 73  |her there is a s|
000af0b0  65 6c 65 63 74 69 6f 6e  20 6d 61 64 65 20 69 6e  |election made in|
000af0c0  20 61 20 74 65 78 74 2e  44 41 54 41 d8 00 00 00  | a text.DATA....|
000af0d0  74 78 74 5f 73 65 6c 65  63 74 73 74 61 72 74 0a  |txt_selectstart.|
000af0e0  53 79 6e 74 61 78 3a 09  3c 74 78 74 5f 69 6e 64  |Syntax:.<txt_ind|
000af0f0  65 78 3e 20 74 78 74 5f  73 65 6c 65 63 74 73 74  |ex> txt_selectst|
000af100  61 72 74 20 28 3c 74 78  74 3e 20 74 29 3b 0a 48  |art (<txt> t);.H|
000af110  65 61 64 65 72 3a 09 3c  74 78 74 2e 68 3d 3e 74  |eader:.<txt.h=>t|
000af120  78 74 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |xt_h>..Returns:.|
000af130  49 6e 64 65 78 20 6f 66  20 61 20 73 65 6c 65 63  |Index of a selec|
000af140  74 69 6f 6e 20 73 74 61  72 74 2e 0a 0a 54 68 69  |tion start...Thi|
000af150  73 20 66 75 6e 63 74 69  6f 6e 20 67 69 76 65 73  |s function gives|
000af160  20 74 68 65 20 69 6e 64  65 78 20 69 6e 74 6f 20  | the index into |
000af170  74 68 65 20 61 72 72 61  79 20 6f 66 20 74 68 65  |the array of the|
000af180  20 73 74 61 72 74 20 6f  66 20 74 68 65 20 63 75  | start of the cu|
000af190  72 72 65 6e 74 20 73 65  6c 65 63 74 69 6f 6e 2e  |rrent selection.|
000af1a0  44 41 54 41 2e 01 00 00  74 78 74 5f 73 65 74 62  |DATA....txt_setb|
000af1b0  75 66 73 69 7a 65 0a 53  79 6e 74 61 78 3a 09 3c  |ufsize.Syntax:.<|
000af1c0  42 4f 4f 4c 3e 20 74 78  74 5f 73 65 74 62 75 66  |BOOL> txt_setbuf|
000af1d0  73 69 7a 65 20 28 3c 74  78 74 3e 20 74 2c 20 69  |size (<txt> t, i|
000af1e0  6e 74 20 73 69 7a 65 29  3b 0a 48 65 61 64 65 72  |nt size);.Header|
000af1f0  3a 09 3c 74 78 74 2e 68  3d 3e 74 78 74 5f 68 3e  |:.<txt.h=>txt_h>|
000af200  0a 0a 52 65 74 75 72 6e  73 3a 09 3c 54 52 55 45  |..Returns:.<TRUE|
000af210  3e 20 69 66 20 73 75 63  63 65 73 73 66 75 6c 2e  |> if successful.|
000af220  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000af230  61 6c 6c 6f 63 61 74 65  73 20 6d 6f 72 65 20 73  |allocates more s|
000af240  70 61 63 65 20 66 6f 72  20 74 68 65 20 74 65 78  |pace for the tex|
000af250  74 20 62 75 66 66 65 72  2e 20 49 74 20 69 6e 63  |t buffer. It inc|
000af260  72 65 61 73 65 73 20 74  68 65 20 62 75 66 66 65  |reases the buffe|
000af270  72 20 73 69 7a 65 2c 20  73 75 63 68 20 74 68 61  |r size, such tha|
000af280  74 20 61 74 20 6c 65 61  73 74 20 2f 73 69 7a 65  |t at least /size|
000af290  2f 20 63 68 61 72 61 63  74 65 72 73 20 63 61 6e  |/ characters can|
000af2a0  20 62 65 20 73 74 6f 72  65 64 2c 20 62 65 66 6f  | be stored, befo|
000af2b0  72 65 20 72 65 71 75 69  72 69 6e 67 20 6d 6f 72  |re requiring mor|
000af2c0  65 20 66 72 6f 6d 20 74  68 65 20 4f 53 2e 00 00  |e from the OS...|
000af2d0  44 41 54 41 f9 00 00 00  74 78 74 5f 73 65 74 63  |DATA....txt_setc|
000af2e0  68 61 72 6f 70 74 69 6f  6e 73 0a 53 79 6e 74 61  |haroptions.Synta|
000af2f0  78 3a 09 76 6f 69 64 20  74 78 74 5f 73 65 74 63  |x:.void txt_setc|
000af300  68 61 72 6f 70 74 69 6f  6e 73 20 28 3c 74 78 74  |haroptions (<txt|
000af310  3e 20 74 2c 20 3c 74 78  74 5f 63 68 61 72 6f 70  |> t, <txt_charop|
000af320  74 69 6f 6e 3e 20 6d 2c  20 74 78 74 5f 63 68 61  |tion> m, txt_cha|
000af330  72 6f 70 74 69 6f 6e 20  66 29 3b 0a 48 65 61 64  |roption f);.Head|
000af340  65 72 3a 09 3c 74 78 74  2e 68 3d 3e 74 78 74 5f  |er:.<txt.h=>txt_|
000af350  68 3e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |h>..This functio|
000af360  6e 20 73 65 74 73 20 74  68 65 20 63 75 72 72 65  |n sets the curre|
000af370  6e 74 20 6f 70 74 69 6f  6e 73 20 61 73 20 66 6f  |nt options as fo|
000af380  6c 6c 6f 77 73 3a 0a 7b  77 72 61 70 20 6f 66 66  |llows:.{wrap off|
000af390  7d 0a 7b 66 43 6f 64 65  3b 61 6c 69 67 6e 20 63  |}.{fCode;align c|
000af3a0  65 6e 74 72 65 7d 43 75  72 72 65 6e 74 20 3d 20  |entre}Current = |
000af3b0  28 50 72 65 76 69 6f 75  73 20 26 20 7e 6d 29 20  |(Previous & ~m) |
000af3c0  7c 20 28 6d 20 26 20 66  29 00 00 00 44 41 54 41  || (m & f)...DATA|
000af3d0  e4 00 00 00 74 78 74 5f  73 65 74 64 69 73 70 6c  |....txt_setdispl|
000af3e0  61 79 6f 6b 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |ayok.Syntax:.voi|
000af3f0  64 20 74 78 74 5f 73 65  74 64 69 73 70 6c 61 79  |d txt_setdisplay|
000af400  6f 6b 20 28 3c 74 78 74  3e 20 74 29 3b 0a 48 65  |ok (<txt> t);.He|
000af410  61 64 65 72 3a 09 3c 74  78 74 2e 68 3d 3e 74 78  |ader:.<txt.h=>tx|
000af420  74 5f 68 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |t_h>..This funct|
000af430  69 6f 6e 20 73 65 74 73  20 74 68 65 20 64 69 73  |ion sets the dis|
000af440  70 6c 61 79 20 66 6c 61  67 20 69 6e 20 63 68 61  |play flag in cha|
000af450  72 6f 70 74 69 6f 6e 73  20 66 6f 72 20 61 20 67  |roptions for a g|
000af460  69 76 65 6e 20 74 65 78  74 2e 20 59 6f 75 20 6d  |iven text. You m|
000af470  61 79 20 68 61 76 65 20  75 6e 73 65 74 20 74 68  |ay have unset th|
000af480  65 20 64 69 73 70 6c 61  79 20 66 6c 61 67 20 64  |e display flag d|
000af490  75 72 69 6e 67 20 61 20  6c 6f 6e 67 20 75 70 64  |uring a long upd|
000af4a0  61 74 65 20 74 6f 20 74  68 65 20 74 65 78 74 2e  |ate to the text.|
000af4b0  44 41 54 41 01 01 00 00  74 78 74 5f 73 65 74 64  |DATA....txt_setd|
000af4c0  6f 74 0a 53 79 6e 74 61  78 3a 20 20 76 6f 69 64  |ot.Syntax:  void|
000af4d0  20 74 78 74 5f 73 65 74  64 6f 74 20 28 3c 74 78  | txt_setdot (<tx|
000af4e0  74 3e 20 74 2c 20 3c 74  78 74 5f 69 6e 64 65 78  |t> t, <txt_index|
000af4f0  3e 20 69 29 3b 0a 48 65  61 64 65 72 3a 20 20 3c  |> i);.Header:  <|
000af500  74 78 74 2e 68 3d 3e 74  78 74 5f 68 3e 0a 0a 54  |txt.h=>txt_h>..T|
000af510  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 65 74  |his function set|
000af520  73 20 74 68 65 20 22 64  6f 74 22 20 61 74 20 61  |s the "dot" at a|
000af530  20 67 69 76 65 6e 20 69  6e 64 65 78 0a 69 6e 20  | given index.in |
000af540  74 68 65 20 61 72 72 61  79 20 6f 66 20 63 68 61  |the array of cha|
000af550  72 61 63 74 65 72 73 2e  20 49 66 20 27 69 27 20  |racters. If 'i' |
000af560  69 73 20 6f 75 74 73 69  64 65 0a 74 68 65 20 62  |is outside.the b|
000af570  6f 75 6e 64 73 20 6f 66  20 74 68 65 20 61 72 72  |ounds of the arr|
000af580  61 79 20 69 74 20 69 73  20 73 65 74 20 74 6f 20  |ay it is set to |
000af590  74 68 65 0a 62 65 67 69  6e 6e 69 6e 67 2f 65 6e  |the.beginning/en|
000af5a0  64 20 61 73 20 61 70 70  72 6f 70 72 69 61 74 65  |d as appropriate|
000af5b0  2e 00 00 00 44 41 54 41  d9 00 00 00 74 78 74 5f  |....DATA....txt_|
000af5c0  73 65 74 6c 61 73 74 72  65 66 0a 53 79 6e 74 61  |setlastref.Synta|
000af5d0  78 3a 09 76 6f 69 64 20  74 78 74 5f 73 65 74 6c  |x:.void txt_setl|
000af5e0  61 73 74 72 65 66 20 28  3c 74 78 74 3e 20 74 2c  |astref (<txt> t,|
000af5f0  20 69 6e 74 20 78 29 3b  0a 48 65 61 64 65 72 3a  | int x);.Header:|
000af600  09 3c 74 78 74 2e 68 3d  3e 74 78 74 5f 68 3e 0a  |.<txt.h=>txt_h>.|
000af610  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 73  |.This function s|
000af620  65 74 73 20 74 68 65 20  76 61 6c 75 65 20 6f 66  |ets the value of|
000af630  20 7b 2a 7d 6c 61 73 74  5f 72 65 66 7b 2a 7d 20  | {*}last_ref{*} |
000af640  74 6f 20 2f 78 2f 2e 20  41 20 73 75 62 73 65 71  |to /x/. A subseq|
000af650  75 65 6e 74 20 7b 2a 7d  4d 65 73 73 61 67 65 5f  |uent {*}Message_|
000af660  44 61 74 61 53 61 76 65  64 7b 2a 7d 20 63 61 6e  |DataSaved{*} can|
000af670  20 6d 61 72 6b 20 74 68  65 20 64 61 74 61 20 61  | mark the data a|
000af680  73 20 75 6e 6d 6f 64 69  66 69 65 64 2e 00 00 00  |s unmodified....|
000af690  44 41 54 41 16 01 00 00  74 78 74 5f 73 65 74 73  |DATA....txt_sets|
000af6a0  65 6c 65 63 74 0a 53 79  6e 74 61 78 3a 09 76 6f  |elect.Syntax:.vo|
000af6b0  69 64 20 74 78 74 5f 73  65 74 73 65 6c 65 63 74  |id txt_setselect|
000af6c0  20 28 3c 74 78 74 3e 20  74 2c 20 3c 74 78 74 5f  | (<txt> t, <txt_|
000af6d0  69 6e 64 65 78 3e 20 73  74 61 72 74 2c 20 74 78  |index> start, tx|
000af6e0  74 5f 69 6e 64 65 78 20  65 6e 64 29 3b 0a 48 65  |t_index end);.He|
000af6f0  61 64 65 72 3a 09 3c 74  78 74 2e 68 3d 3e 74 78  |ader:.<txt.h=>tx|
000af700  74 5f 68 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 49  |t_h>..Returns:.I|
000af710  6e 64 65 78 20 6f 66 20  61 20 73 65 6c 65 63 74  |ndex of a select|
000af720  69 6f 6e 20 65 6e 64 2e  0a 0a 54 68 69 73 20 66  |ion end...This f|
000af730  75 6e 63 74 69 6f 6e 20  73 65 74 73 20 61 20 73  |unction sets a s|
000af740  65 6c 65 63 74 69 6f 6e  20 69 6e 20 61 20 67 69  |election in a gi|
000af750  76 65 6e 20 74 65 78 74  2c 20 66 72 6f 6d 20 2f  |ven text, from /|
000af760  73 74 61 72 74 2f 20 74  6f 20 2f 65 6e 64 2f 2e  |start/ to /end/.|
000af770  20 49 66 20 7b 2f 7d 73  74 61 72 74 3e 3d 65 6e  | If {/}start>=en|
000af780  64 7b 2f 7d 20 74 68 65  6e 20 74 68 65 20 73 65  |d{/} then the se|
000af790  6c 65 63 74 69 6f 6e 20  77 69 6c 6c 20 62 65 20  |lection will be |
000af7a0  75 6e 73 65 74 2e 00 00  44 41 54 41 d8 00 00 00  |unset...DATA....|
000af7b0  74 78 74 5f 73 65 74 74  69 74 6c 65 0a 53 79 6e  |txt_settitle.Syn|
000af7c0  74 61 78 3a 09 76 6f 69  64 20 74 78 74 5f 73 65  |tax:.void txt_se|
000af7d0  74 74 69 74 6c 65 20 28  3c 74 78 74 3e 20 74 2c  |ttitle (<txt> t,|
000af7e0  20 63 68 61 72 20 2a 74  69 74 6c 65 29 3b 0a 48  | char *title);.H|
000af7f0  65 61 64 65 72 3a 09 3c  74 78 74 2e 68 3d 3e 74  |eader:.<txt.h=>t|
000af800  78 74 5f 68 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |xt_h>..This func|
000af810  74 69 6f 6e 20 63 68 61  6e 67 65 73 20 74 68 65  |tion changes the|
000af820  20 74 69 74 6c 65 20 6f  66 20 74 68 65 20 77 69  | title of the wi|
000af830  6e 64 6f 77 20 75 73 65  64 20 74 6f 20 64 69 73  |ndow used to dis|
000af840  70 6c 61 79 20 61 20 74  65 78 74 20 6f 62 6a 65  |play a text obje|
000af850  63 74 2e 20 4c 6f 6e 67  20 74 69 74 6c 65 73 20  |ct. Long titles |
000af860  6d 61 79 20 62 65 20 74  72 75 6e 63 61 74 65 64  |may be truncated|
000af870  20 77 68 65 6e 20 64 69  73 70 6c 61 79 65 64 2e  | when displayed.|
000af880  44 41 54 41 c8 00 00 00  74 78 74 5f 73 68 6f 77  |DATA....txt_show|
000af890  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 74 78  |.Syntax:.void tx|
000af8a0  74 5f 73 68 6f 77 20 28  3c 74 78 74 3e 20 74 29  |t_show (<txt> t)|
000af8b0  3b 0a 48 65 61 64 65 72  3a 09 3c 74 78 74 2e 68  |;.Header:.<txt.h|
000af8c0  3d 3e 74 78 74 5f 68 3e  0a 0a 54 68 69 73 20 66  |=>txt_h>..This f|
000af8d0  75 6e 63 74 69 6f 6e 20  64 69 73 70 6c 61 79 73  |unction displays|
000af8e0  20 61 20 67 69 76 65 6e  20 74 65 78 74 20 6f 62  | a given text ob|
000af8f0  6a 65 63 74 20 69 6e 20  61 20 66 72 65 65 20 73  |ject in a free s|
000af900  74 61 6e 64 69 6e 67 20  77 69 6e 64 6f 77 20 6f  |tanding window o|
000af910  66 20 69 74 73 20 6f 77  6e 2e 20 2f 74 2f 20 73  |f its own. /t/ s|
000af920  68 6f 75 6c 64 20 68 61  76 65 20 62 65 65 6e 20  |hould have been |
000af930  63 72 65 61 74 65 64 20  75 73 69 6e 67 20 3c 74  |created using <t|
000af940  78 74 5f 6e 65 77 3e 2e  44 41 54 41 00 01 00 00  |xt_new>.DATA....|
000af950  74 78 74 5f 73 69 7a 65  0a 53 79 6e 74 61 78 3a  |txt_size.Syntax:|
000af960  09 3c 74 78 74 5f 69 6e  64 65 78 3e 20 74 78 74  |.<txt_index> txt|
000af970  5f 73 69 7a 65 20 28 3c  74 78 74 3e 20 74 29 3b  |_size (<txt> t);|
000af980  0a 48 65 61 64 65 72 3a  09 3c 74 78 74 2e 68 3d  |.Header:.<txt.h=|
000af990  3e 74 78 74 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |>txt_h>..Returns|
000af9a0  3a 09 49 6e 64 65 78 20  69 6e 74 6f 20 74 68 65  |:.Index into the|
000af9b0  20 63 68 61 72 61 63 74  65 72 20 61 72 72 61 79  | character array|
000af9c0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000af9d0  20 72 65 74 75 72 6e 73  20 74 68 65 20 6d 61 78  | returns the max|
000af9e0  69 6d 75 6d 20 70 6f 73  69 74 69 6f 6e 20 6f 66  |imum position of|
000af9f0  20 74 68 65 20 22 64 6f  74 22 20 69 65 20 74 68  | the "dot" ie th|
000afa00  65 20 63 75 72 72 65 6e  74 20 65 64 69 74 69 6e  |e current editin|
000afa10  67 20 70 6f 73 69 74 69  6f 6e 20 6f 66 20 74 68  |g position of th|
000afa20  65 20 74 65 78 74 2e 20  30 20 69 73 20 62 65 66  |e text. 0 is bef|
000afa30  6f 72 65 20 74 68 65 20  66 69 72 73 74 20 63 68  |ore the first ch|
000afa40  61 72 61 63 74 65 72 2e  44 41 54 41 c2 00 00 00  |aracter.DATA....|
000afa50  74 78 74 5f 73 79 73 68  61 6e 64 6c 65 0a 53 79  |txt_syshandle.Sy|
000afa60  6e 74 61 78 3a 09 69 6e  74 20 74 78 74 5f 73 79  |ntax:.int txt_sy|
000afa70  73 68 61 6e 64 6c 65 20  28 3c 74 78 74 3e 20 74  |shandle (<txt> t|
000afa80  29 3b 0a 48 65 61 64 65  72 3a 09 3c 74 78 74 2e  |);.Header:.<txt.|
000afa90  68 3d 3e 74 78 74 5f 68  3e 0a 0a 52 65 74 75 72  |h=>txt_h>..Retur|
000afaa0  6e 73 3a 09 48 61 6e 64  6c 65 20 66 6f 72 20 74  |ns:.Handle for t|
000afab0  68 65 20 74 65 78 74 2e  0a 0a 54 68 69 73 20 66  |he text...This f|
000afac0  75 6e 63 74 69 6f 6e 20  6f 62 74 61 69 6e 73 20  |unction obtains |
000afad0  61 20 73 79 73 74 65 6d  2d 64 65 70 65 6e 64 65  |a system-depende|
000afae0  6e 74 20 68 61 6e 64 6c  65 20 6f 6e 20 74 68 65  |nt handle on the|
000afaf0  20 6f 62 6a 65 63 74 20  75 6e 64 65 72 6c 79 69  | object underlyi|
000afb00  6e 67 20 61 20 74 65 78  74 2e 00 00 44 41 54 41  |ng a text...DATA|
000afb10  b9 00 00 00 74 78 74 5f  75 6e 67 65 74 0a 53 79  |....txt_unget.Sy|
000afb20  6e 74 61 78 3a 09 76 6f  69 64 20 74 78 74 5f 75  |ntax:.void txt_u|
000afb30  6e 67 65 74 20 28 3c 74  78 74 3e 20 74 2c 20 3c  |nget (<txt> t, <|
000afb40  74 78 74 5f 65 76 65 6e  74 63 6f 64 65 3e 20 63  |txt_eventcode> c|
000afb50  6f 64 65 29 3b 0a 48 65  61 64 65 72 3a 09 3c 74  |ode);.Header:.<t|
000afb60  78 74 2e 68 3d 3e 74 78  74 5f 68 3e 0a 0a 54 68  |xt.h=>txt_h>..Th|
000afb70  69 73 20 66 75 6e 63 74  69 6f 6e 20 70 75 74 73  |is function puts|
000afb80  20 61 6e 20 65 76 65 6e  74 20 63 6f 64 65 20 62  | an event code b|
000afb90  61 63 6b 20 6f 6e 20 74  68 65 20 66 72 6f 6e 74  |ack on the front|
000afba0  20 6f 66 20 74 68 65 20  65 76 65 6e 74 20 71 75  | of the event qu|
000afbb0  65 75 65 20 66 6f 72 20  61 20 67 69 76 65 6e 20  |eue for a given |
000afbc0  74 65 78 74 2e 00 00 00  44 41 54 41 2a 01 00 00  |text....DATA*...|
000afbd0  74 78 74 5f 76 69 73 69  62 6c 65 63 6f 6c 63 6f  |txt_visiblecolco|
000afbe0  75 6e 74 0a 53 79 6e 74  61 78 3a 09 69 6e 74 20  |unt.Syntax:.int |
000afbf0  74 78 74 5f 76 69 73 69  62 6c 65 63 6f 6c 63 6f  |txt_visiblecolco|
000afc00  75 6e 74 20 28 3c 74 78  74 3e 20 74 29 3b 0a 48  |unt (<txt> t);.H|
000afc10  65 61 64 65 72 3a 09 3c  74 78 74 2e 68 3d 3e 74  |eader:.<txt.h=>t|
000afc20  78 74 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |xt_h>..Returns:.|
000afc30  4e 75 6d 62 65 72 20 6f  66 20 76 69 73 69 62 6c  |Number of visibl|
000afc40  65 20 63 6f 6c 75 6d 6e  73 2e 0a 0a 54 68 69 73  |e columns...This|
000afc50  20 66 75 6e 63 74 69 6f  6e 20 67 69 76 65 73 20  | function gives |
000afc60  74 68 65 20 6e 75 6d 62  65 72 20 6f 66 20 63 6f  |the number of co|
000afc70  6c 75 6d 6e 73 20 63 75  72 72 65 6e 74 6c 79 20  |lumns currently |
000afc80  76 69 73 69 62 6c 65 2e  20 49 66 20 61 20 66 69  |visible. If a fi|
000afc90  78 65 64 20 70 69 74 63  68 20 66 6f 6e 74 20 69  |xed pitch font i|
000afca0  73 20 69 6e 20 75 73 65  2c 20 74 68 65 6e 20 74  |s in use, then t|
000afcb0  68 69 73 20 61 63 74 75  61 6c 6c 79 20 72 65 74  |his actually ret|
000afcc0  75 72 6e 73 20 74 68 65  20 6e 75 6d 62 65 72 20  |urns the number |
000afcd0  6f 66 20 63 6f 6c 75 6d  6e 73 2c 20 65 6c 73 65  |of columns, else|
000afce0  20 69 74 20 6d 61 6b 65  73 20 61 20 67 75 65 73  | it makes a gues|
000afcf0  73 21 00 00 44 41 54 41  0c 01 00 00 74 78 74 5f  |s!..DATA....txt_|
000afd00  76 69 73 69 62 6c 65 6c  69 6e 65 63 6f 75 6e 74  |visiblelinecount|
000afd10  0a 53 79 6e 74 61 78 3a  09 69 6e 74 20 74 78 74  |.Syntax:.int txt|
000afd20  5f 76 69 73 69 62 6c 65  6c 69 6e 65 63 6f 75 6e  |_visiblelinecoun|
000afd30  74 20 28 3c 74 78 74 3e  20 74 29 3b 0a 48 65 61  |t (<txt> t);.Hea|
000afd40  64 65 72 3a 09 3c 74 78  74 2e 68 3d 3e 74 78 74  |der:.<txt.h=>txt|
000afd50  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 4e 75  |_h>..Returns:.Nu|
000afd60  6d 62 65 72 20 6f 66 20  76 69 73 69 62 6c 65 20  |mber of visible |
000afd70  6c 69 6e 65 73 2e 0a 0a  54 68 69 73 20 66 75 6e  |lines...This fun|
000afd80  63 74 69 6f 6e 20 67 69  76 65 73 20 74 68 65 20  |ction gives the |
000afd90  6e 75 6d 62 65 72 20 6f  66 20 6c 69 6e 65 73 20  |number of lines |
000afda0  76 69 73 69 62 6c 65 20  6f 72 20 70 61 72 74 69  |visible or parti|
000afdb0  61 6c 6c 79 20 76 69 73  69 62 6c 65 20 6f 6e 20  |ally visible on |
000afdc0  74 68 65 20 64 69 73 70  6c 61 79 2e 20 49 74 20  |the display. It |
000afdd0  74 61 6b 65 73 20 69 6e  74 6f 20 61 63 63 6f 75  |takes into accou|
000afde0  6e 74 20 74 68 65 20 77  69 6e 64 6f 77 20 73 69  |nt the window si|
000afdf0  7a 65 20 61 6e 64 20 66  6f 6e 74 20 65 74 63 2e  |ze and font etc.|
000afe00  44 41 54 41 8c 00 00 00  74 79 70 64 61 74 2e 68  |DATA....typdat.h|
000afe10  0a 54 68 69 73 20 64 65  66 69 6e 65 73 20 6a 75  |.This defines ju|
000afe20  73 74 20 6f 6e 65 20 74  79 70 65 3a 20 2a 74 79  |st one type: *ty|
000afe30  70 64 61 74 2a 2e 20 49  74 20 69 73 20 61 20 6c  |pdat*. It is a l|
000afe40  6f 61 64 2f 65 78 65 63  75 74 65 20 61 64 64 72  |oad/execute addr|
000afe50  65 73 73 20 70 61 69 72  20 61 73 20 66 6f 6c 6c  |ess pair as foll|
000afe60  6f 77 73 3a 0a 0a 20 20  5c 7b 0a 20 20 20 20 69  |ows:..  \{.    i|
000afe70  6e 74 20 65 78 3b 0a 20  20 20 20 69 6e 74 20 6c  |nt ex;.    int l|
000afe80  64 3b 0a 20 20 7d 0a 0a  57 6f 77 2e 44 41 54 41  |d;.  }..Wow.DATA|
000afe90  c1 01 00 00 74 79 70 65  64 65 66 0a 49 6e 20 61  |....typedef.In a|
000afea0  64 64 69 74 69 6f 6e 20  74 6f 20 74 68 65 20 62  |ddition to the b|
000afeb0  75 69 6c 74 20 69 6e 20  74 79 70 65 73 2c 20 79  |uilt in types, y|
000afec0  6f 75 20 63 61 6e 20 64  65 66 69 6e 65 20 79 6f  |ou can define yo|
000afed0  75 72 20 6f 77 6e 20 77  69 74 68 20 2f 74 79 70  |ur own with /typ|
000afee0  65 64 65 66 2f 2e 20 53  69 6d 70 6c 79 20 70 72  |edef/. Simply pr|
000afef0  65 66 69 78 20 61 20 6e  6f 72 6d 61 6c 20 76 61  |efix a normal va|
000aff00  72 69 61 62 6c 65 20 64  65 63 6c 61 72 61 74 69  |riable declarati|
000aff10  6f 6e 20 77 69 74 68 20  2f 74 79 70 65 64 65 66  |on with /typedef|
000aff20  2f 20 61 6e 64 20 61 20  6e 65 77 20 74 79 70 65  |/ and a new type|
000aff30  20 69 73 20 64 65 66 69  6e 65 64 20 77 69 74 68  | is defined with|
000aff40  20 74 68 65 20 6e 61 6d  65 20 6e 6f 72 6d 61 6c  | the name normal|
000aff50  6c 79 20 75 73 65 64 20  61 73 20 74 68 65 20 76  |ly used as the v|
000aff60  61 72 69 61 62 6c 65 20  6e 61 6d 65 2e 0a 0a 65  |ariable name...e|
000aff70  67 0a 0a 7b 66 43 6f 64  65 3b 61 6c 69 67 6e 20  |g..{fCode;align |
000aff80  63 65 6e 74 72 65 7d 74  79 70 65 64 65 66 20 69  |centre}typedef i|
000aff90  6e 74 20 62 6c 6f 63 6b  5b 36 5d 3b 7b 66 3b 61  |nt block[6];{f;a|
000affa0  6c 69 67 6e 7d 0a 0a 2f  62 6c 6f 63 6b 2f 20 69  |lign}../block/ i|
000affb0  73 20 6e 6f 77 20 61 20  6e 65 77 20 64 65 66 69  |s now a new defi|
000affc0  6e 65 64 20 61 73 20 61  6e 20 61 72 72 61 79 20  |ned as an array |
000affd0  6f 66 20 36 20 69 6e 74  65 67 65 72 73 2e 20 49  |of 6 integers. I|
000affe0  74 20 63 61 6e 20 62 65  20 75 73 65 64 20 61 6e  |t can be used an|
000afff0  79 74 69 6d 65 20 65 67  3a 0a 0a 7b 66 43 6f 64  |ytime eg:..{fCod|
000b0000  65 3b 61 6c 69 67 6e 20  63 65 6e 74 72 65 7d 62  |e;align centre}b|
000b0010  6c 6f 63 6b 20 61 2c 62  2c 63 3b 7b 66 3b 61 6c  |lock a,b,c;{f;al|
000b0020  69 67 6e 7d 0a 0a 44 65  63 6c 61 72 65 73 20 74  |ign}..Declares t|
000b0030  68 72 65 65 20 62 6c 6f  63 6b 73 20 2f 61 2f 2c  |hree blocks /a/,|
000b0040  20 2f 62 2f 20 61 6e 64  20 2f 63 2f 2e 00 00 00  | /b/ and /c/....|
000b0050  44 49 52 24 2c 01 00 00  2c 01 00 00 7c 01 0b 00  |DIR$,...,...|...|
000b0060  46 fd ff ff 93 ef 84 2f  28 00 00 00 13 01 00 00  |F....../(.......|
000b0070  00 00 00 00 55 43 48 41  52 5f 00 00 94 02 0b 00  |....UCHAR_......|
000b0080  46 fd ff ff b8 ef 84 2f  28 00 00 00 13 01 00 00  |F....../(.......|
000b0090  00 00 00 00 55 49 4e 54  5f 00 00 00 90 03 0b 00  |....UINT_.......|
000b00a0  46 fd ff ff d8 ef 84 2f  28 00 00 00 13 01 00 00  |F....../(.......|
000b00b0  00 00 00 00 55 4c 4f 4e  47 5f 00 00 90 04 0b 00  |....ULONG_......|
000b00c0  46 ff ff ff ae 9b e5 22  ae 00 00 00 13 00 00 00  |F......"........|
000b00d0  00 00 00 00 75 6e 64 65  66 00 00 00 40 05 0b 00  |....undef...@...|
000b00e0  46 ff ff ff d0 cf c2 22  12 02 00 00 13 00 00 00  |F......"........|
000b00f0  00 00 00 00 75 6e 67 65  74 63 00 00 54 07 0b 00  |....ungetc..T...|
000b0100  46 ff ff ff a3 ea e3 22  af 01 00 00 13 00 00 00  |F......"........|
000b0110  00 00 00 00 75 6e 69 6f  6e 00 00 00 04 09 0b 00  |....union.......|
000b0120  46 ff ff ff af bc f1 24  3d 01 00 00 13 00 00 00  |F......$=.......|
000b0130  00 00 00 00 55 4e 55 53  45 44 00 00 44 0a 0b 00  |....UNUSED..D...|
000b0140  46 fd ff ff 46 f0 84 2f  28 00 00 00 13 01 00 00  |F...F../(.......|
000b0150  00 00 00 00 55 4e 55 53  45 44 5f 00 bc 0b 0b 00  |....UNUSED_.....|
000b0160  46 fd ff ff 6b f0 84 2f  28 00 00 00 13 01 00 00  |F...k../(.......|
000b0170  00 00 00 00 55 53 48 52  54 5f 00 00 44 49 52 24  |....USHRT_..DIR$|
000b0180  28 00 00 00 28 00 00 00  a4 01 0b 00 46 ff ff ff  |(...(.......F...|
000b0190  62 eb bc 22 ef 00 00 00  13 00 00 00 00 00 00 00  |b.."............|
000b01a0  4d 41 58 00 44 41 54 41  ef 00 00 00 55 43 48 41  |MAX.DATA....UCHA|
000b01b0  52 5f 4d 41 58 0a 54 68  69 73 20 6d 61 63 72 6f  |R_MAX.This macro|
000b01c0  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
000b01d0  6c 69 6d 69 74 73 2e 68  3e 20 61 6e 64 20 72 65  |limits.h> and re|
000b01e0  70 72 65 73 65 6e 74 73  20 74 68 65 20 6d 61 78  |presents the max|
000b01f0  69 6d 75 6d 20 76 61 6c  75 65 20 77 68 69 63 68  |imum value which|
000b0200  20 63 61 6e 20 62 65 20  73 74 6f 72 65 64 20 69  | can be stored i|
000b0210  6e 20 61 6e 20 75 6e 73  69 67 6e 65 64 20 63 68  |n an unsigned ch|
000b0220  61 72 20 28 74 68 65 20  6d 69 6e 69 6d 75 6d 20  |ar (the minimum |
000b0230  76 61 6c 75 65 20 77 68  69 63 68 20 63 61 6e 20  |value which can |
000b0240  62 65 20 73 74 6f 72 65  64 20 69 6e 20 61 6e 20  |be stored in an |
000b0250  75 6e 73 69 67 6e 65 64  20 63 68 61 72 20 69 73  |unsigned char is|
000b0260  20 61 6c 77 61 79 73 20  30 29 2e 20 49 6e 20 45  | always 0). In E|
000b0270  61 73 79 20 43 20 69 74  20 69 73 20 64 65 66 69  |asy C it is defi|
000b0280  6e 65 64 20 61 73 20 30  78 66 66 55 20 28 32 35  |ned as 0xffU (25|
000b0290  35 29 2e 00 44 49 52 24  28 00 00 00 28 00 00 00  |5)..DIR$(...(...|
000b02a0  bc 02 0b 00 46 ff ff ff  bd 0d bd 22 d2 00 00 00  |....F......"....|
000b02b0  13 00 00 00 00 00 00 00  4d 41 58 00 44 41 54 41  |........MAX.DATA|
000b02c0  d2 00 00 00 55 49 4e 54  5f 4d 41 58 0a 54 68 69  |....UINT_MAX.Thi|
000b02d0  73 20 6d 61 63 72 6f 20  69 73 20 64 65 66 69 6e  |s macro is defin|
000b02e0  65 64 20 69 6e 20 3c 6c  69 6d 69 74 73 2e 68 3e  |ed in <limits.h>|
000b02f0  20 61 6e 64 20 72 65 70  72 65 73 65 6e 74 73 20  | and represents |
000b0300  74 68 65 20 6d 61 78 69  6d 75 6d 20 76 61 6c 75  |the maximum valu|
000b0310  65 20 77 68 69 63 68 20  63 61 6e 20 62 65 20 73  |e which can be s|
000b0320  74 6f 72 65 64 20 69 6e  20 61 6e 20 75 6e 73 69  |tored in an unsi|
000b0330  67 6e 65 64 20 69 6e 74  20 28 74 68 65 20 6d 69  |gned int (the mi|
000b0340  6e 69 6d 75 6d 20 76 61  6c 75 65 20 69 73 20 61  |nimum value is a|
000b0350  6c 77 61 79 73 20 30 29  2e 20 49 6e 20 45 61 73  |lways 0). In Eas|
000b0360  79 20 43 20 69 74 20 69  73 20 64 65 66 69 6e 65  |y C it is define|
000b0370  64 20 61 73 20 30 78 66  66 66 66 66 66 66 66 55  |d as 0xffffffffU|
000b0380  20 28 34 32 39 34 39 36  37 32 39 35 29 2e 00 00  | (4294967295)...|
000b0390  44 49 52 24 28 00 00 00  28 00 00 00 b8 03 0b 00  |DIR$(...(.......|
000b03a0  46 ff ff ff d2 17 bd 22  d8 00 00 00 13 00 00 00  |F......"........|
000b03b0  00 00 00 00 4d 41 58 00  44 41 54 41 d8 00 00 00  |....MAX.DATA....|
000b03c0  55 4c 4f 4e 47 5f 4d 41  58 0a 54 68 69 73 20 6d  |ULONG_MAX.This m|
000b03d0  61 63 72 6f 20 69 73 20  64 65 66 69 6e 65 64 20  |acro is defined |
000b03e0  69 6e 20 3c 6c 69 6d 69  74 73 2e 68 3e 20 61 6e  |in <limits.h> an|
000b03f0  64 20 72 65 70 72 65 73  65 6e 74 73 20 74 68 65  |d represents the|
000b0400  20 6d 61 78 69 6d 75 6d  20 76 61 6c 75 65 20 77  | maximum value w|
000b0410  68 69 63 68 20 63 61 6e  20 62 65 20 73 74 6f 72  |hich can be stor|
000b0420  65 64 20 69 6e 20 61 6e  20 75 6e 73 69 67 6e 65  |ed in an unsigne|
000b0430  64 20 6c 6f 6e 67 20 69  6e 74 20 28 74 68 65 20  |d long int (the |
000b0440  6d 69 6e 69 6d 75 6d 20  76 61 6c 75 65 20 69 73  |minimum value is|
000b0450  20 61 6c 77 61 79 73 20  30 29 2e 20 49 6e 20 45  | always 0). In E|
000b0460  61 73 79 20 43 20 69 74  20 69 73 20 64 65 66 69  |asy C it is defi|
000b0470  6e 65 64 20 61 73 20 30  78 66 66 66 66 66 66 66  |ned as 0xfffffff|
000b0480  66 55 20 28 34 32 39 34  39 36 37 32 39 35 29 2e  |fU (4294967295).|
000b0490  44 41 54 41 ae 00 00 00  23 75 6e 64 65 66 0a 54  |DATA....#undef.T|
000b04a0  68 69 73 20 64 69 72 65  63 74 69 76 65 20 75 6e  |his directive un|
000b04b0  64 65 66 69 6e 65 73 20  61 20 6d 61 63 72 6f 2e  |defines a macro.|
000b04c0  20 41 6e 79 20 66 75 74  75 72 65 20 72 65 66 65  | Any future refe|
000b04d0  72 65 6e 63 65 73 20 74  6f 20 74 68 69 73 20 6d  |rences to this m|
000b04e0  61 63 72 6f 20 77 69 6c  6c 20 74 68 72 6f 77 20  |acro will throw |
000b04f0  75 70 20 65 72 72 6f 72  73 20 28 65 78 63 65 70  |up errors (excep|
000b0500  74 20 6f 66 20 63 6f 75  72 73 65 20 3c 23 69 66  |t of course <#if|
000b0510  3d 3e 69 66 5f 3e 2c 20  3c 23 69 66 64 65 66 3d  |=>if_>, <#ifdef=|
000b0520  3e 69 66 64 65 66 3e 20  61 6e 64 20 3c 23 69 66  |>ifdef> and <#if|
000b0530  6e 64 65 66 3d 3e 69 66  6e 64 65 66 3e 2e 00 00  |ndef=>ifndef>...|
000b0540  44 41 54 41 12 02 00 00  75 6e 67 65 74 63 0a 53  |DATA....ungetc.S|
000b0550  79 6e 74 61 78 3a 09 69  6e 74 20 75 6e 67 65 74  |yntax:.int unget|
000b0560  63 20 28 69 6e 74 20 63  2c 20 3c 46 49 4c 45 3e  |c (int c, <FILE>|
000b0570  20 2a 73 74 72 65 61 6d  29 3b 0a 48 65 61 64 65  | *stream);.Heade|
000b0580  72 3a 09 3c 73 74 64 69  6f 2e 68 3d 3e 73 74 64  |r:.<stdio.h=>std|
000b0590  69 6f 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 2f 63  |io>..Returns:./c|
000b05a0  2f 2c 20 6f 72 20 3c 45  4f 46 3e 20 69 66 20 74  |/, or <EOF> if t|
000b05b0  68 65 72 65 20 69 73 20  61 6e 20 65 72 72 6f 72  |here is an error|
000b05c0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000b05d0  20 70 75 73 68 65 73 20  74 68 65 20 63 68 61 72  | pushes the char|
000b05e0  61 63 74 65 72 20 69 6e  20 2f 63 2f 20 62 61 63  |acter in /c/ bac|
000b05f0  6b 20 6f 6e 74 6f 20 74  68 65 20 69 6e 70 75 74  |k onto the input|
000b0600  20 73 74 72 65 61 6d 20  73 70 65 63 69 66 69 65  | stream specifie|
000b0610  64 2e 20 41 6e 79 20 73  75 62 73 65 71 75 65 6e  |d. Any subsequen|
000b0620  74 20 72 65 61 64 20 6f  70 65 72 61 74 69 6f 6e  |t read operation|
000b0630  73 20 6f 6e 20 74 68 61  74 20 73 74 72 65 61 6d  |s on that stream|
000b0640  20 77 69 6c 6c 20 72 65  74 75 72 6e 20 74 68 65  | will return the|
000b0650  20 63 68 61 72 61 63 74  65 72 73 20 70 75 73 68  | characters push|
000b0660  65 64 20 62 61 63 6b 20  28 69 6e 20 72 65 76 65  |ed back (in reve|
000b0670  72 73 65 20 6f 72 64 65  72 29 2e 20 49 66 20 79  |rse order). If y|
000b0680  6f 75 20 63 61 6c 6c 20  61 20 66 69 6c 65 20 70  |ou call a file p|
000b0690  6f 73 69 74 69 6f 6e 69  6e 67 20 66 75 6e 63 74  |ositioning funct|
000b06a0  69 6f 6e 20 28 3c 66 73  65 65 6b 3e 2c 20 3c 66  |ion (<fseek>, <f|
000b06b0  73 65 74 70 6f 73 3e 20  6f 72 20 3c 72 65 77 69  |setpos> or <rewi|
000b06c0  6e 64 3e 29 20 74 68 65  20 70 75 73 68 65 64 20  |nd>) the pushed |
000b06d0  62 61 63 6b 20 63 68 61  72 61 63 74 65 72 73 20  |back characters |
000b06e0  61 72 65 20 64 69 73 63  61 72 64 65 64 2e 20 59  |are discarded. Y|
000b06f0  6f 75 20 6d 75 73 74 6e  27 74 20 63 61 6c 6c 20  |ou mustn't call |
000b0700  2f 75 6e 67 65 74 63 2f  20 74 6f 6f 20 6d 61 6e  |/ungetc/ too man|
000b0710  79 20 74 69 6d 65 73 20  69 6e 20 73 75 63 63 65  |y times in succe|
000b0720  73 73 69 6f 6e 20 6f 72  20 69 74 20 77 69 6c 6c  |ssion or it will|
000b0730  20 66 61 69 6c 2e 0a 0a  4e 42 20 2f 63 2f 20 6d  | fail...NB /c/ m|
000b0740  75 73 74 20 6e 6f 74 20  65 71 75 61 6c 20 45 4f  |ust not equal EO|
000b0750  46 2e 00 00 44 41 54 41  af 01 00 00 75 6e 69 6f  |F...DATA....unio|
000b0760  6e 0a 41 20 75 6e 69 6f  6e 20 69 73 20 73 69 6d  |n.A union is sim|
000b0770  69 6c 61 72 20 74 6f 20  61 20 3c 73 74 72 75 63  |ilar to a <struc|
000b0780  74 75 72 65 3d 3e 73 74  72 75 63 74 3e 2e 20 49  |ture=>struct>. I|
000b0790  74 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |t is defined in |
000b07a0  74 68 65 20 73 61 6d 65  20 77 61 79 2c 20 62 75  |the same way, bu|
000b07b0  74 20 61 6c 6c 20 76 61  72 69 61 62 6c 65 73 20  |t all variables |
000b07c0  61 72 65 20 6d 61 70 70  65 64 20 69 6e 74 6f 20  |are mapped into |
000b07d0  74 68 65 20 73 61 6d 65  20 6d 65 6d 6f 72 79 20  |the same memory |
000b07e0  73 70 61 63 65 2e 20 54  68 69 73 20 6d 65 61 6e  |space. This mean|
000b07f0  73 20 79 6f 75 20 63 61  6e 20 61 63 63 65 73 73  |s you can access|
000b0800  20 61 20 76 61 6c 75 65  20 69 6e 20 64 69 66 66  | a value in diff|
000b0810  65 72 65 6e 74 20 77 61  79 73 20 65 67 2e 0a 0a  |erent ways eg...|
000b0820  20 20 75 6e 69 6f 6e 0a  20 20 5c 7b 0a 20 20 20  |  union.  \{.   |
000b0830  20 69 6e 74 20 20 20 77  6f 72 64 20 3a 20 31 36  | int   word : 16|
000b0840  3b 0a 20 20 20 20 63 68  61 72 20 20 62 79 74 65  |;.    char  byte|
000b0850  5b 32 5d 3b 0a 20 20 7d  20 6d 79 5f 75 6e 69 6f  |[2];.  } my_unio|
000b0860  6e 3b 0a 0a 54 68 69 73  20 64 65 63 6c 61 72 65  |n;..This declare|
000b0870  73 20 7b 2f 7d 6d 79 5f  75 6e 69 6f 6e 2e 77 6f  |s {/}my_union.wo|
000b0880  72 64 7b 2f 7d 20 61 73  20 61 20 31 36 2d 62 69  |rd{/} as a 16-bi|
000b0890  74 20 69 6e 74 65 67 65  72 2e 20 54 68 65 20 74  |t integer. The t|
000b08a0  77 6f 20 94 38 2d 62 69  74 95 20 70 61 72 74 73  |wo .8-bit. parts|
000b08b0  20 63 61 6e 20 62 65 20  61 63 63 65 73 73 65 64  | can be accessed|
000b08c0  20 61 73 20 7b 2f 7d 6d  79 5f 75 6e 69 6f 6e 2e  | as {/}my_union.|
000b08d0  62 79 74 65 5b 30 5d 7b  2f 7d 20 61 6e 64 20 7b  |byte[0]{/} and {|
000b08e0  2f 7d 6d 79 5f 75 6e 69  6f 6e 2e 62 79 74 65 5b  |/}my_union.byte[|
000b08f0  31 5d 7b 2f 7d 20 72 65  73 70 65 63 74 69 76 65  |1]{/} respective|
000b0900  6c 79 2e 00 44 41 54 41  3d 01 00 00 55 4e 55 53  |ly..DATA=...UNUS|
000b0910  45 44 0a 54 68 65 20 6d  61 63 72 6f 20 2a 55 4e  |ED.The macro *UN|
000b0920  55 53 45 44 2a 20 69 73  20 64 65 66 69 6e 65 64  |USED* is defined|
000b0930  20 69 6e 20 3c 54 69 6d  73 4c 69 62 3a 43 6f 72  | in <TimsLib:Cor|
000b0940  65 2e 68 3d 3e 43 6f 72  65 5f 54 4c 3e 20 61 6e  |e.h=>Core_TL> an|
000b0950  64 20 3c 44 65 73 6b 4c  69 62 3a 43 6f 72 65 2e  |d <DeskLib:Core.|
000b0960  68 3d 3e 43 6f 72 65 3e  2e 20 49 74 20 69 73 20  |h=>Core>. It is |
000b0970  75 73 65 64 20 74 6f 20  61 76 6f 69 64 20 63 6f  |used to avoid co|
000b0980  6d 70 69 6c 65 72 20 77  61 72 6e 69 6e 67 73 20  |mpiler warnings |
000b0990  77 68 65 6e 20 79 6f 75  20 64 6f 6e 27 74 20 61  |when you don't a|
000b09a0  63 74 75 61 6c 6c 79 20  75 73 65 20 6f 6e 65 20  |ctually use one |
000b09b0  6f 66 20 74 68 65 20 70  61 72 61 6d 65 74 65 72  |of the parameter|
000b09c0  73 20 70 61 73 73 65 64  20 74 6f 20 61 20 66 75  |s passed to a fu|
000b09d0  6e 63 74 69 6f 6e 2c 20  65 67 3a 0a 7b 77 72 61  |nction, eg:.{wra|
000b09e0  70 20 6f 66 66 7d 0a 7b  66 43 6f 64 65 7d 3c 42  |p off}.{fCode}<B|
000b09f0  4f 4f 4c 3e 20 6d 6f 75  73 65 63 6c 69 63 6b 20  |OOL> mouseclick |
000b0a00  28 3c 65 76 65 6e 74 5f  70 6f 6c 6c 62 6c 6f 63  |(<event_pollbloc|
000b0a10  6b 3e 20 2a 65 2c 20 76  6f 69 64 20 2a 72 65 66  |k> *e, void *ref|
000b0a20  29 0a 5c 7b 0a 20 20 20  20 20 55 4e 55 53 45 44  |).\{.     UNUSED|
000b0a30  28 72 65 66 29 3b 0a 20  20 20 20 20 2e 2e 2e 0a  |(ref);.     ....|
000b0a40  7d 00 00 00 44 49 52 24  28 00 00 00 28 00 00 00  |}...DIR$(...(...|
000b0a50  6c 0a 0b 00 46 ff ff ff  67 ae f1 24 4d 01 00 00  |l...F...g..$M...|
000b0a60  13 00 00 00 00 00 00 00  41 52 47 00 44 41 54 41  |........ARG.DATA|
000b0a70  4d 01 00 00 55 4e 55 53  45 44 5f 41 52 47 0a 54  |M...UNUSED_ARG.T|
000b0a80  68 65 20 6d 61 63 72 6f  20 7b 2a 7d 55 4e 55 53  |he macro {*}UNUS|
000b0a90  45 44 5f 41 52 47 7b 2a  7d 20 69 73 20 64 65 66  |ED_ARG{*} is def|
000b0aa0  69 6e 65 64 20 69 6e 20  3c 54 69 6d 73 4c 69 62  |ined in <TimsLib|
000b0ab0  3a 43 6f 72 65 2e 68 3d  3e 43 6f 72 65 5f 54 4c  |:Core.h=>Core_TL|
000b0ac0  3e 20 61 6e 64 20 3c 44  65 73 6b 4c 69 62 3a 43  |> and <DeskLib:C|
000b0ad0  6f 72 65 2e 68 3d 3e 43  6f 72 65 3e 2e 20 49 74  |ore.h=>Core>. It|
000b0ae0  20 69 73 20 75 73 65 64  20 74 6f 20 61 76 6f 69  | is used to avoi|
000b0af0  64 20 63 6f 6d 70 69 6c  65 72 20 77 61 72 6e 69  |d compiler warni|
000b0b00  6e 67 73 20 77 68 65 6e  20 79 6f 75 20 64 6f 6e  |ngs when you don|
000b0b10  27 74 20 61 63 74 75 61  6c 6c 79 20 75 73 65 20  |'t actually use |
000b0b20  6f 6e 65 20 6f 66 20 74  68 65 20 70 61 72 61 6d  |one of the param|
000b0b30  65 74 65 72 73 20 70 61  73 73 65 64 20 74 6f 20  |eters passed to |
000b0b40  61 20 66 75 6e 63 74 69  6f 6e 2c 20 65 67 3a 0a  |a function, eg:.|
000b0b50  7b 77 72 61 70 20 6f 66  66 7d 0a 7b 66 43 6f 64  |{wrap off}.{fCod|
000b0b60  65 7d 3c 42 4f 4f 4c 3e  20 6d 6f 75 73 65 63 6c  |e}<BOOL> mousecl|
000b0b70  69 63 6b 20 28 3c 65 76  65 6e 74 5f 70 6f 6c 6c  |ick (<event_poll|
000b0b80  62 6c 6f 63 6b 3e 20 2a  65 2c 20 76 6f 69 64 20  |block> *e, void |
000b0b90  2a 72 65 66 29 0a 5c 7b  0a 20 20 20 20 20 55 4e  |*ref).\{.     UN|
000b0ba0  55 53 45 44 5f 41 52 47  28 72 65 66 29 3b 0a 20  |USED_ARG(ref);. |
000b0bb0  20 20 20 20 2e 2e 2e 0a  7d 00 00 00 44 49 52 24  |    ....}...DIR$|
000b0bc0  28 00 00 00 28 00 00 00  e4 0b 0b 00 46 ff ff ff  |(...(.......F...|
000b0bd0  13 04 bd 22 d9 00 00 00  13 00 00 00 00 00 00 00  |..."............|
000b0be0  4d 41 58 00 44 41 54 41  d9 00 00 00 55 53 48 52  |MAX.DATA....USHR|
000b0bf0  54 5f 4d 41 58 0a 54 68  69 73 20 6d 61 63 72 6f  |T_MAX.This macro|
000b0c00  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
000b0c10  6c 69 6d 69 74 73 2e 68  3e 20 61 6e 64 20 72 65  |limits.h> and re|
000b0c20  70 72 65 73 65 6e 74 73  20 74 68 65 20 6d 61 78  |presents the max|
000b0c30  69 6d 75 6d 20 76 61 6c  75 65 20 77 68 69 63 68  |imum value which|
000b0c40  20 63 61 6e 20 62 65 20  73 74 6f 72 65 64 20 69  | can be stored i|
000b0c50  6e 20 61 6e 20 75 6e 73  69 67 6e 65 64 20 73 68  |n an unsigned sh|
000b0c60  6f 72 74 20 69 6e 74 20  28 74 68 65 20 6d 69 6e  |ort int (the min|
000b0c70  69 6d 75 6d 20 76 61 6c  75 65 20 69 73 20 61 6c  |imum value is al|
000b0c80  77 61 79 73 20 30 29 2e  20 49 6e 20 45 61 73 79  |ways 0). In Easy|
000b0c90  20 43 20 69 74 20 69 73  20 64 65 66 69 6e 65 64  | C it is defined|
000b0ca0  20 61 73 20 30 78 66 66  66 66 66 66 66 66 55 20  | as 0xffffffffU |
000b0cb0  28 34 32 39 34 39 36 37  32 39 35 29 2e 00 00 00  |(4294967295)....|
000b0cc0  44 49 52 24 80 01 00 00  80 01 00 00 40 0e 0b 00  |DIR$........@...|
000b0cd0  46 ff ff ff 55 7b 54 26  5d 01 00 00 13 00 00 00  |F...U{T&].......|
000b0ce0  00 00 00 00 56 41 4c 49  44 00 00 00 a0 0f 0b 00  |....VALID.......|
000b0cf0  46 ff ff ff 19 1f 37 26  92 00 00 00 13 00 00 00  |F.....7&........|
000b0d00  00 00 00 00 56 61 6c 69  64 61 74 69 6f 6e 00 00  |....Validation..|
000b0d10  34 10 0b 00 46 fd ff ff  d2 f0 84 2f 30 00 00 00  |4...F....../0...|
000b0d20  13 01 00 00 00 00 00 00  56 61 6c 69 64 61 74 69  |........Validati|
000b0d30  6f 6e 5f 00 ec 11 0b 00  46 fd ff ff f6 f0 84 2f  |on_.....F....../|
000b0d40  84 00 00 00 13 01 00 00  00 00 00 00 76 61 5f 00  |............va_.|
000b0d50  60 17 0b 00 46 ff ff ff  81 57 54 26 74 01 00 00  |`...F....WT&t...|
000b0d60  13 00 00 00 00 00 00 00  56 45 52 49 46 59 00 00  |........VERIFY..|
000b0d70  d4 18 0b 00 46 fd ff ff  64 f1 84 2f 2c 00 00 00  |....F...d../,...|
000b0d80  13 01 00 00 00 00 00 00  56 45 52 49 46 59 5f 00  |........VERIFY_.|
000b0d90  4c 1a 0b 00 46 ff ff ff  15 17 c4 22 4b 01 00 00  |L...F......"K...|
000b0da0  13 00 00 00 00 00 00 00  76 66 70 72 69 6e 74 66  |........vfprintf|
000b0db0  00 00 00 00 98 1b 0b 00  46 ff ff ff 8e 3c e6 24  |........F....<.$|
000b0dc0  c5 00 00 00 13 00 00 00  00 00 00 00 76 69 73 64  |............visd|
000b0dd0  65 6c 61 79 00 00 00 00  60 1c 0b 00 46 fd ff ff  |elay....`...F...|
000b0de0  b5 f1 84 2f 88 00 00 00  13 01 00 00 00 00 00 00  |.../............|
000b0df0  76 69 73 64 65 6c 61 79  5f 00 00 00 d0 20 0b 00  |visdelay_.... ..|
000b0e00  46 ff ff ff cf 1d c4 22  38 01 00 00 13 00 00 00  |F......"8.......|
000b0e10  00 00 00 00 76 70 72 69  6e 74 66 00 08 22 0b 00  |....vprintf.."..|
000b0e20  46 ff ff ff 8f 24 c4 22  46 01 00 00 13 00 00 00  |F....$."F.......|
000b0e30  00 00 00 00 76 73 70 72  69 6e 74 66 00 00 00 00  |....vsprintf....|
000b0e40  44 41 54 41 5d 01 00 00  56 41 4c 49 44 0a 53 79  |DATA]...VALID.Sy|
000b0e50  6e 74 61 78 3a 09 42 4f  4f 4c 20 56 41 4c 49 44  |ntax:.BOOL VALID|
000b0e60  20 28 76 6f 69 64 20 2a  70 6f 69 6e 74 65 72 29  | (void *pointer)|
000b0e70  3b 0a 48 65 61 64 65 72  3a 09 3c 54 69 6d 73 4c  |;.Header:.<TimsL|
000b0e80  69 62 3a 43 68 65 63 6b  2e 68 3d 3e 43 68 65 63  |ib:Check.h=>Chec|
000b0e90  6b 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 3c 54 52  |k>..Returns:.<TR|
000b0ea0  55 45 3e 20 69 66 20 74  68 65 20 70 6f 69 6e 74  |UE> if the point|
000b0eb0  65 72 20 69 73 20 76 61  6c 69 64 2e 0a 0a 2f 70  |er is valid.../p|
000b0ec0  6f 69 6e 74 65 72 2f 20  69 73 20 63 68 65 63 6b  |ointer/ is check|
000b0ed0  65 64 20 61 6e 64 20 69  66 20 69 74 20 69 73 20  |ed and if it is |
000b0ee0  6e 6f 74 20 76 61 6c 69  64 20 28 69 65 20 6d 65  |not valid (ie me|
000b0ef0  6d 6f 72 79 20 63 61 6e  20 6e 6f 74 20 62 65 20  |mory can not be |
000b0f00  72 65 61 64 2f 77 72 69  74 74 65 6e 20 61 74 20  |read/written at |
000b0f10  74 68 69 73 20 6c 6f 63  61 74 69 6f 6e 29 20 74  |this location) t|
000b0f20  68 65 6e 20 3c 46 41 4c  53 45 3e 20 69 73 20 72  |hen <FALSE> is r|
000b0f30  65 74 75 72 6e 65 64 2e  20 49 66 20 7b 2a 7d 5f  |eturned. If {*}_|
000b0f40  44 45 42 55 47 7b 2a 7d  20 69 73 20 64 65 66 69  |DEBUG{*} is defi|
000b0f50  6e 65 64 20 74 68 65 6e  20 74 68 65 20 3c 54 72  |ned then the <Tr|
000b0f60  61 63 65 3d 3e 54 72 61  63 65 5f 54 4c 3e 20 6d  |ace=>Trace_TL> m|
000b0f70  6f 64 75 6c 65 20 69 73  20 75 73 65 64 20 74 6f  |odule is used to|
000b0f80  20 70 72 6f 64 75 63 65  20 68 65 6c 70 66 75 6c  | produce helpful|
000b0f90  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 2e 00 00 00  | information....|
000b0fa0  44 41 54 41 92 00 00 00  44 65 73 6b 4c 69 62 3a  |DATA....DeskLib:|
000b0fb0  56 61 6c 69 64 61 74 69  6f 6e 2e 68 0a 56 65 72  |Validation.h.Ver|
000b0fc0  73 69 6f 6e 3a 20 31 2e  30 30 20 28 32 32 20 4d  |sion: 1.00 (22 M|
000b0fd0  61 72 20 31 39 39 32 29  0a 23 6c 69 6e 65 0a 54  |ar 1992).#line.T|
000b0fe0  68 69 73 20 68 65 61 64  65 72 20 66 69 6c 65 20  |his header file |
000b0ff0  64 65 63 6c 61 72 65 73  20 6a 75 73 74 20 6f 6e  |declares just on|
000b1000  65 20 66 75 6e 63 74 69  6f 6e 3a 0a 0a 7b 61 6c  |e function:..{al|
000b1010  69 67 6e 20 63 65 6e 74  72 65 7d 3c 56 61 6c 69  |ign centre}<Vali|
000b1020  64 61 74 69 6f 6e 5f 53  63 61 6e 53 74 72 69 6e  |dation_ScanStrin|
000b1030  67 3e 00 00 44 49 52 24  30 00 00 00 30 00 00 00  |g>..DIR$0...0...|
000b1040  64 10 0b 00 46 ff ff ff  3c 26 37 26 85 01 00 00  |d...F...<&7&....|
000b1050  13 00 00 00 00 00 00 00  53 63 61 6e 53 74 72 69  |........ScanStri|
000b1060  6e 67 00 00 44 41 54 41  85 01 00 00 56 61 6c 69  |ng..DATA....Vali|
000b1070  64 61 74 69 6f 6e 5f 53  63 61 6e 53 74 72 69 6e  |dation_ScanStrin|
000b1080  67 0a 53 79 6e 74 61 78  3a 09 69 6e 74 20 56 61  |g.Syntax:.int Va|
000b1090  6c 69 64 61 74 69 6f 6e  5f 53 63 61 6e 53 74 72  |lidation_ScanStr|
000b10a0  69 6e 67 20 28 63 68 61  72 20 2a 73 74 72 69 6e  |ing (char *strin|
000b10b0  67 2c 20 63 68 61 72 20  74 61 67 29 3b 0a 48 65  |g, char tag);.He|
000b10c0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 56  |ader:.<DeskLib:V|
000b10d0  61 6c 69 64 61 74 69 6f  6e 2e 68 3d 3e 56 61 6c  |alidation.h=>Val|
000b10e0  69 64 61 74 69 6f 6e 3e  0a 0a 52 65 74 75 72 6e  |idation>..Return|
000b10f0  73 3a 09 4f 66 66 73 65  74 20 77 69 74 68 69 6e  |s:.Offset within|
000b1100  20 73 74 72 69 6e 67 2c  20 30 20 69 66 20 6e 6f  | string, 0 if no|
000b1110  74 20 66 6f 75 6e 64 2e  0a 0a 54 68 69 73 20 66  |t found...This f|
000b1120  75 6e 63 74 69 6f 6e 20  73 63 61 6e 73 20 74 68  |unction scans th|
000b1130  65 20 73 74 72 69 6e 67  20 66 6f 72 20 74 68 65  |e string for the|
000b1140  20 63 68 61 72 61 63 74  65 72 20 69 6e 20 2f 74  | character in /t|
000b1150  61 67 2f 2c 20 61 6e 64  20 72 65 74 75 72 6e 73  |ag/, and returns|
000b1160  20 74 68 65 20 6f 66 66  73 65 74 20 6f 66 20 74  | the offset of t|
000b1170  68 65 20 6e 65 78 74 20  63 68 61 72 61 63 74 65  |he next characte|
000b1180  72 2e 20 54 68 65 20 74  61 67 20 63 68 61 72 61  |r. The tag chara|
000b1190  63 74 65 72 20 6d 75 73  74 20 62 65 20 65 69 74  |cter must be eit|
000b11a0  68 65 72 20 74 68 65 20  66 69 72 73 74 20 63 68  |her the first ch|
000b11b0  61 72 61 63 74 65 72 20  69 6e 20 74 68 65 20 73  |aracter in the s|
000b11c0  74 72 69 6e 67 2c 20 6f  72 20 69 6d 6d 65 64 69  |tring, or immedi|
000b11d0  61 74 65 6c 79 20 66 6f  6c 6c 6f 77 20 61 20 73  |ately follow a s|
000b11e0  65 6d 69 63 6f 6c 6f 6e  2e 00 00 00 44 49 52 24  |emicolon....DIR$|
000b11f0  84 00 00 00 84 00 00 00  70 12 0b 00 46 ff ff ff  |........p...F...|
000b1200  e8 97 bf 22 87 01 00 00  13 00 00 00 00 00 00 00  |..."............|
000b1210  61 72 67 00 f8 13 0b 00  46 ff ff ff a7 a1 bf 22  |arg.....F......"|
000b1220  ea 00 00 00 13 00 00 00  00 00 00 00 65 6e 64 00  |............end.|
000b1230  e4 14 0b 00 46 ff ff ff  74 b9 bf 22 9d 01 00 00  |....F...t.."....|
000b1240  13 00 00 00 00 00 00 00  73 74 61 72 74 00 00 00  |........start...|
000b1250  84 16 0b 00 46 ff ff ff  2b 36 c0 22 da 00 00 00  |....F...+6."....|
000b1260  13 00 00 00 00 00 00 00  6c 69 73 74 00 00 00 00  |........list....|
000b1270  44 41 54 41 87 01 00 00  76 61 5f 61 72 67 0a 53  |DATA....va_arg.S|
000b1280  79 6e 74 61 78 3a 09 74  79 70 65 20 76 61 5f 61  |yntax:.type va_a|
000b1290  72 67 20 28 3c 76 61 5f  6c 69 73 74 3e 20 61 70  |rg (<va_list> ap|
000b12a0  2c 20 74 79 70 65 29 3b  0a 48 65 61 64 65 72 3a  |, type);.Header:|
000b12b0  09 3c 73 74 64 61 72 67  2e 68 3d 3e 73 74 64 61  |.<stdarg.h=>stda|
000b12c0  72 67 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 54 68  |rg>..Returns:.Th|
000b12d0  65 20 61 72 67 75 6d 65  6e 74 20 66 65 74 63 68  |e argument fetch|
000b12e0  65 64 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ed...This functi|
000b12f0  6f 6e 20 28 77 68 69 63  68 20 69 73 20 61 63 74  |on (which is act|
000b1300  75 61 6c 6c 79 20 64 65  66 69 6e 65 64 20 61 73  |ually defined as|
000b1310  20 61 20 66 75 6e 63 74  69 6f 6e 2d 6c 69 6b 65  | a function-like|
000b1320  20 6d 61 63 72 6f 29 2c  20 66 65 74 63 68 65 73  | macro), fetches|
000b1330  20 74 68 65 20 6e 65 78  74 20 61 72 67 75 6d 65  | the next argume|
000b1340  6e 74 20 66 72 6f 6d 20  74 68 65 20 76 61 72 69  |nt from the vari|
000b1350  61 62 6c 65 20 61 72 67  75 6d 65 6e 74 20 6c 69  |able argument li|
000b1360  73 74 2e 20 2f 61 70 2f  20 69 73 20 74 68 65 20  |st. /ap/ is the |
000b1370  73 61 6d 65 20 61 73 20  69 74 20 77 61 73 20 66  |same as it was f|
000b1380  6f 72 20 74 68 65 20 3c  76 61 5f 73 74 61 72 74  |or the <va_start|
000b1390  3e 20 63 61 6c 6c 2e 20  2f 74 79 70 65 2f 20 69  |> call. /type/ i|
000b13a0  6e 64 69 63 61 74 65 73  20 74 68 65 20 65 78 70  |ndicates the exp|
000b13b0  65 63 74 65 64 20 74 79  70 65 20 6f 66 20 74 68  |ected type of th|
000b13c0  65 20 6e 65 78 74 20 61  72 67 75 6d 65 6e 74 2c  |e next argument,|
000b13d0  20 61 6e 64 20 69 73 20  74 68 65 20 74 79 70 65  | and is the type|
000b13e0  20 6f 66 20 74 68 65 20  76 61 6c 75 65 20 72 65  | of the value re|
000b13f0  74 75 72 6e 65 64 2e 00  44 41 54 41 ea 00 00 00  |turned..DATA....|
000b1400  76 61 5f 65 6e 64 0a 53  79 6e 74 61 78 3a 09 76  |va_end.Syntax:.v|
000b1410  6f 69 64 20 76 61 5f 65  6e 64 20 28 3c 76 61 5f  |oid va_end (<va_|
000b1420  6c 69 73 74 3e 20 61 70  29 3b 0a 48 65 61 64 65  |list> ap);.Heade|
000b1430  72 3a 09 3c 73 74 64 61  72 67 2e 68 3d 3e 73 74  |r:.<stdarg.h=>st|
000b1440  64 61 72 67 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |darg>..This func|
000b1450  74 69 6f 6e 20 28 77 68  69 63 68 20 69 73 20 61  |tion (which is a|
000b1460  63 74 75 61 6c 6c 79 20  64 65 66 69 6e 65 64 20  |ctually defined |
000b1470  61 73 20 61 20 66 75 6e  63 74 69 6f 6e 2d 6c 69  |as a function-li|
000b1480  6b 65 20 6d 61 63 72 6f  29 2c 20 66 69 6e 69 73  |ke macro), finis|
000b1490  68 65 73 20 61 72 67 75  6d 65 6e 74 20 6c 69 6e  |hes argument lin|
000b14a0  65 20 70 72 6f 63 65 73  73 69 6e 67 2e 20 2f 61  |e processing. /a|
000b14b0  70 2f 20 73 68 6f 75 6c  64 20 62 65 20 74 68 65  |p/ should be the|
000b14c0  20 73 61 6d 65 20 61 73  20 77 61 73 20 70 61 73  | same as was pas|
000b14d0  73 65 64 20 74 6f 20 3c  76 61 5f 73 74 61 72 74  |sed to <va_start|
000b14e0  3e 2e 00 00 44 41 54 41  9d 01 00 00 76 61 5f 73  |>...DATA....va_s|
000b14f0  74 61 72 74 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |tart.Syntax:.voi|
000b1500  64 20 76 61 5f 73 74 61  72 74 20 28 3c 76 61 5f  |d va_start (<va_|
000b1510  6c 69 73 74 3e 20 61 70  2c 20 61 72 67 29 3b 0a  |list> ap, arg);.|
000b1520  48 65 61 64 65 72 3a 09  3c 73 74 64 61 72 67 2e  |Header:.<stdarg.|
000b1530  68 3d 3e 73 74 64 61 72  67 3e 0a 0a 54 68 69 73  |h=>stdarg>..This|
000b1540  20 66 75 6e 63 74 69 6f  6e 20 28 77 68 69 63 68  | function (which|
000b1550  20 69 73 20 61 63 74 75  61 6c 6c 79 20 64 65 66  | is actually def|
000b1560  69 6e 65 64 20 61 73 20  61 20 66 75 6e 63 74 69  |ined as a functi|
000b1570  6f 6e 2d 6c 69 6b 65 20  6d 61 63 72 6f 29 2c 20  |on-like macro), |
000b1580  73 65 74 73 20 75 70 20  61 72 67 75 6d 65 6e 74  |sets up argument|
000b1590  20 6c 69 6e 65 20 70 72  6f 63 65 73 73 69 6e 67  | line processing|
000b15a0  2e 20 2f 61 70 2f 20 69  73 20 75 73 65 64 20 61  |. /ap/ is used a|
000b15b0  73 20 77 6f 72 6b 73 70  61 63 65 20 66 6f 72 20  |s workspace for |
000b15c0  74 68 65 20 66 75 6e 63  74 69 6f 6e 20 61 6e 64  |the function and|
000b15d0  20 73 75 62 73 65 71 75  65 6e 74 20 63 61 6c 6c  | subsequent call|
000b15e0  73 2e 20 2f 61 72 67 2f  20 69 73 20 74 68 65 20  |s. /arg/ is the |
000b15f0  61 72 67 75 6d 65 6e 74  20 62 65 66 6f 72 65 20  |argument before |
000b1600  74 68 65 20 76 61 72 69  61 62 6c 65 20 61 72 67  |the variable arg|
000b1610  75 6d 65 6e 74 20 6c 69  73 74 2e 0a 0a 45 78 61  |ument list...Exa|
000b1620  6d 70 6c 65 3a 0a 0a 7b  66 43 6f 64 65 7d 69 6e  |mple:..{fCode}in|
000b1630  74 20 70 72 69 6e 74 66  20 28 63 68 61 72 20 2a  |t printf (char *|
000b1640  66 6f 72 6d 61 74 2c 20  2e 2e 2e 29 0a 5c 7b 0a  |format, ...).\{.|
000b1650  76 61 5f 6c 69 73 74 20  61 70 3b 0a 20 20 20 20  |va_list ap;.    |
000b1660  76 61 5f 73 74 61 72 74  28 61 70 2c 66 6f 72 6d  |va_start(ap,form|
000b1670  61 74 29 3b 0a 20 20 20  20 2e 2e 2e 0a 7d 7b 66  |at);.    ....}{f|
000b1680  7d 00 00 00 44 41 54 41  da 00 00 00 76 61 5f 6c  |}...DATA....va_l|
000b1690  69 73 74 0a 54 68 69 73  20 74 79 70 65 20 69 73  |ist.This type is|
000b16a0  20 64 65 9e 6e 65 64 20  69 6e 20 3c 73 74 64 61  | de.ned in <stda|
000b16b0  72 67 2e 68 3d 3e 73 74  64 61 72 67 3e 20 61 6e  |rg.h=>stdarg> an|
000b16c0  64 20 69 73 20 75 73 65  64 20 74 6f 20 61 6c 6c  |d is used to all|
000b16d0  6f 77 20 74 68 65 20 63  6f 6d 70 69 6c 65 72 20  |ow the compiler |
000b16e0  74 6f 20 6b 65 65 70 20  74 72 61 63 6b 20 6f 66  |to keep track of|
000b16f0  20 77 68 65 72 65 20 69  74 20 69 73 20 69 6e 20  | where it is in |
000b1700  76 61 72 69 61 62 6c 65  20 61 72 67 75 6d 65 6e  |variable argumen|
000b1710  74 20 6c 69 73 74 73 2e  20 49 6e 20 45 61 73 79  |t lists. In Easy|
000b1720  20 43 20 69 74 20 69 73  20 64 65 9e 6e 65 64 3a  | C it is de.ned:|
000b1730  0a 7b 61 6c 69 67 6e 20  63 65 6e 74 72 65 3b 66  |.{align centre;f|
000b1740  43 6f 64 65 7d 74 79 70  65 64 65 66 20 63 68 61  |Code}typedef cha|
000b1750  72 20 2a 76 61 5f 6c 69  73 74 5b 31 5d 3b 00 00  |r *va_list[1];..|
000b1760  44 41 54 41 74 01 00 00  56 45 52 49 46 59 0a 53  |DATAt...VERIFY.S|
000b1770  79 6e 74 61 78 3a 09 56  45 52 49 46 59 20 28 3c  |yntax:.VERIFY (<|
000b1780  42 4f 4f 4c 3e 20 65 78  70 72 29 3b 0a 48 65 61  |BOOL> expr);.Hea|
000b1790  64 65 72 3a 09 3c 54 69  6d 73 4c 69 62 3a 43 68  |der:.<TimsLib:Ch|
000b17a0  65 63 6b 2e 68 3d 3e 43  68 65 63 6b 3e 0a 0a 49  |eck.h=>Check>..I|
000b17b0  66 20 74 68 65 20 6d 61  63 72 6f 20 7b 2a 7d 5f  |f the macro {*}_|
000b17c0  44 45 42 55 47 7b 2a 7d  20 69 73 20 6e 6f 74 20  |DEBUG{*} is not |
000b17d0  64 65 66 69 6e 65 64 2c  20 2f 65 78 70 72 2f 20  |defined, /expr/ |
000b17e0  69 73 20 65 76 61 6c 75  61 74 65 64 20 62 75 74  |is evaluated but|
000b17f0  20 6e 6f 20 66 75 72 74  68 65 72 20 61 63 74 69  | no further acti|
000b1800  6f 6e 20 69 73 20 74 61  6b 65 6e 2e 20 4f 74 68  |on is taken. Oth|
000b1810  65 72 77 69 73 65 2c 20  2f 65 78 70 72 2f 20 69  |erwise, /expr/ i|
000b1820  73 20 65 76 61 6c 75 61  74 65 64 20 61 6e 64 20  |s evaluated and |
000b1830  69 66 20 69 74 20 69 73  20 3c 46 41 4c 53 45 3e  |if it is <FALSE>|
000b1840  20 74 68 65 6e 20 61 6e  20 65 72 72 6f 72 20 62  | then an error b|
000b1850  6f 78 20 69 73 20 64 69  73 70 6c 61 79 65 64 20  |ox is displayed |
000b1860  64 65 74 61 69 6c 69 6e  67 20 74 68 65 20 61 73  |detailing the as|
000b1870  73 65 72 74 69 6f 6e 20  66 61 69 6c 75 72 65 2e  |sertion failure.|
000b1880  0a 0a 54 68 69 73 20 69  73 20 75 73 65 66 75 6c  |..This is useful|
000b1890  20 69 66 20 2f 65 78 70  72 2f 20 63 6f 6e 74 61  | if /expr/ conta|
000b18a0  69 6e 73 20 61 20 66 75  6e 63 74 69 6f 6e 20 63  |ins a function c|
000b18b0  61 6c 6c 20 77 68 69 63  68 20 6d 75 73 74 20 62  |all which must b|
000b18c0  65 20 6d 61 64 65 2c 20  66 6f 72 20 65 78 61 6d  |e made, for exam|
000b18d0  70 6c 65 2e 44 49 52 24  2c 00 00 00 2c 00 00 00  |ple.DIR$,...,...|
000b18e0  00 19 0b 00 46 ff ff ff  c9 66 54 26 4b 01 00 00  |....F....fT&K...|
000b18f0  13 00 00 00 00 00 00 00  56 41 4c 49 44 00 00 00  |........VALID...|
000b1900  44 41 54 41 4b 01 00 00  56 45 52 49 46 59 5f 56  |DATAK...VERIFY_V|
000b1910  41 4c 49 44 0a 53 79 6e  74 61 78 3a 09 56 45 52  |ALID.Syntax:.VER|
000b1920  49 46 59 5f 56 41 4c 49  44 20 28 76 6f 69 64 20  |IFY_VALID (void |
000b1930  2a 70 6f 69 6e 74 65 72  29 3b 0a 48 65 61 64 65  |*pointer);.Heade|
000b1940  72 3a 09 3c 54 69 6d 73  4c 69 62 3a 43 68 65 63  |r:.<TimsLib:Chec|
000b1950  6b 2e 68 3d 3e 43 68 65  63 6b 3e 0a 0a 2f 70 6f  |k.h=>Check>../po|
000b1960  69 6e 74 65 72 2f 20 69  73 20 63 68 65 63 6b 65  |inter/ is checke|
000b1970  64 20 61 6e 64 20 69 66  20 69 74 20 69 73 20 6e  |d and if it is n|
000b1980  6f 74 20 76 61 6c 69 64  20 28 69 65 20 6d 65 6d  |ot valid (ie mem|
000b1990  6f 72 79 20 63 61 6e 20  6e 6f 74 20 62 65 20 72  |ory can not be r|
000b19a0  65 61 64 2f 77 72 69 74  74 65 6e 20 61 74 20 74  |ead/written at t|
000b19b0  68 69 73 20 6c 6f 63 61  74 69 6f 6e 29 20 74 68  |his location) th|
000b19c0  65 6e 20 61 6e 20 61 73  73 65 72 74 69 6f 6e 20  |en an assertion |
000b19d0  66 61 69 6c 75 72 65 20  6f 63 63 75 72 73 2e 20  |failure occurs. |
000b19e0  49 66 20 74 68 65 20 6d  61 63 72 6f 20 7b 2a 7d  |If the macro {*}|
000b19f0  5f 44 45 42 55 47 7b 2a  7d 20 69 73 20 6e 6f 74  |_DEBUG{*} is not|
000b1a00  20 64 65 66 69 6e 65 64  20 74 68 65 6e 20 77 6f  | defined then wo|
000b1a10  72 64 69 6e 67 20 6d 6f  72 65 20 61 70 70 72 6f  |rding more appro|
000b1a20  70 72 69 61 74 65 20 74  6f 20 61 20 70 75 62 6c  |priate to a publ|
000b1a30  69 63 20 72 65 6c 65 61  73 65 20 76 65 72 73 69  |ic release versi|
000b1a40  6f 6e 20 69 73 20 75 73  65 64 2e 00 44 41 54 41  |on is used..DATA|
000b1a50  4b 01 00 00 76 66 70 72  69 6e 74 66 0a 53 79 6e  |K...vfprintf.Syn|
000b1a60  74 61 78 3a 09 69 6e 74  20 76 66 70 72 69 6e 74  |tax:.int vfprint|
000b1a70  66 20 28 3c 46 49 4c 45  3e 20 2a 73 74 72 65 61  |f (<FILE> *strea|
000b1a80  6d 2c 20 63 68 61 72 20  2a 66 6f 72 6d 61 74 2c  |m, char *format,|
000b1a90  20 3c 76 61 5f 6c 69 73  74 3e 20 61 72 67 73 29  | <va_list> args)|
000b1aa0  3b 0a 48 65 61 64 65 72  3a 09 3c 73 74 64 69 6f  |;.Header:.<stdio|
000b1ab0  2e 68 3d 3e 73 74 64 69  6f 3e 0a 0a 52 65 74 75  |.h=>stdio>..Retu|
000b1ac0  72 6e 73 3a 09 54 68 65  20 6e 75 6d 62 65 72 20  |rns:.The number |
000b1ad0  6f 66 20 63 68 61 72 61  63 74 65 72 73 20 6f 75  |of characters ou|
000b1ae0  74 70 75 74 2c 20 6f 72  20 61 20 6e 65 67 61 74  |tput, or a negat|
000b1af0  69 76 65 20 76 61 6c 75  65 20 69 66 20 74 68 65  |ive value if the|
000b1b00  72 65 20 77 61 73 20 61  6e 20 65 72 72 6f 72 2e  |re was an error.|
000b1b10  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000b1b20  69 73 20 69 64 65 6e 74  69 63 61 6c 20 74 6f 20  |is identical to |
000b1b30  3c 66 70 72 69 6e 74 66  3e 2c 20 62 75 74 20 74  |<fprintf>, but t|
000b1b40  68 65 20 61 72 67 75 6d  65 6e 74 73 20 61 72 65  |he arguments are|
000b1b50  20 72 65 70 6c 61 63 65  64 20 62 79 20 2f 61 72  | replaced by /ar|
000b1b60  67 73 2f 2c 20 77 68 69  63 68 20 73 68 6f 75 6c  |gs/, which shoul|
000b1b70  64 20 68 61 76 65 20 62  65 65 6e 20 69 6e 69 74  |d have been init|
000b1b80  69 61 6c 69 73 65 64 20  62 79 20 3c 76 61 5f 73  |ialised by <va_s|
000b1b90  74 61 72 74 3e 2e 20 00  44 41 54 41 c5 00 00 00  |tart>. .DATA....|
000b1ba0  76 69 73 64 65 6c 61 79  2e 68 0a 54 68 65 20 5c  |visdelay.h.The \|
000b1bb0  3c 76 69 73 64 65 6c 61  79 2e 68 3e 20 68 65 61  |<visdelay.h> hea|
000b1bc0  64 65 72 20 64 65 63 6c  61 72 65 73 20 66 75 6e  |der declares fun|
000b1bd0  63 74 69 6f 6e 73 20 66  6f 72 20 68 61 6e 64 6c  |ctions for handl|
000b1be0  69 6e 67 20 74 68 65 20  3c 48 6f 75 72 67 6c 61  |ing the <Hourgla|
000b1bf0  73 73 3d 3e 53 57 49 3a  48 6f 75 72 67 6c 61 73  |ss=>SWI:Hourglas|
000b1c00  73 5f 3e 2e 0a 0a 23 54  61 62 6c 65 20 32 0a 3c  |s_>...#Table 2.<|
000b1c10  76 69 73 64 65 6c 61 79  5f 62 65 67 69 6e 3e 0a  |visdelay_begin>.|
000b1c20  3c 76 69 73 64 65 6c 61  79 5f 65 6e 64 3e 0a 3c  |<visdelay_end>.<|
000b1c30  76 69 73 64 65 6c 61 79  5f 69 6e 69 74 3e 0a 3c  |visdelay_init>.<|
000b1c40  76 69 73 64 65 6c 61 79  5f 70 65 72 63 65 6e 74  |visdelay_percent|
000b1c50  3e 20 20 0a 23 45 6e 64  54 61 62 6c 65 00 00 00  |>  .#EndTable...|
000b1c60  44 49 52 24 88 00 00 00  88 00 00 00 e8 1c 0b 00  |DIR$............|
000b1c70  46 ff ff ff a4 42 e6 24  fe 00 00 00 13 00 00 00  |F....B.$........|
000b1c80  00 00 00 00 62 65 67 69  6e 00 00 00 e8 1d 0b 00  |....begin.......|
000b1c90  46 ff ff ff b6 46 e6 24  d5 00 00 00 13 00 00 00  |F....F.$........|
000b1ca0  00 00 00 00 65 6e 64 00  c0 1e 0b 00 46 ff ff ff  |....end.....F...|
000b1cb0  e7 4a e6 24 04 01 00 00  13 00 00 00 00 00 00 00  |.J.$............|
000b1cc0  69 6e 69 74 00 00 00 00  c4 1f 0b 00 46 ff ff ff  |init........F...|
000b1cd0  d6 51 e6 24 0c 01 00 00  13 00 00 00 00 00 00 00  |.Q.$............|
000b1ce0  70 65 72 63 65 6e 74 00  44 41 54 41 fe 00 00 00  |percent.DATA....|
000b1cf0  76 69 73 64 65 6c 61 79  5f 62 65 67 69 6e 0a 53  |visdelay_begin.S|
000b1d00  79 6e 74 61 78 3a 09 76  6f 69 64 20 76 69 73 64  |yntax:.void visd|
000b1d10  65 6c 61 79 5f 62 65 67  69 6e 20 28 76 6f 69 64  |elay_begin (void|
000b1d20  29 3b 0a 48 65 61 64 65  72 3a 09 3c 76 69 73 64  |);.Header:.<visd|
000b1d30  65 6c 61 79 2e 68 3d 3e  76 69 73 64 65 6c 61 79  |elay.h=>visdelay|
000b1d40  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
000b1d50  20 63 68 61 6e 67 65 73  20 74 68 65 20 6d 6f 75  | changes the mou|
000b1d60  73 65 20 70 6f 69 6e 74  65 72 20 74 6f 20 73 68  |se pointer to sh|
000b1d70  6f 77 20 74 68 65 20 75  73 65 20 74 68 61 74 20  |ow the use that |
000b1d80  73 6f 6d 65 20 64 65 6c  61 79 20 77 69 6c 6c 20  |some delay will |
000b1d90  6f 63 63 75 72 2e 20 41  74 20 74 68 65 20 6d 6f  |occur. At the mo|
000b1da0  6d 65 6e 74 20 69 74 20  70 65 72 66 6f 72 6d 73  |ment it performs|
000b1db0  20 74 68 65 20 73 61 6d  65 20 61 73 20 74 68 65  | the same as the|
000b1dc0  20 53 57 49 20 3c 48 6f  75 72 67 6c 61 73 73 5f  | SWI <Hourglass_|
000b1dd0  4f 6e 3d 3e 53 57 49 3a  48 6f 75 72 67 6c 61 73  |On=>SWI:Hourglas|
000b1de0  73 5f 4f 6e 3e 2e 00 00  44 41 54 41 d5 00 00 00  |s_On>...DATA....|
000b1df0  76 69 73 64 65 6c 61 79  5f 65 6e 64 0a 53 79 6e  |visdelay_end.Syn|
000b1e00  74 61 78 3a 09 76 6f 69  64 20 76 69 73 64 65 6c  |tax:.void visdel|
000b1e10  61 79 5f 65 6e 64 20 28  76 6f 69 64 29 3b 0a 48  |ay_end (void);.H|
000b1e20  65 61 64 65 72 3a 09 3c  76 69 73 64 65 6c 61 79  |eader:.<visdelay|
000b1e30  2e 68 3d 3e 76 69 73 64  65 6c 61 79 3e 0a 0a 54  |.h=>visdelay>..T|
000b1e40  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 6d  |his function rem|
000b1e50  6f 76 65 73 20 74 68 65  20 69 6e 64 69 63 61 74  |oves the indicat|
000b1e60  69 6f 6e 20 6f 66 20 74  68 65 20 64 65 6c 61 79  |ion of the delay|
000b1e70  2e 20 41 74 20 74 68 65  20 6d 6f 6d 65 6e 74 20  |. At the moment |
000b1e80  69 74 20 69 73 20 74 68  65 20 73 61 6d 65 20 61  |it is the same a|
000b1e90  73 20 74 68 65 20 53 57  49 20 3c 48 6f 75 72 67  |s the SWI <Hourg|
000b1ea0  6c 61 73 73 5f 4f 66 66  3d 3e 53 57 49 3a 48 6f  |lass_Off=>SWI:Ho|
000b1eb0  75 72 67 6c 61 73 73 5f  4f 66 66 3e 2e 00 00 00  |urglass_Off>....|
000b1ec0  44 41 54 41 04 01 00 00  76 69 73 64 65 6c 61 79  |DATA....visdelay|
000b1ed0  5f 69 6e 69 74 0a 53 79  6e 74 61 78 3a 09 76 6f  |_init.Syntax:.vo|
000b1ee0  69 64 20 76 69 73 64 65  6c 61 79 5f 69 6e 69 74  |id visdelay_init|
000b1ef0  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
000b1f00  09 3c 76 69 73 64 65 6c  61 79 2e 68 3d 3e 76 69  |.<visdelay.h=>vi|
000b1f10  73 64 65 6c 61 79 3e 0a  0a 54 68 69 73 20 66 75  |sdelay>..This fu|
000b1f20  6e 63 74 69 6f 6e 20 69  6e 69 74 69 61 6c 69 73  |nction initialis|
000b1f30  65 73 20 74 68 65 20 76  69 73 64 65 6c 61 79 20  |es the visdelay |
000b1f40  73 79 73 74 65 6d 2e 20  41 74 20 74 68 65 20 6d  |system. At the m|
000b1f50  6f 6d 65 6e 74 20 69 74  20 64 6f 65 73 20 61 62  |oment it does ab|
000b1f60  73 6f 6c 75 74 65 6c 79  20 6e 6f 74 68 69 6e 67  |solutely nothing|
000b1f70  2c 20 61 73 20 74 68 65  20 48 6f 75 72 67 6c 61  |, as the Hourgla|
000b1f80  73 73 20 6e 65 65 64 73  20 6e 6f 20 69 6e 69 74  |ss needs no init|
000b1f90  69 61 6c 69 73 61 74 69  6f 6e 2e 20 48 6f 77 65  |ialisation. Howe|
000b1fa0  76 65 72 2c 20 69 74 20  61 6c 6c 6f 77 73 20 66  |ver, it allows f|
000b1fb0  6f 72 20 66 75 74 75 72  65 20 65 78 70 61 6e 73  |or future expans|
000b1fc0  69 6f 6e 2e 44 41 54 41  0c 01 00 00 76 69 73 64  |ion.DATA....visd|
000b1fd0  65 6c 61 79 5f 70 65 72  63 65 6e 74 0a 53 79 6e  |elay_percent.Syn|
000b1fe0  74 61 78 3a 09 76 6f 69  64 20 76 69 73 64 65 6c  |tax:.void visdel|
000b1ff0  61 79 5f 70 65 72 63 65  6e 74 20 28 69 6e 74 20  |ay_percent (int |
000b2000  70 29 3b 0a 48 65 61 64  65 72 3a 09 3c 76 69 73  |p);.Header:.<vis|
000b2010  64 65 6c 61 79 2e 68 3d  3e 76 69 73 64 65 6c 61  |delay.h=>visdela|
000b2020  79 3e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |y>..This functio|
000b2030  6e 20 69 6e 64 69 63 61  74 65 73 20 74 6f 20 74  |n indicates to t|
000b2040  68 65 20 75 73 65 72 20  74 68 61 74 20 74 68 65  |he user that the|
000b2050  20 64 65 6c 61 79 20 69  73 20 2f 70 2f 20 70 65  | delay is /p/ pe|
000b2060  72 63 65 6e 74 20 63 6f  6d 70 6c 65 74 65 64 2e  |rcent completed.|
000b2070  20 41 74 20 74 68 65 20  6d 6f 6d 65 6e 74 20 69  | At the moment i|
000b2080  74 20 70 65 72 66 6f 72  6d 73 20 74 68 65 20 73  |t performs the s|
000b2090  61 6d 65 20 61 73 20 74  68 65 20 53 57 49 20 3c  |ame as the SWI <|
000b20a0  48 6f 75 72 67 6c 61 73  73 5f 50 65 72 63 65 6e  |Hourglass_Percen|
000b20b0  74 61 67 65 3d 3e 53 57  49 3a 48 6f 75 72 67 6c  |tage=>SWI:Hourgl|
000b20c0  61 73 73 5f 50 65 72 63  65 6e 74 61 67 65 3e 2e  |ass_Percentage>.|
000b20d0  44 41 54 41 38 01 00 00  76 70 72 69 6e 74 66 0a  |DATA8...vprintf.|
000b20e0  53 79 6e 74 61 78 3a 09  69 6e 74 20 76 70 72 69  |Syntax:.int vpri|
000b20f0  6e 74 66 20 28 63 68 61  72 20 2a 66 6f 72 6d 61  |ntf (char *forma|
000b2100  74 2c 20 3c 76 61 5f 6c  69 73 74 3e 20 61 72 67  |t, <va_list> arg|
000b2110  73 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 74 64  |s);.Header:.<std|
000b2120  69 6f 2e 68 3d 3e 73 74  64 69 6f 3e 0a 0a 52 65  |io.h=>stdio>..Re|
000b2130  74 75 72 6e 73 3a 09 54  68 65 20 6e 75 6d 62 65  |turns:.The numbe|
000b2140  72 20 6f 66 20 63 68 61  72 61 63 74 65 72 73 20  |r of characters |
000b2150  6f 75 74 70 75 74 2c 20  6f 72 20 61 20 6e 65 67  |output, or a neg|
000b2160  61 74 69 76 65 20 76 61  6c 75 65 20 69 66 20 74  |ative value if t|
000b2170  68 65 72 65 20 77 61 73  20 61 6e 20 65 72 72 6f  |here was an erro|
000b2180  72 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |r...This functio|
000b2190  6e 20 69 73 20 69 64 65  6e 74 69 63 61 6c 20 74  |n is identical t|
000b21a0  6f 20 3c 70 72 69 6e 74  66 3e 2c 20 62 75 74 20  |o <printf>, but |
000b21b0  74 68 65 20 61 72 67 75  6d 65 6e 74 73 20 61 72  |the arguments ar|
000b21c0  65 20 72 65 70 6c 61 63  65 64 20 62 79 20 2f 61  |e replaced by /a|
000b21d0  72 67 73 2f 2c 20 77 68  69 63 68 20 73 68 6f 75  |rgs/, which shou|
000b21e0  6c 64 20 68 61 76 65 20  62 65 65 6e 20 69 6e 69  |ld have been ini|
000b21f0  74 69 61 6c 69 73 65 64  20 62 79 20 3c 76 61 5f  |tialised by <va_|
000b2200  73 74 61 72 74 3e 2e 20  44 41 54 41 46 01 00 00  |start>. DATAF...|
000b2210  76 73 70 72 69 6e 74 66  0a 53 79 6e 74 61 78 3a  |vsprintf.Syntax:|
000b2220  09 69 6e 74 20 76 73 70  72 69 6e 74 66 20 28 63  |.int vsprintf (c|
000b2230  68 61 72 20 2a 6f 75 74  2c 20 63 68 61 72 20 2a  |har *out, char *|
000b2240  66 6f 72 6d 61 74 2c 20  3c 76 61 5f 6c 69 73 74  |format, <va_list|
000b2250  3e 20 61 72 67 73 29 3b  0a 48 65 61 64 65 72 3a  |> args);.Header:|
000b2260  09 3c 73 74 64 69 6f 2e  68 3d 3e 73 74 64 69 6f  |.<stdio.h=>stdio|
000b2270  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 54 68 65 20  |>..Returns:.The |
000b2280  6e 75 6d 62 65 72 20 6f  66 20 63 68 61 72 61 63  |number of charac|
000b2290  74 65 72 73 20 6f 75 74  70 75 74 2c 20 6f 72 20  |ters output, or |
000b22a0  61 20 6e 65 67 61 74 69  76 65 20 76 61 6c 75 65  |a negative value|
000b22b0  20 69 66 20 74 68 65 72  65 20 77 61 73 20 61 6e  | if there was an|
000b22c0  20 65 72 72 6f 72 2e 0a  0a 54 68 69 73 20 66 75  | error...This fu|
000b22d0  6e 63 74 69 6f 6e 20 69  73 20 69 64 65 6e 74 69  |nction is identi|
000b22e0  63 61 6c 20 74 6f 20 3c  73 70 72 69 6e 74 66 3e  |cal to <sprintf>|
000b22f0  2c 20 62 75 74 20 74 68  65 20 61 72 67 75 6d 65  |, but the argume|
000b2300  6e 74 73 20 61 72 65 20  72 65 70 6c 61 63 65 64  |nts are replaced|
000b2310  20 62 79 20 2f 61 72 67  73 2f 2c 20 77 68 69 63  | by /args/, whic|
000b2320  68 20 73 68 6f 75 6c 64  20 68 61 76 65 20 62 65  |h should have be|
000b2330  65 6e 20 69 6e 69 74 69  61 6c 69 73 65 64 20 62  |en initialised b|
000b2340  79 20 3c 76 61 5f 73 74  61 72 74 3e 2e 20 00 00  |y <va_start>. ..|
000b2350  44 49 52 24 50 02 00 00  50 02 00 00 a0 25 0b 00  |DIR$P...P....%..|
000b2360  46 ff ff ff 38 8f 66 25  74 01 00 00 13 00 00 00  |F...8.f%t.......|
000b2370  00 00 00 00 57 41 73 73  65 72 74 00 14 27 0b 00  |....WAssert..'..|
000b2380  46 fd ff ff 67 f2 84 2f  28 00 00 00 13 01 00 00  |F...g../(.......|
000b2390  00 00 00 00 77 63 68 61  72 5f 00 00 4c 28 0b 00  |....wchar_..L(..|
000b23a0  46 ff ff ff 0e e9 de 22  45 02 00 00 13 00 00 00  |F......"E.......|
000b23b0  00 00 00 00 77 63 73 74  6f 6d 62 73 00 00 00 00  |....wcstombs....|
000b23c0  94 2a 0b 00 46 ff ff ff  a6 bd de 22 34 02 00 00  |.*..F......"4...|
000b23d0  13 00 00 00 00 00 00 00  77 63 74 6f 6d 62 00 00  |........wctomb..|
000b23e0  c8 2c 0b 00 46 ff ff ff  d9 61 e6 24 0d 01 00 00  |.,..F....a.$....|
000b23f0  13 00 00 00 00 00 00 00  77 65 72 72 00 00 00 00  |........werr....|
000b2400  d8 2d 0b 00 46 ff ff ff  1b 2a e4 22 6b 02 00 00  |.-..F....*."k...|
000b2410  13 00 00 00 00 00 00 00  77 68 69 6c 65 00 00 00  |........while...|
000b2420  44 30 0b 00 46 ff ff ff  5e b4 47 26 bf 01 00 00  |D0..F...^.G&....|
000b2430  13 00 00 00 00 00 00 00  57 69 6d 70 00 00 00 00  |........Wimp....|
000b2440  04 32 0b 00 46 ff ff ff  fd 67 58 26 af 01 00 00  |.2..F....gX&....|
000b2450  13 00 00 00 00 00 00 00  57 69 6d 70 45 78 74 00  |........WimpExt.|
000b2460  b4 33 0b 00 46 fd ff ff  ff f2 84 2f 98 00 00 00  |.3..F....../....|
000b2470  13 01 00 00 00 00 00 00  57 69 6d 70 45 78 74 5f  |........WimpExt_|
000b2480  00 00 00 00 e0 38 0b 00  46 ff ff ff f6 cb 48 26  |.....8..F.....H&|
000b2490  e7 04 00 00 13 00 00 00  00 00 00 00 57 69 6d 70  |............Wimp|
000b24a0  53 57 49 73 00 00 00 00  c8 3d 0b 00 46 ff ff ff  |SWIs.....=..F...|
000b24b0  03 e8 ea 24 88 01 00 00  13 00 00 00 00 00 00 00  |...$............|
000b24c0  77 69 6d 70 74 00 00 00  50 3f 0b 00 46 fd ff ff  |wimpt...P?..F...|
000b24d0  92 f3 84 2f 50 02 00 00  13 01 00 00 00 00 00 00  |.../P...........|
000b24e0  77 69 6d 70 74 5f 00 00  dc 4f 0b 00 46 fd ff ff  |wimpt_...O..F...|
000b24f0  46 f5 84 2f 48 18 00 00  13 01 00 00 00 00 00 00  |F../H...........|
000b2500  57 69 6d 70 5f 00 00 00  78 39 0c 00 46 ff ff ff  |Wimp_...x9..F...|
000b2510  d6 c4 eb 24 69 02 00 00  13 00 00 00 00 00 00 00  |...$i...........|
000b2520  77 69 6e 00 e4 3b 0c 00  46 ff ff ff 57 45 4c 26  |win..;..F...WEL&|
000b2530  2e 02 00 00 13 00 00 00  00 00 00 00 57 69 6e 64  |............Wind|
000b2540  6f 77 00 00 14 3e 0c 00  46 fd ff ff 86 02 85 2f  |ow...>..F....../|
000b2550  c8 04 00 00 13 01 00 00  00 00 00 00 57 69 6e 64  |............Wind|
000b2560  6f 77 5f 00 8c 70 0c 00  46 fd ff ff 42 05 85 2f  |ow_..p..F...B../|
000b2570  70 03 00 00 13 01 00 00  00 00 00 00 77 69 6e 5f  |p...........win_|
000b2580  00 00 00 00 ec 88 0c 00  46 fd ff ff ee 06 85 2f  |........F....../|
000b2590  f0 02 00 00 13 01 00 00  00 00 00 00 77 5f 00 00  |............w_..|
000b25a0  44 41 54 41 74 01 00 00  44 65 73 6b 4c 69 62 3a  |DATAt...DeskLib:|
000b25b0  57 41 73 73 65 72 74 2e  68 0a 56 65 72 73 69 6f  |WAssert.h.Versio|
000b25c0  6e 3a 20 31 2e 30 31 20  28 31 39 20 4a 75 6c 20  |n: 1.01 (19 Jul |
000b25d0  31 39 39 34 29 0a 23 6c  69 6e 65 0a 54 68 69 73  |1994).#line.This|
000b25e0  20 68 65 61 64 65 72 20  69 73 20 74 68 65 20 57  | header is the W|
000b25f0  69 6d 70 20 76 65 72 73  69 6f 6e 20 6f 66 20 3c  |imp version of <|
000b2600  61 73 73 65 72 74 2e 68  3d 3e 61 73 73 65 72 74  |assert.h=>assert|
000b2610  3e 2e 0a 0a 49 74 20 64  65 63 6c 61 72 65 73 20  |>...It declares |
000b2620  6f 6e 65 20 66 75 6e 63  74 69 6f 6e 2c 20 61 73  |one function, as|
000b2630  73 65 72 74 2c 20 77 68  69 63 68 20 69 73 20 69  |sert, which is i|
000b2640  64 65 6e 74 69 63 61 6c  20 69 6e 20 75 73 65 20  |dentical in use |
000b2650  74 6f 20 74 68 65 20 41  4e 53 49 20 76 65 72 73  |to the ANSI vers|
000b2660  69 6f 6e 2e 0a 0a 54 68  69 73 20 68 61 73 20 61  |ion...This has a|
000b2670  63 74 75 61 6c 6c 79 20  62 65 65 6e 20 66 69 78  |ctually been fix|
000b2680  65 64 20 6e 6f 77 20 61  6e 64 20 74 68 65 20 66  |ed now and the f|
000b2690  75 6e 63 74 69 6f 6e 20  6f 6e 6c 79 20 77 6f 72  |unction only wor|
000b26a0  6b 73 20 69 66 20 74 68  65 20 6d 61 63 72 6f 20  |ks if the macro |
000b26b0  5f 44 45 42 55 47 20 69  73 20 64 65 66 69 6e 65  |_DEBUG is define|
000b26c0  64 20 77 68 65 6e 20 79  6f 75 20 69 6e 63 6c 75  |d when you inclu|
000b26d0  64 65 20 74 68 69 73 20  68 65 61 64 65 72 2c 20  |de this header, |
000b26e0  72 61 74 68 65 72 20 74  68 61 6e 20 74 68 65 20  |rather than the |
000b26f0  6f 70 70 6f 73 69 74 65  20 77 61 79 20 72 6f 75  |opposite way rou|
000b2700  6e 64 20 61 73 20 69 74  20 77 61 73 20 62 65 66  |nd as it was bef|
000b2710  6f 72 65 2e 44 49 52 24  28 00 00 00 28 00 00 00  |ore.DIR$(...(...|
000b2720  3c 27 0b 00 46 ff ff ff  46 93 c0 22 0d 01 00 00  |<'..F...F.."....|
000b2730  13 00 00 00 00 00 00 00  74 00 00 00 44 41 54 41  |........t...DATA|
000b2740  0d 01 00 00 77 63 68 61  72 5f 74 0a 54 68 65 20  |....wchar_t.The |
000b2750  74 79 70 65 20 7b 2f 7d  77 63 68 61 72 5f 74 7b  |type {/}wchar_t{|
000b2760  2f 7d 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |/} is defined in|
000b2770  20 3c 73 74 64 64 65 66  2e 68 3d 3e 73 74 64 64  | <stddef.h=>stdd|
000b2780  65 66 3e 2c 20 61 6e 64  20 3c 73 74 64 6c 69 62  |ef>, and <stdlib|
000b2790  2e 68 3d 3e 73 74 64 6c  69 62 3e 20 61 73 20 61  |.h=>stdlib> as a|
000b27a0  6e 20 6f 62 6a 65 63 74  20 63 61 70 61 62 6c 65  |n object capable|
000b27b0  20 6f 66 20 68 6f 6c 64  69 6e 67 20 64 69 73 74  | of holding dist|
000b27c0  69 6e 63 74 20 63 6f 64  65 73 20 66 6f 72 20 61  |inct codes for a|
000b27d0  6c 6c 20 6d 65 6d 62 65  72 20 6f 66 20 74 68 65  |ll member of the|
000b27e0  20 6c 61 72 67 65 73 74  20 65 78 74 65 6e 64 65  | largest extende|
000b27f0  64 20 63 68 61 72 61 63  74 65 72 20 73 75 70 70  |d character supp|
000b2800  6f 72 74 65 64 20 62 79  20 74 68 65 20 63 6f 6d  |orted by the com|
000b2810  70 69 6c 65 72 2e 20 49  6e 20 45 61 73 79 20 43  |piler. In Easy C|
000b2820  20 61 6e 64 20 44 65 73  6b 74 6f 70 20 43 20 69  | and Desktop C i|
000b2830  74 20 69 73 20 64 65 66  69 6e 65 64 20 61 73 20  |t is defined as |
000b2840  61 6e 20 2f 69 6e 74 2f  2e 00 00 00 44 41 54 41  |an /int/....DATA|
000b2850  45 02 00 00 77 63 73 74  6f 6d 62 73 0a 53 79 6e  |E...wcstombs.Syn|
000b2860  74 61 78 3a 09 3c 73 69  7a 65 5f 74 3e 20 77 63  |tax:.<size_t> wc|
000b2870  73 74 6f 6d 62 73 20 28  63 68 61 72 20 2a 73 2c  |stombs (char *s,|
000b2880  20 3c 77 63 68 61 72 5f  74 3e 20 2a 70 77 63 73  | <wchar_t> *pwcs|
000b2890  2c 20 73 69 7a 65 5f 74  20 6e 29 3b 0a 48 65 61  |, size_t n);.Hea|
000b28a0  64 65 72 3a 09 3c 73 74  64 6c 69 62 2e 68 3d 3e  |der:.<stdlib.h=>|
000b28b0  73 74 64 6c 69 62 3e 0a  0a 52 65 74 75 72 6e 73  |stdlib>..Returns|
000b28c0  3a 09 53 65 65 20 62 65  6c 6f 77 2e 0a 0a 43 6f  |:.See below...Co|
000b28d0  6e 76 65 72 74 73 20 61  20 73 65 71 75 65 6e 63  |nverts a sequenc|
000b28e0  65 20 6f 66 20 63 6f 64  65 73 20 74 68 61 74 20  |e of codes that |
000b28f0  63 6f 72 72 65 73 70 6f  6e 64 20 74 6f 20 6d 75  |correspond to mu|
000b2900  6c 74 69 62 79 74 65 20  63 68 61 72 61 63 74 65  |ltibyte characte|
000b2910  72 73 20 66 72 6f 6d 20  74 68 65 20 61 72 72 61  |rs from the arra|
000b2920  79 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 79 20  |y pointed to by |
000b2930  2f 70 77 63 73 2f 20 69  6e 74 6f 20 61 20 73 65  |/pwcs/ into a se|
000b2940  71 75 65 6e 63 65 20 6f  66 20 6d 75 6c 74 69 62  |quence of multib|
000b2950  79 74 65 20 63 68 61 72  61 63 74 65 72 73 20 69  |yte characters i|
000b2960  6e 74 6f 20 74 68 65 20  61 72 72 61 79 20 70 6f  |nto the array po|
000b2970  69 6e 74 65 64 20 74 6f  20 62 79 20 2f 73 2f 2c  |inted to by /s/,|
000b2980  20 73 74 6f 70 70 69 6e  67 20 69 66 20 61 20 6d  | stopping if a m|
000b2990  75 6c 74 69 62 79 74 65  20 63 68 61 72 61 63 74  |ultibyte charact|
000b29a0  65 72 20 77 6f 75 6c 64  20 65 78 63 65 65 64 20  |er would exceed |
000b29b0  74 68 65 20 6c 69 6d 69  74 20 6f 66 20 2f 6e 2f  |the limit of /n/|
000b29c0  20 74 6f 74 61 6c 20 62  79 74 65 73 20 6f 72 20  | total bytes or |
000b29d0  69 66 20 61 20 6e 75 6c  6c 20 63 68 61 72 61 63  |if a null charac|
000b29e0  74 65 72 20 69 73 20 73  74 6f 72 65 64 2e 20 45  |ter is stored. E|
000b29f0  61 63 68 20 63 6f 64 65  20 69 73 20 63 6f 6e 76  |ach code is conv|
000b2a00  65 72 74 65 64 20 61 73  20 69 66 20 62 79 20 61  |erted as if by a|
000b2a10  20 63 61 6c 6c 20 74 6f  20 74 68 65 20 3c 77 63  | call to the <wc|
000b2a20  74 6f 6d 62 3e 20 66 75  6e 63 74 69 6f 6e 2e 0a  |tomb> function..|
000b2a30  0a 49 66 20 61 6e 20 69  6e 76 61 6c 69 64 20 63  |.If an invalid c|
000b2a40  6f 64 65 20 69 73 20 66  6f 75 6e 64 2c 20 74 68  |ode is found, th|
000b2a50  69 73 20 72 65 74 75 72  6e 73 20 2d 31 2c 20 6f  |is returns -1, o|
000b2a60  74 68 65 72 77 69 73 65  20 69 74 20 72 65 74 75  |therwise it retu|
000b2a70  72 6e 73 20 74 68 65 20  6e 75 6d 62 65 72 20 6f  |rns the number o|
000b2a80  66 20 62 79 74 65 73 20  6d 6f 64 69 66 69 65 64  |f bytes modified|
000b2a90  2e 00 00 00 44 41 54 41  34 02 00 00 77 63 74 6f  |....DATA4...wcto|
000b2aa0  6d 62 0a 53 79 6e 74 61  78 3a 09 69 6e 74 20 77  |mb.Syntax:.int w|
000b2ab0  63 74 6f 6d 62 20 28 63  68 61 72 20 2a 73 2c 20  |ctomb (char *s, |
000b2ac0  3c 77 63 68 61 72 5f 74  3e 20 77 63 68 61 72 29  |<wchar_t> wchar)|
000b2ad0  3b 0a 48 65 61 64 65 72  3a 09 3c 73 74 64 6c 69  |;.Header:.<stdli|
000b2ae0  62 2e 68 3d 3e 73 74 64  6c 69 62 3e 0a 0a 52 65  |b.h=>stdlib>..Re|
000b2af0  74 75 72 6e 73 3a 09 53  65 65 20 62 65 6c 6f 77  |turns:.See below|
000b2b00  2e 0a 0a 49 66 20 2f 73  2f 20 69 73 20 6e 6f 74  |...If /s/ is not|
000b2b10  20 61 20 6e 75 6c 6c 20  70 6f 69 6e 74 65 72 2c  | a null pointer,|
000b2b20  20 74 68 65 6e 20 74 68  69 73 20 66 75 6e 63 74  | then this funct|
000b2b30  69 6f 6e 20 64 65 74 65  72 6d 69 6e 65 73 20 74  |ion determines t|
000b2b40  68 65 20 6e 75 6d 62 65  72 20 6f 66 20 62 79 74  |he number of byt|
000b2b50  65 73 20 6e 65 65 64 65  64 20 74 6f 20 72 65 70  |es needed to rep|
000b2b60  72 65 73 65 6e 74 20 74  68 65 20 6d 75 6c 74 69  |resent the multi|
000b2b70  62 79 74 65 20 63 68 61  72 61 63 74 65 72 20 63  |byte character c|
000b2b80  6f 72 72 65 73 70 6f 6e  64 69 6e 67 20 74 6f 20  |orresponding to |
000b2b90  74 68 65 20 63 6f 64 65  20 77 68 6f 73 65 20 76  |the code whose v|
000b2ba0  61 6c 75 65 20 69 73 20  2f 77 63 68 61 72 2f 20  |alue is /wchar/ |
000b2bb0  61 6e 64 20 73 74 6f 72  65 73 20 74 68 65 20 6d  |and stores the m|
000b2bc0  75 6c 74 69 62 79 74 65  20 63 68 61 72 61 63 74  |ultibyte charact|
000b2bd0  65 72 20 69 6e 20 2f 73  2f 2c 20 69 66 20 2f 73  |er in /s/, if /s|
000b2be0  2f 20 69 73 20 6e 6f 74  20 3c 4e 55 4c 4c 3e 2e  |/ is not <NULL>.|
000b2bf0  20 49 66 20 2f 73 2f 20  69 73 20 6e 6f 74 20 61  | If /s/ is not a|
000b2c00  20 76 61 6c 69 64 20 6d  75 6c 74 69 62 79 74 65  | valid multibyte|
000b2c10  20 63 68 61 72 61 63 74  65 72 20 69 74 20 72 65  | character it re|
000b2c20  74 75 72 6e 73 20 2d 31  2c 20 6f 74 68 65 72 77  |turns -1, otherw|
000b2c30  69 73 65 20 69 74 20 72  65 74 75 72 6e 73 20 74  |ise it returns t|
000b2c40  68 65 20 6c 65 6e 67 74  68 2e 0a 0a 49 66 20 2f  |he length...If /|
000b2c50  73 2f 20 69 73 20 61 20  6e 75 6c 6c 20 70 6f 69  |s/ is a null poi|
000b2c60  6e 74 65 72 2c 20 74 68  69 73 20 66 75 6e 63 74  |nter, this funct|
000b2c70  69 6f 6e 20 72 65 74 75  72 6e 73 20 7a 65 72 6f  |ion returns zero|
000b2c80  20 69 66 20 6d 75 6c 74  69 62 79 74 65 20 63 68  | if multibyte ch|
000b2c90  61 72 61 63 74 65 72 20  65 6e 63 6f 64 69 6e 67  |aracter encoding|
000b2ca0  73 20 64 6f 20 6e 6f 74  20 68 61 76 65 20 73 74  |s do not have st|
000b2cb0  61 74 65 2d 64 65 70 65  6e 64 65 6e 74 20 65 6e  |ate-dependent en|
000b2cc0  63 6f 64 69 6e 67 73 2e  44 41 54 41 0d 01 00 00  |codings.DATA....|
000b2cd0  77 65 72 72 2e 68 0a 54  68 69 73 20 68 65 61 64  |werr.h.This head|
000b2ce0  65 72 20 64 65 63 6c 61  72 65 73 20 6a 75 73 74  |er declares just|
000b2cf0  20 6f 6e 65 20 66 75 6e  63 74 69 6f 6e 3a 0a 0a  | one function:..|
000b2d00  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 77 65 72  |Syntax:.void wer|
000b2d10  72 20 28 69 6e 74 20 66  61 74 61 6c 2c 20 63 68  |r (int fatal, ch|
000b2d20  61 72 20 2a 66 6f 72 6d  61 74 2c 20 2e 2e 2e 29  |ar *format, ...)|
000b2d30  3b 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |;..This function|
000b2d40  20 72 65 70 6f 72 74 73  20 61 6e 20 65 72 72 6f  | reports an erro|
000b2d50  72 20 74 6f 20 74 68 65  20 75 73 65 72 2c 20 75  |r to the user, u|
000b2d60  6e 64 65 72 20 63 6f 6e  74 72 6f 6c 20 6f 66 20  |nder control of |
000b2d70  74 68 65 20 3c 66 6f 72  6d 61 74 20 73 74 72 69  |the <format stri|
000b2d80  6e 67 3d 3e 70 66 6f 72  6d 5f 3e 2c 20 2f 66 6f  |ng=>pform_>, /fo|
000b2d90  72 6d 61 74 2f 2e 20 49  66 20 2f 66 61 74 61 6c  |rmat/. If /fatal|
000b2da0  2f 20 69 73 20 6e 6f 6e  2d 7a 65 72 6f 20 74 68  |/ is non-zero th|
000b2db0  65 6e 20 74 68 65 20 70  72 6f 67 72 61 6d 20 65  |en the program e|
000b2dc0  78 69 74 73 20 61 66 74  65 72 20 74 68 65 20 65  |xits after the e|
000b2dd0  72 72 6f 72 2e 00 00 00  44 41 54 41 6b 02 00 00  |rror....DATAk...|
000b2de0  77 68 69 6c 65 0a 54 68  69 73 20 63 6f 6d 6d 61  |while.This comma|
000b2df0  6e 64 20 64 65 66 69 6e  65 73 20 61 20 2f 77 68  |nd defines a /wh|
000b2e00  69 6c 65 2f 20 6c 6f 6f  70 2e 20 49 74 20 69 73  |ile/ loop. It is|
000b2e10  20 61 6c 73 6f 20 75 73  65 64 20 61 73 20 70 61  | also used as pa|
000b2e20  72 74 20 6f 66 20 61 20  3c 64 6f 3e 20 6c 6f 6f  |rt of a <do> loo|
000b2e30  70 2e 20 41 20 2f 77 68  69 6c 65 2f 20 6c 6f 6f  |p. A /while/ loo|
000b2e40  70 20 68 61 73 20 74 68  65 20 67 65 6e 65 72 61  |p has the genera|
000b2e50  6c 20 66 6f 72 6d 3a 0a  0a 7b 66 43 6f 64 65 3b  |l form:..{fCode;|
000b2e60  61 6c 69 67 6e 20 63 65  6e 74 72 65 7d 77 68 69  |align centre}whi|
000b2e70  6c 65 20 28 5c 3c 63 6f  6e 64 69 74 69 6f 6e 3e  |le (\<condition>|
000b2e80  29 20 5c 3c 73 74 61 74  65 6d 65 6e 74 3e 3b 7b  |) \<statement>;{|
000b2e90  66 3b 61 6c 69 67 6e 7d  0a 0a 5c 3c 63 6f 6e 64  |f;align}..\<cond|
000b2ea0  69 74 69 6f 6e 3e 09 69  73 20 65 76 61 6c 75 61  |ition>.is evalua|
000b2eb0  74 65 64 20 65 61 63 68  20 74 69 6d 65 2c 20 61  |ted each time, a|
000b2ec0  6e 64 20 69 66 20 69 74  20 65 76 61 6c 75 61 74  |nd if it evaluat|
000b2ed0  65 73 20 74 6f 20 61 20  6e 6f 6e 2d 7a 65 72 6f  |es to a non-zero|
000b2ee0  20 76 61 6c 75 65 2c 20  69 65 20 69 73 20 74 72  | value, ie is tr|
000b2ef0  75 65 2c 20 74 68 65 20  5c 3c 73 74 61 74 65 6d  |ue, the \<statem|
000b2f00  65 6e 74 3e 20 69 73 20  65 78 65 63 75 74 65 64  |ent> is executed|
000b2f10  2e 20 54 68 69 73 20 72  65 70 65 61 74 65 64 20  |. This repeated |
000b2f20  75 6e 74 69 6c 20 74 68  65 20 63 6f 6e 64 69 74  |until the condit|
000b2f30  69 6f 6e 20 69 73 20 66  61 6c 73 65 2e 0a 0a 5c  |ion is false...\|
000b2f40  3c 73 74 61 74 65 6d 65  6e 74 3e 09 69 73 20 74  |<statement>.is t|
000b2f50  68 65 20 63 6f 6d 6d 61  6e 64 20 65 78 65 63 75  |he command execu|
000b2f60  74 65 64 20 77 69 74 68  69 6e 20 74 68 65 20 6c  |ted within the l|
000b2f70  6f 6f 70 2e 20 49 74 20  63 61 6e 20 62 65 20 61  |oop. It can be a|
000b2f80  20 63 6f 6d 70 6f 75 6e  64 20 73 74 61 74 65 6d  | compound statem|
000b2f90  65 6e 74 20 69 65 20 73  65 76 65 72 61 6c 20 73  |ent ie several s|
000b2fa0  74 61 74 65 6d 65 6e 74  73 20 65 6e 63 6c 6f 73  |tatements enclos|
000b2fb0  65 64 20 69 6e 20 62 72  61 63 65 73 20 5c 7b 7d  |ed in braces \{}|
000b2fc0  2c 20 69 6e 20 77 68 69  63 68 20 63 61 73 65 20  |, in which case |
000b2fd0  74 68 65 72 65 20 69 73  20 6e 6f 20 66 69 6e 61  |there is no fina|
000b2fe0  6c 20 73 65 6d 69 63 6f  6c 6f 6e 2e 0a 0a 65 67  |l semicolon...eg|
000b2ff0  20 66 6f 72 20 61 6e 20  69 6e 66 69 6e 69 74 65  | for an infinite|
000b3000  20 6c 6f 6f 70 3a 0a 0a  7b 66 43 6f 64 65 3b 61  | loop:..{fCode;a|
000b3010  6c 69 67 6e 20 63 65 6e  74 72 65 7d 77 68 69 6c  |lign centre}whil|
000b3020  65 20 28 31 29 20 3c 70  75 74 73 3e 28 22 49 6e  |e (1) <puts>("In|
000b3030  66 69 6e 69 74 65 21 22  29 3b 7b 66 3b 61 6c 69  |finite!");{f;ali|
000b3040  67 6e 7d 00 44 41 54 41  bf 01 00 00 44 65 73 6b  |gn}.DATA....Desk|
000b3050  4c 69 62 3a 57 69 6d 70  2e 68 0a 56 65 72 73 69  |Lib:Wimp.h.Versi|
000b3060  6f 6e 3a 20 31 2e 31 32  20 28 32 36 20 4a 75 6e  |on: 1.12 (26 Jun|
000b3070  20 31 39 39 33 29 0a 23  6c 69 6e 65 0a 54 68 69  | 1993).#line.Thi|
000b3080  73 20 68 65 61 64 65 72  20 64 65 66 69 6e 65 73  |s header defines|
000b3090  20 4c 4f 54 53 20 6f 66  20 74 79 70 65 73 20 66  | LOTS of types f|
000b30a0  6f 72 20 68 61 6e 64 6c  69 6e 67 20 74 68 65 20  |or handling the |
000b30b0  57 69 6d 70 2e 0a 0a 23  54 61 62 6c 65 20 36 20  |Wimp...#Table 6 |
000b30c0  32 33 0a 3c 57 69 6d 70  20 63 6f 6c 6f 75 72 73  |23.<Wimp colours|
000b30d0  2f 70 61 6c 65 74 74 65  73 3d 3e 77 5f 63 6f 6c  |/palettes=>w_col|
000b30e0  70 61 6c 5f 3e 0a 3c 57  69 6d 70 20 69 63 6f 6e  |pal_>.<Wimp icon|
000b30f0  20 64 61 74 61 3d 3e 77  5f 69 63 6f 6e 64 61 74  | data=>w_icondat|
000b3100  5f 3e 0a 3c 57 69 6e 64  6f 77 20 64 61 74 61 3d  |_>.<Window data=|
000b3110  3e 77 5f 77 69 6e 64 61  74 5f 3e 0a 3c 4d 6f 75  |>w_windat_>.<Mou|
000b3120  73 65 2f 70 6f 69 6e 74  65 72 20 69 6e 66 6f 3d  |se/pointer info=|
000b3130  3e 77 5f 6d 6f 75 73 65  69 6e 66 5f 3e 0a 3c 57  |>w_mouseinf_>.<W|
000b3140  69 6d 70 20 64 72 61 67  20 64 61 74 61 20 3d 3e  |imp drag data =>|
000b3150  77 5f 64 72 61 67 64 61  74 5f 3e 0a 3c 57 69 6d  |w_dragdat_>.<Wim|
000b3160  70 20 65 72 72 6f 72 73  3d 3e 77 5f 77 69 6d 70  |p errors=>w_wimp|
000b3170  65 72 72 5f 3e 0a 3c 4d  65 6e 75 73 3d 3e 77 5f  |err_>.<Menus=>w_|
000b3180  6d 65 6e 75 73 5f 3e 0a  3c 43 61 72 65 74 2f 6b  |menus_>.<Caret/k|
000b3190  65 79 70 72 65 73 73 20  64 61 74 61 3d 3e 77 5f  |eypress data=>w_|
000b31a0  63 61 72 65 74 5f 3e 0a  3c 57 69 6d 70 20 6d 65  |caret_>.<Wimp me|
000b31b0  73 73 61 67 65 20 64 61  74 61 3d 3e 77 5f 6d 65  |ssage data=>w_me|
000b31c0  73 73 64 61 74 5f 3e 0a  3c 57 69 6d 70 20 65 76  |ssdat_>.<Wimp ev|
000b31d0  65 6e 74 73 3d 3e 77 5f  65 76 65 6e 74 73 5f 3e  |ents=>w_events_>|
000b31e0  0a 3c 4d 69 73 63 65 6c  6c 61 6e 65 6f 75 73 3d  |.<Miscellaneous=|
000b31f0  3e 77 5f 6d 69 73 63 5f  3e 0a 23 45 6e 64 54 61  |>w_misc_>.#EndTa|
000b3200  62 6c 65 00 44 41 54 41  af 01 00 00 54 69 6d 73  |ble.DATA....Tims|
000b3210  4c 69 62 3a 57 69 6d 70  45 78 74 2e 68 0a 23 70  |Lib:WimpExt.h.#p|
000b3220  61 72 65 6e 74 20 72 6f  5f 74 6c 69 62 5f 0a 54  |arent ro_tlib_.T|
000b3230  68 69 73 20 68 65 61 64  65 72 20 64 65 66 69 6e  |his header defin|
000b3240  65 73 20 66 6f 75 72 20  66 75 6e 63 74 69 6f 6e  |es four function|
000b3250  2d 6c 69 6b 65 20 6d 61  63 72 6f 73 20 66 6f 72  |-like macros for|
000b3260  20 61 63 63 65 73 73 69  6e 67 20 73 6f 6d 65 20  | accessing some |
000b3270  57 69 6d 70 45 78 74 65  6e 73 69 6f 6e 20 53 57  |WimpExtension SW|
000b3280  49 73 2e 0a 0a 46 75 6e  63 74 69 6f 6e 2d 6c 69  |Is...Function-li|
000b3290  6b 65 20 6d 61 63 72 6f  73 3a 0a 0a 23 69 6e 64  |ke macros:..#ind|
000b32a0  65 6e 74 20 34 0a 23 74  61 62 6c 65 20 63 6f 6c  |ent 4.#table col|
000b32b0  75 6d 6e 73 20 32 0a 3c  57 69 6d 70 45 78 74 5f  |umns 2.<WimpExt_|
000b32c0  49 6e 69 74 69 61 6c 69  73 65 3e 0a 3c 57 69 6d  |Initialise>.<Wim|
000b32d0  70 45 78 74 5f 43 6c 6f  73 65 64 6f 77 6e 3e 0a  |pExt_Closedown>.|
000b32e0  3c 57 69 6d 70 45 78 74  5f 52 65 64 72 61 77 3e  |<WimpExt_Redraw>|
000b32f0  0a 3c 57 69 6d 70 45 78  74 5f 50 6c 6f 74 42 6f  |.<WimpExt_PlotBo|
000b3300  72 64 65 72 3e 0a 23 65  6e 64 74 61 62 6c 65 0a  |rder>.#endtable.|
000b3310  23 69 6e 64 65 6e 74 0a  0a 57 69 6d 70 45 78 74  |#indent..WimpExt|
000b3320  65 6e 73 69 6f 6e 20 69  73 20 61 20 50 44 20 6d  |ension is a PD m|
000b3330  6f 64 75 6c 65 20 70 72  6f 64 75 63 65 64 20 62  |odule produced b|
000b3340  79 20 44 6f 67 67 79 53  6f 66 74 20 77 68 69 63  |y DoggySoft whic|
000b3350  68 20 70 72 6f 76 69 64  65 73 20 6d 61 6e 79 20  |h provides many |
000b3360  75 73 65 66 75 6c 20 66  75 6e 63 74 69 6f 6e 73  |useful functions|
000b3370  20 66 6f 72 20 57 69 6d  70 20 70 72 6f 67 72 61  | for Wimp progra|
000b3380  6d 6d 69 6e 67 2e 20 48  6f 77 65 76 65 72 2c 20  |mming. However, |
000b3390  57 69 6d 70 45 78 74 65  6e 73 69 6f 6e 20 32 20  |WimpExtension 2 |
000b33a0  69 73 20 6e 6f 77 20 61  76 61 69 6c 61 62 6c 65  |is now available|
000b33b0  2e 2e 2e 00 44 49 52 24  98 00 00 00 98 00 00 00  |....DIR$........|
000b33c0  4c 34 0b 00 46 ff ff ff  07 72 58 26 13 01 00 00  |L4..F....rX&....|
000b33d0  13 00 00 00 00 00 00 00  43 6c 6f 73 65 64 6f 77  |........Closedow|
000b33e0  6e 00 00 00 60 35 0b 00  46 ff ff ff d5 6d 58 26  |n...`5..F....mX&|
000b33f0  20 01 00 00 13 00 00 00  00 00 00 00 49 6e 69 74  | ...........Init|
000b3400  69 61 6c 69 73 65 00 00  80 36 0b 00 46 ff ff ff  |ialise...6..F...|
000b3410  9c 7a 58 26 39 01 00 00  13 00 00 00 00 00 00 00  |.zX&9...........|
000b3420  50 6c 6f 74 42 6f 72 64  65 72 00 00 bc 37 0b 00  |PlotBorder...7..|
000b3430  46 ff ff ff da 75 58 26  22 01 00 00 13 00 00 00  |F....uX&".......|
000b3440  00 00 00 00 52 65 64 72  61 77 00 00 44 41 54 41  |....Redraw..DATA|
000b3450  13 01 00 00 57 69 6d 70  45 78 74 5f 43 6c 6f 73  |....WimpExt_Clos|
000b3460  65 64 6f 77 6e 0a 53 79  6e 74 61 78 3a 09 3c 6f  |edown.Syntax:.<o|
000b3470  73 5f 65 72 72 6f 72 3e  20 2a 57 69 6d 70 45 78  |s_error> *WimpEx|
000b3480  74 5f 43 6c 6f 73 65 64  6f 77 6e 20 28 76 6f 69  |t_Closedown (voi|
000b3490  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 54 69 6d  |d);.Header:.<Tim|
000b34a0  73 4c 69 62 3a 57 69 6d  70 45 78 74 2e 68 3d 3e  |sLib:WimpExt.h=>|
000b34b0  57 69 6d 70 45 78 74 3e  0a 0a 52 65 74 75 72 6e  |WimpExt>..Return|
000b34c0  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000b34d0  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000b34e0  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000b34f0  6e 63 74 69 6f 6e 20 63  61 6c 6c 73 20 74 68 65  |nction calls the|
000b3500  20 53 57 49 20 57 69 6d  70 45 78 74 5f 43 6c 6f  | SWI WimpExt_Clo|
000b3510  73 65 64 6f 77 6e 2e 20  46 6f 72 20 6d 6f 72 65  |sedown. For more|
000b3520  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 73 65 65  | information see|
000b3530  20 74 68 65 20 64 6f 63  75 6d 65 6e 74 61 74 69  | the documentati|
000b3540  6f 6e 20 70 72 6f 76 69  64 65 64 20 77 69 74 68  |on provided with|
000b3550  20 57 69 6d 70 45 78 74  65 6e 73 69 6f 6e 2e 00  | WimpExtension..|
000b3560  44 41 54 41 20 01 00 00  57 69 6d 70 45 78 74 5f  |DATA ...WimpExt_|
000b3570  49 6e 69 74 69 61 6c 69  73 65 0a 53 79 6e 74 61  |Initialise.Synta|
000b3580  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 57  |x:.<os_error> *W|
000b3590  69 6d 70 45 78 74 5f 49  6e 69 74 69 61 6c 69 73  |impExt_Initialis|
000b35a0  65 20 28 75 6e 73 69 67  6e 65 64 20 66 6c 61 67  |e (unsigned flag|
000b35b0  73 29 3b 0a 48 65 61 64  65 72 3a 09 3c 54 69 6d  |s);.Header:.<Tim|
000b35c0  73 4c 69 62 3a 57 69 6d  70 45 78 74 2e 68 3d 3e  |sLib:WimpExt.h=>|
000b35d0  57 69 6d 70 45 78 74 3e  0a 0a 52 65 74 75 72 6e  |WimpExt>..Return|
000b35e0  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000b35f0  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000b3600  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000b3610  6e 63 74 69 6f 6e 20 63  61 6c 6c 73 20 74 68 65  |nction calls the|
000b3620  20 53 57 49 20 57 69 6d  70 45 78 74 5f 49 6e 69  | SWI WimpExt_Ini|
000b3630  74 69 61 6c 69 73 65 2e  20 46 6f 72 20 6d 6f 72  |tialise. For mor|
000b3640  65 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 73 65  |e information se|
000b3650  65 20 74 68 65 20 64 6f  63 75 6d 65 6e 74 61 74  |e the documentat|
000b3660  69 6f 6e 20 70 72 6f 76  69 64 65 64 20 77 69 74  |ion provided wit|
000b3670  68 20 57 69 6d 70 45 78  74 65 6e 73 69 6f 6e 2e  |h WimpExtension.|
000b3680  44 41 54 41 39 01 00 00  57 69 6d 70 45 78 74 5f  |DATA9...WimpExt_|
000b3690  50 6c 6f 74 42 6f 72 64  65 72 0a 53 79 6e 74 61  |PlotBorder.Synta|
000b36a0  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 57  |x:.<os_error> *W|
000b36b0  69 6d 70 45 78 74 5f 50  6c 6f 74 42 6f 72 64 65  |impExt_PlotBorde|
000b36c0  72 20 28 3c 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |r (<window_handl|
000b36d0  65 3e 20 77 69 6e 2c 20  3c 69 63 6f 6e 5f 62 6c  |e> win, <icon_bl|
000b36e0  6f 63 6b 3e 20 2a 69 63  6f 6e 29 3b 0a 48 65 61  |ock> *icon);.Hea|
000b36f0  64 65 72 3a 09 3c 54 69  6d 73 4c 69 62 3a 57 69  |der:.<TimsLib:Wi|
000b3700  6d 70 45 78 74 2e 68 3d  3e 57 69 6d 70 45 78 74  |mpExt.h=>WimpExt|
000b3710  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000b3720  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000b3730  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000b3740  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000b3750  63 61 6c 6c 73 20 74 68  65 20 53 57 49 20 57 69  |calls the SWI Wi|
000b3760  6d 70 45 78 74 5f 50 6c  6f 74 42 6f 72 64 65 72  |mpExt_PlotBorder|
000b3770  2e 20 46 6f 72 20 6d 6f  72 65 20 69 6e 66 6f 72  |. For more infor|
000b3780  6d 61 74 69 6f 6e 20 73  65 65 20 74 68 65 20 64  |mation see the d|
000b3790  6f 63 75 6d 65 6e 74 61  74 69 6f 6e 20 70 72 6f  |ocumentation pro|
000b37a0  76 69 64 65 64 20 77 69  74 68 20 57 69 6d 70 45  |vided with WimpE|
000b37b0  78 74 65 6e 73 69 6f 6e  2e 00 00 00 44 41 54 41  |xtension....DATA|
000b37c0  22 01 00 00 57 69 6d 70  45 78 74 5f 52 65 64 72  |"...WimpExt_Redr|
000b37d0  61 77 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |aw.Syntax:.<os_e|
000b37e0  72 72 6f 72 3e 20 2a 57  69 6d 70 45 78 74 5f 52  |rror> *WimpExt_R|
000b37f0  65 64 72 61 77 20 28 3c  77 69 6e 64 6f 77 5f 72  |edraw (<window_r|
000b3800  65 64 72 61 77 62 6c 6f  63 6b 3e 20 2a 72 65 64  |edrawblock> *red|
000b3810  72 61 77 29 3b 0a 48 65  61 64 65 72 3a 09 3c 54  |raw);.Header:.<T|
000b3820  69 6d 73 4c 69 62 3a 57  69 6d 70 45 78 74 2e 68  |imsLib:WimpExt.h|
000b3830  3d 3e 57 69 6d 70 45 78  74 3e 0a 0a 52 65 74 75  |=>WimpExt>..Retu|
000b3840  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000b3850  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
000b3860  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
000b3870  66 75 6e 63 74 69 6f 6e  20 63 61 6c 6c 73 20 74  |function calls t|
000b3880  68 65 20 53 57 49 20 57  69 6d 70 45 78 74 5f 52  |he SWI WimpExt_R|
000b3890  65 64 72 61 77 2e 20 46  6f 72 20 6d 6f 72 65 20  |edraw. For more |
000b38a0  69 6e 66 6f 72 6d 61 74  69 6f 6e 20 73 65 65 20  |information see |
000b38b0  74 68 65 20 64 6f 63 75  6d 65 6e 74 61 74 69 6f  |the documentatio|
000b38c0  6e 20 70 72 6f 76 69 64  65 64 20 77 69 74 68 20  |n provided with |
000b38d0  57 69 6d 70 45 78 74 65  6e 73 69 6f 6e 2e 00 00  |WimpExtension...|
000b38e0  44 41 54 41 e7 04 00 00  44 65 73 6b 4c 69 62 3a  |DATA....DeskLib:|
000b38f0  57 69 6d 70 53 57 49 73  2e 68 0a 56 65 72 73 69  |WimpSWIs.h.Versi|
000b3900  6f 6e 3a 20 31 2e 30 37  20 28 32 32 20 4f 63 74  |on: 1.07 (22 Oct|
000b3910  20 31 39 39 34 29 0a 23  6c 69 6e 65 0a 54 68 69  | 1994).#line.Thi|
000b3920  73 20 68 65 61 64 65 72  20 64 65 63 6c 61 72 65  |s header declare|
000b3930  73 20 66 75 6e 63 74 69  6f 6e 73 20 66 6f 72 20  |s functions for |
000b3940  6c 6f 77 2d 6c 65 76 65  6c 20 68 61 6e 64 6c 69  |low-level handli|
000b3950  6e 67 20 6f 66 20 74 68  65 20 57 69 6d 70 2e 20  |ng of the Wimp. |
000b3960  46 6f 72 20 6d 6f 73 74  20 66 65 61 74 75 72 65  |For most feature|
000b3970  73 2c 20 61 6e 20 65 61  73 69 65 72 2d 74 6f 2d  |s, an easier-to-|
000b3980  75 73 65 20 68 69 67 68  2d 6c 65 76 65 6c 20 66  |use high-level f|
000b3990  75 6e 63 74 69 6f 6e 20  69 73 20 61 76 61 69 6c  |unction is avail|
000b39a0  61 62 6c 65 2e 20 54 68  65 73 65 20 63 61 6c 6c  |able. These call|
000b39b0  73 20 61 72 65 20 65 71  75 69 76 61 6c 65 6e 74  |s are equivalent|
000b39c0  20 74 6f 20 74 68 65 20  3c 53 57 49 73 3d 3e 53  | to the <SWIs=>S|
000b39d0  57 49 3a 57 69 6d 70 5f  3e 20 6f 66 20 74 68 65  |WI:Wimp_> of the|
000b39e0  20 73 61 6d 65 20 6e 61  6d 65 2e 0a 0a 23 54 61  | same name...#Ta|
000b39f0  62 6c 65 20 31 37 20 32  32 0a 3c 57 69 6d 70 5f  |ble 17 22.<Wimp_|
000b3a00  49 6e 69 74 69 61 6c 69  73 65 3e 0a 3c 57 69 6d  |Initialise>.<Wim|
000b3a10  70 5f 43 72 65 61 74 65  57 69 6e 64 6f 77 3e 0a  |p_CreateWindow>.|
000b3a20  3c 57 69 6d 70 5f 43 72  65 61 74 65 49 63 6f 6e  |<Wimp_CreateIcon|
000b3a30  3e 0a 3c 57 69 6d 70 5f  44 65 6c 65 74 65 57 69  |>.<Wimp_DeleteWi|
000b3a40  6e 64 6f 77 3e 0a 3c 57  69 6d 70 5f 44 65 6c 65  |ndow>.<Wimp_Dele|
000b3a50  74 65 49 63 6f 6e 3e 0a  3c 57 69 6d 70 5f 4f 70  |teIcon>.<Wimp_Op|
000b3a60  65 6e 57 69 6e 64 6f 77  3e 0a 3c 57 69 6d 70 5f  |enWindow>.<Wimp_|
000b3a70  43 6c 6f 73 65 57 69 6e  64 6f 77 3e 0a 3c 57 69  |CloseWindow>.<Wi|
000b3a80  6d 70 5f 50 6f 6c 6c 3e  0a 3c 57 69 6d 70 5f 50  |mp_Poll>.<Wimp_P|
000b3a90  6f 6c 6c 33 3e 0a 3c 57  69 6d 70 5f 52 65 64 72  |oll3>.<Wimp_Redr|
000b3aa0  61 77 57 69 6e 64 6f 77  3e 0a 3c 57 69 6d 70 5f  |awWindow>.<Wimp_|
000b3ab0  55 70 64 61 74 65 57 69  6e 64 6f 77 3e 0a 3c 57  |UpdateWindow>.<W|
000b3ac0  69 6d 70 5f 47 65 74 52  65 63 74 61 6e 67 6c 65  |imp_GetRectangle|
000b3ad0  3e 0a 3c 57 69 6d 70 5f  47 65 74 57 69 6e 64 6f  |>.<Wimp_GetWindo|
000b3ae0  77 53 74 61 74 65 3e 0a  3c 57 69 6d 70 5f 47 65  |wState>.<Wimp_Ge|
000b3af0  74 57 69 6e 64 6f 77 49  6e 66 6f 3e 0a 3c 57 69  |tWindowInfo>.<Wi|
000b3b00  6d 70 5f 53 65 74 49 63  6f 6e 53 74 61 74 65 3e  |mp_SetIconState>|
000b3b10  0a 3c 57 69 6d 70 5f 47  65 74 49 63 6f 6e 53 74  |.<Wimp_GetIconSt|
000b3b20  61 74 65 3e 0a 3c 57 69  6d 70 5f 47 65 74 50 6f  |ate>.<Wimp_GetPo|
000b3b30  69 6e 74 65 72 49 6e 66  6f 3e 0a 3c 57 69 6d 70  |interInfo>.<Wimp|
000b3b40  5f 44 72 61 67 42 6f 78  3e 0a 3c 57 69 6d 70 5f  |_DragBox>.<Wimp_|
000b3b50  46 6f 72 63 65 52 65 64  72 61 77 3e 0a 3c 57 69  |ForceRedraw>.<Wi|
000b3b60  6d 70 5f 53 65 74 43 61  72 65 74 50 6f 73 69 74  |mp_SetCaretPosit|
000b3b70  69 6f 6e 3e 0a 3c 57 69  6d 70 5f 47 65 74 43 61  |ion>.<Wimp_GetCa|
000b3b80  72 65 74 50 6f 73 69 74  69 6f 6e 3e 0a 3c 57 69  |retPosition>.<Wi|
000b3b90  6d 70 5f 43 72 65 61 74  65 4d 65 6e 75 3e 0a 3c  |mp_CreateMenu>.<|
000b3ba0  57 69 6d 70 5f 44 65 63  6f 64 65 4d 65 6e 75 3e  |Wimp_DecodeMenu>|
000b3bb0  0a 3c 57 69 6d 70 5f 57  68 69 63 68 49 63 6f 6e  |.<Wimp_WhichIcon|
000b3bc0  3e 0a 3c 57 69 6d 70 5f  53 65 74 45 78 74 65 6e  |>.<Wimp_SetExten|
000b3bd0  74 3e 0a 3c 57 69 6d 70  5f 53 65 74 50 6f 69 6e  |t>.<Wimp_SetPoin|
000b3be0  74 65 72 53 68 61 70 65  3e 0a 3c 57 69 6d 70 5f  |terShape>.<Wimp_|
000b3bf0  4f 70 65 6e 54 65 6d 70  6c 61 74 65 3e 0a 3c 57  |OpenTemplate>.<W|
000b3c00  69 6d 70 5f 43 6c 6f 73  65 54 65 6d 70 6c 61 74  |imp_CloseTemplat|
000b3c10  65 3e 0a 3c 57 69 6d 70  5f 4c 6f 61 64 54 65 6d  |e>.<Wimp_LoadTem|
000b3c20  70 6c 61 74 65 3e 0a 3c  57 69 6d 70 5f 50 72 6f  |plate>.<Wimp_Pro|
000b3c30  63 65 73 73 4b 65 79 3e  0a 3c 57 69 6d 70 5f 43  |cessKey>.<Wimp_C|
000b3c40  6c 6f 73 65 44 6f 77 6e  3e 0a 3c 57 69 6d 70 5f  |loseDown>.<Wimp_|
000b3c50  53 74 61 72 74 54 61 73  6b 3e 0a 3c 57 69 6d 70  |StartTask>.<Wimp|
000b3c60  5f 52 65 70 6f 72 74 45  72 72 6f 72 3e 0a 3c 57  |_ReportError>.<W|
000b3c70  69 6d 70 5f 47 65 74 57  69 6e 64 6f 77 4f 75 74  |imp_GetWindowOut|
000b3c80  6c 69 6e 65 3e 0a 3c 57  69 6d 70 5f 50 6f 6c 6c  |line>.<Wimp_Poll|
000b3c90  49 64 6c 65 3e 0a 3c 57  69 6d 70 5f 50 6f 6c 6c  |Idle>.<Wimp_Poll|
000b3ca0  49 64 6c 65 33 3e 0a 3c  57 69 6d 70 5f 50 6c 6f  |Idle3>.<Wimp_Plo|
000b3cb0  74 49 63 6f 6e 3e 0a 3c  57 69 6d 70 5f 53 65 74  |tIcon>.<Wimp_Set|
000b3cc0  4d 6f 64 65 3e 0a 3c 57  69 6d 70 5f 53 65 74 50  |Mode>.<Wimp_SetP|
000b3cd0  61 6c 65 74 74 65 3e 0a  3c 57 69 6d 70 5f 52 65  |alette>.<Wimp_Re|
000b3ce0  61 64 50 61 6c 65 74 74  65 3e 0a 3c 57 69 6d 70  |adPalette>.<Wimp|
000b3cf0  5f 53 65 74 43 6f 6c 6f  75 72 3e 0a 3c 57 69 6d  |_SetColour>.<Wim|
000b3d00  70 5f 53 65 6e 64 4d 65  73 73 61 67 65 3e 0a 3c  |p_SendMessage>.<|
000b3d10  57 69 6d 70 5f 43 72 65  61 74 65 53 75 62 4d 65  |Wimp_CreateSubMe|
000b3d20  6e 75 3e 0a 3c 57 69 6d  70 5f 53 70 72 69 74 65  |nu>.<Wimp_Sprite|
000b3d30  4f 70 3e 0a 3c 57 69 6d  70 5f 42 61 73 65 4f 66  |Op>.<Wimp_BaseOf|
000b3d40  53 70 72 69 74 65 73 3e  0a 3c 57 69 6d 70 5f 42  |Sprites>.<Wimp_B|
000b3d50  6c 6f 63 6b 43 6f 70 79  3e 0a 3c 57 69 6d 70 5f  |lockCopy>.<Wimp_|
000b3d60  53 6c 6f 74 53 69 7a 65  3e 0a 3c 57 69 6d 70 5f  |SlotSize>.<Wimp_|
000b3d70  52 65 61 64 50 69 78 54  72 61 6e 73 3e 0a 3c 57  |ReadPixTrans>.<W|
000b3d80  69 6d 70 5f 43 6f 6d 6d  61 6e 64 57 69 6e 64 6f  |imp_CommandWindo|
000b3d90  77 3e 0a 3c 57 69 6d 70  5f 54 72 61 6e 73 66 65  |w>.<Wimp_Transfe|
000b3da0  72 42 6c 6f 63 6b 3e 0a  3c 57 69 6d 70 5f 53 65  |rBlock>.<Wimp_Se|
000b3db0  74 46 6f 6e 74 43 6f 6c  6f 75 72 73 3e 0a 23 45  |tFontColours>.#E|
000b3dc0  6e 64 54 61 62 6c 65 00  44 41 54 41 88 01 00 00  |ndTable.DATA....|
000b3dd0  77 69 6d 70 74 2e 68 0a  54 68 69 73 20 68 65 61  |wimpt.h.This hea|
000b3de0  64 65 72 20 64 65 63 6c  61 72 65 73 20 66 75 6e  |der declares fun|
000b3df0  63 74 69 6f 6e 73 20 66  6f 72 20 6c 6f 77 2d 6c  |ctions for low-l|
000b3e00  65 76 65 6c 20 57 69 6d  70 20 68 61 6e 64 6c 69  |evel Wimp handli|
000b3e10  6e 67 2e 0a 0a 46 75 6e  63 74 69 6f 6e 73 3a 0a  |ng...Functions:.|
000b3e20  0a 23 54 61 62 6c 65 20  39 20 32 31 0a 3c 77 69  |.#Table 9 21.<wi|
000b3e30  6d 70 74 5f 62 70 70 3e  0a 3c 77 69 6d 70 74 5f  |mpt_bpp>.<wimpt_|
000b3e40  63 68 65 63 6b 6d 6f 64  65 3e 0a 3c 77 69 6d 70  |checkmode>.<wimp|
000b3e50  74 5f 63 6f 6d 70 6c 61  69 6e 3e 0a 3c 77 69 6d  |t_complain>.<wim|
000b3e60  70 74 5f 64 78 3e 0a 3c  77 69 6d 70 74 5f 64 79  |pt_dx>.<wimpt_dy|
000b3e70  3e 0a 3c 77 69 6d 70 74  5f 66 61 6b 65 5f 65 76  |>.<wimpt_fake_ev|
000b3e80  65 6e 74 3e 0a 3c 77 69  6d 70 74 5f 66 6f 72 63  |ent>.<wimpt_forc|
000b3e90  65 72 65 64 72 61 77 3e  0a 3c 77 69 6d 70 74 5f  |eredraw>.<wimpt_|
000b3ea0  69 6e 69 74 3e 0a 3c 77  69 6d 70 74 5f 6c 61 73  |init>.<wimpt_las|
000b3eb0  74 5f 65 76 65 6e 74 3e  0a 3c 77 69 6d 70 74 5f  |t_event>.<wimpt_|
000b3ec0  6c 61 73 74 5f 65 76 65  6e 74 5f 77 61 73 5f 61  |last_event_was_a|
000b3ed0  5f 6b 65 79 3e 0a 3c 77  69 6d 70 74 5f 6d 6f 64  |_key>.<wimpt_mod|
000b3ee0  65 3e 0a 3c 77 69 6d 70  74 5f 6e 6f 65 72 72 3e  |e>.<wimpt_noerr>|
000b3ef0  0a 3c 77 69 6d 70 74 5f  70 6f 6c 6c 3e 0a 3c 77  |.<wimpt_poll>.<w|
000b3f00  69 6d 70 74 5f 70 72 6f  67 72 61 6d 6e 61 6d 65  |impt_programname|
000b3f10  3e 0a 3c 77 69 6d 70 74  5f 72 65 70 6f 72 74 65  |>.<wimpt_reporte|
000b3f20  72 72 6f 72 3e 0a 3c 77  69 6d 70 74 5f 74 61 73  |rror>.<wimpt_tas|
000b3f30  6b 3e 0a 3c 77 69 6d 70  74 5f 77 69 6d 70 76 65  |k>.<wimpt_wimpve|
000b3f40  72 73 69 6f 6e 3e 0a 23  45 6e 64 54 61 62 6c 65  |rsion>.#EndTable|
000b3f50  44 49 52 24 50 02 00 00  50 02 00 00 a0 41 0b 00  |DIR$P...P....A..|
000b3f60  46 ff ff ff 72 f1 ea 24  b3 00 00 00 13 00 00 00  |F...r..$........|
000b3f70  00 00 00 00 62 70 70 00  54 42 0b 00 46 ff ff ff  |....bpp.TB..F...|
000b3f80  81 f5 ea 24 cc 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000b3f90  63 68 65 63 6b 6d 6f 64  65 00 00 00 20 43 0b 00  |checkmode... C..|
000b3fa0  46 ff ff ff 50 fb ea 24  fd 00 00 00 13 00 00 00  |F...P..$........|
000b3fb0  00 00 00 00 63 6f 6d 70  6c 61 69 6e 00 00 00 00  |....complain....|
000b3fc0  20 44 0b 00 46 ff ff ff  6d ff ea 24 b9 00 00 00  | D..F...m..$....|
000b3fd0  13 00 00 00 00 00 00 00  64 78 00 00 dc 44 0b 00  |........dx...D..|
000b3fe0  46 ff ff ff 74 03 eb 24  b9 00 00 00 13 00 00 00  |F...t..$........|
000b3ff0  00 00 00 00 64 79 00 00  98 45 0b 00 46 ff ff ff  |....dy...E..F...|
000b4000  89 07 eb 24 a6 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000b4010  66 61 6b 65 5f 65 76 65  6e 74 00 00 40 46 0b 00  |fake_event..@F..|
000b4020  46 ff ff ff df 0a eb 24  8d 00 00 00 13 00 00 00  |F......$........|
000b4030  00 00 00 00 66 6f 72 63  65 72 65 64 72 61 77 00  |....forceredraw.|
000b4040  d0 46 0b 00 46 ff ff ff  b3 11 eb 24 50 01 00 00  |.F..F......$P...|
000b4050  13 00 00 00 00 00 00 00  69 6e 69 74 00 00 00 00  |........init....|
000b4060  20 48 0b 00 46 ff ff ff  ef 19 eb 24 bf 00 00 00  | H..F......$....|
000b4070  13 00 00 00 00 00 00 00  6c 61 73 74 5f 65 76 65  |........last_eve|
000b4080  6e 74 00 00 e0 48 0b 00  46 ff ff ff 7c 1d eb 24  |nt...H..F...|..$|
000b4090  f2 00 00 00 13 00 00 00  00 00 00 00 6c 61 73 74  |............last|
000b40a0  5f 65 76 65 6e 74 5f 77  61 73 5f 61 5f 6b 65 79  |_event_was_a_key|
000b40b0  00 00 00 00 d4 49 0b 00  46 ff ff ff 94 21 eb 24  |.....I..F....!.$|
000b40c0  dd 00 00 00 13 00 00 00  00 00 00 00 6d 6f 64 65  |............mode|
000b40d0  00 00 00 00 b4 4a 0b 00  46 ff ff ff 0b 27 eb 24  |.....J..F....'.$|
000b40e0  9e 00 00 00 13 00 00 00  00 00 00 00 6e 6f 65 72  |............noer|
000b40f0  72 00 00 00 54 4b 0b 00  46 ff ff ff bd 31 eb 24  |r...TK..F....1.$|
000b4100  3d 01 00 00 13 00 00 00  00 00 00 00 70 6f 6c 6c  |=...........poll|
000b4110  00 00 00 00 94 4c 0b 00  46 ff ff ff ce 36 eb 24  |.....L..F....6.$|
000b4120  bd 00 00 00 13 00 00 00  00 00 00 00 70 72 6f 67  |............prog|
000b4130  72 61 6d 6e 61 6d 65 00  54 4d 0b 00 46 ff ff ff  |ramname.TM..F...|
000b4140  4a 3b eb 24 02 01 00 00  13 00 00 00 00 00 00 00  |J;.$............|
000b4150  72 65 70 6f 72 74 65 72  72 6f 72 00 58 4e 0b 00  |reporterror.XN..|
000b4160  46 ff ff ff 2f 3f eb 24  9a 00 00 00 13 00 00 00  |F.../?.$........|
000b4170  00 00 00 00 74 61 73 6b  00 00 00 00 f4 4e 0b 00  |....task.....N..|
000b4180  46 ff ff ff c0 42 eb 24  e6 00 00 00 13 00 00 00  |F....B.$........|
000b4190  00 00 00 00 77 69 6d 70  76 65 72 73 69 6f 6e 00  |....wimpversion.|
000b41a0  44 41 54 41 b3 00 00 00  77 69 6d 70 74 5f 62 70  |DATA....wimpt_bp|
000b41b0  70 0a 53 79 6e 74 61 78  3a 09 69 6e 74 20 77 69  |p.Syntax:.int wi|
000b41c0  6d 70 74 5f 62 70 70 20  28 76 6f 69 64 29 3b 0a  |mpt_bpp (void);.|
000b41d0  48 65 61 64 65 72 3a 09  3c 77 69 6d 70 74 2e 68  |Header:.<wimpt.h|
000b41e0  3d 3e 77 69 6d 70 74 3e  0a 0a 52 65 74 75 72 6e  |=>wimpt>..Return|
000b41f0  73 3a 09 42 69 74 73 20  70 65 72 20 73 63 72 65  |s:.Bits per scre|
000b4200  65 6e 20 70 69 78 65 6c  2e 0a 0a 54 68 65 20 76  |en pixel...The v|
000b4210  61 6c 75 65 20 69 73 20  6f 6e 6c 79 20 76 61 6c  |alue is only val|
000b4220  69 64 20 69 66 20 3c 77  69 6d 70 74 5f 63 68 65  |id if <wimpt_che|
000b4230  63 6b 6d 6f 64 65 3e 20  69 73 20 63 61 6c 6c 65  |ckmode> is calle|
000b4240  64 20 61 74 20 72 65 64  72 61 77 20 65 76 65 6e  |d at redraw even|
000b4250  74 73 2e 00 44 41 54 41  cc 00 00 00 77 69 6d 70  |ts..DATA....wimp|
000b4260  74 5f 63 68 65 63 6b 6d  6f 64 65 0a 53 79 6e 74  |t_checkmode.Synt|
000b4270  61 78 3a 09 09 3c 42 4f  4f 4c 3e 20 77 69 6d 70  |ax:..<BOOL> wimp|
000b4280  74 5f 63 68 65 63 6b 6d  6f 64 65 20 28 76 6f 69  |t_checkmode (voi|
000b4290  64 29 3b 0a 48 65 61 64  65 72 3a 3c 77 69 6d 70  |d);.Header:<wimp|
000b42a0  74 2e 68 3d 3e 77 69 6d  70 74 3e 0a 0a 52 65 74  |t.h=>wimpt>..Ret|
000b42b0  75 72 6e 73 3a 09 3c 54  52 55 45 3e 20 69 66 20  |urns:.<TRUE> if |
000b42c0  73 63 72 65 65 6e 20 6d  6f 64 65 20 68 61 73 20  |screen mode has |
000b42d0  63 68 61 6e 67 65 64 2e  0a 0a 54 68 69 73 20 66  |changed...This f|
000b42e0  75 6e 63 74 69 6f 6e 20  72 65 67 69 73 74 65 72  |unction register|
000b42f0  73 20 77 69 74 68 20 74  68 65 20 77 69 6d 70 74  |s with the wimpt|
000b4300  20 6d 6f 64 75 6c 65 20  74 68 65 20 63 75 72 72  | module the curr|
000b4310  65 6e 74 20 73 63 72 65  65 6e 20 6d 6f 64 65 2e  |ent screen mode.|
000b4320  44 41 54 41 fd 00 00 00  77 69 6d 70 74 5f 63 6f  |DATA....wimpt_co|
000b4330  6d 70 6c 61 69 6e 0a 53  79 6e 74 61 78 3a 09 3c  |mplain.Syntax:.<|
000b4340  6f 73 5f 65 72 72 6f 72  3e 20 2a 77 69 6d 70 74  |os_error> *wimpt|
000b4350  5f 63 6f 6d 70 6c 61 69  6e 20 28 6f 73 5f 65 72  |_complain (os_er|
000b4360  72 6f 72 20 2a 65 29 3b  0a 48 65 61 64 65 72 3a  |ror *e);.Header:|
000b4370  09 3c 77 69 6d 70 74 2e  68 3d 3e 77 69 6d 70 74  |.<wimpt.h=>wimpt|
000b4380  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000b4390  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000b43a0  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000b43b0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000b43c0  72 65 70 6f 72 74 73 20  74 68 65 20 65 72 72 6f  |reports the erro|
000b43d0  72 20 69 66 20 7b 2f 7d  65 21 3d 30 7b 2f 7d 2c  |r if {/}e!=0{/},|
000b43e0  20 61 6e 64 20 72 65 74  75 72 6e 73 20 69 74 2e  | and returns it.|
000b43f0  20 55 73 65 20 74 68 69  73 20 66 75 6e 63 74 69  | Use this functi|
000b4400  6f 6e 20 69 66 20 74 68  65 20 65 72 72 6f 72 20  |on if the error |
000b4410  69 73 20 6e 6f 74 20 66  61 74 61 6c 2e 00 00 00  |is not fatal....|
000b4420  44 41 54 41 b9 00 00 00  77 69 6d 70 74 5f 64 78  |DATA....wimpt_dx|
000b4430  0a 53 79 6e 74 61 78 3a  09 69 6e 74 20 77 69 6d  |.Syntax:.int wim|
000b4440  70 74 5f 64 78 20 28 76  6f 69 64 29 3b 0a 48 65  |pt_dx (void);.He|
000b4450  61 64 65 72 3a 09 3c 77  69 6d 70 74 2e 68 3d 3e  |ader:.<wimpt.h=>|
000b4460  77 69 6d 70 74 3e 0a 0a  52 65 74 75 72 6e 73 3a  |wimpt>..Returns:|
000b4470  09 4f 53 20 75 6e 69 74  73 20 70 65 72 20 73 63  |.OS units per sc|
000b4480  72 65 65 6e 20 70 69 78  65 6c 20 28 58 29 2e 0a  |reen pixel (X)..|
000b4490  0a 54 68 65 20 76 61 6c  75 65 20 69 73 20 6f 6e  |.The value is on|
000b44a0  6c 79 20 76 61 6c 69 64  20 69 66 20 3c 77 69 6d  |ly valid if <wim|
000b44b0  70 74 5f 63 68 65 63 6b  6d 6f 64 65 3e 20 69 73  |pt_checkmode> is|
000b44c0  20 63 61 6c 6c 65 64 20  61 74 20 72 65 64 72 61  | called at redra|
000b44d0  77 20 65 76 65 6e 74 73  2e 00 00 00 44 41 54 41  |w events....DATA|
000b44e0  b9 00 00 00 77 69 6d 70  74 5f 64 79 0a 53 79 6e  |....wimpt_dy.Syn|
000b44f0  74 61 78 3a 09 69 6e 74  20 77 69 6d 70 74 5f 64  |tax:.int wimpt_d|
000b4500  79 20 28 76 6f 69 64 29  3b 0a 48 65 61 64 65 72  |y (void);.Header|
000b4510  3a 09 3c 77 69 6d 70 74  2e 68 3d 3e 77 69 6d 70  |:.<wimpt.h=>wimp|
000b4520  74 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 4f 53 20  |t>..Returns:.OS |
000b4530  75 6e 69 74 73 20 70 65  72 20 73 63 72 65 65 6e  |units per screen|
000b4540  20 70 69 78 65 6c 20 28  59 29 2e 0a 0a 54 68 65  | pixel (Y)...The|
000b4550  20 76 61 6c 75 65 20 69  73 20 6f 6e 6c 79 20 76  | value is only v|
000b4560  61 6c 69 64 20 69 66 20  3c 77 69 6d 70 74 5f 63  |alid if <wimpt_c|
000b4570  68 65 63 6b 6d 6f 64 65  3e 20 69 73 20 63 61 6c  |heckmode> is cal|
000b4580  6c 65 64 20 61 74 20 72  65 64 72 61 77 20 65 76  |led at redraw ev|
000b4590  65 6e 74 73 2e 00 00 00  44 41 54 41 a6 00 00 00  |ents....DATA....|
000b45a0  77 69 6d 70 74 5f 66 61  6b 65 5f 65 76 65 6e 74  |wimpt_fake_event|
000b45b0  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 77 69  |.Syntax:.void wi|
000b45c0  6d 70 74 5f 66 61 6b 65  5f 65 76 65 6e 74 20 28  |mpt_fake_event (|
000b45d0  3c 77 69 6d 70 5f 65 76  65 6e 74 73 74 72 3e 20  |<wimp_eventstr> |
000b45e0  2a 62 6c 6b 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |*blk);.Header:.<|
000b45f0  77 69 6d 70 74 2e 68 3d  3e 77 69 6d 70 74 3e 0a  |wimpt.h=>wimpt>.|
000b4600  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 70  |.This function p|
000b4610  6f 73 74 73 20 61 6e 20  65 76 65 6e 74 20 74 6f  |osts an event to|
000b4620  20 62 65 20 63 6f 6c 6c  65 63 74 65 64 20 62 79  | be collected by|
000b4630  20 3c 77 69 6d 70 74 5f  70 6f 6c 6c 3e 2e 00 00  | <wimpt_poll>...|
000b4640  44 41 54 41 8d 00 00 00  77 69 6d 70 74 5f 66 6f  |DATA....wimpt_fo|
000b4650  72 63 65 72 65 64 72 61  77 0a 53 79 6e 74 61 78  |rceredraw.Syntax|
000b4660  3a 09 76 6f 69 64 20 77  69 6d 70 74 5f 66 6f 72  |:.void wimpt_for|
000b4670  63 65 72 65 64 72 61 77  20 28 76 6f 69 64 29 3b  |ceredraw (void);|
000b4680  0a 48 65 61 64 65 72 3a  09 3c 77 69 6d 70 74 2e  |.Header:.<wimpt.|
000b4690  68 3d 3e 77 69 6d 70 74  3e 0a 0a 54 68 69 73 20  |h=>wimpt>..This |
000b46a0  66 75 6e 63 74 69 6f 6e  20 66 6f 72 63 65 73 20  |function forces |
000b46b0  61 20 72 65 64 72 61 77  20 6f 66 20 74 68 65 20  |a redraw of the |
000b46c0  77 68 6f 6c 65 20 73 63  72 65 65 6e 2e 00 00 00  |whole screen....|
000b46d0  44 41 54 41 50 01 00 00  77 69 6d 70 74 5f 69 6e  |DATAP...wimpt_in|
000b46e0  69 74 0a 53 79 6e 74 61  78 3a 09 69 6e 74 20 77  |it.Syntax:.int w|
000b46f0  69 6d 70 74 5f 69 6e 69  74 20 28 63 68 61 72 20  |impt_init (char |
000b4700  2a 70 72 6f 67 72 61 6d  6e 61 6d 65 29 3b 0a 48  |*programname);.H|
000b4710  65 61 64 65 72 3a 09 3c  77 69 6d 70 74 2e 68 3d  |eader:.<wimpt.h=|
000b4720  3e 77 69 6d 70 74 3e 0a  0a 52 65 74 75 72 6e 73  |>wimpt>..Returns|
000b4730  3a 09 57 69 6d 70 20 76  65 72 73 69 6f 6e 20 6e  |:.Wimp version n|
000b4740  75 6d 62 65 72 20 2a 20  31 30 30 2e 0a 0a 54 68  |umber * 100...Th|
000b4750  69 73 20 66 75 6e 63 74  69 6f 6e 20 73 65 74 73  |is function sets|
000b4760  20 75 70 20 79 6f 75 72  20 70 72 6f 67 72 61 6d  | up your program|
000b4770  20 61 73 20 61 20 57 69  6d 70 20 74 61 73 6b 2e  | as a Wimp task.|
000b4780  20 49 74 20 72 65 6d 65  6d 62 65 72 73 20 73 63  | It remembers sc|
000b4790  72 65 65 6e 20 6d 6f 64  65 20 61 6e 64 20 73 65  |reen mode and se|
000b47a0  74 73 20 75 70 20 73 69  67 6e 61 6c 20 68 61 6e  |ts up signal han|
000b47b0  64 6c 65 72 73 20 73 6f  20 74 68 61 74 20 74 61  |dlers so that ta|
000b47c0  73 6b 20 65 78 69 74 73  20 63 6c 65 61 6e 6c 79  |sk exits cleanly|
000b47d0  2e 20 43 61 6c 6c 73 20  3c 77 69 6d 70 5f 74 61  |. Calls <wimp_ta|
000b47e0  73 6b 69 6e 69 74 3e 20  61 6e 64 20 73 74 6f 72  |skinit> and stor|
000b47f0  65 73 20 74 61 73 6b 5f  69 64 20 72 65 74 75 72  |es task_id retur|
000b4800  6e 65 64 2e 20 41 6c 73  6f 20 69 6e 73 74 61 6c  |ned. Also instal|
000b4810  6c 73 20 65 78 69 74 2d  68 61 6e 64 6c 65 72 2e  |ls exit-handler.|
000b4820  44 41 54 41 bf 00 00 00  77 69 6d 70 74 5f 6c 61  |DATA....wimpt_la|
000b4830  73 74 5f 65 76 65 6e 74  0a 53 79 6e 74 61 78 3a  |st_event.Syntax:|
000b4840  09 3c 77 69 6d 70 5f 65  76 65 6e 74 73 74 72 3e  |.<wimp_eventstr>|
000b4850  20 2a 77 69 6d 70 74 5f  6c 61 73 74 5f 65 76 65  | *wimpt_last_eve|
000b4860  6e 74 20 28 76 6f 69 64  29 3b 0a 48 65 61 64 65  |nt (void);.Heade|
000b4870  72 3a 09 3c 77 69 6d 70  74 2e 68 3d 3e 77 69 6d  |r:.<wimpt.h=>wim|
000b4880  70 74 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |pt>..Returns:.Po|
000b4890  69 6e 74 65 72 20 74 6f  20 65 76 65 6e 74 2e 0a  |inter to event..|
000b48a0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
000b48b0  65 74 75 72 6e 73 20 74  68 65 20 6c 61 73 74 20  |eturns the last |
000b48c0  65 76 65 6e 74 20 72 65  74 75 72 6e 65 64 20 62  |event returned b|
000b48d0  79 20 3c 77 69 6d 70 74  5f 70 6f 6c 6c 3e 2e 00  |y <wimpt_poll>..|
000b48e0  44 41 54 41 f2 00 00 00  77 69 6d 70 74 5f 6c 61  |DATA....wimpt_la|
000b48f0  73 74 5f 65 76 65 6e 74  5f 77 61 73 5f 61 5f 6b  |st_event_was_a_k|
000b4900  65 79 0a 53 79 6e 74 61  78 3a 09 69 6e 74 20 77  |ey.Syntax:.int w|
000b4910  69 6d 70 74 5f 6c 61 73  74 5f 65 76 65 6e 74 5f  |impt_last_event_|
000b4920  77 61 73 5f 61 5f 6b 65  79 20 28 76 6f 69 64 29  |was_a_key (void)|
000b4930  3b 0a 48 65 61 64 65 72  3a 09 3c 77 69 6d 70 74  |;.Header:.<wimpt|
000b4940  2e 68 3d 3e 77 69 6d 70  74 3e 0a 0a 52 65 74 75  |.h=>wimpt>..Retu|
000b4950  72 6e 73 3a 09 4e 6f 6e  2d 7a 65 72 6f 20 69 66  |rns:.Non-zero if|
000b4960  20 6c 61 73 74 20 65 76  65 6e 74 20 77 61 73 20  | last event was |
000b4970  6b 65 79 73 74 72 6f 6b  65 2e 0a 0a 54 68 69 73  |keystroke...This|
000b4980  20 66 75 6e 63 74 69 6f  6e 20 69 6e 66 6f 72 6d  | function inform|
000b4990  73 20 79 6f 75 20 69 66  20 74 68 65 20 6c 61 73  |s you if the las|
000b49a0  74 20 65 76 65 6e 74 20  72 65 74 75 72 6e 65 64  |t event returned|
000b49b0  20 62 79 20 3c 77 69 6d  70 74 5f 70 6f 6c 6c 3e  | by <wimpt_poll>|
000b49c0  20 77 61 73 20 61 20 6b  65 79 20 73 74 72 6f 6b  | was a key strok|
000b49d0  65 2e 00 00 44 41 54 41  dd 00 00 00 77 69 6d 70  |e...DATA....wimp|
000b49e0  74 5f 6d 6f 64 65 0a 53  79 6e 74 61 78 3a 09 69  |t_mode.Syntax:.i|
000b49f0  6e 74 20 77 69 6d 70 74  5f 6d 6f 64 65 20 28 76  |nt wimpt_mode (v|
000b4a00  6f 69 64 29 3b 0a 48 65  61 64 65 72 3a 09 3c 77  |oid);.Header:.<w|
000b4a10  69 6d 70 74 2e 68 3d 3e  77 69 6d 70 74 3e 0a 0a  |impt.h=>wimpt>..|
000b4a20  52 65 74 75 72 6e 73 3a  09 54 68 65 20 63 75 72  |Returns:.The cur|
000b4a30  72 65 6e 74 20 73 63 72  65 65 6e 20 6d 6f 64 65  |rent screen mode|
000b4a40  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000b4a50  20 72 65 61 64 73 20 74  68 65 20 63 75 72 72 65  | reads the curre|
000b4a60  6e 74 20 73 63 72 65 65  6e 20 6d 6f 64 65 2e 20  |nt screen mode. |
000b4a70  49 74 20 69 73 20 6f 6e  6c 79 20 76 61 6c 69 64  |It is only valid|
000b4a80  20 69 66 20 3c 77 69 6d  70 74 5f 63 68 65 63 6b  | if <wimpt_check|
000b4a90  6d 6f 64 65 3e 20 69 73  20 63 61 6c 6c 65 64 20  |mode> is called |
000b4aa0  61 74 20 72 65 64 72 61  77 20 65 76 65 6e 74 73  |at redraw events|
000b4ab0  2e 00 00 00 44 41 54 41  9e 00 00 00 77 69 6d 70  |....DATA....wimp|
000b4ac0  74 5f 6e 6f 65 72 72 0a  53 79 6e 74 61 78 3a 09  |t_noerr.Syntax:.|
000b4ad0  76 6f 69 64 20 77 69 6d  70 74 5f 6e 6f 65 72 72  |void wimpt_noerr|
000b4ae0  20 28 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 65 29  | (<os_error> *e)|
000b4af0  3b 0a 48 65 61 64 65 72  3a 09 3c 77 69 6d 70 74  |;.Header:.<wimpt|
000b4b00  2e 68 3d 3e 77 69 6d 70  74 3e 0a 0a 54 68 69 73  |.h=>wimpt>..This|
000b4b10  20 66 75 6e 63 74 69 6f  6e 20 72 65 70 6f 72 74  | function report|
000b4b20  73 20 74 68 65 20 65 72  72 6f 72 20 77 68 6f 73  |s the error whos|
000b4b30  65 20 70 6f 69 6e 74 65  72 20 69 73 20 67 69 76  |e pointer is giv|
000b4b40  65 6e 2c 20 69 66 20 7b  2f 7d 65 21 3d 30 7b 2f  |en, if {/}e!=0{/|
000b4b50  7d 2e 00 00 44 41 54 41  3d 01 00 00 77 69 6d 70  |}...DATA=...wimp|
000b4b60  74 5f 70 6f 6c 6c 0a 53  79 6e 74 61 78 3a 09 3c  |t_poll.Syntax:.<|
000b4b70  6f 73 5f 65 72 72 6f 72  3e 20 2a 77 69 6d 70 74  |os_error> *wimpt|
000b4b80  5f 70 6f 6c 6c 20 28 3c  77 69 6d 70 5f 65 6d 61  |_poll (<wimp_ema|
000b4b90  73 6b 3e 20 6d 61 73 6b  2c 20 3c 77 69 6d 70 5f  |sk> mask, <wimp_|
000b4ba0  65 76 65 6e 74 73 74 72  3e 20 2a 72 65 73 75 6c  |eventstr> *resul|
000b4bb0  74 29 3b 0a 48 65 61 64  65 72 3a 09 3c 77 69 6d  |t);.Header:.<wim|
000b4bc0  70 74 2e 68 3d 3e 77 69  6d 70 74 3e 0a 0a 52 65  |pt.h=>wimpt>..Re|
000b4bd0  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
000b4be0  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
000b4bf0  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
000b4c00  73 20 66 75 6e 63 74 69  6f 6e 20 70 6f 6c 6c 73  |s function polls|
000b4c10  20 66 6f 72 20 61 6e 20  65 76 65 6e 74 20 66 72  | for an event fr|
000b4c20  6f 6d 20 74 68 65 20 57  69 6d 70 2e 20 59 6f 75  |om the Wimp. You|
000b4c30  20 73 68 6f 75 6c 64 20  75 73 65 20 74 68 69 73  | should use this|
000b4c40  20 72 61 74 68 65 72 20  74 68 61 6e 20 3c 77 69  | rather than <wi|
000b4c50  6d 70 5f 70 6f 6c 6c 3d  3e 77 69 6d 70 5f 70 6f  |mp_poll=>wimp_po|
000b4c60  6c 6c 5f 3e 20 69 66 20  79 6f 75 20 5f 72 65 61  |ll_> if you _rea|
000b4c70  6c 6c 79 5f 20 6e 65 65  64 20 74 6f 20 75 73 65  |lly_ need to use|
000b4c80  20 6c 6f 77 2d 6c 65 76  65 6c 20 63 61 6c 6c 73  | low-level calls|
000b4c90  2e 00 00 00 44 41 54 41  bd 00 00 00 77 69 6d 70  |....DATA....wimp|
000b4ca0  74 5f 70 72 6f 67 72 61  6d 6e 61 6d 65 0a 53 79  |t_programname.Sy|
000b4cb0  6e 74 61 78 3a 09 63 68  61 72 20 2a 77 69 6d 70  |ntax:.char *wimp|
000b4cc0  74 5f 70 72 6f 67 72 61  6d 6e 61 6d 65 20 28 76  |t_programname (v|
000b4cd0  6f 69 64 29 3b 0a 48 65  61 64 65 72 3a 09 3c 77  |oid);.Header:.<w|
000b4ce0  69 6d 70 74 2e 68 3d 3e  77 69 6d 70 74 3e 0a 0a  |impt.h=>wimpt>..|
000b4cf0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
000b4d00  20 74 6f 20 70 72 6f 67  72 61 6d 20 6e 61 6d 65  | to program name|
000b4d10  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000b4d20  20 72 65 74 75 72 6e 73  20 74 68 65 20 70 72 6f  | returns the pro|
000b4d30  67 72 61 6d 20 6e 61 6d  65 20 70 61 73 73 65 64  |gram name passed|
000b4d40  20 74 6f 20 3c 77 69 6d  70 74 5f 69 6e 69 74 3e  | to <wimpt_init>|
000b4d50  2e 00 00 00 44 41 54 41  02 01 00 00 77 69 6d 70  |....DATA....wimp|
000b4d60  74 5f 72 65 70 6f 72 74  65 72 72 6f 72 0a 53 79  |t_reporterror.Sy|
000b4d70  6e 74 61 78 3a 09 76 6f  69 64 20 77 69 6d 70 74  |ntax:.void wimpt|
000b4d80  5f 72 65 70 6f 72 74 65  72 72 6f 72 20 28 3c 6f  |_reporterror (<o|
000b4d90  73 5f 65 72 72 6f 72 3e  20 2a 65 72 72 2c 20 3c  |s_error> *err, <|
000b4da0  77 69 6d 70 5f 65 72 72  66 6c 61 67 73 3e 20 66  |wimp_errflags> f|
000b4db0  6c 61 67 73 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |lags);.Header:.<|
000b4dc0  77 69 6d 70 74 2e 68 3d  3e 77 69 6d 70 74 3e 0a  |wimpt.h=>wimpt>.|
000b4dd0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 72  |.This function r|
000b4de0  65 70 6f 72 74 73 20 61  6e 20 4f 53 20 65 72 72  |eports an OS err|
000b4df0  6f 72 20 69 6e 20 61 20  64 69 61 6c 6f 75 65 20  |or in a dialoue |
000b4e00  62 6f 78 2e 20 49 74 20  69 73 20 73 69 6d 69 6c  |box. It is simil|
000b4e10  61 72 20 74 6f 20 3c 77  69 6d 70 5f 72 65 70 6f  |ar to <wimp_repo|
000b4e20  72 74 65 72 72 6f 72 3e  2c 20 62 75 74 20 69 6e  |rterror>, but in|
000b4e30  63 6c 75 64 65 73 20 74  68 65 20 70 72 6f 67 72  |cludes the progr|
000b4e40  61 6d 20 6e 61 6d 65 20  61 75 74 6f 6d 61 74 69  |am name automati|
000b4e50  63 61 6c 6c 79 2e 00 00  44 41 54 41 9a 00 00 00  |cally...DATA....|
000b4e60  77 69 6d 70 74 5f 74 61  73 6b 0a 53 79 6e 74 61  |wimpt_task.Synta|
000b4e70  78 3a 09 77 69 6d 70 5f  74 20 77 69 6d 70 74 5f  |x:.wimp_t wimpt_|
000b4e80  74 61 73 6b 20 28 76 6f  69 64 29 3b 0a 48 65 61  |task (void);.Hea|
000b4e90  64 65 72 3a 09 3c 77 69  6d 70 74 2e 68 3d 3e 77  |der:.<wimpt.h=>w|
000b4ea0  69 6d 70 74 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |impt>..Returns:.|
000b4eb0  74 61 73 6b 20 68 61 6e  64 6c 65 2e 0a 0a 54 68  |task handle...Th|
000b4ec0  69 73 20 66 75 6e 63 74  69 6f 6e 20 69 6e 66 6f  |is function info|
000b4ed0  72 6d 73 20 74 68 65 20  63 61 6c 6c 65 72 20 6f  |rms the caller o|
000b4ee0  66 20 69 74 73 20 74 61  73 6b 20 68 61 6e 64 6c  |f its task handl|
000b4ef0  65 2e 00 00 44 41 54 41  e6 00 00 00 77 69 6d 70  |e...DATA....wimp|
000b4f00  74 5f 77 69 6d 70 76 65  72 73 69 6f 6e 0a 53 79  |t_wimpversion.Sy|
000b4f10  6e 74 61 78 3a 09 76 6f  69 64 20 77 69 6d 70 74  |ntax:.void wimpt|
000b4f20  5f 77 69 6d 70 76 65 72  73 69 6f 6e 20 28 69 6e  |_wimpversion (in|
000b4f30  74 20 76 65 72 73 69 6f  6e 29 3b 0a 48 65 61 64  |t version);.Head|
000b4f40  65 72 3a 09 3c 77 69 6d  70 74 2e 68 3d 3e 77 69  |er:.<wimpt.h=>wi|
000b4f50  6d 70 74 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |mpt>..This funct|
000b4f60  69 6f 6e 20 73 68 6f 75  6c 64 20 62 65 20 63 61  |ion should be ca|
000b4f70  6c 6c 65 64 20 62 65 66  6f 72 65 20 63 61 6c 6c  |lled before call|
000b4f80  69 6e 67 20 3c 77 69 6d  70 74 5f 69 6e 69 74 3e  |ing <wimpt_init>|
000b4f90  2e 20 49 74 20 74 65 6c  6c 73 20 77 69 6d 70 74  |. It tells wimpt|
000b4fa0  20 77 68 61 74 20 76 65  72 73 69 6f 6e 20 6f 66  | what version of|
000b4fb0  20 74 68 65 20 57 69 6d  70 20 79 6f 75 20 77 61  | the Wimp you wa|
000b4fc0  6e 74 20 28 32 30 30 2c  20 33 30 30 2c 20 33 31  |nt (200, 300, 31|
000b4fd0  30 20 6f 72 20 33 31 31  29 2e 00 00 44 49 52 24  |0 or 311)...DIR$|
000b4fe0  48 18 00 00 48 18 00 00  24 68 0b 00 46 ff ff ff  |H...H...$h..F...|
000b4ff0  d1 96 4a 26 b9 01 00 00  13 00 00 00 00 00 00 00  |..J&............|
000b5000  42 61 73 65 4f 66 53 70  72 69 74 65 73 00 00 00  |BaseOfSprites...|
000b5010  e0 69 0b 00 46 fd ff ff  3c 52 e9 24 c6 00 00 00  |.i..F...<R.$....|
000b5020  13 00 00 00 00 00 00 00  62 61 73 65 6f 66 73 70  |........baseofsp|
000b5030  72 69 74 65 73 5f 00 00  a8 6a 0b 00 46 ff ff ff  |rites_...j..F...|
000b5040  ad bd e6 24 4f 01 00 00  13 00 00 00 00 00 00 00  |...$O...........|
000b5050  62 62 69 74 73 00 00 00  f8 6b 0b 00 46 ff ff ff  |bbits....k..F...|
000b5060  fe ad 4a 26 f6 01 00 00  13 00 00 00 00 00 00 00  |..J&............|
000b5070  42 6c 6f 63 6b 43 6f 70  79 00 00 00 f0 6d 0b 00  |BlockCopy....m..|
000b5080  46 fd ff ff 5f 12 ea 24  f6 00 00 00 13 00 00 00  |F..._..$........|
000b5090  00 00 00 00 62 6c 6f 63  6b 63 6f 70 79 5f 00 00  |....blockcopy_..|
000b50a0  e8 6e 0b 00 46 ff ff ff  30 19 e8 24 f2 00 00 00  |.n..F...0..$....|
000b50b0  13 00 00 00 00 00 00 00  62 6f 78 00 dc 6f 0b 00  |........box..o..|
000b50c0  46 ff ff ff bc 3c e7 24  c9 00 00 00 13 00 00 00  |F....<.$........|
000b50d0  00 00 00 00 63 61 72 65  74 73 74 72 00 00 00 00  |....caretstr....|
000b50e0  a8 70 0b 00 46 ff ff ff  d2 31 ea 24 cb 00 00 00  |.p..F....1.$....|
000b50f0  13 00 00 00 00 00 00 00  63 6c 6f 73 65 5f 74 65  |........close_te|
000b5100  6d 70 6c 61 74 65 00 00  74 71 0b 00 46 ff ff ff  |mplate..tq..F...|
000b5110  3c bd e9 24 bc 00 00 00  13 00 00 00 00 00 00 00  |<..$............|
000b5120  63 6c 6f 73 65 5f 77 69  6e 64 00 00 30 72 0b 00  |close_wind..0r..|
000b5130  46 ff ff ff c1 d6 49 26  6b 01 00 00 13 00 00 00  |F.....I&k.......|
000b5140  00 00 00 00 43 6c 6f 73  65 44 6f 77 6e 00 00 00  |....CloseDown...|
000b5150  9c 73 0b 00 46 ff ff ff  57 38 e9 24 c0 00 00 00  |.s..F...W8.$....|
000b5160  13 00 00 00 00 00 00 00  63 6c 6f 73 65 64 6f 77  |........closedow|
000b5170  6e 5f 00 00 5c 74 0b 00  46 ff ff ff 5a c5 49 26  |n_..\t..F...Z.I&|
000b5180  f3 00 00 00 13 00 00 00  00 00 00 00 43 6c 6f 73  |............Clos|
000b5190  65 54 65 6d 70 6c 61 74  65 00 00 00 50 75 0b 00  |eTemplate...Pu..|
000b51a0  46 ff ff ff 5f 0e 49 26  1a 01 00 00 13 00 00 00  |F..._.I&........|
000b51b0  00 00 00 00 43 6c 6f 73  65 57 69 6e 64 6f 77 00  |....CloseWindow.|
000b51c0  6c 76 0b 00 46 ff ff ff  f8 97 37 26 3d 01 00 00  |lv..F.....7&=...|
000b51d0  13 00 00 00 00 00 00 00  63 6f 6c 6f 75 72 00 00  |........colour..|
000b51e0  ac 77 0b 00 46 ff ff ff  d5 29 b6 22 29 01 00 00  |.w..F....).")...|
000b51f0  13 00 00 00 00 00 00 00  63 6f 6d 6d 61 6e 64 5f  |........command_|
000b5200  74 61 67 00 d8 78 0b 00  46 ff ff ff dd 29 b6 22  |tag..x..F....)."|
000b5210  ab 00 00 00 13 00 00 00  00 00 00 00 63 6f 6d 6d  |............comm|
000b5220  61 6e 64 77 69 6e 64 00  84 79 0b 00 46 ff ff ff  |andwind..y..F...|
000b5230  7e 03 4b 26 46 02 00 00  13 00 00 00 00 00 00 00  |~.K&F...........|
000b5240  43 6f 6d 6d 61 6e 64 57  69 6e 64 6f 77 00 00 00  |CommandWindow...|
000b5250  cc 7b 0b 00 46 fd ff ff  35 8d e9 24 e2 00 00 00  |.{..F...5..$....|
000b5260  13 00 00 00 00 00 00 00  63 6f 6d 6d 61 6e 64 77  |........commandw|
000b5270  69 6e 64 6f 77 5f 00 00  b0 7c 0b 00 46 ff ff ff  |indow_...|..F...|
000b5280  b0 61 37 26 82 00 00 00  13 00 00 00 00 00 00 00  |.a7&............|
000b5290  63 6f 6f 72 64 00 00 00  34 7d 0b 00 46 ff ff ff  |coord...4}..F...|
000b52a0  b4 99 e9 24 41 01 00 00  13 00 00 00 00 00 00 00  |...$A...........|
000b52b0  63 6f 72 72 75 70 74 5f  66 70 5f 73 74 61 74 65  |corrupt_fp_state|
000b52c0  5f 6f 6e 5f 70 6f 6c 6c  00 00 00 00 78 7e 0b 00  |_on_poll....x~..|
000b52d0  46 ff ff ff 0c 2a b6 22  0b 01 00 00 13 00 00 00  |F....*."........|
000b52e0  00 00 00 00 43 6f 72 72  75 70 74 46 50 53 74 61  |....CorruptFPSta|
000b52f0  74 65 4f 6e 50 6f 6c 6c  00 00 00 00 84 7f 0b 00  |teOnPoll........|
000b5300  46 ff ff ff 42 49 ea 24  fe 00 00 00 13 00 00 00  |F...BI.$........|
000b5310  00 00 00 00 63 72 65 61  74 65 5f 69 63 6f 6e 00  |....create_icon.|
000b5320  84 80 0b 00 46 ff ff ff  8f f1 e9 24 e6 00 00 00  |....F......$....|
000b5330  13 00 00 00 00 00 00 00  63 72 65 61 74 65 5f 6d  |........create_m|
000b5340  65 6e 75 00 6c 81 0b 00  46 ff ff ff 12 20 ea 24  |enu.l...F.... .$|
000b5350  25 01 00 00 13 00 00 00  00 00 00 00 63 72 65 61  |%...........crea|
000b5360  74 65 5f 73 75 62 6d 65  6e 75 00 00 94 82 0b 00  |te_submenu......|
000b5370  46 ff ff ff d3 b1 e9 24  14 01 00 00 13 00 00 00  |F......$........|
000b5380  00 00 00 00 63 72 65 61  74 65 5f 77 69 6e 64 00  |....create_wind.|
000b5390  a8 83 0b 00 46 ff ff ff  1c f9 48 26 42 01 00 00  |....F.....H&B...|
000b53a0  13 00 00 00 00 00 00 00  43 72 65 61 74 65 49 63  |........CreateIc|
000b53b0  6f 6e 00 00 ec 84 0b 00  46 ff ff ff 33 8e 49 26  |on......F...3.I&|
000b53c0  53 01 00 00 13 00 00 00  00 00 00 00 43 72 65 61  |S...........Crea|
000b53d0  74 65 4d 65 6e 75 00 00  40 86 0b 00 46 ff ff ff  |teMenu..@...F...|
000b53e0  d4 76 4a 26 7d 01 00 00  13 00 00 00 00 00 00 00  |.vJ&}...........|
000b53f0  43 72 65 61 74 65 53 75  62 4d 65 6e 75 00 00 00  |CreateSubMenu...|
000b5400  c0 87 0b 00 46 ff ff ff  2e f0 48 26 52 01 00 00  |....F.....H&R...|
000b5410  13 00 00 00 00 00 00 00  43 72 65 61 74 65 57 69  |........CreateWi|
000b5420  6e 64 6f 77 00 00 00 00  14 89 0b 00 46 ff ff ff  |ndow........F...|
000b5430  d2 fa e9 24 4b 01 00 00  13 00 00 00 00 00 00 00  |...$K...........|
000b5440  64 65 63 6f 64 65 5f 6d  65 6e 75 00 60 8a 0b 00  |decode_menu.`...|
000b5450  46 ff ff ff 29 9c 49 26  b4 01 00 00 13 00 00 00  |F...).I&........|
000b5460  00 00 00 00 44 65 63 6f  64 65 4d 65 6e 75 00 00  |....DecodeMenu..|
000b5470  14 8c 0b 00 46 ff ff ff  2a 4d ea 24 cc 00 00 00  |....F...*M.$....|
000b5480  13 00 00 00 00 00 00 00  64 65 6c 65 74 65 5f 69  |........delete_i|
000b5490  63 6f 6e 00 e0 8c 0b 00  46 ff ff ff 02 b5 e9 24  |con.....F......$|
000b54a0  bd 00 00 00 13 00 00 00  00 00 00 00 64 65 6c 65  |............dele|
000b54b0  74 65 5f 77 69 6e 64 00  a0 8d 0b 00 46 ff ff ff  |te_wind.....F...|
000b54c0  d9 03 49 26 f7 01 00 00  13 00 00 00 00 00 00 00  |..I&............|
000b54d0  44 65 6c 65 74 65 49 63  6f 6e 00 00 98 8f 0b 00  |DeleteIcon......|
000b54e0  46 ff ff ff 8a fe 48 26  3a 01 00 00 13 00 00 00  |F.....H&:.......|
000b54f0  00 00 00 00 44 65 6c 65  74 65 57 69 6e 64 6f 77  |....DeleteWindow|
000b5500  00 00 00 00 d4 90 0b 00  46 ff ff ff e6 6c ea 24  |........F....l.$|
000b5510  c8 00 00 00 13 00 00 00  00 00 00 00 64 72 61 67  |............drag|
000b5520  5f 62 6f 78 00 00 00 00  9c 91 0b 00 46 ff ff ff  |_box........F...|
000b5530  a9 66 49 26 aa 01 00 00  13 00 00 00 00 00 00 00  |.fI&............|
000b5540  44 72 61 67 42 6f 78 00  48 93 0b 00 46 ff ff ff  |DragBox.H...F...|
000b5550  ab cf e7 24 d8 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000b5560  64 72 61 67 73 74 72 00  20 94 0b 00 46 ff ff ff  |dragstr. ...F...|
000b5570  22 14 e8 24 20 01 00 00  13 00 00 00 00 00 00 00  |"..$ ...........|
000b5580  64 72 61 67 74 79 70 65  00 00 00 00 40 95 0b 00  |dragtype....@...|
000b5590  46 ff ff ff ca 34 e8 24  d2 01 00 00 13 00 00 00  |F....4.$........|
000b55a0  00 00 00 00 65 6d 61 73  6b 00 00 00 14 97 0b 00  |....emask.......|
000b55b0  46 ff ff ff bb 2a b6 22  d7 00 00 00 13 00 00 00  |F....*."........|
000b55c0  00 00 00 00 65 72 72 66  6c 61 67 73 00 00 00 00  |....errflags....|
000b55d0  ec 97 0b 00 46 ff ff ff  83 2e e7 24 b7 01 00 00  |....F......$....|
000b55e0  13 00 00 00 00 00 00 00  65 74 79 70 65 00 00 00  |........etype...|
000b55f0  a4 99 0b 00 46 ff ff ff  a4 97 e8 24 d1 01 00 00  |....F......$....|
000b5600  13 00 00 00 00 00 00 00  65 76 65 6e 74 64 61 74  |........eventdat|
000b5610  61 00 00 00 78 9b 0b 00  46 ff ff ff af b5 e7 24  |a...x...F......$|
000b5620  af 00 00 00 13 00 00 00  00 00 00 00 65 76 65 6e  |............even|
000b5630  74 73 74 72 00 00 00 00  28 9c 0b 00 46 ff ff ff  |tstr....(...F...|
000b5640  b6 db e8 24 8b 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000b5650  66 6f 6e 74 5f 61 72 72  61 79 00 00 b4 9c 0b 00  |font_array......|
000b5660  46 ff ff ff 11 ea e9 24  0b 01 00 00 13 00 00 00  |F......$........|
000b5670  00 00 00 00 66 6f 72 63  65 5f 72 65 64 72 61 77  |....force_redraw|
000b5680  00 00 00 00 c0 9d 0b 00  46 ff ff ff b9 72 49 26  |........F....rI&|
000b5690  de 01 00 00 13 00 00 00  00 00 00 00 46 6f 72 63  |............Forc|
000b56a0  65 52 65 64 72 61 77 00  a0 9f 0b 00 46 ff ff ff  |eRedraw.....F...|
000b56b0  61 d2 ea 24 d4 00 00 00  13 00 00 00 00 00 00 00  |a..$............|
000b56c0  67 65 74 5f 63 61 72 65  74 5f 70 6f 73 00 00 00  |get_caret_pos...|
000b56d0  74 a0 0b 00 46 ff ff ff  6a 67 ea 24 1a 01 00 00  |t...F...jg.$....|
000b56e0  13 00 00 00 00 00 00 00  67 65 74 5f 69 63 6f 6e  |........get_icon|
000b56f0  5f 69 6e 66 6f 00 00 00  90 a1 0b 00 46 ff ff ff  |_info.......F...|
000b5700  73 2f e9 24 f3 00 00 00  13 00 00 00 00 00 00 00  |s/.$............|
000b5710  67 65 74 5f 70 6f 69 6e  74 5f 69 6e 66 6f 00 00  |get_point_info..|
000b5720  84 a2 0b 00 46 ff ff ff  ba d1 e9 24 11 01 00 00  |....F......$....|
000b5730  13 00 00 00 00 00 00 00  67 65 74 5f 72 65 63 74  |........get_rect|
000b5740  61 6e 67 6c 65 00 00 00  98 a3 0b 00 46 ff ff ff  |angle.......F...|
000b5750  f1 e1 e9 24 02 01 00 00  13 00 00 00 00 00 00 00  |...$............|
000b5760  67 65 74 5f 77 69 6e 64  5f 69 6e 66 6f 00 00 00  |get_wind_info...|
000b5770  9c a4 0b 00 46 ff ff ff  0b d9 e9 24 04 01 00 00  |....F......$....|
000b5780  13 00 00 00 00 00 00 00  67 65 74 5f 77 69 6e 64  |........get_wind|
000b5790  5f 73 74 61 74 65 00 00  a0 a5 0b 00 46 ff ff ff  |_state......F...|
000b57a0  93 88 49 26 3b 01 00 00  13 00 00 00 00 00 00 00  |..I&;...........|
000b57b0  47 65 74 43 61 72 65 74  50 6f 73 69 74 69 6f 6e  |GetCaretPosition|
000b57c0  00 00 00 00 dc a6 0b 00  46 ff ff ff 7d 56 49 26  |........F...}VI&|
000b57d0  36 01 00 00 13 00 00 00  00 00 00 00 47 65 74 49  |6...........GetI|
000b57e0  63 6f 6e 53 74 61 74 65  00 00 00 00 14 a8 0b 00  |conState........|
000b57f0  46 ff ff ff 02 5d 49 26  6d 01 00 00 13 00 00 00  |F....]I&m.......|
000b5800  00 00 00 00 47 65 74 50  6f 69 6e 74 65 72 49 6e  |....GetPointerIn|
000b5810  66 6f 00 00 84 a9 0b 00  46 ff ff ff f0 3b 49 26  |fo......F....;I&|
000b5820  29 01 00 00 13 00 00 00  00 00 00 00 47 65 74 52  |)...........GetR|
000b5830  65 63 74 61 6e 67 6c 65  00 00 00 00 b0 aa 0b 00  |ectangle........|
000b5840  46 ff ff ff d1 46 49 26  fc 00 00 00 13 00 00 00  |F....FI&........|
000b5850  00 00 00 00 47 65 74 57  69 6e 64 6f 77 49 6e 66  |....GetWindowInf|
000b5860  6f 00 00 00 ac ab 0b 00  46 ff ff ff 2a f8 49 26  |o.......F...*.I&|
000b5870  9b 01 00 00 13 00 00 00  00 00 00 00 47 65 74 57  |............GetW|
000b5880  69 6e 64 6f 77 4f 75 74  6c 69 6e 65 00 00 00 00  |indowOutline....|
000b5890  48 ad 0b 00 46 ff ff ff  d0 09 ea 24 13 01 00 00  |H...F......$....|
000b58a0  13 00 00 00 00 00 00 00  67 65 74 77 69 6e 64 6f  |........getwindo|
000b58b0  77 6f 75 74 6c 69 6e 65  5f 00 00 00 5c ae 0b 00  |woutline_...\...|
000b58c0  46 ff ff ff 08 43 49 26  fb 00 00 00 13 00 00 00  |F....CI&........|
000b58d0  00 00 00 00 47 65 74 57  69 6e 64 6f 77 53 74 61  |....GetWindowSta|
000b58e0  74 65 00 00 58 af 0b 00  46 ff ff ff 79 75 e6 24  |te..X...F...yu.$|
000b58f0  2b 01 00 00 13 00 00 00  00 00 00 00 68 00 00 00  |+...........h...|
000b5900  84 b0 0b 00 46 ff ff ff  14 d7 e8 24 8f 00 00 00  |....F......$....|
000b5910  13 00 00 00 00 00 00 00  69 00 00 00 14 b1 0b 00  |........i.......|
000b5920  46 ff ff ff cf f8 e7 24  af 01 00 00 13 00 00 00  |F......$........|
000b5930  00 00 00 00 69 62 74 79  70 65 00 00 c4 b2 0b 00  |....ibtype......|
000b5940  46 ff ff ff 09 13 e7 24  c0 00 00 00 13 00 00 00  |F......$........|
000b5950  00 00 00 00 69 63 6f 6e  00 00 00 00 84 b3 0b 00  |....icon........|
000b5960  46 ff ff ff 12 e8 e6 24  7f 01 00 00 13 00 00 00  |F......$........|
000b5970  00 00 00 00 69 63 6f 6e  64 61 74 61 00 00 00 00  |....icondata....|
000b5980  04 b5 0b 00 46 ff ff ff  b3 b0 e6 24 de 01 00 00  |....F......$....|
000b5990  13 00 00 00 00 00 00 00  69 63 6f 6e 66 6c 61 67  |........iconflag|
000b59a0  73 00 00 00 e4 b6 0b 00  46 ff ff ff 7b 26 e8 24  |s.......F...{&.$|
000b59b0  c5 00 00 00 13 00 00 00  00 00 00 00 69 63 72 65  |............icre|
000b59c0  61 74 65 00 ac b7 0b 00  46 ff ff ff db e7 48 26  |ate.....F.....H&|
000b59d0  10 03 00 00 13 00 00 00  00 00 00 00 49 6e 69 74  |............Init|
000b59e0  69 61 6c 69 73 65 00 00  bc ba 0b 00 46 fd ff ff  |ialise......F...|
000b59f0  07 0e e9 24 e5 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000b5a00  69 6e 69 74 69 61 6c 69  73 65 5f 00 a4 bb 0b 00  |initialise_.....|
000b5a10  46 ff ff ff 1b 35 ea 24  ed 00 00 00 13 00 00 00  |F....5.$........|
000b5a20  00 00 00 00 6c 6f 61 64  5f 74 65 6d 70 6c 61 74  |....load_templat|
000b5a30  65 00 00 00 94 bc 0b 00  46 ff ff ff 73 cb 49 26  |e.......F...s.I&|
000b5a40  21 01 00 00 13 00 00 00  00 00 00 00 4c 6f 61 64  |!...........Load|
000b5a50  54 65 6d 70 6c 61 74 65  00 00 00 00 b8 bd 0b 00  |Template........|
000b5a60  46 ff ff ff 0c 50 37 26  ad 00 00 00 13 00 00 00  |F....P7&........|
000b5a70  00 00 00 00 4d 41 58 4e  41 4d 45 00 68 be 0b 00  |....MAXNAME.h...|
000b5a80  46 ff ff ff 46 bf e7 24  07 01 00 00 13 00 00 00  |F...F..$........|
000b5a90  00 00 00 00 6d 65 6e 75  66 6c 61 67 73 00 00 00  |....menuflags...|
000b5aa0  70 bf 0b 00 46 ff ff ff  e2 a2 e8 24 03 01 00 00  |p...F......$....|
000b5ab0  13 00 00 00 00 00 00 00  6d 65 6e 75 68 64 72 00  |........menuhdr.|
000b5ac0  74 c0 0b 00 46 ff ff ff  b5 c7 e7 24 e7 00 00 00  |t...F......$....|
000b5ad0  13 00 00 00 00 00 00 00  6d 65 6e 75 69 74 65 6d  |........menuitem|
000b5ae0  00 00 00 00 5c c1 0b 00  46 ff ff ff 6d a7 e8 24  |....\...F...m..$|
000b5af0  63 00 00 00 13 00 00 00  00 00 00 00 6d 65 6e 75  |c...........menu|
000b5b00  70 74 72 00 c0 c1 0b 00  46 ff ff ff 89 ac e8 24  |ptr.....F......$|
000b5b10  d8 00 00 00 13 00 00 00  00 00 00 00 6d 65 6e 75  |............menu|
000b5b20  73 74 72 00 98 c2 0b 00  46 ff ff ff 99 41 e8 24  |str.....F....A.$|
000b5b30  e5 00 00 00 13 00 00 00  00 00 00 00 6d 6f 75 73  |............mous|
000b5b40  65 73 74 72 00 00 00 00  80 c3 0b 00 46 ff ff ff  |estr........F...|
000b5b50  3d 49 e8 24 19 03 00 00  13 00 00 00 00 00 00 00  |=I.$............|
000b5b60  6d 73 67 61 63 74 69 6f  6e 00 00 00 9c c6 0b 00  |msgaction.......|
000b5b70  46 ff ff ff 62 65 e8 24  f8 00 00 00 13 00 00 00  |F...be.$........|
000b5b80  00 00 00 00 6d 73 67 64  61 74 61 6c 6f 61 64 00  |....msgdataload.|
000b5b90  94 c7 0b 00 46 ff ff ff  83 6e e7 24 b5 00 00 00  |....F....n.$....|
000b5ba0  13 00 00 00 00 00 00 00  6d 73 67 64 61 74 61 6f  |........msgdatao|
000b5bb0  70 65 6e 00 4c c8 0b 00  46 ff ff ff d5 58 e8 24  |pen.L...F....X.$|
000b5bc0  fb 00 00 00 13 00 00 00  00 00 00 00 6d 73 67 64  |............msgd|
000b5bd0  61 74 61 73 61 76 65 00  48 c9 0b 00 46 ff ff ff  |atasave.H...F...|
000b5be0  40 5d e7 24 00 01 00 00  13 00 00 00 00 00 00 00  |@].$............|
000b5bf0  6d 73 67 64 61 74 61 73  61 76 65 6f 6b 00 00 00  |msgdatasaveok...|
000b5c00  48 ca 0b 00 46 ff ff ff  b5 2c b6 22 da 00 00 00  |H...F....,."....|
000b5c10  13 00 00 00 00 00 00 00  6d 73 67 64 65 76 69 63  |........msgdevic|
000b5c20  65 00 00 00 24 cb 0b 00  46 ff ff ff d4 48 e7 24  |e...$...F....H.$|
000b5c30  df 00 00 00 13 00 00 00  00 00 00 00 6d 73 67 68  |............msgh|
000b5c40  64 72 00 00 04 cc 0b 00  46 ff ff ff 93 96 e7 24  |dr......F......$|
000b5c50  b1 00 00 00 13 00 00 00  00 00 00 00 6d 73 67 68  |............msgh|
000b5c60  65 6c 70 72 65 70 6c 79  00 00 00 00 b8 cc 0b 00  |elpreply........|
000b5c70  46 ff ff ff d1 79 e8 24  b7 00 00 00 13 00 00 00  |F....y.$........|
000b5c80  00 00 00 00 6d 73 67 68  65 6c 70 72 65 71 75 65  |....msghelpreque|
000b5c90  73 74 00 00 70 cd 0b 00  46 ff ff ff 7c 82 e8 24  |st..p...F...|..$|
000b5ca0  bf 00 00 00 13 00 00 00  00 00 00 00 6d 73 67 70  |............msgp|
000b5cb0  72 69 6e 74 00 00 00 00  30 ce 0b 00 46 ff ff ff  |rint....0...F...|
000b5cc0  70 6f e8 24 b9 00 00 00  13 00 00 00 00 00 00 00  |po.$............|
000b5cd0  6d 73 67 72 61 6d 66 65  74 63 68 00 ec ce 0b 00  |msgramfetch.....|
000b5ce0  46 ff ff ff 3e 87 e7 24  c6 00 00 00 13 00 00 00  |F...>..$........|
000b5cf0  00 00 00 00 6d 73 67 72  61 6d 74 72 61 6e 73 6d  |....msgramtransm|
000b5d00  69 74 00 00 b4 cf 0b 00  46 ff ff ff 0c 2d b6 22  |it......F....-."|
000b5d10  9e 00 00 00 13 00 00 00  00 00 00 00 6d 73 67 73  |............msgs|
000b5d20  61 76 65 64 65 73 6b 00  54 d0 0b 00 46 ff ff ff  |avedesk.T...F...|
000b5d30  7a aa e7 24 2b 02 00 00  13 00 00 00 00 00 00 00  |z..$+...........|
000b5d40  6d 73 67 73 74 72 00 00  80 d2 0b 00 46 ff ff ff  |msgstr......F...|
000b5d50  cf 29 48 26 80 00 00 00  13 00 00 00 00 00 00 00  |.)H&............|
000b5d60  4e 55 4d 42 45 52 4f 46  45 56 45 4e 54 53 00 00  |NUMBEROFEVENTS..|
000b5d70  00 d3 0b 00 46 ff ff ff  4b 2e ea 24 f0 00 00 00  |....F...K..$....|
000b5d80  13 00 00 00 00 00 00 00  6f 70 65 6e 5f 74 65 6d  |........open_tem|
000b5d90  70 6c 61 74 65 00 00 00  f0 d3 0b 00 46 ff ff ff  |plate.......F...|
000b5da0  bd b9 e9 24 c0 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000b5db0  6f 70 65 6e 5f 77 69 6e  64 00 00 00 b0 d4 0b 00  |open_wind.......|
000b5dc0  46 ff ff ff ba 17 e7 24  bf 00 00 00 13 00 00 00  |F......$........|
000b5dd0  00 00 00 00 6f 70 65 6e  73 74 72 00 70 d5 0b 00  |....openstr.p...|
000b5de0  46 ff ff ff f0 c1 49 26  94 01 00 00 13 00 00 00  |F.....I&........|
000b5df0  00 00 00 00 4f 70 65 6e  54 65 6d 70 6c 61 74 65  |....OpenTemplate|
000b5e00  00 00 00 00 04 d7 0b 00  46 ff ff ff e9 07 49 26  |........F.....I&|
000b5e10  01 01 00 00 13 00 00 00  00 00 00 00 4f 70 65 6e  |............Open|
000b5e20  57 69 6e 64 6f 77 00 00  08 d8 0b 00 46 ff ff ff  |Window......F...|
000b5e30  5f ed e7 24 02 01 00 00  13 00 00 00 00 00 00 00  |_..$............|
000b5e40  70 61 6c 65 74 74 65 73  74 72 00 00 0c d9 0b 00  |palettestr......|
000b5e50  46 ff ff ff f1 e1 e8 24  e8 00 00 00 13 00 00 00  |F......$........|
000b5e60  00 00 00 00 70 61 6c 65  74 74 65 77 6f 72 64 00  |....paletteword.|
000b5e70  f4 d9 0b 00 46 ff ff ff  ac 23 4a 26 1a 02 00 00  |....F....#J&....|
000b5e80  13 00 00 00 00 00 00 00  50 6c 6f 74 49 63 6f 6e  |........PlotIcon|
000b5e90  00 00 00 00 10 dc 0b 00  46 fd ff ff 9b 89 ea 24  |........F......$|
000b5ea0  f2 00 00 00 13 00 00 00  00 00 00 00 70 6c 6f 74  |............plot|
000b5eb0  69 63 6f 6e 5f 00 00 00  04 dd 0b 00 46 ff ff ff  |icon_.......F...|
000b5ec0  04 58 37 26 9c 00 00 00  13 00 00 00 00 00 00 00  |.X7&............|
000b5ed0  70 6f 69 6e 74 00 00 00  a0 dd 0b 00 46 ff ff ff  |point.......F...|
000b5ee0  cf 04 56 26 ff 00 00 00  13 00 00 00 00 00 00 00  |..V&............|
000b5ef0  70 6f 69 6e 74 65 72 00  a0 de 0b 00 46 ff ff ff  |pointer.....F...|
000b5f00  99 15 49 26 c1 01 00 00  13 00 00 00 00 00 00 00  |..I&............|
000b5f10  50 6f 6c 6c 00 00 00 00  64 e0 0b 00 46 ff ff ff  |Poll....d...F...|
000b5f20  85 1f 49 26 e2 01 00 00  13 00 00 00 00 00 00 00  |..I&............|
000b5f30  50 6f 6c 6c 33 00 00 00  48 e2 0b 00 46 fd ff ff  |Poll3...H...F...|
000b5f40  94 22 e9 24 39 01 00 00  13 00 00 00 00 00 00 00  |.".$9...........|
000b5f50  70 6f 6c 6c 5f 00 00 00  84 e3 0b 00 46 ff ff ff  |poll_.......F...|
000b5f60  3f 00 4a 26 2d 02 00 00  13 00 00 00 00 00 00 00  |?.J&-...........|
000b5f70  50 6f 6c 6c 49 64 6c 65  00 00 00 00 b4 e5 0b 00  |PollIdle........|
000b5f80  46 ff ff ff e0 12 4a 26  52 02 00 00 13 00 00 00  |F.....J&R.......|
000b5f90  00 00 00 00 50 6f 6c 6c  49 64 6c 65 33 00 00 00  |....PollIdle3...|
000b5fa0  08 e8 0b 00 46 fd ff ff  71 28 e9 24 3f 01 00 00  |....F...q(.$?...|
000b5fb0  13 00 00 00 00 00 00 00  70 6f 6c 6c 69 64 6c 65  |........pollidle|
000b5fc0  5f 00 00 00 48 e9 0b 00  46 ff ff ff 95 7f ea 24  |_...H...F......$|
000b5fd0  63 02 00 00 13 00 00 00  00 00 00 00 50 72 6f 63  |c...........Proc|
000b5fe0  65 73 73 4b 65 79 00 00  ac eb 0b 00 46 ff ff ff  |essKey......F...|
000b5ff0  ff d5 e7 24 da 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000b6000  70 73 68 61 70 65 73 74  72 00 00 00 88 ec 0b 00  |pshapestr.......|
000b6010  46 ff ff ff 1a 35 4a 26  34 01 00 00 13 00 00 00  |F....5J&4.......|
000b6020  00 00 00 00 52 65 61 64  50 61 6c 65 74 74 65 00  |....ReadPalette.|
000b6030  bc ed 0b 00 46 fd ff ff  5d 9d ea 24 d7 00 00 00  |....F...]..$....|
000b6040  13 00 00 00 00 00 00 00  72 65 61 64 70 61 6c 65  |........readpale|
000b6050  74 74 65 5f 00 00 00 00  94 ee 0b 00 46 ff ff ff  |tte_........F...|
000b6060  2b ea 4a 26 4b 03 00 00  13 00 00 00 00 00 00 00  |+.J&K...........|
000b6070  52 65 61 64 50 69 78 54  72 61 6e 73 00 00 00 00  |ReadPixTrans....|
000b6080  e0 f1 0b 00 46 fd ff ff  f8 8e ea 24 21 01 00 00  |....F......$!...|
000b6090  13 00 00 00 00 00 00 00  72 65 61 64 70 69 78 74  |........readpixt|
000b60a0  72 61 6e 73 5f 00 00 00  04 f3 0b 00 46 ff ff ff  |rans_.......F...|
000b60b0  55 66 37 26 bf 00 00 00  13 00 00 00 00 00 00 00  |Uf7&............|
000b60c0  72 65 63 74 00 00 00 00  c4 f3 0b 00 46 ff ff ff  |rect........F...|
000b60d0  c5 c2 e9 24 3b 01 00 00  13 00 00 00 00 00 00 00  |...$;...........|
000b60e0  72 65 64 72 61 77 5f 77  69 6e 64 00 00 f5 0b 00  |redraw_wind.....|
000b60f0  46 ff ff ff 05 36 e7 24  d1 00 00 00 13 00 00 00  |F....6.$........|
000b6100  00 00 00 00 72 65 64 72  61 77 73 74 72 00 00 00  |....redrawstr...|
000b6110  d4 f5 0b 00 46 ff ff ff  2c 2a 49 26 80 02 00 00  |....F...,*I&....|
000b6120  13 00 00 00 00 00 00 00  52 65 64 72 61 77 57 69  |........RedrawWi|
000b6130  6e 64 6f 77 00 00 00 00  54 f8 0b 00 46 ff ff ff  |ndow....T...F...|
000b6140  8e ec 49 26 33 02 00 00  13 00 00 00 00 00 00 00  |..I&3...........|
000b6150  52 65 70 6f 72 74 45 72  72 6f 72 00 88 fa 0b 00  |ReportError.....|
000b6160  46 fd ff ff c0 59 e9 24  05 01 00 00 13 00 00 00  |F....Y.$........|
000b6170  00 00 00 00 72 65 70 6f  72 74 65 72 72 6f 72 5f  |....reporterror_|
000b6180  00 00 00 00 90 fb 0b 00  46 ff ff ff b2 2e b6 22  |........F......"|
000b6190  2d 01 00 00 13 00 00 00  00 00 00 00 52 65 70 6f  |-...........Repo|
000b61a0  72 74 45 72 72 6f 72 52  00 00 00 00 c0 fc 0b 00  |rtErrorR........|
000b61b0  46 ff ff ff c1 92 e9 24  4c 01 00 00 13 00 00 00  |F......$L.......|
000b61c0  00 00 00 00 73 61 76 65  5f 66 70 5f 73 74 61 74  |....save_fp_stat|
000b61d0  65 5f 6f 6e 5f 70 6f 6c  6c 00 00 00 0c fe 0b 00  |e_on_poll.......|
000b61e0  46 ff ff ff c3 2e b6 22  01 01 00 00 13 00 00 00  |F......"........|
000b61f0  00 00 00 00 53 61 76 65  46 50 53 74 61 74 65 4f  |....SaveFPStateO|
000b6200  6e 50 6f 6c 6c 00 00 00  10 ff 0b 00 46 ff ff ff  |nPoll.......F...|
000b6210  c8 68 4a 26 94 02 00 00  13 00 00 00 00 00 00 00  |.hJ&............|
000b6220  53 65 6e 64 4d 65 73 73  61 67 65 00 a4 01 0c 00  |SendMessage.....|
000b6230  46 fd ff ff ba 61 e9 24  1b 01 00 00 13 00 00 00  |F....a.$........|
000b6240  00 00 00 00 73 65 6e 64  6d 65 73 73 61 67 65 5f  |....sendmessage_|
000b6250  00 00 00 00 c0 02 0c 00  46 ff ff ff d5 69 e9 24  |........F....i.$|
000b6260  2b 01 00 00 13 00 00 00  00 00 00 00 73 65 6e 64  |+...........send|
000b6270  77 6d 65 73 73 61 67 65  00 00 00 00 ec 03 0c 00  |wmessage........|
000b6280  46 ff ff ff 51 cd ea 24  c9 00 00 00 13 00 00 00  |F...Q..$........|
000b6290  00 00 00 00 73 65 74 5f  63 61 72 65 74 5f 70 6f  |....set_caret_po|
000b62a0  73 00 00 00 b8 04 0c 00  46 ff ff ff 5c 01 ea 24  |s.......F...\..$|
000b62b0  d9 00 00 00 13 00 00 00  00 00 00 00 73 65 74 5f  |............set_|
000b62c0  65 78 74 65 6e 74 00 00  94 05 0c 00 46 ff ff ff  |extent......F...|
000b62d0  50 56 ea 24 4c 01 00 00  13 00 00 00 00 00 00 00  |PV.$L...........|
000b62e0  73 65 74 5f 69 63 6f 6e  5f 73 74 61 74 65 00 00  |set_icon_state..|
000b62f0  e0 06 0c 00 46 ff ff ff  50 35 e9 24 d1 00 00 00  |....F...P5.$....|
000b6300  13 00 00 00 00 00 00 00  73 65 74 5f 70 6f 69 6e  |........set_poin|
000b6310  74 5f 73 68 61 70 65 00  b4 07 0c 00 46 ff ff ff  |t_shape.....F...|
000b6320  91 81 49 26 f6 01 00 00  13 00 00 00 00 00 00 00  |..I&............|
000b6330  53 65 74 43 61 72 65 74  50 6f 73 69 74 69 6f 6e  |SetCaretPosition|
000b6340  00 00 00 00 ac 09 0c 00  46 ff ff ff 85 5c 4a 26  |........F....\J&|
000b6350  00 02 00 00 13 00 00 00  00 00 00 00 53 65 74 43  |............SetC|
000b6360  6f 6c 6f 75 72 00 00 00  ac 0b 0c 00 46 fd ff ff  |olour.......F...|
000b6370  c4 a6 ea 24 b9 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000b6380  73 65 74 63 6f 6c 6f 75  72 5f 00 00 68 0c 0c 00  |setcolour_..h...|
000b6390  46 ff ff ff 3d b8 49 26  19 01 00 00 13 00 00 00  |F...=.I&........|
000b63a0  00 00 00 00 53 65 74 45  78 74 65 6e 74 00 00 00  |....SetExtent...|
000b63b0  84 0d 0c 00 46 ff ff ff  b1 c3 ea 24 99 01 00 00  |....F......$....|
000b63c0  13 00 00 00 00 00 00 00  53 65 74 46 6f 6e 74 43  |........SetFontC|
000b63d0  6f 6c 6f 75 72 73 00 00  20 0f 0c 00 46 ff ff ff  |olours.. ...F...|
000b63e0  2f 4e 49 26 60 01 00 00  13 00 00 00 00 00 00 00  |/NI&`...........|
000b63f0  53 65 74 49 63 6f 6e 53  74 61 74 65 00 00 00 00  |SetIconState....|
000b6400  80 10 0c 00 46 ff ff ff  fb 28 4a 26 63 01 00 00  |....F....(J&c...|
000b6410  13 00 00 00 00 00 00 00  53 65 74 4d 6f 64 65 00  |........SetMode.|
000b6420  e4 11 0c 00 46 fd ff ff  d1 43 e9 24 ae 00 00 00  |....F....C.$....|
000b6430  13 00 00 00 00 00 00 00  73 65 74 6d 6f 64 65 5f  |........setmode_|
000b6440  00 00 00 00 94 12 0c 00  46 ff ff ff 78 2f 4a 26  |........F...x/J&|
000b6450  76 01 00 00 13 00 00 00  00 00 00 00 53 65 74 50  |v...........SetP|
000b6460  61 6c 65 74 74 65 00 00  0c 14 0c 00 46 fd ff ff  |alette......F...|
000b6470  8d a3 ea 24 d4 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000b6480  73 65 74 70 61 6c 65 74  74 65 5f 00 e0 14 0c 00  |setpalette_.....|
000b6490  46 ff ff ff 87 bc 49 26  43 01 00 00 13 00 00 00  |F.....I&C.......|
000b64a0  00 00 00 00 53 65 74 50  6f 69 6e 74 65 72 53 68  |....SetPointerSh|
000b64b0  61 70 65 00 24 16 0c 00  46 ff ff ff cd 83 e9 24  |ape.$...F......$|
000b64c0  58 02 00 00 13 00 00 00  00 00 00 00 53 6c 6f 74  |X...........Slot|
000b64d0  53 69 7a 65 00 00 00 00  7c 18 0c 00 46 ff ff ff  |Size....|...F...|
000b64e0  b6 55 b4 24 d2 00 00 00  13 00 00 00 00 00 00 00  |.U.$............|
000b64f0  73 70 72 69 74 65 61 72  65 61 00 00 50 19 0c 00  |spritearea..P...|
000b6500  46 ff ff ff 97 88 4a 26  38 02 00 00 13 00 00 00  |F.....J&8.......|
000b6510  00 00 00 00 53 70 72 69  74 65 4f 70 00 00 00 00  |....SpriteOp....|
000b6520  88 1b 0c 00 46 fd ff ff  2b 48 e9 24 da 00 00 00  |....F...+H.$....|
000b6530  13 00 00 00 00 00 00 00  73 70 72 69 74 65 6f 70  |........spriteop|
000b6540  5f 00 00 00 64 1c 0c 00  46 ff ff ff f7 4c e9 24  |_...d...F....L.$|
000b6550  da 00 00 00 13 00 00 00  00 00 00 00 73 70 72 69  |............spri|
000b6560  74 65 6f 70 5f 66 75 6c  6c 00 00 00 40 1d 0c 00  |teop_full...@...|
000b6570  46 ff ff ff 91 dd 49 26  bf 01 00 00 13 00 00 00  |F.....I&........|
000b6580  00 00 00 00 53 74 61 72  74 54 61 73 6b 00 00 00  |....StartTask...|
000b6590  00 1f 0c 00 46 fd ff ff  d1 40 e9 24 d1 00 00 00  |....F....@.$....|
000b65a0  13 00 00 00 00 00 00 00  73 74 61 72 74 74 61 73  |........starttas|
000b65b0  6b 5f 00 00 d4 1f 0c 00  46 ff ff ff 91 30 b6 22  |k_......F....0."|
000b65c0  8f 00 00 00 13 00 00 00  00 00 00 00 74 00 00 00  |............t...|
000b65d0  64 20 0c 00 46 ff ff ff  24 3d e9 24 dd 00 00 00  |d ..F...$=.$....|
000b65e0  13 00 00 00 00 00 00 00  74 61 73 6b 63 6c 6f 73  |........taskclos|
000b65f0  65 00 00 00 44 21 0c 00  46 ff ff ff 43 1b e9 24  |e...D!..F...C..$|
000b6600  a3 01 00 00 13 00 00 00  00 00 00 00 74 61 73 6b  |............task|
000b6610  69 6e 69 74 00 00 00 00  e8 22 0c 00 46 ff ff ff  |init....."..F...|
000b6620  6a e1 e7 24 0c 01 00 00  13 00 00 00 00 00 00 00  |j..$............|
000b6630  74 65 6d 70 6c 61 74 65  00 00 00 00 f4 23 0c 00  |template.....#..|
000b6640  46 ff ff ff ab 13 4b 26  39 02 00 00 13 00 00 00  |F.....K&9.......|
000b6650  00 00 00 00 54 72 61 6e  73 66 65 72 42 6c 6f 63  |....TransferBloc|
000b6660  6b 00 00 00 30 26 0c 00  46 ff ff ff 77 89 e9 24  |k...0&..F...w..$|
000b6670  60 01 00 00 13 00 00 00  00 00 00 00 74 72 61 6e  |`...........tran|
000b6680  73 66 65 72 62 6c 6f 63  6b 5f 00 00 90 27 0c 00  |sferblock_...'..|
000b6690  46 fd ff ff c0 20 e7 24  1a 03 00 00 13 00 00 00  |F.... .$........|
000b66a0  00 00 00 00 74 79 70 65  73 5f 00 00 ac 2a 0c 00  |....types_...*..|
000b66b0  46 ff ff ff d4 c8 e9 24  5b 01 00 00 13 00 00 00  |F......$[.......|
000b66c0  00 00 00 00 75 70 64 61  74 65 5f 77 69 6e 64 00  |....update_wind.|
000b66d0  08 2c 0c 00 46 ff ff ff  03 37 49 26 1a 02 00 00  |.,..F....7I&....|
000b66e0  13 00 00 00 00 00 00 00  55 70 64 61 74 65 57 69  |........UpdateWi|
000b66f0  6e 64 6f 77 00 00 00 00  24 2e 0c 00 46 ff ff ff  |ndow....$...F...|
000b6700  83 cf e8 24 91 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000b6710  77 00 00 00 b8 2e 0c 00  46 ff ff ff 81 f3 e7 24  |w.......F......$|
000b6720  47 01 00 00 13 00 00 00  00 00 00 00 77 63 6f 6c  |G...........wcol|
000b6730  6f 75 72 73 00 00 00 00  00 30 0c 00 46 ff ff ff  |ours.....0..F...|
000b6740  33 31 b6 22 1d 02 00 00  13 00 00 00 00 00 00 00  |31."............|
000b6750  77 66 6c 61 67 73 00 00  20 32 0c 00 46 ff ff ff  |wflags.. 2..F...|
000b6760  84 b5 e8 24 c1 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000b6770  77 68 69 63 68 5f 62 6c  6f 63 6b 00 e4 32 0c 00  |which_block..2..|
000b6780  46 ff ff ff 6e 72 ea 24  06 01 00 00 13 00 00 00  |F...nr.$........|
000b6790  00 00 00 00 77 68 69 63  68 5f 69 63 6f 6e 00 00  |....which_icon..|
000b67a0  ec 33 0c 00 46 ff ff ff  c0 7e 0b 2e 0d 02 00 00  |.3..F....~......|
000b67b0  13 00 00 00 00 00 00 00  57 68 69 63 68 49 63 6f  |........WhichIco|
000b67c0  6e 00 00 00 fc 35 0c 00  46 ff ff ff 57 06 e7 24  |n....5..F...W..$|
000b67d0  fc 01 00 00 13 00 00 00  00 00 00 00 77 69 6e 64  |............wind|
000b67e0  00 00 00 00 f8 37 0c 00  46 ff ff ff a0 1f e8 24  |.....7..F......$|
000b67f0  d7 00 00 00 13 00 00 00  00 00 00 00 77 69 6e 66  |............winf|
000b6800  6f 00 00 00 d0 38 0c 00  46 ff ff ff a2 2b e8 24  |o....8..F....+.$|
000b6810  a5 00 00 00 13 00 00 00  00 00 00 00 77 73 74 61  |............wsta|
000b6820  74 65 00 00 44 41 54 41  b9 01 00 00 57 69 6d 70  |te..DATA....Wimp|
000b6830  5f 42 61 73 65 4f 66 53  70 72 69 74 65 73 0a 53  |_BaseOfSprites.S|
000b6840  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
000b6850  3e 20 2a 57 69 6d 70 5f  42 61 73 65 4f 66 53 70  |> *Wimp_BaseOfSp|
000b6860  72 69 74 65 73 20 28 76  6f 69 64 20 2a 2a 72 6f  |rites (void **ro|
000b6870  6d 5f 62 61 73 65 2c 20  76 6f 69 64 20 2a 2a 72  |m_base, void **r|
000b6880  61 6d 5f 62 61 73 65 29  3b 0a 48 65 61 64 65 72  |am_base);.Header|
000b6890  3a 09 3c 44 65 73 6b 4c  69 62 3a 57 69 6d 70 53  |:.<DeskLib:WimpS|
000b68a0  57 49 73 2e 68 3d 3e 57  69 6d 70 53 57 49 73 3e  |WIs.h=>WimpSWIs>|
000b68b0  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
000b68c0  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
000b68d0  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
000b68e0  0a 44 65 73 6b 74 6f 70  20 43 3a 20 53 65 65 20  |.Desktop C: See |
000b68f0  3c 77 69 6d 70 5f 62 61  73 65 6f 66 73 70 72 69  |<wimp_baseofspri|
000b6900  74 65 73 3d 3e 77 69 6d  70 5f 62 61 73 65 6f 66  |tes=>wimp_baseof|
000b6910  73 70 72 69 74 65 73 5f  3e 0a 0a 54 68 69 73 20  |sprites_>..This |
000b6920  66 75 6e 63 74 69 6f 6e  20 72 65 74 75 72 6e 73  |function returns|
000b6930  20 74 68 65 20 61 64 64  72 65 73 73 65 73 20 6f  | the addresses o|
000b6940  66 20 74 68 65 20 52 4f  4d 20 61 6e 64 20 52 41  |f the ROM and RA|
000b6950  4d 20 70 61 72 74 73 20  6f 66 20 74 68 65 20 57  |M parts of the W|
000b6960  69 6d 70 20 73 70 72 69  74 65 20 70 6f 6f 6c 2e  |imp sprite pool.|
000b6970  20 54 68 65 20 52 41 4d  20 61 64 64 72 65 73 73  | The RAM address|
000b6980  20 6d 6f 76 65 73 20 61  72 6f 75 6e 64 20 61 73  | moves around as|
000b6990  20 69 74 73 20 63 6f 6e  74 65 6e 74 73 20 63 68  | its contents ch|
000b69a0  61 6e 67 65 2e 0a 0a 41  63 6f 72 6e 20 72 65 63  |ange...Acorn rec|
000b69b0  6f 6d 6d 65 6e 64 20 74  68 61 74 20 79 6f 75 20  |ommend that you |
000b69c0  73 68 6f 75 6c 64 20 6e  6f 74 20 75 73 65 20 74  |should not use t|
000b69d0  68 69 73 20 66 75 6e 63  74 69 6f 6e 2e 00 00 00  |his function....|
000b69e0  44 41 54 41 c6 00 00 00  77 69 6d 70 5f 62 61 73  |DATA....wimp_bas|
000b69f0  65 6f 66 73 70 72 69 74  65 73 0a 53 79 6e 74 61  |eofsprites.Synta|
000b6a00  78 3a 09 76 6f 69 64 20  2a 77 69 6d 70 5f 62 61  |x:.void *wimp_ba|
000b6a10  73 65 6f 66 73 70 72 69  74 65 73 20 28 76 6f 69  |seofsprites (voi|
000b6a20  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 77 69 6d  |d);.Header:.<wim|
000b6a30  70 2e 68 3d 3e 77 69 6d  70 5f 68 3e 0a 0a 52 65  |p.h=>wimp_h>..Re|
000b6a40  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
000b6a50  6f 20 57 69 6d 70 20 73  70 72 69 74 65 20 61 72  |o Wimp sprite ar|
000b6a60  65 61 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ea...This functi|
000b6a70  6f 6e 20 72 65 74 75 72  6e 73 20 74 68 65 20 73  |on returns the s|
000b6a80  70 72 69 74 65 20 70 6f  69 6e 74 65 72 20 6f 66  |prite pointer of|
000b6a90  20 74 68 65 20 57 69 6d  70 20 73 70 72 69 74 65  | the Wimp sprite|
000b6aa0  20 61 72 65 61 2e 00 00  44 41 54 41 4f 01 00 00  | area...DATAO...|
000b6ab0  77 69 6d 70 5f 62 62 69  74 73 0a 54 68 69 73 20  |wimp_bbits.This |
000b6ac0  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
000b6ad0  69 6e 20 3c 77 69 6d 70  2e 68 3d 3e 77 69 6d 70  |in <wimp.h=>wimp|
000b6ae0  5f 68 3e 2e 20 49 74 20  69 73 20 61 6e 20 65 6e  |_h>. It is an en|
000b6af0  75 6d 65 72 61 74 65 64  20 74 79 70 65 20 63 6f  |umerated type co|
000b6b00  6e 74 61 69 6e 69 6e 67  20 74 68 65 20 76 61 6c  |ntaining the val|
000b6b10  75 65 73 20 6f 66 20 74  68 65 20 57 69 6d 70 20  |ues of the Wimp |
000b6b20  62 75 74 74 6f 6e 20 73  74 61 74 65 20 62 69 74  |button state bit|
000b6b30  73 3a 0a 0a 20 20 5c 7b  0a 20 20 20 20 77 69 6d  |s:..  \{.    wim|
000b6b40  70 5f 42 52 49 47 48 54  09 3d 20 30 78 30 30 31  |p_BRIGHT.= 0x001|
000b6b50  2c 0a 20 20 20 20 77 69  6d 70 5f 42 4d 49 44 09  |,.    wimp_BMID.|
000b6b60  3d 20 30 78 30 30 32 2c  0a 20 20 20 20 77 69 6d  |= 0x002,.    wim|
000b6b70  70 5f 42 4c 45 46 54 09  3d 20 30 78 30 30 34 2c  |p_BLEFT.= 0x004,|
000b6b80  0a 20 20 20 20 77 69 6d  70 5f 42 44 52 41 47 52  |.    wimp_BDRAGR|
000b6b90  49 47 48 54 09 3d 20 30  78 30 31 30 2c 0a 20 20  |IGHT.= 0x010,.  |
000b6ba0  20 20 77 69 6d 70 5f 42  44 52 41 47 4c 45 46 54  |  wimp_BDRAGLEFT|
000b6bb0  09 3d 20 30 78 30 34 30  2c 0a 20 20 20 20 77 69  |.= 0x040,.    wi|
000b6bc0  6d 70 5f 42 43 4c 49 43  4b 52 49 47 48 54 09 3d  |mp_BCLICKRIGHT.=|
000b6bd0  20 30 78 31 30 30 2c 0a  20 20 20 20 77 69 6d 70  | 0x100,.    wimp|
000b6be0  5f 42 43 4c 49 43 4b 4c  45 46 54 09 3d 20 30 78  |_BCLICKLEFT.= 0x|
000b6bf0  34 30 30 0a 20 20 7d 00  44 41 54 41 f6 01 00 00  |400.  }.DATA....|
000b6c00  57 69 6d 70 5f 42 6c 6f  63 6b 43 6f 70 79 0a 53  |Wimp_BlockCopy.S|
000b6c10  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
000b6c20  3e 20 2a 57 69 6d 70 5f  42 6c 6f 63 6b 43 6f 70  |> *Wimp_BlockCop|
000b6c30  79 20 28 3c 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |y (<window_handl|
000b6c40  65 3e 20 77 69 6e 2c 20  3c 77 69 6d 70 5f 62 6f  |e> win, <wimp_bo|
000b6c50  78 3e 20 2a 73 6f 75 72  63 65 2c 20 69 6e 74 20  |x> *source, int |
000b6c60  78 2c 20 69 6e 74 20 79  29 3b 0a 48 65 61 64 65  |x, int y);.Heade|
000b6c70  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 57 69 6d 70  |r:.<DeskLib:Wimp|
000b6c80  53 57 49 73 2e 68 3d 3e  57 69 6d 70 53 57 49 73  |SWIs.h=>WimpSWIs|
000b6c90  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000b6ca0  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000b6cb0  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000b6cc0  0a 0a 44 65 73 6b 74 6f  70 20 43 3a 20 53 65 65  |..Desktop C: See|
000b6cd0  20 3c 77 69 6d 70 5f 62  6c 6f 63 6b 63 6f 70 79  | <wimp_blockcopy|
000b6ce0  3d 3e 77 69 6d 70 5f 62  6c 6f 63 6b 63 6f 70 79  |=>wimp_blockcopy|
000b6cf0  5f 3e 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |_>...This functi|
000b6d00  6f 6e 20 63 6f 70 69 65  73 20 61 20 62 6c 6f 63  |on copies a bloc|
000b6d10  6b 20 6f 66 20 77 6f 72  6b 20 61 72 65 61 20 73  |k of work area s|
000b6d20  70 61 63 65 20 28 64 65  66 69 6e 65 64 20 62 79  |pace (defined by|
000b6d30  20 2f 77 69 6e 2f 20 61  6e 64 20 7b 2f 7d 73 6f  | /win/ and {/}so|
000b6d40  75 72 63 65 7b 2f 7d 29  20 74 6f 20 61 6e 6f 74  |urce{/}) to anot|
000b6d50  68 65 72 20 70 6f 73 69  74 69 6f 6e 20 7b 2f 7d  |her position {/}|
000b6d60  28 78 2c 79 29 7b 2f 7d  2e 20 4e 6f 74 65 20 74  |(x,y){/}. Note t|
000b6d70  68 61 74 20 74 68 65 20  73 70 61 63 65 20 63 6f  |hat the space co|
000b6d80  70 69 65 64 20 64 6f 65  73 20 6e 6f 74 20 61 63  |pied does not ac|
000b6d90  74 75 61 6c 6c 79 20 68  61 76 65 20 74 6f 20 62  |tually have to b|
000b6da0  65 20 76 69 73 69 62 6c  65 20 2d 20 74 68 65 20  |e visible - the |
000b6db0  57 69 6d 70 20 77 69 6c  6c 20 61 73 6b 20 79 6f  |Wimp will ask yo|
000b6dc0  75 20 74 6f 20 72 65 64  72 61 77 20 62 69 74 73  |u to redraw bits|
000b6dd0  20 74 68 61 74 20 69 74  20 63 61 6e 6e 6f 74 20  | that it cannot |
000b6de0  63 6f 70 79 20 64 69 72  65 63 74 6c 79 2e 00 00  |copy directly...|
000b6df0  44 41 54 41 f6 00 00 00  77 69 6d 70 5f 62 6c 6f  |DATA....wimp_blo|
000b6e00  63 6b 63 6f 70 79 0a 53  79 6e 74 61 78 3a 09 3c  |ckcopy.Syntax:.<|
000b6e10  6f 73 5f 65 72 72 6f 72  3e 20 2a 77 69 6d 70 5f  |os_error> *wimp_|
000b6e20  62 6c 6f 63 6b 63 6f 70  79 20 28 3c 77 69 6d 70  |blockcopy (<wimp|
000b6e30  5f 77 3e 20 77 69 6e 2c  20 3c 77 69 6d 70 5f 62  |_w> win, <wimp_b|
000b6e40  6f 78 3e 20 2a 73 72 63  2c 20 69 6e 74 20 78 2c  |ox> *src, int x,|
000b6e50  20 69 6e 74 20 79 29 3b  0a 48 65 61 64 65 72 3a  | int y);.Header:|
000b6e60  09 3c 77 69 6d 70 2e 68  3d 3e 77 69 6d 70 5f 68  |.<wimp.h=>wimp_h|
000b6e70  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000b6e80  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000b6e90  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000b6ea0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000b6eb0  63 6f 70 69 65 73 20 61  20 62 6c 6f 63 6b 20 6f  |copies a block o|
000b6ec0  66 20 77 6f 72 6b 20 61  72 65 61 20 66 72 6f 6d  |f work area from|
000b6ed0  20 2f 73 72 63 2f 20 74  6f 20 7b 2f 7d 28 78 2c  | /src/ to {/}(x,|
000b6ee0  79 29 7b 2f 7d 2e 00 00  44 41 54 41 f2 00 00 00  |y){/}...DATA....|
000b6ef0  77 69 6d 70 5f 62 6f 78  0a 54 68 69 73 20 74 79  |wimp_box.This ty|
000b6f00  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
000b6f10  20 3c 77 69 6d 70 2e 68  3d 3e 77 69 6d 70 5f 68  | <wimp.h=>wimp_h|
000b6f20  3e 20 28 44 65 73 6b 74  6f 70 20 43 29 20 61 6e  |> (Desktop C) an|
000b6f30  64 20 3c 44 65 73 6b 4c  69 62 3a 57 69 6d 70 2e  |d <DeskLib:Wimp.|
000b6f40  68 3d 3e 57 69 6d 70 3e  20 61 73 20 61 20 74 79  |h=>Wimp> as a ty|
000b6f50  70 65 20 68 6f 6c 64 69  6e 67 20 61 20 62 6f 78  |pe holding a box|
000b6f60  20 69 6e 20 74 65 72 6d  73 20 6f 66 20 74 77 6f  | in terms of two|
000b6f70  20 63 6f 72 6e 65 72 73  2e 20 49 74 20 69 73 20  | corners. It is |
000b6f80  64 65 66 69 6e 65 64 20  69 6e 20 44 65 73 6b 74  |defined in Deskt|
000b6f90  6f 70 20 43 20 61 73 3a  0a 0a 20 20 5c 7b 0a 20  |op C as:..  \{. |
000b6fa0  20 20 20 69 6e 74 20 20  78 30 2c 79 30 2c 78 31  |   int  x0,y0,x1|
000b6fb0  2c 79 31 3b 0a 20 20 7d  0a 0a 61 6e 64 20 69 6e  |,y1;.  }..and in|
000b6fc0  20 44 65 73 6b 4c 69 62  20 61 73 20 61 20 3c 77  | DeskLib as a <w|
000b6fd0  69 6d 70 5f 72 65 63 74  3e 2e 00 00 44 41 54 41  |imp_rect>...DATA|
000b6fe0  c9 00 00 00 77 69 6d 70  5f 63 61 72 65 74 73 74  |....wimp_caretst|
000b6ff0  72 0a 54 68 69 73 20 74  79 70 65 20 69 73 20 64  |r.This type is d|
000b7000  65 66 69 6e 65 64 20 69  6e 20 3c 77 69 6d 70 2e  |efined in <wimp.|
000b7010  68 3d 3e 77 69 6d 70 5f  68 3e 2e 20 49 74 20 69  |h=>wimp_h>. It i|
000b7020  73 20 61 20 73 74 72 75  63 74 75 72 65 20 75 73  |s a structure us|
000b7030  65 64 20 74 6f 20 68 6f  6c 64 20 61 20 63 61 72  |ed to hold a car|
000b7040  65 74 20 70 6f 73 69 74  69 6f 6e 3a 0a 0a 20 20  |et position:..  |
000b7050  5c 7b 0a 20 20 20 20 3c  77 69 6d 70 5f 77 3e 09  |\{.    <wimp_w>.|
000b7060  77 3b 0a 20 20 20 20 3c  77 69 6d 70 5f 69 3e 09  |w;.    <wimp_i>.|
000b7070  69 3b 0a 20 20 20 20 69  6e 74 09 09 78 2c 79 3b  |i;.    int..x,y;|
000b7080  0a 20 20 20 20 69 6e 74  09 09 68 65 69 67 68 74  |.    int..height|
000b7090  3b 0a 20 20 20 20 69 6e  74 09 09 69 6e 64 65 78  |;.    int..index|
000b70a0  3b 0a 20 20 7d 00 00 00  44 41 54 41 cb 00 00 00  |;.  }...DATA....|
000b70b0  77 69 6d 70 5f 63 6c 6f  73 65 5f 74 65 6d 70 6c  |wimp_close_templ|
000b70c0  61 74 65 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |ate.Syntax:.<os_|
000b70d0  65 72 72 6f 72 3e 20 2a  77 69 6d 70 5f 63 6c 6f  |error> *wimp_clo|
000b70e0  73 65 5f 74 65 6d 70 6c  61 74 65 20 28 76 6f 69  |se_template (voi|
000b70f0  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 77 69 6d  |d);.Header:.<wim|
000b7100  70 2e 68 3d 3e 77 69 6d  70 5f 68 3e 0a 0a 52 65  |p.h=>wimp_h>..Re|
000b7110  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
000b7120  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
000b7130  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
000b7140  73 20 66 75 6e 63 74 69  6f 6e 20 63 6c 6f 73 65  |s function close|
000b7150  73 20 74 68 65 20 63 75  72 72 65 6e 74 6c 79 20  |s the currently |
000b7160  6f 70 65 6e 20 74 65 6d  70 6c 61 74 65 20 66 69  |open template fi|
000b7170  6c 65 2e 00 44 41 54 41  bc 00 00 00 77 69 6d 70  |le..DATA....wimp|
000b7180  5f 63 6c 6f 73 65 5f 77  69 6e 64 0a 53 79 6e 74  |_close_wind.Synt|
000b7190  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
000b71a0  77 69 6d 70 5f 63 6c 6f  73 65 5f 77 69 6e 64 20  |wimp_close_wind |
000b71b0  28 3c 77 69 6d 70 5f 77  3e 20 77 69 6e 29 3b 0a  |(<wimp_w> win);.|
000b71c0  48 65 61 64 65 72 3a 09  3c 77 69 6d 70 2e 68 3d  |Header:.<wimp.h=|
000b71d0  3e 77 69 6d 70 5f 68 3e  0a 0a 52 65 74 75 72 6e  |>wimp_h>..Return|
000b71e0  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000b71f0  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000b7200  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000b7210  6e 63 74 69 6f 6e 73 20  63 6c 6f 73 65 73 20 74  |nctions closes t|
000b7220  68 65 20 67 69 76 65 6e  20 77 69 6e 64 6f 77 2e  |he given window.|
000b7230  44 41 54 41 6b 01 00 00  57 69 6d 70 5f 43 6c 6f  |DATAk...Wimp_Clo|
000b7240  73 65 44 6f 77 6e 0a 53  79 6e 74 61 78 3a 09 3c  |seDown.Syntax:.<|
000b7250  6f 73 5f 65 72 72 6f 72  3e 20 2a 57 69 6d 70 5f  |os_error> *Wimp_|
000b7260  43 6c 6f 73 65 44 6f 77  6e 20 28 3c 74 61 73 6b  |CloseDown (<task|
000b7270  5f 68 61 6e 64 6c 65 3e  20 74 61 73 6b 29 3b 0a  |_handle> task);.|
000b7280  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
000b7290  3a 57 69 6d 70 53 57 49  73 2e 68 3d 3e 57 69 6d  |:WimpSWIs.h=>Wim|
000b72a0  70 53 57 49 73 3e 0a 0a  52 65 74 75 72 6e 73 3a  |pSWIs>..Returns:|
000b72b0  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
000b72c0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
000b72d0  6e 6f 6e 65 2e 0a 0a 53  65 65 20 74 68 65 20 44  |none...See the D|
000b72e0  65 73 6b 74 6f 70 20 43  20 66 75 6e 63 74 69 6f  |esktop C functio|
000b72f0  6e 2c 20 3c 77 69 6d 70  5f 63 6c 6f 73 65 64 6f  |n, <wimp_closedo|
000b7300  77 6e 3d 3e 77 69 6d 70  5f 63 6c 6f 73 65 64 6f  |wn=>wimp_closedo|
000b7310  77 6e 5f 3e 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |wn_>...This func|
000b7320  74 69 6f 6e 20 6d 75 73  74 20 62 65 20 63 61 6c  |tion must be cal|
000b7330  6c 65 64 20 69 6d 6d 65  64 69 61 74 65 6c 79 20  |led immediately |
000b7340  62 65 66 6f 72 65 20 74  68 65 20 70 72 6f 67 72  |before the progr|
000b7350  61 6d 20 66 69 6e 69 73  68 65 73 2e 20 2f 74 61  |am finishes. /ta|
000b7360  73 6b 2f 20 63 6f 6e 74  61 69 6e 73 20 74 68 65  |sk/ contains the|
000b7370  20 74 61 73 6b 20 68 61  6e 64 6c 65 20 72 65 74  | task handle ret|
000b7380  75 72 6e 65 64 20 62 79  20 3c 57 69 6d 70 5f 49  |urned by <Wimp_I|
000b7390  6e 69 74 69 61 6c 69 73  65 3e 2e 00 44 41 54 41  |nitialise>..DATA|
000b73a0  c0 00 00 00 77 69 6d 70  5f 63 6c 6f 73 65 64 6f  |....wimp_closedo|
000b73b0  77 6e 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |wn.Syntax:.<os_e|
000b73c0  72 72 6f 72 3e 20 2a 77  69 6d 70 5f 63 6c 6f 73  |rror> *wimp_clos|
000b73d0  65 64 6f 77 6e 20 28 76  6f 69 64 29 3b 0a 48 65  |edown (void);.He|
000b73e0  61 64 65 72 3a 09 3c 77  69 6d 70 2e 68 3d 3e 77  |ader:.<wimp.h=>w|
000b73f0  69 6d 70 5f 68 3e 0a 0a  52 65 74 75 72 6e 73 3a  |imp_h>..Returns:|
000b7400  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
000b7410  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
000b7420  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
000b7430  74 69 6f 6e 20 64 65 72  65 67 69 73 74 65 72 73  |tion deregisters|
000b7440  20 79 6f 75 72 20 70 72  6f 67 72 61 6d 20 77 69  | your program wi|
000b7450  74 68 20 74 68 65 20 57  69 6d 70 2e 44 41 54 41  |th the Wimp.DATA|
000b7460  f3 00 00 00 57 69 6d 70  5f 43 6c 6f 73 65 54 65  |....Wimp_CloseTe|
000b7470  6d 70 6c 61 74 65 0a 53  79 6e 74 61 78 3a 09 3c  |mplate.Syntax:.<|
000b7480  6f 73 5f 65 72 72 6f 72  3e 20 2a 57 69 6d 70 5f  |os_error> *Wimp_|
000b7490  43 6c 6f 73 65 54 65 6d  70 6c 61 74 65 20 28 76  |CloseTemplate (v|
000b74a0  6f 69 64 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |oid);.Header:.<D|
000b74b0  65 73 6b 4c 69 62 3a 57  69 6d 70 53 57 49 73 2e  |eskLib:WimpSWIs.|
000b74c0  68 3d 3e 57 69 6d 70 53  57 49 73 3e 0a 0a 52 65  |h=>WimpSWIs>..Re|
000b74d0  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
000b74e0  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
000b74f0  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
000b7500  73 20 66 75 6e 63 74 69  6f 6e 20 63 6c 6f 73 65  |s function close|
000b7510  73 20 74 68 65 20 74 65  6d 70 6c 61 74 65 20 66  |s the template f|
000b7520  69 6c 65 20 70 72 65 76  69 6f 75 73 6c 79 20 6f  |ile previously o|
000b7530  70 65 6e 65 64 20 77 69  74 68 20 3c 57 69 6d 70  |pened with <Wimp|
000b7540  5f 4f 70 65 6e 54 65 6d  70 6c 61 74 65 3e 2e 00  |_OpenTemplate>..|
000b7550  44 41 54 41 1a 01 00 00  57 69 6d 70 5f 43 6c 6f  |DATA....Wimp_Clo|
000b7560  73 65 57 69 6e 64 6f 77  0a 53 79 6e 74 61 78 3a  |seWindow.Syntax:|
000b7570  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 57 69 6d  |.<os_error> *Wim|
000b7580  70 5f 43 6c 6f 73 65 57  69 6e 64 6f 77 20 28 3c  |p_CloseWindow (<|
000b7590  77 69 6e 64 6f 77 5f 68  61 6e 64 6c 65 3e 20 77  |window_handle> w|
000b75a0  69 6e 64 6f 77 29 3b 0a  48 65 61 64 65 72 3a 09  |indow);.Header:.|
000b75b0  3c 44 65 73 6b 4c 69 62  3a 57 69 6d 70 53 57 49  |<DeskLib:WimpSWI|
000b75c0  73 2e 68 3d 3e 57 69 6d  70 53 57 49 73 3e 0a 0a  |s.h=>WimpSWIs>..|
000b75d0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
000b75e0  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
000b75f0  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
000b7600  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 6d  |his function rem|
000b7610  6f 76 65 73 20 74 68 65  20 73 70 65 63 69 66 69  |oves the specifi|
000b7620  65 64 20 77 69 6e 64 6f  77 20 66 72 6f 6d 20 74  |ed window from t|
000b7630  68 65 20 6c 69 73 74 20  6f 66 20 61 63 74 69 76  |he list of activ|
000b7640  65 20 77 69 6e 64 6f 77  73 20 28 6f 6e 65 73 20  |e windows (ones |
000b7650  74 68 61 74 20 61 72 65  20 74 6f 20 62 65 20 64  |that are to be d|
000b7660  69 73 70 6c 61 79 65 64  29 2e 00 00 44 41 54 41  |isplayed)...DATA|
000b7670  3d 01 00 00 77 69 6d 70  5f 63 6f 6c 6f 75 72 0a  |=...wimp_colour.|
000b7680  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
000b7690  69 6e 65 64 20 69 6e 20  44 65 73 6b 4c 69 62 3a  |ined in DeskLib:|
000b76a0  57 69 6d 70 2e 68 20 61  73 20 74 68 65 20 66 6f  |Wimp.h as the fo|
000b76b0  6c 6c 6f 77 69 6e 67 20  75 6e 69 6f 6e 3a 0a 0a  |llowing union:..|
000b76c0  20 20 20 20 5c 7b 0a 20  20 20 20 20 20 20 20 69  |    \{.        i|
000b76d0  6e 74 20 76 61 6c 75 65  3b 0a 20 20 20 20 20 20  |nt value;.      |
000b76e0  20 20 73 74 72 75 63 74  0a 20 20 20 20 20 20 20  |  struct.       |
000b76f0  20 5c 7b 0a 20 20 20 20  20 20 20 20 20 20 20 20  | \{.            |
000b7700  75 6e 73 69 67 6e 65 64  20 69 6e 74 20 77 69 6d  |unsigned int wim|
000b7710  70 63 6f 6c 6f 75 72 09  3a 20 34 3b 0a 20 20 20  |pcolour.: 4;.   |
000b7720  20 20 20 20 20 20 20 20  20 75 6e 73 69 67 6e 65  |         unsigne|
000b7730  64 20 69 6e 74 20 67 63  6f 6c 61 63 74 69 6f 6e  |d int gcolaction|
000b7740  09 3a 20 33 3b 0a 20 20  20 20 20 20 20 20 20 20  |.: 3;.          |
000b7750  20 20 75 6e 73 69 67 6e  65 64 20 69 6e 74 20 66  |  unsigned int f|
000b7760  6f 72 65 62 61 63 6b 09  3a 20 31 3b 0a 20 20 20  |oreback.: 1;.   |
000b7770  20 20 20 20 20 20 20 20  20 75 6e 73 69 67 6e 65  |         unsigne|
000b7780  64 20 69 6e 74 20 70 61  64 64 69 6e 67 09 3a 20  |d int padding.: |
000b7790  32 34 3b 0a 20 20 20 20  20 20 20 20 7d 20 64 61  |24;.        } da|
000b77a0  74 61 3b 0a 20 20 20 20  7d 00 00 00 44 41 54 41  |ta;.    }...DATA|
000b77b0  29 01 00 00 77 69 6d 70  5f 63 6f 6d 6d 61 6e 64  |)...wimp_command|
000b77c0  5f 74 61 67 0a 54 68 69  73 20 74 79 70 65 20 69  |_tag.This type i|
000b77d0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 77 69  |s defined in <wi|
000b77e0  6d 70 2e 68 3d 3e 77 69  6d 70 5f 68 3e 2e 20 49  |mp.h=>wimp_h>. I|
000b77f0  74 20 69 73 20 61 6e 0a  65 6e 75 6d 65 72 61 74  |t is an.enumerat|
000b7800  65 64 20 74 79 70 65 20  63 6f 6e 74 61 69 6e 69  |ed type containi|
000b7810  6e 67 20 74 68 65 20 76  61 6c 75 65 73 20 66 6f  |ng the values fo|
000b7820  72 0a 3c 77 69 6d 70 5f  63 6f 6d 6d 61 6e 64 77  |r.<wimp_commandw|
000b7830  69 6e 64 6f 77 3d 3e 77  69 6d 70 5f 63 6f 6d 6d  |indow=>wimp_comm|
000b7840  61 6e 64 77 69 6e 64 6f  77 5f 3e 3a 0a 0a 20 20  |andwindow_>:..  |
000b7850  7b 0a 20 20 20 20 77 69  6d 70 5f 63 6f 6d 6d 61  |{.    wimp_comma|
000b7860  6e 64 5f 54 49 54 4c 45  20 3d 20 30 2c 0a 20 20  |nd_TITLE = 0,.  |
000b7870  20 20 77 69 6d 70 5f 63  6f 6d 6d 61 6e 64 5f 41  |  wimp_command_A|
000b7880  43 54 49 56 45 20 3d 20  31 2c 0a 20 20 20 20 77  |CTIVE = 1,.    w|
000b7890  69 6d 70 5f 63 6f 6d 6d  61 6e 64 5f 43 4c 4f 53  |imp_command_CLOS|
000b78a0  45 5f 50 52 4f 4d 50 54  20 3d 20 32 2c 0a 20 20  |E_PROMPT = 2,.  |
000b78b0  20 20 77 69 6d 70 5f 63  6f 6d 6d 61 6e 64 5f 43  |  wimp_command_C|
000b78c0  4c 4f 53 45 5f 4e 4f 50  52 4f 4d 50 54 20 3d 20  |LOSE_NOPROMPT = |
000b78d0  33 0a 20 20 7d 00 00 00  44 41 54 41 ab 00 00 00  |3.  }...DATA....|
000b78e0  77 69 6d 70 5f 63 6f 6d  6d 61 6e 64 77 69 6e 64  |wimp_commandwind|
000b78f0  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
000b7900  66 69 6e 65 64 20 69 6e  20 3c 77 69 6d 70 2e 68  |fined in <wimp.h|
000b7910  3d 3e 77 69 6d 70 5f 68  3e 2e 20 49 74 20 69 73  |=>wimp_h>. It is|
000b7920  20 61 0a 73 74 72 75 63  74 75 72 65 20 66 6f 72  | a.structure for|
000b7930  20 63 6f 6d 6d 61 6e 64  20 77 69 6e 64 6f 77 73  | command windows|
000b7940  3a 0a 0a 20 20 7b 0a 20  20 20 20 3c 77 69 6d 70  |:..  {.    <wimp|
000b7950  5f 63 6f 6d 6d 61 6e 64  5f 74 61 67 3e 20 74 61  |_command_tag> ta|
000b7960  67 3b 0a 20 20 20 20 63  68 61 72 20 20 20 20 20  |g;.    char     |
000b7970  20 20 20 20 20 20 20 20  2a 74 69 74 6c 65 3b 0a  |        *title;.|
000b7980  20 20 7d 00 44 41 54 41  46 02 00 00 57 69 6d 70  |  }.DATAF...Wimp|
000b7990  5f 43 6f 6d 6d 61 6e 64  57 69 6e 64 6f 77 0a 53  |_CommandWindow.S|
000b79a0  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
000b79b0  3e 20 2a 57 69 6d 70 5f  43 6f 6d 6d 61 6e 64 57  |> *Wimp_CommandW|
000b79c0  69 6e 64 6f 77 20 28 69  6e 74 20 78 29 3b 0a 48  |indow (int x);.H|
000b79d0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
000b79e0  57 69 6d 70 53 57 49 73  2e 68 3d 3e 57 69 6d 70  |WimpSWIs.h=>Wimp|
000b79f0  53 57 49 73 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |SWIs>..Returns:.|
000b7a00  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000b7a10  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000b7a20  6f 6e 65 2e 0a 0a 44 65  73 6b 74 6f 70 20 43 3a  |one...Desktop C:|
000b7a30  20 53 65 65 20 3c 77 69  6d 70 5f 63 6f 6d 6d 61  | See <wimp_comma|
000b7a40  6e 64 77 69 6e 64 6f 77  3d 3e 77 69 6d 70 5f 63  |ndwindow=>wimp_c|
000b7a50  6f 6d 6d 61 6e 64 77 69  6e 64 6f 77 5f 3e 2e 0a  |ommandwindow_>..|
000b7a60  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 6f  |.This function o|
000b7a70  70 65 6e 73 20 61 20 74  65 78 74 20 77 69 6e 64  |pens a text wind|
000b7a80  6f 77 20 69 6e 20 77 68  69 63 68 20 56 44 55 a0  |ow in which VDU.|
000b7a90  34 2d 74 79 70 65 20 6f  75 74 70 75 74 20 63 61  |4-type output ca|
000b7aa0  6e 20 62 65 20 64 69 73  70 6c 61 79 65 64 2e 20  |n be displayed. |
000b7ab0  54 68 65 20 65 78 61 63  74 20 61 63 74 69 6f 6e  |The exact action|
000b7ac0  20 64 65 70 65 6e 64 73  20 6f 6e 20 2f 78 2f 3a  | depends on /x/:|
000b7ad0  0a 7b 74 61 62 7d 0a 78  3e 31 09 78 20 69 73 20  |.{tab}.x>1.x is |
000b7ae0  61 20 70 6f 69 6e 74 65  72 20 74 6f 20 74 68 65  |a pointer to the|
000b7af0  20 77 69 6e 64 6f 77 20  74 69 74 6c 65 2e 20 54  | window title. T|
000b7b00  68 65 20 63 6f 6d 6d 61  6e 64 20 77 69 6e 64 6f  |he command windo|
000b7b10  77 20 69 73 20 6f 70 65  6e 65 64 20 74 68 65 20  |w is opened the |
000b7b20  6e 65 78 74 20 74 69 6d  65 20 61 20 63 68 61 72  |next time a char|
000b7b30  61 63 74 65 72 20 69 73  20 70 72 69 6e 74 65 64  |acter is printed|
000b7b40  20 6f 6e 20 74 68 65 20  73 63 72 65 65 6e 2e 0a  | on the screen..|
000b7b50  78 3d 3d 31 09 77 69 6e  64 6f 77 20 62 65 63 6f  |x==1.window beco|
000b7b60  6d 65 73 20 61 63 74 69  76 65 20 62 75 74 20 69  |mes active but i|
000b7b70  73 20 6e 6f 74 20 64 72  61 77 6e 2e 0a 78 3d 3d  |s not drawn..x==|
000b7b80  30 09 77 69 6e 64 6f 77  20 69 73 20 63 6c 6f 73  |0.window is clos|
000b7b90  65 64 20 77 69 74 68 20  61 20 70 72 6f 6d 70 74  |ed with a prompt|
000b7ba0  2e 0a 78 3d 3d 2d 31 09  77 69 6e 64 6f 77 20 69  |..x==-1.window i|
000b7bb0  73 20 63 6c 6f 73 65 64  20 77 69 74 68 6f 75 74  |s closed without|
000b7bc0  20 61 20 70 72 6f 6d 70  74 2e 00 00 44 41 54 41  | a prompt...DATA|
000b7bd0  e2 00 00 00 77 69 6d 70  5f 63 6f 6d 6d 61 6e 64  |....wimp_command|
000b7be0  77 69 6e 64 6f 77 0a 53  79 6e 74 61 78 3a 09 3c  |window.Syntax:.<|
000b7bf0  6f 73 5f 65 72 72 6f 72  3e 20 2a 77 69 6d 70 5f  |os_error> *wimp_|
000b7c00  63 6f 6d 6d 61 6e 64 77  69 6e 64 6f 77 20 28 3c  |commandwindow (<|
000b7c10  77 69 6d 70 5f 63 6f 6d  6d 61 6e 64 77 69 6e 64  |wimp_commandwind|
000b7c20  3e 20 63 6f 6d 6d 61 6e  64 77 69 6e 64 6f 77 29  |> commandwindow)|
000b7c30  3b 0a 48 65 61 64 65 72  3a 09 3c 77 69 6d 70 2e  |;.Header:.<wimp.|
000b7c40  68 3d 3e 77 69 6d 70 5f  68 3e 0a 0a 52 65 74 75  |h=>wimp_h>..Retu|
000b7c50  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000b7c60  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
000b7c70  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
000b7c80  66 75 6e 63 74 69 6f 6e  73 20 6f 70 65 6e 73 20  |functions opens |
000b7c90  61 20 74 65 78 74 20 77  69 6e 64 6f 77 20 66 6f  |a text window fo|
000b7ca0  72 20 56 44 55 34 20 6f  75 74 70 75 74 2e 00 00  |r VDU4 output...|
000b7cb0  44 41 54 41 82 00 00 00  77 69 6d 70 5f 63 6f 6f  |DATA....wimp_coo|
000b7cc0  72 64 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |rd.This type is |
000b7cd0  64 65 66 69 6e 65 64 20  69 6e 20 3c 44 65 73 6b  |defined in <Desk|
000b7ce0  4c 69 62 3a 57 69 6d 70  2e 68 3d 3e 57 69 6d 70  |Lib:Wimp.h=>Wimp|
000b7cf0  3e 20 61 73 20 61 20 74  79 70 65 20 68 6f 6c 64  |> as a type hold|
000b7d00  69 6e 67 20 61 20 63 6f  6f 72 64 69 6e 61 74 65  |ing a coordinate|
000b7d10  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
000b7d20  61 73 20 61 20 3c 77 69  6d 70 5f 70 6f 69 6e 74  |as a <wimp_point|
000b7d30  3e 2e 00 00 44 41 54 41  41 01 00 00 77 69 6d 70  |>...DATAA...wimp|
000b7d40  5f 63 6f 72 72 75 70 74  5f 66 70 5f 73 74 61 74  |_corrupt_fp_stat|
000b7d50  65 5f 6f 6e 5f 70 6f 6c  6c 0a 53 79 6e 74 61 78  |e_on_poll.Syntax|
000b7d60  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 77 69  |:.<os_error> *wi|
000b7d70  6d 70 5f 63 6f 72 72 75  70 74 5f 66 70 5f 73 74  |mp_corrupt_fp_st|
000b7d80  61 74 65 5f 6f 6e 5f 70  6f 6c 6c 20 28 76 6f 69  |ate_on_poll (voi|
000b7d90  64 29 3b 0a 48 65 61 64  65 72 3a 09 3c 77 69 6d  |d);.Header:.<wim|
000b7da0  70 2e 68 3d 3e 77 69 6d  70 5f 68 3e 0a 0a 52 65  |p.h=>wimp_h>..Re|
000b7db0  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
000b7dc0  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
000b7dd0  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
000b7de0  73 20 66 75 6e 63 74 69  6f 6e 73 20 64 69 73 61  |s functions disa|
000b7df0  62 6c 65 73 20 73 61 76  69 6e 67 20 6f 66 20 46  |bles saving of F|
000b7e00  50 20 73 74 61 74 65 20  6f 6e 20 63 61 6c 6c 73  |P state on calls|
000b7e10  20 74 6f 20 3c 77 69 6d  70 5f 70 6f 6c 6c 3d 3e  | to <wimp_poll=>|
000b7e20  77 69 6d 70 5f 70 6f 6c  6c 5f 3e 20 61 6e 64 20  |wimp_poll_> and |
000b7e30  3c 77 69 6d 70 5f 70 6f  6c 6c 69 64 6c 65 3d 3e  |<wimp_pollidle=>|
000b7e40  77 69 6d 70 5f 70 6f 6c  6c 69 64 6c 65 5f 3e 3b  |wimp_pollidle_>;|
000b7e50  20 75 73 65 20 6f 6e 6c  79 20 69 66 20 79 6f 75  | use only if you|
000b7e60  20 6e 65 76 65 72 20 75  73 65 20 46 50 20 61 74  | never use FP at|
000b7e70  20 61 6c 6c 2e 00 00 00  44 41 54 41 0b 01 00 00  | all....DATA....|
000b7e80  57 69 6d 70 5f 43 6f 72  72 75 70 74 46 50 53 74  |Wimp_CorruptFPSt|
000b7e90  61 74 65 4f 6e 50 6f 6c  6c 0a 53 79 6e 74 61 78  |ateOnPoll.Syntax|
000b7ea0  3a 20 20 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 57  |:  <os_error> *W|
000b7eb0  69 6d 70 5f 43 6f 72 72  75 70 74 46 50 53 74 61  |imp_CorruptFPSta|
000b7ec0  74 65 4f 6e 50 6f 6c 6c  28 76 6f 69 64 29 3b 0a  |teOnPoll(void);.|
000b7ed0  48 65 61 64 65 72 3a 20  20 3c 44 65 73 6b 4c 69  |Header:  <DeskLi|
000b7ee0  62 3a 57 69 6d 70 53 57  49 73 2e 68 3d 3e 57 69  |b:WimpSWIs.h=>Wi|
000b7ef0  6d 70 53 57 49 73 3e 0a  0a 52 65 74 75 72 6e 73  |mpSWIs>..Returns|
000b7f00  3a 20 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |: Pointer to err|
000b7f10  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
000b7f20  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
000b7f30  63 74 69 6f 6e 20 74 65  6c 6c 73 20 44 65 73 6b  |ction tells Desk|
000b7f40  4c 69 62 20 6e 6f 74 20  74 6f 20 73 61 76 65 20  |Lib not to save |
000b7f50  74 68 65 0a 66 6c 6f 61  74 69 6e 67 20 70 6f 69  |the.floating poi|
000b7f60  6e 74 20 73 74 61 74 75  73 20 77 68 65 6e 20 63  |nt status when c|
000b7f70  61 6c 6c 69 6e 67 20 3c  57 69 6d 70 5f 50 6f 6c  |alling <Wimp_Pol|
000b7f80  6c 3e 2e 00 44 41 54 41  fe 00 00 00 77 69 6d 70  |l>..DATA....wimp|
000b7f90  5f 63 72 65 61 74 65 5f  69 63 6f 6e 0a 53 79 6e  |_create_icon.Syn|
000b7fa0  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
000b7fb0  2a 77 69 6d 70 5f 63 72  65 61 74 65 5f 69 63 6f  |*wimp_create_ico|
000b7fc0  6e 20 28 3c 77 69 6d 70  5f 69 63 72 65 61 74 65  |n (<wimp_icreate|
000b7fd0  3e 20 2a 62 6c 6b 2c 20  3c 77 69 6d 70 5f 69 3e  |> *blk, <wimp_i>|
000b7fe0  20 2a 69 63 6f 6e 29 3b  0a 48 65 61 64 65 72 3a  | *icon);.Header:|
000b7ff0  09 3c 77 69 6d 70 2e 68  3d 3e 77 69 6d 70 5f 68  |.<wimp.h=>wimp_h|
000b8000  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000b8010  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000b8020  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000b8030  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 73  |..This functions|
000b8040  20 63 72 65 61 74 65 73  20 61 6e 20 69 63 6f 6e  | creates an icon|
000b8050  20 66 72 6f 6d 20 2f 62  6c 6b 2f 20 61 6e 64 20  | from /blk/ and |
000b8060  72 65 74 75 72 6e 73 20  74 68 65 20 68 61 6e 64  |returns the hand|
000b8070  6c 65 20 69 6e 20 7b 2f  7d 2a 69 63 6f 6e 7b 2f  |le in {/}*icon{/|
000b8080  7d 2e 00 00 44 41 54 41  e6 00 00 00 77 69 6d 70  |}...DATA....wimp|
000b8090  5f 63 72 65 61 74 65 5f  6d 65 6e 75 0a 53 79 6e  |_create_menu.Syn|
000b80a0  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
000b80b0  2a 77 69 6d 70 5f 63 72  65 61 74 65 5f 6d 65 6e  |*wimp_create_men|
000b80c0  75 20 28 3c 77 69 6d 70  5f 6d 65 6e 75 73 74 72  |u (<wimp_menustr|
000b80d0  3e 20 2a 6d 2c 20 69 6e  74 20 78 2c 20 69 6e 74  |> *m, int x, int|
000b80e0  20 79 29 3b 0a 48 65 61  64 65 72 3a 09 3c 77 69  | y);.Header:.<wi|
000b80f0  6d 70 2e 68 3d 3e 77 69  6d 70 5f 68 3e 0a 0a 52  |mp.h=>wimp_h>..R|
000b8100  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
000b8110  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
000b8120  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
000b8130  69 73 20 66 75 6e 63 74  69 6f 6e 20 64 69 73 70  |is function disp|
000b8140  6c 61 79 73 20 74 68 65  20 6d 65 6e 75 20 2f 6d  |lays the menu /m|
000b8150  2f 20 61 74 20 70 6f 73  69 74 69 6f 6e 20 7b 2f  |/ at position {/|
000b8160  7d 28 78 2c 79 29 7b 2f  7d 2e 00 00 44 41 54 41  |}(x,y){/}...DATA|
000b8170  25 01 00 00 77 69 6d 70  5f 63 72 65 61 74 65 5f  |%...wimp_create_|
000b8180  73 75 62 6d 65 6e 75 0a  53 79 6e 74 61 78 3a 09  |submenu.Syntax:.|
000b8190  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 77 69 6d 70  |<os_error> *wimp|
000b81a0  5f 63 72 65 61 74 65 5f  73 75 62 6d 65 6e 75 20  |_create_submenu |
000b81b0  28 3c 77 69 6d 70 5f 6d  65 6e 75 73 74 72 3e 20  |(<wimp_menustr> |
000b81c0  2a 73 75 62 2c 20 69 6e  74 20 78 2c 20 69 6e 79  |*sub, int x, iny|
000b81d0  20 79 29 3b 0a 48 65 61  64 65 72 3a 09 3c 77 69  | y);.Header:.<wi|
000b81e0  6d 70 2e 68 3d 3e 77 69  6d 70 5f 68 3e 0a 0a 52  |mp.h=>wimp_h>..R|
000b81f0  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
000b8200  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
000b8210  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
000b8220  69 73 20 66 75 6e 63 74  69 6f 6e 20 63 72 65 61  |is function crea|
000b8230  74 65 73 20 74 68 65 20  6d 65 6e 75 20 2f 73 75  |tes the menu /su|
000b8240  62 2f 20 61 73 20 61 20  73 75 62 6d 65 6e 75 2e  |b/ as a submenu.|
000b8250  20 43 61 6c 6c 65 64 20  69 6e 20 72 65 73 70 6f  | Called in respo|
000b8260  6e 73 65 20 74 6f 20 61  20 3c 4d 65 73 73 61 67  |nse to a <Messag|
000b8270  65 5f 4d 65 6e 75 57 61  72 6e 69 6e 67 3d 3e 53  |e_MenuWarning=>S|
000b8280  57 49 3a 77 69 6d 70 5f  75 6d 34 30 30 63 30 3e  |WI:wimp_um400c0>|
000b8290  2e 00 00 00 44 41 54 41  14 01 00 00 77 69 6d 70  |....DATA....wimp|
000b82a0  5f 63 72 65 61 74 65 5f  77 69 6e 64 0a 53 79 6e  |_create_wind.Syn|
000b82b0  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
000b82c0  2a 77 69 6d 70 5f 63 72  65 61 74 65 5f 77 69 6e  |*wimp_create_win|
000b82d0  64 20 28 3c 77 69 6d 70  5f 77 69 6e 64 3e 20 2a  |d (<wimp_wind> *|
000b82e0  62 6c 6b 2c 20 3c 77 69  6d 70 5f 77 3e 20 2a 77  |blk, <wimp_w> *w|
000b82f0  69 6e 29 3b 0a 48 65 61  64 65 72 3a 09 3c 77 69  |in);.Header:.<wi|
000b8300  6d 70 2e 68 3d 3e 77 69  6d 70 5f 68 3e 0a 0a 52  |mp.h=>wimp_h>..R|
000b8310  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
000b8320  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
000b8330  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
000b8340  69 73 20 66 75 6e 63 74  69 6f 6e 73 20 63 72 65  |is functions cre|
000b8350  61 74 65 73 20 61 20 77  69 6e 64 6f 77 20 77 68  |ates a window wh|
000b8360  6f 73 65 20 64 65 66 69  6e 69 74 69 6f 6e 20 69  |ose definition i|
000b8370  73 20 69 6e 20 2f 62 6c  6b 2f 2e 20 54 68 65 20  |s in /blk/. The |
000b8380  77 69 6e 64 6f 77 20 68  61 6e 64 6c 65 20 69 73  |window handle is|
000b8390  20 72 65 74 75 72 6e 65  64 20 69 6e 20 7b 2f 7d  | returned in {/}|
000b83a0  2a 77 69 6e 7b 2f 7d 2e  44 41 54 41 42 01 00 00  |*win{/}.DATAB...|
000b83b0  57 69 6d 70 5f 43 72 65  61 74 65 49 63 6f 6e 0a  |Wimp_CreateIcon.|
000b83c0  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
000b83d0  72 3e 20 2a 57 69 6d 70  5f 43 72 65 61 74 65 49  |r> *Wimp_CreateI|
000b83e0  63 6f 6e 20 28 3c 69 63  6f 6e 5f 63 72 65 61 74  |con (<icon_creat|
000b83f0  65 62 6c 6f 63 6b 3e 20  2a 62 6c 6f 63 6b 2c 20  |eblock> *block, |
000b8400  3c 69 63 6f 6e 5f 68 61  6e 64 6c 65 3e 20 2a 69  |<icon_handle> *i|
000b8410  63 6f 6e 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |con);.Header:.<D|
000b8420  65 73 6b 4c 69 62 3a 57  69 6d 70 53 57 49 73 2e  |eskLib:WimpSWIs.|
000b8430  68 3d 3e 57 69 6d 70 53  57 49 73 3e 0a 0a 52 65  |h=>WimpSWIs>..Re|
000b8440  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
000b8450  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
000b8460  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 54 68 69  |L> if none...Thi|
000b8470  73 20 66 75 6e 63 74 69  6f 6e 20 74 65 6c 6c 73  |s function tells|
000b8480  20 74 68 65 20 57 69 6d  70 20 77 68 61 74 20 74  | the Wimp what t|
000b8490  68 65 20 63 68 61 72 61  63 74 65 72 69 73 74 69  |he characteristi|
000b84a0  63 73 20 6f 66 20 61 6e  20 69 63 6f 6e 20 61 72  |cs of an icon ar|
000b84b0  65 20 28 69 6e 20 7b 2f  7d 62 6c 6f 63 6b 7b 2f  |e (in {/}block{/|
000b84c0  7d 29 2e 20 54 68 65 20  69 63 6f 6e 20 68 61 6e  |}). The icon han|
000b84d0  64 6c 65 20 69 73 20 72  65 74 75 72 6e 65 64 20  |dle is returned |
000b84e0  69 6e 20 2f 69 63 6f 6e  2f 2e 00 00 44 41 54 41  |in /icon/...DATA|
000b84f0  53 01 00 00 57 69 6d 70  5f 43 72 65 61 74 65 4d  |S...Wimp_CreateM|
000b8500  65 6e 75 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |enu.Syntax:.<os_|
000b8510  65 72 72 6f 72 3e 20 2a  57 69 6d 70 5f 43 72 65  |error> *Wimp_Cre|
000b8520  61 74 65 4d 65 6e 75 20  28 3c 6d 65 6e 75 5f 62  |ateMenu (<menu_b|
000b8530  6c 6f 63 6b 3e 20 2a 6d  65 6e 75 2c 20 69 6e 74  |lock> *menu, int|
000b8540  20 78 70 6f 73 2c 20 69  6e 74 20 79 70 6f 73 29  | xpos, int ypos)|
000b8550  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000b8560  69 62 3a 57 69 6d 70 53  57 49 73 2e 68 3d 3e 57  |ib:WimpSWIs.h=>W|
000b8570  69 6d 70 53 57 49 73 3e  0a 0a 52 65 74 75 72 6e  |impSWIs>..Return|
000b8580  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000b8590  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000b85a0  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000b85b0  6e 63 74 69 6f 6e 20 69  73 20 75 73 65 64 20 74  |nction is used t|
000b85c0  6f 20 63 72 65 61 74 65  20 61 20 6d 65 6e 75 20  |o create a menu |
000b85d0  73 74 72 75 63 74 75 72  65 2e 20 54 68 65 20 74  |structure. The t|
000b85e0  6f 70 2d 6c 65 76 65 6c  20 6d 65 6e 75 20 69 73  |op-level menu is|
000b85f0  20 69 6e 69 74 69 61 6c  6c 79 20 64 69 73 70 6c  | initially displ|
000b8600  61 79 65 64 20 62 79 20  74 68 65 20 57 69 6d 70  |ayed by the Wimp|
000b8610  20 77 69 74 68 20 69 74  73 20 74 6f 70 2d 6c 65  | with its top-le|
000b8620  66 74 20 63 6f 72 6e 65  72 20 61 74 20 7b 2f 7d  |ft corner at {/}|
000b8630  28 78 70 6f 73 2c 79 70  6f 73 29 7b 2f 7d 2e 00  |(xpos,ypos){/}..|
000b8640  44 41 54 41 7d 01 00 00  57 69 6d 70 5f 43 72 65  |DATA}...Wimp_Cre|
000b8650  61 74 65 53 75 62 4d 65  6e 75 0a 53 79 6e 74 61  |ateSubMenu.Synta|
000b8660  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 57  |x:.<os_error> *W|
000b8670  69 6d 70 5f 43 72 65 61  74 65 53 75 62 4d 65 6e  |imp_CreateSubMen|
000b8680  75 20 28 3c 6d 65 6e 75  5f 62 6c 6f 63 6b 3e 20  |u (<menu_block> |
000b8690  2a 6d 65 6e 75 2c 20 69  6e 74 20 78 70 6f 73 2c  |*menu, int xpos,|
000b86a0  20 69 6e 74 20 79 70 6f  73 29 3b 0a 48 65 61 64  | int ypos);.Head|
000b86b0  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 57 69 6d  |er:.<DeskLib:Wim|
000b86c0  70 53 57 49 73 2e 68 3d  3e 57 69 6d 70 53 57 49  |pSWIs.h=>WimpSWI|
000b86d0  73 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |s>..Returns:.Poi|
000b86e0  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000b86f0  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000b8700  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000b8710  20 69 73 20 63 61 6c 6c  65 64 20 77 68 65 6e 20  | is called when |
000b8720  61 20 4d 65 6e 75 57 61  72 6e 69 6e 67 20 6d 65  |a MenuWarning me|
000b8730  73 73 61 67 65 20 69 73  20 72 65 63 65 69 76 65  |ssage is receive|
000b8740  64 2e 20 54 68 65 20 74  68 72 65 65 20 61 72 67  |d. The three arg|
000b8750  75 6d 65 6e 74 73 20 75  73 65 64 20 63 61 6e 20  |uments used can |
000b8760  62 65 20 6f 62 74 61 69  6e 65 64 20 66 72 6f 6d  |be obtained from|
000b8770  20 74 68 65 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  | the information|
000b8780  20 72 65 74 75 72 6e 65  64 20 62 79 20 74 68 69  | returned by thi|
000b8790  73 20 6d 65 73 73 61 67  65 2c 20 6f 72 20 79 6f  |s message, or yo|
000b87a0  75 20 63 61 6e 20 61 6c  74 65 72 20 74 68 65 6d  |u can alter them|
000b87b0  20 69 66 20 72 65 71 75  69 72 65 64 2e 00 00 00  | if required....|
000b87c0  44 41 54 41 52 01 00 00  57 69 6d 70 5f 43 72 65  |DATAR...Wimp_Cre|
000b87d0  61 74 65 57 69 6e 64 6f  77 0a 53 79 6e 74 61 78  |ateWindow.Syntax|
000b87e0  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 57 69  |:.<os_error> *Wi|
000b87f0  6d 70 5f 43 72 65 61 74  65 57 69 6e 64 6f 77 20  |mp_CreateWindow |
000b8800  28 3c 77 69 6e 64 6f 77  5f 62 6c 6f 63 6b 3e 20  |(<window_block> |
000b8810  2a 62 6c 6b 2c 20 3c 77  69 6e 64 6f 77 5f 68 61  |*blk, <window_ha|
000b8820  6e 64 6c 65 3e 20 2a 77  29 3b 0a 48 65 61 64 65  |ndle> *w);.Heade|
000b8830  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 57 69 6d 70  |r:.<DeskLib:Wimp|
000b8840  53 57 49 73 2e 68 3d 3e  57 69 6d 70 53 57 49 73  |SWIs.h=>WimpSWIs|
000b8850  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000b8860  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000b8870  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000b8880  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000b8890  74 65 6c 6c 73 20 74 68  65 20 57 69 6d 70 20 77  |tells the Wimp w|
000b88a0  68 61 74 20 74 68 65 20  63 68 61 72 61 63 74 65  |hat the characte|
000b88b0  72 69 73 74 69 63 73 20  6f 66 20 61 20 77 69 6e  |ristics of a win|
000b88c0  64 6f 77 20 61 72 65 2e  20 54 68 65 20 77 69 6e  |dow are. The win|
000b88d0  64 6f 77 20 64 65 66 69  6e 69 74 69 6f 6e 20 69  |dow definition i|
000b88e0  73 20 68 65 6c 64 20 69  6e 20 2f 62 6c 6b 2f 20  |s held in /blk/ |
000b88f0  61 6e 64 20 74 68 65 20  68 61 6e 64 6c 65 20 69  |and the handle i|
000b8900  73 20 72 65 74 75 72 6e  65 64 20 69 6e 20 2f 77  |s returned in /w|
000b8910  2f 2e 00 00 44 41 54 41  4b 01 00 00 77 69 6d 70  |/...DATAK...wimp|
000b8920  5f 64 65 63 6f 64 65 5f  6d 65 6e 75 0a 53 79 6e  |_decode_menu.Syn|
000b8930  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
000b8940  2a 77 69 6d 70 5f 64 65  63 6f 64 65 5f 6d 65 6e  |*wimp_decode_men|
000b8950  75 20 28 3c 77 69 6d 70  5f 6d 65 6e 75 73 74 72  |u (<wimp_menustr|
000b8960  3e 20 2a 6d 2c 20 76 6f  69 64 20 2a 73 65 6c 2c  |> *m, void *sel,|
000b8970  20 76 6f 69 64 20 2a 62  75 66 29 3b 0a 48 65 61  | void *buf);.Hea|
000b8980  64 65 72 3a 09 3c 77 69  6d 70 2e 68 3d 3e 77 69  |der:.<wimp.h=>wi|
000b8990  6d 70 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |mp_h>..Returns:.|
000b89a0  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000b89b0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000b89c0  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
000b89d0  69 6f 6e 20 74 61 6b 65  73 20 61 20 6c 69 73 74  |ion takes a list|
000b89e0  20 6f 66 20 6d 65 6e 75  20 73 65 6c 65 63 74 69  | of menu selecti|
000b89f0  6f 6e 73 20 69 6e 20 2f  73 65 6c 2f 2c 20 61 6e  |ons in /sel/, an|
000b8a00  64 20 61 20 6d 65 6e 75  20 64 65 66 69 6e 69 74  |d a menu definit|
000b8a10  69 6f 6e 20 69 6e 20 2f  6d 2f 2c 20 61 6e 64 20  |ion in /m/, and |
000b8a20  63 72 65 61 74 65 73 20  61 20 74 65 78 74 75 61  |creates a textua|
000b8a30  6c 20 76 65 72 73 69 6f  6e 20 6f 66 20 74 68 65  |l version of the|
000b8a40  20 73 65 6c 65 63 74 69  6f 6e 73 2c 20 73 65 70  | selections, sep|
000b8a50  61 72 61 74 65 64 20 62  79 20 64 6f 74 73 2e 00  |arated by dots..|
000b8a60  44 41 54 41 b4 01 00 00  57 69 6d 70 5f 44 65 63  |DATA....Wimp_Dec|
000b8a70  6f 64 65 4d 65 6e 75 0a  53 79 6e 74 61 78 3a 09  |odeMenu.Syntax:.|
000b8a80  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 57 69 6d 70  |<os_error> *Wimp|
000b8a90  5f 44 65 63 6f 64 65 4d  65 6e 75 20 28 3c 6d 65  |_DecodeMenu (<me|
000b8aa0  6e 75 5f 62 6c 6f 63 6b  3e 20 2a 6d 65 6e 75 2c  |nu_block> *menu,|
000b8ab0  20 69 6e 74 20 2a 73 65  6c 65 63 74 69 6f 6e 73  | int *selections|
000b8ac0  2c 20 63 68 61 72 20 2a  72 65 73 75 6c 74 29 3b  |, char *result);|
000b8ad0  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
000b8ae0  62 3a 57 69 6d 70 53 57  49 73 2e 68 3d 3e 57 69  |b:WimpSWIs.h=>Wi|
000b8af0  6d 70 53 57 49 73 3e 0a  0a 52 65 74 75 72 6e 73  |mpSWIs>..Returns|
000b8b00  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
000b8b10  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
000b8b20  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
000b8b30  63 74 69 6f 6e 20 63 6f  6e 76 65 72 74 73 20 61  |ction converts a|
000b8b40  20 6c 69 73 74 20 6f 66  20 6d 65 6e 75 20 73 65  | list of menu se|
000b8b50  6c 65 63 74 69 6f 6e 73  20 28 70 6f 69 6e 74 65  |lections (pointe|
000b8b60  64 20 74 6f 20 62 79 20  2f 73 65 6c 65 63 74 69  |d to by /selecti|
000b8b70  6f 6e 73 2f 29 20 66 6f  72 20 61 20 67 69 76 65  |ons/) for a give|
000b8b80  6e 20 6d 65 6e 75 2c 20  74 6f 20 61 20 74 65 78  |n menu, to a tex|
000b8b90  74 20 73 74 72 69 6e 67  20 6f 66 20 74 68 65 20  |t string of the |
000b8ba0  66 6f 72 6d 3a 0a 7b 77  72 61 70 20 6f 66 66 7d  |form:.{wrap off}|
000b8bb0  0a 7b 61 6c 69 67 6e 20  63 65 6e 74 72 65 7d 53  |.{align centre}S|
000b8bc0  65 6c 65 63 74 69 6f 6e  31 2e 53 65 6c 65 63 74  |election1.Select|
000b8bd0  69 6f 6e 32 2e 53 65 6c  65 63 74 69 6f 6e 33 7b  |ion2.Selection3{|
000b8be0  61 6c 69 67 6e 7d 0a 7b  77 72 61 70 7d 0a 65 67  |align}.{wrap}.eg|
000b8bf0  20 22 4f 70 74 69 6f 6e  73 2e 43 6f 6e 66 69 72  | "Options.Confir|
000b8c00  6d 22 20 66 6f 72 20 61  20 46 69 6c 65 72 20 6d  |m" for a Filer m|
000b8c10  65 6e 75 2e 44 41 54 41  cc 00 00 00 77 69 6d 70  |enu.DATA....wimp|
000b8c20  5f 64 65 6c 65 74 65 5f  69 63 6f 6e 0a 53 79 6e  |_delete_icon.Syn|
000b8c30  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
000b8c40  2a 77 69 6d 70 5f 64 65  6c 65 74 65 5f 69 63 6f  |*wimp_delete_ico|
000b8c50  6e 20 28 3c 77 69 6d 70  5f 77 3e 20 77 69 6e 2c  |n (<wimp_w> win,|
000b8c60  20 3c 77 69 6d 70 5f 69  3e 20 69 63 6f 6e 29 3b  | <wimp_i> icon);|
000b8c70  0a 48 65 61 64 65 72 3a  09 3c 77 69 6d 70 2e 68  |.Header:.<wimp.h|
000b8c80  3d 3e 77 69 6d 70 5f 68  3e 0a 0a 52 65 74 75 72  |=>wimp_h>..Retur|
000b8c90  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
000b8ca0  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
000b8cb0  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
000b8cc0  75 6e 63 74 69 6f 6e 73  20 64 65 6c 65 74 65 73  |unctions deletes|
000b8cd0  20 74 68 65 20 67 69 76  65 6e 20 69 63 6f 6e 2e  | the given icon.|
000b8ce0  44 41 54 41 bd 00 00 00  77 69 6d 70 5f 64 65 6c  |DATA....wimp_del|
000b8cf0  65 74 65 5f 77 69 6e 64  0a 53 79 6e 74 61 78 3a  |ete_wind.Syntax:|
000b8d00  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 77 69 6d  |.<os_error> *wim|
000b8d10  70 5f 64 65 6c 65 74 65  5f 77 69 6e 64 20 28 3c  |p_delete_wind (<|
000b8d20  77 69 6d 70 5f 77 3e 20  77 29 3b 0a 48 65 61 64  |wimp_w> w);.Head|
000b8d30  65 72 3a 09 3c 77 69 6d  70 2e 68 3d 3e 77 69 6d  |er:.<wimp.h=>wim|
000b8d40  70 5f 68 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |p_h>..Returns:.P|
000b8d50  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
000b8d60  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
000b8d70  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
000b8d80  6f 6e 73 20 64 65 6c 65  74 65 73 20 74 68 65 20  |ons deletes the |
000b8d90  67 69 76 65 6e 20 77 69  6e 64 6f 77 2e 00 00 00  |given window....|
000b8da0  44 41 54 41 f7 01 00 00  57 69 6d 70 5f 44 65 6c  |DATA....Wimp_Del|
000b8db0  65 74 65 49 63 6f 6e 0a  53 79 6e 74 61 78 3a 09  |eteIcon.Syntax:.|
000b8dc0  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 57 69 6d 70  |<os_error> *Wimp|
000b8dd0  5f 44 65 6c 65 74 65 49  63 6f 6e 20 28 3c 77 69  |_DeleteIcon (<wi|
000b8de0  6e 64 6f 77 5f 68 61 6e  64 6c 65 3e 20 77 69 6e  |ndow_handle> win|
000b8df0  2c 20 3c 69 63 6f 6e 5f  68 61 6e 64 6c 65 3e 20  |, <icon_handle> |
000b8e00  69 63 6f 6e 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |icon);.Header:.<|
000b8e10  44 65 73 6b 4c 69 62 3a  57 69 6d 70 53 57 49 73  |DeskLib:WimpSWIs|
000b8e20  2e 68 3d 3e 57 69 6d 70  53 57 49 73 3e 0a 0a 52  |.h=>WimpSWIs>..R|
000b8e30  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
000b8e40  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
000b8e50  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
000b8e60  69 73 20 66 75 6e 63 74  69 6f 6e 20 72 65 6d 6f  |is function remo|
000b8e70  76 65 73 20 74 68 65 20  64 65 66 69 6e 69 74 69  |ves the definiti|
000b8e80  6f 6e 20 6f 66 20 74 68  65 20 73 70 65 63 69 66  |on of the specif|
000b8e90  69 65 64 20 69 63 6f 6e  2e 20 49 66 20 69 74 20  |ied icon. If it |
000b8ea0  69 73 20 6e 6f 74 20 74  68 65 20 6c 61 73 74 20  |is not the last |
000b8eb0  69 63 6f 6e 20 69 6e 20  74 68 61 74 20 77 69 6e  |icon in that win|
000b8ec0  64 6f 77 20 69 74 20 69  73 20 6a 75 73 74 20 6d  |dow it is just m|
000b8ed0  61 72 6b 65 64 20 61 73  20 64 65 6c 65 74 65 64  |arked as deleted|
000b8ee0  2c 20 62 75 74 20 69 66  20 69 74 20 69 73 20 74  |, but if it is t|
000b8ef0  68 65 20 6c 61 73 74 20  6f 6e 65 20 74 68 65 6e  |he last one then|
000b8f00  20 74 68 65 20 73 70 61  63 65 20 6f 63 63 75 70  | the space occup|
000b8f10  69 65 64 20 62 79 20 69  74 20 69 73 20 66 72 65  |ied by it is fre|
000b8f20  65 64 2e 0a 0a 54 68 69  73 20 63 61 6c 6c 20 64  |ed...This call d|
000b8f30  6f 65 73 20 6e 6f 74 20  61 66 66 65 63 74 20 74  |oes not affect t|
000b8f40  68 65 20 73 63 72 65 65  6e 2c 20 75 6e 6c 65 73  |he screen, unles|
000b8f50  73 20 64 65 6c 65 74 69  6e 67 20 61 6e 20 69 63  |s deleting an ic|
000b8f60  6f 6e 20 66 72 6f 6d 20  74 68 65 20 69 63 6f 6e  |on from the icon|
000b8f70  20 62 61 72 2e 20 59 6f  75 20 6d 75 73 74 20 63  | bar. You must c|
000b8f80  61 6c 6c 20 3c 57 69 6d  70 5f 46 6f 72 63 65 52  |all <Wimp_ForceR|
000b8f90  65 64 72 61 77 3e 2e 00  44 41 54 41 3a 01 00 00  |edraw>..DATA:...|
000b8fa0  57 69 6d 70 5f 44 65 6c  65 74 65 57 69 6e 64 6f  |Wimp_DeleteWindo|
000b8fb0  77 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |w.Syntax:.<os_er|
000b8fc0  72 6f 72 3e 20 2a 57 69  6d 70 5f 44 65 6c 65 74  |ror> *Wimp_Delet|
000b8fd0  65 57 69 6e 64 6f 77 20  28 3c 77 69 6e 64 6f 77  |eWindow (<window|
000b8fe0  5f 68 61 6e 64 6c 65 3e  20 77 69 6e 64 6f 77 29  |_handle> window)|
000b8ff0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000b9000  69 62 3a 57 69 6d 70 53  57 49 73 2e 68 3d 3e 57  |ib:WimpSWIs.h=>W|
000b9010  69 6d 70 53 57 49 73 3e  0a 0a 52 65 74 75 72 6e  |impSWIs>..Return|
000b9020  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000b9030  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000b9040  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000b9050  6e 63 74 69 6f 6e 20 63  6c 6f 73 65 73 20 74 68  |nction closes th|
000b9060  65 20 73 70 65 63 69 66  69 65 64 20 77 69 6e 64  |e specified wind|
000b9070  6f 77 20 28 69 66 20 69  74 20 69 73 20 73 74 69  |ow (if it is sti|
000b9080  6c 6c 20 6f 70 65 6e 29  2c 20 61 6e 64 20 74 68  |ll open), and th|
000b9090  65 6e 20 72 65 6d 6f 76  65 73 20 74 68 65 20 64  |en removes the d|
000b90a0  65 66 69 6e 69 74 69 6f  6e 20 6f 66 20 74 68 65  |efinition of the|
000b90b0  20 77 69 6e 64 6f 77 2e  20 54 68 65 20 6d 65 6d  | window. The mem|
000b90c0  6f 72 79 20 75 73 65 64  20 69 73 20 66 72 65 65  |ory used is free|
000b90d0  64 2e 00 00 44 41 54 41  c8 00 00 00 77 69 6d 70  |d...DATA....wimp|
000b90e0  5f 64 72 61 67 5f 62 6f  78 0a 53 79 6e 74 61 78  |_drag_box.Syntax|
000b90f0  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 77 69  |:.<os_error> *wi|
000b9100  6d 70 5f 64 72 61 67 5f  62 6f 78 20 28 3c 77 69  |mp_drag_box (<wi|
000b9110  6d 70 5f 64 72 61 67 73  74 72 3e 20 2a 72 65 73  |mp_dragstr> *res|
000b9120  75 6c 74 29 3b 0a 48 65  61 64 65 72 3a 09 3c 77  |ult);.Header:.<w|
000b9130  69 6d 70 2e 68 3d 3e 77  69 6d 70 5f 68 3e 0a 0a  |imp.h=>wimp_h>..|
000b9140  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
000b9150  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
000b9160  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
000b9170  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 74 61  |his function sta|
000b9180  72 74 73 20 74 68 65 20  57 69 6d 70 20 64 72 61  |rts the Wimp dra|
000b9190  67 67 69 6e 67 20 61 20  62 6f 78 2e 44 41 54 41  |gging a box.DATA|
000b91a0  aa 01 00 00 57 69 6d 70  5f 44 72 61 67 42 6f 78  |....Wimp_DragBox|
000b91b0  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
000b91c0  6f 72 3e 20 2a 57 69 6d  70 5f 44 72 61 67 42 6f  |or> *Wimp_DragBo|
000b91d0  78 20 28 3c 64 72 61 67  5f 62 6c 6f 63 6b 3e 20  |x (<drag_block> |
000b91e0  2a 64 72 61 67 69 6e 66  6f 29 3b 0a 48 65 61 64  |*draginfo);.Head|
000b91f0  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 57 69 6d  |er:.<DeskLib:Wim|
000b9200  70 53 57 49 73 2e 68 3d  3e 57 69 6d 70 53 57 49  |pSWIs.h=>WimpSWI|
000b9210  73 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |s>..Returns:.Poi|
000b9220  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000b9230  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000b9240  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000b9250  20 69 6e 69 74 69 61 74  65 73 20 61 20 64 72 61  | initiates a dra|
000b9260  67 67 69 6e 67 20 6f 70  65 72 61 74 69 6f 6e 2e  |gging operation.|
000b9270  20 2f 64 72 61 67 69 6e  66 6f 2e 77 69 6e 64 6f  | /draginfo.windo|
000b9280  77 2f 20 63 6f 6e 74 61  69 6e 73 20 74 68 65 20  |w/ contains the |
000b9290  77 69 6e 64 6f 77 20 68  61 6e 64 6c 65 20 28 74  |window handle (t|
000b92a0  79 70 65 73 20 31 2d 34  29 2c 20 2f 64 72 61 67  |ypes 1-4), /drag|
000b92b0  69 6e 66 6f 2e 74 79 70  65 2f 20 63 6f 6e 74 61  |info.type/ conta|
000b92c0  69 6e 73 20 74 68 65 20  64 72 61 67 20 74 79 70  |ins the drag typ|
000b92d0  65 2c 20 2f 64 72 61 67  69 6e 66 6f 2e 73 63 72  |e, /draginfo.scr|
000b92e0  65 65 6e 72 65 63 74 2f  20 63 6f 6e 74 61 69 6e  |eenrect/ contain|
000b92f0  73 20 74 68 65 20 62 6f  78 20 74 6f 20 62 65 20  |s the box to be |
000b9300  64 72 61 67 67 65 64 2c  20 61 6e 64 20 2f 64 72  |dragged, and /dr|
000b9310  61 67 69 6e 66 6f 2e 70  61 72 65 6e 74 2f 20 63  |aginfo.parent/ c|
000b9320  6f 6e 74 61 69 6e 73 20  74 68 65 20 62 6f 75 6e  |ontains the boun|
000b9330  64 69 6e 67 20 62 6f 78  20 28 74 79 70 65 73 20  |ding box (types |
000b9340  35 2d 31 31 29 2e 00 00  44 41 54 41 d8 00 00 00  |5-11)...DATA....|
000b9350  77 69 6d 70 5f 64 72 61  67 73 74 72 0a 54 68 69  |wimp_dragstr.Thi|
000b9360  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
000b9370  64 20 69 6e 20 3c 77 69  6d 70 2e 68 3d 3e 77 69  |d in <wimp.h=>wi|
000b9380  6d 70 5f 68 3e 2e 20 49  74 20 69 73 20 61 20 73  |mp_h>. It is a s|
000b9390  74 72 75 63 74 75 72 65  20 75 73 65 64 20 74 6f  |tructure used to|
000b93a0  20 68 6f 6c 64 20 75 73  65 72 20 64 72 61 67 20  | hold user drag |
000b93b0  62 6f 78 20 64 61 74 61  3a 0a 0a 20 20 5c 7b 0a  |box data:..  \{.|
000b93c0  20 20 20 20 3c 77 69 6d  70 5f 77 3e 09 09 77 69  |    <wimp_w>..wi|
000b93d0  6e 64 6f 77 3b 0a 20 20  20 20 3c 77 69 6d 70 5f  |ndow;.    <wimp_|
000b93e0  64 72 61 67 74 79 70 65  3e 09 74 79 70 65 3b 0a  |dragtype>.type;.|
000b93f0  20 20 20 20 3c 77 69 6d  70 5f 62 6f 78 3e 09 09  |    <wimp_box>..|
000b9400  62 6f 78 3b 0a 20 20 20  20 3c 77 69 6d 70 5f 62  |box;.    <wimp_b|
000b9410  6f 78 3e 09 09 70 61 72  65 6e 74 3b 0a 20 20 7d  |ox>..parent;.  }|
000b9420  44 41 54 41 20 01 00 00  77 69 6d 70 5f 64 72 61  |DATA ...wimp_dra|
000b9430  67 74 79 70 65 0a 54 68  69 73 20 74 79 70 65 20  |gtype.This type |
000b9440  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 77  |is defined in <w|
000b9450  69 6d 70 2e 68 3d 3e 77  69 6d 70 5f 68 3e 2e 20  |imp.h=>wimp_h>. |
000b9460  49 74 20 69 73 20 61 6e  20 65 6e 75 6d 65 72 61  |It is an enumera|
000b9470  74 65 64 20 74 79 70 65  20 63 6f 6e 74 61 69 6e  |ted type contain|
000b9480  69 6e 67 20 74 68 65 20  76 61 6c 75 65 73 20 6f  |ing the values o|
000b9490  66 20 74 68 65 20 57 69  6d 70 20 64 72 61 67 20  |f the Wimp drag |
000b94a0  74 79 70 65 73 3a 0a 0a  20 20 5c 7b 0a 20 20 20  |types:..  \{.   |
000b94b0  20 77 69 6d 70 5f 4d 4f  56 45 5f 57 49 4e 44 2c  | wimp_MOVE_WIND,|
000b94c0  0a 20 20 20 20 77 69 6d  70 5f 53 49 5a 45 5f 57  |.    wimp_SIZE_W|
000b94d0  49 4e 44 2c 0a 20 20 20  20 77 69 6d 70 5f 44 52  |IND,.    wimp_DR|
000b94e0  41 47 5f 48 42 41 52 2c  0a 20 20 20 20 77 69 6d  |AG_HBAR,.    wim|
000b94f0  70 5f 44 52 41 47 5f 56  42 41 52 2c 0a 20 20 20  |p_DRAG_VBAR,.   |
000b9500  20 77 69 6d 70 5f 55 53  45 52 5f 46 49 58 45 44  | wimp_USER_FIXED|
000b9510  2c 0a 20 20 20 20 77 69  6d 70 5f 55 53 45 52 5f  |,.    wimp_USER_|
000b9520  52 55 42 42 45 52 2c 0a  20 20 20 20 77 69 6d 70  |RUBBER,.    wimp|
000b9530  5f 55 53 45 52 5f 48 49  44 44 45 4e 0a 20 20 7d  |_USER_HIDDEN.  }|
000b9540  44 41 54 41 d2 01 00 00  77 69 6d 70 5f 65 6d 61  |DATA....wimp_ema|
000b9550  73 6b 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |sk.This type is |
000b9560  64 65 66 69 6e 65 64 20  69 6e 20 3c 77 69 6d 70  |defined in <wimp|
000b9570  2e 68 3d 3e 77 69 6d 70  5f 68 3e 2e 20 49 74 20  |.h=>wimp_h>. It |
000b9580  69 73 20 61 6e 20 65 6e  75 6d 65 72 61 74 65 64  |is an enumerated|
000b9590  20 74 79 70 65 20 63 6f  6e 74 61 69 6e 69 6e 67  | type containing|
000b95a0  20 74 68 65 20 76 61 6c  75 65 73 20 6f 66 20 74  | the values of t|
000b95b0  68 65 20 62 69 74 73 20  69 6e 20 74 68 65 20 57  |he bits in the W|
000b95c0  69 6d 70 20 65 76 65 6e  74 20 6d 61 73 6b 3a 0a  |imp event mask:.|
000b95d0  0a 20 20 5c 7b 0a 20 20  20 20 77 69 6d 70 5f 45  |.  \{.    wimp_E|
000b95e0  4d 4e 55 4c 4c 2c 0a 20  20 20 20 77 69 6d 70 5f  |MNULL,.    wimp_|
000b95f0  45 4d 52 45 44 52 41 57  2c 0a 20 20 20 20 77 69  |EMREDRAW,.    wi|
000b9600  6d 70 5f 45 4d 4f 50 45  4e 2c 0a 20 20 20 20 77  |mp_EMOPEN,.    w|
000b9610  69 6d 70 5f 45 4d 43 4c  4f 53 45 2c 0a 20 20 20  |imp_EMCLOSE,.   |
000b9620  20 77 69 6d 70 5f 45 4d  50 54 52 4c 45 41 56 45  | wimp_EMPTRLEAVE|
000b9630  2c 0a 20 20 20 20 77 69  6d 70 5f 45 4d 50 54 52  |,.    wimp_EMPTR|
000b9640  45 4e 54 45 52 2c 0a 20  20 20 20 77 69 6d 70 5f  |ENTER,.    wimp_|
000b9650  45 4d 42 55 54 2c 0a 20  20 20 20 77 69 6d 70 5f  |EMBUT,.    wimp_|
000b9660  45 4d 55 53 45 52 44 52  41 47 2c 0a 20 20 20 20  |EMUSERDRAG,.    |
000b9670  77 69 6d 70 5f 45 4d 4b  45 59 2c 0a 20 20 20 20  |wimp_EMKEY,.    |
000b9680  77 69 6d 70 5f 45 4d 4d  45 4e 55 2c 0a 20 20 20  |wimp_EMMENU,.   |
000b9690  20 77 69 6d 70 5f 45 4d  53 43 52 4f 4c 4c 2c 0a  | wimp_EMSCROLL,.|
000b96a0  20 20 20 20 77 69 6d 70  5f 45 4d 4c 4f 53 45 43  |    wimp_EMLOSEC|
000b96b0  41 52 45 54 2c 0a 20 20  20 20 77 69 6d 70 5f 45  |ARET,.    wimp_E|
000b96c0  4d 47 41 49 4e 43 41 52  45 54 2c 0a 20 20 20 20  |MGAINCARET,.    |
000b96d0  77 69 6d 70 5f 45 4d 53  45 4e 44 09 09 3d 20 31  |wimp_EMSEND..= 1|
000b96e0  37 2c 0a 20 20 20 20 77  69 6d 70 5f 45 4d 53 45  |7,.    wimp_EMSE|
000b96f0  4e 44 57 41 4e 54 41 43  4b 09 3d 20 31 38 2c 0a  |NDWANTACK.= 18,.|
000b9700  20 20 20 20 77 69 6d 70  5f 45 4d 41 43 4b 0a 20  |    wimp_EMACK. |
000b9710  20 7d 00 00 44 41 54 41  d7 00 00 00 77 69 6d 70  | }..DATA....wimp|
000b9720  5f 65 72 72 66 6c 61 67  73 0a 54 68 69 73 20 74  |_errflags.This t|
000b9730  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
000b9740  6e 20 3c 77 69 6d 70 2e  68 3d 3e 77 69 6d 70 5f  |n <wimp.h=>wimp_|
000b9750  68 3e 2e 20 49 74 20 69  73 20 61 6e 0a 65 6e 75  |h>. It is an.enu|
000b9760  6d 65 72 61 74 65 64 20  74 79 70 65 20 63 6f 6e  |merated type con|
000b9770  74 61 69 6e 69 6e 67 20  74 68 65 20 76 61 6c 75  |taining the valu|
000b9780  65 73 20 6f 66 20 74 68  65 0a 57 69 6d 70 20 65  |es of the.Wimp e|
000b9790  72 72 6f 72 20 66 6c 61  67 73 3a 0a 0a 20 20 7b  |rror flags:..  {|
000b97a0  0a 20 20 20 20 77 69 6d  70 5f 45 4f 4b 20 20 20  |.    wimp_EOK   |
000b97b0  20 20 20 20 3d 20 31 2c  0a 20 20 20 20 77 69 6d  |    = 1,.    wim|
000b97c0  70 5f 45 43 41 4e 43 45  4c 20 20 20 3d 20 32 2c  |p_ECANCEL   = 2,|
000b97d0  0a 20 20 20 20 77 69 6d  70 5f 45 48 49 43 41 4e  |.    wimp_EHICAN|
000b97e0  43 45 4c 20 3d 20 34 0a  20 20 7d 00 44 41 54 41  |CEL = 4.  }.DATA|
000b97f0  b7 01 00 00 77 69 6d 70  5f 65 74 79 70 65 0a 54  |....wimp_etype.T|
000b9800  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
000b9810  6e 65 64 20 69 6e 20 3c  77 69 6d 70 2e 68 3d 3e  |ned in <wimp.h=>|
000b9820  77 69 6d 70 5f 68 3e 2e  20 49 74 20 69 73 20 61  |wimp_h>. It is a|
000b9830  6e 20 65 6e 75 6d 65 72  61 74 65 64 20 74 79 70  |n enumerated typ|
000b9840  65 20 63 6f 6e 74 61 69  6e 69 6e 67 20 74 68 65  |e containing the|
000b9850  20 76 61 6c 75 65 73 20  6f 66 20 74 68 65 20 57  | values of the W|
000b9860  69 6d 70 20 65 76 65 6e  74 20 74 79 70 65 73 3a  |imp event types:|
000b9870  0a 0a 20 20 5c 7b 0a 20  20 20 20 77 69 6d 70 5f  |..  \{.    wimp_|
000b9880  45 4e 55 4c 4c 2c 0a 20  20 20 20 77 69 6d 70 5f  |ENULL,.    wimp_|
000b9890  45 52 45 44 52 41 57 2c  0a 20 20 20 20 77 69 6d  |EREDRAW,.    wim|
000b98a0  70 5f 45 4f 50 45 4e 2c  0a 20 20 20 20 77 69 6d  |p_EOPEN,.    wim|
000b98b0  70 5f 45 43 4c 4f 53 45  2c 0a 20 20 20 20 77 69  |p_ECLOSE,.    wi|
000b98c0  6d 70 5f 45 50 54 52 4c  45 41 56 45 2c 0a 20 20  |mp_EPTRLEAVE,.  |
000b98d0  20 20 77 69 6d 70 5f 45  50 54 52 45 4e 54 45 52  |  wimp_EPTRENTER|
000b98e0  2c 0a 20 20 20 20 77 69  6d 70 5f 45 42 55 54 2c  |,.    wimp_EBUT,|
000b98f0  0a 20 20 20 20 77 69 6d  70 5f 45 55 53 45 52 44  |.    wimp_EUSERD|
000b9900  52 41 47 2c 0a 20 20 20  20 77 69 6d 70 5f 45 4b  |RAG,.    wimp_EK|
000b9910  45 59 2c 0a 20 20 20 20  77 69 6d 70 5f 45 4d 45  |EY,.    wimp_EME|
000b9920  4e 55 2c 0a 20 20 20 20  77 69 6d 70 5f 45 53 43  |NU,.    wimp_ESC|
000b9930  52 4f 4c 4c 2c 0a 20 20  20 20 77 69 6d 70 5f 45  |ROLL,.    wimp_E|
000b9940  4c 4f 53 45 43 41 52 45  54 2c 0a 20 20 20 20 77  |LOSECARET,.    w|
000b9950  69 6d 70 5f 45 47 41 49  4e 43 41 52 45 54 2c 0a  |imp_EGAINCARET,.|
000b9960  20 20 20 20 77 69 6d 70  5f 45 53 45 4e 44 09 09  |    wimp_ESEND..|
000b9970  3d 20 31 37 2c 0a 20 20  20 20 77 69 6d 70 5f 45  |= 17,.    wimp_E|
000b9980  53 45 4e 44 57 41 4e 54  41 43 4b 09 3d 20 31 38  |SENDWANTACK.= 18|
000b9990  2c 0a 20 20 20 20 77 69  6d 70 5f 45 41 43 4b 0a  |,.    wimp_EACK.|
000b99a0  20 20 7d 00 44 41 54 41  d1 01 00 00 77 69 6d 70  |  }.DATA....wimp|
000b99b0  5f 65 76 65 6e 74 64 61  74 61 0a 54 68 69 73 20  |_eventdata.This |
000b99c0  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
000b99d0  69 6e 20 3c 77 69 6d 70  2e 68 3d 3e 77 69 6d 70  |in <wimp.h=>wimp|
000b99e0  5f 68 3e 2e 20 49 74 20  69 73 20 61 0a 75 6e 69  |_h>. It is a.uni|
000b99f0  6f 6e 20 75 73 65 64 20  74 6f 20 68 6f 6c 64 20  |on used to hold |
000b9a00  64 61 74 61 20 72 65 74  75 72 6e 65 64 20 62 79  |data returned by|
000b9a10  20 74 68 65 20 57 69 6d  70 2e 0a 0a 20 20 5c 7b  | the Wimp...  \{|
000b9a20  0a 20 20 20 20 3c 77 69  6d 70 5f 6f 70 65 6e 73  |.    <wimp_opens|
000b9a30  74 72 3e 09 6f 3b 0a 20  20 20 20 3c 77 69 6d 70  |tr>.o;.    <wimp|
000b9a40  5f 62 6f 78 3e 09 09 64  72 61 67 62 6f 78 3b 0a  |_box>..dragbox;.|
000b9a50  20 20 20 20 69 6e 74 09  09 09 6d 65 6e 75 5b 31  |    int...menu[1|
000b9a60  30 5d 3b 0a 20 20 20 20  3c 77 69 6d 70 5f 63 61  |0];.    <wimp_ca|
000b9a70  72 65 74 73 74 72 3e 09  63 3b 0a 20 20 20 20 3c  |retstr>.c;.    <|
000b9a80  77 69 6d 70 5f 6d 73 67  73 74 72 3e 09 6d 73 67  |wimp_msgstr>.msg|
000b9a90  3b 0a 0a 20 20 20 20 73  74 72 75 63 74 0a 20 20  |;..    struct.  |
000b9aa0  20 20 5c 7b 0a 20 20 20  20 20 20 3c 77 69 6d 70  |  \{.      <wimp|
000b9ab0  5f 6d 6f 75 73 65 73 74  72 3e 09 6d 3b 0a 20 20  |_mousestr>.m;.  |
000b9ac0  20 20 20 20 3c 77 69 6d  70 5f 62 62 69 74 73 3e  |    <wimp_bbits>|
000b9ad0  09 62 3b 0a 20 20 20 20  7d 20 62 75 74 3b 0a 0a  |.b;.    } but;..|
000b9ae0  20 20 20 20 73 74 72 75  63 74 0a 20 20 20 20 5c  |    struct.    \|
000b9af0  7b 0a 20 20 20 20 20 20  3c 77 69 6d 70 5f 63 61  |{.      <wimp_ca|
000b9b00  72 65 74 73 74 72 3e 09  63 3b 0a 20 20 20 20 20  |retstr>.c;.     |
000b9b10  20 69 6e 74 09 09 63 68  63 6f 64 65 3b 0a 20 20  | int..chcode;.  |
000b9b20  20 20 7d 20 6b 65 79 3b  0a 0a 20 20 20 20 73 74  |  } key;..    st|
000b9b30  72 75 63 74 0a 20 20 20  20 5c 7b 0a 20 20 20 20  |ruct.    \{.    |
000b9b40  20 20 3c 77 69 6d 70 5f  6f 70 65 6e 73 74 72 3e  |  <wimp_openstr>|
000b9b50  09 6f 3b 0a 20 20 20 20  20 20 69 6e 74 09 09 78  |.o;.      int..x|
000b9b60  2c 79 3b 0a 20 20 20 20  7d 20 73 63 72 6f 6c 6c  |,y;.    } scroll|
000b9b70  3b 0a 20 20 7d 00 00 00  44 41 54 41 af 00 00 00  |;.  }...DATA....|
000b9b80  77 69 6d 70 5f 65 76 65  6e 74 73 74 72 0a 54 68  |wimp_eventstr.Th|
000b9b90  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
000b9ba0  65 64 20 69 6e 20 3c 77  69 6d 70 2e 68 3d 3e 77  |ed in <wimp.h=>w|
000b9bb0  69 6d 70 5f 68 3e 2e 20  49 74 20 69 73 20 61 20  |imp_h>. It is a |
000b9bc0  73 74 72 75 63 74 75 72  65 20 75 73 65 64 20 74  |structure used t|
000b9bd0  6f 20 68 6f 6c 64 20 61  6e 20 65 76 65 6e 74 20  |o hold an event |
000b9be0  74 79 70 65 20 61 6e 64  20 64 61 74 61 2e 0a 0a  |type and data...|
000b9bf0  20 20 5c 7b 0a 20 20 20  20 3c 77 69 6d 70 5f 65  |  \{.    <wimp_e|
000b9c00  74 79 70 65 3e 09 65 3b  0a 20 20 20 20 3c 77 69  |type>.e;.    <wi|
000b9c10  6d 70 5f 65 76 65 6e 74  64 61 74 61 3e 09 64 61  |mp_eventdata>.da|
000b9c20  74 61 3b 0a 20 20 7d 00  44 41 54 41 8b 00 00 00  |ta;.  }.DATA....|
000b9c30  77 69 6d 70 5f 66 6f 6e  74 5f 61 72 72 61 79 0a  |wimp_font_array.|
000b9c40  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
000b9c50  69 6e 65 64 20 69 6e 20  3c 77 69 6d 70 2e 68 3d  |ined in <wimp.h=|
000b9c60  3e 77 69 6d 70 5f 68 3e  2e 20 49 74 20 69 73 20  |>wimp_h>. It is |
000b9c70  61 20 73 74 72 75 63 74  75 72 65 20 75 73 65 64  |a structure used|
000b9c80  20 74 6f 20 68 6f 6c 64  20 61 20 66 6f 6e 74 20  | to hold a font |
000b9c90  61 72 72 61 79 3a 0a 0a  20 20 5c 7b 0a 20 20 20  |array:..  \{.   |
000b9ca0  20 63 68 61 72 20 20 20  66 5b 32 35 36 5d 3b 0a  | char   f[256];.|
000b9cb0  20 20 7d 00 44 41 54 41  0b 01 00 00 77 69 6d 70  |  }.DATA....wimp|
000b9cc0  5f 66 6f 72 63 65 5f 72  65 64 72 61 77 0a 53 79  |_force_redraw.Sy|
000b9cd0  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
000b9ce0  20 2a 77 69 6d 70 5f 66  6f 72 63 65 5f 72 65 64  | *wimp_force_red|
000b9cf0  72 61 77 20 28 3c 77 69  6d 70 5f 72 65 64 72 61  |raw (<wimp_redra|
000b9d00  77 73 74 72 3e 20 2a 72  65 64 72 61 77 29 3b 0a  |wstr> *redraw);.|
000b9d10  48 65 61 64 65 72 3a 09  3c 77 69 6d 70 2e 68 3d  |Header:.<wimp.h=|
000b9d20  3e 77 69 6d 70 5f 68 3e  0a 0a 52 65 74 75 72 6e  |>wimp_h>..Return|
000b9d30  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000b9d40  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000b9d50  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000b9d60  6e 63 74 69 6f 6e 20 6d  61 72 6b 73 20 61 6e 20  |nction marks an |
000b9d70  61 72 65 61 20 6f 66 20  61 20 77 69 6e 64 6f 77  |area of a window|
000b9d80  20 61 73 20 69 6e 76 61  6c 69 64 2e 20 49 66 20  | as invalid. If |
000b9d90  7b 2f 7d 72 65 64 72 61  77 2d 3e 77 3d 2d 31 7b  |{/}redraw->w=-1{|
000b9da0  2f 7d 20 74 68 65 6e 20  75 73 65 20 73 63 72 65  |/} then use scre|
000b9db0  65 6e 20 63 6f 6f 72 64  69 6e 61 74 65 73 2e 00  |en coordinates..|
000b9dc0  44 41 54 41 de 01 00 00  57 69 6d 70 5f 46 6f 72  |DATA....Wimp_For|
000b9dd0  63 65 52 65 64 72 61 77  0a 53 79 6e 74 61 78 3a  |ceRedraw.Syntax:|
000b9de0  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 57 69 6d  |.<os_error> *Wim|
000b9df0  70 5f 46 6f 72 63 65 52  65 64 72 61 77 20 28 3c  |p_ForceRedraw (<|
000b9e00  77 69 6e 64 6f 77 5f 72  65 64 72 61 77 62 6c 6f  |window_redrawblo|
000b9e10  63 6b 3e 20 2a 62 6c 6f  63 6b 29 3b 0a 48 65 61  |ck> *block);.Hea|
000b9e20  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 57 69  |der:.<DeskLib:Wi|
000b9e30  6d 70 53 57 49 73 2e 68  3d 3e 57 69 6d 70 53 57  |mpSWIs.h=>WimpSW|
000b9e40  49 73 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |Is>..Returns:.Po|
000b9e50  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
000b9e60  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
000b9e70  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
000b9e80  6e 20 66 6f 72 63 65 73  20 61 6e 20 61 72 65 61  |n forces an area|
000b9e90  20 6f 66 20 73 63 72 65  65 6e 20 74 6f 20 62 65  | of screen to be|
000b9ea0  20 72 65 64 72 61 77 20  6c 61 74 65 72 20 75 73  | redraw later us|
000b9eb0  69 6e 67 20 52 65 64 72  61 77 5f 57 69 6e 64 6f  |ing Redraw_Windo|
000b9ec0  77 5f 52 65 71 75 65 73  74 20 65 76 65 6e 74 73  |w_Request events|
000b9ed0  2e 20 7b 2f 7d 62 6c 6f  63 6b 2d 3e 77 69 6e 64  |. {/}block->wind|
000b9ee0  6f 77 7b 2f 7d 20 63 6f  6e 74 61 69 6e 73 20 74  |ow{/} contains t|
000b9ef0  68 65 20 77 69 6e 64 6f  77 20 68 61 6e 64 6c 65  |he window handle|
000b9f00  2c 20 61 6e 64 20 7b 2f  7d 62 6c 6f 63 6b 2d 3e  |, and {/}block->|
000b9f10  72 65 63 74 7b 2f 7d 20  63 6f 6e 74 61 69 6e 73  |rect{/} contains|
000b9f20  20 74 68 65 20 61 72 65  61 20 6f 66 20 77 6f 72  | the area of wor|
000b9f30  6b 20 61 72 65 61 20 74  6f 20 72 65 64 72 61 77  |k area to redraw|
000b9f40  2e 20 49 66 20 7b 2f 7d  62 6c 6f 63 6b 2d 3e 77  |. If {/}block->w|
000b9f50  69 6e 64 6f 77 7b 2f 7d  20 63 6f 6e 74 61 69 6e  |indow{/} contain|
000b9f60  73 20 2d 31 2c 20 74 68  65 6e 20 7b 2f 7d 62 6c  |s -1, then {/}bl|
000b9f70  6f 63 6b 2d 3e 72 65 63  74 7b 2f 7d 20 63 6f 6e  |ock->rect{/} con|
000b9f80  74 61 69 6e 73 20 61 20  73 63 72 65 65 6e 20 61  |tains a screen a|
000b9f90  72 65 61 20 74 6f 20 72  65 64 72 61 77 2e 00 00  |rea to redraw...|
000b9fa0  44 41 54 41 d4 00 00 00  77 69 6d 70 5f 67 65 74  |DATA....wimp_get|
000b9fb0  5f 63 61 72 65 74 5f 70  6f 73 0a 53 79 6e 74 61  |_caret_pos.Synta|
000b9fc0  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 77  |x:.<os_error> *w|
000b9fd0  69 6d 70 5f 67 65 74 5f  63 61 72 65 74 5f 70 6f  |imp_get_caret_po|
000b9fe0  73 20 28 3c 77 69 6d 70  5f 63 61 72 65 74 73 74  |s (<wimp_caretst|
000b9ff0  72 3e 20 2a 62 6c 6b 29  3b 0a 48 65 61 64 65 72  |r> *blk);.Header|
000ba000  3a 09 3c 77 69 6d 70 2e  68 3d 3e 77 69 6d 70 5f  |:.<wimp.h=>wimp_|
000ba010  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |h>..Returns:.Poi|
000ba020  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000ba030  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000ba040  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000ba050  20 67 65 74 73 20 74 68  65 20 63 61 72 65 74 20  | gets the caret |
000ba060  70 6f 73 69 74 69 6f 6e  20 69 6e 74 6f 20 2f 62  |position into /b|
000ba070  6c 6b 2f 2e 44 41 54 41  1a 01 00 00 77 69 6d 70  |lk/.DATA....wimp|
000ba080  5f 67 65 74 5f 69 63 6f  6e 5f 69 6e 66 6f 0a 53  |_get_icon_info.S|
000ba090  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
000ba0a0  3e 20 2a 77 69 6d 70 5f  67 65 74 5f 69 63 6f 6e  |> *wimp_get_icon|
000ba0b0  5f 69 6e 66 6f 20 28 3c  77 69 6d 70 5f 77 3e 20  |_info (<wimp_w> |
000ba0c0  77 69 6e 2c 20 3c 77 69  6d 70 5f 69 3e 20 69 63  |win, <wimp_i> ic|
000ba0d0  6f 6e 2c 20 3c 77 69 6d  70 5f 69 63 6f 6e 3e 20  |on, <wimp_icon> |
000ba0e0  2a 72 65 73 75 6c 74 29  3b 0a 48 65 61 64 65 72  |*result);.Header|
000ba0f0  3a 09 3c 77 69 6d 70 2e  68 3d 3e 77 69 6d 70 5f  |:.<wimp.h=>wimp_|
000ba100  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |h>..Returns:.Poi|
000ba110  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000ba120  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000ba130  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000ba140  20 67 65 74 73 20 74 68  65 20 63 75 72 72 65 6e  | gets the curren|
000ba150  74 20 73 74 61 74 65 20  6f 66 20 74 68 65 20 73  |t state of the s|
000ba160  70 65 63 69 66 69 65 64  20 69 63 6f 6e 20 61 6e  |pecified icon an|
000ba170  64 20 72 65 74 75 72 6e  73 20 69 74 20 69 6e 20  |d returns it in |
000ba180  7b 2f 7d 2a 72 65 73 75  6c 74 7b 2f 7d 2e 00 00  |{/}*result{/}...|
000ba190  44 41 54 41 f3 00 00 00  77 69 6d 70 5f 67 65 74  |DATA....wimp_get|
000ba1a0  5f 70 6f 69 6e 74 5f 69  6e 66 6f 0a 53 79 6e 74  |_point_info.Synt|
000ba1b0  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
000ba1c0  77 69 6d 70 5f 67 65 74  5f 70 6f 69 6e 74 5f 69  |wimp_get_point_i|
000ba1d0  6e 66 6f 20 28 3c 77 69  6d 70 5f 6d 6f 75 73 65  |nfo (<wimp_mouse|
000ba1e0  73 74 72 3e 20 2a 72 65  73 75 6c 74 29 3b 0a 48  |str> *result);.H|
000ba1f0  65 61 64 65 72 3a 09 3c  77 69 6d 70 2e 68 3d 3e  |eader:.<wimp.h=>|
000ba200  77 69 6d 70 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |wimp_h>..Returns|
000ba210  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
000ba220  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
000ba230  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
000ba240  63 74 69 6f 6e 20 67 65  74 73 20 74 68 65 20 63  |ction gets the c|
000ba250  75 72 72 65 6e 74 20 73  74 61 74 65 20 6f 66 20  |urrent state of |
000ba260  74 68 65 20 6d 6f 75 73  65 20 70 6f 69 6e 74 65  |the mouse pointe|
000ba270  72 20 69 6e 20 7b 2f 7d  2a 72 65 73 75 6c 74 7b  |r in {/}*result{|
000ba280  2f 7d 2e 00 44 41 54 41  11 01 00 00 77 69 6d 70  |/}..DATA....wimp|
000ba290  5f 67 65 74 5f 72 65 63  74 61 6e 67 6c 65 0a 53  |_get_rectangle.S|
000ba2a0  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
000ba2b0  3e 20 2a 77 69 6d 70 5f  67 65 74 5f 72 65 63 74  |> *wimp_get_rect|
000ba2c0  61 6e 67 6c 65 20 28 3c  77 69 6d 70 5f 72 65 64  |angle (<wimp_red|
000ba2d0  72 61 77 73 74 72 3e 20  2a 62 6c 6b 2c 20 3c 42  |rawstr> *blk, <B|
000ba2e0  4f 4f 4c 3e 20 2a 6d 6f  72 65 29 3b 0a 48 65 61  |OOL> *more);.Hea|
000ba2f0  64 65 72 3a 09 3c 77 69  6d 70 2e 68 3d 3e 77 69  |der:.<wimp.h=>wi|
000ba300  6d 70 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |mp_h>..Returns:.|
000ba310  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000ba320  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000ba330  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
000ba340  69 6f 6e 73 20 72 65 74  75 72 6e 73 20 3c 54 52  |ions returns <TR|
000ba350  55 45 3e 20 69 6e 20 7b  2f 7d 2a 6d 6f 72 65 7b  |UE> in {/}*more{|
000ba360  2f 7d 20 69 66 20 74 68  65 72 65 20 69 73 20 6d  |/} if there is m|
000ba370  6f 72 65 20 74 6f 20 62  65 20 64 72 61 77 6e 20  |ore to be drawn |
000ba380  3c 77 69 6d 70 5f 67 65  74 5f 72 65 63 74 61 6e  |<wimp_get_rectan|
000ba390  67 6c 65 3e 2e 00 00 00  44 41 54 41 02 01 00 00  |gle>....DATA....|
000ba3a0  77 69 6d 70 5f 67 65 74  5f 77 69 6e 64 5f 69 6e  |wimp_get_wind_in|
000ba3b0  66 6f 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |fo.Syntax:.<os_e|
000ba3c0  72 72 6f 72 3e 20 2a 77  69 6d 70 5f 67 65 74 5f  |rror> *wimp_get_|
000ba3d0  77 69 6e 64 5f 69 6e 66  6f 20 28 3c 77 69 6d 70  |wind_info (<wimp|
000ba3e0  5f 77 69 6e 66 6f 3e 20  2a 72 65 73 75 6c 74 29  |_winfo> *result)|
000ba3f0  3b 0a 48 65 61 64 65 72  3a 09 3c 77 69 6d 70 2e  |;.Header:.<wimp.|
000ba400  68 3d 3e 77 69 6d 70 5f  68 3e 0a 0a 52 65 74 75  |h=>wimp_h>..Retu|
000ba410  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000ba420  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
000ba430  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
000ba440  66 75 6e 63 74 69 6f 6e  73 20 67 65 74 73 20 74  |functions gets t|
000ba450  68 65 20 63 6f 6d 70 6c  65 74 65 20 64 65 66 69  |he complete defi|
000ba460  6e 69 74 69 6f 6e 20 6f  66 20 7b 2f 7d 72 65 73  |nition of {/}res|
000ba470  75 6c 74 2d 3e 77 7b 2f  7d 20 61 6e 64 20 72 65  |ult->w{/} and re|
000ba480  74 75 72 6e 73 20 69 74  20 69 6e 20 7b 2f 7d 2a  |turns it in {/}*|
000ba490  72 65 73 75 6c 74 7b 2f  7d 2e 00 00 44 41 54 41  |result{/}...DATA|
000ba4a0  04 01 00 00 77 69 6d 70  5f 67 65 74 5f 77 69 6e  |....wimp_get_win|
000ba4b0  64 5f 73 74 61 74 65 0a  53 79 6e 74 61 78 3a 09  |d_state.Syntax:.|
000ba4c0  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 77 69 6d 70  |<os_error> *wimp|
000ba4d0  5f 67 65 74 5f 77 69 6e  64 5f 73 74 61 74 65 20  |_get_wind_state |
000ba4e0  28 3c 77 69 6d 70 5f 77  3e 20 77 69 6e 2c 20 77  |(<wimp_w> win, w|
000ba4f0  69 6d 70 5f 77 73 74 61  74 65 20 2a 72 65 73 75  |imp_wstate *resu|
000ba500  6c 74 29 3b 0a 48 65 61  64 65 72 3a 09 3c 77 69  |lt);.Header:.<wi|
000ba510  6d 70 2e 68 3d 3e 77 69  6d 70 5f 68 3e 0a 0a 52  |mp.h=>wimp_h>..R|
000ba520  65 74 75 72 6e 73 3a 09  50 6f 69 6e 74 65 72 20  |eturns:.Pointer |
000ba530  74 6f 20 65 72 72 6f 72  2c 20 6f 72 20 3c 4e 55  |to error, or <NU|
000ba540  4c 4c 3e 20 69 66 20 6e  6f 6e 65 2e 0a 0a 54 68  |LL> if none...Th|
000ba550  69 73 20 66 75 6e 63 74  69 6f 6e 73 20 67 65 74  |is functions get|
000ba560  73 20 74 68 65 20 73 74  61 74 65 20 6f 66 20 74  |s the state of t|
000ba570  68 65 20 77 69 6e 64 6f  77 20 2f 77 69 6e 2f 20  |he window /win/ |
000ba580  61 6e 64 20 72 65 74 75  72 6e 73 20 69 74 20 69  |and returns it i|
000ba590  6e 20 7b 2f 7d 2a 72 65  73 75 6c 74 7b 2f 7d 2e  |n {/}*result{/}.|
000ba5a0  44 41 54 41 3b 01 00 00  57 69 6d 70 5f 47 65 74  |DATA;...Wimp_Get|
000ba5b0  43 61 72 65 74 50 6f 73  69 74 69 6f 6e 0a 53 79  |CaretPosition.Sy|
000ba5c0  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
000ba5d0  20 2a 57 69 6d 70 5f 47  65 74 43 61 72 65 74 50  | *Wimp_GetCaretP|
000ba5e0  6f 73 69 74 69 6f 6e 20  28 3c 63 61 72 65 74 5f  |osition (<caret_|
000ba5f0  62 6c 6f 63 6b 3e 20 2a  63 61 72 65 74 29 3b 0a  |block> *caret);.|
000ba600  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
000ba610  3a 57 69 6d 70 53 57 49  73 2e 68 3d 3e 57 69 6d  |:WimpSWIs.h=>Wim|
000ba620  70 53 57 49 73 3e 0a 0a  52 65 74 75 72 6e 73 3a  |pSWIs>..Returns:|
000ba630  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
000ba640  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
000ba650  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
000ba660  74 69 6f 6e 20 72 65 74  75 72 6e 73 20 64 65 74  |tion returns det|
000ba670  61 69 6c 73 20 6f 66 20  74 68 65 20 63 61 72 65  |ails of the care|
000ba680  74 27 73 20 73 74 61 74  65 20 69 6e 20 74 68 65  |t's state in the|
000ba690  20 62 6c 6f 63 6b 20 70  6f 69 6e 74 65 64 20 74  | block pointed t|
000ba6a0  6f 20 62 79 20 2f 63 61  72 65 74 2f 2e 0a 0a 7b  |o by /caret/...{|
000ba6b0  2f 7d 63 61 72 65 74 2d  3e 68 65 69 67 68 74 7b  |/}caret->height{|
000ba6c0  2f 7d 20 69 73 20 2d 31  20 66 6f 72 20 6e 6f 74  |/} is -1 for not|
000ba6d0  20 64 69 73 70 6c 61 79  65 64 2e 00 44 41 54 41  | displayed..DATA|
000ba6e0  36 01 00 00 57 69 6d 70  5f 47 65 74 49 63 6f 6e  |6...Wimp_GetIcon|
000ba6f0  53 74 61 74 65 0a 53 79  6e 74 61 78 3a 09 3c 6f  |State.Syntax:.<o|
000ba700  73 5f 65 72 72 6f 72 3e  20 2a 57 69 6d 70 5f 47  |s_error> *Wimp_G|
000ba710  65 74 49 63 6f 6e 53 74  61 74 65 20 28 3c 77 69  |etIconState (<wi|
000ba720  6e 64 6f 77 5f 68 61 6e  64 6c 65 3e 20 77 69 6e  |ndow_handle> win|
000ba730  2c 20 3c 69 63 6f 6e 5f  68 61 6e 64 6c 65 3e 20  |, <icon_handle> |
000ba740  69 63 6f 6e 2c 20 3c 69  63 6f 6e 5f 62 6c 6f 63  |icon, <icon_bloc|
000ba750  6b 3e 20 2a 69 63 6f 6e  69 6e 66 6f 29 3b 0a 48  |k> *iconinfo);.H|
000ba760  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
000ba770  57 69 6d 70 53 57 49 73  2e 68 3d 3e 57 69 6d 70  |WimpSWIs.h=>Wimp|
000ba780  53 57 49 73 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |SWIs>..Returns:.|
000ba790  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000ba7a0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000ba7b0  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
000ba7c0  69 6f 6e 20 72 65 74 75  72 6e 73 20 74 68 65 20  |ion returns the |
000ba7d0  73 70 65 63 69 66 69 65  64 20 69 63 6f 6e 27 73  |specified icon's|
000ba7e0  20 64 65 66 69 6e 69 74  69 6f 6e 20 69 6e 20 74  | definition in t|
000ba7f0  68 65 20 62 6c 6f 63 6b  20 70 6f 69 6e 74 65 64  |he block pointed|
000ba800  20 74 6f 20 62 79 20 2f  69 63 6f 6e 69 6e 66 6f  | to by /iconinfo|
000ba810  2f 2e 00 00 44 41 54 41  6d 01 00 00 57 69 6d 70  |/...DATAm...Wimp|
000ba820  5f 47 65 74 50 6f 69 6e  74 65 72 49 6e 66 6f 0a  |_GetPointerInfo.|
000ba830  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
000ba840  72 3e 20 2a 57 69 6d 70  5f 47 65 74 50 6f 69 6e  |r> *Wimp_GetPoin|
000ba850  74 65 72 49 6e 66 6f 20  28 3c 6d 6f 75 73 65 5f  |terInfo (<mouse_|
000ba860  62 6c 6f 63 6b 3e 20 2a  70 74 72 69 6e 66 6f 29  |block> *ptrinfo)|
000ba870  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000ba880  69 62 3a 57 69 6d 70 53  57 49 73 2e 68 3d 3e 57  |ib:WimpSWIs.h=>W|
000ba890  69 6d 70 53 57 49 73 3e  0a 0a 52 65 74 75 72 6e  |impSWIs>..Return|
000ba8a0  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000ba8b0  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000ba8c0  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000ba8d0  6e 63 74 69 6f 6e 20 72  65 74 75 72 6e 73 20 69  |nction returns i|
000ba8e0  6e 66 6f 72 6d 61 74 69  6f 6e 20 61 62 6f 75 74  |nformation about|
000ba8f0  20 74 68 65 20 70 6f 73  69 74 69 6f 6e 20 6f 66  | the position of|
000ba900  20 74 68 65 20 70 6f 69  6e 74 65 72 20 61 6e 64  | the pointer and|
000ba910  20 74 68 65 20 69 6e 73  74 61 6e 74 61 6e 65 6f  | the instantaneo|
000ba920  75 73 20 73 74 61 74 65  20 6f 66 20 74 68 65 20  |us state of the |
000ba930  6d 6f 75 73 65 20 62 75  74 74 6f 6e 73 2e 20 54  |mouse buttons. T|
000ba940  68 65 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 69  |he information i|
000ba950  73 20 72 65 74 75 72 6e  65 64 20 69 6e 20 74 68  |s returned in th|
000ba960  65 20 73 74 72 75 63 74  75 72 65 20 70 6f 69 6e  |e structure poin|
000ba970  74 65 64 20 62 79 20 2f  70 74 72 69 6e 66 6f 2f  |ted by /ptrinfo/|
000ba980  2e 00 00 00 44 41 54 41  29 01 00 00 57 69 6d 70  |....DATA)...Wimp|
000ba990  5f 47 65 74 52 65 63 74  61 6e 67 6c 65 0a 53 79  |_GetRectangle.Sy|
000ba9a0  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
000ba9b0  20 2a 57 69 6d 70 5f 47  65 74 52 65 63 74 61 6e  | *Wimp_GetRectan|
000ba9c0  67 6c 65 20 28 3c 77 69  6e 64 6f 77 5f 72 65 64  |gle (<window_red|
000ba9d0  72 61 77 62 6c 6f 63 6b  3e 20 2a 62 6c 6b 2c 20  |rawblock> *blk, |
000ba9e0  3c 42 4f 4f 4c 3e 20 2a  6d 6f 72 65 29 3b 0a 48  |<BOOL> *more);.H|
000ba9f0  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
000baa00  57 69 6d 70 53 57 49 73  2e 68 3d 3e 57 69 6d 70  |WimpSWIs.h=>Wimp|
000baa10  53 57 49 73 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |SWIs>..Returns:.|
000baa20  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000baa30  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000baa40  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
000baa50  69 6f 6e 20 69 73 20 75  73 65 64 20 72 65 70 65  |ion is used repe|
000baa60  61 74 65 64 6c 79 20 66  6f 6c 6c 6f 77 69 6e 67  |atedly following|
000baa70  20 61 20 63 61 6c 6c 20  74 6f 20 65 69 74 68 65  | a call to eithe|
000baa80  72 20 3c 57 69 6d 70 5f  52 65 64 72 61 77 57 69  |r <Wimp_RedrawWi|
000baa90  6e 64 6f 77 3e 20 6f 72  20 3c 57 69 6d 70 5f 55  |ndow> or <Wimp_U|
000baaa0  70 64 61 74 65 57 69 6e  64 6f 77 3e 2e 00 00 00  |pdateWindow>....|
000baab0  44 41 54 41 fc 00 00 00  57 69 6d 70 5f 47 65 74  |DATA....Wimp_Get|
000baac0  57 69 6e 64 6f 77 49 6e  66 6f 0a 53 79 6e 74 61  |WindowInfo.Synta|
000baad0  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 57  |x:.<os_error> *W|
000baae0  69 6d 70 5f 47 65 74 57  69 6e 64 6f 77 49 6e 66  |imp_GetWindowInf|
000baaf0  6f 20 28 3c 77 69 6e 64  6f 77 5f 69 6e 66 6f 3e  |o (<window_info>|
000bab00  20 2a 69 6e 66 6f 29 3b  0a 48 65 61 64 65 72 3a  | *info);.Header:|
000bab10  09 3c 44 65 73 6b 4c 69  62 3a 57 69 6d 70 53 57  |.<DeskLib:WimpSW|
000bab20  49 73 2e 68 3d 3e 57 69  6d 70 53 57 49 73 3e 0a  |Is.h=>WimpSWIs>.|
000bab30  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
000bab40  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
000bab50  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
000bab60  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 72 65  |This function re|
000bab70  74 75 72 6e 73 20 74 68  65 20 67 69 76 65 6e 20  |turns the given |
000bab80  77 69 6e 64 6f 77 27 73  20 63 6f 6d 70 6c 65 74  |window's complet|
000bab90  65 20 73 74 61 74 65 20  69 6e 63 6c 75 64 69 6e  |e state includin|
000baba0  67 20 61 6c 6c 20 69 63  6f 6e 73 2e 44 41 54 41  |g all icons.DATA|
000babb0  9b 01 00 00 57 69 6d 70  5f 47 65 74 57 69 6e 64  |....Wimp_GetWind|
000babc0  6f 77 4f 75 74 6c 69 6e  65 0a 53 79 6e 74 61 78  |owOutline.Syntax|
000babd0  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 57 69  |:.<os_error> *Wi|
000babe0  6d 70 5f 47 65 74 57 69  6e 64 6f 77 4f 75 74 6c  |mp_GetWindowOutl|
000babf0  69 6e 65 20 28 3c 77 69  6e 64 6f 77 5f 6f 75 74  |ine (<window_out|
000bac00  6c 69 6e 65 3e 20 2a 6f  75 74 6c 69 6e 65 29 3b  |line> *outline);|
000bac10  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
000bac20  62 3a 57 69 6d 70 53 57  49 73 2e 68 3d 3e 57 69  |b:WimpSWIs.h=>Wi|
000bac30  6d 70 53 57 49 73 3e 0a  0a 52 65 74 75 72 6e 73  |mpSWIs>..Returns|
000bac40  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
000bac50  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
000bac60  20 6e 6f 6e 65 2e 0a 0a  44 65 73 6b 74 6f 70 20  | none...Desktop |
000bac70  43 3a 20 53 65 65 20 3c  77 69 6d 70 5f 67 65 74  |C: See <wimp_get|
000bac80  77 69 6e 64 6f 77 6f 75  74 6c 69 6e 65 3d 3e 77  |windowoutline=>w|
000bac90  69 6d 70 5f 67 65 74 77  69 6e 64 6f 77 6f 75 74  |imp_getwindowout|
000baca0  6c 69 6e 65 5f 3e 0a 0a  54 68 69 73 20 66 75 6e  |line_>..This fun|
000bacb0  63 74 69 6f 6e 20 72 65  74 75 72 6e 73 20 74 68  |ction returns th|
000bacc0  65 20 67 69 76 65 6e 20  77 69 6e 64 6f 77 27 73  |e given window's|
000bacd0  20 62 6f 75 6e 64 69 6e  67 20 62 6f 78 20 69 65  | bounding box ie|
000bace0  20 74 68 65 20 62 6f 78  20 77 68 69 63 68 20 63  | the box which c|
000bacf0  6f 6d 70 6c 65 74 65 6c  79 20 63 6f 76 65 72 73  |ompletely covers|
000bad00  20 74 68 65 20 73 70 65  63 69 66 69 65 64 20 77  | the specified w|
000bad10  69 6e 64 6f 77 2c 20 69  6e 63 6c 75 64 69 6e 67  |indow, including|
000bad20  20 69 74 73 20 62 6f 72  64 65 72 2e 20 54 68 65  | its border. The|
000bad30  20 77 69 6e 64 6f 77 20  6d 75 73 74 20 62 65 20  | window must be |
000bad40  6f 70 65 6e 2e 2e 2e 00  44 41 54 41 13 01 00 00  |open....DATA....|
000bad50  77 69 6d 70 5f 67 65 74  77 69 6e 64 6f 77 6f 75  |wimp_getwindowou|
000bad60  74 6c 69 6e 65 0a 53 79  6e 74 61 78 3a 09 3c 6f  |tline.Syntax:.<o|
000bad70  73 5f 65 72 72 6f 72 3e  20 2a 77 69 6d 70 5f 67  |s_error> *wimp_g|
000bad80  65 74 77 69 6e 64 6f 77  6f 75 74 6c 69 6e 65 20  |etwindowoutline |
000bad90  28 3c 77 69 6d 70 5f 72  65 64 72 61 77 73 74 72  |(<wimp_redrawstr|
000bada0  3e 20 2a 72 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |> *r);.Header:.<|
000badb0  77 69 6d 70 2e 68 3d 3e  77 69 6d 70 5f 68 3e 0a  |wimp.h=>wimp_h>.|
000badc0  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
000badd0  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
000bade0  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
000badf0  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 67 65  |This function ge|
000bae00  74 73 20 74 68 65 20 6f  75 74 6c 69 6e 65 20 6f  |ts the outline o|
000bae10  66 20 74 68 65 20 77 69  6e 64 6f 77 20 70 61 73  |f the window pas|
000bae20  73 65 64 20 69 6e 20 7b  2f 7d 72 2d 3e 77 7b 2f  |sed in {/}r->w{/|
000bae30  7d 2e 20 54 68 65 20 6f  75 74 6c 69 6e 65 20 69  |}. The outline i|
000bae40  73 20 72 65 74 75 72 6e  65 64 20 69 6e 20 7b 2f  |s returned in {/|
000bae50  7d 72 2d 3e 62 6f 78 7b  2f 7d 2e 00 44 41 54 41  |}r->box{/}..DATA|
000bae60  fb 00 00 00 57 69 6d 70  5f 47 65 74 57 69 6e 64  |....Wimp_GetWind|
000bae70  6f 77 53 74 61 74 65 0a  53 79 6e 74 61 78 3a 09  |owState.Syntax:.|
000bae80  3c 6f 73 5f 65 72 72 6f  72 3e 20 2a 57 69 6d 70  |<os_error> *Wimp|
000bae90  5f 47 65 74 57 69 6e 64  6f 77 53 74 61 74 65 20  |_GetWindowState |
000baea0  28 3c 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 3e  |(<window_handle>|
000baeb0  20 77 69 6e 64 6f 77 2c  20 3c 77 69 6e 64 6f 77  | window, <window|
000baec0  5f 73 74 61 74 65 3e 20  2a 73 74 61 74 65 29 3b  |_state> *state);|
000baed0  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
000baee0  62 3a 57 69 6d 70 53 57  49 73 2e 68 3d 3e 57 69  |b:WimpSWIs.h=>Wi|
000baef0  6d 70 53 57 49 73 3e 0a  0a 52 65 74 75 72 6e 73  |mpSWIs>..Returns|
000baf00  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
000baf10  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
000baf20  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
000baf30  63 74 69 6f 6e 20 72 65  74 75 72 6e 73 20 74 68  |ction returns th|
000baf40  65 20 67 69 76 65 6e 20  77 69 6e 64 6f 77 27 73  |e given window's|
000baf50  20 73 74 61 74 65 2e 00  44 41 54 41 2b 01 00 00  | state..DATA+...|
000baf60  77 69 6d 70 2e 68 0a 54  68 65 20 5c 3c 77 69 6d  |wimp.h.The \<wim|
000baf70  70 2e 68 3e 20 68 65 61  64 65 72 20 64 65 63 6c  |p.h> header decl|
000baf80  61 72 65 73 20 66 75 6e  63 74 69 6f 6e 73 20 61  |ares functions a|
000baf90  6e 64 20 3c 74 79 70 65  73 3d 3e 77 69 6d 70 5f  |nd <types=>wimp_|
000bafa0  74 79 70 65 73 5f 3e 20  66 6f 72 20 68 61 6e 64  |types_> for hand|
000bafb0  6c 69 6e 67 20 74 68 65  20 57 69 6d 70 2e 0a 0a  |ling the Wimp...|
000bafc0  46 75 6e 63 74 69 6f 6e  73 3a 0a 0a 23 74 61 62  |Functions:..#tab|
000bafd0  6c 65 20 63 6f 6c 75 6d  6e 73 20 32 0a 3c 4d 69  |le columns 2.<Mi|
000bafe0  73 63 65 6c 6c 61 6e 65  6f 75 73 3d 3e 77 5f 69  |scellaneous=>w_i|
000baff0  6e 69 74 5f 3e 0a 3c 57  69 6e 64 6f 77 20 48 61  |nit_>.<Window Ha|
000bb000  6e 64 6c 69 6e 67 3d 3e  77 5f 6f 70 65 6e 5f 3e  |ndling=>w_open_>|
000bb010  0a 3c 54 65 6d 70 6c 61  74 65 20 48 61 6e 64 6c  |.<Template Handl|
000bb020  69 6e 67 3d 3e 77 5f 74  65 6d 70 5f 3e 0a 3c 49  |ing=>w_temp_>.<I|
000bb030  63 6f 6e 20 48 61 6e 64  6c 69 6e 67 3d 3e 77 5f  |con Handling=>w_|
000bb040  69 63 6f 6e 5f 3e 0a 3c  43 6f 6c 6f 75 72 20 48  |icon_>.<Colour H|
000bb050  61 6e 64 6c 69 6e 67 3d  3e 77 5f 63 6f 6c 5f 3e  |andling=>w_col_>|
000bb060  0a 3c 46 6f 6e 74 20 48  61 6e 64 6c 69 6e 67 3d  |.<Font Handling=|
000bb070  3e 77 5f 66 6f 6e 74 5f  3e 0a 23 65 6e 64 74 61  |>w_font_>.#endta|
000bb080  62 6c 65 00 44 41 54 41  8f 00 00 00 77 69 6d 70  |ble.DATA....wimp|
000bb090  5f 69 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |_i.This type is |
000bb0a0  64 65 66 69 6e 65 64 20  69 6e 20 3c 77 69 6d 70  |defined in <wimp|
000bb0b0  2e 68 3d 3e 77 69 6d 70  5f 68 3e 20 61 73 20 61  |.h=>wimp_h> as a|
000bb0c0  20 74 79 70 65 20 63 61  70 61 62 6c 65 20 6f 66  | type capable of|
000bb0d0  20 63 6f 6e 74 61 69 6e  69 6e 67 20 61 20 57 69  | containing a Wi|
000bb0e0  6d 70 20 69 63 6f 6e 20  68 61 6e 64 6c 65 2e 20  |mp icon handle. |
000bb0f0  49 74 20 69 73 20 61 63  74 75 61 6c 6c 79 20 64  |It is actually d|
000bb100  65 66 69 6e 65 64 20 61  73 20 61 6e 20 2f 69 6e  |efined as an /in|
000bb110  74 2f 2e 00 44 41 54 41  af 01 00 00 77 69 6d 70  |t/..DATA....wimp|
000bb120  5f 69 62 74 79 70 65 0a  54 68 69 73 20 74 79 70  |_ibtype.This typ|
000bb130  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
000bb140  3c 77 69 6d 70 2e 68 3d  3e 77 69 6d 70 5f 68 3e  |<wimp.h=>wimp_h>|
000bb150  2e 20 49 74 20 69 73 20  61 6e 20 65 6e 75 6d 65  |. It is an enume|
000bb160  72 61 74 65 64 20 74 79  70 65 20 63 6f 6e 74 61  |rated type conta|
000bb170  69 6e 69 6e 67 20 74 68  65 20 76 61 6c 75 65 73  |ining the values|
000bb180  20 6f 66 20 74 68 65 20  57 69 6d 70 20 69 63 6f  | of the Wimp ico|
000bb190  6e 20 62 75 74 74 6f 6e  20 74 79 70 65 73 3a 0a  |n button types:.|
000bb1a0  0a 20 20 5c 7b 0a 20 20  20 20 77 69 6d 70 5f 42  |.  \{.    wimp_B|
000bb1b0  49 47 4e 4f 52 45 2c 0a  20 20 20 20 77 69 6d 70  |IGNORE,.    wimp|
000bb1c0  5f 42 4e 4f 54 49 46 59  2c 0a 20 20 20 20 77 69  |_BNOTIFY,.    wi|
000bb1d0  6d 70 5f 42 43 4c 49 43  4b 41 55 54 4f 2c 0a 20  |mp_BCLICKAUTO,. |
000bb1e0  20 20 20 77 69 6d 70 5f  42 43 4c 49 43 4b 44 45  |   wimp_BCLICKDE|
000bb1f0  42 4f 55 4e 43 45 2c 0a  20 20 20 20 77 69 6d 70  |BOUNCE,.    wimp|
000bb200  5f 42 53 45 4c 52 45 4c  2c 0a 20 20 20 20 77 69  |_BSELREL,.    wi|
000bb210  6d 70 5f 42 53 45 4c 44  4f 55 42 4c 45 2c 0a 20  |mp_BSELDOUBLE,. |
000bb220  20 20 20 77 69 6d 70 5f  42 44 45 42 4f 55 4e 43  |   wimp_BDEBOUNC|
000bb230  45 44 52 41 47 2c 0a 20  20 20 20 77 69 6d 70 5f  |EDRAG,.    wimp_|
000bb240  42 52 45 4c 45 41 53 45  44 52 41 47 2c 0a 20 20  |BRELEASEDRAG,.  |
000bb250  20 20 77 69 6d 70 5f 42  44 4f 55 42 4c 45 44 52  |  wimp_BDOUBLEDR|
000bb260  41 47 2c 0a 20 20 20 20  77 69 6d 70 5f 42 53 45  |AG,.    wimp_BSE|
000bb270  4c 4e 4f 54 49 46 59 2c  0a 20 20 20 20 77 69 6d  |LNOTIFY,.    wim|
000bb280  70 5f 42 43 4c 49 43 4b  44 52 41 47 44 4f 55 42  |p_BCLICKDRAGDOUB|
000bb290  4c 45 2c 0a 20 20 20 20  77 69 6d 70 5f 42 43 4c  |LE,.    wimp_BCL|
000bb2a0  49 43 4b 53 45 4c 2c 0a  20 20 20 20 77 69 6d 70  |ICKSEL,.    wimp|
000bb2b0  5f 42 57 52 49 54 41 42  4c 45 20 3d 20 31 35 0a  |_BWRITABLE = 15.|
000bb2c0  20 20 7d 00 44 41 54 41  c0 00 00 00 77 69 6d 70  |  }.DATA....wimp|
000bb2d0  5f 69 63 6f 6e 0a 54 68  69 73 20 74 79 70 65 20  |_icon.This type |
000bb2e0  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 77  |is defined in <w|
000bb2f0  69 6d 70 2e 68 3d 3e 77  69 6d 70 5f 68 3e 2e 20  |imp.h=>wimp_h>. |
000bb300  49 74 20 69 73 20 61 20  73 74 72 75 63 74 75 72  |It is a structur|
000bb310  65 20 63 6f 6e 74 61 69  6e 69 6e 67 20 61 6e 20  |e containing an |
000bb320  69 63 6f 6e 20 64 65 66  69 6e 69 74 69 6f 6e 3a  |icon definition:|
000bb330  0a 0a 20 20 5c 7b 0a 20  20 20 20 3c 77 69 6d 70  |..  \{.    <wimp|
000bb340  5f 62 6f 78 3e 09 62 6f  78 3b 0a 20 20 20 20 3c  |_box>.box;.    <|
000bb350  77 69 6d 70 5f 69 63 6f  6e 66 6c 61 67 73 3e 09  |wimp_iconflags>.|
000bb360  66 6c 61 67 73 3b 0a 20  20 20 20 3c 77 69 6d 70  |flags;.    <wimp|
000bb370  5f 69 63 6f 6e 64 61 74  61 3e 09 64 61 74 61 3b  |_icondata>.data;|
000bb380  0a 20 20 7d 44 41 54 41  7f 01 00 00 77 69 6d 70  |.  }DATA....wimp|
000bb390  5f 69 63 6f 6e 64 61 74  61 0a 54 68 69 73 20 74  |_icondata.This t|
000bb3a0  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
000bb3b0  6e 20 3c 77 69 6d 70 2e  68 3d 3e 77 69 6d 70 5f  |n <wimp.h=>wimp_|
000bb3c0  68 3e 2e 20 49 74 20 69  73 20 61 20 75 6e 69 6f  |h>. It is a unio|
000bb3d0  6e 20 63 6f 6e 74 61 69  6e 69 6e 67 20 57 69 6d  |n containing Wim|
000bb3e0  70 20 69 63 6f 6e 20 64  61 74 61 20 66 6f 72 20  |p icon data for |
000bb3f0  61 6c 6c 20 69 63 6f 6e  20 74 79 70 65 73 3a 0a  |all icon types:.|
000bb400  0a 20 20 5c 7b 0a 20 20  09 63 68 61 72 09 20 09  |.  \{.  .char. .|
000bb410  74 65 78 74 5b 31 32 5d  3b 0a 20 20 09 63 68 61  |text[12];.  .cha|
000bb420  72 09 20 09 73 70 72 69  74 65 5f 6e 61 6d 65 5b  |r. .sprite_name[|
000bb430  31 32 5d 3b 0a 20 20 20  20 0a 20 20 09 73 74 72  |12];.    .  .str|
000bb440  75 63 74 0a 20 20 09 5c  7b 0a 20 20 09 20 09 63  |uct.  .\{.  . .c|
000bb450  68 61 72 09 2a 6e 61 6d  65 3b 0a 20 20 09 20 09  |har.*name;.  . .|
000bb460  76 6f 69 64 09 2a 73 70  72 69 74 65 61 72 65 61  |void.*spritearea|
000bb470  3b 0a 20 20 09 20 09 3c  42 4f 4f 4c 3e 09 6e 61  |;.  . .<BOOL>.na|
000bb480  6d 65 69 73 6e 61 6d 65  3b 0a 20 20 09 7d 20 69  |meisname;.  .} i|
000bb490  6e 64 69 72 65 63 74 73  70 72 69 74 65 3b 0a 0a  |ndirectsprite;..|
000bb4a0  20 20 09 73 74 72 75 63  74 0a 20 20 09 5c 7b 0a  |  .struct.  .\{.|
000bb4b0  20 20 09 20 09 63 68 61  72 09 2a 62 75 66 66 65  |  . .char.*buffe|
000bb4c0  72 3b 0a 20 20 09 20 09  63 68 61 72 09 2a 76 61  |r;.  . .char.*va|
000bb4d0  6c 69 64 73 74 72 69 6e  67 3b 0a 20 20 09 20 09  |lidstring;.  . .|
000bb4e0  69 6e 74 09 62 75 66 66  6c 65 6e 3b 0a 20 20 09  |int.bufflen;.  .|
000bb4f0  7d 20 69 6e 64 69 72 65  63 74 74 65 78 74 3b 0a  |} indirecttext;.|
000bb500  20 20 7d 00 44 41 54 41  de 01 00 00 77 69 6d 70  |  }.DATA....wimp|
000bb510  5f 69 63 6f 6e 66 6c 61  67 73 0a 54 68 69 73 20  |_iconflags.This |
000bb520  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
000bb530  69 6e 20 3c 77 69 6d 70  2e 68 3d 3e 77 69 6d 70  |in <wimp.h=>wimp|
000bb540  5f 68 3e 2e 20 49 74 20  69 73 20 61 6e 20 65 6e  |_h>. It is an en|
000bb550  75 6d 65 72 61 74 65 64  20 74 79 70 65 20 63 6f  |umerated type co|
000bb560  6e 74 61 69 6e 69 6e 67  20 74 68 65 20 76 61 6c  |ntaining the val|
000bb570  75 65 73 20 6f 66 20 74  68 65 20 57 69 6d 70 20  |ues of the Wimp |
000bb580  69 63 6f 6e 20 66 6c 61  67 73 3a 0a 0a 20 20 5c  |icon flags:..  \|
000bb590  7b 0a 20 20 20 20 77 69  6d 70 5f 49 54 45 58 54  |{.    wimp_ITEXT|
000bb5a0  2c 0a 20 20 20 20 77 69  6d 70 5f 49 53 50 52 49  |,.    wimp_ISPRI|
000bb5b0  54 45 2c 0a 20 20 20 20  77 69 6d 70 5f 49 42 4f  |TE,.    wimp_IBO|
000bb5c0  52 44 45 52 2c 0a 20 20  20 20 77 69 6d 70 5f 49  |RDER,.    wimp_I|
000bb5d0  48 43 45 4e 54 52 45 2c  0a 20 20 20 20 77 69 6d  |HCENTRE,.    wim|
000bb5e0  70 5f 49 56 43 45 4e 54  52 45 2c 0a 20 20 20 20  |p_IVCENTRE,.    |
000bb5f0  77 69 6d 70 5f 49 46 49  4c 4c 45 44 2c 0a 20 20  |wimp_IFILLED,.  |
000bb600  20 20 77 69 6d 70 5f 49  46 4f 4e 54 2c 0a 20 20  |  wimp_IFONT,.  |
000bb610  20 20 77 69 6d 70 5f 49  52 45 44 52 41 57 2c 0a  |  wimp_IREDRAW,.|
000bb620  20 20 20 20 77 69 6d 70  5f 49 4e 44 49 52 45 43  |    wimp_INDIREC|
000bb630  54 2c 0a 20 20 20 20 77  69 6d 70 5f 49 52 4a 55  |T,.    wimp_IRJU|
000bb640  53 54 2c 0a 20 20 20 20  77 69 6d 70 5f 49 45 53  |ST,.    wimp_IES|
000bb650  47 5f 4e 4f 43 2c 0a 20  20 20 20 77 69 6d 70 5f  |G_NOC,.    wimp_|
000bb660  49 48 41 4c 56 45 53 50  52 49 54 45 2c 0a 20 20  |IHALVESPRITE,.  |
000bb670  20 20 77 69 6d 70 5f 49  42 54 59 50 45 2c 0a 20  |  wimp_IBTYPE,. |
000bb680  20 20 20 77 69 6d 70 5f  49 53 45 4c 45 43 54 45  |   wimp_ISELECTE|
000bb690  44 2c 0a 20 20 20 20 77  69 6d 70 5f 49 4e 4f 53  |D,.    wimp_INOS|
000bb6a0  45 4c 45 43 54 2c 0a 20  20 20 20 77 69 6d 70 5f  |ELECT,.    wimp_|
000bb6b0  49 44 45 4c 45 54 45 44  2c 0a 20 20 20 20 77 69  |IDELETED,.    wi|
000bb6c0  6d 70 5f 49 46 4f 52 45  43 4f 4c 2c 0a 20 20 20  |mp_IFORECOL,.   |
000bb6d0  20 77 69 6d 70 5f 49 42  41 43 4b 43 4f 4c 0a 20  | wimp_IBACKCOL. |
000bb6e0  20 7d 00 00 44 41 54 41  c5 00 00 00 77 69 6d 70  | }..DATA....wimp|
000bb6f0  5f 69 63 72 65 61 74 65  0a 54 68 69 73 20 74 79  |_icreate.This ty|
000bb700  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
000bb710  20 3c 77 69 6d 70 2e 68  3d 3e 77 69 6d 70 5f 68  | <wimp.h=>wimp_h|
000bb720  3e 2e 20 49 74 20 69 73  20 61 20 73 74 72 75 63  |>. It is a struc|
000bb730  74 75 72 65 20 63 6f 6e  74 61 69 6e 69 6e 67 20  |ture containing |
000bb740  64 61 74 61 20 66 6f 72  20 74 68 65 20 66 75 6e  |data for the fun|
000bb750  63 74 69 6f 6e 20 3c 77  69 6d 70 5f 63 72 65 61  |ction <wimp_crea|
000bb760  74 65 5f 69 63 6f 6e 3d  3e 77 69 6d 70 5f 63 72  |te_icon=>wimp_cr|
000bb770  65 61 74 65 5f 69 63 6f  6e 5f 3e 2e 0a 0a 20 20  |eate_icon_>...  |
000bb780  5c 7b 0a 20 20 20 20 3c  77 69 6d 70 5f 77 3e 09  |\{.    <wimp_w>.|
000bb790  77 3b 0a 20 20 20 20 3c  77 69 6d 70 5f 69 63 6f  |w;.    <wimp_ico|
000bb7a0  6e 3e 09 69 3b 0a 20 20  7d 00 00 00 44 41 54 41  |n>.i;.  }...DATA|
000bb7b0  10 03 00 00 57 69 6d 70  5f 49 6e 69 74 69 61 6c  |....Wimp_Initial|
000bb7c0  69 73 65 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |ise.Syntax:.<os_|
000bb7d0  65 72 72 6f 72 3e 20 2a  57 69 6d 70 5f 49 6e 69  |error> *Wimp_Ini|
000bb7e0  74 69 61 6c 69 73 65 20  28 75 6e 73 69 67 6e 65  |tialise (unsigne|
000bb7f0  64 20 69 6e 74 20 2a 76  65 72 73 69 6f 6e 2c 20  |d int *version, |
000bb800  63 68 61 72 20 2a 6e 61  6d 65 2c 20 3c 74 61 73  |char *name, <tas|
000bb810  6b 5f 68 61 6e 64 6c 65  3e 20 2a 74 61 73 6b 2c  |k_handle> *task,|
000bb820  20 69 6e 74 20 2a 6d 65  73 73 29 3b 0a 48 65 61  | int *mess);.Hea|
000bb830  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 57 69  |der:.<DeskLib:Wi|
000bb840  6d 70 53 57 49 73 2e 68  3d 3e 57 69 6d 70 53 57  |mpSWIs.h=>WimpSW|
000bb850  49 73 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |Is>..Returns:.Po|
000bb860  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
000bb870  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
000bb880  65 2e 0a 0a 53 65 65 20  74 68 65 20 44 65 73 6b  |e...See the Desk|
000bb890  74 6f 70 20 43 20 66 75  6e 63 74 69 6f 6e 20 3c  |top C function <|
000bb8a0  77 69 6d 70 5f 69 6e 69  74 69 61 6c 69 73 65 3d  |wimp_initialise=|
000bb8b0  3e 77 69 6d 70 5f 69 6e  69 74 69 61 6c 69 73 65  |>wimp_initialise|
000bb8c0  5f 3e 2e 20 0a 0a 54 68  69 73 20 66 75 6e 63 74  |_>. ..This funct|
000bb8d0  69 6f 6e 20 72 65 67 69  73 74 65 72 73 20 61 20  |ion registers a |
000bb8e0  74 61 73 6b 20 77 69 74  68 20 74 68 65 20 57 69  |task with the Wi|
000bb8f0  6d 70 2c 20 61 6e 64 20  6d 75 73 74 20 62 65 20  |mp, and must be |
000bb900  63 61 6c 6c 65 64 20 4f  4e 43 45 20 77 68 65 6e  |called ONCE when|
000bb910  20 74 68 65 20 74 61 73  6b 20 73 74 61 72 74 73  | the task starts|
000bb920  20 75 70 2e 0a 0a 2f 76  65 72 73 69 6f 6e 2f 20  | up.../version/ |
000bb930  70 6f 69 6e 74 73 20 74  6f 20 74 68 65 20 6d 69  |points to the mi|
000bb940  6e 69 6d 75 6d 20 57 69  6d 70 20 76 65 72 73 69  |nimum Wimp versi|
000bb950  6f 6e 20 74 68 69 73 20  74 61 73 6b 20 69 73 20  |on this task is |
000bb960  66 6f 72 20 28 69 6e 20  74 68 65 20 66 6f 72 6d  |for (in the form|
000bb970  20 76 65 72 73 69 6f 6e  20 2a 20 31 30 30 29 2e  | version * 100).|
000bb980  20 2f 6e 61 6d 65 2f 20  70 6f 69 6e 74 73 20 74  | /name/ points t|
000bb990  6f 20 61 20 73 68 6f 72  74 20 64 65 73 63 72 69  |o a short descri|
000bb9a0  70 74 69 6f 6e 20 6f 66  20 74 68 65 20 74 61 73  |ption of the tas|
000bb9b0  6b 20 28 32 30 20 63 68  61 72 61 63 74 65 72 73  |k (20 characters|
000bb9c0  29 2e 20 2f 6d 65 73 73  2f 20 70 6f 69 6e 74 73  |). /mess/ points|
000bb9d0  20 74 6f 20 61 6e 20 61  72 72 61 79 20 6f 66 20  | to an array of |
000bb9e0  6d 65 73 73 61 67 65 20  6e 75 6d 62 65 72 73 20  |message numbers |
000bb9f0  74 68 65 20 74 61 73 6b  20 77 61 6e 74 73 20 74  |the task wants t|
000bba00  6f 20 72 65 63 65 69 76  65 20 28 6f 6e 6c 79 20  |o receive (only |
000bba10  69 66 20 76 65 72 73 69  6f 6e 3e 3d 33 30 30 29  |if version>=300)|
000bba20  2e 20 49 66 20 2f 76 65  72 73 69 6f 6e 2f 20 69  |. If /version/ i|
000bba30  73 20 6e 6f 74 20 33 30  30 20 74 68 65 6e 20 30  |s not 300 then 0|
000bba40  20 6d 65 61 6e 73 20 61  6c 6c 20 6d 65 73 73 61  | means all messa|
000bba50  67 65 73 20 61 72 65 20  69 6d 70 6f 72 74 61 6e  |ges are importan|
000bba60  74 2e 0a 0a 4f 6e 20 65  78 69 74 2c 20 74 68 65  |t...On exit, the|
000bba70  20 61 63 74 75 61 6c 20  57 69 6d 70 20 76 65 72  | actual Wimp ver|
000bba80  73 69 6f 6e 20 69 73 20  72 65 74 75 72 6e 65 64  |sion is returned|
000bba90  20 69 6e 20 2f 76 65 72  73 69 6f 6e 2f 20 61 6e  | in /version/ an|
000bbaa0  64 20 74 68 65 20 74 61  73 6b 20 68 61 6e 64 6c  |d the task handl|
000bbab0  65 20 69 6e 20 2f 74 61  73 6b 2f 2e 44 41 54 41  |e in /task/.DATA|
000bbac0  e5 00 00 00 77 69 6d 70  5f 69 6e 69 74 69 61 6c  |....wimp_initial|
000bbad0  69 73 65 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |ise.Syntax:.<os_|
000bbae0  65 72 72 6f 72 3e 20 2a  77 69 6d 70 5f 69 6e 69  |error> *wimp_ini|
000bbaf0  74 69 61 6c 69 73 65 20  28 69 6e 74 20 2a 76 29  |tialise (int *v)|
000bbb00  3b 0a 48 65 61 64 65 72  3a 09 3c 77 69 6d 70 2e  |;.Header:.<wimp.|
000bbb10  68 3d 3e 77 69 6d 70 5f  68 3e 0a 0a 52 65 74 75  |h=>wimp_h>..Retu|
000bbb20  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000bbb30  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
000bbb40  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
000bbb50  66 75 6e 63 74 69 6f 6e  73 20 63 6c 6f 73 65 73  |functions closes|
000bbb60  20 61 6e 64 20 64 65 6c  65 74 65 73 20 61 6c 6c  | and deletes all|
000bbb70  20 77 69 6e 64 6f 77 73  2c 20 72 65 74 75 72 6e  | windows, return|
000bbb80  69 6e 67 20 74 68 65 20  57 69 6d 70 20 76 65 72  |ing the Wimp ver|
000bbb90  73 69 6f 6e 20 69 6e 20  7b 2f 7d 2a 76 7b 2f 7d  |sion in {/}*v{/}|
000bbba0  2e 00 00 00 44 41 54 41  ed 00 00 00 77 69 6d 70  |....DATA....wimp|
000bbbb0  5f 6c 6f 61 64 5f 74 65  6d 70 6c 61 74 65 0a 53  |_load_template.S|
000bbbc0  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
000bbbd0  3e 20 2a 77 69 6d 70 5f  6c 6f 61 64 5f 74 65 6d  |> *wimp_load_tem|
000bbbe0  70 6c 61 74 65 20 28 3c  77 69 6d 70 5f 74 65 6d  |plate (<wimp_tem|
000bbbf0  70 6c 61 74 65 3e 20 2a  74 65 6d 70 6c 61 74 65  |plate> *template|
000bbc00  29 3b 0a 48 65 61 64 65  72 3a 09 3c 77 69 6d 70  |);.Header:.<wimp|
000bbc10  2e 68 3d 3e 77 69 6d 70  5f 68 3e 0a 0a 52 65 74  |.h=>wimp_h>..Ret|
000bbc20  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
000bbc30  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
000bbc40  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
000bbc50  20 66 75 6e 63 74 69 6f  6e 20 6c 6f 61 64 73 20  | function loads |
000bbc60  61 20 74 65 6d 70 6c 61  74 65 20 66 72 6f 6d 20  |a template from |
000bbc70  74 68 65 20 63 75 72 72  65 6e 74 6c 79 20 6f 70  |the currently op|
000bbc80  65 6e 20 74 65 6d 70 6c  61 74 65 20 66 69 6c 65  |en template file|
000bbc90  2e 00 00 00 44 41 54 41  21 01 00 00 57 69 6d 70  |....DATA!...Wimp|
000bbca0  5f 4c 6f 61 64 54 65 6d  70 6c 61 74 65 0a 53 79  |_LoadTemplate.Sy|
000bbcb0  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
000bbcc0  20 2a 57 69 6d 70 5f 4c  6f 61 64 54 65 6d 70 6c  | *Wimp_LoadTempl|
000bbcd0  61 74 65 20 28 3c 74 65  6d 70 6c 61 74 65 5f 62  |ate (<template_b|
000bbce0  6c 6f 63 6b 3e 20 2a 74  65 6d 70 6c 61 74 65 29  |lock> *template)|
000bbcf0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000bbd00  69 62 3a 57 69 6d 70 53  57 49 73 2e 68 3d 3e 57  |ib:WimpSWIs.h=>W|
000bbd10  69 6d 70 53 57 49 73 3e  0a 0a 52 65 74 75 72 6e  |impSWIs>..Return|
000bbd20  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000bbd30  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000bbd40  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000bbd50  6e 63 74 69 6f 6e 20 6c  6f 61 64 73 20 61 20 74  |nction loads a t|
000bbd60  65 6d 70 6c 61 74 65 2e  20 59 6f 75 20 6d 75 73  |emplate. You mus|
000bbd70  74 20 70 72 65 76 69 6f  75 73 6c 79 20 68 61 76  |t previously hav|
000bbd80  65 20 63 61 6c 6c 65 64  20 3c 57 69 6d 70 5f 4f  |e called <Wimp_O|
000bbd90  70 65 6e 54 65 6d 70 6c  61 74 65 3e 20 74 6f 20  |penTemplate> to |
000bbda0  6f 70 65 6e 20 61 20 74  65 6d 70 6c 61 74 65 20  |open a template |
000bbdb0  66 69 6c 65 2e 00 00 00  44 41 54 41 ad 00 00 00  |file....DATA....|
000bbdc0  77 69 6d 70 5f 4d 41 58  4e 41 4d 45 0a 54 68 69  |wimp_MAXNAME.Thi|
000bbdd0  73 20 6d 61 63 72 6f 20  69 73 20 64 65 66 69 6e  |s macro is defin|
000bbde0  65 64 20 69 6e 20 3c 44  65 73 6b 4c 69 62 3a 57  |ed in <DeskLib:W|
000bbdf0  69 6d 70 2e 68 3d 3e 57  69 6d 70 3e 2e 20 49 74  |imp.h=>Wimp>. It|
000bbe00  20 69 73 20 61 20 76 61  6c 75 65 20 72 65 70 72  | is a value repr|
000bbe10  65 73 65 6e 74 69 6e 67  20 74 68 65 20 6c 65 6e  |esenting the len|
000bbe20  67 74 68 20 6f 66 20 77  69 6d 70 20 6e 61 6d 65  |gth of wimp name|
000bbe30  73 20 28 69 63 6f 6e 20  74 65 78 74 2c 20 73 70  |s (icon text, sp|
000bbe40  72 69 74 65 20 6e 61 6d  65 73 20 65 74 63 29 2e  |rite names etc).|
000bbe50  20 49 74 20 69 73 20 64  65 66 69 6e 65 64 20 61  | It is defined a|
000bbe60  73 20 31 32 2e 00 00 00  44 41 54 41 07 01 00 00  |s 12....DATA....|
000bbe70  77 69 6d 70 5f 6d 65 6e  75 66 6c 61 67 73 0a 54  |wimp_menuflags.T|
000bbe80  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
000bbe90  6e 65 64 20 69 6e 20 3c  77 69 6d 70 2e 68 3d 3e  |ned in <wimp.h=>|
000bbea0  77 69 6d 70 5f 68 3e 2e  20 49 74 20 69 73 20 61  |wimp_h>. It is a|
000bbeb0  6e 20 65 6e 75 6d 65 72  61 74 65 64 20 74 79 70  |n enumerated typ|
000bbec0  65 20 63 6f 6e 74 61 69  6e 69 6e 67 20 74 68 65  |e containing the|
000bbed0  20 76 61 6c 75 65 73 20  6f 66 20 74 68 65 20 6d  | values of the m|
000bbee0  65 6e 75 20 66 6c 61 67  20 62 69 74 73 3a 0a 0a  |enu flag bits:..|
000bbef0  20 20 5c 7b 0a 20 20 20  20 77 69 6d 70 5f 4d 54  |  \{.    wimp_MT|
000bbf00  49 43 4b 09 09 3d 20 31  2c 0a 20 20 20 20 77 69  |ICK..= 1,.    wi|
000bbf10  6d 70 5f 4d 53 45 50 41  52 41 54 45 09 3d 20 32  |mp_MSEPARATE.= 2|
000bbf20  2c 0a 20 20 20 20 77 69  6d 70 5f 4d 57 52 49 54  |,.    wimp_MWRIT|
000bbf30  45 41 42 4c 45 09 3d 20  34 2c 0a 20 20 20 20 77  |EABLE.= 4,.    w|
000bbf40  69 6d 70 5f 4d 53 55 42  4c 49 4e 4b 4d 53 47 09  |imp_MSUBLINKMSG.|
000bbf50  3d 20 38 2c 0a 20 20 20  20 77 69 6d 70 5f 4d 4c  |= 8,.    wimp_ML|
000bbf60  41 53 54 09 09 3d 20 30  78 38 30 0a 20 20 7d 00  |AST..= 0x80.  }.|
000bbf70  44 41 54 41 03 01 00 00  77 69 6d 70 5f 6d 65 6e  |DATA....wimp_men|
000bbf80  75 68 64 72 0a 54 68 69  73 20 74 79 70 65 20 69  |uhdr.This type i|
000bbf90  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 77 69  |s defined in <wi|
000bbfa0  6d 70 2e 68 3d 3e 77 69  6d 70 5f 68 3e 2e 20 49  |mp.h=>wimp_h>. I|
000bbfb0  74 20 69 73 20 61 20 73  74 72 75 63 74 75 72 65  |t is a structure|
000bbfc0  20 75 73 65 64 20 74 6f  20 68 6f 6c 64 20 61 20  | used to hold a |
000bbfd0  57 69 6d 70 20 6d 65 6e  75 20 68 65 61 64 65 72  |Wimp menu header|
000bbfe0  2e 0a 0a 20 20 5c 7b 0a  20 20 20 20 63 68 61 72  |...  \{.    char|
000bbff0  09 74 69 74 6c 65 5b 31  32 5d 3b 0a 20 20 20 20  |.title[12];.    |
000bc000  63 68 61 72 09 74 69 74  5f 66 63 6f 6c 3b 0a 20  |char.tit_fcol;. |
000bc010  20 20 20 63 68 61 72 09  74 69 74 5f 62 63 6f 6c  |   char.tit_bcol|
000bc020  3b 0a 20 20 20 20 63 68  61 72 09 77 6f 72 6b 5f  |;.    char.work_|
000bc030  66 63 6f 6c 3b 0a 20 20  20 20 63 68 61 72 09 77  |fcol;.    char.w|
000bc040  6f 72 6b 5f 62 63 6f 6c  3b 0a 20 20 20 20 69 6e  |ork_bcol;.    in|
000bc050  74 09 09 77 69 64 74 68  2c 20 68 65 69 67 68 74  |t..width, height|
000bc060  3b 0a 20 20 20 20 69 6e  74 09 09 67 61 70 3b 0a  |;.    int..gap;.|
000bc070  20 20 7d 00 44 41 54 41  e7 00 00 00 77 69 6d 70  |  }.DATA....wimp|
000bc080  5f 6d 65 6e 75 69 74 65  6d 0a 54 68 69 73 20 74  |_menuitem.This t|
000bc090  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
000bc0a0  6e 20 3c 77 69 6d 70 2e  68 3d 3e 77 69 6d 70 5f  |n <wimp.h=>wimp_|
000bc0b0  68 3e 2e 20 49 74 20 69  73 20 61 20 73 74 72 75  |h>. It is a stru|
000bc0c0  63 74 75 72 65 20 75 73  65 64 20 74 6f 20 68 6f  |cture used to ho|
000bc0d0  6c 64 20 61 20 6d 65 6e  75 20 69 74 65 6d 3a 0a  |ld a menu item:.|
000bc0e0  0a 20 20 5c 7b 0a 20 20  20 20 3c 77 69 6d 70 5f  |.  \{.    <wimp_|
000bc0f0  6d 65 6e 75 66 6c 61 67  73 3e 09 66 6c 61 67 73  |menuflags>.flags|
000bc100  3b 0a 20 20 20 20 3c 77  69 6d 70 5f 6d 65 6e 75  |;.    <wimp_menu|
000bc110  70 74 72 3e 09 73 75 62  6d 65 6e 75 3b 0a 20 20  |ptr>.submenu;.  |
000bc120  20 20 3c 77 69 6d 70 5f  69 63 6f 6e 66 6c 61 67  |  <wimp_iconflag|
000bc130  73 3e 09 69 63 6f 6e 66  6c 61 67 73 3b 0a 20 20  |s>.iconflags;.  |
000bc140  20 20 3c 77 69 6d 70 5f  69 63 6f 6e 64 61 74 61  |  <wimp_icondata|
000bc150  3e 09 64 61 74 61 3b 0a  20 20 7d 00 44 41 54 41  |>.data;.  }.DATA|
000bc160  63 00 00 00 77 69 6d 70  5f 6d 65 6e 75 70 74 72  |c...wimp_menuptr|
000bc170  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
000bc180  66 69 6e 65 64 20 69 6e  20 3c 77 69 6d 70 2e 68  |fined in <wimp.h|
000bc190  3d 3e 77 69 6d 70 5f 68  3e 2e 20 49 74 20 69 73  |=>wimp_h>. It is|
000bc1a0  20 61 20 70 6f 69 6e 74  65 72 20 74 6f 20 61 20  | a pointer to a |
000bc1b0  3c 77 69 6d 70 5f 6d 65  6e 75 73 74 72 3e 2e 00  |<wimp_menustr>..|
000bc1c0  44 41 54 41 d8 00 00 00  77 69 6d 70 5f 6d 65 6e  |DATA....wimp_men|
000bc1d0  75 73 74 72 0a 54 68 69  73 20 74 79 70 65 20 69  |ustr.This type i|
000bc1e0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 77 69  |s defined in <wi|
000bc1f0  6d 70 2e 68 3d 3e 77 69  6d 70 5f 68 3e 2e 20 49  |mp.h=>wimp_h>. I|
000bc200  74 20 69 73 20 61 20 73  74 72 75 63 74 75 72 65  |t is a structure|
000bc210  20 75 73 65 64 20 74 6f  20 68 6f 6c 64 20 61 20  | used to hold a |
000bc220  6d 65 6e 75 3a 0a 0a 20  20 5c 7b 0a 20 20 20 20  |menu:..  \{.    |
000bc230  3c 77 69 6d 70 5f 6d 65  6e 75 68 64 72 3e 20 20  |<wimp_menuhdr>  |
000bc240  68 64 72 3b 0a 20 20 7d  0a 0a 54 68 69 73 20 69  |hdr;.  }..This i|
000bc250  73 20 66 6f 6c 6c 6f 77  65 64 20 69 6e 20 6d 65  |s followed in me|
000bc260  6d 6f 72 79 20 69 6d 6d  65 64 69 61 74 65 6c 79  |mory immediately|
000bc270  20 62 79 20 74 68 65 20  6d 65 6e 75 20 69 74 65  | by the menu ite|
000bc280  6d 73 2c 20 61 73 20 3c  77 69 6d 70 5f 6d 65 6e  |ms, as <wimp_men|
000bc290  75 69 74 65 6d 3e 73 2e  44 41 54 41 e5 00 00 00  |uitem>s.DATA....|
000bc2a0  77 69 6d 70 5f 6d 6f 75  73 65 73 74 72 0a 54 68  |wimp_mousestr.Th|
000bc2b0  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
000bc2c0  65 64 20 69 6e 20 3c 77  69 6d 70 2e 68 3d 3e 77  |ed in <wimp.h=>w|
000bc2d0  69 6d 70 5f 68 3e 2e 20  49 74 20 69 73 20 61 20  |imp_h>. It is a |
000bc2e0  73 74 72 75 63 74 75 72  65 20 75 73 65 64 20 74  |structure used t|
000bc2f0  6f 20 68 6f 6c 64 20 6d  6f 75 73 65 20 64 61 74  |o hold mouse dat|
000bc300  61 3a 0a 0a 20 20 5c 7b  0a 20 20 20 20 69 6e 74  |a:..  \{.    int|
000bc310  09 09 09 78 2c 79 3b 09  0a 20 20 20 20 3c 77 69  |...x,y;..    <wi|
000bc320  6d 70 5f 62 62 69 74 73  3e 09 62 62 69 74 73 3b  |mp_bbits>.bbits;|
000bc330  09 0a 20 20 20 20 3c 77  69 6d 70 5f 77 3e 09 09  |..    <wimp_w>..|
000bc340  77 3b 09 2f 2a 20 77 69  6e 64 6f 77 20 68 61 6e  |w;./* window han|
000bc350  64 6c 65 20 2a 2f 0a 20  20 20 20 3c 77 69 6d 70  |dle */.    <wimp|
000bc360  5f 69 3e 09 09 69 3b 09  2f 2a 20 69 63 6f 6e 20  |_i>..i;./* icon |
000bc370  68 61 6e 64 6c 65 20 2a  2f 0a 20 20 7d 00 00 00  |handle */.  }...|
000bc380  44 41 54 41 19 03 00 00  77 69 6d 70 5f 6d 73 67  |DATA....wimp_msg|
000bc390  61 63 74 69 6f 6e 0a 54  68 69 73 20 74 79 70 65  |action.This type|
000bc3a0  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
000bc3b0  77 69 6d 70 2e 68 3d 3e  77 69 6d 70 5f 68 3e 2e  |wimp.h=>wimp_h>.|
000bc3c0  20 49 74 20 69 73 20 61  6e 20 65 6e 75 6d 65 72  | It is an enumer|
000bc3d0  61 74 65 64 20 74 79 70  65 20 63 6f 6e 74 61 69  |ated type contai|
000bc3e0  6e 69 6e 67 20 74 68 65  20 76 61 6c 75 65 73 20  |ning the values |
000bc3f0  6f 66 20 74 68 65 20 57  69 6d 70 20 6d 65 73 73  |of the Wimp mess|
000bc400  61 67 65 20 74 79 70 65  73 3a 0a 0a 20 20 5c 7b  |age types:..  \{|
000bc410  0a 20 20 20 20 77 69 6d  70 5f 4d 43 4c 4f 53 45  |.    wimp_MCLOSE|
000bc420  44 4f 57 4e 2c 0a 20 20  20 20 77 69 6d 70 5f 4d  |DOWN,.    wimp_M|
000bc430  44 41 54 41 53 41 56 45  2c 0a 20 20 20 20 77 69  |DATASAVE,.    wi|
000bc440  6d 70 5f 4d 44 41 54 41  53 41 56 45 4f 4b 2c 0a  |mp_MDATASAVEOK,.|
000bc450  20 20 20 20 77 69 6d 70  5f 4d 44 41 54 41 4c 4f  |    wimp_MDATALO|
000bc460  41 44 2c 0a 20 20 20 20  77 69 6d 70 5f 4d 44 41  |AD,.    wimp_MDA|
000bc470  54 41 4c 4f 41 44 4f 4b  2c 0a 20 20 20 20 77 69  |TALOADOK,.    wi|
000bc480  6d 70 5f 4d 44 41 54 41  4f 50 45 4e 2c 0a 20 20  |mp_MDATAOPEN,.  |
000bc490  20 20 77 69 6d 70 5f 4d  52 41 4d 46 45 54 43 48  |  wimp_MRAMFETCH|
000bc4a0  2c 0a 20 20 20 20 77 69  6d 70 5f 4d 52 41 4d 54  |,.    wimp_MRAMT|
000bc4b0  52 41 4e 53 4d 49 54 2c  0a 20 20 20 20 77 69 6d  |RANSMIT,.    wim|
000bc4c0  70 5f 4d 50 52 45 51 55  49 54 2c 0a 20 20 20 20  |p_MPREQUIT,.    |
000bc4d0  77 69 6d 70 5f 50 41 4c  45 54 54 45 43 48 41 4e  |wimp_PALETTECHAN|
000bc4e0  47 45 2c 0a 20 20 20 20  77 69 6d 70 5f 53 41 56  |GE,.    wimp_SAV|
000bc4f0  45 44 45 53 4b 2c 0a 20  20 20 20 77 69 6d 70 5f  |EDESK,.    wimp_|
000bc500  46 69 6c 65 72 4f 70 65  6e 44 69 72 2c 0a 20 20  |FilerOpenDir,.  |
000bc510  20 20 77 69 6d 70 5f 46  69 6c 65 72 43 6c 6f 73  |  wimp_FilerClos|
000bc520  65 44 69 72 2c 0a 20 20  20 20 77 69 6d 70 5f 4e  |eDir,.    wimp_N|
000bc530  6f 74 69 66 79 2c 0a 20  20 20 20 77 69 6d 70 5f  |otify,.    wimp_|
000bc540  4d 4d 45 4e 55 57 41 52  4e 2c 0a 20 20 20 20 77  |MMENUWARN,.    w|
000bc550  69 6d 70 5f 4d 4d 4f 44  45 43 48 41 4e 47 45 2c  |imp_MMODECHANGE,|
000bc560  0a 20 20 20 20 77 69 6d  70 5f 4d 49 4e 49 54 54  |.    wimp_MINITT|
000bc570  41 53 4b 2c 0a 20 20 20  20 77 69 6d 70 5f 4d 43  |ASK,.    wimp_MC|
000bc580  4c 4f 53 45 54 41 53 4b  2c 0a 20 20 20 20 77 69  |LOSETASK,.    wi|
000bc590  6d 70 5f 4d 53 4c 4f 54  43 48 41 4e 47 45 2c 0a  |mp_MSLOTCHANGE,.|
000bc5a0  20 20 20 20 77 69 6d 70  5f 4d 53 45 54 53 4c 4f  |    wimp_MSETSLO|
000bc5b0  54 2c 0a 20 20 20 20 77  69 6d 70 5f 4d 54 41 53  |T,.    wimp_MTAS|
000bc5c0  4b 4e 41 4d 45 52 51 2c  0a 20 20 20 20 77 69 6d  |KNAMERQ,.    wim|
000bc5d0  70 5f 4d 54 41 53 4b 4e  41 4d 45 49 53 2c 0a 20  |p_MTASKNAMEIS,. |
000bc5e0  20 20 20 77 69 6d 70 5f  4d 54 41 53 4b 53 54 41  |   wimp_MTASKSTA|
000bc5f0  52 54 45 44 2c 0a 20 20  20 20 77 69 6d 70 5f 4d  |RTED,.    wimp_M|
000bc600  48 45 4c 50 52 45 51 55  45 53 54 2c 0a 20 20 20  |HELPREQUEST,.   |
000bc610  20 77 69 6d 70 5f 4d 48  45 4c 50 52 45 50 4c 59  | wimp_MHELPREPLY|
000bc620  2c 0a 20 20 20 20 77 69  6d 70 5f 4d 50 72 69 6e  |,.    wimp_MPrin|
000bc630  74 46 69 6c 65 2c 0a 20  20 20 20 77 69 6d 70 5f  |tFile,.    wimp_|
000bc640  4d 57 69 6c 6c 50 72 69  6e 74 2c 0a 20 20 20 20  |MWillPrint,.    |
000bc650  77 69 6d 70 5f 4d 50 72  69 6e 74 54 79 70 65 4f  |wimp_MPrintTypeO|
000bc660  64 64 2c 0a 20 20 20 20  77 69 6d 70 5f 4d 50 72  |dd,.    wimp_MPr|
000bc670  69 6e 74 54 79 70 65 4b  6e 6f 77 6e 2c 0a 20 20  |intTypeKnown,.  |
000bc680  20 20 77 69 6d 70 5f 4d  50 72 69 6e 74 65 72 43  |  wimp_MPrinterC|
000bc690  68 61 6e 67 65 0a 20 20  7d 00 00 00 44 41 54 41  |hange.  }...DATA|
000bc6a0  f8 00 00 00 77 69 6d 70  5f 6d 73 67 64 61 74 61  |....wimp_msgdata|
000bc6b0  6c 6f 61 64 0a 54 68 69  73 20 74 79 70 65 20 69  |load.This type i|
000bc6c0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 77 69  |s defined in <wi|
000bc6d0  6d 70 2e 68 3d 3e 77 69  6d 70 5f 68 3e 2e 20 49  |mp.h=>wimp_h>. I|
000bc6e0  74 20 69 73 20 61 20 73  74 72 75 63 74 75 72 65  |t is a structure|
000bc6f0  20 75 73 65 64 20 74 6f  20 68 6f 6c 64 20 64 61  | used to hold da|
000bc700  74 61 20 66 6f 72 20 61  20 3c 4d 65 73 73 61 67  |ta for a <Messag|
000bc710  65 5f 44 61 74 61 4c 6f  61 64 3d 3e 53 57 49 3a  |e_DataLoad=>SWI:|
000bc720  77 69 6d 70 5f 75 6d 33  3e 3a 0a 0a 20 20 5c 7b  |wimp_um3>:..  \{|
000bc730  0a 20 20 20 20 3c 77 69  6d 70 5f 77 3e 09 77 3b  |.    <wimp_w>.w;|
000bc740  0a 20 20 20 20 3c 77 69  6d 70 5f 69 3e 09 69 3b  |.    <wimp_i>.i;|
000bc750  0a 20 20 20 20 69 6e 74  09 09 78 2c 79 3b 0a 20  |.    int..x,y;. |
000bc760  20 20 20 69 6e 74 09 09  73 69 7a 65 3b 0a 20 20  |   int..size;.  |
000bc770  20 20 69 6e 74 09 09 74  79 70 65 3b 0a 20 20 20  |  int..type;.   |
000bc780  20 63 68 61 72 09 6e 61  6d 65 5b 32 31 32 5d 3b  | char.name[212];|
000bc790  0a 20 20 7d 44 41 54 41  b5 00 00 00 77 69 6d 70  |.  }DATA....wimp|
000bc7a0  5f 6d 73 67 64 61 74 61  6f 70 65 6e 0a 54 68 69  |_msgdataopen.Thi|
000bc7b0  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
000bc7c0  64 20 69 6e 20 3c 77 69  6d 70 2e 68 3d 3e 77 69  |d in <wimp.h=>wi|
000bc7d0  6d 70 5f 68 3e 2e 20 49  74 20 69 73 20 61 20 73  |mp_h>. It is a s|
000bc7e0  74 72 75 63 74 75 72 65  20 75 73 65 64 20 74 6f  |tructure used to|
000bc7f0  20 68 6f 6c 64 20 64 61  74 61 20 66 6f 72 20 61  | hold data for a|
000bc800  20 3c 4d 65 73 73 61 67  65 5f 44 61 74 61 4f 70  | <Message_DataOp|
000bc810  65 6e 3d 3e 53 57 49 3a  77 69 6d 70 5f 75 6d 35  |en=>SWI:wimp_um5|
000bc820  3e 2e 20 49 74 20 69 73  20 64 65 66 69 6e 65 64  |>. It is defined|
000bc830  20 61 73 20 61 20 3c 77  69 6d 70 5f 6d 73 67 64  | as a <wimp_msgd|
000bc840  61 74 61 6c 6f 61 64 3e  2e 00 00 00 44 41 54 41  |ataload>....DATA|
000bc850  fb 00 00 00 77 69 6d 70  5f 6d 73 67 64 61 74 61  |....wimp_msgdata|
000bc860  73 61 76 65 0a 54 68 69  73 20 74 79 70 65 20 69  |save.This type i|
000bc870  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 77 69  |s defined in <wi|
000bc880  6d 70 2e 68 3d 3e 77 69  6d 70 5f 68 3e 2e 20 49  |mp.h=>wimp_h>. I|
000bc890  74 20 69 73 20 61 20 73  74 72 75 63 74 75 72 65  |t is a structure|
000bc8a0  20 75 73 65 64 20 74 6f  20 68 6f 6c 64 20 64 61  | used to hold da|
000bc8b0  74 61 20 66 6f 72 20 61  20 3c 4d 65 73 73 61 67  |ta for a <Messag|
000bc8c0  65 5f 44 61 74 61 53 61  76 65 3d 3e 53 57 49 3a  |e_DataSave=>SWI:|
000bc8d0  77 69 6d 70 5f 75 6d 31  3e 3a 0a 0a 20 20 5c 7b  |wimp_um1>:..  \{|
000bc8e0  0a 20 20 20 20 3c 77 69  6d 70 5f 77 3e 09 77 3b  |.    <wimp_w>.w;|
000bc8f0  0a 20 20 20 20 3c 77 69  6d 70 5f 69 3e 09 20 69  |.    <wimp_i>. i|
000bc900  3b 0a 20 20 20 20 69 6e  74 09 09 78 2c 79 3b 0a  |;.    int..x,y;.|
000bc910  20 20 20 20 69 6e 74 09  09 65 73 74 73 69 7a 65  |    int..estsize|
000bc920  3b 0a 20 20 20 20 69 6e  74 09 09 74 79 70 65 3b  |;.    int..type;|
000bc930  0a 20 20 20 20 63 68 61  72 09 6c 65 61 66 5b 31  |.    char.leaf[1|
000bc940  32 5d 3b 0a 20 20 7d 00  44 41 54 41 00 01 00 00  |2];.  }.DATA....|
000bc950  77 69 6d 70 5f 6d 73 67  64 61 74 61 73 61 76 65  |wimp_msgdatasave|
000bc960  6f 6b 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |ok.This type is |
000bc970  64 65 66 69 6e 65 64 20  69 6e 20 3c 77 69 6d 70  |defined in <wimp|
000bc980  2e 68 3d 3e 77 69 6d 70  5f 68 3e 2e 20 49 74 20  |.h=>wimp_h>. It |
000bc990  69 73 20 61 20 73 74 72  75 63 74 75 72 65 20 75  |is a structure u|
000bc9a0  73 65 64 20 74 6f 20 68  6f 6c 64 20 64 61 74 61  |sed to hold data|
000bc9b0  20 66 6f 72 20 61 20 3c  4d 65 73 73 61 67 65 5f  | for a <Message_|
000bc9c0  44 61 74 61 53 61 76 65  41 63 6b 3d 3e 53 57 49  |DataSaveAck=>SWI|
000bc9d0  3a 77 69 6d 70 5f 75 6d  32 3e 3a 0a 0a 20 20 5c  |:wimp_um2>:..  \|
000bc9e0  7b 0a 20 20 20 20 3c 77  69 6d 70 5f 77 3e 09 77  |{.    <wimp_w>.w|
000bc9f0  3b 0a 20 20 20 20 3c 77  69 6d 70 5f 69 3e 09 69  |;.    <wimp_i>.i|
000bca00  3b 0a 20 20 20 20 69 6e  74 09 09 78 2c 79 3b 0a  |;.    int..x,y;.|
000bca10  20 20 20 20 69 6e 74 09  09 65 73 74 73 69 7a 65  |    int..estsize|
000bca20  3b 0a 20 20 20 20 69 6e  74 09 09 74 79 70 65 3b  |;.    int..type;|
000bca30  0a 20 20 20 20 63 68 61  72 09 6e 61 6d 65 5b 32  |.    char.name[2|
000bca40  31 32 5d 3b 0a 20 20 7d  44 41 54 41 da 00 00 00  |12];.  }DATA....|
000bca50  77 69 6d 70 5f 6d 73 67  64 65 76 69 63 65 0a 54  |wimp_msgdevice.T|
000bca60  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
000bca70  6e 65 64 20 69 6e 20 3c  77 69 6d 70 2e 68 3d 3e  |ned in <wimp.h=>|
000bca80  77 69 6d 70 5f 68 3e 2e  20 49 74 20 69 73 20 61  |wimp_h>. It is a|
000bca90  0a 73 74 72 75 63 74 75  72 65 20 75 73 65 64 20  |.structure used |
000bcaa0  74 6f 20 68 6f 6c 64 20  64 61 74 61 20 66 6f 72  |to hold data for|
000bcab0  20 61 0a 4d 65 73 73 61  67 65 5f 44 65 76 69 63  | a.Message_Devic|
000bcac0  65 43 6c 61 69 6d 20 6f  72 20 4d 65 73 73 61 67  |eClaim or Messag|
000bcad0  65 5f 44 65 76 69 63 65  49 6e 55 73 65 3a 0a 0a  |e_DeviceInUse:..|
000bcae0  20 20 7b 0a 20 20 20 20  69 6e 74 20 20 6d 61 6a  |  {.    int  maj|
000bcaf0  6f 72 3b 0a 20 20 20 20  69 6e 74 20 20 6d 69 6e  |or;.    int  min|
000bcb00  6f 72 3b 0a 20 20 20 20  63 68 61 72 20 69 6e 66  |or;.    char inf|
000bcb10  6f 72 6d 61 74 69 6f 6e  5b 32 32 38 5d 3b 0a 20  |ormation[228];. |
000bcb20  20 7d 00 00 44 41 54 41  df 00 00 00 77 69 6d 70  | }..DATA....wimp|
000bcb30  5f 6d 73 67 68 64 72 0a  54 68 69 73 20 74 79 70  |_msghdr.This typ|
000bcb40  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
000bcb50  3c 77 69 6d 70 2e 68 3d  3e 77 69 6d 70 5f 68 3e  |<wimp.h=>wimp_h>|
000bcb60  2e 20 49 74 20 69 73 20  61 20 73 74 72 75 63 74  |. It is a struct|
000bcb70  75 72 65 20 75 73 65 64  20 74 6f 20 68 6f 6c 64  |ure used to hold|
000bcb80  20 61 20 6d 65 73 73 61  67 65 20 68 65 61 64 65  | a message heade|
000bcb90  72 3a 0a 0a 20 20 5c 7b  0a 20 20 20 20 69 6e 74  |r:..  \{.    int|
000bcba0  09 09 09 73 69 7a 65 3b  0a 20 20 20 20 3c 77 69  |...size;.    <wi|
000bcbb0  6d 70 5f 74 3e 09 09 74  61 73 6b 3b 0a 20 20 20  |mp_t>..task;.   |
000bcbc0  20 69 6e 74 09 09 09 6d  79 5f 72 65 66 3b 0a 20  | int...my_ref;. |
000bcbd0  20 20 20 69 6e 74 09 09  09 79 6f 75 72 5f 72 65  |   int...your_re|
000bcbe0  66 3b 0a 20 20 20 20 3c  77 69 6d 70 5f 6d 73 67  |f;.    <wimp_msg|
000bcbf0  61 63 74 69 6f 6e 3e 09  61 63 74 69 6f 6e 3b 0a  |action>.action;.|
000bcc00  20 20 7d 00 44 41 54 41  b1 00 00 00 77 69 6d 70  |  }.DATA....wimp|
000bcc10  5f 6d 73 67 68 65 6c 70  72 65 70 6c 79 0a 54 68  |_msghelpreply.Th|
000bcc20  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
000bcc30  65 64 20 69 6e 20 3c 77  69 6d 70 2e 68 3d 3e 77  |ed in <wimp.h=>w|
000bcc40  69 6d 70 5f 68 3e 2e 20  49 74 20 69 73 20 61 20  |imp_h>. It is a |
000bcc50  73 74 72 75 63 74 75 72  65 20 75 73 65 64 20 74  |structure used t|
000bcc60  6f 20 68 6f 6c 64 20 64  61 74 61 20 66 6f 72 20  |o hold data for |
000bcc70  61 20 3c 4d 65 73 73 61  67 65 5f 48 65 6c 70 52  |a <Message_HelpR|
000bcc80  65 70 6c 79 3d 3e 53 57  49 3a 77 69 6d 70 5f 75  |eply=>SWI:wimp_u|
000bcc90  6d 35 30 33 3e 3a 0a 0a  20 20 5c 7b 0a 20 20 20  |m503>:..  \{.   |
000bcca0  20 63 68 61 72 20 20 74  65 78 74 5b 32 30 30 5d  | char  text[200]|
000bccb0  3b 0a 20 20 7d 00 00 00  44 41 54 41 b7 00 00 00  |;.  }...DATA....|
000bccc0  77 69 6d 70 5f 6d 73 67  68 65 6c 70 72 65 71 75  |wimp_msghelprequ|
000bccd0  65 73 74 0a 54 68 69 73  20 74 79 70 65 20 69 73  |est.This type is|
000bcce0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 77 69 6d  | defined in <wim|
000bccf0  70 2e 68 3d 3e 77 69 6d  70 5f 68 3e 2e 20 49 74  |p.h=>wimp_h>. It|
000bcd00  20 69 73 20 61 20 73 74  72 75 63 74 75 72 65 20  | is a structure |
000bcd10  75 73 65 64 20 74 6f 20  68 6f 6c 64 20 64 61 74  |used to hold dat|
000bcd20  61 20 66 6f 72 20 61 20  3c 4d 65 73 73 61 67 65  |a for a <Message|
000bcd30  5f 48 65 6c 70 52 65 71  75 65 73 74 3d 3e 73 77  |_HelpRequest=>sw|
000bcd40  69 3a 77 69 6d 70 5f 75  6d 35 30 32 3e 3a 0a 0a  |i:wimp_um502>:..|
000bcd50  20 20 7b 0a 20 20 20 20  3c 77 69 6d 70 5f 6d 6f  |  {.    <wimp_mo|
000bcd60  75 73 65 73 74 72 3e 20  20 6d 3b 0a 20 20 7d 00  |usestr>  m;.  }.|
000bcd70  44 41 54 41 bf 00 00 00  77 69 6d 70 5f 6d 73 67  |DATA....wimp_msg|
000bcd80  70 72 69 6e 74 0a 54 68  69 73 20 74 79 70 65 20  |print.This type |
000bcd90  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 77  |is defined in <w|
000bcda0  69 6d 70 2e 68 3d 3e 77  69 6d 70 5f 68 3e 2e 20  |imp.h=>wimp_h>. |
000bcdb0  49 74 20 69 73 20 61 20  73 74 72 75 63 74 75 72  |It is a structur|
000bcdc0  65 20 75 73 65 64 20 74  6f 20 68 6f 6c 64 20 64  |e used to hold d|
000bcdd0  61 74 61 20 66 6f 72 20  61 6c 6c 20 70 72 69 6e  |ata for all prin|
000bcde0  74 20 6d 65 73 73 61 67  65 73 2e 0a 0a 20 20 5c  |t messages...  \|
000bcdf0  7b 0a 20 20 20 20 69 6e  74 09 09 66 69 6c 6c 65  |{.    int..fille|
000bce00  72 5b 35 5d 3b 0a 20 20  20 20 69 6e 74 09 09 74  |r[5];.    int..t|
000bce10  79 70 65 3b 0a 20 20 20  20 63 68 61 72 09 6e 61  |ype;.    char.na|
000bce20  6d 65 5b 32 35 36 2d 34  34 5d 3b 0a 20 20 7d 00  |me[256-44];.  }.|
000bce30  44 41 54 41 b9 00 00 00  77 69 6d 70 5f 6d 73 67  |DATA....wimp_msg|
000bce40  72 61 6d 66 65 74 63 68  0a 54 68 69 73 20 74 79  |ramfetch.This ty|
000bce50  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
000bce60  20 3c 77 69 6d 70 2e 68  3d 3e 77 69 6d 70 5f 68  | <wimp.h=>wimp_h|
000bce70  3e 2e 20 49 74 20 69 73  20 61 20 73 74 72 75 63  |>. It is a struc|
000bce80  74 75 72 65 20 75 73 65  64 20 74 6f 20 68 6f 6c  |ture used to hol|
000bce90  64 20 64 61 74 61 20 66  6f 72 20 61 20 3c 4d 65  |d data for a <Me|
000bcea0  73 73 61 67 65 5f 52 41  4d 46 65 74 63 68 3d 3e  |ssage_RAMFetch=>|
000bceb0  53 57 49 3a 57 69 6d 70  5f 75 6d 36 3e 3a 0a 0a  |SWI:Wimp_um6>:..|
000bcec0  20 20 5c 7b 0a 20 20 20  20 63 68 61 72 09 2a 61  |  \{.    char.*a|
000bced0  64 64 72 3b 0a 20 20 20  20 69 6e 74 09 09 6e 62  |ddr;.    int..nb|
000bcee0  79 74 65 73 3b 0a 20 20  7d 00 00 00 44 41 54 41  |ytes;.  }...DATA|
000bcef0  c6 00 00 00 77 69 6d 70  5f 6d 73 67 72 61 6d 74  |....wimp_msgramt|
000bcf00  72 61 6e 73 6d 69 74 0a  54 68 69 73 20 74 79 70  |ransmit.This typ|
000bcf10  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
000bcf20  3c 77 69 6d 70 2e 68 3d  3e 77 69 6d 70 5f 68 3e  |<wimp.h=>wimp_h>|
000bcf30  2e 20 49 74 20 69 73 20  61 20 73 74 72 75 63 74  |. It is a struct|
000bcf40  75 72 65 20 75 73 65 64  20 74 6f 20 68 6f 6c 64  |ure used to hold|
000bcf50  20 64 61 74 61 20 66 6f  72 20 61 20 3c 4d 65 73  | data for a <Mes|
000bcf60  73 61 67 65 5f 52 41 4d  54 72 61 6e 73 6d 69 74  |sage_RAMTransmit|
000bcf70  3d 3e 53 57 49 3a 77 69  6d 70 5f 75 6d 37 3e 3a  |=>SWI:wimp_um7>:|
000bcf80  0a 0a 20 20 5c 7b 0a 20  20 20 20 63 68 61 72 09  |..  \{.    char.|
000bcf90  2a 61 64 64 72 3b 0a 20  20 20 20 69 6e 74 09 09  |*addr;.    int..|
000bcfa0  6e 62 79 74 65 73 77 72  69 74 74 65 6e 3b 0a 20  |nbyteswritten;. |
000bcfb0  20 7d 00 00 44 41 54 41  9e 00 00 00 77 69 6d 70  | }..DATA....wimp|
000bcfc0  5f 6d 73 67 73 61 76 65  64 65 73 6b 0a 54 68 69  |_msgsavedesk.Thi|
000bcfd0  73 20 74 79 70 65 20 69  73 20 64 65 66 69 6e 65  |s type is define|
000bcfe0  64 20 69 6e 20 3c 77 69  6d 70 2e 68 3d 3e 77 69  |d in <wimp.h=>wi|
000bcff0  6d 70 5f 68 3e 2e 20 49  74 20 69 73 20 61 0a 73  |mp_h>. It is a.s|
000bd000  74 72 75 63 74 75 72 65  20 75 73 65 64 20 74 6f  |tructure used to|
000bd010  20 68 6f 6c 64 20 64 61  74 61 20 66 6f 72 20 61  | hold data for a|
000bd020  0a 4d 65 73 73 61 67 65  5f 53 61 76 65 44 65 73  |.Message_SaveDes|
000bd030  6b 74 6f 70 3a 0a 0a 20  20 7b 0a 20 20 20 20 69  |ktop:..  {.    i|
000bd040  6e 74 20 66 69 6c 65 68  61 6e 64 6c 65 3b 0a 20  |nt filehandle;. |
000bd050  20 7d 00 00 44 41 54 41  2b 02 00 00 77 69 6d 70  | }..DATA+...wimp|
000bd060  5f 6d 73 67 73 74 72 0a  54 68 69 73 20 74 79 70  |_msgstr.This typ|
000bd070  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
000bd080  3c 77 69 6d 70 2e 68 3d  3e 77 69 6d 70 5f 68 3e  |<wimp.h=>wimp_h>|
000bd090  2e 20 49 74 20 69 73 20  61 20 73 74 72 75 63 74  |. It is a struct|
000bd0a0  75 72 65 20 75 73 65 64  20 74 6f 20 68 6f 6c 64  |ure used to hold|
000bd0b0  20 61 20 63 6f 6d 70 6c  65 74 65 20 57 69 6d 70  | a complete Wimp|
000bd0c0  20 6d 65 73 73 61 67 65  2e 0a 0a 20 20 5c 7b 0a  | message...  \{.|
000bd0d0  20 20 20 20 3c 77 69 6d  70 5f 6d 73 67 68 64 72  |    <wimp_msghdr|
000bd0e0  3e 20 68 64 72 3b 0a 20  20 20 20 75 6e 69 6f 6e  |> hdr;.    union|
000bd0f0  0a 20 20 20 20 5c 7b 0a  20 20 20 20 20 20 63 68  |.    \{.      ch|
000bd100  61 72 09 09 09 63 68 61  72 73 5b 32 33 36 5d 3b  |ar...chars[236];|
000bd110  0a 20 20 20 20 20 20 69  6e 74 09 09 09 77 6f 72  |.      int...wor|
000bd120  64 73 5b 35 39 5d 3b 0a  20 20 20 20 20 20 3c 77  |ds[59];.      <w|
000bd130  69 6d 70 5f 6d 73 67 64  61 74 61 73 61 76 65 3e  |imp_msgdatasave>|
000bd140  09 64 61 74 61 73 61 76  65 3b 0a 20 20 20 20 20  |.datasave;.     |
000bd150  20 3c 77 69 6d 70 5f 6d  73 67 64 61 74 61 73 61  | <wimp_msgdatasa|
000bd160  76 65 6f 6b 3e 09 64 61  74 61 73 61 76 65 6f 6b  |veok>.datasaveok|
000bd170  3b 0a 20 20 20 20 20 20  3c 77 69 6d 70 5f 6d 73  |;.      <wimp_ms|
000bd180  67 64 61 74 61 6c 6f 61  64 3e 09 64 61 74 61 6c  |gdataload>.datal|
000bd190  6f 61 64 3b 0a 20 20 20  20 20 20 3c 77 69 6d 70  |oad;.      <wimp|
000bd1a0  5f 6d 73 67 64 61 74 61  6f 70 65 6e 3e 09 64 61  |_msgdataopen>.da|
000bd1b0  74 61 6f 70 65 6e 3b 0a  20 20 20 20 20 20 3c 77  |taopen;.      <w|
000bd1c0  69 6d 70 5f 6d 73 67 72  61 6d 66 65 74 63 68 3e  |imp_msgramfetch>|
000bd1d0  09 72 61 6d 66 65 74 63  68 3b 0a 20 20 20 20 20  |.ramfetch;.     |
000bd1e0  20 3c 77 69 6d 70 5f 6d  73 67 72 61 6d 74 72 61  | <wimp_msgramtra|
000bd1f0  6e 73 6d 69 74 3e 09 72  61 6d 74 72 61 6e 73 6d  |nsmit>.ramtransm|
000bd200  69 74 3b 0a 20 20 20 20  20 20 3c 77 69 6d 70 5f  |it;.      <wimp_|
000bd210  6d 73 67 68 65 6c 70 72  65 71 75 65 73 74 3e 09  |msghelprequest>.|
000bd220  68 65 6c 70 72 65 71 75  65 73 74 3b 0a 20 20 20  |helprequest;.   |
000bd230  20 20 20 3c 77 69 6d 70  5f 6d 73 67 68 65 6c 70  |   <wimp_msghelp|
000bd240  72 65 70 6c 79 3e 09 68  65 6c 70 72 65 70 6c 79  |reply>.helpreply|
000bd250  3b 0a 20 20 20 20 20 20  3c 77 69 6d 70 5f 6d 73  |;.      <wimp_ms|
000bd260  67 70 72 69 6e 74 3e 09  09 70 72 69 6e 74 3b 0a  |gprint>..print;.|
000bd270  20 20 20 20 7d 20 64 61  74 61 3b 0a 20 20 7d 00  |    } data;.  }.|
000bd280  44 41 54 41 80 00 00 00  77 69 6d 70 5f 4e 55 4d  |DATA....wimp_NUM|
000bd290  42 45 52 4f 46 45 56 45  4e 54 53 0a 54 68 69 73  |BEROFEVENTS.This|
000bd2a0  20 69 73 20 61 20 6d 61  63 72 6f 20 64 65 66 69  | is a macro defi|
000bd2b0  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
000bd2c0  57 69 6d 70 2e 68 3d 3e  57 69 6d 70 3e 2e 20 49  |Wimp.h=>Wimp>. I|
000bd2d0  74 20 68 61 73 20 74 68  65 20 76 61 6c 75 65 20  |t has the value |
000bd2e0  32 30 2c 20 61 73 20 65  76 65 6e 74 73 20 61 72  |20, as events ar|
000bd2f0  65 20 6e 75 6d 62 65 72  65 64 20 30 2d 31 39 2e  |e numbered 0-19.|
000bd300  44 41 54 41 f0 00 00 00  77 69 6d 70 5f 6f 70 65  |DATA....wimp_ope|
000bd310  6e 5f 74 65 6d 70 6c 61  74 65 0a 53 79 6e 74 61  |n_template.Synta|
000bd320  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 77  |x:.<os_error> *w|
000bd330  69 6d 70 5f 6f 70 65 6e  5f 74 65 6d 70 6c 61 74  |imp_open_templat|
000bd340  65 20 28 63 68 61 72 20  2a 6e 61 6d 65 29 3b 0a  |e (char *name);.|
000bd350  48 65 61 64 65 72 3a 09  3c 77 69 6d 70 2e 68 3d  |Header:.<wimp.h=|
000bd360  3e 77 69 6d 70 5f 68 3e  0a 0a 52 65 74 75 72 6e  |>wimp_h>..Return|
000bd370  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000bd380  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000bd390  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000bd3a0  6e 63 74 69 6f 6e 20 6f  70 65 6e 73 20 74 68 65  |nction opens the|
000bd3b0  20 6e 61 6d 65 64 20 74  65 6d 70 6c 61 74 65 20  | named template |
000bd3c0  66 69 6c 65 20 66 6f 72  20 73 75 62 73 65 71 75  |file for subsequ|
000bd3d0  65 6e 74 20 75 73 65 20  62 79 20 3c 77 69 6d 70  |ent use by <wimp|
000bd3e0  5f 6c 6f 61 64 5f 74 65  6d 70 6c 61 74 65 3e 2e  |_load_template>.|
000bd3f0  44 41 54 41 c0 00 00 00  77 69 6d 70 5f 6f 70 65  |DATA....wimp_ope|
000bd400  6e 5f 77 69 6e 64 0a 53  79 6e 74 61 78 3a 09 3c  |n_wind.Syntax:.<|
000bd410  6f 73 5f 65 72 72 6f 72  3e 20 2a 77 69 6d 70 5f  |os_error> *wimp_|
000bd420  6f 70 65 6e 5f 77 69 6e  64 20 28 3c 77 69 6d 70  |open_wind (<wimp|
000bd430  5f 6f 70 65 6e 73 74 72  3e 20 2a 62 6c 6b 29 3b  |_openstr> *blk);|
000bd440  0a 48 65 61 64 65 72 3a  09 3c 77 69 6d 70 2e 68  |.Header:.<wimp.h|
000bd450  3d 3e 77 69 6d 70 5f 68  3e 0a 0a 52 65 74 75 72  |=>wimp_h>..Retur|
000bd460  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
000bd470  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
000bd480  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
000bd490  75 6e 63 74 69 6f 6e 73  20 6f 70 65 6e 73 20 74  |unctions opens t|
000bd4a0  68 65 20 67 69 76 65 6e  20 77 69 6e 64 6f 77 2e  |he given window.|
000bd4b0  44 41 54 41 bf 00 00 00  77 69 6d 70 5f 6f 70 65  |DATA....wimp_ope|
000bd4c0  6e 73 74 72 0a 54 68 69  73 20 74 79 70 65 20 69  |nstr.This type i|
000bd4d0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 77 69  |s defined in <wi|
000bd4e0  6d 70 2e 68 3d 3e 77 69  6d 70 5f 68 3e 2e 20 49  |mp.h=>wimp_h>. I|
000bd4f0  74 20 69 73 20 61 20 73  74 72 75 63 74 75 72 65  |t is a structure|
000bd500  20 75 73 65 64 20 74 6f  20 68 6f 6c 64 20 61 20  | used to hold a |
000bd510  77 69 6e 64 6f 77 20 70  6f 73 69 74 69 6f 6e 3a  |window position:|
000bd520  0a 0a 20 20 5c 7b 0a 20  20 20 20 3c 77 69 6d 70  |..  \{.    <wimp|
000bd530  5f 77 3e 09 77 3b 0a 20  20 20 20 3c 77 69 6d 70  |_w>.w;.    <wimp|
000bd540  5f 62 6f 78 3e 09 62 6f  78 3b 0a 20 20 20 20 69  |_box>.box;.    i|
000bd550  6e 74 09 78 2c 79 3b 0a  20 20 20 20 3c 77 69 6d  |nt.x,y;.    <wim|
000bd560  70 5f 77 3e 62 65 68 69  6e 64 3b 0a 20 20 7d 00  |p_w>behind;.  }.|
000bd570  44 41 54 41 94 01 00 00  57 69 6d 70 5f 4f 70 65  |DATA....Wimp_Ope|
000bd580  6e 54 65 6d 70 6c 61 74  65 0a 53 79 6e 74 61 78  |nTemplate.Syntax|
000bd590  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 57 69  |:.<os_error> *Wi|
000bd5a0  6d 70 5f 4f 70 65 6e 54  65 6d 70 6c 61 74 65 20  |mp_OpenTemplate |
000bd5b0  28 63 68 61 72 20 2a 6e  61 6d 65 29 3b 0a 48 65  |(char *name);.He|
000bd5c0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 57  |ader:.<DeskLib:W|
000bd5d0  69 6d 70 53 57 49 73 2e  68 3d 3e 57 69 6d 70 53  |impSWIs.h=>WimpS|
000bd5e0  57 49 73 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |WIs>..Returns:.P|
000bd5f0  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
000bd600  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
000bd610  6e 65 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |ne...This functi|
000bd620  6f 6e 20 6f 70 65 6e 73  20 74 68 65 20 73 70 65  |on opens the spe|
000bd630  63 69 66 69 65 64 20 74  65 6d 70 6c 61 74 65 20  |cified template |
000bd640  66 69 6c 65 20 61 6e 64  20 72 65 61 64 73 20 69  |file and reads i|
000bd650  6e 20 73 6f 6d 65 20 68  65 61 64 65 72 20 69 6e  |n some header in|
000bd660  66 6f 72 6d 61 74 69 6f  6e 2e 20 4f 6e 6c 79 20  |formation. Only |
000bd670  6f 6e 65 20 74 65 6d 70  6c 61 74 65 20 66 69 6c  |one template fil|
000bd680  65 20 6d 61 79 20 62 65  20 6f 70 65 6e 20 61 74  |e may be open at|
000bd690  20 61 20 74 69 6d 65 2e  20 59 6f 75 20 63 61 6e  | a time. You can|
000bd6a0  20 6e 6f 77 20 63 61 6c  6c 20 3c 57 69 6d 70 5f  | now call <Wimp_|
000bd6b0  4c 6f 61 64 54 65 6d 70  6c 61 74 65 3e 20 74 6f  |LoadTemplate> to|
000bd6c0  20 6c 6f 61 64 20 65 61  63 68 20 74 65 6d 70 6c  | load each templ|
000bd6d0  61 74 65 20 61 6e 64 20  74 68 65 6e 20 3c 57 69  |ate and then <Wi|
000bd6e0  6d 70 5f 43 6c 6f 73 65  54 65 6d 70 6c 61 74 65  |mp_CloseTemplate|
000bd6f0  3e 20 74 6f 20 63 6c 6f  73 65 20 74 68 65 20 66  |> to close the f|
000bd700  69 6c 65 2e 44 41 54 41  01 01 00 00 57 69 6d 70  |ile.DATA....Wimp|
000bd710  5f 4f 70 65 6e 57 69 6e  64 6f 77 0a 53 79 6e 74  |_OpenWindow.Synt|
000bd720  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
000bd730  57 69 6d 70 5f 4f 70 65  6e 57 69 6e 64 6f 77 20  |Wimp_OpenWindow |
000bd740  28 3c 77 69 6e 64 6f 77  5f 6f 70 65 6e 62 6c 6f  |(<window_openblo|
000bd750  63 6b 3e 20 2a 62 6c 6f  63 6b 29 3b 0a 48 65 61  |ck> *block);.Hea|
000bd760  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 57 69  |der:.<DeskLib:Wi|
000bd770  6d 70 53 57 49 73 2e 68  3d 3e 57 69 6d 70 53 57  |mpSWIs.h=>WimpSW|
000bd780  49 73 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |Is>..Returns:.Po|
000bd790  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
000bd7a0  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
000bd7b0  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
000bd7c0  6e 20 75 70 64 61 74 65  73 20 74 68 65 20 6c 69  |n updates the li|
000bd7d0  73 74 20 6f 66 20 61 63  74 69 76 65 20 77 69 6e  |st of active win|
000bd7e0  64 6f 77 73 20 28 6f 6e  65 73 20 74 68 61 74 20  |dows (ones that |
000bd7f0  61 72 65 20 74 6f 20 62  65 20 64 69 73 70 6c 61  |are to be displa|
000bd800  79 65 64 29 2e 00 00 00  44 41 54 41 02 01 00 00  |yed)....DATA....|
000bd810  77 69 6d 70 5f 70 61 6c  65 74 74 65 73 74 72 0a  |wimp_palettestr.|
000bd820  54 68 69 73 20 74 79 70  65 20 69 73 20 64 65 66  |This type is def|
000bd830  69 6e 65 64 20 69 6e 20  3c 77 69 6d 70 2e 68 3d  |ined in <wimp.h=|
000bd840  3e 77 69 6d 70 5f 68 3e  2e 20 49 74 20 69 73 20  |>wimp_h>. It is |
000bd850  61 20 73 74 72 75 63 74  75 72 65 20 75 73 65 64  |a structure used|
000bd860  20 74 6f 20 68 6f 6c 64  20 61 20 63 6f 6d 70 6c  | to hold a compl|
000bd870  65 74 65 20 57 69 6d 70  20 70 61 6c 65 74 74 65  |ete Wimp palette|
000bd880  3a 0a 7b 77 72 61 70 20  6f 66 66 7d 0a 20 20 5c  |:.{wrap off}.  \|
000bd890  7b 0a 20 20 20 20 3c 77  69 6d 70 5f 70 61 6c 65  |{.    <wimp_pale|
000bd8a0  74 74 65 77 6f 72 64 3e  20 20 63 5b 31 36 5d 3b  |tteword>  c[16];|
000bd8b0  0a 20 20 20 20 3c 77 69  6d 70 5f 70 61 6c 65 74  |.    <wimp_palet|
000bd8c0  74 65 77 6f 72 64 3e 20  20 73 63 72 65 65 6e 62  |teword>  screenb|
000bd8d0  6f 72 64 65 72 3b 0a 20  20 20 20 3c 77 69 6d 70  |order;.    <wimp|
000bd8e0  5f 70 61 6c 65 74 74 65  77 6f 72 64 3e 20 20 6d  |_paletteword>  m|
000bd8f0  6f 75 73 65 31 2c 20 6d  6f 75 73 65 32 2c 20 6d  |ouse1, mouse2, m|
000bd900  6f 75 73 65 33 3b 0a 20  20 7d 00 00 44 41 54 41  |ouse3;.  }..DATA|
000bd910  e8 00 00 00 77 69 6d 70  5f 70 61 6c 65 74 74 65  |....wimp_palette|
000bd920  77 6f 72 64 0a 54 68 69  73 20 74 79 70 65 20 69  |word.This type i|
000bd930  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 77 69  |s defined in <wi|
000bd940  6d 70 2e 68 3d 3e 77 69  6d 70 5f 68 3e 2e 20 49  |mp.h=>wimp_h>. I|
000bd950  74 20 69 73 20 61 20 75  6e 69 6f 6e 20 75 73 65  |t is a union use|
000bd960  64 20 74 6f 20 68 6f 6c  64 20 61 20 70 61 6c 65  |d to hold a pale|
000bd970  74 74 65 20 77 6f 72 64  3a 0a 0a 20 20 5c 7b 0a  |tte word:..  \{.|
000bd980  20 20 20 20 73 74 72 75  63 74 0a 20 20 20 20 5c  |    struct.    \|
000bd990  7b 0a 20 20 20 20 20 20  63 68 61 72 09 67 63 6f  |{.      char.gco|
000bd9a0  6c 3b 0a 20 20 20 20 20  20 63 68 61 72 09 72 65  |l;.      char.re|
000bd9b0  64 3b 0a 20 20 20 20 20  20 63 68 61 72 09 67 72  |d;.      char.gr|
000bd9c0  65 65 6e 3b 0a 20 20 20  20 20 20 63 68 61 72 09  |een;.      char.|
000bd9d0  62 6c 75 65 3b 0a 20 20  20 20 7d 20 62 79 74 65  |blue;.    } byte|
000bd9e0  73 3b 0a 20 20 20 20 69  6e 74 20 77 6f 72 64 3b  |s;.    int word;|
000bd9f0  0a 20 20 7d 44 41 54 41  1a 02 00 00 57 69 6d 70  |.  }DATA....Wimp|
000bda00  5f 50 6c 6f 74 49 63 6f  6e 0a 53 79 6e 74 61 78  |_PlotIcon.Syntax|
000bda10  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 57 69  |:.<os_error> *Wi|
000bda20  6d 70 5f 50 6c 6f 74 49  63 6f 6e 20 28 3c 69 63  |mp_PlotIcon (<ic|
000bda30  6f 6e 5f 62 6c 6f 63 6b  3e 20 2a 66 61 6b 65 69  |on_block> *fakei|
000bda40  63 6f 6e 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |con);.Header:.<D|
000bda50  65 73 6b 4c 69 62 3a 57  69 6d 70 53 57 49 73 2e  |eskLib:WimpSWIs.|
000bda60  68 3d 3e 57 69 6d 70 53  57 49 73 3e 0a 0a 52 65  |h=>WimpSWIs>..Re|
000bda70  74 75 72 6e 73 3a 09 50  6f 69 6e 74 65 72 20 74  |turns:.Pointer t|
000bda80  6f 20 65 72 72 6f 72 2c  20 6f 72 20 3c 4e 55 4c  |o error, or <NUL|
000bda90  4c 3e 20 69 66 20 6e 6f  6e 65 2e 0a 0a 44 65 73  |L> if none...Des|
000bdaa0  6b 74 6f 70 20 43 3a 20  53 65 65 20 3c 77 69 6d  |ktop C: See <wim|
000bdab0  70 5f 70 6c 6f 74 69 63  6f 6e 3d 3e 77 69 6d 70  |p_ploticon=>wimp|
000bdac0  5f 70 6c 6f 74 69 63 6f  6e 5f 3e 2e 0a 0a 54 68  |_ploticon_>...Th|
000bdad0  69 73 20 66 75 6e 63 74  69 6f 6e 20 63 61 6e 20  |is function can |
000bdae0  62 65 20 75 73 65 64 20  74 6f 20 70 6c 6f 74 20  |be used to plot |
000bdaf0  61 6e 20 69 63 6f 6e 20  69 6e 20 61 20 77 69 6e  |an icon in a win|
000bdb00  64 6f 77 20 64 75 72 69  6e 67 20 61 20 77 69 6e  |dow during a win|
000bdb10  64 6f 77 20 72 65 64 72  61 77 20 6f 72 20 75 70  |dow redraw or up|
000bdb20  64 61 74 65 20 6c 6f 6f  70 2e 20 54 68 65 20 69  |date loop. The i|
000bdb30  63 6f 6e 20 64 6f 65 73  6e 27 74 20 65 78 69 73  |con doesn't exis|
000bdb40  74 20 61 73 20 70 61 72  74 20 6f 66 20 74 68 65  |t as part of the|
000bdb50  20 77 69 6e 64 6f 77 20  64 65 66 69 6e 69 74 69  | window definiti|
000bdb60  6f 6e 20 2d 20 69 6e 73  74 65 61 64 20 69 74 73  |on - instead its|
000bdb70  20 64 65 66 69 6e 69 74  69 6f 6e 20 69 73 20 67  | definition is g|
000bdb80  69 76 65 6e 20 64 69 72  65 63 74 6c 79 2e 0a 0a  |iven directly...|
000bdb90  49 6e 20 52 49 53 43 20  4f 53 20 33 20 74 68 69  |In RISC OS 3 thi|
000bdba0  73 20 63 61 6e 20 62 65  20 63 61 6c 6c 65 64 20  |s can be called |
000bdbb0  6f 75 74 73 69 64 65 20  61 20 72 65 64 72 61 77  |outside a redraw|
000bdbc0  20 6c 6f 6f 70 20 2d 20  69 6e 20 77 68 69 63 68  | loop - in which|
000bdbd0  20 63 61 73 65 20 61 6c  6c 20 63 6f 6f 72 64 69  | case all coordi|
000bdbe0  6e 61 74 65 73 20 61 72  65 20 73 63 72 65 65 6e  |nates are screen|
000bdbf0  20 63 6f 6f 72 64 73 2c  20 6e 6f 74 20 77 6f 72  | coords, not wor|
000bdc00  6b 20 61 72 65 61 20 63  6f 6f 72 64 73 2e 00 00  |k area coords...|
000bdc10  44 41 54 41 f2 00 00 00  77 69 6d 70 5f 70 6c 6f  |DATA....wimp_plo|
000bdc20  74 69 63 6f 6e 0a 53 79  6e 74 61 78 3a 09 3c 6f  |ticon.Syntax:.<o|
000bdc30  73 5f 65 72 72 6f 72 3e  20 2a 77 69 6d 70 5f 70  |s_error> *wimp_p|
000bdc40  6c 6f 74 69 63 6f 6e 20  28 3c 77 69 6d 70 5f 69  |loticon (<wimp_i|
000bdc50  63 6f 6e 3e 20 2a 69 63  6f 6e 29 3b 0a 48 65 61  |con> *icon);.Hea|
000bdc60  64 65 72 3a 09 3c 77 69  6d 70 2e 68 3d 3e 77 69  |der:.<wimp.h=>wi|
000bdc70  6d 70 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |mp_h>..Returns:.|
000bdc80  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000bdc90  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000bdca0  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
000bdcb0  69 6f 6e 20 70 6c 6f 74  73 20 74 68 65 20 69 63  |ion plots the ic|
000bdcc0  6f 6e 20 77 68 6f 73 65  20 64 65 66 69 6e 69 74  |on whose definit|
000bdcd0  69 6f 6e 20 69 73 20 67  69 76 65 6e 2e 20 49 74  |ion is given. It|
000bdce0  20 69 73 20 6e 6f 74 20  6e 65 63 65 73 73 61 72  | is not necessar|
000bdcf0  69 6c 79 20 61 20 72 65  61 6c 20 69 63 6f 6e 2e  |ily a real icon.|
000bdd00  2e 2e 00 00 44 41 54 41  9c 00 00 00 77 69 6d 70  |....DATA....wimp|
000bdd10  5f 70 6f 69 6e 74 0a 54  68 69 73 20 74 79 70 65  |_point.This type|
000bdd20  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
000bdd30  44 65 73 6b 4c 69 62 3a  57 69 6d 70 2e 68 3d 3e  |DeskLib:Wimp.h=>|
000bdd40  57 69 6d 70 3e 20 61 73  20 61 20 73 74 72 75 63  |Wimp> as a struc|
000bdd50  74 75 72 65 20 66 6f 72  20 68 6f 6c 64 69 6e 67  |ture for holding|
000bdd60  20 20 61 6e 20 7b 2f 7d  28 78 2c 79 29 7b 2f 7d  |  an {/}(x,y){/}|
000bdd70  20 70 61 69 72 2e 20 49  74 20 69 73 20 64 65 66  | pair. It is def|
000bdd80  69 6e 65 64 20 61 73 3a  0a 0a 20 20 5c 7b 0a 20  |ined as:..  \{. |
000bdd90  20 20 20 69 6e 74 20 78  2c 20 79 3b 0a 20 20 7d  |   int x, y;.  }|
000bdda0  44 41 54 41 ff 00 00 00  77 69 6d 70 5f 70 6f 69  |DATA....wimp_poi|
000bddb0  6e 74 65 72 0a 54 68 69  73 20 74 79 70 65 20 69  |nter.This type i|
000bddc0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 54 69  |s defined in <Ti|
000bddd0  6d 73 4c 69 62 3a 49 6e  74 65 72 66 61 63 65 2e  |msLib:Interface.|
000bdde0  68 3d 3e 49 6e 74 65 72  66 61 63 65 3e 20 61 73  |h=>Interface> as|
000bddf0  20 74 68 65 20 66 6f 6c  6c 6f 77 69 6e 67 20 73  | the following s|
000bde00  74 72 75 63 74 75 72 65  3a 0a 0a 20 20 5c 7b 0a  |tructure:..  \{.|
000bde10  20 20 20 20 69 6e 74 09  09 77 69 6e 64 6f 77 5f  |    int..window_|
000bde20  68 61 6e 64 6c 65 3b 0a  20 20 20 20 69 6e 74 09  |handle;.    int.|
000bde30  09 78 30 2c 79 30 2c 78  31 2c 79 31 3b 0a 20 20  |.x0,y0,x1,y1;.  |
000bde40  20 20 63 68 61 72 09 70  74 72 5f 76 61 6c 69 64  |  char.ptr_valid|
000bde50  61 74 69 6f 6e 5b 32 34  5d 3b 0a 20 20 7d 0a 0a  |ation[24];.  }..|
000bde60  53 65 65 20 74 68 65 20  64 6f 63 75 6d 65 6e 74  |See the document|
000bde70  61 74 69 6f 6e 20 70 72  6f 76 69 64 65 64 20 77  |ation provided w|
000bde80  69 74 68 20 49 6e 74 65  72 66 61 63 65 20 66 6f  |ith Interface fo|
000bde90  72 20 6d 6f 72 65 20 64  65 74 61 69 6c 73 2e 00  |r more details..|
000bdea0  44 41 54 41 c1 01 00 00  57 69 6d 70 5f 50 6f 6c  |DATA....Wimp_Pol|
000bdeb0  6c 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |l.Syntax:.<os_er|
000bdec0  72 6f 72 3e 20 2a 57 69  6d 70 5f 50 6f 6c 6c 20  |ror> *Wimp_Poll |
000bded0  28 3c 65 76 65 6e 74 5f  70 6f 6c 6c 6d 61 73 6b  |(<event_pollmask|
000bdee0  3e 20 6d 61 73 6b 2c 20  3c 65 76 65 6e 74 5f 70  |> mask, <event_p|
000bdef0  6f 6c 6c 62 6c 6f 63 6b  3e 20 2a 65 76 65 6e 74  |ollblock> *event|
000bdf00  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
000bdf10  4c 69 62 3a 57 69 6d 70  53 57 49 73 2e 68 3d 3e  |Lib:WimpSWIs.h=>|
000bdf20  57 69 6d 70 53 57 49 73  3e 0a 0a 52 65 74 75 72  |WimpSWIs>..Retur|
000bdf30  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
000bdf40  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
000bdf50  69 66 20 6e 6f 6e 65 2e  0a 0a 53 65 65 20 61 6c  |if none...See al|
000bdf60  73 6f 20 74 68 65 20 44  65 73 6b 74 6f 70 20 43  |so the Desktop C|
000bdf70  20 66 75 6e 63 74 69 6f  6e 2c 20 3c 77 69 6d 70  | function, <wimp|
000bdf80  5f 70 6f 6c 6c 3d 3e 77  69 6d 70 5f 70 6f 6c 6c  |_poll=>wimp_poll|
000bdf90  5f 3e 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |_>...This functi|
000bdfa0  6f 6e 20 70 6f 6c 6c 73  20 74 68 65 20 57 69 6d  |on polls the Wim|
000bdfb0  70 20 74 6f 20 73 65 65  20 77 68 65 74 68 65 72  |p to see whether|
000bdfc0  20 63 65 72 74 61 69 6e  20 65 76 65 6e 74 73 20  | certain events |
000bdfd0  68 61 76 65 20 6f 63 63  75 72 72 65 64 2e 20 59  |have occurred. Y|
000bdfe0  6f 75 20 6d 75 73 74 20  63 61 6c 6c 20 69 74 20  |ou must call it |
000bdff0  69 6e 20 74 68 65 20 6d  61 69 6e 20 6c 6f 6f 70  |in the main loop|
000be000  20 6f 66 20 61 6e 79 20  70 72 6f 67 72 61 6d 20  | of any program |
000be010  79 6f 75 20 77 72 69 74  65 20 74 6f 20 72 75 6e  |you write to run|
000be020  20 75 6e 64 65 72 20 74  68 65 20 57 69 6d 70 2e  | under the Wimp.|
000be030  20 54 68 65 20 72 65 73  75 6c 74 73 20 6f 66 20  | The results of |
000be040  74 68 65 20 70 6f 6c 6c  20 61 72 65 20 72 65 74  |the poll are ret|
000be050  75 72 6e 65 64 20 69 6e  20 2f 65 76 65 6e 74 2f  |urned in /event/|
000be060  2e 00 00 00 44 41 54 41  e2 01 00 00 57 69 6d 70  |....DATA....Wimp|
000be070  5f 50 6f 6c 6c 33 0a 53  79 6e 74 61 78 3a 09 3c  |_Poll3.Syntax:.<|
000be080  6f 73 5f 65 72 72 6f 72  3e 20 2a 57 69 6d 70 5f  |os_error> *Wimp_|
000be090  50 6f 6c 6c 33 20 28 3c  65 76 65 6e 74 5f 70 6f  |Poll3 (<event_po|
000be0a0  6c 6c 6d 61 73 6b 3e 20  6d 61 73 6b 2c 20 3c 65  |llmask> mask, <e|
000be0b0  76 65 6e 74 5f 70 6f 6c  6c 62 6c 6f 63 6b 3e 20  |vent_pollblock> |
000be0c0  2a 65 76 65 6e 74 2c 20  76 6f 69 64 20 2a 77 6f  |*event, void *wo|
000be0d0  72 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |rd);.Header:.<De|
000be0e0  73 6b 4c 69 62 3a 57 69  6d 70 53 57 49 73 2e 68  |skLib:WimpSWIs.h|
000be0f0  3d 3e 57 69 6d 70 53 57  49 73 3e 0a 0a 52 65 74  |=>WimpSWIs>..Ret|
000be100  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
000be110  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
000be120  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
000be130  20 66 75 6e 63 74 69 6f  6e 20 70 6f 6c 6c 73 20  | function polls |
000be140  74 68 65 20 57 69 6d 70  20 74 6f 20 73 65 65 20  |the Wimp to see |
000be150  77 68 65 74 68 65 72 20  63 65 72 74 61 69 6e 20  |whether certain |
000be160  65 76 65 6e 74 73 20 68  61 76 65 20 6f 63 63 75  |events have occu|
000be170  72 72 65 64 2e 20 59 6f  75 20 6d 75 73 74 20 63  |rred. You must c|
000be180  61 6c 6c 20 69 74 20 69  6e 20 74 68 65 20 6d 61  |all it in the ma|
000be190  69 6e 20 6c 6f 6f 70 20  6f 66 20 61 6e 79 20 70  |in loop of any p|
000be1a0  72 6f 67 72 61 6d 20 79  6f 75 20 77 72 69 74 65  |rogram you write|
000be1b0  20 74 6f 20 72 75 6e 20  75 6e 64 65 72 20 74 68  | to run under th|
000be1c0  65 20 57 69 6d 70 2e 20  54 68 65 20 72 65 73 75  |e Wimp. The resu|
000be1d0  6c 74 73 20 6f 66 20 74  68 65 20 70 6f 6c 6c 20  |lts of the poll |
000be1e0  61 72 65 20 72 65 74 75  72 6e 65 64 20 69 6e 20  |are returned in |
000be1f0  2f 65 76 65 6e 74 2f 2e  20 2f 77 6f 72 64 2f 20  |/event/. /word/ |
000be200  63 6f 6e 74 61 69 6e 73  20 74 68 65 20 70 6f 6c  |contains the pol|
000be210  6c 20 77 6f 72 64 20 28  69 67 6e 6f 72 65 64 20  |l word (ignored |
000be220  69 66 20 6d 61 73 6b 2e  64 61 74 61 2e 72 33 69  |if mask.data.r3i|
000be230  73 70 6f 6c 6c 77 6f 72  64 70 74 72 20 69 73 20  |spollwordptr is |
000be240  7a 65 72 6f 29 2e 00 00  44 41 54 41 39 01 00 00  |zero)...DATA9...|
000be250  77 69 6d 70 5f 70 6f 6c  6c 0a 53 79 6e 74 61 78  |wimp_poll.Syntax|
000be260  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 77 69  |:.<os_error> *wi|
000be270  6d 70 5f 70 6f 6c 6c 20  28 3c 77 69 6d 70 5f 65  |mp_poll (<wimp_e|
000be280  6d 61 73 6b 3e 20 6d 61  73 6b 2c 20 3c 77 69 6d  |mask> mask, <wim|
000be290  70 5f 65 76 65 6e 74 73  74 72 3e 20 2a 72 65 73  |p_eventstr> *res|
000be2a0  75 6c 74 29 3b 0a 48 65  61 64 65 72 3a 09 3c 77  |ult);.Header:.<w|
000be2b0  69 6d 70 2e 68 3d 3e 77  69 6d 70 5f 68 3e 0a 0a  |imp.h=>wimp_h>..|
000be2c0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
000be2d0  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
000be2e0  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
000be2f0  68 69 73 20 66 75 6e 63  74 69 6f 6e 73 20 70 6f  |his functions po|
000be300  6c 6c 73 20 74 68 65 20  6e 65 78 74 20 65 76 65  |lls the next eve|
000be310  6e 74 20 66 72 6f 6d 20  74 68 65 20 57 69 6d 70  |nt from the Wimp|
000be320  2e 20 2f 6d 61 73 6b 2f  20 6d 61 73 6b 73 20 6f  |. /mask/ masks o|
000be330  75 74 20 74 68 65 20 65  76 65 6e 74 73 20 79 6f  |ut the events yo|
000be340  75 20 64 6f 20 6e 6f 74  20 77 61 6e 74 20 74 6f  |u do not want to|
000be350  20 72 65 63 65 69 76 65  2e 20 54 68 65 20 65 76  | receive. The ev|
000be360  65 6e 74 20 69 73 20 72  65 74 75 72 6e 65 64 20  |ent is returned |
000be370  69 6e 20 7b 2f 7d 2a 72  65 73 75 6c 74 7b 2f 7d  |in {/}*result{/}|
000be380  2e 00 00 00 44 41 54 41  2d 02 00 00 57 69 6d 70  |....DATA-...Wimp|
000be390  5f 50 6f 6c 6c 49 64 6c  65 0a 53 79 6e 74 61 78  |_PollIdle.Syntax|
000be3a0  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 57 69  |:.<os_error> *Wi|
000be3b0  6d 70 5f 50 6f 6c 6c 49  64 6c 65 20 28 3c 65 76  |mp_PollIdle (<ev|
000be3c0  65 6e 74 5f 70 6f 6c 6c  6d 61 73 6b 3e 20 6d 61  |ent_pollmask> ma|
000be3d0  73 6b 2c 20 3c 65 76 65  6e 74 5f 70 6f 6c 6c 62  |sk, <event_pollb|
000be3e0  6c 6f 63 6b 3e 20 2a 62  6c 6f 63 6b 2c 20 69 6e  |lock> *block, in|
000be3f0  74 20 65 61 72 6c 69 65  73 74 29 3b 0a 48 65 61  |t earliest);.Hea|
000be400  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 57 69  |der:.<DeskLib:Wi|
000be410  6d 70 53 57 49 73 2e 68  3d 3e 57 69 6d 70 53 57  |mpSWIs.h=>WimpSW|
000be420  49 73 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |Is>..Returns:.Po|
000be430  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
000be440  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
000be450  65 2e 0a 0a 53 65 65 20  74 68 65 20 44 65 73 6b  |e...See the Desk|
000be460  74 6f 70 20 43 20 66 75  6e 63 74 69 6f 6e 2c 20  |top C function, |
000be470  3c 77 69 6d 70 5f 70 6f  6c 6c 69 64 6c 65 3d 3e  |<wimp_pollidle=>|
000be480  77 69 6d 70 5f 70 6f 6c  6c 69 64 6c 65 5f 3e 0a  |wimp_pollidle_>.|
000be490  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 70  |.This function p|
000be4a0  6f 6c 6c 73 20 74 68 65  20 57 69 6d 70 20 74 6f  |olls the Wimp to|
000be4b0  20 73 65 65 20 77 68 65  74 68 65 72 20 63 65 72  | see whether cer|
000be4c0  74 61 69 6e 20 65 76 65  6e 74 73 20 68 61 76 65  |tain events have|
000be4d0  20 6f 63 63 75 72 72 65  64 2e 20 59 6f 75 20 6d  | occurred. You m|
000be4e0  75 73 74 20 63 61 6c 6c  20 69 74 20 69 6e 20 74  |ust call it in t|
000be4f0  68 65 20 6d 61 69 6e 20  6c 6f 6f 70 20 6f 66 20  |he main loop of |
000be500  61 6e 79 20 70 72 6f 67  72 61 6d 20 79 6f 75 20  |any program you |
000be510  77 72 69 74 65 20 74 6f  20 72 75 6e 20 75 6e 64  |write to run und|
000be520  65 72 20 74 68 65 20 57  69 6d 70 2e 20 54 68 65  |er the Wimp. The|
000be530  20 72 65 73 75 6c 74 73  20 6f 66 20 74 68 65 20  | results of the |
000be540  70 6f 6c 6c 20 61 72 65  20 72 65 74 75 72 6e 65  |poll are returne|
000be550  64 20 69 6e 20 2f 65 76  65 6e 74 2f 2e 20 2f 65  |d in /event/. /e|
000be560  61 72 6c 69 65 73 74 2f  20 63 6f 6e 74 61 69 6e  |arliest/ contain|
000be570  73 20 74 68 65 20 65 61  72 6c 69 65 73 74 20 6d  |s the earliest m|
000be580  6f 6e 6f 74 6f 6e 69 63  20 74 69 6d 65 20 74 68  |onotonic time th|
000be590  61 74 20 61 20 6e 75 6c  6c 20 65 76 65 6e 74 20  |at a null event |
000be5a0  77 69 6c 6c 20 62 65 20  72 65 74 75 72 6e 65 64  |will be returned|
000be5b0  2e 00 00 00 44 41 54 41  52 02 00 00 57 69 6d 70  |....DATAR...Wimp|
000be5c0  5f 50 6f 6c 6c 49 64 6c  65 33 0a 53 79 6e 74 61  |_PollIdle3.Synta|
000be5d0  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 57  |x:.<os_error> *W|
000be5e0  69 6d 70 5f 50 6f 6c 6c  49 64 6c 65 33 20 28 3c  |imp_PollIdle3 (<|
000be5f0  65 76 65 6e 74 5f 70 6f  6c 6c 6d 61 73 6b 3e 20  |event_pollmask> |
000be600  6d 61 73 6b 2c 20 3c 65  76 65 6e 74 5f 70 6f 6c  |mask, <event_pol|
000be610  6c 62 6c 6f 63 6b 3e 20  2a 62 6c 6f 63 6b 2c 20  |lblock> *block, |
000be620  69 6e 74 20 65 61 72 6c  69 65 73 74 2c 20 76 6f  |int earliest, vo|
000be630  69 64 20 2a 77 6f 72 64  29 3b 0a 48 65 61 64 65  |id *word);.Heade|
000be640  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 57 69 6d 70  |r:.<DeskLib:Wimp|
000be650  53 57 49 73 2e 68 3d 3e  57 69 6d 70 53 57 49 73  |SWIs.h=>WimpSWIs|
000be660  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000be670  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000be680  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000be690  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000be6a0  70 6f 6c 6c 73 20 74 68  65 20 57 69 6d 70 20 74  |polls the Wimp t|
000be6b0  6f 20 73 65 65 20 77 68  65 74 68 65 72 20 63 65  |o see whether ce|
000be6c0  72 74 61 69 6e 20 65 76  65 6e 74 73 20 68 61 76  |rtain events hav|
000be6d0  65 20 6f 63 63 75 72 72  65 64 2e 20 59 6f 75 20  |e occurred. You |
000be6e0  6d 75 73 74 20 63 61 6c  6c 20 69 74 20 69 6e 20  |must call it in |
000be6f0  74 68 65 20 6d 61 69 6e  20 6c 6f 6f 70 20 6f 66  |the main loop of|
000be700  20 61 6e 79 20 70 72 6f  67 72 61 6d 20 79 6f 75  | any program you|
000be710  20 77 72 69 74 65 20 74  6f 20 72 75 6e 20 75 6e  | write to run un|
000be720  64 65 72 20 74 68 65 20  57 69 6d 70 2e 20 54 68  |der the Wimp. Th|
000be730  65 20 72 65 73 75 6c 74  73 20 6f 66 20 74 68 65  |e results of the|
000be740  20 70 6f 6c 6c 20 61 72  65 20 72 65 74 75 72 6e  | poll are return|
000be750  65 64 20 69 6e 20 2f 65  76 65 6e 74 2f 2e 20 2f  |ed in /event/. /|
000be760  65 61 72 6c 69 65 73 74  2f 20 63 6f 6e 74 61 69  |earliest/ contai|
000be770  6e 73 20 74 68 65 20 65  61 72 6c 69 65 73 74 20  |ns the earliest |
000be780  6d 6f 6e 6f 74 6f 6e 69  63 20 74 69 6d 65 20 74  |monotonic time t|
000be790  68 61 74 20 61 20 6e 75  6c 6c 20 65 76 65 6e 74  |hat a null event|
000be7a0  20 77 69 6c 6c 20 62 65  20 72 65 74 75 72 6e 65  | will be returne|
000be7b0  64 2e 20 2f 77 6f 72 64  2f 20 63 6f 6e 74 61 69  |d. /word/ contai|
000be7c0  6e 73 20 74 68 65 20 70  6f 6c 6c 20 77 6f 72 64  |ns the poll word|
000be7d0  20 28 69 67 6e 6f 72 65  64 20 69 66 20 7b 2f 7d  | (ignored if {/}|
000be7e0  6d 61 73 6b 2e 64 61 74  61 2e 72 33 69 73 70 6f  |mask.data.r3ispo|
000be7f0  6c 6c 77 6f 72 64 70 74  72 7b 2f 7d 20 69 73 20  |llwordptr{/} is |
000be800  7a 65 72 6f 29 2e 00 00  44 41 54 41 3f 01 00 00  |zero)...DATA?...|
000be810  77 69 6d 70 5f 70 6f 6c  6c 69 64 6c 65 0a 53 79  |wimp_pollidle.Sy|
000be820  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
000be830  20 2a 77 69 6d 70 5f 70  6f 6c 6c 69 64 6c 65 20  | *wimp_pollidle |
000be840  28 3c 77 69 6d 70 5f 65  6d 61 73 6b 3e 20 2a 6d  |(<wimp_emask> *m|
000be850  61 73 6b 2c 20 3c 77 69  6d 70 5f 65 76 65 6e 74  |ask, <wimp_event|
000be860  73 74 72 3e 20 2a 72 65  73 75 6c 74 2c 20 69 6e  |str> *result, in|
000be870  74 20 65 61 72 6c 69 65  73 74 29 3b 0a 48 65 61  |t earliest);.Hea|
000be880  64 65 72 3a 09 3c 77 69  6d 70 2e 68 3d 3e 77 69  |der:.<wimp.h=>wi|
000be890  6d 70 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |mp_h>..Returns:.|
000be8a0  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000be8b0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000be8c0  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
000be8d0  69 6f 6e 20 69 73 20 6c  69 6b 65 20 3c 77 69 6d  |ion is like <wim|
000be8e0  70 5f 70 6f 6c 6c 3d 3e  77 69 6d 70 5f 70 6f 6c  |p_poll=>wimp_pol|
000be8f0  6c 5f 3e 2c 20 62 75 74  20 64 6f 65 73 20 6e 6f  |l_>, but does no|
000be900  74 20 72 65 74 75 72 6e  20 62 65 66 6f 72 65 20  |t return before |
000be910  74 68 65 20 6d 6f 6e 6f  74 6f 6e 69 63 20 74 69  |the monotonic ti|
000be920  6d 65 20 2f 65 61 72 6c  69 65 73 74 2f 20 75 6e  |me /earliest/ un|
000be930  6c 65 73 73 20 73 6f 6d  65 74 68 69 6e 67 20 68  |less something h|
000be940  61 70 70 65 6e 73 2e 00  44 41 54 41 63 02 00 00  |appens..DATAc...|
000be950  57 69 6d 70 5f 50 72 6f  63 65 73 73 4b 65 79 2f  |Wimp_ProcessKey/|
000be960  77 69 6d 70 5f 70 72 6f  63 65 73 73 6b 65 79 0a  |wimp_processkey.|
000be970  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
000be980  72 3e 20 2a 57 69 6d 70  5f 50 72 6f 63 65 73 73  |r> *Wimp_Process|
000be990  4b 65 79 20 28 69 6e 74  20 63 68 29 3b 0a 48 65  |Key (int ch);.He|
000be9a0  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 57  |ader:.<DeskLib:W|
000be9b0  69 6d 70 53 57 49 73 2e  68 3d 3e 57 69 6d 70 53  |impSWIs.h=>WimpS|
000be9c0  57 49 73 3e 0a 09 3c 77  69 6d 70 2e 68 3d 3e 77  |WIs>..<wimp.h=>w|
000be9d0  69 6d 70 5f 68 3e 20 28  44 65 73 6b 74 6f 70 20  |imp_h> (Desktop |
000be9e0  43 29 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |C)..Returns:.Poi|
000be9f0  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000bea00  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000bea10  2e 0a 0a 54 68 69 73 20  69 73 20 63 61 6c 6c 65  |...This is calle|
000bea20  64 20 7b 2a 7d 77 69 6d  70 5f 70 72 6f 63 65 73  |d {*}wimp_proces|
000bea30  73 6b 65 79 7b 2a 7d 20  69 6e 20 44 65 73 6b 74  |skey{*} in Deskt|
000bea40  6f 70 20 43 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |op C...This func|
000bea50  74 69 6f 6e 20 63 61 75  73 65 73 20 74 68 65 20  |tion causes the |
000bea60  57 69 6d 70 20 74 6f 20  6f 66 66 65 72 20 74 68  |Wimp to offer th|
000bea70  65 20 67 69 76 65 6e 20  63 68 61 72 61 63 74 65  |e given characte|
000bea80  72 20 74 6f 20 6f 74 68  65 72 20 61 70 70 6c 69  |r to other appli|
000bea90  63 61 74 69 6f 6e 73 2e  20 49 74 20 73 68 6f 75  |cations. It shou|
000beaa0  6c 64 20 62 65 20 75 73  65 64 20 66 6f 72 20 74  |ld be used for t|
000beab0  77 6f 20 70 75 72 70 6f  73 65 73 3a 0a 7b 74 61  |wo purposes:.{ta|
000beac0  62 7d 0a 8f 09 50 61 73  73 20 6f 6e 20 6b 65 79  |b}...Pass on key|
000bead0  70 72 65 73 73 65 73 20  79 6f 75 20 64 6f 6e 27  |presses you don'|
000beae0  74 20 75 6e 64 65 72 73  74 61 6e 64 2e 0a 8f 09  |t understand....|
000beaf0  49 6e 73 65 72 74 20 6b  65 79 70 72 65 73 73 65  |Insert keypresse|
000beb00  73 20 69 6e 74 6f 20 74  68 65 20 6b 65 79 70 72  |s into the keypr|
000beb10  65 73 73 20 62 75 66 66  65 72 2e 0a 0a 59 6f 75  |ess buffer...You|
000beb20  20 73 68 6f 75 6c 64 20  6e 6f 74 20 69 6e 73 65  | should not inse|
000beb30  72 74 20 6d 6f 72 65 20  74 68 61 6e 20 61 20 63  |rt more than a c|
000beb40  6f 75 70 6c 65 20 6f 66  20 63 68 61 72 61 63 74  |ouple of charact|
000beb50  65 72 73 20 61 74 20 61  20 74 69 6d 65 20 69 6e  |ers at a time in|
000beb60  20 74 68 69 73 20 77 61  79 2e 20 54 68 65 73 65  | this way. These|
000beb70  20 63 68 61 72 61 63 74  65 72 73 20 74 61 6b 65  | characters take|
000beb80  20 70 72 65 63 65 64 65  6e 63 65 20 6f 76 65 72  | precedence over|
000beb90  20 63 68 61 72 61 63 74  65 72 73 20 61 63 74 75  | characters actu|
000beba0  61 6c 6c 79 20 74 79 70  65 64 2e 00 44 41 54 41  |ally typed..DATA|
000bebb0  da 00 00 00 77 69 6d 70  5f 70 73 68 61 70 65 73  |....wimp_pshapes|
000bebc0  74 72 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |tr.This type is |
000bebd0  64 65 66 69 6e 65 64 20  69 6e 20 3c 77 69 6d 70  |defined in <wimp|
000bebe0  2e 68 3d 3e 77 69 6d 70  5f 68 3e 2e 20 49 74 20  |.h=>wimp_h>. It |
000bebf0  69 73 20 61 20 73 74 72  75 63 74 75 72 65 20 75  |is a structure u|
000bec00  73 65 64 20 74 6f 20 68  6f 6c 64 20 70 6f 69 6e  |sed to hold poin|
000bec10  74 65 72 20 73 68 61 70  65 20 64 61 74 61 3a 0a  |ter shape data:.|
000bec20  0a 20 20 5c 7b 0a 20 20  20 20 69 6e 74 09 09 73  |.  \{.    int..s|
000bec30  68 61 70 65 5f 6e 75 6d  3b 0a 20 20 20 20 63 68  |hape_num;.    ch|
000bec40  61 72 09 2a 73 68 61 70  65 5f 64 61 74 61 3b 0a  |ar.*shape_data;.|
000bec50  20 20 20 20 69 6e 74 09  09 77 69 64 74 68 2c 20  |    int..width, |
000bec60  68 65 69 67 68 74 3b 0a  20 20 20 20 69 6e 74 09  |height;.    int.|
000bec70  09 61 63 74 69 76 65 78  2c 20 61 63 74 69 76 65  |.activex, active|
000bec80  79 3b 0a 20 20 7d 00 00  44 41 54 41 34 01 00 00  |y;.  }..DATA4...|
000bec90  57 69 6d 70 5f 52 65 61  64 50 61 6c 65 74 74 65  |Wimp_ReadPalette|
000beca0  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
000becb0  6f 72 3e 20 2a 57 69 6d  70 5f 52 65 61 64 50 61  |or> *Wimp_ReadPa|
000becc0  6c 65 74 74 65 20 28 3c  70 61 6c 65 74 74 65 5f  |lette (<palette_|
000becd0  62 6c 6f 63 6b 3e 20 2a  70 61 6c 65 74 74 65 29  |block> *palette)|
000bece0  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000becf0  69 62 3a 57 69 6d 70 53  57 49 73 2e 68 3d 3e 57  |ib:WimpSWIs.h=>W|
000bed00  69 6d 70 53 57 49 73 3e  0a 0a 52 65 74 75 72 6e  |impSWIs>..Return|
000bed10  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000bed20  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000bed30  66 20 6e 6f 6e 65 2e 0a  0a 44 65 73 6b 74 6f 70  |f none...Desktop|
000bed40  20 43 3a 20 53 65 65 20  3c 77 69 6d 70 5f 72 65  | C: See <wimp_re|
000bed50  61 64 70 61 6c 65 74 74  65 3d 3e 77 69 6d 70 5f  |adpalette=>wimp_|
000bed60  72 65 61 64 70 61 6c 65  74 74 65 5f 3e 0a 0a 54  |readpalette_>..T|
000bed70  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 61  |his function rea|
000bed80  64 73 20 74 68 65 20 77  68 6f 6c 65 20 70 61 6c  |ds the whole pal|
000bed90  65 74 74 65 20 69 6e 74  6f 20 74 68 65 20 62 6c  |ette into the bl|
000beda0  6f 63 6b 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |ock pointed to b|
000bedb0  79 20 2f 70 61 6c 65 74  74 65 2f 2e 44 41 54 41  |y /palette/.DATA|
000bedc0  d7 00 00 00 77 69 6d 70  5f 72 65 61 64 70 61 6c  |....wimp_readpal|
000bedd0  65 74 74 65 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |ette.Syntax:.<os|
000bede0  5f 65 72 72 6f 72 3e 20  2a 77 69 6d 70 5f 72 65  |_error> *wimp_re|
000bedf0  61 64 70 61 6c 65 74 74  65 20 28 77 69 6d 70 5f  |adpalette (wimp_|
000bee00  70 61 6c 65 74 74 65 73  74 72 20 2a 70 61 6c 29  |palettestr *pal)|
000bee10  3b 0a 48 65 61 64 65 72  3a 09 3c 77 69 6d 70 2e  |;.Header:.<wimp.|
000bee20  68 3d 3e 77 69 6d 70 5f  68 3e 0a 0a 52 65 74 75  |h=>wimp_h>..Retu|
000bee30  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000bee40  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
000bee50  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
000bee60  66 75 6e 63 74 69 6f 6e  20 72 65 61 64 73 20 74  |function reads t|
000bee70  68 65 20 63 75 72 72 65  6e 74 20 57 69 6d 70 20  |he current Wimp |
000bee80  70 61 6c 65 74 74 65 20  69 6e 74 6f 20 2f 70 61  |palette into /pa|
000bee90  6c 2f 2e 00 44 41 54 41  4b 03 00 00 57 69 6d 70  |l/..DATAK...Wimp|
000beea0  5f 52 65 61 64 50 69 78  54 72 61 6e 73 0a 53 79  |_ReadPixTrans.Sy|
000beeb0  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
000beec0  20 2a 57 69 6d 70 5f 52  65 61 64 50 69 78 54 72  | *Wimp_ReadPixTr|
000beed0  61 6e 73 20 28 69 6e 74  20 69 6e 64 65 78 2c 20  |ans (int index, |
000beee0  76 6f 69 64 20 2a 61 72  65 61 2c 20 76 6f 69 64  |void *area, void|
000beef0  20 2a 73 70 72 69 74 65  2c 20 3c 73 63 61 6c 65  | *sprite, <scale|
000bef00  5f 62 6c 6f 63 6b 3e 20  2a 73 63 61 6c 65 2c 20  |_block> *scale, |
000bef10  63 68 61 72 20 2a 74 72  61 6e 73 29 3b 0a 48 65  |char *trans);.He|
000bef20  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 57  |ader:.<DeskLib:W|
000bef30  69 6d 70 53 57 49 73 2e  68 3d 3e 57 69 6d 70 53  |impSWIs.h=>WimpS|
000bef40  57 49 73 3e 0a 0a 52 65  74 75 72 6e 73 3a 09 50  |WIs>..Returns:.P|
000bef50  6f 69 6e 74 65 72 20 74  6f 20 65 72 72 6f 72 2c  |ointer to error,|
000bef60  20 6f 72 20 3c 4e 55 4c  4c 3e 20 69 66 20 6e 6f  | or <NULL> if no|
000bef70  6e 65 2e 0a 0a 44 65 73  6b 74 6f 70 20 43 3a 20  |ne...Desktop C: |
000bef80  53 65 65 20 3c 77 69 6d  70 5f 72 65 61 64 70 69  |See <wimp_readpi|
000bef90  78 74 72 61 6e 73 3d 3e  77 69 6d 70 5f 72 65 61  |xtrans=>wimp_rea|
000befa0  64 70 69 78 74 72 61 6e  73 5f 3e 0a 0a 54 68 69  |dpixtrans_>..Thi|
000befb0  73 20 66 75 6e 63 74 69  6f 6e 20 66 69 6e 64 20  |s function find |
000befc0  6f 75 74 20 68 6f 77 20  74 68 65 20 57 69 6d 70  |out how the Wimp|
000befd0  20 77 6f 75 6c 64 20 70  6c 6f 74 20 74 68 65 20  | would plot the |
000befe0  67 69 76 65 6e 20 73 70  72 69 74 65 2e 20 46 6f  |given sprite. Fo|
000beff0  72 20 68 69 67 68 20 71  75 61 6c 69 74 79 20 73  |r high quality s|
000bf000  70 72 69 74 65 20 70 6c  6f 74 74 69 6e 67 2c 20  |prite plotting, |
000bf010  79 6f 75 20 73 68 6f 75  6c 64 20 75 73 65 20 3c  |you should use <|
000bf020  43 6f 6c 6f 75 72 54 72  61 6e 73 3d 3e 43 6f 6c  |ColourTrans=>Col|
000bf030  6f 75 72 54 72 61 6e 3e  20 69 6e 73 74 65 61 64  |ourTran> instead|
000bf040  2e 0a 7b 74 61 62 7d 0a  30 09 5c 3c 3d 20 2f 69  |..{tab}.0.\<= /i|
000bf050  6e 64 65 78 2f 20 5c 3c  3d 20 32 35 35 09 3a 20  |ndex/ \<= 255.: |
000bf060  73 70 72 69 74 65 20 69  6e 20 73 79 73 74 65 6d  |sprite in system|
000bf070  20 61 72 65 61 0a 32 35  36 09 5c 3c 3d 20 2f 69  | area.256.\<= /i|
000bf080  6e 64 65 78 2f 20 5c 3c  3d 20 35 31 31 09 3a 20  |ndex/ \<= 511.: |
000bf090  73 70 72 69 74 65 20 69  6e 20 75 73 65 72 20 61  |sprite in user a|
000bf0a0  72 65 61 2c 20 2f 73 70  72 69 74 65 2f 20 70 6f  |rea, /sprite/ po|
000bf0b0  69 6e 74 73 20 74 6f 20  6e 61 6d 65 2e 0a 35 31  |ints to name..51|
000bf0c0  32 09 5c 3c 3d 20 2f 69  6e 64 65 78 2f 20 5c 3c  |2.\<= /index/ \<|
000bf0d0  3d 20 37 36 37 09 3a 20  73 70 72 69 74 65 20 69  |= 767.: sprite i|
000bf0e0  6e 20 75 73 65 72 20 61  72 65 61 2c 20 2f 73 70  |n user area, /sp|
000bf0f0  72 69 74 65 2f 20 70 6f  69 6e 74 73 20 74 6f 20  |rite/ points to |
000bf100  73 70 72 69 74 65 0a 7b  74 61 62 7d 0a 2f 61 72  |sprite.{tab}./ar|
000bf110  65 61 2f 09 63 6f 6e 74  61 69 6e 73 20 74 68 65  |ea/.contains the|
000bf120  20 73 70 72 69 74 65 20  61 72 65 61 20 70 6f 69  | sprite area poi|
000bf130  6e 74 65 72 2c 20 31 20  66 6f 72 20 57 69 6d 70  |nter, 1 for Wimp|
000bf140  20 61 72 65 61 2c 20 6f  72 20 30 20 66 6f 72 20  | area, or 0 for |
000bf150  73 79 73 74 65 6d 20 61  72 65 61 2e 0a 0a 2f 73  |system area.../s|
000bf160  70 72 69 74 65 2f 09 63  6f 6e 74 61 69 6e 73 20  |prite/.contains |
000bf170  70 6f 69 6e 74 65 72 20  74 6f 20 73 70 72 69 74  |pointer to sprit|
000bf180  65 2e 0a 0a 4f 6e 20 65  78 69 74 2c 20 2f 73 63  |e...On exit, /sc|
000bf190  61 6c 65 2f 20 61 6e 64  20 2f 74 72 61 6e 73 2f  |ale/ and /trans/|
000bf1a0  20 77 69 6c 6c 20 63 6f  6e 74 61 69 6e 20 69 6e  | will contain in|
000bf1b0  66 6f 72 6d 61 74 69 6f  6e 20 6f 6e 20 68 6f 77  |formation on how|
000bf1c0  20 74 68 65 20 57 69 6d  70 20 77 69 6c 6c 20 70  | the Wimp will p|
000bf1d0  6c 6f 74 20 74 68 65 20  73 70 72 69 74 65 2e 00  |lot the sprite..|
000bf1e0  44 41 54 41 21 01 00 00  77 69 6d 70 5f 72 65 61  |DATA!...wimp_rea|
000bf1f0  64 70 69 78 74 72 61 6e  73 0a 53 79 6e 74 61 78  |dpixtrans.Syntax|
000bf200  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 77 69  |:.<os_error> *wi|
000bf210  6d 70 5f 72 65 61 64 70  69 78 74 72 61 6e 73 20  |mp_readpixtrans |
000bf220  28 3c 73 70 72 69 74 65  5f 61 72 65 61 3e 20 2a  |(<sprite_area> *|
000bf230  61 72 65 61 2c 20 3c 73  70 72 69 74 65 5f 69 64  |area, <sprite_id|
000bf240  3e 20 2a 69 64 2c 20 3c  73 70 72 69 74 65 5f 66  |> *id, <sprite_f|
000bf250  61 63 74 6f 72 73 3e 20  2a 66 61 63 74 6f 72 73  |actors> *factors|
000bf260  2c 20 3c 73 70 72 69 74  65 5f 70 69 78 74 72 61  |, <sprite_pixtra|
000bf270  6e 73 3e 20 2a 70 69 78  74 72 61 6e 73 29 3b 0a  |ns> *pixtrans);.|
000bf280  48 65 61 64 65 72 3a 09  3c 77 69 6d 70 2e 68 3d  |Header:.<wimp.h=|
000bf290  3e 77 69 6d 70 5f 68 3e  0a 0a 52 65 74 75 72 6e  |>wimp_h>..Return|
000bf2a0  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000bf2b0  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000bf2c0  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000bf2d0  6e 63 74 69 6f 6e 20 74  65 6c 6c 73 20 79 6f 75  |nction tells you|
000bf2e0  20 68 6f 77 20 74 68 65  20 57 69 6d 70 20 77 69  | how the Wimp wi|
000bf2f0  6c 6c 20 70 6c 6f 74 20  61 20 73 70 72 69 74 65  |ll plot a sprite|
000bf300  2e 00 00 00 44 41 54 41  bf 00 00 00 77 69 6d 70  |....DATA....wimp|
000bf310  5f 72 65 63 74 0a 54 68  69 73 20 74 79 70 65 20  |_rect.This type |
000bf320  69 73 20 64 65 66 69 6e  65 64 20 69 6e 20 3c 44  |is defined in <D|
000bf330  65 73 6b 4c 69 62 3a 57  69 6d 70 2e 68 3d 3e 57  |eskLib:Wimp.h=>W|
000bf340  69 6d 70 3e 20 61 73 20  61 20 74 79 70 65 20 68  |imp> as a type h|
000bf350  6f 6c 64 69 6e 67 20 61  20 72 65 63 74 61 6e 67  |olding a rectang|
000bf360  6c 65 20 69 6e 20 74 65  72 6d 73 20 6f 66 20 74  |le in terms of t|
000bf370  77 6f 20 63 6f 72 6e 65  72 73 2e 20 49 74 20 69  |wo corners. It i|
000bf380  73 20 64 65 66 69 6e 65  64 20 61 73 3a 0a 0a 20  |s defined as:.. |
000bf390  20 5c 7b 0a 20 20 20 20  3c 77 69 6d 70 5f 70 6f  | \{.    <wimp_po|
000bf3a0  69 6e 74 3e 20 6d 69 6e  3b 0a 20 20 20 20 3c 77  |int> min;.    <w|
000bf3b0  69 6d 70 5f 70 6f 69 6e  74 3e 20 6d 61 78 3b 0a  |imp_point> max;.|
000bf3c0  20 20 7d 00 44 41 54 41  3b 01 00 00 77 69 6d 70  |  }.DATA;...wimp|
000bf3d0  5f 72 65 64 72 61 77 5f  77 69 6e 64 0a 53 79 6e  |_redraw_wind.Syn|
000bf3e0  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
000bf3f0  2a 77 69 6d 70 5f 72 65  64 72 61 77 5f 77 69 6e  |*wimp_redraw_win|
000bf400  64 20 28 3c 77 69 6d 70  5f 72 65 64 72 61 77 73  |d (<wimp_redraws|
000bf410  74 72 3e 20 2a 62 6c 6b  2c 20 3c 42 4f 4f 4c 3e  |tr> *blk, <BOOL>|
000bf420  20 2a 6d 6f 72 65 29 3b  0a 48 65 61 64 65 72 3a  | *more);.Header:|
000bf430  09 3c 77 69 6d 70 2e 68  3d 3e 77 69 6d 70 5f 68  |.<wimp.h=>wimp_h|
000bf440  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000bf450  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000bf460  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000bf470  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 73  |..This functions|
000bf480  20 72 65 64 72 61 77 73  20 74 68 65 20 77 69 6e  | redraws the win|
000bf490  64 6f 77 20 6f 75 74 6c  69 6e 65 20 61 6e 64 20  |dow outline and |
000bf4a0  69 63 6f 6e 73 2e 20 49  74 20 72 65 74 75 72 6e  |icons. It return|
000bf4b0  73 20 3c 54 52 55 45 3e  20 69 6e 20 7b 2f 7d 2a  |s <TRUE> in {/}*|
000bf4c0  6d 6f 72 65 7b 2f 7d 20  69 66 20 74 68 65 72 65  |more{/} if there|
000bf4d0  20 69 73 20 6d 6f 72 65  20 74 6f 20 62 65 20 64  | is more to be d|
000bf4e0  72 61 77 6e 20 77 69 74  68 20 3c 77 69 6d 70 5f  |rawn with <wimp_|
000bf4f0  67 65 74 5f 72 65 63 74  61 6e 67 6c 65 3e 2e 00  |get_rectangle>..|
000bf500  44 41 54 41 d1 00 00 00  77 69 6d 70 5f 72 65 64  |DATA....wimp_red|
000bf510  72 61 77 73 74 72 0a 54  68 69 73 20 74 79 70 65  |rawstr.This type|
000bf520  20 69 73 20 64 65 66 69  6e 65 64 20 69 6e 20 3c  | is defined in <|
000bf530  77 69 6d 70 2e 68 3d 3e  77 69 6d 70 5f 68 3e 2e  |wimp.h=>wimp_h>.|
000bf540  20 49 74 20 69 73 20 61  20 73 74 72 75 63 74 75  | It is a structu|
000bf550  72 65 20 63 6f 6e 74 61  69 6e 69 6e 67 20 64 61  |re containing da|
000bf560  74 61 20 66 6f 72 20 3c  77 69 6d 70 5f 72 65 64  |ta for <wimp_red|
000bf570  72 61 77 5f 77 69 6e 64  3e 20 65 74 63 2e 0a 0a  |raw_wind> etc...|
000bf580  20 20 5c 7b 0a 20 20 20  20 3c 77 69 6d 70 5f 77  |  \{.    <wimp_w|
000bf590  3e 09 77 3b 0a 20 20 20  20 3c 77 69 6d 70 5f 62  |>.w;.    <wimp_b|
000bf5a0  6f 78 3e 09 62 6f 78 3b  0a 20 20 20 20 69 6e 74  |ox>.box;.    int|
000bf5b0  09 09 73 63 78 2c 20 73  63 79 3b 0a 20 20 20 20  |..scx, scy;.    |
000bf5c0  3c 77 69 6d 70 5f 62 6f  78 3e 09 67 3b 0a 20 20  |<wimp_box>.g;.  |
000bf5d0  7d 00 00 00 44 41 54 41  80 02 00 00 57 69 6d 70  |}...DATA....Wimp|
000bf5e0  5f 52 65 64 72 61 77 57  69 6e 64 6f 77 0a 53 79  |_RedrawWindow.Sy|
000bf5f0  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
000bf600  20 2a 57 69 6d 70 5f 52  65 64 72 61 77 57 69 6e  | *Wimp_RedrawWin|
000bf610  64 6f 77 20 28 3c 77 69  6e 64 6f 77 5f 72 65 64  |dow (<window_red|
000bf620  72 61 77 62 6c 6f 63 6b  3e 20 2a 62 6c 6b 2c 20  |rawblock> *blk, |
000bf630  3c 42 4f 4f 4c 3e 20 2a  6d 6f 72 65 29 3b 0a 48  |<BOOL> *more);.H|
000bf640  65 61 64 65 72 3a 09 3c  44 65 73 6b 4c 69 62 3a  |eader:.<DeskLib:|
000bf650  57 69 6d 70 53 57 49 73  2e 68 3d 3e 57 69 6d 70  |WimpSWIs.h=>Wimp|
000bf660  53 57 49 73 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |SWIs>..Returns:.|
000bf670  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000bf680  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000bf690  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
000bf6a0  69 6f 6e 20 69 73 20 75  73 65 64 20 74 6f 20 73  |ion is used to s|
000bf6b0  74 61 72 74 20 61 20 72  65 64 72 61 77 20 6f 66  |tart a redraw of|
000bf6c0  20 74 68 65 20 70 61 72  74 73 20 6f 66 20 61 20  | the parts of a |
000bf6d0  77 69 6e 64 6f 77 20 74  68 61 74 20 61 72 65 20  |window that are |
000bf6e0  6e 6f 74 20 75 70 20 74  6f 20 64 61 74 65 2e 20  |not up to date. |
000bf6f0  49 74 20 6d 75 73 74 20  62 65 20 63 61 6c 6c 65  |It must be calle|
000bf700  64 20 61 73 20 74 68 65  20 66 69 72 73 74 20 57  |d as the first W|
000bf710  69 6d 70 20 6f 70 65 72  61 74 69 6f 6e 20 61 66  |imp operation af|
000bf720  74 65 72 20 74 68 65 20  57 69 6d 70 5f 50 6f 6c  |ter the Wimp_Pol|
000bf730  6c 20 77 68 69 63 68 20  72 65 74 75 72 6e 65 64  |l which returned|
000bf740  20 61 20 52 65 64 72 61  77 5f 57 69 6e 64 6f 77  | a Redraw_Window|
000bf750  5f 52 65 71 75 65 73 74  2e 20 57 69 6d 70 5f 52  |_Request. Wimp_R|
000bf760  65 64 72 61 77 57 69 6e  64 6f 77 20 64 72 61 77  |edrawWindow draw|
000bf770  73 20 74 68 65 20 77 69  6e 64 6f 77 20 6f 75 74  |s the window out|
000bf780  6c 69 6e 65 2c 20 69 73  73 75 65 73 20 56 44 55  |line, issues VDU|
000bf790  20 35 2c 20 61 6e 64 20  74 68 65 6e 20 65 78 69  | 5, and then exi|
000bf7a0  74 73 20 76 69 61 20 3c  57 69 6d 70 5f 47 65 74  |ts via <Wimp_Get|
000bf7b0  52 65 63 74 61 6e 67 6c  65 3e 2c 20 77 68 69 63  |Rectangle>, whic|
000bf7c0  68 20 72 65 74 75 72 6e  73 20 74 68 65 20 63 6f  |h returns the co|
000bf7d0  6f 72 64 69 6e 61 74 65  73 20 6f 66 20 74 68 65  |ordinates of the|
000bf7e0  20 66 69 72 73 74 20 69  6e 76 61 6c 69 64 20 72  | first invalid r|
000bf7f0  65 63 74 61 6e 67 6c 65  20 6f 66 20 74 68 65 20  |ectangle of the |
000bf800  77 6f 72 6b 20 61 72 65  61 2e 20 49 74 20 61 6c  |work area. It al|
000bf810  73 6f 20 72 65 74 75 72  6e 73 20 61 20 66 6c 61  |so returns a fla|
000bf820  67 20 2f 6d 6f 72 65 2f  20 73 61 79 69 6e 67 20  |g /more/ saying |
000bf830  77 68 65 74 68 65 72 20  74 68 65 72 65 20 69 73  |whether there is|
000bf840  20 61 6e 79 74 68 69 6e  67 20 74 6f 20 72 65 64  | anything to red|
000bf850  72 61 77 2e 44 41 54 41  33 02 00 00 57 69 6d 70  |raw.DATA3...Wimp|
000bf860  5f 52 65 70 6f 72 74 45  72 72 6f 72 0a 53 79 6e  |_ReportError.Syn|
000bf870  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
000bf880  2a 57 69 6d 70 5f 52 65  70 6f 72 74 45 72 72 6f  |*Wimp_ReportErro|
000bf890  72 20 28 6f 73 5f 65 72  72 6f 72 20 2a 65 72 72  |r (os_error *err|
000bf8a0  2c 20 69 6e 74 20 66 6c  61 67 73 2c 20 63 68 61  |, int flags, cha|
000bf8b0  72 20 2a 6e 61 6d 65 29  3b 0a 48 65 61 64 65 72  |r *name);.Header|
000bf8c0  3a 09 3c 44 65 73 6b 4c  69 62 3a 57 69 6d 70 53  |:.<DeskLib:WimpS|
000bf8d0  57 49 73 2e 68 3d 3e 57  69 6d 70 53 57 49 73 3e  |WIs.h=>WimpSWIs>|
000bf8e0  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
000bf8f0  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
000bf900  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
000bf910  0a 44 65 73 6b 74 6f 70  20 43 3a 20 53 65 65 20  |.Desktop C: See |
000bf920  3c 77 69 6d 70 5f 72 65  70 6f 72 74 65 72 72 6f  |<wimp_reporterro|
000bf930  72 3d 3e 77 69 6d 70 5f  72 65 70 6f 72 74 65 72  |r=>wimp_reporter|
000bf940  72 6f 72 5f 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |ror_>..This func|
000bf950  74 69 6f 6e 20 70 72 6f  76 69 64 65 73 20 61 20  |tion provides a |
000bf960  62 75 69 6c 74 2d 69 6e  20 6d 65 61 6e 73 20 66  |built-in means f|
000bf970  6f 72 20 72 65 70 6f 72  74 69 6e 67 20 65 72 72  |or reporting err|
000bf980  6f 72 73 20 74 68 61 74  20 6d 61 79 20 6f 63 63  |ors that may occ|
000bf990  75 72 20 28 62 75 74 20  3c 44 65 73 6b 4c 69 62  |ur (but <DeskLib|
000bf9a0  3a 4d 73 67 73 2e 68 3d  3e 4d 73 67 73 3e 20 68  |:Msgs.h=>Msgs> h|
000bf9b0  61 73 20 62 65 74 74 65  72 20 77 61 79 73 29 2e  |as better ways).|
000bf9c0  20 54 68 65 20 65 72 72  6f 72 20 69 73 20 67 69  | The error is gi|
000bf9d0  76 65 6e 20 69 6e 20 2f  65 72 72 2f 2e 20 54 68  |ven in /err/. Th|
000bf9e0  65 20 66 6c 61 67 73 20  61 72 65 20 70 61 73 73  |e flags are pass|
000bf9f0  65 64 20 61 73 20 61 6e  20 2f 69 6e 74 2f 20 28  |ed as an /int/ (|
000bfa00  62 75 74 20 74 68 69 73  20 63 61 6e 20 62 65 20  |but this can be |
000bfa10  63 61 73 74 20 66 72 6f  6d 20 61 6e 20 3c 65 72  |cast from an <er|
000bfa20  72 6f 72 5f 66 6c 61 67  73 3e 29 2e 20 2f 6e 61  |ror_flags>). /na|
000bfa30  6d 65 2f 20 69 73 20 74  68 65 20 74 61 73 6b 20  |me/ is the task |
000bfa40  6e 61 6d 65 20 74 6f 20  62 65 20 70 6c 61 63 65  |name to be place|
000bfa50  64 20 69 6e 20 74 68 65  20 74 69 74 6c 65 20 62  |d in the title b|
000bfa60  61 72 20 61 6e 64 20 6d  75 73 74 20 62 65 20 6c  |ar and must be l|
000bfa70  65 73 73 20 74 68 61 6e  20 32 30 20 63 68 61 72  |ess than 20 char|
000bfa80  61 63 74 65 72 73 2e 00  44 41 54 41 05 01 00 00  |acters..DATA....|
000bfa90  77 69 6d 70 5f 72 65 70  6f 72 74 65 72 72 6f 72  |wimp_reporterror|
000bfaa0  0a 53 79 6e 74 61 78 3a  09 3c 6f 73 5f 65 72 72  |.Syntax:.<os_err|
000bfab0  6f 72 3e 20 2a 77 69 6d  70 5f 72 65 70 6f 72 74  |or> *wimp_report|
000bfac0  65 72 72 6f 72 20 28 6f  73 5f 65 72 72 6f 72 20  |error (os_error |
000bfad0  2a 65 72 72 2c 20 3c 77  69 6d 70 5f 65 72 72 66  |*err, <wimp_errf|
000bfae0  6c 61 67 73 3e 20 66 6c  61 67 73 2c 20 63 68 61  |lags> flags, cha|
000bfaf0  72 20 2a 6e 61 6d 65 29  3b 0a 48 65 61 64 65 72  |r *name);.Header|
000bfb00  3a 09 3c 77 69 6d 70 2e  68 3d 3e 77 69 6d 70 5f  |:.<wimp.h=>wimp_|
000bfb10  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |h>..Returns:.Poi|
000bfb20  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000bfb30  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000bfb40  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000bfb50  20 72 65 70 6f 72 74 73  20 74 68 65 20 65 72 72  | reports the err|
000bfb60  6f 72 20 69 6e 20 2f 65  72 72 2f 2e 20 2f 6e 61  |or in /err/. /na|
000bfb70  6d 65 2f 20 61 70 70 65  61 72 73 20 69 6e 20 74  |me/ appears in t|
000bfb80  68 65 20 74 69 74 6c 65  20 62 61 72 2e 00 00 00  |he title bar....|
000bfb90  44 41 54 41 2d 01 00 00  57 69 6d 70 5f 52 65 70  |DATA-...Wimp_Rep|
000bfba0  6f 72 74 45 72 72 6f 72  52 0a 53 79 6e 74 61 78  |ortErrorR.Syntax|
000bfbb0  3a 20 20 69 6e 74 20 57  69 6d 70 5f 52 65 70 6f  |:  int Wimp_Repo|
000bfbc0  72 74 45 72 72 6f 72 52  0a 20 20 20 20 20 20 20  |rtErrorR.       |
000bfbd0  20 20 28 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 65  |  (<os_error> *e|
000bfbe0  72 72 2c 20 69 6e 74 20  66 6c 61 67 73 2c 20 63  |rr, int flags, c|
000bfbf0  68 61 72 20 2a 6e 61 6d  65 29 3b 0a 48 65 61 64  |har *name);.Head|
000bfc00  65 72 3a 20 20 3c 44 65  73 6b 4c 69 62 3a 57 69  |er:  <DeskLib:Wi|
000bfc10  6d 70 53 57 49 73 2e 68  3d 3e 57 69 6d 70 53 57  |mpSWIs.h=>WimpSW|
000bfc20  49 73 3e 0a 0a 52 65 74  75 72 6e 73 3a 20 49 63  |Is>..Returns: Ic|
000bfc30  6f 6e 20 73 65 6c 65 63  74 65 64 2c 20 30 20 66  |on selected, 0 f|
000bfc40  6f 72 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |or none...This f|
000bfc50  75 6e 63 74 69 6f 6e 20  69 73 20 69 64 65 6e 74  |unction is ident|
000bfc60  69 63 61 6c 20 74 6f 20  3c 57 69 6d 70 5f 52 65  |ical to <Wimp_Re|
000bfc70  70 6f 72 74 45 72 72 6f  72 3e 0a 62 75 74 20 69  |portError>.but i|
000bfc80  6e 20 61 64 64 69 74 69  6f 6e 20 72 65 70 6f 72  |n addition repor|
000bfc90  74 73 20 77 68 65 74 68  65 72 20 4f 4b 20 28 31  |ts whether OK (1|
000bfca0  29 20 6f 72 0a 43 61 6e  63 65 6c 20 28 32 29 20  |) or.Cancel (2) |
000bfcb0  77 61 73 20 73 65 6c 65  63 74 65 64 2e 00 00 00  |was selected....|
000bfcc0  44 41 54 41 4c 01 00 00  77 69 6d 70 5f 73 61 76  |DATAL...wimp_sav|
000bfcd0  65 5f 66 70 5f 73 74 61  74 65 5f 6f 6e 5f 70 6f  |e_fp_state_on_po|
000bfce0  6c 6c 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |ll.Syntax:.<os_e|
000bfcf0  72 72 6f 72 3e 20 2a 77  69 6d 70 5f 73 61 76 65  |rror> *wimp_save|
000bfd00  5f 66 70 5f 73 74 61 74  65 5f 6f 6e 5f 70 6f 6c  |_fp_state_on_pol|
000bfd10  6c 20 28 76 6f 69 64 29  3b 0a 48 65 61 64 65 72  |l (void);.Header|
000bfd20  3a 09 3c 77 69 6d 70 2e  68 3d 3e 77 69 6d 70 5f  |:.<wimp.h=>wimp_|
000bfd30  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |h>..Returns:.Poi|
000bfd40  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000bfd50  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000bfd60  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000bfd70  73 20 61 63 74 69 76 61  74 65 73 20 73 61 76 69  |s activates savi|
000bfd80  6e 67 20 6f 66 20 46 50  20 73 74 61 74 65 20 6f  |ng of FP state o|
000bfd90  6e 20 63 61 6c 6c 73 20  74 6f 20 3c 77 69 6d 70  |n calls to <wimp|
000bfda0  5f 70 6f 6c 6c 3d 3e 77  69 6d 70 5f 70 6f 6c 6c  |_poll=>wimp_poll|
000bfdb0  5f 3e 20 61 6e 64 20 3c  77 69 6d 70 5f 70 6f 6c  |_> and <wimp_pol|
000bfdc0  6c 69 64 6c 65 3d 3e 77  69 6d 70 5f 70 6f 6c 6c  |lidle=>wimp_poll|
000bfdd0  69 64 6c 65 5f 3e 3b 20  74 68 69 73 20 69 73 20  |idle_>; this is |
000bfde0  6e 65 65 64 65 64 20 69  66 20 79 6f 75 20 75 73  |needed if you us|
000bfdf0  65 20 41 4e 59 20 66 6c  6f 61 74 69 6e 67 20 70  |e ANY floating p|
000bfe00  6f 69 6e 74 20 61 74 20  61 6c 6c 2e 44 41 54 41  |oint at all.DATA|
000bfe10  01 01 00 00 57 69 6d 70  5f 53 61 76 65 46 50 53  |....Wimp_SaveFPS|
000bfe20  74 61 74 65 4f 6e 50 6f  6c 6c 0a 53 79 6e 74 61  |tateOnPoll.Synta|
000bfe30  78 3a 20 20 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |x:  <os_error> *|
000bfe40  57 69 6d 70 5f 53 61 76  65 46 50 53 74 61 74 65  |Wimp_SaveFPState|
000bfe50  4f 6e 50 6f 6c 6c 28 76  6f 69 64 29 3b 0a 48 65  |OnPoll(void);.He|
000bfe60  61 64 65 72 3a 20 20 3c  44 65 73 6b 4c 69 62 3a  |ader:  <DeskLib:|
000bfe70  57 69 6d 70 53 57 49 73  2e 68 3d 3e 57 69 6d 70  |WimpSWIs.h=>Wimp|
000bfe80  53 57 49 73 3e 0a 0a 52  65 74 75 72 6e 73 3a 20  |SWIs>..Returns: |
000bfe90  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000bfea0  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000bfeb0  6f 6e 65 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |one...This funct|
000bfec0  69 6f 6e 20 74 65 6c 6c  73 20 44 65 73 6b 4c 69  |ion tells DeskLi|
000bfed0  62 20 74 6f 20 73 61 76  65 20 74 68 65 0a 66 6c  |b to save the.fl|
000bfee0  6f 61 74 69 6e 67 20 70  6f 69 6e 74 20 73 74 61  |oating point sta|
000bfef0  74 75 73 20 77 68 65 6e  20 63 61 6c 6c 69 6e 67  |tus when calling|
000bff00  20 3c 57 69 6d 70 5f 50  6f 6c 6c 3e 2e 00 00 00  | <Wimp_Poll>....|
000bff10  44 41 54 41 94 02 00 00  57 69 6d 70 5f 53 65 6e  |DATA....Wimp_Sen|
000bff20  64 4d 65 73 73 61 67 65  0a 53 79 6e 74 61 78 3a  |dMessage.Syntax:|
000bff30  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 57 69 6d  |.<os_error> *Wim|
000bff40  70 5f 53 65 6e 64 4d 65  73 73 61 67 65 20 28 3c  |p_SendMessage (<|
000bff50  65 76 65 6e 74 5f 74 79  70 65 3e 20 74 79 70 65  |event_type> type|
000bff60  2c 20 3c 6d 65 73 73 61  67 65 5f 62 6c 6f 63 6b  |, <message_block|
000bff70  3e 20 2a 6d 73 67 2c 20  3c 6d 65 73 73 61 67 65  |> *msg, <message|
000bff80  5f 64 65 73 74 69 6e 65  65 3e 20 64 65 73 74 2c  |_destinee> dest,|
000bff90  20 3c 69 63 6f 6e 5f 68  61 6e 64 6c 65 3e 20 69  | <icon_handle> i|
000bffa0  63 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |c);.Header:.<Des|
000bffb0  6b 4c 69 62 3a 57 69 6d  70 53 57 49 73 2e 68 3d  |kLib:WimpSWIs.h=|
000bffc0  3e 57 69 6d 70 53 57 49  73 3e 0a 0a 52 65 74 75  |>WimpSWIs>..Retu|
000bffd0  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000bffe0  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
000bfff0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 44 65 73 6b 74  | if none...Deskt|
000c0000  6f 70 20 43 3a 20 53 65  65 20 3c 77 69 6d 70 5f  |op C: See <wimp_|
000c0010  73 65 6e 64 6d 65 73 73  61 67 65 3d 3e 77 69 6d  |sendmessage=>wim|
000c0020  70 5f 73 65 6e 64 6d 65  73 73 61 67 65 5f 3e 2e  |p_sendmessage_>.|
000c0030  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000c0040  73 65 6e 64 73 20 61 20  6d 65 73 73 61 67 65 20  |sends a message |
000c0050  74 6f 20 61 20 74 61 73  6b 20 6f 72 20 62 72 6f  |to a task or bro|
000c0060  61 64 63 61 73 74 73 20  74 6f 20 61 6c 6c 20 74  |adcasts to all t|
000c0070  61 73 6b 73 2e 20 2f 74  79 70 65 2f 20 63 6f 6e  |asks. /type/ con|
000c0080  74 61 69 6e 73 20 74 68  65 20 6d 65 73 73 61 67  |tains the messag|
000c0090  65 20 63 6f 64 65 2c 20  2f 6d 73 67 2f 20 63 6f  |e code, /msg/ co|
000c00a0  6e 74 61 69 6e 73 20 74  68 65 20 6d 65 73 73 61  |ntains the messa|
000c00b0  67 65 20 64 61 74 61 2e  20 2f 64 65 73 74 2f 20  |ge data. /dest/ |
000c00c0  63 6f 6e 74 61 69 6e 73  20 74 68 65 20 74 61 73  |contains the tas|
000c00d0  6b 20 68 61 6e 64 6c 65  2f 77 69 6e 64 6f 77 20  |k handle/window |
000c00e0  68 61 6e 64 6c 65 20 74  6f 20 73 65 6e 64 20 74  |handle to send t|
000c00f0  68 65 20 6d 65 73 73 61  67 65 20 74 6f 2c 20 6f  |he message to, o|
000c0100  72 20 30 20 74 6f 20 62  72 6f 61 64 63 61 73 74  |r 0 to broadcast|
000c0110  20 69 74 2e 20 49 66 20  2f 64 65 73 74 2f 20 69  | it. If /dest/ i|
000c0120  73 20 74 68 65 20 69 63  6f 6e 20 62 61 72 20 74  |s the icon bar t|
000c0130  68 65 6e 20 2f 69 63 2f  20 63 6f 6e 74 61 69 6e  |hen /ic/ contain|
000c0140  73 20 74 68 65 20 69 63  6f 6e 20 6e 75 6d 62 65  |s the icon numbe|
000c0150  72 2e 0a 0a 4f 66 74 65  6e 20 74 68 69 73 20 69  |r...Often this i|
000c0160  73 20 75 73 65 64 20 74  6f 20 73 65 6e 64 20 75  |s used to send u|
000c0170  73 65 72 20 6d 65 73 73  61 67 65 73 2c 20 62 75  |ser messages, bu|
000c0180  74 20 69 74 20 63 61 6e  20 62 65 20 75 73 65 64  |t it can be used|
000c0190  20 66 6f 72 20 61 6e 79  20 57 49 4d 50 20 65 76  | for any WIMP ev|
000c01a0  65 6e 74 2e 44 41 54 41  1b 01 00 00 77 69 6d 70  |ent.DATA....wimp|
000c01b0  5f 73 65 6e 64 6d 65 73  73 61 67 65 0a 53 79 6e  |_sendmessage.Syn|
000c01c0  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
000c01d0  2a 77 69 6d 70 5f 73 65  6e 64 6d 65 73 73 61 67  |*wimp_sendmessag|
000c01e0  65 20 28 3c 77 69 6d 70  5f 65 74 79 70 65 3e 20  |e (<wimp_etype> |
000c01f0  63 6f 64 65 2c 20 3c 77  69 6d 70 5f 6d 73 67 73  |code, <wimp_msgs|
000c0200  74 72 3e 20 2a 6d 73 67  2c 20 3c 77 69 6d 70 5f  |tr> *msg, <wimp_|
000c0210  74 3e 20 64 65 73 74 29  3b 0a 48 65 61 64 65 72  |t> dest);.Header|
000c0220  3a 09 3c 77 69 6d 70 2e  68 3d 3e 77 69 6d 70 5f  |:.<wimp.h=>wimp_|
000c0230  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |h>..Returns:.Poi|
000c0240  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000c0250  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000c0260  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000c0270  20 73 65 6e 64 20 74 68  65 20 6d 65 73 73 61 67  | send the messag|
000c0280  65 20 2f 6d 73 67 2f 20  74 6f 20 74 68 65 20 67  |e /msg/ to the g|
000c0290  69 76 65 6e 20 64 65 73  74 69 6e 61 74 69 6f 6e  |iven destination|
000c02a0  20 77 69 74 68 20 74 68  65 20 65 76 65 6e 74 20  | with the event |
000c02b0  63 6f 64 65 20 73 70 65  63 69 66 69 65 64 2e 00  |code specified..|
000c02c0  44 41 54 41 2b 01 00 00  77 69 6d 70 5f 73 65 6e  |DATA+...wimp_sen|
000c02d0  64 77 6d 65 73 73 61 67  65 0a 53 79 6e 74 61 78  |dwmessage.Syntax|
000c02e0  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 77 69  |:.<os_error> *wi|
000c02f0  6d 70 5f 73 65 6e 64 77  6d 65 73 73 61 67 65 20  |mp_sendwmessage |
000c0300  28 3c 77 69 6d 70 5f 65  74 79 70 65 3e 20 63 6f  |(<wimp_etype> co|
000c0310  64 65 2c 20 3c 77 69 6d  70 5f 6d 73 67 73 74 72  |de, <wimp_msgstr|
000c0320  3e 20 2a 6d 73 67 2c 20  3c 77 69 6d 70 5f 77 3e  |> *msg, <wimp_w>|
000c0330  20 77 69 6e 2c 20 3c 77  69 6d 70 5f 69 3e 20 69  | win, <wimp_i> i|
000c0340  63 6f 6e 29 3b 0a 48 65  61 64 65 72 3a 09 3c 77  |con);.Header:.<w|
000c0350  69 6d 70 2e 68 3d 3e 77  69 6d 70 5f 68 3e 0a 0a  |imp.h=>wimp_h>..|
000c0360  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
000c0370  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
000c0380  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
000c0390  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 65 6e  |his function sen|
000c03a0  64 20 74 68 65 20 6d 65  73 73 61 67 65 20 2f 6d  |d the message /m|
000c03b0  73 67 2f 20 74 6f 20 74  68 65 20 67 69 76 65 6e  |sg/ to the given|
000c03c0  20 77 69 6e 64 6f 77 2f  69 63 6f 6e 20 77 69 74  | window/icon wit|
000c03d0  68 20 74 68 65 20 65 76  65 6e 74 20 63 6f 64 65  |h the event code|
000c03e0  20 73 70 65 63 69 66 69  65 64 2e 00 44 41 54 41  | specified..DATA|
000c03f0  c9 00 00 00 77 69 6d 70  5f 73 65 74 5f 63 61 72  |....wimp_set_car|
000c0400  65 74 5f 70 6f 73 0a 53  79 6e 74 61 78 3a 09 3c  |et_pos.Syntax:.<|
000c0410  6f 73 5f 65 72 72 6f 72  3e 20 2a 77 69 6d 70 5f  |os_error> *wimp_|
000c0420  73 65 74 5f 63 61 72 65  74 5f 70 6f 73 20 28 3c  |set_caret_pos (<|
000c0430  77 69 6d 70 5f 63 61 72  65 74 73 74 72 3e 20 2a  |wimp_caretstr> *|
000c0440  62 6c 6b 29 3b 0a 48 65  61 64 65 72 3a 09 3c 77  |blk);.Header:.<w|
000c0450  69 6d 70 2e 68 3d 3e 77  69 6d 70 5f 68 3e 0a 0a  |imp.h=>wimp_h>..|
000c0460  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
000c0470  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
000c0480  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
000c0490  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 65 74  |his function set|
000c04a0  73 20 74 68 65 20 63 61  72 65 74 20 70 6f 73 69  |s the caret posi|
000c04b0  74 69 6f 6e 2e 00 00 00  44 41 54 41 d9 00 00 00  |tion....DATA....|
000c04c0  77 69 6d 70 5f 73 65 74  5f 65 78 74 65 6e 74 0a  |wimp_set_extent.|
000c04d0  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
000c04e0  72 3e 20 2a 77 69 6d 70  5f 73 65 74 5f 65 78 74  |r> *wimp_set_ext|
000c04f0  65 6e 74 20 28 3c 77 69  6d 70 5f 72 65 64 72 61  |ent (<wimp_redra|
000c0500  77 73 74 72 3e 20 2a 72  65 64 72 61 77 29 3b 0a  |wstr> *redraw);.|
000c0510  48 65 61 64 65 72 3a 09  3c 77 69 6d 70 2e 68 3d  |Header:.<wimp.h=|
000c0520  3e 77 69 6d 70 5f 68 3e  0a 0a 52 65 74 75 72 6e  |>wimp_h>..Return|
000c0530  73 3a 09 50 6f 69 6e 74  65 72 20 74 6f 20 65 72  |s:.Pointer to er|
000c0540  72 6f 72 2c 20 6f 72 20  3c 4e 55 4c 4c 3e 20 69  |ror, or <NULL> i|
000c0550  66 20 6e 6f 6e 65 2e 0a  0a 54 68 69 73 20 66 75  |f none...This fu|
000c0560  6e 63 74 69 6f 6e 20 61  6c 74 65 72 73 20 74 68  |nction alters th|
000c0570  65 20 65 78 74 65 6e 74  20 6f 66 20 61 20 77 69  |e extent of a wi|
000c0580  6e 64 6f 77 27 73 20 77  6f 72 6b 20 61 72 65 61  |ndow's work area|
000c0590  2e 00 00 00 44 41 54 41  4c 01 00 00 77 69 6d 70  |....DATAL...wimp|
000c05a0  5f 73 65 74 5f 69 63 6f  6e 5f 73 74 61 74 65 0a  |_set_icon_state.|
000c05b0  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
000c05c0  72 3e 20 2a 77 69 6d 70  5f 73 65 74 5f 69 63 6f  |r> *wimp_set_ico|
000c05d0  6e 5f 73 74 61 74 65 20  28 3c 77 69 6d 70 5f 77  |n_state (<wimp_w|
000c05e0  3e 20 77 69 6e 2c 20 3c  77 69 6d 70 5f 69 3e 20  |> win, <wimp_i> |
000c05f0  69 63 6f 6e 2c 20 3c 77  69 6d 70 5f 69 63 6f 6e  |icon, <wimp_icon|
000c0600  66 6c 61 67 73 3e 20 76  2c 20 3c 77 69 6d 70 5f  |flags> v, <wimp_|
000c0610  69 63 6f 6e 66 6c 61 67  73 3e 20 6d 29 3b 0a 48  |iconflags> m);.H|
000c0620  65 61 64 65 72 3a 09 3c  77 69 6d 70 2e 68 3d 3e  |eader:.<wimp.h=>|
000c0630  77 69 6d 70 5f 68 3e 0a  0a 52 65 74 75 72 6e 73  |wimp_h>..Returns|
000c0640  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
000c0650  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
000c0660  20 6e 6f 6e 65 2e 0a 0a  54 68 69 73 20 66 75 6e  | none...This fun|
000c0670  63 74 69 6f 6e 73 20 73  65 74 73 20 74 68 65 20  |ctions sets the |
000c0680  69 63 6f 6e 20 73 74 61  74 65 20 6f 66 20 74 68  |icon state of th|
000c0690  65 20 67 69 76 65 6e 20  69 63 6f 6e 20 61 73 3a  |e given icon as:|
000c06a0  7b 77 72 61 70 20 6f 66  66 7d 0a 7b 66 43 6f 64  |{wrap off}.{fCod|
000c06b0  65 3b 61 6c 69 67 6e 20  63 65 6e 74 72 65 7d 6e  |e;align centre}n|
000c06c0  65 77 5f 73 74 61 74 65  20 3d 20 28 6f 6c 64 5f  |ew_state = (old_|
000c06d0  73 74 61 74 65 20 26 20  7e 6d 29 20 5e 20 76 3b  |state & ~m) ^ v;|
000c06e0  44 41 54 41 d1 00 00 00  77 69 6d 70 5f 73 65 74  |DATA....wimp_set|
000c06f0  5f 70 6f 69 6e 74 5f 73  68 61 70 65 0a 53 79 6e  |_point_shape.Syn|
000c0700  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
000c0710  2a 77 69 6d 70 5f 73 65  74 5f 70 6f 69 6e 74 5f  |*wimp_set_point_|
000c0720  73 68 61 70 65 20 28 3c  77 69 6d 70 5f 70 73 68  |shape (<wimp_psh|
000c0730  61 70 65 73 74 72 3e 20  2a 70 6f 69 6e 74 65 72  |apestr> *pointer|
000c0740  29 3b 0a 48 65 61 64 65  72 3a 09 3c 77 69 6d 70  |);.Header:.<wimp|
000c0750  2e 68 3d 3e 77 69 6d 70  5f 68 3e 0a 0a 52 65 74  |.h=>wimp_h>..Ret|
000c0760  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
000c0770  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
000c0780  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
000c0790  20 66 75 6e 63 74 69 6f  6e 20 73 65 74 73 20 74  | function sets t|
000c07a0  68 65 20 70 6f 69 6e 74  65 72 20 73 68 61 70 65  |he pointer shape|
000c07b0  2e 00 00 00 44 41 54 41  f6 01 00 00 57 69 6d 70  |....DATA....Wimp|
000c07c0  5f 53 65 74 43 61 72 65  74 50 6f 73 69 74 69 6f  |_SetCaretPositio|
000c07d0  6e 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |n.Syntax:.<os_er|
000c07e0  72 6f 72 3e 20 2a 57 69  6d 70 5f 53 65 74 43 61  |ror> *Wimp_SetCa|
000c07f0  72 65 74 50 6f 73 69 74  69 6f 6e 20 28 3c 63 61  |retPosition (<ca|
000c0800  72 65 74 5f 62 6c 6f 63  6b 3e 20 2a 63 61 72 65  |ret_block> *care|
000c0810  74 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |t);.Header:.<Des|
000c0820  6b 4c 69 62 3a 57 69 6d  70 53 57 49 73 2e 68 3d  |kLib:WimpSWIs.h=|
000c0830  3e 57 69 6d 70 53 57 49  73 3e 0a 0a 52 65 74 75  |>WimpSWIs>..Retu|
000c0840  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000c0850  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
000c0860  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
000c0870  66 75 6e 63 74 69 6f 6e  20 72 65 6d 6f 76 65 73  |function removes|
000c0880  20 74 68 65 20 63 61 72  65 74 20 66 72 6f 6d 20  | the caret from |
000c0890  69 74 73 20 6f 6c 64 20  70 6f 73 69 74 69 6f 6e  |its old position|
000c08a0  20 61 6e 64 20 72 65 64  72 61 77 73 20 69 74 20  | and redraws it |
000c08b0  69 6e 20 61 20 6e 65 77  20 70 6f 73 69 74 69 6f  |in a new positio|
000c08c0  6e 2c 20 61 73 20 64 65  66 69 6e 65 64 20 62 79  |n, as defined by|
000c08d0  20 2f 63 61 72 65 74 2f  2e 0a 0a 49 66 20 7b 2f  | /caret/...If {/|
000c08e0  7d 63 61 72 65 74 2d 3e  68 65 69 67 68 74 7b 2f  |}caret->height{/|
000c08f0  7d 20 69 73 20 2d 31 20  74 68 65 6e 20 74 68 65  |} is -1 then the|
000c0900  20 6f 66 66 73 65 74 20  61 6e 64 20 68 65 69 67  | offset and heig|
000c0910  68 74 20 61 72 65 20 63  61 6c 63 75 6c 61 74 65  |ht are calculate|
000c0920  64 20 66 72 6f 6d 20 74  68 65 20 77 69 6e 64 6f  |d from the windo|
000c0930  77 2c 20 69 63 6f 6e 20  61 6e 64 20 69 6e 64 65  |w, icon and inde|
000c0940  78 2e 0a 0a 49 66 20 7b  2f 7d 63 61 72 65 74 2d  |x...If {/}caret-|
000c0950  3e 69 6e 64 65 78 7b 2f  7d 20 69 73 20 2d 31 20  |>index{/} is -1 |
000c0960  74 68 65 6e 20 74 68 65  20 69 6e 64 65 78 20 61  |then the index a|
000c0970  6e 64 20 68 65 69 67 68  74 20 61 72 65 20 63 61  |nd height are ca|
000c0980  6c 63 75 6c 61 74 65 64  20 66 72 6f 6d 20 74 68  |lculated from th|
000c0990  65 20 77 69 6e 64 6f 77  2c 20 69 63 6f 6e 20 61  |e window, icon a|
000c09a0  6e 64 20 6f 66 66 73 65  74 2e 00 00 44 41 54 41  |nd offset...DATA|
000c09b0  00 02 00 00 57 69 6d 70  5f 53 65 74 43 6f 6c 6f  |....Wimp_SetColo|
000c09c0  75 72 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |ur.Syntax:.<os_e|
000c09d0  72 72 6f 72 3e 20 2a 57  69 6d 70 5f 53 65 74 43  |rror> *Wimp_SetC|
000c09e0  6f 6c 6f 75 72 20 28 69  6e 74 20 63 6f 6c 29 3b  |olour (int col);|
000c09f0  0a 48 65 61 64 65 72 3a  09 3c 44 65 73 6b 4c 69  |.Header:.<DeskLi|
000c0a00  62 3a 57 69 6d 70 53 57  49 73 2e 68 3d 3e 57 69  |b:WimpSWIs.h=>Wi|
000c0a10  6d 70 53 57 49 73 3e 0a  0a 52 65 74 75 72 6e 73  |mpSWIs>..Returns|
000c0a20  3a 09 50 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |:.Pointer to err|
000c0a30  6f 72 2c 20 6f 72 20 3c  4e 55 4c 4c 3e 20 69 66  |or, or <NULL> if|
000c0a40  20 6e 6f 6e 65 2e 0a 0a  44 65 73 6b 74 6f 70 20  | none...Desktop |
000c0a50  43 3a 20 53 65 65 20 74  68 65 20 66 75 6e 74 69  |C: See the funti|
000c0a60  6f 6e 20 3c 77 69 6d 70  5f 73 65 74 63 6f 6c 6f  |on <wimp_setcolo|
000c0a70  75 72 3d 3e 77 69 6d 70  5f 73 65 74 63 6f 6c 6f  |ur=>wimp_setcolo|
000c0a80  75 72 5f 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |ur_>..This funct|
000c0a90  69 6f 6e 20 73 65 74 73  20 74 68 65 20 63 75 72  |ion sets the cur|
000c0aa0  72 65 6e 74 20 67 72 61  70 68 69 63 73 20 63 6f  |rent graphics co|
000c0ab0  6c 6f 75 72 20 61 6e 64  20 70 6c 6f 74 20 61 63  |lour and plot ac|
000c0ac0  74 69 6f 6e 20 74 6f 20  6f 6e 65 20 6f 66 20 74  |tion to one of t|
000c0ad0  68 65 20 31 36 20 73 74  61 6e 64 61 72 64 20 57  |he 16 standard W|
000c0ae0  69 6d 70 20 63 6f 6c 6f  75 72 73 2e 0a 0a 2f 63  |imp colours.../c|
000c0af0  6f 6c 2f 20 68 61 73 20  74 68 65 20 66 6f 6c 6c  |ol/ has the foll|
000c0b00  6f 77 69 6e 67 20 66 6f  72 6d 61 74 3a 0a 0a 5f  |owing format:.._|
000c0b10  42 69 74 73 5f 09 5f 4d  65 61 6e 69 6e 67 5f 0a  |Bits_._Meaning_.|
000c0b20  30 2d 33 09 57 69 6d 70  20 3c 63 6f 6c 6f 75 72  |0-3.Wimp <colour|
000c0b30  20 6e 75 6d 62 65 72 3d  3e 77 5f 63 6f 6c 70 61  | number=>w_colpa|
000c0b40  6c 5f 3e 0a 34 2d 36 09  47 43 4f 4c 20 3c 61 63  |l_>.4-6.GCOL <ac|
000c0b50  74 69 6f 6e 3d 3e 56 44  55 3a 31 38 61 3e 0a 37  |tion=>VDU:18a>.7|
000c0b60  09 30 3d 66 6f 72 65 67  72 6f 75 6e 64 2c 20 31  |.0=foreground, 1|
000c0b70  3d 62 61 63 6b 67 72 6f  75 6e 64 2e 0a 0a 43 61  |=background...Ca|
000c0b80  73 74 20 2f 63 6f 6c 2f  20 61 73 20 61 20 3c 77  |st /col/ as a <w|
000c0b90  69 6d 70 5f 63 6f 6c 6f  75 72 3e 20 66 6f 72 20  |imp_colour> for |
000c0ba0  65 61 73 65 20 6f 66 20  75 73 65 2e 44 41 54 41  |ease of use.DATA|
000c0bb0  b9 00 00 00 77 69 6d 70  5f 73 65 74 63 6f 6c 6f  |....wimp_setcolo|
000c0bc0  75 72 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |ur.Syntax:.<os_e|
000c0bd0  72 72 6f 72 3e 20 2a 77  69 6d 70 5f 73 65 74 63  |rror> *wimp_setc|
000c0be0  6f 6c 6f 75 72 20 28 69  6e 74 20 63 6f 6c 29 3b  |olour (int col);|
000c0bf0  0a 48 65 61 64 65 72 3a  09 3c 77 69 6d 70 2e 68  |.Header:.<wimp.h|
000c0c00  3d 3e 77 69 6d 70 5f 68  3e 0a 0a 52 65 74 75 72  |=>wimp_h>..Retur|
000c0c10  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
000c0c20  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
000c0c30  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
000c0c40  75 6e 63 74 69 6f 6e 20  73 65 74 73 20 74 68 65  |unction sets the|
000c0c50  20 63 75 72 72 65 6e 74  20 57 69 6d 70 20 63 6f  | current Wimp co|
000c0c60  6c 6f 75 72 2e 00 00 00  44 41 54 41 19 01 00 00  |lour....DATA....|
000c0c70  57 69 6d 70 5f 53 65 74  45 78 74 65 6e 74 0a 53  |Wimp_SetExtent.S|
000c0c80  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
000c0c90  3e 20 2a 57 69 6d 70 5f  53 65 74 45 78 74 65 6e  |> *Wimp_SetExten|
000c0ca0  74 20 28 3c 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |t (<window_handl|
000c0cb0  65 3e 20 77 69 6e 64 6f  77 2c 20 3c 77 69 6d 70  |e> window, <wimp|
000c0cc0  5f 62 6f 78 3e 20 2a 65  78 74 29 3b 0a 48 65 61  |_box> *ext);.Hea|
000c0cd0  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 57 69  |der:.<DeskLib:Wi|
000c0ce0  6d 70 53 57 49 73 2e 68  3d 3e 57 69 6d 70 53 57  |mpSWIs.h=>WimpSW|
000c0cf0  49 73 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |Is>..Returns:.Po|
000c0d00  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
000c0d10  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
000c0d20  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
000c0d30  6e 20 73 65 74 73 20 74  68 65 20 77 6f 72 6b 20  |n sets the work |
000c0d40  61 72 65 61 20 65 78 74  65 6e 74 20 6f 66 20 74  |area extent of t|
000c0d50  68 65 20 73 70 65 63 69  66 69 65 64 20 77 69 6e  |he specified win|
000c0d60  64 6f 77 20 74 6f 20 62  65 20 74 68 65 20 62 6f  |dow to be the bo|
000c0d70  78 20 67 69 76 65 6e 20  69 6e 20 2f 65 78 74 2f  |x given in /ext/|
000c0d80  2e 00 00 00 44 41 54 41  99 01 00 00 57 69 6d 70  |....DATA....Wimp|
000c0d90  5f 53 65 74 46 6f 6e 74  43 6f 6c 6f 75 72 73 0a  |_SetFontColours.|
000c0da0  53 79 6e 74 61 78 3a 09  3c 6f 73 5f 65 72 72 6f  |Syntax:.<os_erro|
000c0db0  72 3e 20 2a 57 69 6d 70  5f 53 65 74 46 6f 6e 74  |r> *Wimp_SetFont|
000c0dc0  43 6f 6c 6f 75 72 73 20  28 69 6e 74 20 66 6f 72  |Colours (int for|
000c0dd0  65 67 72 6f 75 6e 64 2c  20 69 6e 74 20 62 61 63  |eground, int bac|
000c0de0  6b 67 72 6f 75 6e 64 29  3b 0a 48 65 61 64 65 72  |kground);.Header|
000c0df0  3a 09 3c 44 65 73 6b 4c  69 62 3a 57 69 6d 70 53  |:.<DeskLib:WimpS|
000c0e00  57 49 73 2e 68 3d 3e 57  69 6d 70 53 57 49 73 3e  |WIs.h=>WimpSWIs>|
000c0e10  0a 09 3c 77 69 6d 70 2e  68 3d 3e 77 69 6d 70 5f  |..<wimp.h=>wimp_|
000c0e20  68 3e 20 28 44 65 73 6b  74 6f 70 20 43 29 0a 0a  |h> (Desktop C)..|
000c0e30  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
000c0e40  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
000c0e50  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 43  |ULL> if none...C|
000c0e60  61 6c 6c 65 64 20 7b 2a  7d 77 69 6d 70 5f 73 65  |alled {*}wimp_se|
000c0e70  74 66 6f 6e 74 63 6f 6c  6f 75 72 73 7b 2a 7d 20  |tfontcolours{*} |
000c0e80  69 6e 20 44 65 73 6b 74  6f 70 20 43 2e 0a 0a 54  |in Desktop C...T|
000c0e90  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 65 74  |his function set|
000c0ea0  73 20 74 68 65 20 61 6e  74 69 2d 61 6c 69 61 73  |s the anti-alias|
000c0eb0  65 64 20 66 6f 6e 74 20  63 6f 6c 6f 75 72 73 20  |ed font colours |
000c0ec0  66 72 6f 6d 20 74 68 65  20 74 77 6f 20 57 69 6d  |from the two Wim|
000c0ed0  70 20 63 6f 6c 6f 75 72  73 20 67 69 76 65 6e 2e  |p colours given.|
000c0ee0  20 54 68 65 20 63 6f 6c  6f 75 72 73 20 77 69 6c  | The colours wil|
000c0ef0  6c 20 6e 6f 74 20 62 65  20 70 72 65 73 65 72 76  |l not be preserv|
000c0f00  65 64 20 6f 76 65 72 20  63 61 6c 6c 73 20 74 6f  |ed over calls to|
000c0f10  20 3c 57 69 6d 70 5f 50  6f 6c 6c 3e 2e 00 00 00  | <Wimp_Poll>....|
000c0f20  44 41 54 41 60 01 00 00  57 69 6d 70 5f 53 65 74  |DATA`...Wimp_Set|
000c0f30  49 63 6f 6e 53 74 61 74  65 0a 53 79 6e 74 61 78  |IconState.Syntax|
000c0f40  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 57 69  |:.<os_error> *Wi|
000c0f50  6d 70 5f 53 65 74 49 63  6f 6e 53 74 61 74 65 20  |mp_SetIconState |
000c0f60  28 3c 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 3e  |(<window_handle>|
000c0f70  20 77 69 6e 2c 20 3c 69  63 6f 6e 5f 68 61 6e 64  | win, <icon_hand|
000c0f80  6c 65 3e 20 69 63 6f 6e  2c 20 69 6e 74 20 76 61  |le> icon, int va|
000c0f90  6c 75 65 2c 20 69 6e 74  20 6d 61 73 6b 29 3b 0a  |lue, int mask);.|
000c0fa0  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
000c0fb0  3a 57 69 6d 70 53 57 49  73 2e 68 3d 3e 57 69 6d  |:WimpSWIs.h=>Wim|
000c0fc0  70 53 57 49 73 3e 0a 0a  52 65 74 75 72 6e 73 3a  |pSWIs>..Returns:|
000c0fd0  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
000c0fe0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
000c0ff0  6e 6f 6e 65 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |none...This func|
000c1000  74 69 6f 6e 20 73 65 74  73 20 74 68 65 20 67 69  |tion sets the gi|
000c1010  76 65 6e 20 69 63 6f 6e  20 73 74 61 74 65 20 28  |ven icon state (|
000c1020  69 65 20 69 74 73 20 66  6c 61 67 73 29 20 61 73  |ie its flags) as|
000c1030  20 66 6f 6c 6c 6f 77 73  3a 0a 7b 77 72 61 70 20  | follows:.{wrap |
000c1040  6f 66 66 3b 61 6c 69 67  6e 20 63 65 6e 74 72 65  |off;align centre|
000c1050  7d 0a 6e 65 77 2d 73 74  61 74 65 20 3d 20 28 6f  |}.new-state = (o|
000c1060  6c 64 2d 73 74 61 74 65  20 41 4e 44 20 4e 4f 54  |ld-state AND NOT|
000c1070  20 6d 61 73 6b 29 20 45  4f 52 20 76 61 6c 75 65  | mask) EOR value|
000c1080  44 41 54 41 63 01 00 00  57 69 6d 70 5f 53 65 74  |DATAc...Wimp_Set|
000c1090  4d 6f 64 65 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |Mode.Syntax:.<os|
000c10a0  5f 65 72 72 6f 72 3e 20  2a 57 69 6d 70 5f 53 65  |_error> *Wimp_Se|
000c10b0  74 4d 6f 64 65 20 28 69  6e 74 20 3c 6d 6f 64 65  |tMode (int <mode|
000c10c0  3d 3e 56 44 55 2e 32 32  61 3e 29 3b 0a 48 65 61  |=>VDU.22a>);.Hea|
000c10d0  64 65 72 3a 09 3c 44 65  73 6b 4c 69 62 3a 57 69  |der:.<DeskLib:Wi|
000c10e0  6d 70 53 57 49 73 2e 68  3d 3e 57 69 6d 70 53 57  |mpSWIs.h=>WimpSW|
000c10f0  49 73 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |Is>..Returns:.Po|
000c1100  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
000c1110  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
000c1120  65 2e 0a 0a 44 65 73 6b  74 6f 70 20 43 3a 20 53  |e...Desktop C: S|
000c1130  65 65 20 3c 77 69 6d 70  5f 73 65 74 6d 6f 64 65  |ee <wimp_setmode|
000c1140  3d 3e 77 69 6d 70 5f 73  65 74 6d 6f 64 65 5f 3e  |=>wimp_setmode_>|
000c1150  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000c1160  63 68 61 6e 67 65 73 20  74 68 65 20 64 69 73 70  |changes the disp|
000c1170  6c 61 79 20 6d 6f 64 65  20 75 73 65 64 20 62 79  |lay mode used by|
000c1180  20 74 68 65 20 57 69 6d  70 2e 20 49 74 20 73 68  | the Wimp. It sh|
000c1190  6f 75 6c 64 20 6e 6f 74  20 62 65 20 75 73 65 64  |ould not be used|
000c11a0  20 75 6e 64 65 72 20 6e  6f 72 6d 61 6c 20 63 69  | under normal ci|
000c11b0  72 63 75 6d 73 74 61 6e  63 65 73 20 61 73 20 79  |rcumstances as y|
000c11c0  6f 75 72 20 70 72 6f 67  72 61 6d 20 73 68 6f 75  |our program shou|
000c11d0  6c 64 20 72 75 6e 20 69  6e 20 61 6e 79 20 6d 6f  |ld run in any mo|
000c11e0  64 65 2e 00 44 41 54 41  ae 00 00 00 77 69 6d 70  |de..DATA....wimp|
000c11f0  5f 73 65 74 6d 6f 64 65  0a 53 79 6e 74 61 78 3a  |_setmode.Syntax:|
000c1200  09 3c 6f 73 5f 65 72 72  6f 72 3e 20 2a 77 69 6d  |.<os_error> *wim|
000c1210  70 5f 73 65 74 6d 6f 64  65 20 28 69 6e 74 20 6d  |p_setmode (int m|
000c1220  6f 64 65 29 3b 0a 48 65  61 64 65 72 3a 09 3c 77  |ode);.Header:.<w|
000c1230  69 6d 70 2e 68 3d 3e 77  69 6d 70 5f 68 3e 0a 0a  |imp.h=>wimp_h>..|
000c1240  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
000c1250  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
000c1260  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
000c1270  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 73 65 74  |his function set|
000c1280  73 20 74 68 65 20 73 63  72 65 65 6e 20 6d 6f 64  |s the screen mod|
000c1290  65 2e 00 00 44 41 54 41  76 01 00 00 57 69 6d 70  |e...DATAv...Wimp|
000c12a0  5f 53 65 74 50 61 6c 65  74 74 65 0a 53 79 6e 74  |_SetPalette.Synt|
000c12b0  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
000c12c0  57 69 6d 70 5f 53 65 74  50 61 6c 65 74 74 65 20  |Wimp_SetPalette |
000c12d0  28 3c 70 61 6c 65 74 74  65 5f 62 6c 6f 63 6b 3e  |(<palette_block>|
000c12e0  20 2a 70 61 6c 65 74 74  65 29 3b 0a 48 65 61 64  | *palette);.Head|
000c12f0  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 57 69 6d  |er:.<DeskLib:Wim|
000c1300  70 53 57 49 73 2e 68 3d  3e 57 69 6d 70 53 57 49  |pSWIs.h=>WimpSWI|
000c1310  73 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |s>..Returns:.Poi|
000c1320  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000c1330  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000c1340  2e 0a 0a 44 65 73 6b 74  6f 70 20 43 3a 20 53 65  |...Desktop C: Se|
000c1350  65 20 74 68 65 20 66 75  6e 63 74 69 6f 6e 20 3c  |e the function <|
000c1360  77 69 6d 70 5f 73 65 74  70 61 6c 65 74 74 65 3d  |wimp_setpalette=|
000c1370  3e 77 69 6d 70 5f 73 65  74 70 61 6c 65 74 74 65  |>wimp_setpalette|
000c1380  5f 3e 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |_>...This functi|
000c1390  6f 6e 20 73 65 74 73 20  74 68 65 20 77 68 6f 6c  |on sets the whol|
000c13a0  65 20 70 61 6c 65 74 74  65 20 66 72 6f 6d 20 74  |e palette from t|
000c13b0  68 65 20 62 6c 6f 63 6b  20 70 6f 69 6e 74 65 64  |he block pointed|
000c13c0  20 74 6f 20 62 79 20 2f  70 61 6c 65 74 74 65 2f  | to by /palette/|
000c13d0  2e 20 49 6e 20 6e 6f 6e  2d 31 36 20 63 6f 6c 6f  |. In non-16 colo|
000c13e0  75 72 20 6d 6f 64 65 73  2c 20 79 6f 75 20 6d 75  |ur modes, you mu|
000c13f0  73 74 20 61 6c 73 6f 20  72 65 64 72 61 77 20 74  |st also redraw t|
000c1400  68 65 20 73 63 72 65 65  6e 2e 00 00 44 41 54 41  |he screen...DATA|
000c1410  d4 00 00 00 77 69 6d 70  5f 73 65 74 70 61 6c 65  |....wimp_setpale|
000c1420  74 74 65 0a 53 79 6e 74  61 78 3a 09 3c 6f 73 5f  |tte.Syntax:.<os_|
000c1430  65 72 72 6f 72 3e 20 2a  77 69 6d 70 5f 73 65 74  |error> *wimp_set|
000c1440  70 61 6c 65 74 74 65 20  28 3c 77 69 6d 70 5f 70  |palette (<wimp_p|
000c1450  61 6c 65 74 74 65 73 74  72 3e 20 2a 70 61 6c 29  |alettestr> *pal)|
000c1460  3b 0a 48 65 61 64 65 72  3a 09 3c 77 69 6d 70 2e  |;.Header:.<wimp.|
000c1470  68 3d 3e 77 69 6d 70 5f  68 3e 0a 0a 52 65 74 75  |h=>wimp_h>..Retu|
000c1480  72 6e 73 3a 09 50 6f 69  6e 74 65 72 20 74 6f 20  |rns:.Pointer to |
000c1490  65 72 72 6f 72 2c 20 6f  72 20 3c 4e 55 4c 4c 3e  |error, or <NULL>|
000c14a0  20 69 66 20 6e 6f 6e 65  2e 0a 0a 54 68 69 73 20  | if none...This |
000c14b0  66 75 6e 63 74 69 6f 6e  20 73 65 74 73 20 74 68  |function sets th|
000c14c0  65 20 63 75 72 72 65 6e  74 20 57 69 6d 70 20 70  |e current Wimp p|
000c14d0  61 6c 65 74 74 65 20 74  6f 20 2f 70 61 6c 2f 2e  |alette to /pal/.|
000c14e0  44 41 54 41 43 01 00 00  57 69 6d 70 5f 53 65 74  |DATAC...Wimp_Set|
000c14f0  50 6f 69 6e 74 65 72 53  68 61 70 65 0a 53 79 6e  |PointerShape.Syn|
000c1500  74 61 78 3a 09 3c 6f 73  5f 65 72 72 6f 72 3e 20  |tax:.<os_error> |
000c1510  2a 57 69 6d 70 5f 53 65  74 50 6f 69 6e 74 65 72  |*Wimp_SetPointer|
000c1520  53 68 61 70 65 20 28 3c  70 6f 69 6e 74 65 72 5f  |Shape (<pointer_|
000c1530  73 68 61 70 65 62 6c 6f  63 6b 3e 20 2a 73 68 61  |shapeblock> *sha|
000c1540  70 65 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |pe);.Header:.<De|
000c1550  73 6b 4c 69 62 3a 57 69  6d 70 53 57 49 73 2e 68  |skLib:WimpSWIs.h|
000c1560  3d 3e 57 69 6d 70 53 57  49 73 3e 0a 0a 52 65 74  |=>WimpSWIs>..Ret|
000c1570  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
000c1580  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
000c1590  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
000c15a0  20 66 75 6e 63 74 69 6f  6e 20 73 65 74 73 20 74  | function sets t|
000c15b0  68 65 20 73 68 61 70 65  20 61 6e 64 20 61 63 74  |he shape and act|
000c15c0  69 76 65 20 70 6f 69 6e  74 20 6f 66 20 74 68 65  |ive point of the|
000c15d0  20 70 6f 69 6e 74 65 72  2e 20 59 6f 75 20 73 68  | pointer. You sh|
000c15e0  6f 75 6c 64 20 75 73 65  20 3c 57 69 6d 70 5f 53  |ould use <Wimp_S|
000c15f0  70 72 69 74 65 4f 70 3e  20 77 69 74 68 20 52 30  |priteOp> with R0|
000c1600  3d 33 36 20 69 6e 20 70  72 65 66 65 72 65 6e 63  |=36 in preferenc|
000c1610  65 20 74 6f 20 74 68 69  73 20 66 75 6e 63 74 69  |e to this functi|
000c1620  6f 6e 2e 00 44 41 54 41  58 02 00 00 57 69 6d 70  |on..DATAX...Wimp|
000c1630  5f 53 6c 6f 74 53 69 7a  65 0a 53 79 6e 74 61 78  |_SlotSize.Syntax|
000c1640  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 57 69  |:.<os_error> *Wi|
000c1650  6d 70 5f 53 6c 6f 74 53  69 7a 65 20 28 69 6e 74  |mp_SlotSize (int|
000c1660  20 2a 63 75 72 72 65 6e  74 2c 20 69 6e 74 20 2a  | *current, int *|
000c1670  6e 65 78 74 2c 20 69 6e  74 20 2a 66 72 65 65 29  |next, int *free)|
000c1680  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000c1690  69 62 3a 57 69 6d 70 53  57 49 73 2e 68 3d 3e 57  |ib:WimpSWIs.h=>W|
000c16a0  69 6d 70 53 57 49 73 3e  0a 09 3c 77 69 6d 70 2e  |impSWIs>..<wimp.|
000c16b0  68 3d 3e 77 69 6d 70 5f  68 3e 20 28 44 65 73 6b  |h=>wimp_h> (Desk|
000c16c0  74 6f 70 20 43 29 0a 0a  52 65 74 75 72 6e 73 3a  |top C)..Returns:|
000c16d0  09 50 6f 69 6e 74 65 72  20 74 6f 20 65 72 72 6f  |.Pointer to erro|
000c16e0  72 2c 20 6f 72 20 3c 4e  55 4c 4c 3e 20 69 66 20  |r, or <NULL> if |
000c16f0  6e 6f 6e 65 2e 0a 0a 43  61 6c 6c 65 64 20 7b 2a  |none...Called {*|
000c1700  7d 77 69 6d 70 5f 73 6c  6f 74 73 69 7a 65 7b 2a  |}wimp_slotsize{*|
000c1710  7d 20 69 6e 20 44 65 73  6b 74 6f 70 20 43 2e 0a  |} in Desktop C..|
000c1720  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
000c1730  61 6e 20 62 65 20 75 73  65 64 20 74 6f 20 72 65  |an be used to re|
000c1740  61 64 20 6f 72 20 73 65  74 20 74 68 65 20 73 69  |ad or set the si|
000c1750  7a 65 20 6f 66 20 74 68  65 20 63 75 72 72 65 6e  |ze of the curren|
000c1760  74 20 73 6c 6f 74 20 28  69 65 20 79 6f 75 72 20  |t slot (ie your |
000c1770  70 72 6f 67 72 61 6d 27  73 20 73 6c 6f 74 20 73  |program's slot s|
000c1780  69 7a 65 29 20 61 6e 64  20 74 68 65 20 6e 65 78  |ize) and the nex|
000c1790  74 20 73 6c 6f 74 20 28  74 68 65 20 64 65 66 61  |t slot (the defa|
000c17a0  75 6c 74 20 73 6c 6f 74  20 73 69 7a 65 29 2e 20  |ult slot size). |
000c17b0  54 6f 20 61 6c 74 65 72  20 6f 6e 65 20 6f 66 20  |To alter one of |
000c17c0  74 68 65 20 76 61 6c 75  65 73 2c 20 70 6c 61 63  |the values, plac|
000c17d0  65 20 74 68 65 20 6e 65  77 20 76 61 6c 75 65 20  |e the new value |
000c17e0  69 6e 20 6f 6e 65 20 6f  66 20 74 68 65 20 76 61  |in one of the va|
000c17f0  72 69 61 62 6c 65 73 20  77 68 6f 73 65 20 70 6f  |riables whose po|
000c1800  69 6e 74 65 72 20 69 73  20 67 69 76 65 6e 20 28  |inter is given (|
000c1810  79 6f 75 20 63 61 6e 6e  6f 74 20 61 6c 74 65 72  |you cannot alter|
000c1820  20 74 68 65 20 66 72 65  65 20 73 70 61 63 65 29  | the free space)|
000c1830  2e 20 54 6f 20 6a 75 73  74 20 72 65 61 64 20 69  |. To just read i|
000c1840  74 2c 20 75 73 65 20 2d  31 20 69 6e 73 74 65 61  |t, use -1 instea|
000c1850  64 2e 20 4f 6e 20 65 78  69 74 2c 20 74 68 65 20  |d. On exit, the |
000c1860  6e 65 77 20 76 61 6c 75  65 73 20 77 69 6c 6c 20  |new values will |
000c1870  62 65 20 72 65 74 75 72  6e 65 64 2e 44 41 54 41  |be returned.DATA|
000c1880  d2 00 00 00 77 69 6d 70  5f 73 70 72 69 74 65 61  |....wimp_spritea|
000c1890  72 65 61 0a 54 68 69 73  20 6d 61 63 72 6f 20 69  |rea.This macro i|
000c18a0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 70 6f  |s defined in <po|
000c18b0  69 6e 74 65 72 2e 68 3d  3e 70 6f 69 6e 74 65 72  |inter.h=>pointer|
000c18c0  3e 2c 20 66 6f 72 20 75  73 65 20 77 69 74 68 20  |>, for use with |
000c18d0  74 68 65 20 66 75 6e 63  74 69 6f 6e 20 3c 70 6f  |the function <po|
000c18e0  69 6e 74 65 72 5f 73 65  74 5f 73 68 61 70 65 3e  |inter_set_shape>|
000c18f0  2c 20 74 6f 20 73 65 6c  65 63 74 20 74 68 65 20  |, to select the |
000c1900  57 69 6d 70 20 73 70 72  69 74 65 20 61 72 65 61  |Wimp sprite area|
000c1910  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
000c1920  61 73 3a 0a 7b 66 43 6f  64 65 3b 61 6c 69 67 6e  |as:.{fCode;align|
000c1930  20 63 65 6e 74 72 65 7d  28 28 3c 73 70 72 69 74  | centre}((<sprit|
000c1940  65 5f 61 72 65 61 3e 20  2a 29 20 2d 31 29 00 00  |e_area> *) -1)..|
000c1950  44 41 54 41 38 02 00 00  57 69 6d 70 5f 53 70 72  |DATA8...Wimp_Spr|
000c1960  69 74 65 4f 70 0a 53 79  6e 74 61 78 3a 09 3c 6f  |iteOp.Syntax:.<o|
000c1970  73 5f 65 72 72 6f 72 3e  20 2a 57 69 6d 70 5f 53  |s_error> *Wimp_S|
000c1980  70 72 69 74 65 4f 70 20  28 3c 5f 6b 65 72 6e 65  |priteOp (<_kerne|
000c1990  6c 5f 73 77 69 5f 72 65  67 73 3e 20 2a 72 65 67  |l_swi_regs> *reg|
000c19a0  69 73 74 65 72 73 29 3b  0a 48 65 61 64 65 72 3a  |isters);.Header:|
000c19b0  09 3c 44 65 73 6b 4c 69  62 3a 57 69 6d 70 53 57  |.<DeskLib:WimpSW|
000c19c0  49 73 2e 68 3d 3e 57 69  6d 70 53 57 49 73 3e 0a  |Is.h=>WimpSWIs>.|
000c19d0  0a 52 65 74 75 72 6e 73  3a 09 50 6f 69 6e 74 65  |.Returns:.Pointe|
000c19e0  72 20 74 6f 20 65 72 72  6f 72 2c 20 6f 72 20 3c  |r to error, or <|
000c19f0  4e 55 4c 4c 3e 20 69 66  20 6e 6f 6e 65 2e 0a 0a  |NULL> if none...|
000c1a00  44 65 73 6b 74 6f 70 20  43 3a 20 53 65 65 20 61  |Desktop C: See a|
000c1a10  6c 73 6f 20 3c 77 69 6d  70 5f 73 70 72 69 74 65  |lso <wimp_sprite|
000c1a20  6f 70 3d 3e 77 69 6d 70  5f 73 70 72 69 74 65 6f  |op=>wimp_spriteo|
000c1a30  70 5f 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |p_>..This functi|
000c1a40  6f 6e 20 61 6c 6c 6f 77  73 20 6f 70 65 72 61 74  |on allows operat|
000c1a50  69 6f 6e 73 20 6f 6e 20  57 69 6d 70 20 73 70 72  |ions on Wimp spr|
000c1a60  69 74 65 73 20 77 69 74  68 6f 75 74 20 68 61 76  |ites without hav|
000c1a70  69 6e 67 20 74 6f 20 73  70 65 63 69 66 79 20 74  |ing to specify t|
000c1a80  68 65 20 73 70 72 69 74  65 20 61 72 65 61 20 70  |he sprite area p|
000c1a90  6f 69 6e 74 65 72 2e 20  7b 2f 7d 72 65 67 69 73  |ointer. {/}regis|
000c1aa0  74 65 72 73 2e 72 5b 30  5d 7b 2f 7d 20 63 6f 6e  |ters.r[0]{/} con|
000c1ab0  74 61 69 6e 73 20 74 68  65 20 72 65 61 73 6f 6e  |tains the reason|
000c1ac0  20 63 6f 64 65 2c 20 7b  2f 7d 72 5b 32 5d 7b 2f  | code, {/}r[2]{/|
000c1ad0  7d 20 63 6f 6e 74 61 69  6e 73 20 61 20 70 6f 69  |} contains a poi|
000c1ae0  6e 74 65 72 20 74 6f 20  74 68 65 20 73 70 72 69  |nter to the spri|
000c1af0  74 65 20 6e 61 6d 65 2c  20 61 6e 64 20 7b 2f 7d  |te name, and {/}|
000c1b00  72 5b 33 5d 7b 2f 7d 20  6f 6e 77 61 72 64 73 20  |r[3]{/} onwards |
000c1b10  63 6f 6e 74 61 69 6e 20  74 68 65 20 70 61 72 61  |contain the para|
000c1b20  6d 65 74 65 72 73 2e 20  4f 6e 6c 79 20 72 65 61  |meters. Only rea|
000c1b30  64 20 6f 70 65 72 61 74  69 6f 6e 73 20 61 72 65  |d operations are|
000c1b40  20 61 6c 6c 6f 77 65 64  2e 0a 0a 54 68 69 73 20  | allowed...This |
000c1b50  63 61 6c 6c 20 69 73 20  62 61 73 65 64 20 6f 6e  |call is based on|
000c1b60  20 74 68 65 20 53 57 49  20 3c 4f 53 5f 53 70 72  | the SWI <OS_Spr|
000c1b70  69 74 65 4f 70 3d 3e 53  57 49 3a 4f 53 5f 53 70  |iteOp=>SWI:OS_Sp|
000c1b80  72 69 74 65 4f 70 3e 2e  44 41 54 41 da 00 00 00  |riteOp>.DATA....|
000c1b90  77 69 6d 70 5f 73 70 72  69 74 65 6f 70 0a 53 79  |wimp_spriteop.Sy|
000c1ba0  6e 74 61 78 3a 09 3c 6f  73 5f 65 72 72 6f 72 3e  |ntax:.<os_error>|
000c1bb0  20 2a 77 69 6d 70 5f 73  70 72 69 74 65 6f 70 20  | *wimp_spriteop |
000c1bc0  28 69 6e 74 20 72 65 61  73 6f 6e 2c 20 63 68 61  |(int reason, cha|
000c1bd0  72 20 2a 6e 61 6d 65 29  3b 0a 48 65 61 64 65 72  |r *name);.Header|
000c1be0  3a 09 3c 77 69 6d 70 2e  68 3d 3e 77 69 6d 70 5f  |:.<wimp.h=>wimp_|
000c1bf0  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |h>..Returns:.Poi|
000c1c00  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000c1c10  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000c1c20  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000c1c30  20 63 61 6c 6c 73 20 74  68 65 20 53 57 49 20 3c  | calls the SWI <|
000c1c40  57 69 6d 70 5f 53 70 72  69 74 65 4f 70 3d 3e 53  |Wimp_SpriteOp=>S|
000c1c50  57 49 3a 57 69 6d 70 5f  53 70 72 69 74 65 4f 70  |WI:Wimp_SpriteOp|
000c1c60  3e 2e 00 00 44 41 54 41  da 00 00 00 77 69 6d 70  |>...DATA....wimp|
000c1c70  5f 73 70 72 69 74 65 6f  70 5f 66 75 6c 6c 0a 53  |_spriteop_full.S|
000c1c80  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
000c1c90  3e 20 2a 77 69 6d 70 5f  73 70 72 69 74 65 6f 70  |> *wimp_spriteop|
000c1ca0  5f 66 75 6c 6c 20 28 6f  73 5f 72 65 67 73 65 74  |_full (os_regset|
000c1cb0  20 2a 72 29 3b 0a 48 65  61 64 65 72 3a 09 3c 77  | *r);.Header:.<w|
000c1cc0  69 6d 70 2e 68 3d 3e 77  69 6d 70 5f 68 3e 0a 0a  |imp.h=>wimp_h>..|
000c1cd0  52 65 74 75 72 6e 73 3a  09 50 6f 69 6e 74 65 72  |Returns:.Pointer|
000c1ce0  20 74 6f 20 65 72 72 6f  72 2c 20 6f 72 20 3c 4e  | to error, or <N|
000c1cf0  55 4c 4c 3e 20 69 66 20  6e 6f 6e 65 2e 0a 0a 54  |ULL> if none...T|
000c1d00  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 61 6c  |his function cal|
000c1d10  6c 73 20 74 68 65 20 53  57 49 20 3c 57 69 6d 70  |ls the SWI <Wimp|
000c1d20  5f 53 70 72 69 74 65 4f  70 3d 3e 53 57 49 3a 57  |_SpriteOp=>SWI:W|
000c1d30  69 6d 70 5f 53 70 72 69  74 65 4f 70 3e 2e 00 00  |imp_SpriteOp>...|
000c1d40  44 41 54 41 bf 01 00 00  57 69 6d 70 5f 53 74 61  |DATA....Wimp_Sta|
000c1d50  72 74 54 61 73 6b 0a 53  79 6e 74 61 78 3a 09 3c  |rtTask.Syntax:.<|
000c1d60  6f 73 5f 65 72 72 6f 72  3e 20 2a 57 69 6d 70 5f  |os_error> *Wimp_|
000c1d70  53 74 61 72 74 54 61 73  6b 20 28 63 68 61 72 20  |StartTask (char |
000c1d80  2a 63 6f 6d 6d 61 6e 64  29 3b 0a 48 65 61 64 65  |*command);.Heade|
000c1d90  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 57 69 6d 70  |r:.<DeskLib:Wimp|
000c1da0  53 57 49 73 2e 68 3d 3e  57 69 6d 70 53 57 49 73  |SWIs.h=>WimpSWIs|
000c1db0  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000c1dc0  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000c1dd0  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000c1de0  0a 0a 44 65 73 6b 74 6f  70 20 43 3a 20 73 65 65  |..Desktop C: see|
000c1df0  20 3c 77 69 6d 70 5f 73  74 61 72 74 74 61 73 6b  | <wimp_starttask|
000c1e00  3d 3e 77 69 6d 70 5f 73  74 61 72 74 74 61 73 6b  |=>wimp_starttask|
000c1e10  5f 3e 2e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |_>...This functi|
000c1e20  6f 6e 20 69 73 20 75 73  65 64 20 74 6f 20 73 74  |on is used to st|
000c1e30  61 72 74 20 61 20 74 61  73 6b 20 66 72 6f 6d 20  |art a task from |
000c1e40  77 69 74 68 69 6e 20 61  20 70 72 6f 67 72 61 6d  |within a program|
000c1e50  2e 20 54 68 65 20 74 65  78 74 20 69 6e 20 2f 63  |. The text in /c|
000c1e60  6f 6d 6d 61 6e 64 2f 20  63 61 6e 20 62 65 20 61  |ommand/ can be a|
000c1e70  6e 79 20 2a 20 43 6f 6d  6d 61 6e 64 20 77 68 69  |ny * Command whi|
000c1e80  63 68 20 77 69 6c 6c 20  63 61 75 73 65 20 61 20  |ch will cause a |
000c1e90  57 69 6d 70 20 70 72 6f  67 72 61 6d 20 74 6f 20  |Wimp program to |
000c1ea0  62 65 20 65 78 65 63 75  74 65 64 2e 20 43 6f 6e  |be executed. Con|
000c1eb0  74 72 6f 6c 20 77 69 6c  6c 20 72 65 74 75 72 6e  |trol will return|
000c1ec0  20 74 6f 20 79 6f 75 72  20 70 72 6f 67 72 61 6d  | to your program|
000c1ed0  20 77 68 65 6e 20 74 68  65 20 6e 65 77 20 74 61  | when the new ta|
000c1ee0  73 6b 20 65 78 69 74 73  2c 20 6f 72 20 63 61 6c  |sk exits, or cal|
000c1ef0  6c 73 20 3c 57 69 6d 70  5f 50 6f 6c 6c 3e 2e 00  |ls <Wimp_Poll>..|
000c1f00  44 41 54 41 d1 00 00 00  77 69 6d 70 5f 73 74 61  |DATA....wimp_sta|
000c1f10  72 74 74 61 73 6b 0a 53  79 6e 74 61 78 3a 09 3c  |rttask.Syntax:.<|
000c1f20  6f 73 5f 65 72 72 6f 72  3e 20 2a 77 69 6d 70 5f  |os_error> *wimp_|
000c1f30  73 74 61 72 74 74 61 73  6b 20 28 63 68 61 72 20  |starttask (char |
000c1f40  2a 63 6f 6d 6d 61 6e 64  29 3b 0a 48 65 61 64 65  |*command);.Heade|
000c1f50  72 3a 09 3c 77 69 6d 70  2e 68 3d 3e 77 69 6d 70  |r:.<wimp.h=>wimp|
000c1f60  5f 68 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 50 6f  |_h>..Returns:.Po|
000c1f70  69 6e 74 65 72 20 74 6f  20 65 72 72 6f 72 2c 20  |inter to error, |
000c1f80  6f 72 20 3c 4e 55 4c 4c  3e 20 69 66 20 6e 6f 6e  |or <NULL> if non|
000c1f90  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
000c1fa0  6e 20 65 78 65 63 75 74  65 73 20 74 68 65 20 67  |n executes the g|
000c1fb0  69 76 65 6e 20 73 74 61  72 20 63 6f 6d 6d 61 6e  |iven star comman|
000c1fc0  64 20 61 73 20 61 20 57  69 6d 70 20 74 61 73 6b  |d as a Wimp task|
000c1fd0  2e 00 00 00 44 41 54 41  8f 00 00 00 77 69 6d 70  |....DATA....wimp|
000c1fe0  5f 74 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |_t.This type is |
000c1ff0  64 65 66 69 6e 65 64 20  69 6e 20 3c 77 69 6d 70  |defined in <wimp|
000c2000  2e 68 3d 3e 77 69 6d 70  5f 68 3e 20 61 73 20 61  |.h=>wimp_h> as a|
000c2010  20 74 79 70 65 0a 63 61  70 61 62 6c 65 20 6f 66  | type.capable of|
000c2020  20 63 6f 6e 74 61 69 6e  69 6e 67 20 61 20 57 69  | containing a Wi|
000c2030  6d 70 20 74 61 73 6b 20  68 61 6e 64 6c 65 2e 20  |mp task handle. |
000c2040  49 74 20 69 73 0a 61 63  74 75 61 6c 6c 79 20 64  |It is.actually d|
000c2050  65 66 69 6e 65 64 20 61  73 20 61 6e 20 27 69 6e  |efined as an 'in|
000c2060  74 27 2e 00 44 41 54 41  dd 00 00 00 77 69 6d 70  |t'..DATA....wimp|
000c2070  5f 74 61 73 6b 63 6c 6f  73 65 0a 53 79 6e 74 61  |_taskclose.Synta|
000c2080  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 77  |x:.<os_error> *w|
000c2090  69 6d 70 5f 74 61 73 6b  63 6c 6f 73 65 20 28 77  |imp_taskclose (w|
000c20a0  69 6d 70 5f 74 20 74 29  3b 0a 48 65 61 64 65 72  |imp_t t);.Header|
000c20b0  3a 09 3c 77 69 6d 70 2e  68 3d 3e 77 69 6d 70 5f  |:.<wimp.h=>wimp_|
000c20c0  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |h>..Returns:.Poi|
000c20d0  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000c20e0  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000c20f0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000c2100  20 64 65 72 65 67 69 73  74 65 72 73 20 79 6f 75  | deregisters you|
000c2110  72 20 70 72 6f 67 72 61  6d 20 77 69 74 68 20 74  |r program with t|
000c2120  68 65 20 57 69 6d 70 2e  20 2f 74 2f 20 69 73 20  |he Wimp. /t/ is |
000c2130  79 6f 75 72 20 74 61 73  6b 20 68 61 6e 64 6c 65  |your task handle|
000c2140  2e 00 00 00 44 41 54 41  a3 01 00 00 77 69 6d 70  |....DATA....wimp|
000c2150  5f 74 61 73 6b 69 6e 69  74 0a 53 79 6e 74 61 78  |_taskinit.Syntax|
000c2160  3a 09 3c 6f 73 5f 65 72  72 6f 72 3e 20 2a 77 69  |:.<os_error> *wi|
000c2170  6d 70 5f 74 61 73 6b 69  6e 69 74 20 28 63 68 61  |mp_taskinit (cha|
000c2180  72 20 2a 6e 61 6d 65 2c  20 69 6e 74 20 2a 76 65  |r *name, int *ve|
000c2190  72 73 69 6f 6e 2c 20 77  69 6d 70 5f 74 20 2a 74  |rsion, wimp_t *t|
000c21a0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 77 69 6d 70  |);.Header:.<wimp|
000c21b0  2e 68 3d 3e 77 69 6d 70  5f 68 3e 0a 0a 52 65 74  |.h=>wimp_h>..Ret|
000c21c0  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
000c21d0  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
000c21e0  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 54 68 69 73  |> if none...This|
000c21f0  20 66 75 6e 63 74 69 6f  6e 73 20 72 65 67 69 73  | functions regis|
000c2200  74 65 72 73 20 79 6f 75  72 20 61 70 70 6c 69 63  |ters your applic|
000c2210  61 74 69 6f 6e 20 77 69  74 68 20 74 68 65 20 57  |ation with the W|
000c2220  69 6d 70 2e 20 2f 6e 61  6d 65 2f 20 69 73 20 74  |imp. /name/ is t|
000c2230  68 65 20 6e 61 6d 65 20  6f 66 20 79 6f 75 72 20  |he name of your |
000c2240  70 72 6f 67 72 61 6d 2c  20 7b 2f 7d 2a 76 65 72  |program, {/}*ver|
000c2250  73 69 6f 6e 7b 2f 7d 20  69 73 20 74 68 65 20 57  |sion{/} is the W|
000c2260  69 6d 70 20 76 65 72 73  69 6f 6e 20 6e 75 6d 62  |imp version numb|
000c2270  65 72 20 28 2a 20 31 30  30 29 20 79 6f 75 20 65  |er (* 100) you e|
000c2280  78 70 65 63 74 2e 20 4f  6e 20 65 78 69 74 2c 20  |xpect. On exit, |
000c2290  7b 2f 7d 2a 76 65 72 73  69 6f 6e 7b 2f 7d 20 63  |{/}*version{/} c|
000c22a0  6f 6e 74 61 69 6e 73 20  74 68 65 20 61 63 74 75  |ontains the actu|
000c22b0  61 6c 20 57 69 6d 70 20  76 65 72 73 69 6f 6e 20  |al Wimp version |
000c22c0  61 6e 64 20 7b 2f 7d 2a  74 7b 2f 7d 20 63 6f 6e  |and {/}*t{/} con|
000c22d0  74 61 69 6e 73 20 79 6f  75 72 20 74 61 73 6b 20  |tains your task |
000c22e0  68 61 6e 64 6c 65 2e 00  44 41 54 41 0c 01 00 00  |handle..DATA....|
000c22f0  77 69 6d 70 5f 74 65 6d  70 6c 61 74 65 0a 54 68  |wimp_template.Th|
000c2300  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
000c2310  65 64 20 69 6e 20 3c 77  69 6d 70 2e 68 3d 3e 77  |ed in <wimp.h=>w|
000c2320  69 6d 70 5f 68 3e 2e 20  49 74 20 69 73 20 61 20  |imp_h>. It is a |
000c2330  73 74 72 75 63 74 75 72  65 20 75 73 65 64 20 74  |structure used t|
000c2340  6f 20 68 6f 6c 64 20 74  65 6d 70 6c 61 74 65 20  |o hold template |
000c2350  64 61 74 61 3a 0a 0a 20  20 5c 7b 0a 20 20 20 20  |data:..  \{.    |
000c2360  69 6e 74 09 09 09 72 65  73 65 72 76 65 64 3b 0a  |int...reserved;.|
000c2370  20 20 20 20 3c 77 69 6d  70 5f 77 69 6e 64 3e 09  |    <wimp_wind>.|
000c2380  09 2a 62 75 66 3b 0a 20  20 20 20 63 68 61 72 09  |.*buf;.    char.|
000c2390  09 2a 77 6f 72 6b 5f 66  72 65 65 3b 0a 20 20 20  |.*work_free;.   |
000c23a0  20 63 68 61 72 09 09 2a  77 6f 72 6b 5f 65 6e 64  | char..*work_end|
000c23b0  3b 0a 20 20 20 20 3c 77  69 6d 70 5f 66 6f 6e 74  |;.    <wimp_font|
000c23c0  5f 61 72 72 61 79 3e 09  2a 66 6f 6e 74 3b 0a 20  |_array>.*font;. |
000c23d0  20 20 20 63 68 61 72 09  09 2a 6e 61 6d 65 3b 0a  |   char..*name;.|
000c23e0  20 20 20 20 69 6e 74 09  09 09 69 6e 64 65 78 3b  |    int...index;|
000c23f0  0a 20 20 7d 44 41 54 41  39 02 00 00 57 69 6d 70  |.  }DATA9...Wimp|
000c2400  5f 54 72 61 6e 73 66 65  72 42 6c 6f 63 6b 0a 53  |_TransferBlock.S|
000c2410  79 6e 74 61 78 3a 09 3c  6f 73 5f 65 72 72 6f 72  |yntax:.<os_error|
000c2420  3e 20 2a 57 69 6d 70 5f  54 72 61 6e 73 66 65 72  |> *Wimp_Transfer|
000c2430  42 6c 6f 63 6b 20 28 3c  74 61 73 6b 5f 68 61 6e  |Block (<task_han|
000c2440  64 6c 65 20 3e 73 6f 75  72 63 65 2c 20 76 6f 69  |dle >source, voi|
000c2450  64 20 2a 73 6f 75 72 63  65 62 75 66 2c 20 74 61  |d *sourcebuf, ta|
000c2460  73 6b 5f 68 61 6e 64 6c  65 20 64 65 73 74 2c 20  |sk_handle dest, |
000c2470  76 6f 69 64 20 2a 64 65  73 74 62 75 66 2c 20 75  |void *destbuf, u|
000c2480  6e 73 69 67 6e 65 64 20  69 6e 74 20 6c 65 6e 67  |nsigned int leng|
000c2490  74 68 29 3b 0a 48 65 61  64 65 72 3a 09 3c 44 65  |th);.Header:.<De|
000c24a0  73 6b 4c 69 62 3a 57 69  6d 70 53 57 49 73 2e 68  |skLib:WimpSWIs.h|
000c24b0  3d 3e 57 69 6d 70 53 57  49 73 3e 0a 0a 52 65 74  |=>WimpSWIs>..Ret|
000c24c0  75 72 6e 73 3a 09 50 6f  69 6e 74 65 72 20 74 6f  |urns:.Pointer to|
000c24d0  20 65 72 72 6f 72 2c 20  6f 72 20 3c 4e 55 4c 4c  | error, or <NULL|
000c24e0  3e 20 69 66 20 6e 6f 6e  65 2e 0a 0a 44 65 73 6b  |> if none...Desk|
000c24f0  74 6f 70 20 43 3a 20 53  65 65 20 74 68 65 20 66  |top C: See the f|
000c2500  75 6e 63 74 69 6f 6e 20  3c 77 69 6d 70 5f 74 72  |unction <wimp_tr|
000c2510  61 6e 73 66 65 72 62 6c  6f 63 6b 3d 3e 77 69 6d  |ansferblock=>wim|
000c2520  70 5f 74 72 61 6e 73 66  65 72 62 6c 6f 63 6b 5f  |p_transferblock_|
000c2530  3e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |>..This function|
000c2540  20 63 6f 70 69 65 73 20  61 20 62 6c 6f 63 6b 20  | copies a block |
000c2550  6f 66 20 6d 65 6d 6f 72  79 20 66 72 6f 6d 20 74  |of memory from t|
000c2560  68 65 20 73 6f 75 72 63  65 20 74 61 73 6b 27 73  |he source task's|
000c2570  20 61 64 64 72 65 73 73  20 73 70 61 63 65 20 28  | address space (|
000c2580  7b 2f 7d 73 6f 75 72 63  65 62 75 66 7b 2f 7d 29  |{/}sourcebuf{/})|
000c2590  20 74 6f 20 74 68 65 20  64 65 73 69 6e 61 74 69  | to the desinati|
000c25a0  6f 6e 20 74 61 73 6b 20  28 7b 2f 7d 64 65 73 74  |on task ({/}dest|
000c25b0  62 75 66 7b 2f 7d 29 2e  20 54 68 65 20 74 61 73  |buf{/}). The tas|
000c25c0  6b 20 68 61 6e 64 6c 65  73 20 61 72 65 20 67 69  |k handles are gi|
000c25d0  76 65 6e 20 69 6e 20 2f  73 6f 75 72 63 65 2f 20  |ven in /source/ |
000c25e0  61 6e 64 20 2f 64 65 73  74 2f 20 72 65 73 70 65  |and /dest/ respe|
000c25f0  63 74 69 76 65 6c 79 2e  20 54 68 65 20 6c 65 6e  |ctively. The len|
000c2600  67 74 68 20 6f 66 20 64  61 74 61 20 74 6f 20 74  |gth of data to t|
000c2610  72 61 6e 73 66 65 72 20  69 73 20 67 69 76 65 6e  |ransfer is given|
000c2620  20 69 6e 20 2f 6c 65 6e  67 74 68 2f 2e 00 00 00  | in /length/....|
000c2630  44 41 54 41 60 01 00 00  77 69 6d 70 5f 74 72 61  |DATA`...wimp_tra|
000c2640  6e 73 66 65 72 62 6c 6f  63 6b 0a 53 79 6e 74 61  |nsferblock.Synta|
000c2650  78 3a 09 3c 6f 73 5f 65  72 72 6f 72 3e 20 2a 77  |x:.<os_error> *w|
000c2660  69 6d 70 5f 74 72 61 6e  73 66 65 72 62 6c 6f 63  |imp_transferbloc|
000c2670  6b 20 28 3c 77 69 6d 70  5f 74 3e 20 73 6f 75 72  |k (<wimp_t> sour|
000c2680  63 65 74 61 73 6b 2c 20  63 68 61 72 20 2a 73 6f  |cetask, char *so|
000c2690  75 72 63 65 62 75 66 2c  20 3c 77 69 6d 70 5f 74  |urcebuf, <wimp_t|
000c26a0  3e 20 64 65 73 74 74 61  73 6b 2c 20 63 68 61 72  |> desttask, char|
000c26b0  20 2a 64 65 73 74 62 75  66 2c 20 69 6e 74 20 62  | *destbuf, int b|
000c26c0  75 66 6c 65 6e 29 3b 0a  48 65 61 64 65 72 3a 09  |uflen);.Header:.|
000c26d0  3c 77 69 6d 70 2e 68 3d  3e 77 69 6d 70 5f 68 3e  |<wimp.h=>wimp_h>|
000c26e0  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
000c26f0  65 72 20 74 6f 20 65 72  72 6f 72 2c 20 6f 72 20  |er to error, or |
000c2700  3c 4e 55 4c 4c 3e 20 69  66 20 6e 6f 6e 65 2e 0a  |<NULL> if none..|
000c2710  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 74  |.This function t|
000c2720  72 61 6e 73 66 65 72 73  20 61 20 62 6c 6f 63 6b  |ransfers a block|
000c2730  20 6f 66 20 6d 65 6d 6f  72 79 20 66 72 6f 6d 20  | of memory from |
000c2740  74 68 65 20 73 6f 75 72  63 65 20 74 6f 20 74 68  |the source to th|
000c2750  65 20 64 65 73 74 69 6e  61 74 69 6f 6e 20 74 61  |e destination ta|
000c2760  73 6b 20 61 6e 64 20 62  75 66 66 65 72 73 2e 20  |sk and buffers. |
000c2770  54 68 65 20 6c 65 6e 67  74 68 20 69 73 20 67 69  |The length is gi|
000c2780  76 65 6e 20 69 6e 20 2f  62 75 66 6c 65 6e 2f 2e  |ven in /buflen/.|
000c2790  44 41 54 41 1a 03 00 00  77 69 6d 70 2e 68 0a 54  |DATA....wimp.h.T|
000c27a0  79 70 65 20 64 65 66 69  6e 69 74 69 6f 6e 73 3a  |ype definitions:|
000c27b0  0a 0a 23 74 61 62 6c 65  20 63 6f 6c 75 6d 6e 73  |..#table columns|
000c27c0  20 33 0a 77 69 6d 70 5f  66 6c 61 67 73 20 20 20  | 3.wimp_flags   |
000c27d0  20 20 20 20 20 20 0a 3c  77 69 6d 70 5f 69 63 6f  |      .<wimp_ico|
000c27e0  6e 66 6c 61 67 73 3e 0a  3c 77 69 6d 70 5f 62 62  |nflags>.<wimp_bb|
000c27f0  69 74 73 3e 0a 3c 77 69  6d 70 5f 69 63 6f 6e 64  |its>.<wimp_icond|
000c2800  61 74 61 3e 0a 3c 77 69  6d 70 5f 77 69 6e 64 3e  |ata>.<wimp_wind>|
000c2810  0a 3c 77 69 6d 70 5f 69  63 6f 6e 3e 0a 3c 77 69  |.<wimp_icon>.<wi|
000c2820  6d 70 5f 6f 70 65 6e 73  74 72 3e 0a 3c 77 69 6d  |mp_openstr>.<wim|
000c2830  70 5f 65 74 79 70 65 3e  0a 3c 77 69 6d 70 5f 72  |p_etype>.<wimp_r|
000c2840  65 64 72 61 77 73 74 72  3e 0a 3c 77 69 6d 70 5f  |edrawstr>.<wimp_|
000c2850  63 61 72 65 74 73 74 72  3e 0a 3c 77 69 6d 70 5f  |caretstr>.<wimp_|
000c2860  6d 73 67 68 64 72 3e 0a  3c 77 69 6d 70 5f 6d 73  |msghdr>.<wimp_ms|
000c2870  67 64 61 74 61 73 61 76  65 6f 6b 3e 0a 3c 77 69  |gdatasaveok>.<wi|
000c2880  6d 70 5f 6d 73 67 64 61  74 61 6f 70 65 6e 3e 0a  |mp_msgdataopen>.|
000c2890  3c 77 69 6d 70 5f 6d 73  67 72 61 6d 74 72 61 6e  |<wimp_msgramtran|
000c28a0  73 6d 69 74 3e 0a 3c 77  69 6d 70 5f 6d 73 67 68  |smit>.<wimp_msgh|
000c28b0  65 6c 70 72 65 70 6c 79  3e 0a 3c 77 69 6d 70 5f  |elpreply>.<wimp_|
000c28c0  6d 73 67 73 74 72 3e 0a  3c 77 69 6d 70 5f 65 76  |msgstr>.<wimp_ev|
000c28d0  65 6e 74 73 74 72 3e 0a  3c 77 69 6d 70 5f 6d 65  |entstr>.<wimp_me|
000c28e0  6e 75 66 6c 61 67 73 3e  0a 3c 77 69 6d 70 5f 6d  |nuflags>.<wimp_m|
000c28f0  65 6e 75 69 74 65 6d 3e  0a 3c 77 69 6d 70 5f 64  |enuitem>.<wimp_d|
000c2900  72 61 67 73 74 72 3e 0a  3c 77 69 6d 70 5f 70 73  |ragstr>.<wimp_ps|
000c2910  68 61 70 65 73 74 72 3e  0a 3c 77 69 6d 70 5f 74  |hapestr>.<wimp_t|
000c2920  65 6d 70 6c 61 74 65 3e  0a 3c 77 69 6d 70 5f 70  |emplate>.<wimp_p|
000c2930  61 6c 65 74 74 65 73 74  72 3e 0a 3c 77 69 6d 70  |alettestr>.<wimp|
000c2940  5f 77 63 6f 6c 6f 75 72  73 3e 0a 3c 77 69 6d 70  |_wcolours>.<wimp|
000c2950  5f 69 62 74 79 70 65 3e  0a 3c 77 69 6d 70 5f 64  |_ibtype>.<wimp_d|
000c2960  72 61 67 74 79 70 65 3e  0a 3c 77 69 6d 70 5f 62  |ragtype>.<wimp_b|
000c2970  6f 78 3e 0a 3c 77 69 6d  70 5f 77 69 6e 66 6f 3e  |ox>.<wimp_winfo>|
000c2980  0a 3c 77 69 6d 70 5f 69  63 72 65 61 74 65 3e 0a  |.<wimp_icreate>.|
000c2990  3c 77 69 6d 70 5f 77 73  74 61 74 65 3e 0a 3c 77  |<wimp_wstate>.<w|
000c29a0  69 6d 70 5f 65 6d 61 73  6b 3e 0a 3c 77 69 6d 70  |imp_emask>.<wimp|
000c29b0  5f 6d 6f 75 73 65 73 74  72 3e 0a 3c 77 69 6d 70  |_mousestr>.<wimp|
000c29c0  5f 6d 73 67 61 63 74 69  6f 6e 3e 0a 3c 77 69 6d  |_msgaction>.<wim|
000c29d0  70 5f 6d 73 67 64 61 74  61 73 61 76 65 3e 0a 3c  |p_msgdatasave>.<|
000c29e0  77 69 6d 70 5f 6d 73 67  64 61 74 61 6c 6f 61 64  |wimp_msgdataload|
000c29f0  3e 0a 3c 77 69 6d 70 5f  6d 73 67 72 61 6d 66 65  |>.<wimp_msgramfe|
000c2a00  74 63 68 3e 0a 3c 77 69  6d 70 5f 6d 73 67 68 65  |tch>.<wimp_msghe|
000c2a10  6c 70 72 65 71 75 65 73  74 3e 0a 3c 77 69 6d 70  |lprequest>.<wimp|
000c2a20  5f 6d 73 67 70 72 69 6e  74 3e 0a 3c 77 69 6d 70  |_msgprint>.<wimp|
000c2a30  5f 65 76 65 6e 74 64 61  74 61 3e 0a 3c 77 69 6d  |_eventdata>.<wim|
000c2a40  70 5f 6d 65 6e 75 68 64  72 3e 0a 3c 77 69 6d 70  |p_menuhdr>.<wimp|
000c2a50  5f 6d 65 6e 75 70 74 72  3e 0a 3c 77 69 6d 70 5f  |_menuptr>.<wimp_|
000c2a60  6d 65 6e 75 73 74 72 3e  0a 3c 77 69 6d 70 5f 77  |menustr>.<wimp_w|
000c2a70  68 69 63 68 5f 62 6c 6f  63 6b 3e 0a 3c 77 69 6d  |hich_block>.<wim|
000c2a80  70 5f 66 6f 6e 74 5f 61  72 72 61 79 3e 0a 3c 77  |p_font_array>.<w|
000c2a90  69 6d 70 5f 70 61 6c 65  74 74 65 77 6f 72 64 3e  |imp_paletteword>|
000c2aa0  0a 23 65 6e 64 74 61 62  6c 65 00 00 44 41 54 41  |.#endtable..DATA|
000c2ab0  5b 01 00 00 77 69 6d 70  5f 75 70 64 61 74 65 5f  |[...wimp_update_|
000c2ac0  77 69 6e 64 0a 53 79 6e  74 61 78 3a 09 3c 6f 73  |wind.Syntax:.<os|
000c2ad0  5f 65 72 72 6f 72 3e 20  2a 77 69 6d 70 5f 72 65  |_error> *wimp_re|
000c2ae0  64 72 61 77 5f 77 69 6e  64 20 28 3c 77 69 6d 70  |draw_wind (<wimp|
000c2af0  5f 72 65 64 72 61 77 73  74 72 3e 20 2a 62 6c 6b  |_redrawstr> *blk|
000c2b00  2c 20 3c 42 4f 4f 4c 3e  20 2a 6d 6f 72 65 29 3b  |, <BOOL> *more);|
000c2b10  0a 48 65 61 64 65 72 3a  09 3c 77 69 6d 70 2e 68  |.Header:.<wimp.h|
000c2b20  3d 3e 77 69 6d 70 5f 68  3e 0a 0a 52 65 74 75 72  |=>wimp_h>..Retur|
000c2b30  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
000c2b40  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
000c2b50  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
000c2b60  75 6e 63 74 69 6f 6e 73  20 72 65 64 72 61 77 73  |unctions redraws|
000c2b70  20 74 68 65 20 77 69 6e  64 6f 77 20 6f 75 74 6c  | the window outl|
000c2b80  69 6e 65 20 61 6e 64 20  69 63 6f 6e 73 2e 20 49  |ine and icons. I|
000c2b90  74 20 72 65 74 75 72 6e  73 20 3c 54 52 55 45 3e  |t returns <TRUE>|
000c2ba0  20 69 6e 20 7b 2f 7d 2a  6d 6f 72 65 7b 2f 7d 20  | in {/}*more{/} |
000c2bb0  69 66 20 74 68 65 72 65  20 69 73 20 6d 6f 72 65  |if there is more|
000c2bc0  20 74 6f 20 62 65 20 64  72 61 77 6e 20 77 69 74  | to be drawn wit|
000c2bd0  68 20 3c 77 69 6d 70 5f  67 65 74 5f 72 65 63 74  |h <wimp_get_rect|
000c2be0  61 6e 67 6c 65 3e 2e 20  54 68 69 73 20 63 61 6e  |angle>. This can|
000c2bf0  20 62 65 20 63 61 6c 6c  65 64 20 61 74 20 61 6e  | be called at an|
000c2c00  79 20 74 69 6d 65 2e 00  44 41 54 41 1a 02 00 00  |y time..DATA....|
000c2c10  57 69 6d 70 5f 55 70 64  61 74 65 57 69 6e 64 6f  |Wimp_UpdateWindo|
000c2c20  77 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |w.Syntax:.<os_er|
000c2c30  72 6f 72 3e 20 2a 57 69  6d 70 5f 55 70 64 61 74  |ror> *Wimp_Updat|
000c2c40  65 57 69 6e 64 6f 77 20  28 3c 77 69 6e 64 6f 77  |eWindow (<window|
000c2c50  5f 72 65 64 72 61 77 62  6c 6f 63 6b 3e 20 2a 62  |_redrawblock> *b|
000c2c60  6c 6b 2c 20 3c 42 4f 4f  4c 3e 20 2a 6d 6f 72 65  |lk, <BOOL> *more|
000c2c70  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
000c2c80  4c 69 62 3a 57 69 6d 70  53 57 49 73 2e 68 3d 3e  |Lib:WimpSWIs.h=>|
000c2c90  57 69 6d 70 53 57 49 73  3e 0a 0a 52 65 74 75 72  |WimpSWIs>..Retur|
000c2ca0  6e 73 3a 09 50 6f 69 6e  74 65 72 20 74 6f 20 65  |ns:.Pointer to e|
000c2cb0  72 72 6f 72 2c 20 6f 72  20 3c 4e 55 4c 4c 3e 20  |rror, or <NULL> |
000c2cc0  69 66 20 6e 6f 6e 65 2e  0a 0a 54 68 69 73 20 66  |if none...This f|
000c2cd0  75 6e 63 74 69 6f 6e 20  69 73 20 75 73 65 64 20  |unction is used |
000c2ce0  74 6f 20 73 74 61 72 74  20 61 20 72 65 64 72 61  |to start a redra|
000c2cf0  77 20 6f 66 20 74 68 65  20 70 61 72 74 73 20 6f  |w of the parts o|
000c2d00  66 20 61 20 77 69 6e 64  6f 77 20 74 68 61 74 20  |f a window that |
000c2d10  61 72 65 20 6e 6f 74 20  75 70 20 74 6f 20 64 61  |are not up to da|
000c2d20  74 65 2e 20 4f 6e 20 65  6e 74 72 79 2c 20 2f 62  |te. On entry, /b|
000c2d30  6c 6b 2f 20 63 6f 6e 74  61 69 6e 73 20 74 68 65  |lk/ contains the|
000c2d40  20 61 72 65 61 20 6f 66  20 77 69 6e 64 6f 77 20  | area of window |
000c2d50  74 6f 20 62 65 20 75 70  64 61 74 65 64 2e 20 54  |to be updated. T|
000c2d60  68 65 20 66 75 6e 63 74  69 6f 6e 20 65 78 69 74  |he function exit|
000c2d70  73 20 76 69 61 20 3c 57  69 6d 70 5f 47 65 74 52  |s via <Wimp_GetR|
000c2d80  65 63 74 61 6e 67 6c 65  3e 2c 20 77 68 69 63 68  |ectangle>, which|
000c2d90  20 72 65 74 75 72 6e 73  20 74 68 65 20 63 6f 6f  | returns the coo|
000c2da0  64 69 6e 61 74 65 73 20  6f 66 20 74 68 65 20 66  |dinates of the f|
000c2db0  69 72 73 74 20 76 69 73  69 62 6c 65 20 72 65 63  |irst visible rec|
000c2dc0  74 61 6e 67 6c 65 20 6f  66 20 74 68 65 20 77 6f  |tangle of the wo|
000c2dd0  72 6b 20 61 72 65 61 2e  20 49 74 20 61 6c 73 6f  |rk area. It also|
000c2de0  20 72 65 74 75 72 6e 73  20 61 20 66 6c 61 67 20  | returns a flag |
000c2df0  2f 6d 6f 72 65 2f 20 73  61 79 69 6e 67 20 77 68  |/more/ saying wh|
000c2e00  65 74 68 65 72 20 74 68  65 72 65 20 69 73 20 61  |ether there is a|
000c2e10  6e 79 74 68 69 6e 67 20  74 6f 20 72 65 64 72 61  |nything to redra|
000c2e20  77 2e 00 00 44 41 54 41  91 00 00 00 77 69 6d 70  |w...DATA....wimp|
000c2e30  5f 77 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |_w.This type is |
000c2e40  64 65 66 69 6e 65 64 20  69 6e 20 3c 77 69 6d 70  |defined in <wimp|
000c2e50  2e 68 3d 3e 77 69 6d 70  5f 68 3e 20 61 73 20 61  |.h=>wimp_h> as a|
000c2e60  20 74 79 70 65 20 63 61  70 61 62 6c 65 20 6f 66  | type capable of|
000c2e70  20 63 6f 6e 74 61 69 6e  69 6e 67 20 61 20 57 69  | containing a Wi|
000c2e80  6d 70 20 77 69 6e 64 6f  77 20 68 61 6e 64 6c 65  |mp window handle|
000c2e90  2e 20 49 74 20 69 73 20  61 63 74 75 61 6c 6c 79  |. It is actually|
000c2ea0  20 64 65 66 69 6e 65 64  20 61 73 20 61 6e 20 2f  | defined as an /|
000c2eb0  69 6e 74 2f 2e 00 00 00  44 41 54 41 47 01 00 00  |int/....DATAG...|
000c2ec0  77 69 6d 70 5f 77 63 6f  6c 6f 75 72 73 0a 54 68  |wimp_wcolours.Th|
000c2ed0  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
000c2ee0  65 64 20 69 6e 20 3c 77  69 6d 70 2e 68 3d 3e 77  |ed in <wimp.h=>w|
000c2ef0  69 6d 70 5f 68 3e 2e 20  49 74 20 69 73 20 61 6e  |imp_h>. It is an|
000c2f00  20 65 6e 75 6d 65 72 61  74 65 64 20 74 79 70 65  | enumerated type|
000c2f10  20 63 6f 6e 74 61 69 6e  69 6e 67 20 74 68 65 20  | containing the |
000c2f20  6e 75 6d 62 65 72 73 20  6f 66 20 74 68 65 20 57  |numbers of the W|
000c2f30  69 6d 70 20 77 69 6e 64  6f 77 20 63 6f 6c 6f 75  |imp window colou|
000c2f40  72 73 3a 0a 0a 20 20 5c  7b 0a 20 20 20 20 77 69  |rs:..  \{.    wi|
000c2f50  6d 70 5f 57 43 54 49 54  4c 45 46 4f 52 45 2c 0a  |mp_WCTITLEFORE,.|
000c2f60  20 20 20 20 77 69 6d 70  5f 57 43 54 49 54 4c 45  |    wimp_WCTITLE|
000c2f70  42 41 43 4b 2c 0a 20 20  20 20 77 69 6d 70 5f 57  |BACK,.    wimp_W|
000c2f80  43 57 4b 41 52 45 41 46  4f 52 45 2c 0a 20 20 20  |CWKAREAFORE,.   |
000c2f90  20 77 69 6d 70 5f 57 43  57 4b 41 52 45 41 42 41  | wimp_WCWKAREABA|
000c2fa0  43 4b 2c 0a 20 20 20 20  77 69 6d 70 5f 57 43 53  |CK,.    wimp_WCS|
000c2fb0  43 52 4f 4c 4c 4f 55 54  45 52 2c 0a 20 20 20 20  |CROLLOUTER,.    |
000c2fc0  77 69 6d 70 5f 57 43 53  43 52 4f 4c 4c 49 4e 4e  |wimp_WCSCROLLINN|
000c2fd0  45 52 2c 0a 20 20 20 20  77 69 6d 70 5f 57 43 54  |ER,.    wimp_WCT|
000c2fe0  49 54 4c 45 48 49 2c 0a  20 20 20 20 77 69 6d 70  |ITLEHI,.    wimp|
000c2ff0  5f 57 43 52 45 53 45 52  56 45 44 0a 20 20 7d 00  |_WCRESERVED.  }.|
000c3000  44 41 54 41 1d 02 00 00  77 69 6d 70 5f 77 66 6c  |DATA....wimp_wfl|
000c3010  61 67 73 0a 54 68 69 73  20 74 79 70 65 20 69 73  |ags.This type is|
000c3020  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 77 69 6d  | defined in <wim|
000c3030  70 2e 68 3d 3e 77 69 6d  70 5f 68 3e 2e 20 49 74  |p.h=>wimp_h>. It|
000c3040  20 69 73 20 61 6e 0a 65  6e 75 6d 65 72 61 74 65  | is an.enumerate|
000c3050  64 20 74 79 70 65 20 63  6f 6e 74 61 69 6e 69 6e  |d type containin|
000c3060  67 20 74 68 65 20 76 61  6c 75 65 73 20 6f 66 20  |g the values of |
000c3070  74 68 65 0a 57 69 6d 70  20 77 69 6e 64 6f 77 20  |the.Wimp window |
000c3080  66 6c 61 67 73 3a 0a 0a  20 20 7b 0a 20 20 20 20  |flags:..  {.    |
000c3090  77 69 6d 70 5f 57 4d 4f  56 45 41 42 4c 45 2c 0a  |wimp_WMOVEABLE,.|
000c30a0  20 20 20 20 77 69 6d 70  5f 52 45 44 52 41 57 5f  |    wimp_REDRAW_|
000c30b0  4f 4b 2c 0a 20 20 20 20  77 69 6d 70 5f 57 50 41  |OK,.    wimp_WPA|
000c30c0  4e 45 2c 0a 20 20 20 20  77 69 6d 70 5f 57 54 52  |NE,.    wimp_WTR|
000c30d0  45 53 50 41 53 53 2c 0a  20 20 20 20 77 69 6d 70  |ESPASS,.    wimp|
000c30e0  5f 57 53 43 52 4f 4c 4c  5f 52 31 2c 0a 20 20 20  |_WSCROLL_R1,.   |
000c30f0  20 77 69 6d 70 5f 53 43  52 4f 4c 4c 5f 52 32 2c  | wimp_SCROLL_R2,|
000c3100  0a 20 20 20 20 77 69 6d  70 5f 52 45 41 4c 5f 43  |.    wimp_REAL_C|
000c3110  4f 4c 4f 55 52 53 2c 0a  20 20 20 20 77 69 6d 70  |OLOURS,.    wimp|
000c3120  5f 42 41 43 4b 5f 57 49  4e 44 4f 57 2c 0a 20 20  |_BACK_WINDOW,.  |
000c3130  20 20 77 69 6d 70 5f 48  4f 54 5f 4b 45 59 53 2c  |  wimp_HOT_KEYS,|
000c3140  0a 20 20 20 20 77 69 6d  70 5f 57 4f 50 45 4e 2c  |.    wimp_WOPEN,|
000c3150  0a 20 20 20 20 77 69 6d  70 5f 57 54 4f 50 2c 0a  |.    wimp_WTOP,.|
000c3160  20 20 20 20 77 69 6d 70  5f 57 46 55 4c 4c 2c 0a  |    wimp_WFULL,.|
000c3170  20 20 20 20 77 69 6d 70  5f 57 43 4c 49 43 4b 5f  |    wimp_WCLICK_|
000c3180  54 4f 47 47 4c 45 2c 0a  20 20 20 20 77 69 6d 70  |TOGGLE,.    wimp|
000c3190  5f 57 46 4f 43 55 53 2c  0a 20 20 20 20 77 69 6d  |_WFOCUS,.    wim|
000c31a0  70 5f 57 42 41 43 4b 2c  0a 20 20 20 20 77 69 6d  |p_WBACK,.    wim|
000c31b0  70 5f 57 51 55 49 54 2c  0a 20 20 20 20 77 69 6d  |p_WQUIT,.    wim|
000c31c0  70 5f 57 54 49 54 4c 45  2c 0a 20 20 20 20 77 69  |p_WTITLE,.    wi|
000c31d0  6d 70 5f 57 54 4f 47 47  4c 45 2c 0a 20 20 20 20  |mp_WTOGGLE,.    |
000c31e0  77 69 6d 70 5f 57 56 53  43 52 2c 0a 20 20 20 20  |wimp_WVSCR,.    |
000c31f0  77 69 6d 70 5f 57 53 49  5a 45 2c 0a 20 20 20 20  |wimp_WSIZE,.    |
000c3200  77 69 6d 70 5f 57 48 53  43 52 2c 0a 20 20 20 20  |wimp_WHSCR,.    |
000c3210  77 69 6d 70 5f 57 4e 45  57 0a 20 20 7d 00 00 00  |wimp_WNEW.  }...|
000c3220  44 41 54 41 c1 00 00 00  77 69 6d 70 5f 77 68 69  |DATA....wimp_whi|
000c3230  63 68 5f 62 6c 6f 63 6b  0a 54 68 69 73 20 74 79  |ch_block.This ty|
000c3240  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
000c3250  20 3c 77 69 6d 70 2e 68  3d 3e 77 69 6d 70 5f 68  | <wimp.h=>wimp_h|
000c3260  3e 2e 20 49 74 20 69 73  20 61 20 73 74 72 75 63  |>. It is a struc|
000c3270  74 75 72 65 20 75 73 65  64 20 74 6f 20 68 6f 6c  |ture used to hol|
000c3280  64 20 64 61 74 61 20 66  6f 72 20 3c 77 69 6d 70  |d data for <wimp|
000c3290  5f 77 68 69 63 68 5f 69  63 6f 6e 3e 3a 0a 0a 20  |_which_icon>:.. |
000c32a0  20 5c 7b 0a 20 20 20 20  3c 77 69 6d 70 5f 77 3e  | \{.    <wimp_w>|
000c32b0  09 77 69 6e 64 6f 77 3b  0a 20 20 20 20 69 6e 74  |.window;.    int|
000c32c0  09 09 62 69 74 5f 6d 61  73 6b 3b 0a 20 20 20 20  |..bit_mask;.    |
000c32d0  69 6e 74 09 09 62 69 74  5f 73 65 74 3b 0a 20 20  |int..bit_set;.  |
000c32e0  7d 00 00 00 44 41 54 41  06 01 00 00 77 69 6d 70  |}...DATA....wimp|
000c32f0  5f 77 68 69 63 68 5f 69  63 6f 6e 0a 53 79 6e 74  |_which_icon.Synt|
000c3300  61 78 3a 09 3c 6f 73 5f  65 72 72 6f 72 3e 20 2a  |ax:.<os_error> *|
000c3310  77 69 6d 70 5f 77 68 69  63 68 5f 69 63 6f 6e 20  |wimp_which_icon |
000c3320  28 3c 77 69 6d 70 5f 77  68 69 63 68 5f 62 6c 6f  |(<wimp_which_blo|
000c3330  63 6b 3e 20 2a 62 6c 6b  2c 20 3c 77 69 6d 70 5f  |ck> *blk, <wimp_|
000c3340  69 3e 20 2a 72 65 73 29  3b 0a 48 65 61 64 65 72  |i> *res);.Header|
000c3350  3a 09 3c 77 69 6d 70 2e  68 3d 3e 77 69 6d 70 5f  |:.<wimp.h=>wimp_|
000c3360  68 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 50 6f 69  |h>..Returns:.Poi|
000c3370  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 2c 20 6f  |nter to error, o|
000c3380  72 20 3c 4e 55 4c 4c 3e  20 69 66 20 6e 6f 6e 65  |r <NULL> if none|
000c3390  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000c33a0  20 73 65 61 72 63 68 65  73 20 66 6f 72 20 69 63  | searches for ic|
000c33b0  6f 6e 73 20 77 68 69 63  68 20 6d 61 74 63 68 20  |ons which match |
000c33c0  61 20 67 69 76 65 6e 20  73 74 61 74 65 20 61 6e  |a given state an|
000c33d0  64 20 63 72 65 61 74 65  73 20 61 20 6c 69 73 74  |d creates a list|
000c33e0  20 69 6e 20 2f 72 65 73  2f 2e 00 00 44 41 54 41  | in /res/...DATA|
000c33f0  0d 02 00 00 57 69 6d 70  5f 57 68 69 63 68 49 63  |....Wimp_WhichIc|
000c3400  6f 6e 0a 53 79 6e 74 61  78 3a 09 3c 6f 73 5f 65  |on.Syntax:.<os_e|
000c3410  72 72 6f 72 3e 20 2a 57  69 6d 70 5f 57 68 69 63  |rror> *Wimp_Whic|
000c3420  68 49 63 6f 6e 20 28 3c  77 69 6e 64 6f 77 5f 68  |hIcon (<window_h|
000c3430  61 6e 64 6c 65 3e 20 77  69 6e 2c 20 3c 69 63 6f  |andle> win, <ico|
000c3440  6e 5f 68 61 6e 64 6c 65  3e 20 2a 69 63 6f 6e 73  |n_handle> *icons|
000c3450  2c 20 69 6e 74 20 6d 61  73 6b 2c 20 69 6e 74 20  |, int mask, int |
000c3460  73 65 74 74 69 6e 67 73  29 3b 0a 48 65 61 64 65  |settings);.Heade|
000c3470  72 3a 09 3c 44 65 73 6b  4c 69 62 3a 57 69 6d 70  |r:.<DeskLib:Wimp|
000c3480  53 57 49 73 2e 68 3d 3e  57 69 6d 70 53 57 49 73  |SWIs.h=>WimpSWIs|
000c3490  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 50 6f 69 6e  |>..Returns:.Poin|
000c34a0  74 65 72 20 74 6f 20 65  72 72 6f 72 2c 20 6f 72  |ter to error, or|
000c34b0  20 3c 4e 55 4c 4c 3e 20  69 66 20 6e 6f 6e 65 2e  | <NULL> if none.|
000c34c0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000c34d0  73 65 61 72 63 68 65 73  20 66 6f 72 20 69 63 6f  |searches for ico|
000c34e0  6e 73 20 74 68 61 74 20  6d 61 74 63 68 20 61 20  |ns that match a |
000c34f0  67 69 76 65 6e 20 66 6c  61 67 20 77 6f 72 64 2e  |given flag word.|
000c3500  20 41 6c 6c 20 69 63 6f  6e 73 20 69 6e 20 74 68  | All icons in th|
000c3510  65 20 67 69 76 65 6e 20  77 69 6e 64 6f 77 20 77  |e given window w|
000c3520  69 6c 6c 20 62 65 20 63  68 65 63 6b 65 64 2c 20  |ill be checked, |
000c3530  61 6e 64 20 74 68 65 20  6c 69 73 74 20 70 6c 61  |and the list pla|
000c3540  63 65 64 20 69 6e 20 74  68 65 20 61 72 72 61 79  |ced in the array|
000c3550  20 70 6f 69 6e 74 65 64  20 74 6f 20 62 79 20 2f  | pointed to by /|
000c3560  69 63 6f 6e 73 2f 2e 20  2f 6d 61 73 6b 2f 20 64  |icons/. /mask/ d|
000c3570  65 74 65 72 6d 69 6e 65  73 20 77 68 69 63 68 20  |etermines which |
000c3580  62 69 74 73 20 61 72 65  20 74 6f 20 62 65 20 63  |bits are to be c|
000c3590  68 65 63 6b 65 64 2c 20  2f 73 65 74 74 69 6e 67  |hecked, /setting|
000c35a0  73 2f 20 73 61 79 73 20  77 68 61 74 20 73 68 6f  |s/ says what sho|
000c35b0  75 6c 64 20 62 65 20 6c  6f 6f 6b 65 64 20 66 6f  |uld be looked fo|
000c35c0  72 2e 0a 0a 43 68 65 63  6b 73 20 69 66 3a 20 7b  |r...Checks if: {|
000c35d0  66 43 6f 64 65 7d 69 63  6f 6e 66 6c 61 67 73 20  |fCode}iconflags |
000c35e0  26 20 6d 61 73 6b 20 3d  3d 20 73 65 74 74 69 6e  |& mask == settin|
000c35f0  67 73 20 26 20 6d 61 73  6b 00 00 00 44 41 54 41  |gs & mask...DATA|
000c3600  fc 01 00 00 77 69 6d 70  5f 77 69 6e 64 0a 54 68  |....wimp_wind.Th|
000c3610  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
000c3620  65 64 20 69 6e 20 3c 77  69 6d 70 2e 68 3d 3e 77  |ed in <wimp.h=>w|
000c3630  69 6d 70 5f 68 3e 2e 20  49 74 20 69 73 20 61 20  |imp_h>. It is a |
000c3640  73 74 72 75 63 74 75 72  65 20 63 6f 6e 74 61 69  |structure contai|
000c3650  6e 69 6e 67 20 61 20 77  69 6e 64 6f 77 20 64 65  |ning a window de|
000c3660  66 69 6e 69 74 69 6f 6e  3a 0a 0a 20 20 5c 7b 0a  |finition:..  \{.|
000c3670  20 20 20 20 3c 77 69 6d  70 5f 62 6f 78 3e 09 09  |    <wimp_box>..|
000c3680  62 6f 78 3b 0a 20 20 20  20 69 6e 74 09 09 09 73  |box;.    int...s|
000c3690  63 78 2c 20 73 63 79 3b  0a 20 20 20 20 3c 77 69  |cx, scy;.    <wi|
000c36a0  6d 70 5f 77 3e 09 09 62  65 68 69 6e 64 3b 0a 20  |mp_w>..behind;. |
000c36b0  20 20 20 3c 77 69 6d 70  5f 77 66 6c 61 67 73 3e  |   <wimp_wflags>|
000c36c0  09 66 6c 61 67 73 3b 0a  20 20 20 20 63 68 61 72  |.flags;.    char|
000c36d0  09 09 63 6f 6c 6f 75 72  73 5b 38 5d 3b 0a 20 20  |..colours[8];.  |
000c36e0  20 20 3c 77 69 6d 70 5f  62 6f 78 3e 09 09 65 78  |  <wimp_box>..ex|
000c36f0  3b 0a 20 20 20 20 3c 77  69 6d 70 5f 69 63 6f 6e  |;.    <wimp_icon|
000c3700  66 6c 61 67 73 3e 09 74  69 74 6c 65 66 6c 61 67  |flags>.titleflag|
000c3710  73 3b 0a 20 20 20 20 3c  77 69 6d 70 5f 69 63 6f  |s;.    <wimp_ico|
000c3720  6e 66 6c 61 67 73 3e 09  77 6f 72 6b 66 6c 61 67  |nflags>.workflag|
000c3730  73 3b 0a 20 20 20 20 76  6f 69 64 09 09 2a 73 70  |s;.    void..*sp|
000c3740  72 69 74 65 61 72 65 61  3b 0a 20 20 20 20 69 6e  |ritearea;.    in|
000c3750  74 09 09 09 6d 69 6e 73  69 7a 65 3b 0a 20 20 20  |t...minsize;.   |
000c3760  20 3c 77 69 6d 70 5f 69  63 6f 6e 64 61 74 61 3e  | <wimp_icondata>|
000c3770  09 74 69 74 6c 65 3b 0a  20 20 20 20 69 6e 74 09  |.title;.    int.|
000c3780  09 09 6e 69 63 6f 6e 73  3b 0a 20 20 7d 0a 0a 54  |..nicons;.  }..T|
000c3790  68 69 73 20 73 68 6f 75  6c 64 20 62 65 20 66 6f  |his should be fo|
000c37a0  6c 6c 6f 77 65 64 20 69  6e 20 6d 65 6d 6f 72 79  |llowed in memory|
000c37b0  20 62 79 20 74 68 65 20  69 63 6f 6e 20 64 65 66  | by the icon def|
000c37c0  69 6e 69 74 69 6f 6e 73  2e 20 2f 63 6f 6c 6f 75  |initions. /colou|
000c37d0  72 73 2f 20 63 61 6e 20  62 65 20 69 6e 64 65 78  |rs/ can be index|
000c37e0  65 64 20 77 69 74 68 20  3c 77 69 6d 70 5f 77 63  |ed with <wimp_wc|
000c37f0  6f 6c 6f 75 72 73 3e 2e  44 41 54 41 d7 00 00 00  |olours>.DATA....|
000c3800  77 69 6d 70 5f 77 69 6e  66 6f 0a 54 68 69 73 20  |wimp_winfo.This |
000c3810  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
000c3820  69 6e 20 3c 77 69 6d 70  2e 68 3d 3e 77 69 6d 70  |in <wimp.h=>wimp|
000c3830  5f 68 3e 2e 20 49 74 20  69 73 20 61 20 73 74 72  |_h>. It is a str|
000c3840  75 63 74 75 72 65 20 68  6f 6c 64 69 6e 67 20 77  |ucture holding w|
000c3850  69 6e 64 6f 77 20 69 6e  66 6f 72 6d 61 74 69 6f  |indow informatio|
000c3860  6e 20 61 73 20 72 65 74  75 72 6e 65 64 20 62 79  |n as returned by|
000c3870  20 74 68 65 20 66 75 6e  63 74 69 6f 6e 20 3c 77  | the function <w|
000c3880  69 6d 70 5f 67 65 74 5f  77 69 6e 64 5f 69 6e 66  |imp_get_wind_inf|
000c3890  6f 3e 2e 0a 0a 20 20 20  20 5c 7b 0a 20 20 20 20  |o>...    \{.    |
000c38a0  20 20 20 20 3c 77 69 6d  70 5f 77 3e 09 77 3b 0a  |    <wimp_w>.w;.|
000c38b0  20 20 20 20 20 20 20 20  3c 77 69 6d 70 5f 77 69  |        <wimp_wi|
000c38c0  6e 64 3e 09 69 6e 66 6f  3b 0a 20 20 20 20 7d 00  |nd>.info;.    }.|
000c38d0  44 41 54 41 a5 00 00 00  77 69 6d 70 5f 77 73 74  |DATA....wimp_wst|
000c38e0  61 74 65 0a 54 68 69 73  20 74 79 70 65 20 69 73  |ate.This type is|
000c38f0  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 77 69 6d  | defined in <wim|
000c3900  70 2e 68 3d 3e 77 69 6d  70 5f 68 3e 2e 20 49 74  |p.h=>wimp_h>. It|
000c3910  20 69 73 20 61 20 73 74  72 75 63 74 75 72 65 20  | is a structure |
000c3920  75 73 65 64 20 74 6f 20  68 6f 6c 64 20 61 20 77  |used to hold a w|
000c3930  69 6e 64 6f 77 20 73 74  61 74 65 3a 0a 0a 20 20  |indow state:..  |
000c3940  5c 7b 0a 20 20 20 20 3c  77 69 6d 70 5f 6f 70 65  |\{.    <wimp_ope|
000c3950  6e 73 74 72 3e 09 6f 3b  0a 20 20 20 20 3c 77 69  |nstr>.o;.    <wi|
000c3960  6d 70 5f 77 66 6c 61 67  73 3e 09 66 6c 61 67 73  |mp_wflags>.flags|
000c3970  3b 0a 20 20 7d 00 00 00  44 41 54 41 69 02 00 00  |;.  }...DATAi...|
000c3980  77 69 6e 2e 68 0a 54 68  69 73 20 68 65 61 64 65  |win.h.This heade|
000c3990  72 20 64 65 63 6c 61 72  65 73 20 66 75 6e 63 74  |r declares funct|
000c39a0  69 6f 6e 73 20 66 6f 72  20 63 65 6e 74 72 61 6c  |ions for central|
000c39b0  20 6d 61 6e 61 67 65 6d  65 6e 74 20 6f 66 20 52  | management of R|
000c39c0  49 53 43 20 4f 53 20 77  69 6e 64 6f 77 73 2e 0a  |ISC OS windows..|
000c39d0  0a 46 75 6e 63 74 69 6f  6e 73 3a 0a 0a 23 54 61  |.Functions:..#Ta|
000c39e0  62 6c 65 20 39 20 32 31  0a 3c 77 69 6e 5f 69 6e  |ble 9 21.<win_in|
000c39f0  69 74 3e 0a 3c 77 69 6e  5f 73 65 74 6d 65 6e 75  |it>.<win_setmenu|
000c3a00  68 3e 0a 3c 77 69 6e 5f  67 65 74 6d 65 6e 75 68  |h>.<win_getmenuh|
000c3a10  3e 0a 3c 77 69 6e 5f 70  72 6f 63 65 73 73 65 76  |>.<win_processev|
000c3a20  65 6e 74 3e 0a 3c 77 69  6e 5f 61 63 74 69 76 65  |ent>.<win_active|
000c3a30  69 6e 63 3e 0a 3c 77 69  6e 5f 61 63 74 69 76 65  |inc>.<win_active|
000c3a40  64 65 63 3e 0a 3c 77 69  6e 5f 61 63 74 69 76 65  |dec>.<win_active|
000c3a50  6e 6f 3e 0a 3c 77 69 6e  5f 67 69 76 65 5f 61 77  |no>.<win_give_aw|
000c3a60  61 79 5f 63 61 72 65 74  3e 0a 3c 77 69 6e 5f 73  |ay_caret>.<win_s|
000c3a70  65 74 74 69 74 6c 65 3e  0a 3c 77 69 6e 5f 72 65  |ettitle>.<win_re|
000c3a80  61 64 5f 65 76 65 6e 74  5f 68 61 6e 64 6c 65 72  |ad_event_handler|
000c3a90  3e 0a 3c 77 69 6e 5f 63  6c 61 69 6d 5f 69 64 6c  |>.<win_claim_idl|
000c3aa0  65 5f 65 76 65 6e 74 73  3e 0a 3c 77 69 6e 5f 69  |e_events>.<win_i|
000c3ab0  64 6c 65 5f 65 76 65 6e  74 5f 63 6c 61 69 6d 65  |dle_event_claime|
000c3ac0  72 3e 0a 3c 77 69 6e 5f  63 6c 61 69 6d 5f 75 6e  |r>.<win_claim_un|
000c3ad0  6b 6e 6f 77 6e 5f 65 76  65 6e 74 73 3e 0a 3c 77  |known_events>.<w|
000c3ae0  69 6e 5f 75 6e 6b 6e 6f  77 6e 5f 65 76 65 6e 74  |in_unknown_event|
000c3af0  5f 63 6c 61 69 6d 65 72  3e 0a 3c 77 69 6e 5f 72  |_claimer>.<win_r|
000c3b00  65 67 69 73 74 65 72 5f  65 76 65 6e 74 5f 68 61  |egister_event_ha|
000c3b10  6e 64 6c 65 72 3e 0a 3c  77 69 6e 5f 61 64 64 5f  |ndler>.<win_add_|
000c3b20  75 6e 6b 6e 6f 77 6e 5f  65 76 65 6e 74 5f 70 72  |unknown_event_pr|
000c3b30  6f 63 65 73 73 6f 72 3e  0a 3c 77 69 6e 5f 72 65  |ocessor>.<win_re|
000c3b40  6d 6f 76 65 5f 75 6e 6b  6e 6f 77 6e 5f 65 76 65  |move_unknown_eve|
000c3b50  6e 74 5f 70 72 6f 63 65  73 73 6f 72 3e 0a 23 45  |nt_processor>.#E|
000c3b60  6e 64 54 61 62 6c 65 0a  0a 23 54 61 62 6c 65 20  |ndTable..#Table |
000c3b70  34 20 32 31 0a 4d 61 63  72 6f 73 3a 0a 0a 3c 77  |4 21.Macros:..<w|
000c3b80  69 6e 5f 49 43 4f 4e 42  41 52 3e 0a 3c 77 69 6e  |in_ICONBAR>.<win|
000c3b90  5f 49 43 4f 4e 42 41 52  4c 4f 41 44 3e 0a 54 79  |_ICONBARLOAD>.Ty|
000c3ba0  70 65 73 3a 0a 0a 3c 77  69 6e 5f 65 76 65 6e 74  |pes:..<win_event|
000c3bb0  5f 68 61 6e 64 6c 65 72  3e 0a 3c 77 69 6e 5f 75  |_handler>.<win_u|
000c3bc0  6e 6b 6e 6f 77 6e 5f 65  76 65 6e 74 5f 70 72 6f  |nknown_event_pro|
000c3bd0  63 65 73 73 6f 72 3e 0a  23 45 6e 64 54 61 62 6c  |cessor>.#EndTabl|
000c3be0  65 00 00 00 44 41 54 41  2e 02 00 00 44 65 73 6b  |e...DATA....Desk|
000c3bf0  4c 69 62 3a 57 69 6e 64  6f 77 2e 68 0a 56 65 72  |Lib:Window.h.Ver|
000c3c00  73 69 6f 6e 3a 20 31 2e  31 30 20 28 44 65 63 20  |sion: 1.10 (Dec |
000c3c10  31 39 39 34 29 0a 23 6c  69 6e 65 0a 54 68 69 73  |1994).#line.This|
000c3c20  20 68 65 61 64 65 72 20  64 65 63 6c 61 72 65 73  | header declares|
000c3c30  20 68 69 67 68 2d 6c 65  76 65 6c 20 66 75 6e 63  | high-level func|
000c3c40  74 69 6f 6e 73 20 66 6f  72 20 68 61 6e 64 6c 69  |tions for handli|
000c3c50  6e 67 20 77 69 6e 64 6f  77 73 2e 20 28 4f 68 2c  |ng windows. (Oh,|
000c3c60  20 61 6e 64 20 6f 6e 65  20 74 79 70 65 20 74 6f  | and one type to|
000c3c70  6f 21 29 0a 0a 46 75 6e  63 74 69 6f 6e 73 3a 0a  |o!)..Functions:.|
000c3c80  0a 23 49 6e 64 65 6e 74  20 32 0a 23 54 61 62 6c  |.#Indent 2.#Tabl|
000c3c90  65 20 63 6f 6c 75 6d 6e  73 20 32 0a 3c 57 69 6e  |e columns 2.<Win|
000c3ca0  64 6f 77 5f 43 72 65 61  74 65 3e 0a 3c 57 69 6e  |dow_Create>.<Win|
000c3cb0  64 6f 77 5f 53 68 6f 77  3e 0a 3c 57 69 6e 64 6f  |dow_Show>.<Windo|
000c3cc0  77 5f 43 72 65 61 74 65  41 6e 64 53 68 6f 77 3e  |w_CreateAndShow>|
000c3cd0  0a 3c 57 69 6e 64 6f 77  5f 48 69 64 65 3e 0a 3c  |.<Window_Hide>.<|
000c3ce0  57 69 6e 64 6f 77 5f 44  65 6c 65 74 65 3e 0a 3c  |Window_Delete>.<|
000c3cf0  57 69 6e 64 6f 77 5f 47  65 74 49 6e 66 6f 3e 0a  |Window_GetInfo>.|
000c3d00  3c 57 69 6e 64 6f 77 5f  47 65 74 49 6e 66 6f 33  |<Window_GetInfo3|
000c3d10  3e 0a 3c 57 69 6e 64 6f  77 5f 50 61 72 65 6e 74  |>.<Window_Parent|
000c3d20  4e 61 6d 65 3e 0a 3c 57  69 6e 64 6f 77 5f 41 75  |Name>.<Window_Au|
000c3d30  74 6f 48 65 6c 70 3e 0a  3c 57 69 6e 64 6f 77 5f  |toHelp>.<Window_|
000c3d40  48 65 6c 70 48 61 6e 64  6c 65 72 3e 0a 3c 57 69  |HelpHandler>.<Wi|
000c3d50  6e 64 6f 77 5f 4d 6f 64  65 43 68 61 6e 67 65 3e  |ndow_ModeChange>|
000c3d60  0a 3c 57 69 6e 64 6f 77  5f 53 65 74 54 69 74 6c  |.<Window_SetTitl|
000c3d70  65 3e 0a 3c 57 69 6e 64  6f 77 5f 42 72 69 6e 67  |e>.<Window_Bring|
000c3d80  54 6f 46 72 6f 6e 74 3e  0a 3c 57 69 6e 64 6f 77  |ToFront>.<Window|
000c3d90  5f 43 6f 6e 73 74 72 61  69 6e 4d 6f 75 73 65 3e  |_ConstrainMouse>|
000c3da0  0a 3c 57 69 6e 64 6f 77  5f 53 65 74 45 78 74 65  |.<Window_SetExte|
000c3db0  6e 74 3e 0a 3c 57 69 6e  64 6f 77 5f 46 6f 72 63  |nt>.<Window_Forc|
000c3dc0  65 52 65 64 72 61 77 3e  0a 3c 57 69 6e 64 6f 77  |eRedraw>.<Window|
000c3dd0  5f 47 65 74 43 6f 6f 72  64 73 3e 0a 23 45 6e 64  |_GetCoords>.#End|
000c3de0  54 61 62 6c 65 0a 23 49  6e 64 65 6e 74 20 30 0a  |Table.#Indent 0.|
000c3df0  0a 54 79 70 65 3a 0a 0a  23 69 6e 64 65 6e 74 20  |.Type:..#indent |
000c3e00  32 0a 3c 77 69 6e 64 6f  77 5f 6f 70 65 6e 70 6f  |2.<window_openpo|
000c3e10  73 3e 00 00 44 49 52 24  c8 04 00 00 c8 04 00 00  |s>..DIR$........|
000c3e20  dc 42 0c 00 46 ff ff ff  72 f2 4b 26 c7 02 00 00  |.B..F...r.K&....|
000c3e30  13 00 00 00 00 00 00 00  41 75 74 6f 48 65 6c 70  |........AutoHelp|
000c3e40  00 00 00 00 a4 45 0c 00  46 ff ff ff 58 8c 41 26  |.....E..F...X.A&|
000c3e50  68 02 00 00 13 00 00 00  00 00 00 00 62 6c 6f 63  |h...........bloc|
000c3e60  6b 00 00 00 0c 48 0c 00  46 ff ff ff ae 77 41 26  |k....H..F....wA&|
000c3e70  27 01 00 00 13 00 00 00  00 00 00 00 63 6f 6c 6f  |'...........colo|
000c3e80  75 72 69 6e 64 69 63 65  73 00 00 00 34 49 0c 00  |urindices...4I..|
000c3e90  46 ff ff ff 1f 6a 4b 26  88 01 00 00 13 00 00 00  |F....jK&........|
000c3ea0  00 00 00 00 43 72 65 61  74 65 00 00 bc 4a 0c 00  |....Create...J..|
000c3eb0  46 ff ff ff 9b 75 4b 26  fa 00 00 00 13 00 00 00  |F....uK&........|
000c3ec0  00 00 00 00 43 72 65 61  74 65 41 6e 64 53 68 6f  |....CreateAndSho|
000c3ed0  77 00 00 00 b8 4b 0c 00  46 ff ff ff ba 86 4b 26  |w....K..F.....K&|
000c3ee0  4e 01 00 00 13 00 00 00  00 00 00 00 44 65 6c 65  |N...........Dele|
000c3ef0  74 65 00 00 08 4d 0c 00  46 ff ff ff a1 95 58 26  |te...M..F.....X&|
000c3f00  16 01 00 00 13 00 00 00  00 00 00 00 44 65 6c 65  |............Dele|
000c3f10  74 65 49 6e 63 4d 65 6e  75 73 00 00 20 4e 0c 00  |teIncMenus.. N..|
000c3f20  46 ff ff ff 01 60 41 26  d4 05 00 00 13 00 00 00  |F....`A&........|
000c3f30  00 00 00 00 66 6c 61 67  73 00 00 00 f4 53 0c 00  |....flags....S..|
000c3f40  46 ff ff ff 3a 9b 58 26  d6 00 00 00 13 00 00 00  |F...:.X&........|
000c3f50  00 00 00 00 46 6f 72 63  65 43 6f 6d 70 6c 65 74  |....ForceComplet|
000c3f60  65 52 65 64 72 61 77 00  cc 54 0c 00 46 ff ff ff  |eRedraw..T..F...|
000c3f70  7a 9e 4b 26 6f 01 00 00  13 00 00 00 00 00 00 00  |z.K&o...........|
000c3f80  47 65 74 49 6e 66 6f 00  3c 56 0c 00 46 ff ff ff  |GetInfo.<V..F...|
000c3f90  9e 6e 37 26 82 00 00 00  13 00 00 00 00 00 00 00  |.n7&............|
000c3fa0  68 61 6e 64 6c 65 00 00  c0 56 0c 00 46 ff ff ff  |handle...V..F...|
000c3fb0  f4 14 4c 26 66 02 00 00  13 00 00 00 00 00 00 00  |..L&f...........|
000c3fc0  48 65 6c 70 48 61 6e 64  6c 65 72 00 28 59 0c 00  |HelpHandler.(Y..|
000c3fd0  46 ff ff ff fe 7f 4b 26  0a 01 00 00 13 00 00 00  |F.....K&........|
000c3fe0  00 00 00 00 48 69 64 65  00 00 00 00 34 5a 0c 00  |....Hide....4Z..|
000c3ff0  46 ff ff ff 3b e3 37 26  8c 00 00 00 13 00 00 00  |F...;.7&........|
000c4000  00 00 00 00 49 43 4f 4e  42 41 52 00 c0 5a 0c 00  |....ICONBAR..Z..|
000c4010  46 ff ff ff 63 a5 41 26  e6 00 00 00 13 00 00 00  |F...c.A&........|
000c4020  00 00 00 00 69 6e 66 6f  00 00 00 00 a8 5b 0c 00  |....info.....[..|
000c4030  46 ff ff ff 21 73 41 26  cf 00 00 00 13 00 00 00  |F...!sA&........|
000c4040  00 00 00 00 6d 69 6e 73  69 7a 65 00 78 5c 0c 00  |....minsize.x\..|
000c4050  46 ff ff ff 35 1d 4c 26  79 01 00 00 13 00 00 00  |F...5.L&y.......|
000c4060  00 00 00 00 4d 6f 64 65  43 68 61 6e 67 65 00 00  |....ModeChange..|
000c4070  f4 5d 0c 00 46 ff ff ff  0b 89 58 26 c6 00 00 00  |.]..F.....X&....|
000c4080  13 00 00 00 00 00 00 00  4d 6f 76 65 00 00 00 00  |........Move....|
000c4090  bc 5e 0c 00 46 ff ff ff  ac 98 41 26 27 01 00 00  |.^..F.....A&'...|
000c40a0  13 00 00 00 00 00 00 00  6f 70 65 6e 62 6c 6f 63  |........openbloc|
000c40b0  6b 00 00 00 e4 5f 0c 00  46 ff ff ff b6 5a 4b 26  |k...._..F....ZK&|
000c40c0  a8 01 00 00 13 00 00 00  00 00 00 00 6f 70 65 6e  |............open|
000c40d0  70 6f 73 00 8c 61 0c 00  46 ff ff ff ae b3 41 26  |pos..a..F.....A&|
000c40e0  d9 00 00 00 13 00 00 00  00 00 00 00 6f 75 74 6c  |............outl|
000c40f0  69 6e 65 00 68 62 0c 00  46 ff ff ff 0e c0 4b 26  |ine.hb..F.....K&|
000c4100  59 01 00 00 13 00 00 00  00 00 00 00 50 61 72 65  |Y...........Pare|
000c4110  6e 74 4e 61 6d 65 00 00  c4 63 0c 00 46 ff ff ff  |ntName...c..F...|
000c4120  6a ad 41 26 22 01 00 00  13 00 00 00 00 00 00 00  |j.A&"...........|
000c4130  72 65 64 72 61 77 62 6c  6f 63 6b 00 e8 64 0c 00  |redrawblock..d..|
000c4140  46 ff ff ff b7 8d 58 26  cc 00 00 00 13 00 00 00  |F.....X&........|
000c4150  00 00 00 00 52 65 73 69  7a 65 00 00 b4 65 0c 00  |....Resize...e..|
000c4160  46 ff ff ff f2 90 58 26  d0 00 00 00 13 00 00 00  |F.....X&........|
000c4170  00 00 00 00 53 63 72 6f  6c 6c 00 00 84 66 0c 00  |....Scroll...f..|
000c4180  46 ff ff ff d8 9e 58 26  db 00 00 00 13 00 00 00  |F.....X&........|
000c4190  00 00 00 00 53 65 74 46  6f 63 75 73 00 00 00 00  |....SetFocus....|
000c41a0  60 67 0c 00 46 ff ff ff  9c 26 4c 26 2a 01 00 00  |`g..F....&L&*...|
000c41b0  13 00 00 00 00 00 00 00  53 65 74 54 69 74 6c 65  |........SetTitle|
000c41c0  00 00 00 00 8c 68 0c 00  46 ff ff ff ea 6f 4b 26  |.....h..F....oK&|
000c41d0  0e 01 00 00 13 00 00 00  00 00 00 00 53 68 6f 77  |............Show|
000c41e0  00 00 00 00 9c 69 0c 00  46 ff ff ff 0a a0 41 26  |.....i..F.....A&|
000c41f0  d9 00 00 00 13 00 00 00  00 00 00 00 73 74 61 74  |............stat|
000c4200  65 00 00 00 78 6a 0c 00  46 fd ff ff 51 ab 58 26  |e...xj..F...Q.X&|
000c4210  0e 01 00 00 13 00 00 00  00 00 00 00 54 4c 00 00  |............TL..|
000c4220  88 6b 0c 00 46 ff ff ff  7e ac 4b 26 75 01 00 00  |.k..F...~.K&u...|
000c4230  13 00 00 00 00 00 00 00  47 65 74 49 6e 66 6f 33  |........GetInfo3|
000c4240  00 00 00 00 00 6d 0c 00  46 ff ff ff e1 61 4c 26  |.....m..F....aL&|
000c4250  b1 00 00 00 13 00 00 00  00 00 00 00 42 72 69 6e  |............Brin|
000c4260  67 54 6f 46 72 6f 6e 74  00 00 00 00 b4 6d 0c 00  |gToFront.....m..|
000c4270  46 ff ff ff 59 81 4c 26  1c 01 00 00 13 00 00 00  |F...Y.L&........|
000c4280  00 00 00 00 43 6f 6e 73  74 72 61 69 6e 4d 6f 75  |....ConstrainMou|
000c4290  73 65 00 00 d0 6e 0c 00  46 ff ff ff 4e a2 4c 26  |se...n..F...N.L&|
000c42a0  f8 00 00 00 13 00 00 00  00 00 00 00 46 6f 72 63  |............Forc|
000c42b0  65 52 65 64 72 61 77 00  c8 6f 0c 00 46 ff ff ff  |eRedraw..o..F...|
000c42c0  33 b5 4c 26 c2 00 00 00  13 00 00 00 00 00 00 00  |3.L&............|
000c42d0  47 65 74 43 6f 6f 72 64  73 00 00 00 44 41 54 41  |GetCoords...DATA|
000c42e0  c7 02 00 00 57 69 6e 64  6f 77 5f 41 75 74 6f 48  |....Window_AutoH|
000c42f0  65 6c 70 0a 53 79 6e 74  61 78 3a 09 3c 42 4f 4f  |elp.Syntax:.<BOO|
000c4300  4c 3e 20 57 69 6e 64 6f  77 5f 41 75 74 6f 48 65  |L> Window_AutoHe|
000c4310  6c 70 20 28 3c 77 69 6e  64 6f 77 5f 68 61 6e 64  |lp (<window_hand|
000c4320  6c 65 3e 20 77 69 6e 2c  20 3c 69 63 6f 6e 5f 68  |le> win, <icon_h|
000c4330  61 6e 64 6c 65 3e 20 69  63 6f 6e 29 3b 0a 48 65  |andle> icon);.He|
000c4340  61 64 65 72 3a 09 3c 44  65 73 6b 4c 69 62 3a 57  |ader:.<DeskLib:W|
000c4350  69 6e 64 6f 77 2e 68 3d  3e 57 69 6e 64 6f 77 3e  |indow.h=>Window>|
000c4360  0a 0a 52 65 74 75 72 6e  73 3a 09 3c 54 52 55 45  |..Returns:.<TRUE|
000c4370  3e 20 69 66 20 73 75 63  63 65 73 73 66 75 6c 2e  |> if successful.|
000c4380  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000c4390  61 64 64 73 20 61 6e 20  65 76 65 6e 74 20 68 61  |adds an event ha|
000c43a0  6e 64 6c 65 72 20 28 73  65 65 20 3c 45 76 65 6e  |ndler (see <Even|
000c43b0  74 3e 29 20 66 6f 72 20  74 68 65 20 67 69 76 65  |t>) for the give|
000c43c0  6e 20 77 69 6e 64 6f 77  20 61 6e 64 20 69 63 6f  |n window and ico|
000c43d0  6e 2e 20 45 76 65 72 79  20 48 65 6c 70 52 65 71  |n. Every HelpReq|
000c43e0  75 65 73 74 20 6d 65 73  73 61 67 65 20 77 69 6c  |uest message wil|
000c43f0  6c 20 74 68 65 6e 20 62  79 20 61 6e 73 77 65 72  |l then by answer|
000c4400  20 62 79 20 67 65 74 74  69 6e 67 20 61 20 6d 65  | by getting a me|
000c4410  73 73 61 67 65 20 66 72  6f 6d 20 79 6f 75 72 20  |ssage from your |
000c4420  6d 65 73 73 61 67 65 20  66 69 6c 65 20 28 73 65  |message file (se|
000c4430  65 20 3c 4d 73 67 73 3e  29 2e 20 54 68 65 20 6d  |e <Msgs>). The m|
000c4440  65 73 73 61 67 65 20 74  61 67 20 69 73 20 67 69  |essage tag is gi|
000c4450  76 65 6e 20 61 73 3a 0a  0a 7b 66 43 6f 64 65 7d  |ven as:..{fCode}|
000c4460  20 20 20 20 74 65 6d 70  6c 61 74 65 6e 61 6d 65  |    templatename|
000c4470  2e 69 63 6f 6e 6e 75 6d  62 65 72 7b 66 7d 0a 65  |.iconnumber{f}.e|
000c4480  67 7b 66 43 6f 64 65 7d  20 20 20 6d 61 69 6e 77  |g{fCode}   mainw|
000c4490  69 6e 64 2e 2d 31 7b 66  7d 20 20 20 20 20 20 20  |ind.-1{f}       |
000c44a0  20 20 20 20 20 20 28 6e  6f 20 69 63 6f 6e 29 2e  |      (no icon).|
000c44b0  0a 0a 59 6f 75 20 63 61  6e 20 75 73 65 20 61 6e  |..You can use an|
000c44c0  20 69 63 6f 6e 20 6e 75  6d 62 65 72 20 6f 66 20  | icon number of |
000c44d0  22 2a 22 20 69 6e 20 74  68 65 20 6d 65 73 73 61  |"*" in the messa|
000c44e0  67 65 73 20 66 69 6c 65  20 74 6f 20 72 65 73 70  |ges file to resp|
000c44f0  6f 6e 64 20 74 6f 20 61  6c 6c 20 68 65 6c 70 20  |ond to all help |
000c4500  72 65 71 75 65 73 74 73  20 77 69 74 68 6f 75 74  |requests without|
000c4510  20 73 70 65 63 69 66 69  63 20 68 65 6c 70 2e 0a  | specific help..|
000c4520  0a 41 6c 6c 20 74 68 69  73 20 66 75 6e 63 74 69  |.All this functi|
000c4530  6f 6e 20 64 6f 65 73 20  69 73 3a 0a 0a 7b 66 43  |on does is:..{fC|
000c4540  6f 64 65 3b 61 6c 69 67  6e 20 63 65 6e 74 72 65  |ode;align centre|
000c4550  7d 3c 45 76 65 6e 74 5f  43 6c 61 69 6d 3e 28 65  |}<Event_Claim>(e|
000c4560  76 65 6e 74 5f 55 53 45  52 4d 45 53 53 41 47 45  |vent_USERMESSAGE|
000c4570  52 45 43 4f 52 44 45 44  2c 20 77 69 6e 2c 20 69  |RECORDED, win, i|
000c4580  63 6f 6e 2c 20 3c 57 69  6e 64 6f 77 5f 48 65 6c  |con, <Window_Hel|
000c4590  70 48 61 6e 64 6c 65 72  3e 2c 20 3c 4e 55 4c 4c  |pHandler>, <NULL|
000c45a0  3e 29 3b 00 44 41 54 41  68 02 00 00 77 69 6e 64  |>);.DATAh...wind|
000c45b0  6f 77 5f 62 6c 6f 63 6b  0a 54 68 69 73 20 74 79  |ow_block.This ty|
000c45c0  70 65 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |pe is defined in|
000c45d0  20 3c 44 65 73 6b 4c 69  62 3a 57 69 6d 70 2e 68  | <DeskLib:Wimp.h|
000c45e0  3d 3e 57 69 6d 70 3e 2e  20 49 74 20 69 73 20 61  |=>Wimp>. It is a|
000c45f0  20 73 74 72 75 63 74 75  72 65 20 68 6f 6c 64 69  | structure holdi|
000c4600  6e 67 20 61 20 63 6f 6d  70 6c 65 74 65 20 77 69  |ng a complete wi|
000c4610  6e 64 6f 77 20 64 65 66  69 6e 69 74 69 6f 6e 20  |ndow definition |
000c4620  28 65 78 63 65 70 74 20  66 6f 72 20 74 68 65 20  |(except for the |
000c4630  69 63 6f 6e 73 29 20 61  73 20 75 73 65 64 20 62  |icons) as used b|
000c4640  79 20 3c 57 69 6d 70 5f  43 72 65 61 74 65 57 69  |y <Wimp_CreateWi|
000c4650  6e 64 6f 77 3e 3a 0a 0a  20 20 20 5c 7b 0a 20 20  |ndow>:..   \{.  |
000c4660  20 20 20 3c 77 69 6d 70  5f 62 6f 78 3e 09 09 73  |   <wimp_box>..s|
000c4670  63 72 65 65 6e 72 65 63  74 3b 0a 20 20 20 20 20  |creenrect;.     |
000c4680  3c 77 69 6d 70 5f 70 6f  69 6e 74 3e 09 73 63 72  |<wimp_point>.scr|
000c4690  6f 6c 6c 3b 0a 20 20 20  20 20 3c 77 69 6e 64 6f  |oll;.     <windo|
000c46a0  77 5f 68 61 6e 64 6c 65  3e 09 62 65 68 69 6e 64  |w_handle>.behind|
000c46b0  3b 0a 20 20 20 20 20 3c  77 69 6e 64 6f 77 5f 66  |;.     <window_f|
000c46c0  6c 61 67 73 3e 09 66 6c  61 67 73 3b 0a 20 20 20  |lags>.flags;.   |
000c46d0  20 20 63 68 61 72 09 09  63 6f 6c 6f 75 72 73 5b  |  char..colours[|
000c46e0  38 5d 3b 0a 20 20 20 20  20 3c 77 69 6d 70 5f 62  |8];.     <wimp_b|
000c46f0  6f 78 3e 09 09 77 6f 72  6b 61 72 65 61 72 65 63  |ox>..workarearec|
000c4700  74 3b 0a 20 20 20 20 20  3c 69 63 6f 6e 5f 66 6c  |t;.     <icon_fl|
000c4710  61 67 73 3e 09 74 69 74  6c 65 66 6c 61 67 73 3b  |ags>.titleflags;|
000c4720  0a 20 20 20 20 20 69 63  6f 6e 5f 66 6c 61 67 73  |.     icon_flags|
000c4730  09 09 77 6f 72 6b 66 6c  61 67 73 3b 0a 20 20 20  |..workflags;.   |
000c4740  20 20 76 6f 69 64 09 09  2a 73 70 72 69 74 65 61  |  void..*spritea|
000c4750  72 65 61 3b 0a 20 20 20  20 20 3c 77 69 6e 64 6f  |rea;.     <windo|
000c4760  77 5f 6d 69 6e 73 69 7a  65 3e 09 6d 69 6e 73 69  |w_minsize>.minsi|
000c4770  7a 65 3b 0a 20 20 20 20  20 3c 69 63 6f 6e 5f 64  |ze;.     <icon_d|
000c4780  61 74 61 3e 09 74 69 74  6c 65 3b 0a 20 20 20 20  |ata>.title;.    |
000c4790  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 09 6e 75  | unsigned int.nu|
000c47a0  6d 69 63 6f 6e 73 3b 0a  20 20 20 7d 0a 0a 49 6d  |micons;.   }..Im|
000c47b0  6d 65 64 69 61 74 65 6c  79 20 61 66 74 65 72 20  |mediately after |
000c47c0  74 68 69 73 20 69 6e 20  6d 65 6d 6f 72 79 20 61  |this in memory a|
000c47d0  72 65 20 70 6c 61 63 65  64 20 74 68 65 20 69 63  |re placed the ic|
000c47e0  6f 6e 20 64 65 66 69 6e  69 74 69 6f 6e 73 20 61  |on definitions a|
000c47f0  73 20 61 20 73 65 72 69  65 73 20 6f 66 20 3c 69  |s a series of <i|
000c4800  63 6f 6e 5f 62 6c 6f 63  6b 3e 73 2e 44 41 54 41  |con_block>s.DATA|
000c4810  27 01 00 00 77 69 6e 64  6f 77 5f 63 6f 6c 6f 75  |'...window_colou|
000c4820  72 69 6e 64 69 63 65 73  0a 54 68 69 73 20 65 6e  |rindices.This en|
000c4830  75 6d 65 72 61 74 65 64  20 74 79 70 65 20 69 73  |umerated type is|
000c4840  20 64 65 66 69 6e 65 64  20 69 6e 20 3c 44 65 73  | defined in <Des|
000c4850  6b 4c 69 62 3a 57 69 6d  70 2e 68 3d 3e 57 69 6d  |kLib:Wimp.h=>Wim|
000c4860  70 3e 20 61 73 20 66 6f  6c 6c 6f 77 73 3a 0a 0a  |p> as follows:..|
000c4870  20 20 5c 7b 0a 20 20 20  20 20 77 69 6e 64 6f 77  |  \{.     window|
000c4880  63 6f 6c 5f 54 49 54 4c  45 46 4f 52 45 20 3d 20  |col_TITLEFORE = |
000c4890  30 2c 0a 20 20 20 20 20  77 69 6e 64 6f 77 63 6f  |0,.     windowco|
000c48a0  6c 5f 54 49 54 4c 45 42  41 43 4b 2c 0a 20 20 20  |l_TITLEBACK,.   |
000c48b0  20 20 77 69 6e 64 6f 77  63 6f 6c 5f 57 4f 52 4b  |  windowcol_WORK|
000c48c0  46 4f 52 45 2c 0a 20 20  20 20 20 77 69 6e 64 6f  |FORE,.     windo|
000c48d0  77 63 6f 6c 5f 57 4f 52  4b 42 41 43 4b 2c 0a 20  |wcol_WORKBACK,. |
000c48e0  20 20 20 20 77 69 6e 64  6f 77 63 6f 6c 5f 53 43  |    windowcol_SC|
000c48f0  52 4f 4c 4c 42 41 43 4b  2c 0a 20 20 20 20 20 77  |ROLLBACK,.     w|
000c4900  69 6e 64 6f 77 63 6f 6c  5f 53 43 52 4f 4c 4c 46  |indowcol_SCROLLF|
000c4910  4f 52 45 2c 0a 20 20 20  20 20 77 69 6e 64 6f 77  |ORE,.     window|
000c4920  63 6f 6c 5f 54 49 54 4c  45 48 49 4c 49 54 45 0a  |col_TITLEHILITE.|
000c4930  20 20 7d 00 44 41 54 41  88 01 00 00 57 69 6e 64  |  }.DATA....Wind|
000c4940  6f 77 5f 43 72 65 61 74  65 0a 53 79 6e 74 61 78  |ow_Create.Syntax|
000c4950  3a 09 3c 77 69 6e 64 6f  77 5f 68 61 6e 64 6c 65  |:.<window_handle|
000c4960  3e 20 57 69 6e 64 6f 77  5f 43 72 65 61 74 65 20  |> Window_Create |
000c4970  28 63 68 61 72 20 2a 6e  61 6d 65 2c 20 69 6e 74  |(char *name, int|
000c4980  20 6d 61 78 74 69 74 6c  65 73 69 7a 65 29 3b 0a  | maxtitlesize);.|
000c4990  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
000c49a0  3a 57 69 6e 64 6f 77 2e  68 3d 3e 57 69 6e 64 6f  |:Window.h=>Windo|
000c49b0  77 3e 0a 0a 52 65 74 75  72 6e 73 3a 09 57 69 6e  |w>..Returns:.Win|
000c49c0  64 6f 77 20 68 61 6e 64  6c 65 20 6f 66 20 6e 65  |dow handle of ne|
000c49d0  77 20 77 69 6e 64 6f 77  2e 0a 0a 54 68 69 73 20  |w window...This |
000c49e0  66 75 6e 63 74 69 6f 6e  20 66 69 6e 64 73 20 74  |function finds t|
000c49f0  68 65 20 6e 61 6d 65 64  20 77 69 6e 64 6f 77 20  |he named window |
000c4a00  74 65 6d 70 6c 61 74 65  20 28 6c 6f 61 64 65 64  |template (loaded|
000c4a10  20 77 69 74 68 20 3c 54  65 6d 70 6c 61 74 65 5f  | with <Template_|
000c4a20  4c 6f 61 64 46 69 6c 65  3e 29 20 61 6e 64 20 63  |LoadFile>) and c|
000c4a30  72 65 61 74 65 73 20 61  20 63 6f 70 79 20 6f 66  |reates a copy of|
000c4a40  20 74 68 65 20 77 69 6e  64 6f 77 20 77 68 69 63  | the window whic|
000c4a50  68 20 69 74 20 74 68 65  6e 20 70 61 73 73 65 73  |h it then passes|
000c4a60  20 74 6f 20 74 68 65 20  77 69 6d 70 20 75 73 69  | to the wimp usi|
000c4a70  6e 67 20 3c 57 69 6d 70  5f 43 72 65 61 74 65 57  |ng <Wimp_CreateW|
000c4a80  69 6e 64 6f 77 3e 2e 20  46 6f 72 20 64 65 74 61  |indow>. For deta|
000c4a90  69 6c 73 20 6f 66 20 2f  6d 61 78 74 69 74 6c 65  |ils of /maxtitle|
000c4aa0  73 69 7a 65 2f 2c 20 73  65 65 20 3c 54 65 6d 70  |size/, see <Temp|
000c4ab0  6c 61 74 65 5f 43 6c 6f  6e 65 3e 2e 44 41 54 41  |late_Clone>.DATA|
000c4ac0  fa 00 00 00 57 69 6e 64  6f 77 5f 43 72 65 61 74  |....Window_Creat|
000c4ad0  65 41 6e 64 53 68 6f 77  0a 53 79 6e 74 61 78 3a  |eAndShow.Syntax:|
000c4ae0  09 3c 77 69 6e 64 6f 77  5f 68 61 6e 64 6c 65 3e  |.<window_handle>|
000c4af0  20 57 69 6e 64 6f 77 5f  43 72 65 61 74 65 41 6e  | Window_CreateAn|
000c4b00  64 53 68 6f 77 20 28 63  68 61 72 20 2a 6e 61 6d  |dShow (char *nam|
000c4b10  65 2c 20 69 6e 74 20 6d  61 78 74 69 74 6c 65 73  |e, int maxtitles|
000c4b20  69 7a 65 2c 20 3c 77 69  6e 64 6f 77 5f 6f 70 65  |ize, <window_ope|
000c4b30  6e 70 6f 73 3e 20 70 6f  73 29 3b 0a 48 65 61 64  |npos> pos);.Head|
000c4b40  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 57 69 6e  |er:.<DeskLib:Win|
000c4b50  64 6f 77 2e 68 3d 3e 57  69 6e 64 6f 77 3e 0a 0a  |dow.h=>Window>..|
000c4b60  52 65 74 75 72 6e 73 3a  09 4e 65 77 20 77 69 6e  |Returns:.New win|
000c4b70  64 6f 77 20 68 61 6e 64  6c 65 2e 0a 0a 54 68 69  |dow handle...Thi|
000c4b80  73 20 66 75 6e 63 74 69  6f 6e 20 63 6f 6d 62 69  |s function combi|
000c4b90  6e 65 73 20 3c 57 69 6e  64 6f 77 5f 43 72 65 61  |nes <Window_Crea|
000c4ba0  74 65 3e 20 61 6e 64 20  3c 57 69 6e 64 6f 77 5f  |te> and <Window_|
000c4bb0  53 68 6f 77 3e 2e 00 00  44 41 54 41 4e 01 00 00  |Show>...DATAN...|
000c4bc0  57 69 6e 64 6f 77 5f 44  65 6c 65 74 65 0a 53 79  |Window_Delete.Sy|
000c4bd0  6e 74 61 78 3a 09 76 6f  69 64 20 57 69 6e 64 6f  |ntax:.void Windo|
000c4be0  77 5f 44 65 6c 65 74 65  20 28 3c 77 69 6e 64 6f  |w_Delete (<windo|
000c4bf0  77 5f 68 61 6e 64 6c 65  3e 20 77 69 6e 29 3b 0a  |w_handle> win);.|
000c4c00  48 65 61 64 65 72 3a 09  3c 44 65 73 6b 4c 69 62  |Header:.<DeskLib|
000c4c10  3a 57 69 6e 64 6f 77 2e  68 3d 3e 57 69 6e 64 6f  |:Window.h=>Windo|
000c4c20  77 3e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |w>..This functio|
000c4c30  6e 20 64 65 6c 65 74 65  73 20 61 6e 79 20 77 69  |n deletes any wi|
000c4c40  6e 64 6f 77 2e 20 49 66  20 74 68 65 20 77 69 6e  |ndow. If the win|
000c4c50  64 6f 77 20 77 61 73 20  63 72 65 61 74 65 64 20  |dow was created |
000c4c60  77 69 74 68 20 3c 57 69  6e 64 6f 77 5f 43 72 65  |with <Window_Cre|
000c4c70  61 74 65 3e 2c 20 74 68  65 6e 20 74 68 65 20 6d  |ate>, then the m|
000c4c80  65 6d 6f 72 79 20 75 73  65 64 20 62 79 20 74 68  |emory used by th|
000c4c90  65 20 77 69 6e 64 6f 77  20 69 73 20 66 72 65 65  |e window is free|
000c4ca0  64 2e 20 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |d. This function|
000c4cb0  20 61 6c 73 6f 20 72 65  6d 6f 76 65 73 20 61 6e  | also removes an|
000c4cc0  79 20 45 76 65 6e 74 20  68 61 6e 64 6c 65 72 20  |y Event handler |
000c4cd0  61 74 74 61 63 68 65 64  20 74 6f 20 74 68 65 20  |attached to the |
000c4ce0  77 69 6e 64 6f 77 20 28  73 65 65 20 3c 44 65 73  |window (see <Des|
000c4cf0  6b 4c 69 62 3a 45 76 65  6e 74 2e 68 3d 3e 45 76  |kLib:Event.h=>Ev|
000c4d00  65 6e 74 3e 29 2e 00 00  44 41 54 41 16 01 00 00  |ent>)...DATA....|
000c4d10  57 69 6e 64 6f 77 5f 44  65 6c 65 74 65 49 6e 63  |Window_DeleteInc|
000c4d20  4d 65 6e 75 73 0a 53 79  6e 74 61 78 3a 09 76 6f  |Menus.Syntax:.vo|
000c4d30  69 64 20 57 69 6e 64 6f  77 5f 44 65 6c 65 74 65  |id Window_Delete|
000c4d40  49 6e 63 4d 65 6e 75 73  20 28 3c 77 69 6e 64 6f  |IncMenus (<windo|
000c4d50  77 5f 68 61 6e 64 6c 65  3e 20 77 69 6e 29 3b 0a  |w_handle> win);.|
000c4d60  48 65 61 64 65 72 3a 09  3c 54 69 6d 73 4c 69 62  |Header:.<TimsLib|
000c4d70  3a 57 69 6e 64 6f 77 2e  68 3d 3e 57 69 6e 64 6f  |:Window.h=>Windo|
000c4d80  77 5f 54 4c 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |w_TL>..This func|
000c4d90  74 69 6f 6e 20 64 65 74  61 63 68 65 73 20 61 6c  |tion detaches al|
000c4da0  6c 20 6d 65 6e 75 73 20  66 72 6f 6d 20 74 68 65  |l menus from the|
000c4db0  20 67 69 76 65 6e 20 77  69 6e 64 6f 77 20 61 6e  | given window an|
000c4dc0  64 20 74 68 65 6e 20 64  65 6c 65 74 65 73 20 74  |d then deletes t|
000c4dd0  68 65 20 77 69 6e 64 6f  77 2e 20 49 74 20 64 6f  |he window. It do|
000c4de0  65 73 20 74 68 69 73 20  62 79 20 63 61 6c 6c 69  |es this by calli|
000c4df0  6e 67 20 3c 4d 65 6e 75  5f 44 65 74 61 63 68 4d  |ng <Menu_DetachM|
000c4e00  65 6e 75 3e 20 61 6e 64  20 74 68 65 6e 20 3c 57  |enu> and then <W|
000c4e10  69 6e 64 6f 77 5f 44 65  6c 65 74 65 3e 2e 00 00  |indow_Delete>...|
000c4e20  44 41 54 41 d4 05 00 00  77 69 6e 64 6f 77 5f 66  |DATA....window_f|
000c4e30  6c 61 67 73 0a 54 68 69  73 20 74 79 70 65 20 69  |lags.This type i|
000c4e40  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 44 65  |s defined in <De|
000c4e50  73 6b 4c 69 62 3a 57 69  6d 70 2e 68 3d 3e 57 69  |skLib:Wimp.h=>Wi|
000c4e60  6d 70 3e 2e 20 49 74 20  70 72 6f 76 69 64 65 73  |mp>. It provides|
000c4e70  20 65 61 73 79 20 61 63  63 65 73 73 20 74 6f 20  | easy access to |
000c4e80  77 69 6e 64 6f 77 20 66  6c 61 67 73 2c 20 62 6f  |window flags, bo|
000c4e90  74 68 20 61 73 20 69 6e  64 69 76 69 64 75 61 6c  |th as individual|
000c4ea0  20 62 69 74 73 20 61 6e  64 20 74 6f 20 74 68 65  | bits and to the|
000c4eb0  69 72 20 6f 76 65 72 61  6c 6c 20 76 61 6c 75 65  |ir overall value|
000c4ec0  2e 20 49 74 20 69 73 20  64 65 66 69 6e 65 64 20  |. It is defined |
000c4ed0  61 73 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |as the following|
000c4ee0  20 75 6e 69 6f 6e 3a 0a  0a 20 20 5c 7b 0a 20 20  | union:..  \{.  |
000c4ef0  20 20 73 74 72 75 63 74  0a 20 20 20 20 5c 7b 0a  |  struct.    \{.|
000c4f00  20 20 20 20 20 20 75 6e  73 69 67 6e 65 64 20 69  |      unsigned i|
000c4f10  6e 74 20 68 61 73 74 69  74 6c 65 09 3a 20 31 3b  |nt hastitle.: 1;|
000c4f20  0a 20 20 20 20 20 20 75  6e 73 69 67 6e 65 64 20  |.      unsigned |
000c4f30  69 6e 74 20 6d 6f 76 65  61 62 6c 65 09 3a 20 31  |int moveable.: 1|
000c4f40  3b 0a 20 20 20 20 20 20  75 6e 73 69 67 6e 65 64  |;.      unsigned|
000c4f50  20 69 6e 74 20 68 61 73  76 73 63 72 6f 6c 6c 09  | int hasvscroll.|
000c4f60  3a 20 31 3b 0a 20 20 20  20 20 20 75 6e 73 69 67  |: 1;.      unsig|
000c4f70  6e 65 64 20 69 6e 74 20  68 61 73 68 73 63 72 6f  |ned int hashscro|
000c4f80  6c 6c 09 3a 20 31 3b 0a  20 20 20 20 20 20 75 6e  |ll.: 1;.      un|
000c4f90  73 69 67 6e 65 64 20 69  6e 74 20 61 75 74 6f 72  |signed int autor|
000c4fa0  65 64 72 61 77 09 3a 20  31 3b 0a 20 20 20 20 20  |edraw.: 1;.     |
000c4fb0  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 70 61  | unsigned int pa|
000c4fc0  6e 65 09 3a 20 31 3b 0a  20 20 20 20 20 20 75 6e  |ne.: 1;.      un|
000c4fd0  73 69 67 6e 65 64 20 69  6e 74 20 6e 6f 62 6f 75  |signed int nobou|
000c4fe0  6e 64 73 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |nds.: 1;.      u|
000c4ff0  6e 73 69 67 6e 65 64 20  69 6e 74 20 6e 6f 62 61  |nsigned int noba|
000c5000  63 6b 63 6c 6f 73 65 09  3a 20 31 3b 20 0a 20 20  |ckclose.: 1; .  |
000c5010  20 20 20 20 75 6e 73 69  67 6e 65 64 20 69 6e 74  |    unsigned int|
000c5020  20 73 63 72 6f 6c 6c 72  71 09 3a 20 31 3b 0a 20  | scrollrq.: 1;. |
000c5030  20 20 20 20 20 75 6e 73  69 67 6e 65 64 20 69 6e  |     unsigned in|
000c5040  74 20 73 63 72 6f 6c 6c  72 71 64 65 62 6f 75 6e  |t scrollrqdeboun|
000c5050  63 65 64 20 3a 20 31 3b  0a 20 20 20 20 20 20 75  |ced : 1;.      u|
000c5060  6e 73 69 67 6e 65 64 20  69 6e 74 20 72 65 61 6c  |nsigned int real|
000c5070  63 6f 6c 6f 75 72 73 09  3a 20 31 3b 0a 20 20 20  |colours.: 1;.   |
000c5080  20 20 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |   unsigned int |
000c5090  62 61 63 6b 77 69 6e 64  6f 77 09 3a 20 31 3b 0a  |backwindow.: 1;.|
000c50a0  20 20 20 20 20 20 75 6e  73 69 67 6e 65 64 20 69  |      unsigned i|
000c50b0  6e 74 20 68 6f 74 6b 65  79 73 09 3a 20 31 3b 0a  |nt hotkeys.: 1;.|
000c50c0  20 20 20 20 20 20 75 6e  73 69 67 6e 65 64 20 69  |      unsigned i|
000c50d0  6e 74 20 6b 65 65 70 6f  6e 73 63 72 65 65 6e 09  |nt keeponscreen.|
000c50e0  3a 20 31 3b 0a 20 20 20  20 20 20 75 6e 73 69 67  |: 1;.      unsig|
000c50f0  6e 65 64 20 69 6e 74 20  69 67 6e 6f 72 65 72 69  |ned int ignoreri|
000c5100  67 68 74 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |ght.: 1;.      u|
000c5110  6e 73 69 67 6e 65 64 20  69 6e 74 20 69 67 6e 6f  |nsigned int igno|
000c5120  72 65 62 6f 74 74 6f 6d  09 3a 20 31 3b 0a 20 20  |rebottom.: 1;.  |
000c5130  20 20 20 20 75 6e 73 69  67 6e 65 64 20 69 6e 74  |    unsigned int|
000c5140  20 6f 70 65 6e 09 3a 20  31 3b 0a 20 20 20 20 20  | open.: 1;.     |
000c5150  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 74 6f  | unsigned int to|
000c5160  70 09 3a 20 31 3b 0a 20  20 20 20 20 20 75 6e 73  |p.: 1;.      uns|
000c5170  69 67 6e 65 64 20 69 6e  74 20 66 75 6c 6c 73 69  |igned int fullsi|
000c5180  7a 65 09 3a 20 31 3b 0a  20 20 20 20 20 20 75 6e  |ze.: 1;.      un|
000c5190  73 69 67 6e 65 64 20 69  6e 74 20 69 73 74 6f 67  |signed int istog|
000c51a0  67 6c 69 6e 67 09 3a 20  31 3b 0a 20 20 20 20 20  |gling.: 1;.     |
000c51b0  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 66 6f  | unsigned int fo|
000c51c0  63 75 73 09 3a 20 31 3b  0a 20 20 20 20 20 20 75  |cus.: 1;.      u|
000c51d0  6e 73 69 67 6e 65 64 20  69 6e 74 20 66 6f 72 63  |nsigned int forc|
000c51e0  65 6f 6e 63 65 09 3a 20  31 3b 0a 20 20 20 20 20  |eonce.: 1;.     |
000c51f0  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 64 75  | unsigned int du|
000c5200  6d 6d 79 32 32 09 3a 20  31 3b 0a 20 20 20 20 20  |mmy22.: 1;.     |
000c5210  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 64 75  | unsigned int du|
000c5220  6d 6d 79 32 33 09 3a 20  31 3b 0a 20 20 20 20 20  |mmy23.: 1;.     |
000c5230  20 75 6e 73 69 67 6e 65  64 20 69 6e 74 20 62 61  | unsigned int ba|
000c5240  63 6b 69 63 6f 6e 09 3a  20 31 3b 0a 20 20 20 20  |ckicon.: 1;.    |
000c5250  20 20 75 6e 73 69 67 6e  65 64 20 69 6e 74 20 63  |  unsigned int c|
000c5260  6c 6f 73 65 69 63 6f 6e  09 3a 20 31 3b 0a 20 20  |loseicon.: 1;.  |
000c5270  20 20 20 20 75 6e 73 69  67 6e 65 64 20 69 6e 74  |    unsigned int|
000c5280  20 74 69 74 6c 65 62 61  72 09 3a 20 31 3b 0a 20  | titlebar.: 1;. |
000c5290  20 20 20 20 20 75 6e 73  69 67 6e 65 64 20 69 6e  |     unsigned in|
000c52a0  74 20 74 6f 67 67 6c 65  69 63 6f 6e 09 3a 20 31  |t toggleicon.: 1|
000c52b0  3b 0a 20 20 20 20 20 20  75 6e 73 69 67 6e 65 64  |;.      unsigned|
000c52c0  20 69 6e 74 20 76 73 63  72 6f 6c 6c 09 3a 20 31  | int vscroll.: 1|
000c52d0  3b 0a 20 20 20 20 20 20  75 6e 73 69 67 6e 65 64  |;.      unsigned|
000c52e0  20 69 6e 74 20 61 64 6a  75 73 74 69 63 6f 6e 09  | int adjusticon.|
000c52f0  3a 20 31 3b 0a 20 20 20  20 20 20 75 6e 73 69 67  |: 1;.      unsig|
000c5300  6e 65 64 20 69 6e 74 20  68 73 63 72 6f 6c 6c 09  |ned int hscroll.|
000c5310  3a 20 31 3b 0a 20 20 20  20 20 20 75 6e 73 69 67  |: 1;.      unsig|
000c5320  6e 65 64 20 69 6e 74 20  6e 65 77 66 6c 61 67 73  |ned int newflags|
000c5330  09 3a 20 31 3b 0a 20 20  20 20 7d 20 64 61 74 61  |.: 1;.    } data|
000c5340  3b 0a 20 20 20 20 69 6e  74 20 76 61 6c 75 65 3b  |;.    int value;|
000c5350  0a 20 20 7d 0a 0a 4e 6f  74 65 20 74 68 61 74 20  |.  }..Note that |
000c5360  7b 2f 7d 64 61 74 61 2e  6e 65 77 66 6c 61 67 73  |{/}data.newflags|
000c5370  7b 2f 7d 20 73 68 6f 75  6c 64 20 61 6c 77 61 79  |{/} should alway|
000c5380  73 20 62 65 20 3c 54 52  55 45 3e 2c 20 61 6e 64  |s be <TRUE>, and|
000c5390  20 7b 2f 7d 64 61 74 61  2e 68 61 73 74 69 74 6c  | {/}data.hastitl|
000c53a0  65 7b 2f 7d 2c 20 2f 68  61 73 76 73 63 72 6f 6c  |e{/}, /hasvscrol|
000c53b0  6c 2f 2c 20 2f 68 61 73  68 73 63 72 6f 6c 6c 2f  |l/, /hashscroll/|
000c53c0  2c 20 61 6e 64 20 2f 6e  6f 62 61 63 6b 63 6c 6f  |, and /nobackclo|
000c53d0  73 65 2f 20 73 68 6f 75  6c 64 20 6e 6f 74 20 62  |se/ should not b|
000c53e0  65 20 75 73 65 64 20 69  6e 20 74 68 61 74 20 63  |e used in that c|
000c53f0  61 73 65 2e 44 41 54 41  d6 00 00 00 57 69 6e 64  |ase.DATA....Wind|
000c5400  6f 77 5f 46 6f 72 63 65  43 6f 6d 70 6c 65 74 65  |ow_ForceComplete|
000c5410  52 65 64 72 61 77 0a 53  79 6e 74 61 78 3a 09 76  |Redraw.Syntax:.v|
000c5420  6f 69 64 20 57 69 6e 64  6f 77 5f 46 6f 72 63 65  |oid Window_Force|
000c5430  43 6f 6d 70 6c 65 74 65  52 65 64 72 61 77 20 28  |CompleteRedraw (|
000c5440  3c 77 69 6e 64 6f 77 5f  68 61 6e 64 6c 65 3e 20  |<window_handle> |
000c5450  77 69 6e 64 6f 77 29 3b  0a 48 65 61 64 65 72 3a  |window);.Header:|
000c5460  09 3c 54 69 6d 73 4c 69  62 3a 57 69 6e 64 6f 77  |.<TimsLib:Window|
000c5470  2e 68 3d 3e 57 69 6e 64  6f 77 5f 54 4c 3e 0a 0a  |.h=>Window_TL>..|
000c5480  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 66 6f  |This function fo|
000c5490  72 63 65 73 20 61 20 72  65 64 72 61 77 20 6f 66  |rces a redraw of|
000c54a0  20 74 68 65 20 65 6e 74  69 72 65 20 77 6f 72 6b  | the entire work|
000c54b0  20 61 72 65 61 20 6f 66  20 74 68 65 20 67 69 76  | area of the giv|
000c54c0  65 6e 20 77 69 6e 64 6f  77 2e 00 00 44 41 54 41  |en window...DATA|
000c54d0  6f 01 00 00 57 69 6e 64  6f 77 5f 47 65 74 49 6e  |o...Window_GetIn|
000c54e0  66 6f 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |fo.Syntax:.void |
000c54f0  57 69 6e 64 6f 77 5f 47  65 74 49 6e 66 6f 20 28  |Window_GetInfo (|
000c5500  3c 77 69 6e 64 6f 77 5f  68 61 6e 64 6c 65 3e 20  |<window_handle> |
000c5510  77 69 6e 2c 20 3c 77 69  6e 64 6f 77 5f 69 6e 66  |win, <window_inf|
000c5520  6f 3e 20 2a 72 65 73 29  3b 0a 48 65 61 64 65 72  |o> *res);.Header|
000c5530  3a 09 3c 44 65 73 6b 4c  69 62 3a 57 69 6e 64 6f  |:.<DeskLib:Windo|
000c5540  77 2e 68 3d 3e 57 69 6e  64 6f 77 3e 0a 0a 54 68  |w.h=>Window>..Th|
000c5550  69 73 20 66 75 6e 63 74  69 6f 6e 20 69 73 20 73  |is function is s|
000c5560  69 6d 70 6c 79 20 61 20  66 72 6f 6e 74 20 65 6e  |imply a front en|
000c5570  64 20 74 6f 20 3c 57 69  6d 70 5f 47 65 74 57 69  |d to <Wimp_GetWi|
000c5580  6e 64 6f 77 49 6e 66 6f  3e 2e 20 48 6f 77 65 76  |ndowInfo>. Howev|
000c5590  65 72 2c 20 6e 6f 20 69  63 6f 6e 20 64 65 66 69  |er, no icon defi|
000c55a0  6e 69 74 69 6f 6e 73 20  61 72 65 20 72 65 74 75  |nitions are retu|
000c55b0  72 6e 65 64 2e 20 54 68  65 20 77 69 6e 64 6f 77  |rned. The window|
000c55c0  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 69 73 20  | information is |
000c55d0  70 6c 61 63 65 64 20 69  6e 20 74 68 65 20 62 6c  |placed in the bl|
000c55e0  6f 63 6b 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |ock pointed to b|
000c55f0  65 20 2f 72 65 73 2f 2e  0a 0a 4f 6e 20 52 49 53  |e /res/...On RIS|
000c5600  43 20 4f 53 20 33 20 79  6f 75 20 73 68 6f 75 6c  |C OS 3 you shoul|
000c5610  64 20 75 73 65 20 74 68  65 20 62 65 74 74 65 72  |d use the better|
000c5620  20 3c 57 69 6e 64 6f 77  5f 47 65 74 49 6e 66 6f  | <Window_GetInfo|
000c5630  33 3e 20 69 6e 73 74 65  61 64 2e 00 44 41 54 41  |3> instead..DATA|
000c5640  82 00 00 00 77 69 6e 64  6f 77 5f 68 61 6e 64 6c  |....window_handl|
000c5650  65 0a 54 68 69 73 20 74  79 70 65 20 69 73 20 64  |e.This type is d|
000c5660  65 66 69 6e 65 64 20 69  6e 20 3c 44 65 73 6b 4c  |efined in <DeskL|
000c5670  69 62 3a 57 69 6d 70 2e  68 3d 3e 57 69 6d 70 3e  |ib:Wimp.h=>Wimp>|
000c5680  20 61 73 20 61 20 74 79  70 65 20 68 6f 6c 64 69  | as a type holdi|
000c5690  6e 67 20 61 20 77 69 6e  64 6f 77 20 68 61 6e 64  |ng a window hand|
000c56a0  6c 65 2e 20 49 74 20 69  73 20 64 65 66 69 6e 65  |le. It is define|
000c56b0  64 20 61 73 20 61 6e 20  2f 69 6e 74 2f 2e 00 00  |d as an /int/...|
000c56c0  44 41 54 41 66 02 00 00  57 69 6e 64 6f 77 5f 48  |DATAf...Window_H|
000c56d0  65 6c 70 48 61 6e 64 6c  65 72 0a 53 79 6e 74 61  |elpHandler.Synta|
000c56e0  78 3a 09 3c 42 4f 4f 4c  3e 20 57 69 6e 64 6f 77  |x:.<BOOL> Window|
000c56f0  5f 48 65 6c 70 48 61 6e  64 6c 65 72 20 28 3c 65  |_HelpHandler (<e|
000c5700  76 65 6e 74 5f 70 6f 6c  6c 62 6c 6f 63 6b 3e 20  |vent_pollblock> |
000c5710  2a 65 76 65 6e 74 2c 20  76 6f 69 64 20 2a 72 65  |*event, void *re|
000c5720  66 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |f);.Header:.<Des|
000c5730  6b 4c 69 62 3a 57 69 6e  64 6f 77 2e 68 3d 3e 57  |kLib:Window.h=>W|
000c5740  69 6e 64 6f 77 3e 0a 0a  52 65 74 75 72 6e 73 3a  |indow>..Returns:|
000c5750  09 3c 54 52 55 45 3e 20  69 66 20 61 20 68 65 6c  |.<TRUE> if a hel|
000c5760  70 20 72 65 70 6c 79 20  73 65 6e 74 2e 0a 0a 54  |p reply sent...T|
000c5770  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 69 73 20  |his function is |
000c5780  61 6e 20 65 76 65 6e 74  20 68 61 6e 64 6c 65 72  |an event handler|
000c5790  20 77 68 69 63 68 20 63  61 6e 20 62 65 20 75 73  | which can be us|
000c57a0  65 64 20 77 69 74 68 20  65 69 74 68 65 72 20 3c  |ed with either <|
000c57b0  45 76 65 6e 74 5f 43 6c  61 69 6d 3e 20 6f 72 20  |Event_Claim> or |
000c57c0  3c 45 76 65 6e 74 4d 73  67 5f 43 6c 61 69 6d 3e  |<EventMsg_Claim>|
000c57d0  2e 20 49 74 20 72 65 73  70 6f 6e 64 73 20 74 6f  |. It responds to|
000c57e0  20 48 65 6c 70 52 65 71  75 65 73 74 20 6d 65 73  | HelpRequest mes|
000c57f0  73 61 67 65 73 20 62 79  20 67 65 74 74 69 6e 67  |sages by getting|
000c5800  20 61 20 6d 65 73 73 61  67 65 20 66 72 6f 6d 20  | a message from |
000c5810  79 6f 75 72 20 6d 65 73  73 61 67 65 20 66 69 6c  |your message fil|
000c5820  65 20 28 73 65 65 20 3c  4d 73 67 73 3e 29 2e 20  |e (see <Msgs>). |
000c5830  54 68 65 20 6d 65 73 73  61 67 65 20 74 61 67 20  |The message tag |
000c5840  69 73 20 67 69 76 65 6e  20 61 73 3a 0a 0a 7b 66  |is given as:..{f|
000c5850  43 6f 64 65 7d 20 20 20  20 74 65 6d 70 6c 61 74  |Code}    templat|
000c5860  65 6e 61 6d 65 2e 69 63  6f 6e 6e 75 6d 62 65 72  |ename.iconnumber|
000c5870  7b 66 7d 0a 65 67 2e 0a  7b 66 43 6f 64 65 7d 20  |{f}.eg..{fCode} |
000c5880  20 20 20 69 6e 66 6f 77  69 6e 64 2e 34 0a 20 20  |   infowind.4.  |
000c5890  20 20 6d 61 69 6e 77 69  6e 64 2e 2d 31 7b 66 7d  |  mainwind.-1{f}|
000c58a0  20 20 20 20 20 20 20 20  20 20 20 20 20 28 6e 6f  |             (no|
000c58b0  20 69 63 6f 6e 29 2e 0a  0a 59 6f 75 20 63 61 6e  | icon)...You can|
000c58c0  20 75 73 65 20 61 6e 20  69 63 6f 6e 20 6e 75 6d  | use an icon num|
000c58d0  62 65 72 20 6f 66 20 22  2a 22 20 69 6e 20 74 68  |ber of "*" in th|
000c58e0  65 20 6d 65 73 73 61 67  65 73 20 66 69 6c 65 20  |e messages file |
000c58f0  74 6f 20 72 65 73 70 6f  6e 64 20 74 6f 20 61 6c  |to respond to al|
000c5900  6c 20 68 65 6c 70 20 72  65 71 75 65 73 74 73 20  |l help requests |
000c5910  77 69 74 68 6f 75 74 20  73 70 65 63 69 66 69 63  |without specific|
000c5920  20 68 65 6c 70 2e 00 00  44 41 54 41 0a 01 00 00  | help...DATA....|
000c5930  57 69 6e 64 6f 77 5f 48  69 64 65 0a 53 79 6e 74  |Window_Hide.Synt|
000c5940  61 78 3a 09 76 6f 69 64  20 57 69 6e 64 6f 77 5f  |ax:.void Window_|
000c5950  48 69 64 65 20 28 3c 77  69 6e 64 6f 77 5f 68 61  |Hide (<window_ha|
000c5960  6e 64 6c 65 3e 20 77 69  6e 29 3b 0a 48 65 61 64  |ndle> win);.Head|
000c5970  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 57 69 6e  |er:.<DeskLib:Win|
000c5980  64 6f 77 2e 68 3d 3e 57  69 6e 64 6f 77 3e 0a 0a  |dow.h=>Window>..|
000c5990  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 72 65  |This function re|
000c59a0  6d 6f 76 65 73 20 74 68  65 20 73 70 65 63 69 66  |moves the specif|
000c59b0  69 65 64 20 77 69 6e 64  6f 77 20 66 72 6f 6d 20  |ied window from |
000c59c0  74 68 65 20 64 69 73 70  6c 61 79 2c 20 62 75 74  |the display, but|
000c59d0  20 64 6f 65 73 20 6e 6f  74 20 64 65 6c 65 74 65  | does not delete|
000c59e0  20 69 74 73 20 64 65 66  69 6e 69 74 69 6f 6e 2e  | its definition.|
000c59f0  20 49 74 20 69 73 20 65  71 75 69 76 61 6c 65 6e  | It is equivalen|
000c5a00  74 20 28 61 6e 64 20 69  73 20 69 6e 20 66 61 63  |t (and is in fac|
000c5a10  74 20 61 20 6d 61 63 72  6f 20 66 6f 72 29 20 3c  |t a macro for) <|
000c5a20  57 69 6d 70 5f 43 6c 6f  73 65 57 69 6e 64 6f 77  |Wimp_CloseWindow|
000c5a30  3e 2e 00 00 44 41 54 41  8c 00 00 00 77 69 6e 64  |>...DATA....wind|
000c5a40  6f 77 5f 49 43 4f 4e 42  41 52 0a 54 68 69 73 20  |ow_ICONBAR.This |
000c5a50  6d 61 63 72 6f 20 69 73  20 64 65 66 69 6e 65 64  |macro is defined|
000c5a60  20 69 6e 20 3c 57 69 6d  70 2e 68 3d 3e 57 69 6d  | in <Wimp.h=>Wim|
000c5a70  70 3e 20 61 73 20 61 20  6d 61 63 72 6f 20 63 6f  |p> as a macro co|
000c5a80  6e 74 61 69 6e 69 6e 67  20 74 68 65 20 77 69 6e  |ntaining the win|
000c5a90  64 6f 77 20 68 61 6e 64  6c 65 20 6f 66 20 74 68  |dow handle of th|
000c5aa0  65 20 69 63 6f 6e 20 62  61 72 2e 20 49 74 20 69  |e icon bar. It i|
000c5ab0  73 20 64 65 66 69 6e 65  64 20 61 73 20 2d 32 2e  |s defined as -2.|
000c5ac0  44 41 54 41 e6 00 00 00  77 69 6e 64 6f 77 5f 69  |DATA....window_i|
000c5ad0  6e 66 6f 0a 54 68 69 73  20 74 79 70 65 20 69 73  |nfo.This type is|
000c5ae0  20 64 65 66 69 6e 65 64  20 62 79 20 3c 44 65 73  | defined by <Des|
000c5af0  6b 4c 69 62 3a 57 69 6d  70 2e 68 3d 3e 57 69 6d  |kLib:Wimp.h=>Wim|
000c5b00  70 3e 2e 20 49 74 20 69  73 20 61 20 73 74 72 75  |p>. It is a stru|
000c5b10  63 74 75 72 65 20 68 6f  6c 64 69 6e 67 20 77 69  |cture holding wi|
000c5b20  6e 64 6f 77 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |ndow information|
000c5b30  20 61 73 20 72 65 74 75  72 6e 65 64 20 62 79 20  | as returned by |
000c5b40  74 68 65 20 66 75 6e 63  74 69 6f 6e 20 3c 57 69  |the function <Wi|
000c5b50  6d 70 5f 47 65 74 57 69  6e 64 6f 77 49 6e 66 6f  |mp_GetWindowInfo|
000c5b60  3e 2e 0a 0a 20 20 20 5c  7b 0a 20 20 20 20 20 3c  |>...   \{.     <|
000c5b70  77 69 6e 64 6f 77 5f 68  61 6e 64 6c 65 3e 09 77  |window_handle>.w|
000c5b80  69 6e 64 6f 77 3b 0a 20  20 20 20 20 3c 77 69 6e  |indow;.     <win|
000c5b90  64 6f 77 5f 62 6c 6f 63  6b 3e 09 62 6c 6f 63 6b  |dow_block>.block|
000c5ba0  3b 0a 20 20 20 7d 00 00  44 41 54 41 cf 00 00 00  |;.   }..DATA....|
000c5bb0  77 69 6e 64 6f 77 5f 6d  69 6e 73 69 7a 65 0a 54  |window_minsize.T|
000c5bc0  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
000c5bd0  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
000c5be0  57 69 6d 70 2e 68 3d 3e  57 69 6d 70 3e 2e 20 49  |Wimp.h=>Wimp>. I|
000c5bf0  74 20 69 73 20 61 20 73  74 72 75 63 74 75 72 65  |t is a structure|
000c5c00  20 68 6f 6c 64 69 6e 67  20 74 68 65 20 6d 69 6e  | holding the min|
000c5c10  69 6d 75 6d 20 77 69 64  74 68 2f 68 65 69 67 68  |imum width/heigh|
000c5c20  74 20 6f 66 20 74 68 65  20 77 69 6e 64 6f 77 20  |t of the window |
000c5c30  61 73 20 31 36 2d 62 69  74 20 69 6e 74 65 67 65  |as 16-bit intege|
000c5c40  72 73 3a 0a 0a 20 20 20  20 5c 7b 0a 20 20 20 20  |rs:..    \{.    |
000c5c50  20 20 20 69 6e 74 20 78  20 3a 20 31 36 3b 0a 20  |   int x : 16;. |
000c5c60  20 20 20 20 20 20 69 6e  74 20 79 20 3a 20 31 36  |      int y : 16|
000c5c70  3b 0a 20 20 20 20 7d 00  44 41 54 41 79 01 00 00  |;.    }.DATAy...|
000c5c80  57 69 6e 64 6f 77 5f 4d  6f 64 65 43 68 61 6e 67  |Window_ModeChang|
000c5c90  65 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 57  |e.Syntax:.void W|
000c5ca0  69 6e 64 6f 77 5f 4d 6f  64 65 43 68 61 6e 67 65  |indow_ModeChange|
000c5cb0  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
000c5cc0  09 3c 44 65 73 6b 4c 69  62 3a 57 69 6e 64 6f 77  |.<DeskLib:Window|
000c5cd0  2e 68 3d 3e 57 69 6e 64  6f 77 3e 0a 0a 54 68 69  |.h=>Window>..Thi|
000c5ce0  73 20 66 75 6e 63 74 69  6f 6e 20 77 69 6c 6c 20  |s function will |
000c5cf0  67 6f 20 74 68 72 6f 75  67 68 20 61 6c 6c 20 6f  |go through all o|
000c5d00  66 20 79 6f 75 72 20 74  65 6d 70 6c 61 74 65 73  |f your templates|
000c5d10  20 28 77 68 69 63 68 20  6d 75 73 74 20 41 4c 4c  | (which must ALL|
000c5d20  20 68 61 76 65 20 62 65  65 6e 20 63 72 65 61 74  | have been creat|
000c5d30  65 64 20 75 73 69 6e 67  20 3c 57 69 6e 64 6f 77  |ed using <Window|
000c5d40  5f 43 72 65 61 74 65 3e  29 20 61 6e 64 20 72 65  |_Create>) and re|
000c5d50  2d 66 69 6e 64 20 74 68  65 20 6f 75 74 6c 69 6e  |-find the outlin|
000c5d60  65 20 66 6f 6e 74 73 2e  20 54 68 69 73 20 6e 65  |e fonts. This ne|
000c5d70  65 64 73 20 74 6f 20 62  65 20 64 6f 6e 65 20 6f  |eds to be done o|
000c5d80  6e 20 61 20 6d 6f 64 65  20 63 68 61 6e 67 65 2e  |n a mode change.|
000c5d90  20 46 6f 6e 74 73 20 69  6e 20 77 69 6e 64 6f 77  | Fonts in window|
000c5da0  20 74 69 74 6c 65 73 20  61 72 65 20 6e 6f 74 20  | titles are not |
000c5db0  66 69 78 65 64 20 77 69  74 68 20 74 68 69 73 20  |fixed with this |
000c5dc0  66 75 6e 63 74 69 6f 6e  2e 0a 0a 53 65 65 20 74  |function...See t|
000c5dd0  68 65 20 66 75 6e 63 74  69 6f 6e 20 3c 48 61 6e  |he function <Han|
000c5de0  64 6c 65 72 5f 4d 6f 64  65 43 68 61 6e 67 65 3e  |dler_ModeChange>|
000c5df0  2e 00 00 00 44 41 54 41  c6 00 00 00 57 69 6e 64  |....DATA....Wind|
000c5e00  6f 77 5f 4d 6f 76 65 0a  53 79 6e 74 61 78 3a 09  |ow_Move.Syntax:.|
000c5e10  76 6f 69 64 20 57 69 6e  64 6f 77 5f 4d 6f 76 65  |void Window_Move|
000c5e20  20 28 3c 77 69 6e 64 6f  77 5f 68 61 6e 64 6c 65  | (<window_handle|
000c5e30  3e 20 77 69 6e 29 3b 0a  48 65 61 64 65 72 3a 09  |> win);.Header:.|
000c5e40  3c 54 69 6d 73 4c 69 62  3a 57 69 6e 64 6f 77 2e  |<TimsLib:Window.|
000c5e50  68 3d 3e 57 69 6e 64 6f  77 5f 54 4c 3e 0a 0a 54  |h=>Window_TL>..T|
000c5e60  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 61 75  |his function cau|
000c5e70  73 65 73 20 74 68 65 20  77 69 6e 64 6f 77 20 62  |ses the window b|
000c5e80  65 20 62 65 20 64 72 61  67 67 65 64 2c 20 61 73  |e be dragged, as|
000c5e90  20 69 66 20 74 68 65 20  75 73 65 72 20 68 61 64  | if the user had|
000c5ea0  20 64 72 61 67 67 65 64  20 6f 6e 20 74 68 65 20  | dragged on the |
000c5eb0  74 69 74 6c 65 20 62 61  72 2e 00 00 44 41 54 41  |title bar...DATA|
000c5ec0  27 01 00 00 77 69 6e 64  6f 77 5f 6f 70 65 6e 62  |'...window_openb|
000c5ed0  6c 6f 63 6b 0a 54 68 69  73 20 74 79 70 65 20 69  |lock.This type i|
000c5ee0  73 20 64 65 66 69 6e 65  64 20 69 6e 20 3c 44 65  |s defined in <De|
000c5ef0  73 6b 4c 69 62 3a 57 69  6d 70 2e 68 3d 3e 57 69  |skLib:Wimp.h=>Wi|
000c5f00  6d 70 3e 20 61 73 20 61  20 74 79 70 65 20 63 61  |mp> as a type ca|
000c5f10  70 61 62 6c 65 20 6f 66  20 68 6f 6c 64 69 6e 67  |pable of holding|
000c5f20  20 74 68 65 20 64 61 74  61 20 75 73 65 64 20 62  | the data used b|
000c5f30  79 20 3c 57 69 6d 70 5f  4f 70 65 6e 57 69 6e 64  |y <Wimp_OpenWind|
000c5f40  6f 77 3e 2e 20 49 74 20  69 73 20 64 65 66 69 6e  |ow>. It is defin|
000c5f50  65 64 20 61 73 20 74 68  65 20 66 6f 6c 6c 6f 77  |ed as the follow|
000c5f60  69 6e 67 20 73 74 72 75  63 74 75 72 65 3a 0a 0a  |ing structure:..|
000c5f70  20 20 5c 7b 0a 20 20 20  20 3c 77 69 6e 64 6f 77  |  \{.    <window|
000c5f80  5f 68 61 6e 64 6c 65 3e  09 77 69 6e 64 6f 77 3b  |_handle>.window;|
000c5f90  0a 20 20 20 20 3c 77 69  6d 70 5f 62 6f 78 3e 09  |.    <wimp_box>.|
000c5fa0  09 73 63 72 65 65 6e 72  65 63 74 3b 0a 20 20 20  |.screenrect;.   |
000c5fb0  20 3c 77 69 6d 70 5f 70  6f 69 6e 74 3e 09 73 63  | <wimp_point>.sc|
000c5fc0  72 6f 6c 6c 3b 0a 20 20  20 20 77 69 6e 64 6f 77  |roll;.    window|
000c5fd0  5f 68 61 6e 64 6c 65 09  62 65 68 69 6e 64 3b 0a  |_handle.behind;.|
000c5fe0  20 20 7d 00 44 41 54 41  a8 01 00 00 77 69 6e 64  |  }.DATA....wind|
000c5ff0  6f 77 5f 6f 70 65 6e 70  6f 73 0a 54 68 69 73 20  |ow_openpos.This |
000c6000  74 79 70 65 20 69 73 20  64 65 66 69 6e 65 64 20  |type is defined |
000c6010  69 6e 20 3c 44 65 73 6b  4c 69 62 3a 57 69 6e 64  |in <DeskLib:Wind|
000c6020  6f 77 2e 68 3d 3e 57 69  6e 64 6f 77 2e 3e 2e 20  |ow.h=>Window.>. |
000c6030  49 74 20 69 73 20 61 6e  20 65 6e 75 6d 65 72 61  |It is an enumera|
000c6040  74 65 64 20 74 79 70 65  20 75 73 65 64 20 62 79  |ted type used by|
000c6050  20 44 65 73 6b 4c 69 62  20 66 75 6e 63 74 69 6f  | DeskLib functio|
000c6060  6e 73 20 74 6f 20 64 65  63 69 64 65 20 77 68 65  |ns to decide whe|
000c6070  72 65 20 74 6f 20 6f 70  65 6e 20 61 20 77 69 6e  |re to open a win|
000c6080  64 6f 77 3a 0a 7b 77 72  61 70 20 6f 66 66 7d 0a  |dow:.{wrap off}.|
000c6090  5c 7b 0a 20 20 6f 70 65  6e 5f 57 48 45 52 45 56  |\{.  open_WHEREV|
000c60a0  45 52 2c 09 2f 2a 20 41  73 20 73 70 65 63 69 66  |ER,./* As specif|
000c60b0  69 65 64 20 69 6e 20 74  65 6d 70 6c 61 74 65 20  |ied in template |
000c60c0  2a 2f 0a 20 20 6f 70 65  6e 5f 43 45 4e 54 45 52  |*/.  open_CENTER|
000c60d0  45 44 2c 0a 20 20 6f 70  65 6e 5f 43 45 4e 54 45  |ED,.  open_CENTE|
000c60e0  52 45 44 55 4e 44 45 52  50 4f 49 4e 54 45 52 2c  |REDUNDERPOINTER,|
000c60f0  0a 20 20 6f 70 65 6e 5f  4f 56 45 52 43 41 52 45  |.  open_OVERCARE|
000c6100  54 2c 09 2f 2a 20 6f 76  65 72 20 74 68 65 20 63  |T,./* over the c|
000c6110  61 72 65 74 2c 20 66 61  69 6c 69 6e 67 20 74 68  |aret, failing th|
000c6120  61 74 20 74 68 65 6e 20  63 65 6e 74 72 65 64 20  |at then centred |
000c6130  2a 2f 0a 20 20 6f 70 65  6e 5f 55 4e 44 45 52 50  |*/.  open_UNDERP|
000c6140  4f 49 4e 54 45 52 2c 0a  20 20 6f 70 65 6e 5f 4e  |OINTER,.  open_N|
000c6150  45 41 52 4c 41 53 54 09  09 2f 2a 20 53 6c 69 67  |EARLAST../* Slig|
000c6160  68 74 6c 79 20 6f 66 66  73 65 74 20 66 72 6f 6d  |htly offset from|
000c6170  20 74 68 65 20 6c 61 73  74 20 77 69 6e 64 6f 77  | the last window|
000c6180  20 6f 70 65 6e 65 64 20  2a 2f 0a 7d 44 41 54 41  | opened */.}DATA|
000c6190  d9 00 00 00 77 69 6e 64  6f 77 5f 6f 75 74 6c 69  |....window_outli|
000c61a0  6e 65 0a 54 68 69 73 20  74 79 70 65 20 69 73 20  |ne.This type is |
000c61b0  64 65 66 69 6e 65 64 20  69 6e 20 3c 44 65 73 6b  |defined in <Desk|
000c61c0  4c 69 62 3a 57 69 6d 70  2e 68 3d 3e 57 69 6d 70  |Lib:Wimp.h=>Wimp|
000c61d0  3e 20 61 73 20 61 20 73  74 72 75 63 74 75 72 65  |> as a structure|
000c61e0  20 73 75 69 74 61 62 6c  65 20 66 6f 72 20 75 73  | suitable for us|
000c61f0  65 20 77 69 74 68 20 74  68 65 20 66 75 6e 63 74  |e with the funct|
000c6200  69 6f 6e 20 3c 57 69 6d  70 5f 47 65 74 57 69 6e  |ion <Wimp_GetWin|
000c6210  64 6f 77 4f 75 74 6c 69  6e 65 3e 2e 0a 0a 20 20  |dowOutline>...  |
000c6220  20 20 5c 7b 0a 20 20 20  20 20 20 3c 77 69 6e 64  |  \{.      <wind|
000c6230  6f 77 5f 68 61 6e 64 6c  65 3e 09 77 69 6e 64 6f  |ow_handle>.windo|
000c6240  77 3b 0a 20 20 20 20 20  20 3c 77 69 6d 70 5f 62  |w;.      <wimp_b|
000c6250  6f 78 3e 09 73 63 72 65  65 6e 72 65 63 74 3b 0a  |ox>.screenrect;.|
000c6260  20 20 20 20 7d 00 00 00  44 41 54 41 59 01 00 00  |    }...DATAY...|
000c6270  57 69 6e 64 6f 77 5f 50  61 72 65 6e 74 4e 61 6d  |Window_ParentNam|
000c6280  65 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 57  |e.Syntax:.void W|
000c6290  69 6e 64 6f 77 5f 50 61  72 65 6e 74 4e 61 6d 65  |indow_ParentName|
000c62a0  20 28 3c 77 69 6e 64 6f  77 5f 68 61 6e 64 6c 65  | (<window_handle|
000c62b0  3e 20 77 69 6e 2c 20 63  68 61 72 20 2a 6e 61 6d  |> win, char *nam|
000c62c0  65 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |e);.Header:.<Des|
000c62d0  6b 4c 69 62 3a 57 69 6e  64 6f 77 2e 68 3d 3e 57  |kLib:Window.h=>W|
000c62e0  69 6e 64 6f 77 3e 0a 0a  54 68 69 73 20 66 75 6e  |indow>..This fun|
000c62f0  63 74 69 6f 6e 20 66 69  6e 64 73 20 74 68 65 20  |ction finds the |
000c6300  74 65 6d 70 6c 61 74 65  20 6e 61 6d 65 20 66 72  |template name fr|
000c6310  6f 6d 20 77 68 69 63 68  20 74 68 69 73 20 77 69  |om which this wi|
000c6320  6e 64 6f 77 20 77 61 73  20 63 72 65 61 74 65 64  |ndow was created|
000c6330  20 61 6e 64 20 70 6c 61  63 65 73 20 69 74 20 69  | and places it i|
000c6340  6e 20 74 68 65 20 62 75  66 66 65 72 20 70 6f 69  |n the buffer poi|
000c6350  6e 74 65 64 20 74 6f 20  62 79 20 2f 6e 61 6d 65  |nted to by /name|
000c6360  2f 2e 20 54 68 69 73 20  6f 6e 6c 79 20 77 6f 72  |/. This only wor|
000c6370  6b 73 20 69 66 20 74 68  65 20 77 69 6e 64 6f 77  |ks if the window|
000c6380  20 77 61 73 20 63 72 65  61 74 65 64 20 77 69 74  | was created wit|
000c6390  68 20 3c 57 69 6e 64 6f  77 5f 43 72 65 61 74 65  |h <Window_Create|
000c63a0  3e 2e 20 54 68 65 20 6e  61 6d 65 20 69 73 20 38  |>. The name is 8|
000c63b0  20 63 68 61 72 61 63 74  65 72 73 20 6f 6e 6c 79  | characters only|
000c63c0  2e 00 00 00 44 41 54 41  22 01 00 00 77 69 6e 64  |....DATA"...wind|
000c63d0  6f 77 5f 72 65 64 72 61  77 62 6c 6f 63 6b 0a 54  |ow_redrawblock.T|
000c63e0  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
000c63f0  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
000c6400  57 69 6d 70 2e 68 3d 3e  57 69 6d 70 3e 2e 20 49  |Wimp.h=>Wimp>. I|
000c6410  74 20 69 73 20 61 20 73  74 72 75 63 74 75 72 65  |t is a structure|
000c6420  20 63 6f 6e 74 61 69 6e  69 6e 67 20 69 6e 66 6f  | containing info|
000c6430  72 6d 61 74 69 6f 6e 20  73 75 69 74 61 62 6c 65  |rmation suitable|
000c6440  20 66 6f 72 20 3c 57 69  6d 70 5f 52 65 64 72 61  | for <Wimp_Redra|
000c6450  77 57 69 6e 64 6f 77 3e  20 61 6e 64 20 3c 57 69  |wWindow> and <Wi|
000c6460  6d 70 5f 47 65 74 52 65  63 74 61 6e 67 6c 65 3e  |mp_GetRectangle>|
000c6470  2e 0a 0a 20 20 20 5c 7b  0a 20 20 20 20 20 3c 77  |...   \{.     <w|
000c6480  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 3e 09 77 69  |indow_handle>.wi|
000c6490  6e 64 6f 77 3b 0a 20 20  20 20 20 3c 77 69 6d 70  |ndow;.     <wimp|
000c64a0  5f 62 6f 78 3e 09 09 72  65 63 74 3b 0a 20 20 20  |_box>..rect;.   |
000c64b0  20 20 3c 77 69 6d 70 5f  70 6f 69 6e 74 3e 09 73  |  <wimp_point>.s|
000c64c0  63 72 6f 6c 6c 3b 0a 20  20 20 20 20 3c 77 69 6d  |croll;.     <wim|
000c64d0  70 5f 62 6f 78 3e 09 09  63 6c 69 70 72 65 63 74  |p_box>..cliprect|
000c64e0  3b 0a 20 20 20 7d 00 00  44 41 54 41 cc 00 00 00  |;.   }..DATA....|
000c64f0  57 69 6e 64 6f 77 5f 52  65 73 69 7a 65 0a 53 79  |Window_Resize.Sy|
000c6500  6e 74 61 78 3a 09 76 6f  69 64 20 57 69 6e 64 6f  |ntax:.void Windo|
000c6510  77 5f 52 65 73 69 7a 65  20 28 3c 77 69 6e 64 6f  |w_Resize (<windo|
000c6520  77 5f 68 61 6e 64 6c 65  3e 20 77 69 6e 29 3b 0a  |w_handle> win);.|
000c6530  48 65 61 64 65 72 3a 09  3c 54 69 6d 73 4c 69 62  |Header:.<TimsLib|
000c6540  3a 57 69 6e 64 6f 77 2e  68 3d 3e 57 69 6e 64 6f  |:Window.h=>Windo|
000c6550  77 5f 54 4c 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |w_TL>..This func|
000c6560  74 69 6f 6e 20 63 61 75  73 65 73 20 74 68 65 20  |tion causes the |
000c6570  77 69 6e 64 6f 77 20 62  65 20 62 65 20 72 65 73  |window be be res|
000c6580  69 7a 65 64 2c 20 61 73  20 69 66 20 74 68 65 20  |ized, as if the |
000c6590  75 73 65 72 20 68 61 64  20 64 72 61 67 67 65 64  |user had dragged|
000c65a0  20 6f 6e 20 74 68 65 20  72 65 73 69 7a 65 20 69  | on the resize i|
000c65b0  63 6f 6e 2e 44 41 54 41  d0 00 00 00 57 69 6e 64  |con.DATA....Wind|
000c65c0  6f 77 5f 53 63 72 6f 6c  6c 0a 53 79 6e 74 61 78  |ow_Scroll.Syntax|
000c65d0  3a 09 76 6f 69 64 20 57  69 6e 64 6f 77 5f 53 63  |:.void Window_Sc|
000c65e0  72 6f 6c 6c 20 28 3c 77  69 6e 64 6f 77 5f 68 61  |roll (<window_ha|
000c65f0  6e 64 6c 65 3e 20 77 69  6e 2c 20 3c 73 63 72 6f  |ndle> win, <scro|
000c6600  6c 6c 5f 74 79 70 65 3e  20 73 63 72 6f 6c 6c 29  |ll_type> scroll)|
000c6610  3b 0a 48 65 61 64 65 72  3a 09 3c 54 69 6d 73 4c  |;.Header:.<TimsL|
000c6620  69 62 3a 57 69 6e 64 6f  77 2e 68 3d 3e 57 69 6e  |ib:Window.h=>Win|
000c6630  64 6f 77 5f 54 4c 3e 0a  0a 54 68 69 73 20 66 75  |dow_TL>..This fu|
000c6640  6e 63 74 69 6f 6e 20 63  61 75 73 65 73 20 74 68  |nction causes th|
000c6650  65 20 77 69 6e 64 6f 77  20 62 65 20 62 65 20 64  |e window be be d|
000c6660  72 61 67 67 65 64 20 61  63 63 6f 72 64 69 6e 67  |ragged according|
000c6670  20 74 6f 20 74 68 65 20  73 63 72 6f 6c 6c 20 74  | to the scroll t|
000c6680  79 70 65 2e 44 41 54 41  db 00 00 00 57 69 6e 64  |ype.DATA....Wind|
000c6690  6f 77 5f 53 65 74 46 6f  63 75 73 0a 53 79 6e 74  |ow_SetFocus.Synt|
000c66a0  61 78 3a 09 76 6f 69 64  20 57 69 6e 64 6f 77 5f  |ax:.void Window_|
000c66b0  53 65 74 46 6f 63 75 73  20 28 3c 77 69 6e 64 6f  |SetFocus (<windo|
000c66c0  77 5f 68 61 6e 64 6c 65  3e 20 77 69 6e 64 6f 77  |w_handle> window|
000c66d0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 54 69 6d 73  |);.Header:.<Tims|
000c66e0  4c 69 62 3a 57 69 6e 64  6f 77 2e 68 3d 3e 57 69  |Lib:Window.h=>Wi|
000c66f0  6e 64 6f 77 5f 54 4c 3e  0a 0a 54 68 69 73 20 66  |ndow_TL>..This f|
000c6700  75 6e 63 74 69 6f 6e 20  63 61 75 73 65 73 20 74  |unction causes t|
000c6710  68 65 20 67 69 76 65 6e  20 77 69 6e 64 6f 77 20  |he given window |
000c6720  74 6f 20 67 61 69 6e 20  74 68 65 20 69 6e 70 75  |to gain the inpu|
000c6730  74 20 66 6f 63 75 73 2c  20 62 75 74 20 64 6f 65  |t focus, but doe|
000c6740  73 20 6e 6f 74 20 61 63  74 75 61 6c 6c 79 20 70  |s not actually p|
000c6750  6c 61 63 65 20 74 68 65  20 63 61 72 65 74 2e 00  |lace the caret..|
000c6760  44 41 54 41 2a 01 00 00  57 69 6e 64 6f 77 5f 53  |DATA*...Window_S|
000c6770  65 74 54 69 74 6c 65 0a  53 79 6e 74 61 78 3a 09  |etTitle.Syntax:.|
000c6780  76 6f 69 64 20 57 69 6e  64 6f 77 5f 53 65 74 54  |void Window_SetT|
000c6790  69 74 6c 65 20 28 3c 77  69 6e 64 6f 77 5f 68 61  |itle (<window_ha|
000c67a0  6e 64 6c 65 3e 20 77 69  6e 2c 20 63 68 61 72 20  |ndle> win, char |
000c67b0  2a 74 69 74 6c 65 29 3b  0a 48 65 61 64 65 72 3a  |*title);.Header:|
000c67c0  09 3c 44 65 73 6b 4c 69  62 3a 57 69 6e 64 6f 77  |.<DeskLib:Window|
000c67d0  2e 68 3d 3e 57 69 6e 64  6f 77 3e 0a 0a 54 68 69  |.h=>Window>..Thi|
000c67e0  73 20 66 75 6e 63 74 69  6f 6e 20 63 68 61 6e 67  |s function chang|
000c67f0  65 73 20 74 68 65 20 74  69 74 6c 65 20 69 6e 20  |es the title in |
000c6800  74 68 65 20 67 69 76 65  6e 20 77 69 6e 64 6f 77  |the given window|
000c6810  20 74 6f 20 62 65 20 74  68 61 74 20 70 6f 69 6e  | to be that poin|
000c6820  74 65 64 20 74 6f 20 62  79 20 2f 74 69 74 6c 65  |ted to by /title|
000c6830  2f 2e 20 49 66 20 74 68  65 20 74 69 74 6c 65 20  |/. If the title |
000c6840  69 73 20 6e 6f 74 20 69  6e 64 69 72 65 63 74 65  |is not indirecte|
000c6850  64 2c 20 74 68 65 20 74  65 78 74 20 63 61 6e 6e  |d, the text cann|
000c6860  6f 74 20 62 65 20 63 68  61 6e 67 65 64 20 28 62  |ot be changed (b|
000c6870  75 74 20 6e 6f 20 65 72  72 6f 72 20 69 73 20 67  |ut no error is g|
000c6880  65 6e 65 72 61 74 65 64  29 2e 00 00 44 41 54 41  |enerated)...DATA|
000c6890  0e 01 00 00 57 69 6e 64  6f 77 5f 53 68 6f 77 0a  |....Window_Show.|
000c68a0  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 57 69 6e  |Syntax:.void Win|
000c68b0  64 6f 77 5f 53 68 6f 77  20 28 3c 77 69 6e 64 6f  |dow_Show (<windo|
000c68c0  77 5f 68 61 6e 64 6c 65  3e 20 77 69 6e 2c 20 3c  |w_handle> win, <|
000c68d0  77 69 6e 64 6f 77 5f 6f  70 65 6e 70 6f 73 3e 20  |window_openpos> |
000c68e0  70 6f 73 29 3b 0a 48 65  61 64 65 72 3a 09 3c 44  |pos);.Header:.<D|
000c68f0  65 73 6b 4c 69 62 3a 57  69 6e 64 6f 77 2e 68 3d  |eskLib:Window.h=|
000c6900  3e 57 69 6e 64 6f 77 3e  0a 0a 54 68 69 73 20 66  |>Window>..This f|
000c6910  75 6e 63 74 69 6f 6e 20  73 68 6f 77 73 20 74 68  |unction shows th|
000c6920  65 20 77 69 6e 64 6f 77  20 77 68 6f 73 65 20 68  |e window whose h|
000c6930  61 6e 64 6c 65 20 69 73  20 67 69 76 65 6e 20 6f  |andle is given o|
000c6940  6e 20 74 68 65 20 73 63  72 65 65 6e 2e 20 49 74  |n the screen. It|
000c6950  20 63 61 6e 20 62 65 20  75 73 65 64 20 77 69 74  | can be used wit|
000c6960  68 20 61 6e 79 20 77 69  6e 64 6f 77 2c 20 6e 6f  |h any window, no|
000c6970  74 20 6a 75 73 74 20 74  68 6f 73 65 20 63 72 65  |t just those cre|
000c6980  61 74 65 64 20 77 69 74  68 20 3c 57 69 6e 64 6f  |ated with <Windo|
000c6990  77 5f 43 72 65 61 74 65  3e 2e 00 00 44 41 54 41  |w_Create>...DATA|
000c69a0  d9 00 00 00 77 69 6e 64  6f 77 5f 73 74 61 74 65  |....window_state|
000c69b0  0a 54 68 69 73 20 74 79  70 65 20 69 73 20 64 65  |.This type is de|
000c69c0  66 69 6e 65 64 20 62 79  20 3c 44 65 73 6b 4c 69  |fined by <DeskLi|
000c69d0  62 3a 57 69 6d 70 2e 68  3d 3e 57 69 6d 70 3e 2e  |b:Wimp.h=>Wimp>.|
000c69e0  20 49 74 20 69 73 20 61  20 73 74 72 75 63 74 75  | It is a structu|
000c69f0  72 65 20 68 6f 6c 64 69  6e 67 20 61 20 77 69 6e  |re holding a win|
000c6a00  64 6f 77 20 73 74 61 74  65 20 61 73 20 72 65 74  |dow state as ret|
000c6a10  75 72 6e 65 64 20 62 79  20 3c 57 69 6d 70 5f 47  |urned by <Wimp_G|
000c6a20  65 74 57 69 6e 64 6f 77  53 74 61 74 65 3e 2e 0a  |etWindowState>..|
000c6a30  0a 20 20 5c 7b 0a 20 20  20 20 3c 77 69 6e 64 6f  |.  \{.    <windo|
000c6a40  77 5f 6f 70 65 6e 62 6c  6f 63 6b 3e 09 6f 70 65  |w_openblock>.ope|
000c6a50  6e 62 6c 6f 63 6b 3b 0a  20 20 20 20 3c 77 69 6e  |nblock;.    <win|
000c6a60  64 6f 77 5f 66 6c 61 67  73 3e 09 66 6c 61 67 73  |dow_flags>.flags|
000c6a70  3b 0a 20 20 7d 00 00 00  44 41 54 41 0e 01 00 00  |;.  }...DATA....|
000c6a80  54 69 6d 73 4c 69 62 3a  57 69 6e 64 6f 77 2e 68  |TimsLib:Window.h|
000c6a90  0a 54 68 69 73 20 68 65  61 64 65 72 20 70 72 6f  |.This header pro|
000c6aa0  76 69 64 65 73 20 61 20  66 65 77 20 68 61 6e 64  |vides a few hand|
000c6ab0  79 20 77 69 6e 64 6f 77  2d 62 61 73 65 64 20 66  |y window-based f|
000c6ac0  75 6e 63 74 69 6f 6e 73  2e 0a 0a 46 75 6e 63 74  |unctions...Funct|
000c6ad0  69 6f 6e 73 3a 0a 0a 23  54 61 62 6c 65 20 33 20  |ions:..#Table 3 |
000c6ae0  31 39 0a 3c 57 69 6e 64  6f 77 5f 4d 6f 76 65 3e  |19.<Window_Move>|
000c6af0  0a 3c 57 69 6e 64 6f 77  5f 52 65 73 69 7a 65 3e  |.<Window_Resize>|
000c6b00  0a 3c 57 69 6e 64 6f 77  5f 53 63 72 6f 6c 6c 3e  |.<Window_Scroll>|
000c6b10  0a 3c 57 69 6e 64 6f 77  5f 44 65 6c 65 74 65 49  |.<Window_DeleteI|
000c6b20  6e 63 4d 65 6e 75 73 3e  0a 3c 57 69 6e 64 6f 77  |ncMenus>.<Window|
000c6b30  5f 46 6f 72 63 65 43 6f  6d 70 6c 65 74 65 52 65  |_ForceCompleteRe|
000c6b40  64 72 61 77 3e 0a 3c 57  69 6e 64 6f 77 5f 53 65  |draw>.<Window_Se|
000c6b50  74 46 6f 63 75 73 3e 0a  23 45 6e 64 54 61 62 6c  |tFocus>.#EndTabl|
000c6b60  65 0a 0a 54 79 70 65 73  3a 0a 0a 7b 61 6c 69 67  |e..Types:..{alig|
000c6b70  6e 20 63 65 6e 74 72 65  7d 3c 73 63 72 6f 6c 6c  |n centre}<scroll|
000c6b80  5f 74 79 70 65 3e 00 00  44 41 54 41 75 01 00 00  |_type>..DATAu...|
000c6b90  57 69 6e 64 6f 77 5f 47  65 74 49 6e 66 6f 33 0a  |Window_GetInfo3.|
000c6ba0  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 57 69 6e  |Syntax:.void Win|
000c6bb0  64 6f 77 5f 47 65 74 49  6e 66 6f 33 20 28 3c 77  |dow_GetInfo3 (<w|
000c6bc0  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 3e 20 77 69  |indow_handle> wi|
000c6bd0  6e 2c 20 3c 77 69 6e 64  6f 77 5f 69 6e 66 6f 3e  |n, <window_info>|
000c6be0  20 2a 72 65 73 29 3b 0a  48 65 61 64 65 72 3a 09  | *res);.Header:.|
000c6bf0  3c 44 65 73 6b 4c 69 62  3a 57 69 6e 64 6f 77 2e  |<DeskLib:Window.|
000c6c00  68 3d 3e 57 69 6e 64 6f  77 3e 0a 0a 54 68 69 73  |h=>Window>..This|
000c6c10  20 66 75 6e 63 74 69 6f  6e 20 69 73 20 73 69 6d  | function is sim|
000c6c20  70 6c 79 20 61 20 66 72  6f 6e 74 20 65 6e 64 20  |ply a front end |
000c6c30  74 6f 20 3c 57 69 6d 70  5f 47 65 74 57 69 6e 64  |to <Wimp_GetWind|
000c6c40  6f 77 49 6e 66 6f 3e 2e  20 48 6f 77 65 76 65 72  |owInfo>. However|
000c6c50  2c 20 6e 6f 20 69 63 6f  6e 20 64 65 66 69 6e 69  |, no icon defini|
000c6c60  74 69 6f 6e 73 20 61 72  65 20 72 65 74 75 72 6e  |tions are return|
000c6c70  65 64 2e 20 54 68 65 20  77 69 6e 64 6f 77 20 69  |ed. The window i|
000c6c80  6e 66 6f 72 6d 61 74 69  6f 6e 20 69 73 20 70 6c  |nformation is pl|
000c6c90  61 63 65 64 20 69 6e 20  74 68 65 20 62 6c 6f 63  |aced in the bloc|
000c6ca0  6b 20 70 6f 69 6e 74 65  64 20 74 6f 20 62 65 20  |k pointed to be |
000c6cb0  2f 72 65 73 2f 2e 0a 0a  54 68 69 73 20 69 73 20  |/res/...This is |
000c6cc0  74 68 65 20 66 61 73 74  20 76 65 72 73 69 6f 6e  |the fast version|
000c6cd0  2c 20 6f 6e 20 52 49 53  43 20 4f 53 20 32 20 79  |, on RISC OS 2 y|
000c6ce0  6f 75 20 6d 75 73 74 20  75 73 65 20 3c 57 69 6e  |ou must use <Win|
000c6cf0  64 6f 77 5f 47 65 74 49  6e 66 6f 3e 2e 00 00 00  |dow_GetInfo>....|
000c6d00  44 41 54 41 b1 00 00 00  57 69 6e 64 6f 77 5f 42  |DATA....Window_B|
000c6d10  72 69 6e 67 54 6f 46 72  6f 6e 74 0a 53 79 6e 74  |ringToFront.Synt|
000c6d20  61 78 3a 09 76 6f 69 64  20 57 69 6e 64 6f 77 5f  |ax:.void Window_|
000c6d30  42 72 69 6e 67 54 6f 46  72 6f 6e 74 20 28 3c 77  |BringToFront (<w|
000c6d40  69 6e 64 6f 77 5f 68 61  6e 64 6c 65 3e 20 77 69  |indow_handle> wi|
000c6d50  6e 29 3b 0a 48 65 61 64  65 72 3a 09 3c 44 65 73  |n);.Header:.<Des|
000c6d60  6b 4c 69 62 3a 57 69 6e  64 6f 77 2e 68 3d 3e 57  |kLib:Window.h=>W|
000c6d70  69 6e 64 6f 77 3e 0a 0a  42 72 69 6e 67 73 20 74  |indow>..Brings t|
000c6d80  68 65 20 77 69 6e 64 6f  77 20 2f 77 69 6e 2f 20  |he window /win/ |
000c6d90  74 6f 20 74 68 65 20 66  72 6f 6e 74 20 6f 66 20  |to the front of |
000c6da0  74 68 65 20 77 69 6e 64  6f 77 20 73 74 61 63 6b  |the window stack|
000c6db0  2e 00 00 00 44 41 54 41  1c 01 00 00 57 69 6e 64  |....DATA....Wind|
000c6dc0  6f 77 5f 43 6f 6e 73 74  72 61 69 6e 4d 6f 75 73  |ow_ConstrainMous|
000c6dd0  65 0a 53 79 6e 74 61 78  3a 09 3c 6f 73 5f 65 72  |e.Syntax:.<os_er|
000c6de0  72 6f 72 3e 20 2a 57 69  6e 64 6f 77 5f 43 6f 6e  |ror> *Window_Con|
000c6df0  73 74 72 61 69 6e 4d 6f  75 73 65 20 28 3c 77 69  |strainMouse (<wi|
000c6e00  6e 64 6f 77 5f 68 61 6e  64 6c 65 3e 20 77 69 6e  |ndow_handle> win|
000c6e10  29 3b 0a 48 65 61 64 65  72 3a 09 3c 44 65 73 6b  |);.Header:.<Desk|
000c6e20  4c 69 62 3a 57 69 6e 64  6f 77 2e 68 3d 3e 57 69  |Lib:Window.h=>Wi|
000c6e30  6e 64 6f 77 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |ndow>..Returns:.|
000c6e40  50 6f 69 6e 74 65 72 20  74 6f 20 65 72 72 6f 72  |Pointer to error|
000c6e50  2c 20 6f 72 20 3c 4e 55  4c 4c 3e 20 69 66 20 6e  |, or <NULL> if n|
000c6e60  6f 6e 65 2e 0a 0a 52 65  73 74 72 69 63 74 73 20  |one...Restricts |
000c6e70  74 68 65 20 70 6f 69 6e  74 65 72 20 74 6f 20 74  |the pointer to t|
000c6e80  68 65 20 62 6f 75 6e 64  73 20 6f 66 20 77 69 6e  |he bounds of win|
000c6e90  64 6f 77 20 2f 77 69 6e  2f 2e 20 41 63 74 75 61  |dow /win/. Actua|
000c6ea0  6c 6c 79 20 6a 75 73 74  20 61 20 6d 61 63 72 6f  |lly just a macro|
000c6eb0  20 66 6f 72 20 3c 50 6f  69 6e 74 65 72 5f 52 65  | for <Pointer_Re|
000c6ec0  73 74 72 69 63 74 54 6f  57 69 6e 64 6f 77 3e 2e  |strictToWindow>.|
000c6ed0  44 41 54 41 f8 00 00 00  57 69 6e 64 6f 77 5f 46  |DATA....Window_F|
000c6ee0  6f 72 63 65 52 65 64 72  61 77 0a 53 79 6e 74 61  |orceRedraw.Synta|
000c6ef0  78 3a 09 76 6f 69 64 20  57 69 6e 64 6f 77 5f 46  |x:.void Window_F|
000c6f00  6f 72 63 65 52 65 64 72  61 77 20 28 3c 77 69 6e  |orceRedraw (<win|
000c6f10  64 6f 77 5f 68 61 6e 64  6c 65 3e 20 77 69 6e 2c  |dow_handle> win,|
000c6f20  20 69 6e 74 20 78 30 2c  20 69 6e 74 20 79 30 2c  | int x0, int y0,|
000c6f30  20 69 6e 74 20 78 31 2c  20 69 6e 74 20 79 31 29  | int x1, int y1)|
000c6f40  3b 0a 48 65 61 64 65 72  3a 09 3c 44 65 73 6b 4c  |;.Header:.<DeskL|
000c6f50  69 62 3a 57 69 6e 64 6f  77 2e 68 3d 3e 57 69 6e  |ib:Window.h=>Win|
000c6f60  64 6f 77 3e 0a 0a 46 6f  72 63 65 73 20 61 20 72  |dow>..Forces a r|
000c6f70  65 64 72 61 77 20 6f 66  20 74 68 65 20 72 65 63  |edraw of the rec|
000c6f80  74 61 6e 67 6c 65 20 6f  66 20 74 68 65 20 77 69  |tangle of the wi|
000c6f90  6e 64 6f 77 20 2f 77 69  6e 2f 20 64 65 6c 69 6d  |ndow /win/ delim|
000c6fa0  69 74 65 64 20 62 79 20  7b 2f 7d 28 78 30 2c 79  |ited by {/}(x0,y|
000c6fb0  30 29 7b 2f 7d 20 61 6e  64 20 7b 2f 7d 28 78 31  |0){/} and {/}(x1|
000c6fc0  2c 79 31 29 7b 2f 7d 2e  44 41 54 41 c2 00 00 00  |,y1){/}.DATA....|
000c6fd0  57 69 6e 64 6f 77 5f 47  65 74 43 6f 6f 72 64 73  |Window_GetCoords|
000c6fe0  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 57 69  |.Syntax:.void Wi|
000c6ff0  6e 64 6f 77 5f 47 65 74  43 6f 6f 72 64 73 20 28  |ndow_GetCoords (|
000c7000  3c 77 69 6e 64 6f 77 5f  68 61 6e 64 6c 65 3e 20  |<window_handle> |
000c7010  77 69 6e 2c 20 3c 63 6f  6e 76 65 72 74 5f 62 6c  |win, <convert_bl|
000c7020  6f 63 6b 3e 20 2a 62 6c  6b 29 3b 0a 48 65 61 64  |ock> *blk);.Head|
000c7030  65 72 3a 09 3c 44 65 73  6b 4c 69 62 3a 57 69 6e  |er:.<DeskLib:Win|
000c7040  64 6f 77 2e 68 3d 3e 57  69 6e 64 6f 77 3e 0a 0a  |dow.h=>Window>..|
000c7050  46 69 6c 6c 73 20 2f 62  6c 6b 2f 20 77 69 74 68  |Fills /blk/ with|
000c7060  20 74 68 65 20 63 6f 72  72 65 63 74 20 69 6e 66  | the correct inf|
000c7070  6f 72 6d 61 74 69 6f 6e  20 66 6f 72 20 77 69 6e  |ormation for win|
000c7080  64 6f 77 20 2f 77 69 6e  2f 2e 00 00 44 49 52 24  |dow /win/...DIR$|
000c7090  70 03 00 00 70 03 00 00  fc 73 0c 00 46 ff ff ff  |p...p....s..F...|
000c70a0  ab 9c eb 24 de 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000c70b0  61 63 74 69 76 65 64 65  63 00 00 00 dc 74 0c 00  |activedec....t..|
000c70c0  46 ff ff ff ab 85 eb 24  67 01 00 00 13 00 00 00  |F......$g.......|
000c70d0  00 00 00 00 61 63 74 69  76 65 69 6e 63 00 00 00  |....activeinc...|
000c70e0  44 76 0c 00 46 ff ff ff  8f a2 eb 24 b9 00 00 00  |Dv..F......$....|
000c70f0  13 00 00 00 00 00 00 00  61 63 74 69 76 65 6e 6f  |........activeno|
000c7100  00 00 00 00 00 77 0c 00  46 ff ff ff fd da eb 24  |.....w..F......$|
000c7110  d3 00 00 00 13 00 00 00  00 00 00 00 63 6c 61 69  |............clai|
000c7120  6d 5f 69 64 6c 65 5f 65  76 65 6e 74 73 00 00 00  |m_idle_events...|
000c7130  d4 77 0c 00 46 ff ff ff  76 e6 eb 24 dc 00 00 00  |.w..F...v..$....|
000c7140  13 00 00 00 00 00 00 00  63 6c 61 69 6d 5f 75 6e  |........claim_un|
000c7150  6b 6e 6f 77 6e 5f 65 76  65 6e 74 73 00 00 00 00  |known_events....|
000c7160  b0 78 0c 00 46 ff ff ff  22 1f ec 24 09 01 00 00  |.x..F..."..$....|
000c7170  13 00 00 00 00 00 00 00  65 76 65 6e 74 5f 68 61  |........event_ha|
000c7180  6e 64 6c 65 72 00 00 00  bc 79 0c 00 46 ff ff ff  |ndler....y..F...|
000c7190  b2 77 eb 24 b8 00 00 00  13 00 00 00 00 00 00 00  |.w.$............|
000c71a0  67 65 74 6d 65 6e 75 68  00 00 00 00 74 7a 0c 00  |getmenuh....tz..|
000c71b0  46 ff ff ff 62 a8 eb 24  80 01 00 00 13 00 00 00  |F...b..$........|
000c71c0  00 00 00 00 67 69 76 65  5f 61 77 61 79 5f 63 61  |....give_away_ca|
000c71d0  72 65 74 00 f4 7b 0c 00  46 ff ff ff d2 33 b6 22  |ret..{..F....3."|
000c71e0  42 00 00 00 13 00 00 00  00 00 00 00 49 43 4f 4e  |B...........ICON|
000c71f0  42 41 52 00 38 7c 0c 00  46 ff ff ff d9 33 b6 22  |BAR.8|..F....3."|
000c7200  47 00 00 00 13 00 00 00  00 00 00 00 49 43 4f 4e  |G...........ICON|
000c7210  42 41 52 4c 4f 41 44 00  80 7c 0c 00 46 ff ff ff  |BARLOAD..|..F...|
000c7220  1e e1 eb 24 ca 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000c7230  69 64 6c 65 5f 65 76 65  6e 74 5f 63 6c 61 69 6d  |idle_event_claim|
000c7240  65 72 00 00 4c 7d 0c 00  46 ff ff ff 89 6e eb 24  |er..L}..F....n.$|
000c7250  90 00 00 00 13 00 00 00  00 00 00 00 69 6e 69 74  |............init|
000c7260  00 00 00 00 dc 7d 0c 00  46 ff ff ff 6b 7d eb 24  |.....}..F...k}.$|
000c7270  f2 00 00 00 13 00 00 00  00 00 00 00 70 72 6f 63  |............proc|
000c7280  65 73 73 65 76 65 6e 74  00 00 00 00 d0 7e 0c 00  |essevent.....~..|
000c7290  46 ff ff ff 72 d1 eb 24  4e 01 00 00 13 00 00 00  |F...r..$N.......|
000c72a0  00 00 00 00 72 65 61 64  5f 65 76 65 6e 74 5f 68  |....read_event_h|
000c72b0  61 6e 64 6c 65 72 00 00  20 80 0c 00 46 ff ff ff  |andler.. ...F...|
000c72c0  ef fb eb 24 e2 01 00 00  13 00 00 00 00 00 00 00  |...$............|
000c72d0  72 65 67 69 73 74 65 72  5f 65 76 65 6e 74 5f 68  |register_event_h|
000c72e0  61 6e 64 6c 65 72 00 00  04 82 0c 00 46 ff ff ff  |andler......F...|
000c72f0  04 74 eb 24 e5 00 00 00  13 00 00 00 00 00 00 00  |.t.$............|
000c7300  73 65 74 6d 65 6e 75 68  00 00 00 00 ec 82 0c 00  |setmenuh........|
000c7310  46 ff ff ff 8b b3 eb 24  2a 01 00 00 13 00 00 00  |F......$*.......|
000c7320  00 00 00 00 73 65 74 74  69 74 6c 65 00 00 00 00  |....settitle....|
000c7330  18 84 0c 00 46 ff ff ff  37 ea eb 24 da 00 00 00  |....F...7..$....|
000c7340  13 00 00 00 00 00 00 00  75 6e 6b 6e 6f 77 6e 5f  |........unknown_|
000c7350  65 76 65 6e 74 5f 63 6c  61 69 6d 65 72 00 00 00  |event_claimer...|
000c7360  f4 84 0c 00 46 ff ff ff  c1 29 ec 24 42 01 00 00  |....F....).$B...|
000c7370  13 00 00 00 00 00 00 00  75 6e 6b 6e 6f 77 6e 5f  |........unknown_|
000c7380  65 76 65 6e 74 5f 70 72  6f 63 65 73 73 6f 72 00  |event_processor.|
000c7390  38 86 0c 00 46 ff ff ff  0a 0e ec 24 bb 01 00 00  |8...F......$....|
000c73a0  13 00 00 00 00 00 00 00  61 64 64 5f 75 6e 6b 6e  |........add_unkn|
000c73b0  6f 77 6e 5f 65 76 65 6e  74 5f 70 72 6f 63 65 73  |own_event_proces|
000c73c0  73 6f 72 00 f4 87 0c 00  46 ff ff ff 35 14 ec 24  |sor.....F...5..$|
000c73d0  f8 00 00 00 13 00 00 00  00 00 00 00 72 65 6d 6f  |............remo|
000c73e0  76 65 5f 75 6e 6b 6e 6f  77 6e 5f 65 76 65 6e 74  |ve_unknown_event|
000c73f0  5f 70 72 6f 63 65 73 73  6f 72 00 00 44 41 54 41  |_processor..DATA|
000c7400  de 00 00 00 77 69 6e 5f  61 63 74 69 76 65 64 65  |....win_activede|
000c7410  63 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 77  |c.Syntax:.void w|
000c7420  69 6e 5f 61 63 74 69 76  65 64 65 63 20 28 76 6f  |in_activedec (vo|
000c7430  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 77 69  |id);.Header:.<wi|
000c7440  6e 2e 68 3d 3e 77 69 6e  3e 0a 0a 54 68 69 73 20  |n.h=>win>..This |
000c7450  66 75 6e 63 74 69 6f 6e  20 64 65 63 72 65 6d 65  |function decreme|
000c7460  6e 74 73 20 62 79 20 6f  6e 65 20 74 68 65 20 77  |nts by one the w|
000c7470  69 6e 20 6d 6f 64 75 6c  65 27 73 20 69 64 65 61  |in module's idea|
000c7480  20 6f 66 20 74 68 65 20  6e 75 6d 62 65 72 20 6f  | of the number o|
000c7490  66 20 61 63 74 69 76 65  20 77 69 6e 64 6f 77 73  |f active windows|
000c74a0  2e 20 3c 65 76 65 6e 74  5f 70 72 6f 63 65 73 73  |. <event_process|
000c74b0  3e 28 29 20 63 61 6c 6c  73 20 3c 65 78 69 74 3e  |>() calls <exit>|
000c74c0  28 29 20 77 68 65 6e 20  74 68 69 73 20 72 65 61  |() when this rea|
000c74d0  63 68 65 73 20 7a 65 72  6f 2e 00 00 44 41 54 41  |ches zero...DATA|
000c74e0  67 01 00 00 77 69 6e 5f  61 63 74 69 76 65 69 6e  |g...win_activein|
000c74f0  63 0a 53 79 6e 74 61 78  3a 09 76 6f 69 64 20 77  |c.Syntax:.void w|
000c7500  69 6e 5f 61 63 74 69 76  65 69 6e 63 20 28 76 6f  |in_activeinc (vo|
000c7510  69 64 29 3b 0a 48 65 61  64 65 72 3a 09 3c 77 69  |id);.Header:.<wi|
000c7520  6e 2e 68 3d 3e 77 69 6e  3e 0a 0a 54 68 69 73 20  |n.h=>win>..This |
000c7530  66 75 6e 63 74 69 6f 6e  20 69 6e 63 72 65 6d 65  |function increme|
000c7540  6e 74 73 20 62 79 20 6f  6e 65 20 74 68 65 20 77  |nts by one the w|
000c7550  69 6e 20 6d 6f 64 75 6c  65 27 73 20 69 64 65 61  |in module's idea|
000c7560  20 6f 66 20 74 68 65 20  6e 75 6d 62 65 72 20 6f  | of the number o|
000c7570  66 20 61 63 74 69 76 65  20 77 69 6e 64 6f 77 73  |f active windows|
000c7580  2e 20 3c 65 76 65 6e 74  5f 70 72 6f 63 65 73 73  |. <event_process|
000c7590  3d 3e 65 76 65 6e 74 5f  70 72 6f 63 65 73 73 5f  |=>event_process_|
000c75a0  3e 28 29 20 63 61 6c 6c  73 20 3c 65 78 69 74 3e  |>() calls <exit>|
000c75b0  28 29 20 77 68 65 6e 20  74 68 69 73 20 72 65 61  |() when this rea|
000c75c0  63 68 65 73 20 7a 65 72  6f 2c 20 73 6f 20 69 66  |ches zero, so if|
000c75d0  20 79 6f 75 20 77 61 6e  74 20 74 6f 20 72 65 6d  | you want to rem|
000c75e0  61 69 6e 20 72 75 6e 6e  69 6e 67 20 77 69 74 68  |ain running with|
000c75f0  20 6e 6f 20 61 63 74 69  76 65 20 77 69 6e 64 6f  | no active windo|
000c7600  77 73 2c 20 79 6f 75 20  6d 75 73 74 20 69 6e 63  |ws, you must inc|
000c7610  72 65 6d 65 6e 74 20 69  74 20 79 6f 75 72 73 65  |rement it yourse|
000c7620  6c 66 2e 20 3c 62 61 72  69 63 6f 6e 3e 28 29 20  |lf. <baricon>() |
000c7630  63 61 6c 6c 73 20 74 68  69 73 20 66 6f 72 20 79  |calls this for y|
000c7640  6f 75 2e 00 44 41 54 41  b9 00 00 00 77 69 6e 5f  |ou..DATA....win_|
000c7650  61 63 74 69 76 65 6e 6f  0a 53 79 6e 74 61 78 3a  |activeno.Syntax:|
000c7660  09 69 6e 74 20 77 69 6e  5f 61 63 74 69 76 65 6e  |.int win_activen|
000c7670  6f 20 28 76 6f 69 64 29  3b 0a 48 65 61 64 65 72  |o (void);.Header|
000c7680  3a 09 3c 77 69 6e 2e 68  3d 3e 77 69 6e 3e 0a 0a  |:.<win.h=>win>..|
000c7690  52 65 74 75 72 6e 73 3a  09 4e 75 6d 62 65 72 20  |Returns:.Number |
000c76a0  6f 66 20 61 63 74 69 76  65 20 77 69 6e 64 6f 77  |of active window|
000c76b0  73 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |s...This functio|
000c76c0  6e 20 72 65 74 75 72 6e  73 20 74 68 65 20 6e 75  |n returns the nu|
000c76d0  6d 62 65 72 20 6f 66 20  61 63 74 69 76 65 20 77  |mber of active w|
000c76e0  69 6e 64 6f 77 73 20 6f  77 6e 65 64 20 62 79 20  |indows owned by |
000c76f0  79 6f 75 72 20 70 72 6f  67 72 61 6d 2e 00 00 00  |your program....|
000c7700  44 41 54 41 d3 00 00 00  77 69 6e 5f 63 6c 61 69  |DATA....win_clai|
000c7710  6d 5f 69 64 6c 65 5f 65  76 65 6e 74 73 0a 53 79  |m_idle_events.Sy|
000c7720  6e 74 61 78 3a 09 76 6f  69 64 20 77 69 6e 5f 63  |ntax:.void win_c|
000c7730  6c 61 69 6d 5f 69 64 6c  65 5f 65 76 65 6e 74 73  |laim_idle_events|
000c7740  20 28 3c 77 69 6d 70 5f  77 3e 20 77 29 3b 0a 48  | (<wimp_w> w);.H|
000c7750  65 61 64 65 72 3a 09 3c  77 69 6e 2e 68 3d 3e 77  |eader:.<win.h=>w|
000c7760  69 6e 3e 0a 0a 54 68 69  73 20 66 75 6e 63 74 69  |in>..This functi|
000c7770  6f 6e 20 63 61 75 73 65  73 20 22 69 64 6c 65 22  |on causes "idle"|
000c7780  20 65 76 65 6e 74 73 20  74 6f 20 62 65 20 64 65  | events to be de|
000c7790  6c 69 76 65 72 65 64 20  74 6f 20 74 68 65 20 67  |livered to the g|
000c77a0  69 76 65 6e 20 77 69 6e  64 6f 77 2e 20 54 6f 20  |iven window. To |
000c77b0  63 61 6e 63 65 6c 20 74  68 69 73 2c 20 63 61 6c  |cancel this, cal|
000c77c0  6c 20 69 74 20 77 69 74  68 20 2f 77 2f 20 3d 20  |l it with /w/ = |
000c77d0  2d 31 2e 00 44 41 54 41  dc 00 00 00 77 69 6e 5f  |-1..DATA....win_|
000c77e0  63 6c 61 69 6d 5f 75 6e  6b 6e 6f 77 6e 5f 65 76  |claim_unknown_ev|
000c77f0  65 6e 74 73 0a 53 79 6e  74 61 78 3a 09 76 6f 69  |ents.Syntax:.voi|
000c7800  64 20 77 69 6e 5f 63 6c  61 69 6d 5f 75 6e 6b 6e  |d win_claim_unkn|
000c7810  6f 77 6e 5f 65 76 65 6e  74 73 20 28 3c 77 69 6d  |own_events (<wim|
000c7820  70 5f 77 3e 20 77 29 3b  0a 48 65 61 64 65 72 3a  |p_w> w);.Header:|
000c7830  09 3c 77 69 6e 2e 68 3d  3e 77 69 6e 3e 0a 0a 43  |.<win.h=>win>..C|
000c7840  61 75 73 65 73 20 61 6e  79 20 75 6e 6b 6e 6f 77  |auses any unknow|
000c7850  6e 20 6f 72 20 6e 6f 6e  2d 77 69 6e 64 6f 77 2d  |n or non-window-|
000c7860  73 70 65 63 69 66 69 63  20 65 76 65 6e 74 73 20  |specific events |
000c7870  74 6f 20 62 65 20 70 61  73 73 65 64 20 74 6f 20  |to be passed to |
000c7880  67 69 76 65 6e 20 77 69  6e 64 6f 77 2e 20 43 61  |given window. Ca|
000c7890  6c 6c 20 77 69 74 68 20  2f 77 2f 20 3d 20 2d 31  |ll with /w/ = -1|
000c78a0  20 74 6f 20 63 61 6e 63  65 6c 20 74 68 69 73 2e  | to cancel this.|
000c78b0  44 41 54 41 09 01 00 00  77 69 6e 5f 65 76 65 6e  |DATA....win_even|
000c78c0  74 5f 68 61 6e 64 6c 65  72 0a 54 68 69 73 20 74  |t_handler.This t|
000c78d0  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
000c78e0  6e 20 3c 77 69 6e 2e 68  3d 3e 77 69 6e 3e 2e 20  |n <win.h=>win>. |
000c78f0  49 74 20 69 73 20 61 20  66 75 6e 63 74 69 6f 6e  |It is a function|
000c7900  20 77 69 74 68 20 74 68  65 20 66 6f 6c 6c 6f 77  | with the follow|
000c7910  69 6e 67 20 70 72 6f 74  6f 74 79 70 65 3a 0a 7b  |ing prototype:.{|
000c7920  77 72 61 70 20 6f 66 66  7d 0a 7b 66 43 6f 64 65  |wrap off}.{fCode|
000c7930  3b 61 6c 69 67 6e 20 63  65 6e 74 72 65 7d 76 6f  |;align centre}vo|
000c7940  69 64 20 6d 79 66 75 6e  63 20 28 3c 77 69 6d 70  |id myfunc (<wimp|
000c7950  5f 65 76 65 6e 74 73 74  72 3e 20 2a 65 2c 20 76  |_eventstr> *e, v|
000c7960  6f 69 64 20 2a 68 61 6e  64 6c 65 29 3b 7b 66 3b  |oid *handle);{f;|
000c7970  61 6c 69 67 6e 7d 0a 7b  77 72 61 70 7d 0a 49 74  |align}.{wrap}.It|
000c7980  20 69 73 20 61 20 66 75  6e 63 74 69 6f 6e 20 75  | is a function u|
000c7990  73 65 64 20 74 6f 20 70  72 6f 63 65 73 73 20 65  |sed to process e|
000c79a0  76 65 6e 74 73 20 66 6f  72 20 61 20 67 69 76 65  |vents for a give|
000c79b0  6e 20 77 69 6e 64 6f 77  2e 00 00 00 44 41 54 41  |n window....DATA|
000c79c0  b8 00 00 00 77 69 6e 5f  67 65 74 6d 65 6e 75 68  |....win_getmenuh|
000c79d0  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 2a 77  |.Syntax:.void *w|
000c79e0  69 6e 5f 67 65 74 6d 65  6e 75 68 20 28 3c 77 69  |in_getmenuh (<wi|
000c79f0  6d 70 5f 77 3e 20 77 69  6e 29 3b 0a 48 65 61 64  |mp_w> win);.Head|
000c7a00  65 72 3a 09 3c 77 69 6e  2e 68 3d 3e 77 69 6e 3e  |er:.<win.h=>win>|
000c7a10  0a 0a 52 65 74 75 72 6e  73 3a 09 50 6f 69 6e 74  |..Returns:.Point|
000c7a20  65 72 20 74 6f 20 74 68  65 20 61 74 74 61 63 68  |er to the attach|
000c7a30  65 64 20 6d 65 6e 75 2e  0a 0a 54 68 69 73 20 66  |ed menu...This f|
000c7a40  75 6e 63 74 69 6f 6e 73  20 67 65 74 73 20 74 68  |unctions gets th|
000c7a50  65 20 6d 65 6e 75 20 61  74 74 61 63 68 65 64 20  |e menu attached |
000c7a60  74 6f 20 74 68 65 20 67  69 76 65 6e 20 77 69 6e  |to the given win|
000c7a70  64 6f 77 2e 44 41 54 41  80 01 00 00 77 69 6e 5f  |dow.DATA....win_|
000c7a80  67 69 76 65 5f 61 77 61  79 5f 63 61 72 65 74 0a  |give_away_caret.|
000c7a90  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 77 69 6e  |Syntax:.void win|
000c7aa0  5f 67 69 76 65 5f 61 77  61 79 5f 63 61 72 65 74  |_give_away_caret|
000c7ab0  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
000c7ac0  09 3c 77 69 6e 2e 68 3d  3e 77 69 6e 3e 0a 0a 54  |.<win.h=>win>..T|
000c7ad0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 67 69 76  |his function giv|
000c7ae0  65 73 20 74 68 65 20 63  61 72 65 74 20 61 77 61  |es the caret awa|
000c7af0  79 20 74 6f 20 74 68 65  20 6f 70 65 6e 20 77 69  |y to the open wi|
000c7b00  6e 64 6f 77 20 61 74 20  74 68 65 20 74 6f 70 20  |ndow at the top |
000c7b10  6f 66 20 74 68 65 20 77  69 6e 64 6f 77 20 73 74  |of the window st|
000c7b20  61 63 6b 20 28 69 66 20  74 68 61 74 20 77 69 6e  |ack (if that win|
000c7b30  64 6f 77 20 69 73 20 6f  77 6e 65 64 20 62 79 20  |dow is owned by |
000c7b40  79 6f 75 72 20 70 72 6f  67 72 61 6d 29 2e 20 49  |your program). I|
000c7b50  66 20 74 68 65 20 74 6f  70 20 77 69 6e 64 6f 77  |f the top window|
000c7b60  20 69 73 20 69 6e 74 65  72 65 73 74 65 64 20 69  | is interested i|
000c7b70  74 20 77 69 6c 6c 20 74  61 6b 65 20 74 68 65 20  |t will take the |
000c7b80  63 61 72 65 74 20 65 6c  73 65 20 6e 6f 74 68 69  |caret else nothi|
000c7b90  6e 67 20 68 61 70 70 65  6e 73 2e 20 50 6f 6c 6c  |ng happens. Poll|
000c7ba0  69 6e 67 20 6d 75 73 74  20 62 65 20 64 6f 6e 65  |ing must be done|
000c7bb0  20 75 73 69 6e 67 20 3c  77 69 6d 70 74 3e 20 6f  | using <wimpt> o|
000c7bc0  72 20 61 20 68 69 67 68  65 72 20 6c 65 76 65 6c  |r a higher level|
000c7bd0  20 65 67 20 3c 65 76 65  6e 74 5f 70 72 6f 63 65  | eg <event_proce|
000c7be0  73 73 3d 3e 65 76 65 6e  74 5f 70 72 6f 63 65 73  |ss=>event_proces|
000c7bf0  73 5f 3e 2e 44 41 54 41  42 00 00 00 77 69 6e 5f  |s_>.DATAB...win_|
000c7c00  49 43 4f 4e 42 41 52 0a  54 68 69 73 20 6d 61 63  |ICONBAR.This mac|
000c7c10  72 6f 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |ro is defined in|
000c7c20  20 3c 77 69 6e 2e 68 3d  3e 77 69 6e 3e 20 61 73  | <win.h=>win> as|
000c7c30  20 28 2d 33 29 2e 00 00  44 41 54 41 47 00 00 00  | (-3)...DATAG...|
000c7c40  77 69 6e 5f 49 43 4f 4e  42 41 52 4c 4f 41 44 0a  |win_ICONBARLOAD.|
000c7c50  54 68 69 73 20 6d 61 63  72 6f 20 69 73 20 64 65  |This macro is de|
000c7c60  66 69 6e 65 64 20 69 6e  20 3c 77 69 6e 2e 68 3d  |fined in <win.h=|
000c7c70  3e 77 69 6e 3e 20 61 73  20 28 2d 39 39 29 2e 00  |>win> as (-99)..|
000c7c80  44 41 54 41 ca 00 00 00  77 69 6e 5f 69 64 6c 65  |DATA....win_idle|
000c7c90  5f 65 76 65 6e 74 5f 63  6c 61 69 6d 65 72 0a 53  |_event_claimer.S|
000c7ca0  79 6e 74 61 78 3a 09 3c  77 69 6d 70 5f 77 3e 20  |yntax:.<wimp_w> |
000c7cb0  77 69 6e 5f 69 64 6c 65  5f 65 76 65 6e 74 5f 63  |win_idle_event_c|
000c7cc0  6c 61 69 6d 65 72 20 28  76 6f 69 64 29 3b 0a 48  |laimer (void);.H|
000c7cd0  65 61 64 65 72 3a 09 3c  77 69 6e 2e 68 3d 3e 77  |eader:.<win.h=>w|
000c7ce0  69 6e 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 48 61  |in>..Returns:.Ha|
000c7cf0  6e 64 6c 65 20 6f 66 20  77 69 6e 64 6f 77 20 63  |ndle of window c|
000c7d00  6c 61 69 6d 69 6e 67 20  69 64 6c 65 20 65 76 65  |laiming idle eve|
000c7d10  6e 74 73 2e 0a 0a 2d 31  20 69 73 20 72 65 74 75  |nts...-1 is retu|
000c7d20  72 6e 65 64 20 69 66 20  6e 6f 20 77 69 6e 64 6f  |rned if no windo|
000c7d30  77 20 69 73 20 63 6c 61  69 6d 69 6e 67 20 69 64  |w is claiming id|
000c7d40  6c 65 20 65 76 65 6e 74  73 2e 00 00 44 41 54 41  |le events...DATA|
000c7d50  90 00 00 00 77 69 6e 5f  69 6e 69 74 0a 53 79 6e  |....win_init.Syn|
000c7d60  74 61 78 3a 09 3c 42 4f  4f 4c 3e 20 77 69 6e 5f  |tax:.<BOOL> win_|
000c7d70  69 6e 69 74 20 28 76 6f  69 64 29 3b 0a 48 65 61  |init (void);.Hea|
000c7d80  64 65 72 3a 09 3c 77 69  6e 2e 68 3d 3e 77 69 6e  |der:.<win.h=>win|
000c7d90  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 3c 54 52 55  |>..Returns:.<TRU|
000c7da0  45 3e 20 69 66 20 73 75  63 63 65 73 73 66 75 6c  |E> if successful|
000c7db0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000c7dc0  20 69 6e 69 74 69 61 6c  69 73 65 73 20 74 68 65  | initialises the|
000c7dd0  20 77 69 6e 20 73 79 73  74 65 6d 2e 44 41 54 41  | win system.DATA|
000c7de0  f2 00 00 00 77 69 6e 5f  70 72 6f 63 65 73 73 65  |....win_processe|
000c7df0  76 65 6e 74 0a 53 79 6e  74 61 78 3a 09 3c 42 4f  |vent.Syntax:.<BO|
000c7e00  4f 4c 3e 20 77 69 6e 5f  70 72 6f 63 65 73 73 65  |OL> win_processe|
000c7e10  76 65 6e 74 20 28 3c 77  69 6d 70 5f 65 76 65 6e  |vent (<wimp_even|
000c7e20  74 73 74 72 3e 20 2a 65  29 3b 0a 48 65 61 64 65  |tstr> *e);.Heade|
000c7e30  72 3a 09 3c 77 69 6e 2e  68 3d 3e 77 69 6e 3e 0a  |r:.<win.h=>win>.|
000c7e40  0a 52 65 74 75 72 6e 73  3a 09 3c 54 52 55 45 3e  |.Returns:.<TRUE>|
000c7e50  20 69 66 20 65 76 65 6e  74 20 70 72 6f 63 65 73  | if event proces|
000c7e60  73 65 64 2e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |sed...This funct|
000c7e70  69 6f 6e 20 64 65 6c 69  76 65 72 73 20 61 6e 20  |ion delivers an |
000c7e80  65 76 65 6e 74 20 74 6f  20 69 74 73 20 72 65 6c  |event to its rel|
000c7e90  65 76 61 6e 74 20 77 69  6e 64 6f 77 2e 20 49 74  |evant window. It|
000c7ea0  20 69 73 20 63 61 6c 6c  65 64 20 62 79 20 3c 65  | is called by <e|
000c7eb0  76 65 6e 74 5f 70 72 6f  63 65 73 73 3d 3e 65 76  |vent_process=>ev|
000c7ec0  65 6e 74 5f 70 72 6f 63  65 73 73 5f 3e 2e 00 00  |ent_process_>...|
000c7ed0  44 41 54 41 4e 01 00 00  77 69 6e 5f 72 65 61 64  |DATAN...win_read|
000c7ee0  5f 65 76 65 6e 74 5f 68  61 6e 64 6c 65 72 0a 53  |_event_handler.S|
000c7ef0  79 6e 74 61 78 3a 09 3c  42 4f 4f 4c 3e 20 77 69  |yntax:.<BOOL> wi|
000c7f00  6e 5f 72 65 61 64 5f 65  76 65 6e 74 5f 68 61 6e  |n_read_event_han|
000c7f10  64 6c 65 72 20 28 3c 77  69 6d 70 5f 77 3e 20 77  |dler (<wimp_w> w|
000c7f20  69 6e 2c 20 3c 77 69 6e  5f 65 76 65 6e 74 5f 68  |in, <win_event_h|
000c7f30  61 6e 64 6c 65 72 3e 20  2a 66 75 6e 63 2c 20 76  |andler> *func, v|
000c7f40  6f 69 64 20 2a 2a 68 61  6e 64 6c 65 29 3b 0a 48  |oid **handle);.H|
000c7f50  65 61 64 65 72 3a 09 3c  77 69 6e 2e 68 3d 3e 77  |eader:.<win.h=>w|
000c7f60  69 6e 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 3c 54  |in>..Returns:.<T|
000c7f70  52 55 45 3e 20 69 66 20  74 68 65 20 67 69 76 65  |RUE> if the give|
000c7f80  6e 20 77 69 6e 64 6f 77  20 69 73 20 72 65 67 69  |n window is regi|
000c7f90  73 74 65 72 65 64 2e 0a  0a 54 68 69 73 20 66 75  |stered...This fu|
000c7fa0  6e 63 74 69 6f 6e 20 72  65 61 64 73 20 74 68 65  |nction reads the|
000c7fb0  20 65 76 65 6e 74 20 68  61 6e 64 6c 65 72 20 66  | event handler f|
000c7fc0  6f 72 20 61 20 67 69 76  65 6e 20 77 69 6e 64 6f  |or a given windo|
000c7fd0  77 20 61 6e 64 20 72 65  74 75 72 6e 73 20 69 74  |w and returns it|
000c7fe0  20 61 6e 64 20 69 74 73  20 68 61 6e 64 6c 65 20  | and its handle |
000c7ff0  69 6e 20 7b 2f 7d 2a 66  75 6e 63 7b 2f 7d 20 61  |in {/}*func{/} a|
000c8000  6e 64 20 7b 2f 7d 2a 68  61 6e 64 6c 65 7b 2f 7d  |nd {/}*handle{/}|
000c8010  20 72 65 73 70 65 63 74  69 76 65 6c 79 2e 00 00  | respectively...|
000c8020  44 41 54 41 e2 01 00 00  77 69 6e 5f 72 65 67 69  |DATA....win_regi|
000c8030  73 74 65 72 5f 65 76 65  6e 74 5f 68 61 6e 64 6c  |ster_event_handl|
000c8040  65 72 0a 53 79 6e 74 61  78 3a 09 76 6f 69 64 20  |er.Syntax:.void |
000c8050  77 69 6e 5f 72 65 67 69  73 74 65 72 5f 65 76 65  |win_register_eve|
000c8060  6e 74 5f 68 61 6e 64 6c  65 72 20 28 3c 77 69 6d  |nt_handler (<wim|
000c8070  70 5f 77 3e 20 77 69 6e  2c 20 3c 77 69 6e 5f 65  |p_w> win, <win_e|
000c8080  76 65 6e 74 5f 68 61 6e  64 6c 65 72 3e 20 66 75  |vent_handler> fu|
000c8090  6e 63 2c 20 76 6f 69 64  20 2a 68 61 6e 64 6c 65  |nc, void *handle|
000c80a0  29 3b 0a 48 65 61 64 65  72 3a 09 3c 77 69 6e 2e  |);.Header:.<win.|
000c80b0  68 3d 3e 77 69 6e 3e 0a  0a 54 68 69 73 20 66 75  |h=>win>..This fu|
000c80c0  6e 63 74 69 6f 6e 20 69  6e 73 74 61 6c 6c 73 20  |nction installs |
000c80d0  61 6e 20 65 76 65 6e 74  20 68 61 6e 64 6c 65 72  |an event handler|
000c80e0  20 66 75 6e 63 74 69 6f  6e 20 66 6f 72 20 61 20  | function for a |
000c80f0  67 69 76 65 6e 20 77 69  6e 64 6f 77 2e 20 2f 68  |given window. /h|
000c8100  61 6e 64 6c 65 2f 20 69  73 20 70 61 73 73 65 64  |andle/ is passed|
000c8110  20 73 74 72 61 69 67 68  74 20 74 6f 20 74 68 65  | straight to the|
000c8120  20 68 61 6e 64 6c 65 72  20 66 75 6e 63 74 69 6f  | handler functio|
000c8130  6e 2e 20 54 6f 20 72 65  6d 6f 76 65 20 61 20 68  |n. To remove a h|
000c8140  61 6e 64 6c 65 72 2c 20  63 61 6c 6c 20 77 69 74  |andler, call wit|
000c8150  68 20 2f 66 75 6e 63 2f  20 3d 20 3c 4e 55 4c 4c  |h /func/ = <NULL|
000c8160  3e 2e 20 54 6f 20 63 61  74 63 68 20 6b 65 79 20  |>. To catch key |
000c8170  65 76 65 6e 74 73 20 66  6f 72 20 69 63 6f 6e 20  |events for icon |
000c8180  62 61 72 20 69 63 6f 6e  73 2c 20 72 65 67 69 73  |bar icons, regis|
000c8190  74 65 72 20 61 20 68 61  6e 64 6c 65 72 20 66 6f  |ter a handler fo|
000c81a0  72 20 74 68 65 20 77 69  6e 64 6f 77 20 3c 77 69  |r the window <wi|
000c81b0  6e 5f 49 43 4f 4e 42 41  52 3e 2e 20 54 6f 20 63  |n_ICONBAR>. To c|
000c81c0  61 74 63 68 20 6c 6f 61  64 20 65 76 65 6e 74 20  |atch load event |
000c81d0  66 6f 72 20 61 6e 20 69  63 6f 6e 20 6f 6e 20 74  |for an icon on t|
000c81e0  68 65 20 69 63 6f 6e 20  62 61 72 20 75 73 65 20  |he icon bar use |
000c81f0  3c 77 69 6e 5f 49 43 4f  4e 42 41 52 4c 4f 41 44  |<win_ICONBARLOAD|
000c8200  3e 2e 00 00 44 41 54 41  e5 00 00 00 77 69 6e 5f  |>...DATA....win_|
000c8210  73 65 74 6d 65 6e 75 68  0a 53 79 6e 74 61 78 3a  |setmenuh.Syntax:|
000c8220  09 76 6f 69 64 20 77 69  6e 5f 73 65 74 6d 65 6e  |.void win_setmen|
000c8230  75 68 20 28 3c 77 69 6d  70 5f 77 3e 20 77 69 6e  |uh (<wimp_w> win|
000c8240  2c 20 76 6f 69 64 20 2a  68 61 6e 64 6c 65 29 3b  |, void *handle);|
000c8250  0a 48 65 61 64 65 72 3a  09 3c 77 69 6e 2e 68 3d  |.Header:.<win.h=|
000c8260  3e 77 69 6e 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |>win>..This func|
000c8270  74 69 6f 6e 73 20 61 74  74 61 63 68 65 73 20 74  |tions attaches t|
000c8280  68 65 20 67 69 76 65 6e  20 6d 65 6e 75 20 73 74  |he given menu st|
000c8290  72 75 63 74 75 72 65 20  28 70 6f 69 6e 74 65 64  |ructure (pointed|
000c82a0  20 74 6f 20 62 79 20 2f  68 61 6e 64 6c 65 2f 29  | to by /handle/)|
000c82b0  20 74 6f 20 74 68 65 20  67 69 76 65 6e 20 77 69  | to the given wi|
000c82c0  6e 64 6f 77 2e 20 54 68  69 73 20 69 73 20 75 73  |ndow. This is us|
000c82d0  65 64 20 62 79 20 3c 65  76 65 6e 74 5f 61 74 74  |ed by <event_att|
000c82e0  61 63 68 6d 65 6e 75 3e  2e 00 00 00 44 41 54 41  |achmenu>....DATA|
000c82f0  2a 01 00 00 77 69 6e 5f  73 65 74 74 69 74 6c 65  |*...win_settitle|
000c8300  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 77 69  |.Syntax:.void wi|
000c8310  6e 5f 73 65 74 74 69 74  6c 65 20 28 3c 77 69 6d  |n_settitle (<wim|
000c8320  70 5f 77 3e 20 77 69 6e  2c 20 63 68 61 72 20 2a  |p_w> win, char *|
000c8330  6e 65 77 74 69 74 6c 65  29 3b 0a 48 65 61 64 65  |newtitle);.Heade|
000c8340  72 3a 09 3c 77 69 6e 2e  68 3d 3e 77 69 6e 3e 0a  |r:.<win.h=>win>.|
000c8350  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
000c8360  68 61 6e 67 65 73 20 74  68 65 20 5f 49 4e 44 49  |hanges the _INDI|
000c8370  52 45 43 54 45 44 20 54  45 58 54 5f 20 74 69 74  |RECTED TEXT_ tit|
000c8380  6c 65 20 69 63 6f 6e 20  6f 66 20 74 68 65 20 67  |le icon of the g|
000c8390  69 76 65 6e 20 77 69 6e  64 6f 77 2e 20 41 6e 79  |iven window. Any|
000c83a0  20 77 69 6e 64 6f 77 73  20 63 72 65 61 74 65 64  | windows created|
000c83b0  20 66 72 6f 6d 20 74 68  65 20 73 61 6d 65 20 74  | from the same t|
000c83c0  65 6d 70 6c 61 74 65 20  77 69 6c 6c 20 68 61 76  |emplate will hav|
000c83d0  65 20 74 68 65 69 72 20  74 69 74 6c 65 73 20 63  |e their titles c|
000c83e0  68 61 6e 67 65 64 2c 20  75 6e 6c 65 73 73 20 74  |hanged, unless t|
000c83f0  68 65 79 20 77 65 72 65  20 63 6f 70 69 65 64 20  |hey were copied |
000c8400  75 73 69 6e 67 20 3c 74  65 6d 70 6c 61 74 65 5f  |using <template_|
000c8410  63 6f 70 79 3e 2e 00 00  44 41 54 41 da 00 00 00  |copy>...DATA....|
000c8420  77 69 6e 5f 75 6e 6b 6e  6f 77 6e 5f 65 76 65 6e  |win_unknown_even|
000c8430  74 5f 63 6c 61 69 6d 65  72 0a 53 79 6e 74 61 78  |t_claimer.Syntax|
000c8440  3a 09 3c 77 69 6d 70 5f  77 3e 20 77 69 6e 5f 75  |:.<wimp_w> win_u|
000c8450  6e 6b 6e 6f 77 6e 5f 65  76 65 6e 74 5f 63 6c 61  |nknown_event_cla|
000c8460  69 6d 65 72 20 28 76 6f  69 64 29 3b 0a 48 65 61  |imer (void);.Hea|
000c8470  64 65 72 3a 09 3c 77 69  6e 2e 68 3d 3e 77 69 6e  |der:.<win.h=>win|
000c8480  3e 0a 0a 52 65 74 75 72  6e 73 3a 09 48 61 6e 64  |>..Returns:.Hand|
000c8490  6c 65 20 6f 66 20 77 69  6e 64 6f 77 20 63 6c 61  |le of window cla|
000c84a0  69 6d 69 6e 67 20 65 76  65 6e 74 73 2e 0a 0a 54  |iming events...T|
000c84b0  65 6c 6c 73 20 79 6f 75  20 77 68 69 63 68 20 77  |ells you which w|
000c84c0  69 6e 64 6f 77 20 69 73  20 63 6c 61 69 6d 69 6e  |indow is claimin|
000c84d0  67 20 75 6e 6b 6e 6f 77  6e 20 65 76 65 6e 74 73  |g unknown events|
000c84e0  20 28 6f 72 20 2d 31 20  66 6f 72 20 6e 6f 6e 65  | (or -1 for none|
000c84f0  29 2e 00 00 44 41 54 41  42 01 00 00 77 69 6e 5f  |)...DATAB...win_|
000c8500  75 6e 6b 6e 6f 77 6e 5f  65 76 65 6e 74 5f 70 72  |unknown_event_pr|
000c8510  6f 63 65 73 73 6f 72 0a  54 68 69 73 20 74 79 70  |ocessor.This typ|
000c8520  65 20 69 73 20 64 65 66  69 6e 65 64 20 69 6e 20  |e is defined in |
000c8530  3c 77 69 6e 2e 68 3d 3e  77 69 6e 3e 2e 20 49 74  |<win.h=>win>. It|
000c8540  20 69 73 20 61 20 66 75  6e 63 74 69 6f 6e 20 75  | is a function u|
000c8550  73 65 64 20 66 6f 72 20  70 72 6f 63 65 73 73 69  |sed for processi|
000c8560  6e 67 20 75 6e 6b 6e 6f  77 6e 20 65 76 65 6e 74  |ng unknown event|
000c8570  73 20 28 53 68 6f 63 6b  21 20 48 6f 72 72 6f 72  |s (Shock! Horror|
000c8580  21 29 20 77 69 74 68 20  61 20 73 69 6d 69 6c 61  |!) with a simila|
000c8590  72 20 70 72 6f 74 6f 74  79 70 65 20 74 6f 3a 0a  |r prototype to:.|
000c85a0  7b 77 72 61 70 20 6f 66  66 7d 0a 7b 66 43 6f 64  |{wrap off}.{fCod|
000c85b0  65 3b 61 6c 69 67 6e 20  63 65 6e 74 72 65 7d 3c  |e;align centre}<|
000c85c0  42 4f 4f 4c 3e 20 6d 79  66 75 6e 63 20 28 3c 77  |BOOL> myfunc (<w|
000c85d0  69 6d 70 5f 65 76 65 6e  74 73 74 72 3e 20 2a 65  |imp_eventstr> *e|
000c85e0  2c 20 76 6f 69 64 20 2a  68 61 6e 64 6c 65 29 3b  |, void *handle);|
000c85f0  7b 66 3b 61 6c 69 67 6e  3b 77 72 61 70 7d 0a 0a  |{f;align;wrap}..|
000c8600  49 74 20 73 68 6f 75 6c  64 20 72 65 74 75 72 6e  |It should return|
000c8610  20 3c 54 52 55 45 3e 20  69 66 20 69 74 20 68 61  | <TRUE> if it ha|
000c8620  73 20 70 72 6f 63 65 73  73 65 64 20 74 68 65 20  |s processed the |
000c8630  65 76 65 6e 74 2e 00 00  44 41 54 41 bb 01 00 00  |event...DATA....|
000c8640  77 69 6e 5f 61 64 64 5f  75 6e 6b 6e 6f 77 6e 5f  |win_add_unknown_|
000c8650  65 76 65 6e 74 5f 70 72  6f 63 65 73 73 6f 72 0a  |event_processor.|
000c8660  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 77 69 6e  |Syntax:.void win|
000c8670  5f 61 64 64 5f 75 6e 6b  6e 6f 77 6e 5f 65 76 65  |_add_unknown_eve|
000c8680  6e 74 5f 70 72 6f 63 65  73 73 6f 72 20 28 3c 77  |nt_processor (<w|
000c8690  69 6e 5f 75 6e 6b 6e 6f  77 6e 5f 65 76 65 6e 74  |in_unknown_event|
000c86a0  5f 70 72 6f 63 65 73 73  6f 72 3e 20 66 75 6e 63  |_processor> func|
000c86b0  2c 20 76 6f 69 64 20 2a  68 61 6e 64 6c 65 29 3b  |, void *handle);|
000c86c0  0a 48 65 61 64 65 72 3a  09 3c 77 69 6e 2e 68 3d  |.Header:.<win.h=|
000c86d0  3e 77 69 6e 3e 0a 0a 54  68 69 73 20 66 75 6e 63  |>win>..This func|
000c86e0  74 69 6f 6e 20 61 64 64  73 20 61 20 68 61 6e 64  |tion adds a hand|
000c86f0  6c 65 72 20 66 6f 72 20  75 6e 6b 6e 6f 77 6e 20  |ler for unknown |
000c8700  65 76 65 6e 74 73 20 6f  6e 74 6f 20 74 68 65 20  |events onto the |
000c8710  66 72 6f 6e 74 20 6f 66  20 74 68 65 20 71 75 65  |front of the que|
000c8720  75 65 20 6f 66 20 73 75  63 68 20 68 61 6e 64 6c  |ue of such handl|
000c8730  65 72 73 2e 20 4b 6e 6f  77 6e 20 65 76 65 6e 74  |ers. Known event|
000c8740  73 20 61 72 65 3a 20 45  4e 55 4c 4c 2c 20 45 52  |s are: ENULL, ER|
000c8750  45 44 52 41 57 2c 20 45  43 4c 4f 53 45 2c 20 45  |EDRAW, ECLOSE, E|
000c8760  4f 50 45 4e 2c 20 45 50  54 52 4c 45 41 56 45 2c  |OPEN, EPTRLEAVE,|
000c8770  20 45 50 54 52 45 4e 54  45 52 2c 20 45 4b 45 59  | EPTRENTER, EKEY|
000c8780  2c 20 45 53 43 52 4f 4c  4c 2c 20 45 42 55 54 20  |, ESCROLL, EBUT |
000c8790  61 6e 64 20 45 53 45 4e  44 2f 45 53 45 4e 44 57  |and ESEND/ESENDW|
000c87a0  41 4e 54 41 43 4b 20 66  6f 72 20 74 68 65 20 66  |ANTACK for the f|
000c87b0  6f 6c 6c 6f 77 69 6e 67  20 6d 73 67 20 74 79 70  |ollowing msg typ|
000c87c0  65 73 3a 20 4d 43 4c 4f  53 45 44 4f 57 4e 2c 20  |es: MCLOSEDOWN, |
000c87d0  4d 44 41 54 41 53 41 56  45 2c 20 4d 44 41 54 41  |MDATASAVE, MDATA|
000c87e0  4c 4f 41 44 2c 20 4d 48  45 4c 50 52 45 51 55 45  |LOAD, MHELPREQUE|
000c87f0  53 54 2e 00 44 41 54 41  f8 00 00 00 77 69 6e 5f  |ST..DATA....win_|
000c8800  72 65 6d 6f 76 65 5f 75  6e 6b 6e 6f 77 6e 5f 65  |remove_unknown_e|
000c8810  76 65 6e 74 5f 70 72 6f  63 65 73 73 6f 72 0a 53  |vent_processor.S|
000c8820  79 6e 74 61 78 3a 09 76  6f 69 64 20 77 69 6e 5f  |yntax:.void win_|
000c8830  72 65 6d 6f 76 65 5f 75  6e 6b 6e 6f 77 6e 5f 65  |remove_unknown_e|
000c8840  76 65 6e 74 5f 70 72 6f  63 65 73 73 6f 72 20 28  |vent_processor (|
000c8850  3c 77 69 6e 5f 75 6e 6b  6e 6f 77 6e 5f 65 76 65  |<win_unknown_eve|
000c8860  6e 74 5f 70 72 6f 63 65  73 73 6f 72 3e 20 66 75  |nt_processor> fu|
000c8870  6e 63 2c 20 76 6f 69 64  20 2a 68 61 6e 64 6c 65  |nc, void *handle|
000c8880  29 3b 0a 48 65 61 64 65  72 3a 09 3c 77 69 6e 2e  |);.Header:.<win.|
000c8890  68 3d 3e 77 69 6e 3e 0a  0a 54 68 69 73 20 66 75  |h=>win>..This fu|
000c88a0  6e 63 74 69 6f 6e 20 72  65 6d 6f 76 65 73 20 61  |nction removes a|
000c88b0  20 68 61 6e 64 6c 65 72  20 66 6f 72 20 75 6e 6b  | handler for unk|
000c88c0  6e 6f 77 6e 20 65 76 65  6e 74 73 20 66 72 6f 6d  |nown events from|
000c88d0  20 74 68 65 20 71 75 65  75 65 20 6f 66 20 73 75  | the queue of su|
000c88e0  63 68 20 68 61 6e 64 6c  65 72 73 2e 44 49 52 24  |ch handlers.DIR$|
000c88f0  f0 02 00 00 f0 02 00 00  dc 8b 0c 00 46 fd ff ff  |............F...|
000c8900  d5 32 45 26 7a 00 00 00  13 00 00 00 00 00 00 00  |.2E&z...........|
000c8910  63 61 72 65 74 5f 00 00  58 8c 0c 00 46 fd ff ff  |caret_..X...F...|
000c8920  13 98 ea 24 91 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000c8930  63 6f 6c 5f 00 00 00 00  ec 8c 0c 00 46 fd ff ff  |col_........F...|
000c8940  7e fd 44 26 38 02 00 00  13 00 00 00 00 00 00 00  |~.D&8...........|
000c8950  63 6f 6c 70 61 6c 5f 00  24 8f 0c 00 46 fd ff ff  |colpal_.$...F...|
000c8960  36 21 45 26 45 00 00 00  13 00 00 00 00 00 00 00  |6!E&E...........|
000c8970  64 72 61 67 64 61 74 5f  00 00 00 00 6c 8f 0c 00  |dragdat_....l...|
000c8980  46 fd ff ff c2 43 45 26  9a 00 00 00 13 00 00 00  |F....CE&........|
000c8990  00 00 00 00 65 76 65 6e  74 73 5f 00 08 90 0c 00  |....events_.....|
000c89a0  46 fd ff ff f0 b6 ea 24  64 00 00 00 13 00 00 00  |F......$d.......|
000c89b0  00 00 00 00 66 6f 6e 74  5f 00 00 00 6c 90 0c 00  |....font_...l...|
000c89c0  46 fd ff ff e3 41 ea 24  fd 00 00 00 13 00 00 00  |F....A.$........|
000c89d0  00 00 00 00 69 63 6f 6e  5f 00 00 00 6c 91 0c 00  |....icon_...l...|
000c89e0  46 fd ff ff ac 0f 45 26  52 01 00 00 13 00 00 00  |F.....E&R.......|
000c89f0  00 00 00 00 69 63 6f 6e  64 61 74 5f 00 00 00 00  |....icondat_....|
000c8a00  c0 92 0c 00 46 fd ff ff  a4 38 38 26 fa 00 00 00  |....F....88&....|
000c8a10  13 00 00 00 00 00 00 00  69 64 5f 62 6f 72 64 5f  |........id_bord_|
000c8a20  00 00 00 00 bc 93 0c 00  46 fd ff ff 2b d0 37 26  |........F...+.7&|
000c8a30  5a 02 00 00 13 00 00 00  00 00 00 00 69 64 5f 62  |Z...........id_b|
000c8a40  75 74 5f 00 18 96 0c 00  46 fd ff ff 73 12 38 26  |ut_.....F...s.8&|
000c8a50  f8 03 00 00 13 00 00 00  00 00 00 00 69 64 5f 66  |............id_f|
000c8a60  6c 61 67 5f 00 00 00 00  10 9a 0c 00 46 fd ff ff  |lag_........F...|
000c8a70  40 2b 38 26 f5 00 00 00  13 00 00 00 00 00 00 00  |@+8&............|
000c8a80  69 64 5f 76 61 6c 5f 00  08 9b 0c 00 46 fd ff ff  |id_val_.....F...|
000c8a90  d0 f5 e8 24 a4 02 00 00  13 00 00 00 00 00 00 00  |...$............|
000c8aa0  69 6e 69 74 5f 00 00 00  ac 9d 0c 00 46 fd ff ff  |init_.......F...|
000c8ab0  e2 c6 45 26 84 00 00 00  13 00 00 00 00 00 00 00  |..E&............|
000c8ac0  6d 65 6e 75 73 5f 00 00  30 9e 0c 00 46 fd ff ff  |menus_..0...F...|
000c8ad0  5a 3c 45 26 41 01 00 00  13 00 00 00 00 00 00 00  |Z<E&A...........|
000c8ae0  6d 65 73 73 64 61 74 5f  00 00 00 00 74 9f 0c 00  |messdat_....t...|
000c8af0  46 fd ff ff b5 4d 45 26  e3 00 00 00 13 00 00 00  |F....ME&........|
000c8b00  00 00 00 00 6d 69 73 63  5f 00 00 00 58 a0 0c 00  |....misc_...X...|
000c8b10  46 fd ff ff df cd 41 26  8b 00 00 00 13 00 00 00  |F.....A&........|
000c8b20  00 00 00 00 6d 6f 75 73  65 69 6e 66 5f 00 00 00  |....mouseinf_...|
000c8b30  e4 a0 0c 00 46 fd ff ff  cc a4 e9 24 9a 01 00 00  |....F......$....|
000c8b40  13 00 00 00 00 00 00 00  6f 70 65 6e 5f 00 00 00  |........open_...|
000c8b50  80 a2 0c 00 46 fd ff ff  d0 2a ea 24 59 00 00 00  |....F....*.$Y...|
000c8b60  13 00 00 00 00 00 00 00  74 65 6d 70 5f 00 00 00  |........temp_...|
000c8b70  dc a2 0c 00 46 fd ff ff  41 28 b6 22 3c 00 00 00  |....F...A(."<...|
000c8b80  13 00 00 00 00 00 00 00  77 69 6d 70 65 72 72 5f  |........wimperr_|
000c8b90  00 00 00 00 18 a3 0c 00  46 fd ff ff 37 16 45 26  |........F...7.E&|
000c8ba0  cd 00 00 00 13 00 00 00  00 00 00 00 77 69 6e 64  |............wind|
000c8bb0  61 74 5f 00 e8 a3 0c 00  46 fd ff ff 09 f2 41 26  |at_.....F.....A&|
000c8bc0  db 00 00 00 13 00 00 00  00 00 00 00 6d 6f 75 73  |............mous|
000c8bd0  65 69 6e 66 5f 6d 61 63  00 00 00 00 44 41 54 41  |einf_mac....DATA|
000c8be0  7a 00 00 00 57 69 6d 70  20 63 61 72 65 74 2f 6b  |z...Wimp caret/k|
000c8bf0  65 79 70 72 65 73 73 20  64 61 74 61 0a 54 79 70  |eypress data.Typ|
000c8c00  65 73 3a 0a 0a 23 74 61  62 6c 65 20 63 6f 6c 75  |es:..#table colu|
000c8c10  6d 6e 73 20 32 0a 3c 6b  65 79 5f 70 72 65 73 73  |mns 2.<key_press|
000c8c20  3e 0a 3c 63 61 72 65 74  5f 62 6c 6f 63 6b 3e 0a  |>.<caret_block>.|
000c8c30  3c 6b 65 79 5f 62 6c 6f  63 6b 3e 0a 3c 70 6f 6c  |<key_block>.<pol|
000c8c40  6c 77 6f 72 64 5f 62 6c  6f 63 6b 3e 0a 23 65 6e  |lword_block>.#en|
000c8c50  64 74 61 62 6c 65 00 00  44 41 54 41 91 00 00 00  |dtable..DATA....|
000c8c60  43 6f 6c 6f 75 72 20 48  61 6e 64 6c 69 6e 67 0a  |Colour Handling.|
000c8c70  23 61 6c 69 67 6e 20 63  65 6e 74 72 65 0a 3c 77  |#align centre.<w|
000c8c80  69 6d 70 5f 72 65 61 64  70 61 6c 65 74 74 65 3d  |imp_readpalette=|
000c8c90  3e 77 69 6d 70 5f 72 65  61 64 70 61 6c 65 74 74  |>wimp_readpalett|
000c8ca0  65 5f 3e 0a 3c 77 69 6d  70 5f 73 65 74 70 61 6c  |e_>.<wimp_setpal|
000c8cb0  65 74 74 65 3d 3e 77 69  6d 70 5f 73 65 74 70 61  |ette=>wimp_setpa|
000c8cc0  6c 65 74 74 65 5f 3e 0a  3c 77 69 6d 70 5f 73 65  |lette_>.<wimp_se|
000c8cd0  74 63 6f 6c 6f 75 72 3d  3e 77 69 6d 70 5f 73 65  |tcolour=>wimp_se|
000c8ce0  74 63 6f 6c 6f 75 72 5f  3e 00 00 00 44 41 54 41  |tcolour_>...DATA|
000c8cf0  38 02 00 00 57 69 6d 70  20 63 6f 6c 6f 75 72 73  |8...Wimp colours|
000c8d00  2f 70 61 6c 65 74 74 65  73 0a 54 79 70 65 73 3a  |/palettes.Types:|
000c8d10  0a 0a 23 69 6e 64 65 6e  74 20 36 0a 23 54 61 62  |..#indent 6.#Tab|
000c8d20  6c 65 20 63 6f 6c 75 6d  6e 73 20 33 0a 3c 77 69  |le columns 3.<wi|
000c8d30  6d 70 5f 63 6f 6c 6f 75  72 3e 0a 3c 70 61 6c 65  |mp_colour>.<pale|
000c8d40  74 74 65 5f 65 6e 74 72  79 3e 0a 3c 70 61 6c 65  |tte_entry>.<pale|
000c8d50  74 74 65 5f 62 6c 6f 63  6b 3e 0a 23 45 6e 64 54  |tte_block>.#EndT|
000c8d60  61 62 6c 65 0a 23 69 6e  64 65 6e 74 0a 0a 4d 61  |able.#indent..Ma|
000c8d70  63 72 6f 73 3a 0a 0a 54  68 65 20 66 6f 6c 6c 6f  |cros:..The follo|
000c8d80  77 69 6e 67 20 6d 61 63  72 6f 73 20 61 72 65 20  |wing macros are |
000c8d90  64 65 66 69 6e 65 64 20  74 6f 20 72 65 70 72 65  |defined to repre|
000c8da0  73 65 6e 74 20 74 68 65  20 57 69 6d 70 20 63 6f  |sent the Wimp co|
000c8db0  6c 6f 75 72 73 20 30 2d  31 35 2e 20 57 48 49 54  |lours 0-15. WHIT|
000c8dc0  45 20 61 6e 64 20 47 52  45 59 30 20 61 72 65 20  |E and GREY0 are |
000c8dd0  65 71 75 69 76 61 6c 65  6e 74 2c 20 61 73 20 61  |equivalent, as a|
000c8de0  72 65 20 42 4c 41 43 4b  20 41 4e 44 20 47 52 45  |re BLACK AND GRE|
000c8df0  59 37 2e 0a 0a 23 69 6e  64 65 6e 74 20 36 0a 23  |Y7...#indent 6.#|
000c8e00  54 61 62 6c 65 20 63 6f  6c 75 6d 6e 73 20 32 0a  |Table columns 2.|
000c8e10  63 6f 6c 6f 75 72 5f 57  48 49 54 45 0a 63 6f 6c  |colour_WHITE.col|
000c8e20  6f 75 72 5f 47 52 45 59  30 0a 63 6f 6c 6f 75 72  |our_GREY0.colour|
000c8e30  5f 47 52 45 59 31 0a 63  6f 6c 6f 75 72 5f 47 52  |_GREY1.colour_GR|
000c8e40  45 59 32 0a 63 6f 6c 6f  75 72 5f 47 52 45 59 33  |EY2.colour_GREY3|
000c8e50  0a 63 6f 6c 6f 75 72 5f  47 52 45 59 34 0a 63 6f  |.colour_GREY4.co|
000c8e60  6c 6f 75 72 5f 47 52 45  59 35 0a 63 6f 6c 6f 75  |lour_GREY5.colou|
000c8e70  72 5f 47 52 45 59 36 0a  63 6f 6c 6f 75 72 5f 47  |r_GREY6.colour_G|
000c8e80  52 45 59 37 0a 63 6f 6c  6f 75 72 5f 42 4c 41 43  |REY7.colour_BLAC|
000c8e90  4b 0a 63 6f 6c 6f 75 72  5f 44 41 52 4b 5f 42 4c  |K.colour_DARK_BL|
000c8ea0  55 45 0a 63 6f 6c 6f 75  72 5f 59 45 4c 4c 4f 57  |UE.colour_YELLOW|
000c8eb0  0a 63 6f 6c 6f 75 72 5f  47 52 45 45 4e 0a 63 6f  |.colour_GREEN.co|
000c8ec0  6c 6f 75 72 5f 52 45 44  0a 63 6f 6c 6f 75 72 5f  |lour_RED.colour_|
000c8ed0  43 52 45 41 4d 0a 63 6f  6c 6f 75 72 5f 41 52 4d  |CREAM.colour_ARM|
000c8ee0  59 5f 47 52 45 45 4e 0a  63 6f 6c 6f 75 72 5f 4f  |Y_GREEN.colour_O|
000c8ef0  52 41 4e 47 45 0a 63 6f  6c 6f 75 72 5f 4c 49 47  |RANGE.colour_LIG|
000c8f00  48 54 5f 42 4c 55 45 0a  63 6f 6c 6f 75 72 5f 54  |HT_BLUE.colour_T|
000c8f10  52 41 4e 53 50 41 52 45  4e 54 0a 23 45 6e 64 54  |RANSPARENT.#EndT|
000c8f20  61 62 6c 65 44 41 54 41  45 00 00 00 57 69 6d 70  |ableDATAE...Wimp|
000c8f30  20 64 72 61 67 20 64 61  74 61 0a 54 79 70 65 73  | drag data.Types|
000c8f40  3a 0a 7b 61 6c 69 67 6e  20 63 65 6e 74 72 65 7d  |:.{align centre}|
000c8f50  0a 3c 64 72 61 67 5f 74  79 70 65 3e 0a 3c 64 72  |.<drag_type>.<dr|
000c8f60  61 67 5f 62 6c 6f 63 6b  3e 00 00 00 44 41 54 41  |ag_block>...DATA|
000c8f70  9a 00 00 00 57 69 6d 70  20 65 76 65 6e 74 73 0a  |....Wimp events.|
000c8f80  54 79 70 65 73 3a 0a 0a  23 54 61 62 6c 65 20 33  |Types:..#Table 3|
000c8f90  20 31 37 0a 3c 65 76 65  6e 74 5f 74 79 70 65 3e  | 17.<event_type>|
000c8fa0  0a 3c 65 76 65 6e 74 5f  70 6f 6c 6c 6d 61 73 6b  |.<event_pollmask|
000c8fb0  3e 0a 3c 73 63 72 6f 6c  6c 5f 72 71 3e 0a 3c 65  |>.<scroll_rq>.<e|
000c8fc0  76 65 6e 74 5f 64 61 74  61 3e 0a 3c 65 76 65 6e  |vent_data>.<even|
000c8fd0  74 5f 70 6f 6c 6c 62 6c  6f 63 6b 3e 0a 23 45 6e  |t_pollblock>.#En|
000c8fe0  64 54 61 62 6c 65 0a 0a  4d 61 63 72 6f 73 3a 0a  |dTable..Macros:.|
000c8ff0  0a 3c 77 69 6d 70 5f 4e  55 4d 42 45 52 4f 46 45  |.<wimp_NUMBEROFE|
000c9000  56 45 4e 54 53 3e 00 00  44 41 54 41 64 00 00 00  |VENTS>..DATAd...|
000c9010  46 6f 6e 74 20 48 61 6e  64 6c 69 6e 67 0a 23 7b  |Font Handling.#{|
000c9020  61 6c 69 67 6e 20 63 65  6e 74 72 65 0a 3c 77 69  |align centre.<wi|
000c9030  6d 70 5f 73 65 74 66 6f  6e 74 63 6f 6c 6f 75 72  |mp_setfontcolour|
000c9040  73 3e 0a 3c 77 69 6d 70  5f 73 65 74 5f 63 61 72  |s>.<wimp_set_car|
000c9050  65 74 5f 70 6f 73 3e 0a  3c 77 69 6d 70 5f 67 65  |et_pos>.<wimp_ge|
000c9060  74 5f 63 61 72 65 74 5f  70 6f 73 3e 44 41 54 41  |t_caret_pos>DATA|
000c9070  fd 00 00 00 49 63 6f 6e  20 48 61 6e 64 6c 69 6e  |....Icon Handlin|
000c9080  67 0a 23 74 61 62 6c 65  20 63 6f 6c 75 6d 6e 73  |g.#table columns|
000c9090  20 32 0a 3c 77 69 6d 70  5f 63 72 65 61 74 65 5f  | 2.<wimp_create_|
000c90a0  69 63 6f 6e 3e 0a 3c 77  69 6d 70 5f 64 65 6c 65  |icon>.<wimp_dele|
000c90b0  74 65 5f 69 63 6f 6e 3e  0a 3c 77 69 6d 70 5f 73  |te_icon>.<wimp_s|
000c90c0  65 74 5f 69 63 6f 6e 5f  73 74 61 74 65 3e 0a 3c  |et_icon_state>.<|
000c90d0  77 69 6d 70 5f 67 65 74  5f 69 63 6f 6e 5f 69 6e  |wimp_get_icon_in|
000c90e0  66 6f 3e 0a 3c 77 69 6d  70 5f 64 72 61 67 5f 62  |fo>.<wimp_drag_b|
000c90f0  6f 78 3e 0a 3c 77 69 6d  70 5f 77 68 69 63 68 5f  |ox>.<wimp_which_|
000c9100  69 63 6f 6e 3e 0a 3c 77  69 6d 70 5f 70 72 6f 63  |icon>.<wimp_proc|
000c9110  65 73 73 6b 65 79 3e 0a  3c 77 69 6d 70 5f 70 6c  |esskey>.<wimp_pl|
000c9120  6f 74 69 63 6f 6e 3d 3e  77 69 6d 70 5f 70 6c 6f  |oticon=>wimp_plo|
000c9130  74 69 63 6f 6e 5f 3e 0a  3c 77 69 6d 70 5f 72 65  |ticon_>.<wimp_re|
000c9140  61 64 70 69 78 74 72 61  6e 73 3d 3e 77 69 6d 70  |adpixtrans=>wimp|
000c9150  5f 72 65 61 64 70 69 78  74 72 61 6e 73 5f 3e 0a  |_readpixtrans_>.|
000c9160  23 65 6e 64 74 61 62 6c  65 00 00 00 44 41 54 41  |#endtable...DATA|
000c9170  52 01 00 00 57 69 6d 70  20 69 63 6f 6e 20 64 61  |R...Wimp icon da|
000c9180  74 61 0a 54 79 70 65 73  3a 0a 0a 23 54 61 62 6c  |ta.Types:..#Tabl|
000c9190  65 20 32 20 31 35 0a 3c  69 63 6f 6e 5f 66 6c 61  |e 2 15.<icon_fla|
000c91a0  67 73 3e 0a 3c 69 63 6f  6e 5f 69 6e 64 74 65 78  |gs>.<icon_indtex|
000c91b0  74 3e 0a 3c 69 63 6f 6e  5f 69 6e 64 73 70 72 69  |t>.<icon_indspri|
000c91c0  74 65 3e 0a 3c 69 63 6f  6e 5f 64 61 74 61 3e 0a  |te>.<icon_data>.|
000c91d0  3c 69 63 6f 6e 5f 62 6c  6f 63 6b 3e 0a 3c 69 63  |<icon_block>.<ic|
000c91e0  6f 6e 5f 63 72 65 61 74  65 62 6c 6f 63 6b 3e 0a  |on_createblock>.|
000c91f0  23 45 6e 64 54 61 62 6c  65 0a 0a 4d 61 63 72 6f  |#EndTable..Macro|
000c9200  73 3a 0a 0a 23 54 61 62  6c 65 20 34 20 32 35 0a  |s:..#Table 4 25.|
000c9210  3c 42 75 74 74 6f 6e 20  74 79 70 65 73 3d 3e 77  |<Button types=>w|
000c9220  5f 69 64 5f 62 75 74 5f  3e 0a 3c 49 63 6f 6e 20  |_id_but_>.<Icon |
000c9230  66 6c 61 67 20 62 69 74  73 3d 3e 77 5f 69 64 5f  |flag bits=>w_id_|
000c9240  66 6c 61 67 5f 3e 0a 3c  56 61 6c 69 64 61 74 69  |flag_>.<Validati|
000c9250  6f 6e 20 63 68 61 72 61  63 74 65 72 73 3d 3e 77  |on characters=>w|
000c9260  5f 69 64 5f 76 61 6c 5f  3e 0a 3c 42 6f 72 64 65  |_id_val_>.<Borde|
000c9270  72 20 74 79 70 65 73 3d  3e 77 5f 69 64 5f 62 6f  |r types=>w_id_bo|
000c9280  72 64 5f 3e 0a 3c 69 63  6f 6e 62 61 72 5f 52 49  |rd_>.<iconbar_RI|
000c9290  47 48 54 3e 0a 3c 69 63  6f 6e 62 61 72 5f 4c 45  |GHT>.<iconbar_LE|
000c92a0  46 54 3e 0a 3c 77 69 6e  64 6f 77 5f 49 43 4f 4e  |FT>.<window_ICON|
000c92b0  42 41 52 3e 0a 23 45 6e  64 54 61 62 6c 65 00 00  |BAR>.#EndTable..|
000c92c0  44 41 54 41 fa 00 00 00  57 69 6d 70 20 69 63 6f  |DATA....Wimp ico|
000c92d0  6e 20 62 6f 72 64 65 72  20 74 79 70 65 73 0a 54  |n border types.T|
000c92e0  68 65 73 65 20 6d 61 63  72 6f 73 20 61 72 65 20  |hese macros are |
000c92f0  64 65 66 69 6e 65 64 20  69 6e 20 3c 44 65 73 6b  |defined in <Desk|
000c9300  4c 69 62 3a 57 69 6d 70  2e 68 3d 3e 57 69 6d 70  |Lib:Wimp.h=>Wimp|
000c9310  3e 2e 20 54 68 65 79 20  61 72 65 20 74 68 65 20  |>. They are the |
000c9320  62 6f 72 64 65 72 20 74  79 70 65 73 20 75 73 65  |border types use|
000c9330  64 20 62 79 20 74 68 65  20 49 6e 74 65 72 66 61  |d by the Interfa|
000c9340  63 65 20 6d 6f 64 75 6c  65 20 28 6e 6f 74 20 52  |ce module (not R|
000c9350  49 53 43 20 4f 53 20 33  21 29 2e 0a 0a 23 69 6e  |ISC OS 3!)...#in|
000c9360  64 65 6e 74 20 36 0a 69  63 6f 6e 62 6f 72 64 65  |dent 6.iconborde|
000c9370  72 5f 50 4c 49 4e 54 48  09 30 0a 69 63 6f 6e 62  |r_PLINTH.0.iconb|
000c9380  6f 72 64 65 72 5f 53 55  52 52 4f 55 4e 44 09 31  |order_SURROUND.1|
000c9390  0a 69 63 6f 6e 62 6f 72  64 65 72 5f 4f 4b 42 55  |.iconborder_OKBU|
000c93a0  54 54 4f 4e 09 32 0a 69  63 6f 6e 62 6f 72 64 65  |TTON.2.iconborde|
000c93b0  72 5f 49 4e 44 45 4e 54  09 33 00 00 44 41 54 41  |r_INDENT.3..DATA|
000c93c0  5a 02 00 00 57 69 6d 70  20 69 63 6f 6e 20 62 75  |Z...Wimp icon bu|
000c93d0  74 74 6f 6e 20 74 79 70  65 73 0a 54 68 65 73 65  |tton types.These|
000c93e0  20 6d 61 63 72 6f 73 20  61 72 65 20 64 65 66 69  | macros are defi|
000c93f0  6e 65 64 20 69 6e 20 3c  44 65 73 6b 4c 69 62 3a  |ned in <DeskLib:|
000c9400  57 69 6d 70 2e 68 3d 3e  57 69 6d 70 3e 2e 0a 0a  |Wimp.h=>Wimp>...|
000c9410  23 74 61 62 20 2c 61 6c  69 67 6e 20 72 69 67 68  |#tab ,align righ|
000c9420  74 2c 0a 20 20 20 20 20  20 20 69 63 6f 6e 62 74  |t,.       iconbt|
000c9430  79 70 65 5f 4e 45 56 45  52 09 09 09 30 09 0a 20  |ype_NEVER...0.. |
000c9440  20 20 20 20 20 20 69 63  6f 6e 62 74 79 70 65 5f  |      iconbtype_|
000c9450  41 4c 57 41 59 53 09 09  09 31 09 0a 20 20 20 20  |ALWAYS...1..    |
000c9460  20 20 20 69 63 6f 6e 62  74 79 70 65 5f 41 55 54  |   iconbtype_AUT|
000c9470  4f 52 45 50 45 41 54 09  09 32 09 0a 20 20 20 20  |OREPEAT..2..    |
000c9480  20 20 20 69 63 6f 6e 62  74 79 70 65 5f 43 4c 49  |   iconbtype_CLI|
000c9490  43 4b 09 09 09 33 09 0a  20 20 20 20 20 20 20 69  |CK...3..       i|
000c94a0  63 6f 6e 62 74 79 70 65  5f 52 45 4c 45 41 53 45  |conbtype_RELEASE|
000c94b0  09 09 34 09 0a 20 20 20  20 20 20 20 69 63 6f 6e  |..4..       icon|
000c94c0  62 74 79 70 65 5f 44 4f  55 42 4c 45 43 4c 49 43  |btype_DOUBLECLIC|
000c94d0  4b 09 09 35 09 0a 20 20  20 20 20 20 20 69 63 6f  |K..5..       ico|
000c94e0  6e 62 74 79 70 65 5f 43  4c 49 43 4b 44 52 41 47  |nbtype_CLICKDRAG|
000c94f0  09 09 36 09 0a 20 20 20  20 20 20 20 69 63 6f 6e  |..6..       icon|
000c9500  62 74 79 70 65 5f 52 45  4c 45 41 53 45 44 52 41  |btype_RELEASEDRA|
000c9510  47 09 09 37 09 0a 20 20  20 20 20 20 20 69 63 6f  |G..7..       ico|
000c9520  6e 62 74 79 70 65 5f 44  4f 55 42 4c 45 44 52 41  |nbtype_DOUBLEDRA|
000c9530  47 09 09 38 09 0a 20 20  20 20 20 20 20 69 63 6f  |G..8..       ico|
000c9540  6e 62 74 79 70 65 5f 4d  45 4e 55 09 09 09 39 09  |nbtype_MENU...9.|
000c9550  0a 20 20 20 20 20 20 20  69 63 6f 6e 62 74 79 70  |.       iconbtyp|
000c9560  65 5f 44 4f 55 42 4c 45  43 4c 49 43 4b 44 52 41  |e_DOUBLECLICKDRA|
000c9570  47 09 31 30 09 0a 20 20  20 20 20 20 20 69 63 6f  |G.10..       ico|
000c9580  6e 62 74 79 70 65 5f 52  41 44 49 4f 09 09 09 31  |nbtype_RADIO...1|
000c9590  31 09 0a 20 20 20 20 20  20 20 69 63 6f 6e 62 74  |1..       iconbt|
000c95a0  79 70 65 5f 52 45 53 45  52 56 45 44 31 09 09 31  |ype_RESERVED1..1|
000c95b0  32 09 0a 20 20 20 20 20  20 20 69 63 6f 6e 62 74  |2..       iconbt|
000c95c0  79 70 65 5f 52 45 53 45  52 56 45 44 32 09 09 31  |ype_RESERVED2..1|
000c95d0  33 09 0a 20 20 20 20 20  20 20 69 63 6f 6e 62 74  |3..       iconbt|
000c95e0  79 70 65 5f 57 52 49 54  45 43 4c 49 43 4b 44 52  |ype_WRITECLICKDR|
000c95f0  41 47 09 09 31 34 09 0a  20 20 20 20 20 20 20 69  |AG..14..       i|
000c9600  63 6f 6e 62 74 79 70 65  5f 57 52 49 54 41 42 4c  |conbtype_WRITABL|
000c9610  45 09 09 31 35 09 00 00  44 41 54 41 f8 03 00 00  |E..15...DATA....|
000c9620  57 69 6d 70 20 69 63 6f  6e 20 66 6c 61 67 20 62  |Wimp icon flag b|
000c9630  69 74 73 0a 54 68 65 73  65 20 6d 61 63 72 6f 73  |its.These macros|
000c9640  20 61 72 65 20 64 65 66  69 6e 65 64 20 69 6e 20  | are defined in |
000c9650  3c 44 65 73 6b 4c 69 62  3a 57 69 6d 70 2e 68 3d  |<DeskLib:Wimp.h=|
000c9660  3e 57 69 6d 70 3e 2e 0a  0a 69 63 6f 6e 5f 54 45  |>Wimp>...icon_TE|
000c9670  58 54 09 30 78 30 30 30  30 30 30 30 31 09 2f 2a  |XT.0x00000001./*|
000c9680  20 63 6f 6e 74 61 69 6e  73 20 74 65 78 74 09 2a  | contains text.*|
000c9690  2f 0a 69 63 6f 6e 5f 53  50 52 49 54 45 09 30 78  |/.icon_SPRITE.0x|
000c96a0  30 30 30 30 30 30 30 32  09 2f 2a 20 69 73 20 61  |00000002./* is a|
000c96b0  20 73 70 72 69 74 65 09  2a 2f 0a 69 63 6f 6e 5f  | sprite.*/.icon_|
000c96c0  42 4f 52 44 45 52 09 30  78 30 30 30 30 30 30 30  |BORDER.0x0000000|
000c96d0  34 09 2f 2a 20 68 61 73  20 61 20 62 6f 72 64 65  |4./* has a borde|
000c96e0  72 09 2a 2f 0a 69 63 6f  6e 5f 48 43 45 4e 54 52  |r.*/.icon_HCENTR|
000c96f0  45 09 30 78 30 30 30 30  30 30 30 38 09 2f 2a 20  |E.0x00000008./* |
000c9700  68 6f 72 69 7a 6f 6e 74  61 6c 6c 79 20 63 65 6e  |horizontally cen|
000c9710  74 72 65 64 09 2a 2f 0a  69 63 6f 6e 5f 56 43 45  |tred.*/.icon_VCE|
000c9720  4e 54 52 45 09 30 78 30  30 30 30 30 30 31 30 09  |NTRE.0x00000010.|
000c9730  2f 2a 20 76 65 72 74 69  63 61 6c 6c 79 20 63 65  |/* vertically ce|
000c9740  6e 74 72 65 64 09 2a 2f  0a 69 63 6f 6e 5f 46 49  |ntred.*/.icon_FI|
000c9750  4c 4c 45 44 09 30 78 30  30 30 30 30 30 32 30 09  |LLED.0x00000020.|
000c9760  2f 2a 20 66 69 6c 6c 65  64 20 62 61 63 6b 67 72  |/* filled backgr|
000c9770  6f 75 6e 64 09 2a 2f 0a  69 63 6f 6e 5f 46 4f 4e  |ound.*/.icon_FON|
000c9780  54 09 30 78 30 30 30 30  30 30 34 30 09 2f 2a 20  |T.0x00000040./* |
000c9790  61 6e 74 69 2d 61 6c 69  61 73 65 64 20 66 6f 6e  |anti-aliased fon|
000c97a0  74 09 2a 2f 0a 69 63 6f  6e 5f 4e 45 45 44 53 48  |t.*/.icon_NEEDSH|
000c97b0  45 4c 50 09 30 78 30 30  30 30 30 30 38 30 09 2f  |ELP.0x00000080./|
000c97c0  2a 20 72 65 64 72 61 77  20 6e 65 65 64 73 20 68  |* redraw needs h|
000c97d0  65 6c 70 09 2a 2f 0a 69  63 6f 6e 5f 49 4e 44 49  |elp.*/.icon_INDI|
000c97e0  52 45 43 54 45 44 09 30  78 30 30 30 30 30 31 30  |RECTED.0x0000010|
000c97f0  30 09 2f 2a 20 64 61 74  61 20 69 73 20 27 69 6e  |0./* data is 'in|
000c9800  64 69 72 65 63 74 65 64  27 09 2a 2f 0a 69 63 6f  |directed'.*/.ico|
000c9810  6e 5f 52 4a 55 53 54 49  46 59 09 30 78 30 30 30  |n_RJUSTIFY.0x000|
000c9820  30 30 32 30 30 09 2f 2a  20 72 69 67 68 74 20 6a  |00200./* right j|
000c9830  75 73 74 69 66 69 65 64  09 2a 2f 0a 69 63 6f 6e  |ustified.*/.icon|
000c9840  5f 41 4c 4c 4f 57 41 44  4a 55 53 54 09 30 78 30  |_ALLOWADJUST.0x0|
000c9850  30 30 30 30 34 30 30 09  2f 2a 20 6d 75 6c 74 69  |0000400./* multi|
000c9860  70 6c 65 20 73 65 6c 65  63 74 20 77 69 74 68 20  |ple select with |
000c9870  61 64 6a 75 73 74 09 2a  2f 0a 69 63 6f 6e 5f 48  |adjust.*/.icon_H|
000c9880  41 4c 56 45 53 50 52 49  54 45 09 30 78 30 30 30  |ALVESPRITE.0x000|
000c9890  30 30 38 30 30 09 2f 2a  20 70 6c 6f 74 20 73 70  |00800./* plot sp|
000c98a0  72 69 74 65 73 20 68 61  6c 66 2d 73 69 7a 65 09  |rites half-size.|
000c98b0  2a 2f 0a 69 63 6f 6e 5f  42 55 54 54 4f 4e 54 59  |*/.icon_BUTTONTY|
000c98c0  50 45 09 30 78 30 30 30  30 31 30 30 30 09 2f 2a  |PE.0x00001000./*|
000c98d0  20 34 2d 62 69 74 20 66  69 65 6c 64 3a 20 62 75  | 4-bit field: bu|
000c98e0  74 74 6f 6e 20 74 79 70  65 09 2a 2f 0a 69 63 6f  |tton type.*/.ico|
000c98f0  6e 5f 53 45 4c 45 43 54  45 44 09 30 78 30 30 32  |n_SELECTED.0x002|
000c9900  30 30 30 30 30 09 2f 2a  20 73 65 6c 65 63 74 65  |00000./* selecte|
000c9910  64 20 62 79 20 75 73 65  72 20 28 69 6e 76 65 72  |d by user (inver|
000c9920  74 65 64 29 09 2a 2f 0a  69 63 6f 6e 5f 53 48 41  |ted).*/.icon_SHA|
000c9930  44 45 44 09 30 78 30 30  34 30 30 30 30 30 09 2f  |DED.0x00400000./|
000c9940  2a 20 63 61 6e 6e 6f 74  20 62 65 20 73 65 6c 65  |* cannot be sele|
000c9950  63 74 65 64 20 28 73 68  61 64 65 64 29 09 2a 2f  |cted (shaded).*/|
000c9960  0a 69 63 6f 6e 5f 44 45  4c 45 54 45 44 09 30 78  |.icon_DELETED.0x|
000c9970  30 30 38 30 30 30 30 30  09 2f 2a 20 68 61 73 20  |00800000./* has |
000c9980  62 65 65 6e 20 64 65 6c  65 74 65 64 09 2a 2f 0a  |been deleted.*/.|
000c9990  69 63 6f 6e 5f 46 4f 52  45 43 4f 4c 4f 55 52 09  |icon_FORECOLOUR.|
000c99a0  30 78 30 31 30 30 30 30  30 30 09 2f 2a 20 34 2d  |0x01000000./* 4-|
000c99b0  62 69 74 20 66 69 65 6c  64 3a 20 66 6f 72 65 67  |bit field: foreg|
000c99c0  72 6f 75 6e 64 20 63 6f  6c 6f 75 72 09 2a 2f 0a  |round colour.*/.|
000c99d0  69 63 6f 6e 5f 42 41 43  4b 43 4f 4c 4f 55 52 09  |icon_BACKCOLOUR.|
000c99e0  30 78 31 30 30 30 30 30  30 30 09 2f 2a 20 34 2d  |0x10000000./* 4-|
000c99f0  62 69 74 20 66 69 65 6c  64 3a 20 62 61 63 6b 67  |bit field: backg|
000c9a00  72 6f 75 6e 64 20 63 6f  6c 6f 75 72 09 2a 2f 0a  |round colour.*/.|
000c9a10  44 41 54 41 f5 00 00 00  57 69 6d 70 20 69 63 6f  |DATA....Wimp ico|
000c9a20  6e 20 76 61 6c 69 64 61  74 69 6f 6e 20 63 68 61  |n validation cha|
000c9a30  72 61 63 74 65 72 73 0a  54 68 65 73 65 20 6d 61  |racters.These ma|
000c9a40  63 72 6f 73 20 61 72 65  20 64 65 66 69 6e 65 64  |cros are defined|
000c9a50  20 69 6e 20 3c 44 65 73  6b 4c 69 62 3a 57 69 6d  | in <DeskLib:Wim|
000c9a60  70 2e 68 3d 3e 57 69 6d  70 3e 2e 0a 0a 23 69 6e  |p.h=>Wimp>...#in|
000c9a70  64 65 6e 74 20 33 0a 69  63 6f 6e 76 61 6c 69 64  |dent 3.iconvalid|
000c9a80  5f 41 4c 4c 4f 57 09 09  27 41 27 0a 69 63 6f 6e  |_ALLOW..'A'.icon|
000c9a90  76 61 6c 69 64 5f 42 4f  52 44 45 52 54 59 50 45  |valid_BORDERTYPE|
000c9aa0  09 27 52 27 0a 69 63 6f  6e 76 61 6c 69 64 5f 44  |.'R'.iconvalid_D|
000c9ab0  49 53 50 4c 41 59 09 27  44 27 0a 69 63 6f 6e 76  |ISPLAY.'D'.iconv|
000c9ac0  61 6c 69 64 5f 46 4f 4e  54 43 4f 4c 4f 55 52 53  |alid_FONTCOLOURS|
000c9ad0  09 27 46 27 0a 69 63 6f  6e 76 61 6c 69 64 5f 4c  |.'F'.iconvalid_L|
000c9ae0  49 4e 45 53 50 41 43 45  09 27 4c 27 0a 69 63 6f  |INESPACE.'L'.ico|
000c9af0  6e 76 61 6c 69 64 5f 53  50 52 49 54 45 4e 41 4d  |nvalid_SPRITENAM|
000c9b00  45 09 27 53 27 00 00 00  44 41 54 41 a4 02 00 00  |E.'S'...DATA....|
000c9b10  54 61 73 6b 20 4d 61 6e  61 67 65 6d 65 6e 74 20  |Task Management |
000c9b20  46 75 6e 63 74 69 6f 6e  73 0a 23 54 61 62 6c 65  |Functions.#Table|
000c9b30  20 31 31 20 32 34 0a 3c  77 69 6d 70 5f 69 6e 69  | 11 24.<wimp_ini|
000c9b40  74 69 61 6c 69 73 65 3d  3e 77 69 6d 70 5f 69 6e  |tialise=>wimp_in|
000c9b50  69 74 69 61 6c 69 73 65  5f 3e 0a 3c 77 69 6d 70  |itialise_>.<wimp|
000c9b60  5f 74 61 73 6b 69 6e 69  74 3e 0a 3c 77 69 6d 70  |_taskinit>.<wimp|
000c9b70  5f 70 6f 6c 6c 3d 3e 77  69 6d 70 5f 70 6f 6c 6c  |_poll=>wimp_poll|
000c9b80  5f 3e 0a 3c 77 69 6d 70  5f 70 6f 6c 6c 69 64 6c  |_>.<wimp_pollidl|
000c9b90  65 3d 3e 77 69 6d 70 5f  70 6f 6c 6c 69 64 6c 65  |e=>wimp_pollidle|
000c9ba0  5f 3e 0a 3c 77 69 6d 70  5f 67 65 74 5f 70 6f 69  |_>.<wimp_get_poi|
000c9bb0  6e 74 5f 69 6e 66 6f 3e  0a 3c 77 69 6d 70 5f 73  |nt_info>.<wimp_s|
000c9bc0  65 74 5f 70 6f 69 6e 74  5f 73 68 61 70 65 3e 0a  |et_point_shape>.|
000c9bd0  3c 77 69 6d 70 5f 63 6c  6f 73 65 64 6f 77 6e 3d  |<wimp_closedown=|
000c9be0  3e 77 69 6d 70 5f 63 6c  6f 73 65 64 6f 77 6e 5f  |>wimp_closedown_|
000c9bf0  3e 0a 3c 77 69 6d 70 5f  74 61 73 6b 63 6c 6f 73  |>.<wimp_taskclos|
000c9c00  65 3e 0a 3c 77 69 6d 70  5f 73 74 61 72 74 74 61  |e>.<wimp_startta|
000c9c10  73 6b 3d 3e 77 69 6d 70  5f 73 74 61 72 74 74 61  |sk=>wimp_startta|
000c9c20  73 6b 5f 3e 0a 3c 77 69  6d 70 5f 73 65 74 6d 6f  |sk_>.<wimp_setmo|
000c9c30  64 65 3d 3e 77 69 6d 70  5f 73 65 74 6d 6f 64 65  |de=>wimp_setmode|
000c9c40  5f 3e 0a 3c 77 69 6d 70  5f 73 70 72 69 74 65 6f  |_>.<wimp_spriteo|
000c9c50  70 3d 3e 77 69 6d 70 5f  73 70 72 69 74 65 6f 70  |p=>wimp_spriteop|
000c9c60  5f 3e 0a 3c 77 69 6d 70  5f 73 70 72 69 74 65 6f  |_>.<wimp_spriteo|
000c9c70  70 5f 66 75 6c 6c 3e 0a  3c 77 69 6d 70 5f 62 61  |p_full>.<wimp_ba|
000c9c80  73 65 6f 66 73 70 72 69  74 65 73 3d 3e 77 69 6d  |seofsprites=>wim|
000c9c90  70 5f 62 61 73 65 6f 66  73 70 72 69 74 65 73 5f  |p_baseofsprites_|
000c9ca0  3e 0a 3c 77 69 6d 70 5f  72 65 70 6f 72 74 65 72  |>.<wimp_reporter|
000c9cb0  72 6f 72 3d 3e 77 69 6d  70 5f 72 65 70 6f 72 74  |ror=>wimp_report|
000c9cc0  65 72 72 6f 72 5f 3e 0a  3c 77 69 6d 70 5f 73 65  |error_>.<wimp_se|
000c9cd0  6e 64 6d 65 73 73 61 67  65 3d 3e 77 69 6d 70 5f  |ndmessage=>wimp_|
000c9ce0  73 65 6e 64 6d 65 73 73  61 67 65 5f 3e 0a 3c 77  |sendmessage_>.<w|
000c9cf0  69 6d 70 5f 73 65 6e 64  77 6d 65 73 73 61 67 65  |imp_sendwmessage|
000c9d00  3e 0a 3c 77 69 6d 70 5f  73 6c 6f 74 73 69 7a 65  |>.<wimp_slotsize|
000c9d10  3e 0a 3c 77 69 6d 70 5f  74 72 61 6e 73 66 65 72  |>.<wimp_transfer|
000c9d20  62 6c 6f 63 6b 3d 3e 77  69 6d 70 5f 74 72 61 6e  |block=>wimp_tran|
000c9d30  73 66 65 72 62 6c 6f 63  6b 5f 3e 0a 3c 77 69 6d  |sferblock_>.<wim|
000c9d40  70 5f 63 6f 6d 6d 61 6e  64 77 69 6e 64 6f 77 3d  |p_commandwindow=|
000c9d50  3e 77 69 6d 70 5f 63 6f  6d 6d 61 6e 64 77 69 6e  |>wimp_commandwin|
000c9d60  64 6f 77 5f 3e 0a 3c 77  69 6d 70 5f 73 61 76 65  |dow_>.<wimp_save|
000c9d70  5f 66 70 5f 73 74 61 74  65 5f 6f 6e 5f 70 6f 6c  |_fp_state_on_pol|
000c9d80  6c 3e 0a 3c 77 69 6d 70  5f 63 6f 72 72 75 70 74  |l>.<wimp_corrupt|
000c9d90  5f 66 70 5f 73 74 61 74  65 5f 6f 6e 5f 70 6f 6c  |_fp_state_on_pol|
000c9da0  6c 3e 0a 23 45 6e 64 54  61 62 6c 65 44 41 54 41  |l>.#EndTableDATA|
000c9db0  84 00 00 00 57 69 6d 70  20 6d 65 6e 75 73 0a 54  |....Wimp menus.T|
000c9dc0  79 70 65 73 3a 0a 0a 23  74 61 62 6c 65 20 63 6f  |ypes:..#table co|
000c9dd0  6c 75 6d 6e 73 20 32 0a  3c 6d 65 6e 75 5f 70 74  |lumns 2.<menu_pt|
000c9de0  72 3e 0a 3c 6d 65 6e 75  5f 66 6c 61 67 73 3e 0a  |r>.<menu_flags>.|
000c9df0  3c 6d 65 6e 75 5f 73 75  62 6d 65 6e 75 3d 3e 6d  |<menu_submenu=>m|
000c9e00  65 6e 75 5f 73 75 62 6d  65 6e 75 5f 3e 0a 3c 6d  |enu_submenu_>.<m|
000c9e10  65 6e 75 5f 69 74 65 6d  3e 0a 3c 6d 65 6e 75 5f  |enu_item>.<menu_|
000c9e20  62 6c 6f 63 6b 3e 0a 23  65 6e 64 74 61 62 6c 65  |block>.#endtable|
000c9e30  44 41 54 41 41 01 00 00  57 69 6d 70 20 6d 65 73  |DATAA...Wimp mes|
000c9e40  73 61 67 65 20 64 61 74  61 0a 54 79 70 65 73 3a  |sage data.Types:|
000c9e50  0a 0a 23 54 61 62 6c 65  20 37 20 32 31 0a 3c 6d  |..#Table 7 21.<m|
000c9e60  65 73 73 61 67 65 5f 61  63 74 69 6f 6e 3e 0a 3c  |essage_action>.<|
000c9e70  6d 65 73 73 61 67 65 5f  62 6c 6f 63 6b 3e 0a 3c  |message_block>.<|
000c9e80  6d 65 73 73 61 67 65 5f  64 65 73 74 69 6e 65 65  |message_destinee|
000c9e90  3e 0a 3c 6d 65 73 73 61  67 65 5f 68 65 61 64 65  |>.<message_heade|
000c9ea0  72 3e 0a 3c 6d 65 73 73  61 67 65 5f 64 61 74 61  |r>.<message_data|
000c9eb0  73 61 76 65 3e 0a 3c 6d  65 73 73 61 67 65 5f 64  |save>.<message_d|
000c9ec0  61 74 61 73 61 76 65 61  63 6b 3e 0a 3c 6d 65 73  |atasaveack>.<mes|
000c9ed0  73 61 67 65 5f 64 61 74  61 6c 6f 61 64 3e 0a 3c  |sage_dataload>.<|
000c9ee0  6d 65 73 73 61 67 65 5f  64 61 74 61 6f 70 65 6e  |message_dataopen|
000c9ef0  3e 0a 3c 6d 65 73 73 61  67 65 5f 72 61 6d 66 65  |>.<message_ramfe|
000c9f00  74 63 68 3e 0a 3c 6d 65  73 73 61 67 65 5f 72 61  |tch>.<message_ra|
000c9f10  6d 74 72 61 6e 73 6d 69  74 3e 0a 3c 6d 65 73 73  |mtransmit>.<mess|
000c9f20  61 67 65 5f 68 65 6c 70  72 65 71 75 65 73 74 3e  |age_helprequest>|
000c9f30  0a 3c 6d 65 73 73 61 67  65 5f 68 65 6c 70 72 65  |.<message_helpre|
000c9f40  70 6c 79 3e 0a 3c 6d 65  73 73 61 67 65 5f 70 72  |ply>.<message_pr|
000c9f50  69 6e 74 3e 0a 3c 6d 65  73 73 61 67 65 5f 6d 65  |int>.<message_me|
000c9f60  6e 75 77 61 72 6e 3e 0a  23 45 6e 64 54 61 62 6c  |nuwarn>.#EndTabl|
000c9f70  65 00 00 00 44 41 54 41  e3 00 00 00 4d 69 73 63  |e...DATA....Misc|
000c9f80  65 6c 6c 61 6e 65 6f 75  73 0a 54 79 70 65 73 3a  |ellaneous.Types:|
000c9f90  0a 0a 23 54 61 62 6c 65  20 35 20 31 36 0a 3c 77  |..#Table 5 16.<w|
000c9fa0  69 6d 70 5f 70 6f 69 6e  74 3e 0a 3c 77 69 6d 70  |imp_point>.<wimp|
000c9fb0  5f 63 6f 6f 72 64 3e 0a  3c 77 69 6d 70 5f 72 65  |_coord>.<wimp_re|
000c9fc0  63 74 3e 0a 3c 77 69 6d  70 5f 62 6f 78 3e 0a 3c  |ct>.<wimp_box>.<|
000c9fd0  77 69 6e 64 6f 77 5f 68  61 6e 64 6c 65 3e 0a 3c  |window_handle>.<|
000c9fe0  69 63 6f 6e 5f 68 61 6e  64 6c 65 3e 0a 3c 74 61  |icon_handle>.<ta|
000c9ff0  73 6b 5f 68 61 6e 64 6c  65 3e 0a 3c 66 6f 6e 74  |sk_handle>.<font|
000ca000  5f 61 72 72 61 79 3e 0a  3c 74 65 6d 70 6c 61 74  |_array>.<templat|
000ca010  65 5f 62 6c 6f 63 6b 3e  0a 3c 73 63 61 6c 65 5f  |e_block>.<scale_|
000ca020  62 6c 6f 63 6b 3e 0a 23  45 6e 64 54 61 62 6c 65  |block>.#EndTable|
000ca030  0a 0a 4d 61 63 72 6f 73  3a 0a 0a 7b 61 6c 69 67  |..Macros:..{alig|
000ca040  6e 20 63 65 6e 74 72 65  7d 3c 77 69 6d 70 5f 4d  |n centre}<wimp_M|
000ca050  41 58 4e 41 4d 45 3e 00  44 41 54 41 8b 00 00 00  |AXNAME>.DATA....|
000ca060  4d 6f 75 73 65 2f 70 6f  69 6e 74 65 72 20 69 6e  |Mouse/pointer in|
000ca070  66 6f 0a 54 79 70 65 73  3a 0a 0a 23 74 61 62 6c  |fo.Types:..#tabl|
000ca080  65 20 63 6f 6c 75 6d 6e  73 20 32 0a 3c 62 75 74  |e columns 2.<but|
000ca090  74 6f 6e 5f 73 74 61 74  65 3e 0a 3c 6d 6f 75 73  |ton_state>.<mous|
000ca0a0  65 5f 62 6c 6f 63 6b 3e  0a 3c 70 6f 69 6e 74 65  |e_block>.<pointe|
000ca0b0  72 5f 73 68 61 70 65 62  6c 6f 63 6b 3e 0a 23 65  |r_shapeblock>.#e|
000ca0c0  6e 64 74 61 62 6c 65 0a  0a 3c 4d 61 63 72 6f 73  |ndtable..<Macros|
000ca0d0  3d 3e 77 5f 6d 6f 75 73  65 69 6e 66 5f 6d 61 63  |=>w_mouseinf_mac|
000ca0e0  3e 0a 0a 00 44 41 54 41  9a 01 00 00 57 69 6e 64  |>...DATA....Wind|
000ca0f0  6f 77 20 48 61 6e 64 6c  69 6e 67 20 46 75 6e 63  |ow Handling Func|
000ca100  74 69 6f 6e 73 0a 23 54  61 62 6c 65 20 38 20 32  |tions.#Table 8 2|
000ca110  32 0a 3c 77 69 6d 70 5f  63 72 65 61 74 65 5f 77  |2.<wimp_create_w|
000ca120  69 6e 64 3e 0a 3c 77 69  6d 70 5f 64 65 6c 65 74  |ind>.<wimp_delet|
000ca130  65 5f 77 69 6e 64 3e 0a  3c 77 69 6d 70 5f 6f 70  |e_wind>.<wimp_op|
000ca140  65 6e 5f 77 69 6e 64 3e  0a 3c 77 69 6d 70 5f 63  |en_wind>.<wimp_c|
000ca150  6c 6f 73 65 5f 77 69 6e  64 3e 0a 3c 77 69 6d 70  |lose_wind>.<wimp|
000ca160  5f 72 65 64 72 61 77 5f  77 69 6e 64 3e 0a 3c 77  |_redraw_wind>.<w|
000ca170  69 6d 70 5f 75 70 64 61  74 65 5f 77 69 6e 64 3e  |imp_update_wind>|
000ca180  0a 3c 77 69 6d 70 5f 67  65 74 5f 72 65 63 74 61  |.<wimp_get_recta|
000ca190  6e 67 6c 65 3e 0a 3c 77  69 6d 70 5f 67 65 74 5f  |ngle>.<wimp_get_|
000ca1a0  77 69 6e 64 5f 73 74 61  74 65 3e 0a 3c 77 69 6d  |wind_state>.<wim|
000ca1b0  70 5f 67 65 74 5f 77 69  6e 64 5f 69 6e 66 6f 3e  |p_get_wind_info>|
000ca1c0  0a 3c 77 69 6d 70 5f 66  6f 72 63 65 5f 72 65 64  |.<wimp_force_red|
000ca1d0  72 61 77 3e 0a 3c 77 69  6d 70 5f 63 72 65 61 74  |raw>.<wimp_creat|
000ca1e0  65 5f 6d 65 6e 75 3e 0a  3c 77 69 6d 70 5f 64 65  |e_menu>.<wimp_de|
000ca1f0  63 6f 64 65 5f 6d 65 6e  75 3e 0a 3c 77 69 6d 70  |code_menu>.<wimp|
000ca200  5f 73 65 74 5f 65 78 74  65 6e 74 3e 0a 3c 77 69  |_set_extent>.<wi|
000ca210  6d 70 5f 67 65 74 77 69  6e 64 6f 77 6f 75 74 6c  |mp_getwindowoutl|
000ca220  69 6e 65 3d 3e 77 69 6d  70 5f 67 65 74 77 69 6e  |ine=>wimp_getwin|
000ca230  64 6f 77 6f 75 74 6c 69  6e 65 5f 3e 0a 3c 77 69  |dowoutline_>.<wi|
000ca240  6d 70 5f 62 6c 6f 63 6b  63 6f 70 79 3d 3e 77 69  |mp_blockcopy=>wi|
000ca250  6d 70 5f 62 6c 6f 63 6b  63 6f 70 79 5f 3e 0a 3c  |mp_blockcopy_>.<|
000ca260  77 69 6d 70 5f 63 72 65  61 74 65 5f 73 75 62 6d  |wimp_create_subm|
000ca270  65 6e 75 3e 0a 23 45 6e  64 54 61 62 6c 65 00 00  |enu>.#EndTable..|
000ca280  44 41 54 41 59 00 00 00  54 65 6d 70 6c 61 74 65  |DATAY...Template|
000ca290  20 48 61 6e 64 6c 69 6e  67 0a 3c 77 69 6d 70 5f  | Handling.<wimp_|
000ca2a0  6f 70 65 6e 5f 74 65 6d  70 6c 61 74 65 3e 0a 3c  |open_template>.<|
000ca2b0  77 69 6d 70 5f 63 6c 6f  73 65 5f 74 65 6d 70 6c  |wimp_close_templ|
000ca2c0  61 74 65 3e 0a 3c 77 69  6d 70 5f 6c 6f 61 64 5f  |ate>.<wimp_load_|
000ca2d0  74 65 6d 70 6c 61 74 65  3e 00 00 00 44 41 54 41  |template>...DATA|
000ca2e0  3c 00 00 00 57 69 6d 70  20 65 72 72 6f 72 73 0a  |<...Wimp errors.|
000ca2f0  4a 75 73 74 20 6f 6e 65  20 74 79 70 65 20 69 73  |Just one type is|
000ca300  20 64 65 66 69 6e 65 64  3a 20 3c 65 72 72 6f 72  | defined: <error|
000ca310  5f 66 6c 61 67 73 3e 2e  44 41 54 41 cd 00 00 00  |_flags>.DATA....|
000ca320  57 69 6e 64 6f 77 20 64  61 74 61 0a 54 79 70 65  |Window data.Type|
000ca330  73 3a 0a 0a 23 54 61 62  6c 65 20 35 20 32 33 0a  |s:..#Table 5 23.|
000ca340  3c 77 69 6e 64 6f 77 5f  66 6c 61 67 73 3e 0a 3c  |<window_flags>.<|
000ca350  77 69 6e 64 6f 77 5f 6d  69 6e 73 69 7a 65 3e 0a  |window_minsize>.|
000ca360  3c 77 69 6e 64 6f 77 5f  63 6f 6c 6f 75 72 69 6e  |<window_colourin|
000ca370  64 69 63 65 73 3e 0a 3c  77 69 6e 64 6f 77 5f 62  |dices>.<window_b|
000ca380  6c 6f 63 6b 3e 0a 3c 77  69 6e 64 6f 77 5f 6f 70  |lock>.<window_op|
000ca390  65 6e 62 6c 6f 63 6b 3e  0a 3c 77 69 6e 64 6f 77  |enblock>.<window|
000ca3a0  5f 73 74 61 74 65 3e 0a  3c 77 69 6e 64 6f 77 5f  |_state>.<window_|
000ca3b0  69 6e 66 6f 3e 0a 3c 77  69 6e 64 6f 77 5f 72 65  |info>.<window_re|
000ca3c0  64 72 61 77 62 6c 6f 63  6b 3e 0a 3c 77 69 6e 64  |drawblock>.<wind|
000ca3d0  6f 77 5f 6f 75 74 6c 69  6e 65 3e 0a 23 45 6e 64  |ow_outline>.#End|
000ca3e0  54 61 62 6c 65 00 00 00  44 41 54 41 db 00 00 00  |Table...DATA....|
000ca3f0  4d 6f 75 73 65 2f 50 6f  69 6e 74 65 72 20 6d 61  |Mouse/Pointer ma|
000ca400  63 72 6f 73 0a 62 75 74  74 6f 6e 5f 41 44 4a 55  |cros.button_ADJU|
000ca410  53 54 09 30 78 30 30 30  30 30 30 30 31 0a 62 75  |ST.0x00000001.bu|
000ca420  74 74 6f 6e 5f 4d 45 4e  55 09 30 78 30 30 30 30  |tton_MENU.0x0000|
000ca430  30 30 30 32 0a 62 75 74  74 6f 6e 5f 53 45 4c 45  |0002.button_SELE|
000ca440  43 54 09 30 78 30 30 30  30 30 30 30 34 0a 62 75  |CT.0x00000004.bu|
000ca450  74 74 6f 6e 5f 44 52 41  47 41 44 4a 55 53 54 09  |tton_DRAGADJUST.|
000ca460  30 78 30 30 30 30 30 30  31 30 0a 62 75 74 74 6f  |0x00000010.butto|
000ca470  6e 5f 44 52 41 47 53 45  4c 45 43 54 09 30 78 30  |n_DRAGSELECT.0x0|
000ca480  30 30 30 30 30 34 30 0a  62 75 74 74 6f 6e 5f 43  |0000040.button_C|
000ca490  4c 49 43 4b 41 44 4a 55  53 54 09 30 78 30 30 30  |LICKADJUST.0x000|
000ca4a0  30 30 31 30 30 0a 62 75  74 74 6f 6e 5f 43 4c 49  |00100.button_CLI|
000ca4b0  43 4b 53 45 4c 45 43 54  09 30 78 30 30 30 30 30  |CKSELECT.0x00000|
000ca4c0  34 30 30 00 44 49 52 24  9c 00 00 00 9c 00 00 00  |400.DIR$........|
000ca4d0  60 a5 0c 00 46 ff ff ff  56 b4 ec 24 7e 01 00 00  |`...F...V..$~...|
000ca4e0  13 00 00 00 00 00 00 00  78 66 65 72 72 65 63 76  |........xferrecv|
000ca4f0  00 00 00 00 e0 a6 0c 00  46 fd ff ff c6 08 85 2f  |........F....../|
000ca500  98 01 00 00 13 01 00 00  00 00 00 00 78 66 65 72  |............xfer|
000ca510  72 65 63 76 5f 00 00 00  a4 b5 0c 00 46 ff ff ff  |recv_.......F...|
000ca520  82 d8 ec 24 ce 02 00 00  13 00 00 00 00 00 00 00  |...$............|
000ca530  78 66 65 72 73 65 6e 64  00 00 00 00 74 b8 0c 00  |xfersend....t...|
000ca540  46 fd ff ff c9 09 85 2f  24 02 00 00 13 01 00 00  |F....../$.......|
000ca550  00 00 00 00 58 66 65 72  53 65 6e 64 5f 00 00 00  |....XferSend_...|
000ca560  44 41 54 41 7e 01 00 00  78 66 65 72 72 65 63 76  |DATA~...xferrecv|
000ca570  2e 68 0a 54 68 65 20 5c  3c 78 66 65 72 72 65 63  |.h.The \<xferrec|
000ca580  76 2e 68 3e 20 68 65 61  64 65 72 20 64 65 63 6c  |v.h> header decl|
000ca590  61 72 65 73 20 66 75 6e  63 74 69 6f 6e 73 20 66  |ares functions f|
000ca5a0  6f 72 20 67 65 6e 65 72  61 6c 20 70 75 72 70 6f  |or general purpo|
000ca5b0  73 65 20 69 6d 70 6f 72  74 20 6f 66 20 64 61 74  |se import of dat|
000ca5c0  61 20 62 79 20 61 6e 20  69 63 6f 6e 20 64 72 61  |a by an icon dra|
000ca5d0  67 2e 0a 0a 46 75 6e 63  74 69 6f 6e 73 3a 0a 0a  |g...Functions:..|
000ca5e0  23 69 6e 64 65 6e 74 20  32 0a 23 54 61 62 6c 65  |#indent 2.#Table|
000ca5f0  20 63 6f 6c 75 6d 6e 73  20 32 0a 3c 78 66 65 72  | columns 2.<xfer|
000ca600  72 65 63 76 5f 63 68 65  63 6b 69 6e 73 65 72 74  |recv_checkinsert|
000ca610  3e 0a 3c 78 66 65 72 72  65 63 76 5f 69 6e 73 65  |>.<xferrecv_inse|
000ca620  72 74 66 69 6c 65 6f 6b  3e 0a 3c 78 66 65 72 72  |rtfileok>.<xferr|
000ca630  65 63 76 5f 63 68 65 63  6b 70 72 69 6e 74 3e 0a  |ecv_checkprint>.|
000ca640  3c 78 66 65 72 72 65 63  76 5f 70 72 69 6e 74 66  |<xferrecv_printf|
000ca650  69 6c 65 6f 6b 3e 0a 3c  78 66 65 72 72 65 63 76  |ileok>.<xferrecv|
000ca660  5f 63 68 65 63 6b 69 6d  70 6f 72 74 3e 0a 3c 78  |_checkimport>.<x|
000ca670  66 65 72 72 65 63 76 5f  64 6f 69 6d 70 6f 72 74  |ferrecv_doimport|
000ca680  3e 0a 3c 78 66 65 72 72  65 63 76 5f 66 69 6c 65  |>.<xferrecv_file|
000ca690  5f 69 73 5f 73 61 66 65  3e 0a 23 45 6e 64 54 61  |_is_safe>.#EndTa|
000ca6a0  62 6c 65 0a 23 69 6e 64  65 6e 74 0a 0a 54 79 70  |ble.#indent..Typ|
000ca6b0  65 73 3a 0a 7b 61 6c 69  67 6e 20 63 65 6e 74 72  |es:.{align centr|
000ca6c0  65 7d 0a 3c 78 66 65 72  72 65 63 76 5f 62 75 66  |e}.<xferrecv_buf|
000ca6d0  66 65 72 5f 70 72 6f 63  65 73 73 6f 72 3e 00 00  |fer_processor>..|
000ca6e0  44 49 52 24 98 01 00 00  98 01 00 00 78 a8 0c 00  |DIR$........x...|
000ca6f0  46 ff ff ff 3c c2 ec 24  b6 01 00 00 13 00 00 00  |F...<..$........|
000ca700  00 00 00 00 62 75 66 66  65 72 5f 70 72 6f 63 65  |....buffer_proce|
000ca710  73 73 6f 72 00 00 00 00  30 aa 0c 00 46 ff ff ff  |ssor....0...F...|
000ca720  4a 8e ec 24 56 01 00 00  13 00 00 00 00 00 00 00  |J..$V...........|
000ca730  63 68 65 63 6b 69 6d 70  6f 72 74 00 88 ab 0c 00  |checkimport.....|
000ca740  46 ff ff ff 0f 57 ec 24  85 01 00 00 13 00 00 00  |F....W.$........|
000ca750  00 00 00 00 63 68 65 63  6b 69 6e 73 65 72 74 00  |....checkinsert.|
000ca760  10 ad 0c 00 46 ff ff ff  59 7d ec 24 41 01 00 00  |....F...Y}.$A...|
000ca770  13 00 00 00 00 00 00 00  63 68 65 63 6b 70 72 69  |........checkpri|
000ca780  6e 74 00 00 54 ae 0c 00  46 ff ff ff 36 9f ec 24  |nt..T...F...6..$|
000ca790  a7 01 00 00 13 00 00 00  00 00 00 00 64 6f 69 6d  |............doim|
000ca7a0  70 6f 72 74 00 00 00 00  fc af 0c 00 46 ff ff ff  |port........F...|
000ca7b0  07 bd 58 26 bd 00 00 00  13 00 00 00 00 00 00 00  |..X&............|
000ca7c0  45 70 69 6c 6f 67 00 00  bc b0 0c 00 46 ff ff ff  |Epilog......F...|
000ca7d0  fe a7 ec 24 0a 01 00 00  13 00 00 00 00 00 00 00  |...$............|
000ca7e0  66 69 6c 65 5f 69 73 5f  73 61 66 65 00 00 00 00  |file_is_safe....|
000ca7f0  c8 b1 0c 00 46 ff ff ff  3b 6b ec 24 eb 00 00 00  |....F...;k.$....|
000ca800  13 00 00 00 00 00 00 00  69 6e 73 65 72 74 66 69  |........insertfi|
000ca810  6c 65 6f 6b 00 00 00 00  b4 b2 0c 00 46 ff ff ff  |leok........F...|
000ca820  b9 83 ec 24 f4 00 00 00  13 00 00 00 00 00 00 00  |...$............|
000ca830  70 72 69 6e 74 66 69 6c  65 6f 6b 00 a8 b3 0c 00  |printfileok.....|
000ca840  46 ff ff ff 51 b9 58 26  31 01 00 00 13 00 00 00  |F...Q.X&1.......|
000ca850  00 00 00 00 50 72 6f 6c  6f 67 00 00 dc b4 0c 00  |....Prolog......|
000ca860  46 fd ff ff a3 b4 58 26  c6 00 00 00 13 00 00 00  |F.....X&........|
000ca870  00 00 00 00 54 4c 00 00  44 41 54 41 b6 01 00 00  |....TL..DATA....|
000ca880  78 66 65 72 72 65 63 76  5f 62 75 66 66 65 72 5f  |xferrecv_buffer_|
000ca890  70 72 6f 63 65 73 73 6f  72 0a 54 68 69 73 20 74  |processor.This t|
000ca8a0  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
000ca8b0  6e 20 3c 78 66 65 72 72  65 63 76 2e 68 3d 3e 78  |n <xferrecv.h=>x|
000ca8c0  66 65 72 72 65 63 76 3e  2e 20 49 74 20 69 73 20  |ferrecv>. It is |
000ca8d0  61 20 66 75 6e 63 74 69  6f 6e 20 75 73 65 64 20  |a function used |
000ca8e0  74 6f 20 65 6d 70 74 79  20 61 20 62 75 66 66 65  |to empty a buffe|
000ca8f0  72 20 64 75 72 69 6e 67  20 64 61 74 61 20 74 72  |r during data tr|
000ca900  61 6e 73 66 65 72 2e 20  54 68 65 20 66 75 6e 63  |ansfer. The func|
000ca910  74 69 6f 6e 20 68 61 73  20 74 68 65 20 66 6f 72  |tion has the for|
000ca920  6d 3a 0a 7b 77 72 61 70  20 6f 66 66 7d 0a 7b 66  |m:.{wrap off}.{f|
000ca930  43 6f 64 65 3b 61 6c 69  67 6e 20 63 65 6e 74 72  |Code;align centr|
000ca940  65 7d 3c 42 4f 4f 4c 3e  20 6d 79 66 75 6e 63 20  |e}<BOOL> myfunc |
000ca950  28 63 68 61 72 20 2a 2a  62 75 66 66 65 72 2c 20  |(char **buffer, |
000ca960  69 6e 74 20 2a 73 69 7a  65 29 3b 7b 66 3b 61 6c  |int *size);{f;al|
000ca970  69 67 6e 3b 77 72 61 70  7d 0a 0a 49 74 20 73 68  |ign;wrap}..It sh|
000ca980  6f 75 6c 64 20 65 6d 70  74 79 20 74 68 65 20 62  |ould empty the b|
000ca990  75 66 66 65 72 3b 20 6f  72 20 69 74 20 73 68 6f  |uffer; or it sho|
000ca9a0  75 6c 64 20 65 78 74 65  6e 64 20 69 74 20 61 6e  |uld extend it an|
000ca9b0  64 20 72 65 74 75 72 6e  20 6e 65 77 20 76 61 6c  |d return new val|
000ca9c0  75 65 73 20 66 6f 72 20  69 74 73 20 70 6f 69 6e  |ues for its poin|
000ca9d0  74 65 72 20 61 6e 64 20  73 69 7a 65 2e 20 54 68  |ter and size. Th|
000ca9e0  65 20 66 75 6e 63 74 69  6f 6e 20 73 68 6f 75 6c  |e function shoul|
000ca9f0  64 20 72 65 74 75 72 6e  20 3c 46 41 4c 53 45 3e  |d return <FALSE>|
000caa00  20 69 66 20 69 74 20 69  73 20 75 6e 61 62 6c 65  | if it is unable|
000caa10  20 74 6f 20 64 6f 20 65  69 74 68 65 72 20 6f 66  | to do either of|
000caa20  20 74 68 65 73 65 20 74  68 69 6e 67 73 2e 00 00  | these things...|
000caa30  44 41 54 41 56 01 00 00  78 66 65 72 72 65 63 76  |DATAV...xferrecv|
000caa40  5f 63 68 65 63 6b 69 6d  70 6f 72 74 0a 53 79 6e  |_checkimport.Syn|
000caa50  74 61 78 3a 09 69 6e 74  20 78 66 65 72 72 65 63  |tax:.int xferrec|
000caa60  76 5f 63 68 65 63 6b 69  6d 70 6f 72 74 20 28 69  |v_checkimport (i|
000caa70  6e 74 20 2a 73 69 7a 65  29 3b 0a 48 65 61 64 65  |nt *size);.Heade|
000caa80  72 3a 09 3c 78 66 65 72  72 65 63 76 2e 68 3d 3e  |r:.<xferrecv.h=>|
000caa90  78 66 65 72 72 65 63 76  3e 0a 0a 52 65 74 75 72  |xferrecv>..Retur|
000caaa0  6e 73 3a 09 54 68 65 20  66 69 6c 65 20 74 79 70  |ns:.The file typ|
000caab0  65 2e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |e...This functio|
000caac0  6e 20 63 68 65 63 6b 73  20 74 6f 20 73 65 65 20  |n checks to see |
000caad0  69 66 20 74 68 65 20 6c  61 73 74 20 57 69 6d 70  |if the last Wimp|
000caae0  20 65 76 65 6e 74 20 77  61 73 20 61 20 3c 44 61  | event was a <Da|
000caaf0  74 61 53 61 76 65 3d 3e  53 57 49 3a 77 69 6d 70  |taSave=>SWI:wimp|
000cab00  5f 75 6d 31 3e 20 6d 65  73 73 61 67 65 20 6f 6e  |_um1> message on|
000cab10  74 6f 20 79 6f 75 72 20  61 70 70 6c 69 63 61 74  |to your applicat|
000cab20  69 6f 6e 2e 20 49 66 20  73 6f 20 69 74 20 72 65  |ion. If so it re|
000cab30  74 75 72 6e 73 20 74 68  65 20 66 69 6c 65 74 79  |turns the filety|
000cab40  70 65 20 61 6e 64 20 73  74 6f 72 65 73 20 74 68  |pe and stores th|
000cab50  65 20 65 73 74 69 6d 61  74 65 64 20 73 69 7a 65  |e estimated size|
000cab60  20 69 6e 20 7b 2f 7d 2a  73 69 7a 65 7b 2f 7d 2e  | in {/}*size{/}.|
000cab70  20 49 66 20 6e 6f 74 20  69 74 20 72 65 74 75 72  | If not it retur|
000cab80  6e 73 20 2d 31 2e 00 00  44 41 54 41 85 01 00 00  |ns -1...DATA....|
000cab90  78 66 65 72 72 65 63 76  5f 63 68 65 63 6b 69 6e  |xferrecv_checkin|
000caba0  73 65 72 74 0a 53 79 6e  74 61 78 3a 09 69 6e 74  |sert.Syntax:.int|
000cabb0  20 78 66 65 72 72 65 63  76 5f 63 68 65 63 6b 69  | xferrecv_checki|
000cabc0  6e 73 65 72 74 20 28 63  68 61 72 20 2a 2a 6e 61  |nsert (char **na|
000cabd0  6d 65 29 3b 0a 48 65 61  64 65 72 3a 09 3c 78 66  |me);.Header:.<xf|
000cabe0  65 72 72 65 63 76 2e 68  3d 3e 78 66 65 72 72 65  |errecv.h=>xferre|
000cabf0  63 76 3e 0a 0a 52 65 74  75 72 6e 73 3a 09 46 69  |cv>..Returns:.Fi|
000cac00  6c 65 20 74 79 70 65 2c  20 6f 72 20 2d 31 2e 0a  |le type, or -1..|
000cac10  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
000cac20  68 65 63 6b 73 20 74 6f  20 73 65 65 20 69 66 20  |hecks to see if |
000cac30  74 68 65 20 6c 61 73 74  20 57 69 6d 70 20 65 76  |the last Wimp ev|
000cac40  65 6e 74 20 77 61 73 20  61 20 72 65 71 75 65 73  |ent was a reques|
000cac50  74 20 74 6f 20 69 6d 70  6f 72 74 20 61 20 66 69  |t to import a fi|
000cac60  6c 65 20 28 69 65 20 61  20 3c 44 61 74 61 4f 70  |le (ie a <DataOp|
000cac70  65 6e 3d 3e 53 57 49 3a  77 69 6d 70 5f 75 6d 35  |en=>SWI:wimp_um5|
000cac80  3e 20 6f 72 20 3c 44 61  74 61 4c 6f 61 64 3d 3e  |> or <DataLoad=>|
000cac90  53 57 49 3a 77 69 6d 70  5f 75 6d 33 3e 20 6d 65  |SWI:wimp_um3> me|
000caca0  73 73 61 67 65 29 2e 20  49 66 20 73 6f 20 69 74  |ssage). If so it|
000cacb0  20 72 65 74 75 72 6e 73  20 74 68 65 20 66 69 6c  | returns the fil|
000cacc0  65 74 79 70 65 20 61 6e  64 20 73 74 6f 72 65 73  |etype and stores|
000cacd0  20 74 68 65 20 66 69 6c  65 20 6e 61 6d 65 20 70  | the file name p|
000cace0  6f 69 6e 74 65 72 20 69  6e 20 7b 2f 7d 2a 6e 61  |ointer in {/}*na|
000cacf0  6d 65 7b 2f 7d 2e 20 49  66 20 6e 6f 74 2c 20 69  |me{/}. If not, i|
000cad00  74 20 72 65 74 75 72 6e  73 20 2d 31 2e 00 00 00  |t returns -1....|
000cad10  44 41 54 41 41 01 00 00  78 66 65 72 72 65 63 76  |DATAA...xferrecv|
000cad20  5f 63 68 65 63 6b 70 72  69 6e 74 0a 53 79 6e 74  |_checkprint.Synt|
000cad30  61 78 3a 09 69 6e 74 20  78 66 65 72 72 65 63 76  |ax:.int xferrecv|
000cad40  5f 63 68 65 63 6b 70 72  69 6e 74 20 28 63 68 61  |_checkprint (cha|
000cad50  72 20 2a 2a 6e 61 6d 65  29 3b 0a 48 65 61 64 65  |r **name);.Heade|
000cad60  72 3a 09 3c 78 66 65 72  72 65 63 76 2e 68 3d 3e  |r:.<xferrecv.h=>|
000cad70  78 66 65 72 72 65 63 76  3e 0a 0a 52 65 74 75 72  |xferrecv>..Retur|
000cad80  6e 73 3a 09 46 69 6c 65  20 74 79 70 65 2e 0a 0a  |ns:.File type...|
000cad90  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 73 65  |This function se|
000cada0  74 73 20 75 70 20 61 6e  20 61 63 6b 6e 6f 77 6c  |ts up an acknowl|
000cadb0  65 64 67 65 20 74 6f 20  61 20 50 72 69 6e 74 54  |edge to a PrintT|
000cadc0  79 70 65 4f 64 64 20 6d  65 73 73 61 67 65 20 61  |ypeOdd message a|
000cadd0  6e 64 20 67 65 74 73 20  74 68 65 20 66 69 6c 65  |nd gets the file|
000cade0  20 6e 61 6d 65 20 61 6e  64 20 66 69 6c 65 20 74  | name and file t|
000cadf0  79 70 65 2e 20 59 6f 75  20 63 61 6e 20 74 68 65  |ype. You can the|
000cae00  6e 20 65 69 74 68 65 72  20 70 72 69 6e 74 20 74  |n either print t|
000cae10  68 65 20 66 69 6c 65 20  64 69 72 65 63 74 6c 79  |he file directly|
000cae20  20 74 6f 20 22 70 72 69  6e 74 65 72 3a 22 20 6f  | to "printer:" o|
000cae30  72 20 6f 75 74 70 75 74  20 69 74 20 74 6f 20 22  |r output it to "|
000cae40  5c 3c 50 72 69 6e 74 65  72 24 54 65 6d 70 3e 22  |\<Printer$Temp>"|
000cae50  2e 00 00 00 44 41 54 41  a7 01 00 00 78 66 65 72  |....DATA....xfer|
000cae60  72 65 63 76 5f 64 6f 69  6d 70 6f 72 74 0a 53 79  |recv_doimport.Sy|
000cae70  6e 74 61 78 3a 09 69 6e  74 20 78 66 65 72 72 65  |ntax:.int xferre|
000cae80  63 76 5f 64 6f 69 6d 70  6f 72 74 20 28 63 68 61  |cv_doimport (cha|
000cae90  72 20 2a 62 75 66 2c 20  69 6e 74 20 73 69 7a 65  |r *buf, int size|
000caea0  2c 20 3c 78 66 65 72 72  65 63 76 5f 62 75 66 66  |, <xferrecv_buff|
000caeb0  65 72 5f 70 72 6f 63 65  73 73 6f 72 3e 20 2a 70  |er_processor> *p|
000caec0  3b 0a 48 65 61 64 65 72  3a 09 3c 78 66 65 72 72  |;.Header:.<xferr|
000caed0  65 63 76 2e 68 3d 3e 78  66 65 72 72 65 63 76 3e  |ecv.h=>xferrecv>|
000caee0  0a 0a 52 65 74 75 72 6e  73 3a 09 4e 75 6d 62 65  |..Returns:.Numbe|
000caef0  72 20 6f 66 20 62 79 74  65 73 20 74 72 61 6e 73  |r of bytes trans|
000caf00  66 65 72 72 65 64 2c 20  6f 72 20 2d 31 2e 0a 0a  |ferred, or -1...|
000caf10  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 72 65  |This function re|
000caf20  70 6c 69 65 73 20 74 6f  20 61 20 3c 44 61 74 61  |plies to a <Data|
000caf30  53 61 76 65 3d 3e 53 57  49 3a 77 69 6d 70 5f 75  |Save=>SWI:wimp_u|
000caf40  6d 31 3e 20 6d 65 73 73  61 67 65 20 61 6e 64 20  |m1> message and |
000caf50  6c 6f 61 64 73 20 64 61  74 61 20 69 6e 74 6f 20  |loads data into |
000caf60  61 20 75 73 65 72 2d 64  65 66 69 6e 65 64 20 62  |a user-defined b|
000caf70  75 66 66 65 72 20 6f 66  20 74 68 65 20 67 69 76  |uffer of the giv|
000caf80  65 6e 20 73 69 7a 65 2e  20 57 68 65 6e 20 74 68  |en size. When th|
000caf90  69 73 20 62 75 66 66 65  72 20 69 73 20 66 75 6c  |is buffer is ful|
000cafa0  6c 2c 20 2f 70 2f 20 69  73 20 63 61 6c 6c 65 64  |l, /p/ is called|
000cafb0  20 74 6f 20 65 6d 70 74  79 20 69 74 2e 20 54 68  | to empty it. Th|
000cafc0  69 73 20 66 75 6e 63 74  69 6f 6e 20 73 75 70 70  |is function supp|
000cafd0  6f 72 74 73 20 52 41 4d  20 61 6e 64 20 73 63 72  |orts RAM and scr|
000cafe0  61 70 20 66 69 6c 65 20  74 72 61 6e 73 66 65 72  |ap file transfer|
000caff0  20 70 72 6f 74 6f 63 6f  6c 73 2e 00 44 41 54 41  | protocols..DATA|
000cb000  bd 00 00 00 58 66 65 72  52 65 63 76 5f 45 70 69  |....XferRecv_Epi|
000cb010  6c 6f 67 0a 53 79 6e 74  61 78 3a 09 76 6f 69 64  |log.Syntax:.void|
000cb020  20 58 66 65 72 52 65 63  76 5f 45 70 69 6c 6f 67  | XferRecv_Epilog|
000cb030  20 28 76 6f 69 64 29 3b  0a 48 65 61 64 65 72 3a  | (void);.Header:|
000cb040  09 3c 54 69 6d 73 4c 69  62 3a 58 66 65 72 52 65  |.<TimsLib:XferRe|
000cb050  63 76 2e 68 3d 3e 58 66  65 72 52 65 63 76 5f 54  |cv.h=>XferRecv_T|
000cb060  4c 3e 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |L>..This functio|
000cb070  6e 20 73 68 6f 75 6c 64  20 62 65 20 61 66 74 65  |n should be afte|
000cb080  72 20 79 6f 75 20 68 61  76 65 20 6c 6f 61 64 65  |r you have loade|
000cb090  64 20 61 20 66 69 6c 65  2e 20 49 74 20 73 65 6e  |d a file. It sen|
000cb0a0  64 73 20 61 20 44 61 74  61 4c 6f 61 64 41 63 6b  |ds a DataLoadAck|
000cb0b0  20 6d 65 73 73 61 67 65  2e 00 00 00 44 41 54 41  | message....DATA|
000cb0c0  0a 01 00 00 78 66 65 72  72 65 63 76 5f 66 69 6c  |....xferrecv_fil|
000cb0d0  65 5f 69 73 5f 73 61 66  65 0a 53 79 6e 74 61 78  |e_is_safe.Syntax|
000cb0e0  3a 09 3c 42 4f 4f 4c 3e  20 78 66 65 72 72 65 63  |:.<BOOL> xferrec|
000cb0f0  76 5f 66 69 6c 65 5f 69  73 5f 73 61 66 65 20 28  |v_file_is_safe (|
000cb100  76 6f 69 64 29 3b 0a 48  65 61 64 65 72 3a 09 3c  |void);.Header:.<|
000cb110  78 66 65 72 72 65 63 76  2e 68 3d 3e 78 66 65 72  |xferrecv.h=>xfer|
000cb120  72 65 63 76 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |recv>..Returns:.|
000cb130  3c 54 52 55 45 3e 20 69  66 20 69 74 20 69 73 2e  |<TRUE> if it is.|
000cb140  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000cb150  63 68 65 63 6b 73 20 69  66 20 74 68 65 20 66 69  |checks if the fi|
000cb160  6c 65 20 77 61 73 20 72  65 63 65 69 76 65 64 20  |le was received |
000cb170  66 72 6f 6d 20 61 20 73  61 66 65 20 73 6f 75 72  |from a safe sour|
000cb180  63 65 20 69 65 20 74 68  65 20 73 75 70 70 6c 69  |ce ie the suppli|
000cb190  65 64 20 66 69 6c 65 6e  61 6d 65 20 77 69 6c 6c  |ed filename will|
000cb1a0  20 6e 6f 74 20 63 68 61  6e 67 65 20 69 6e 20 74  | not change in t|
000cb1b0  68 65 20 66 6f 72 65 73  65 65 61 62 6c 65 20 66  |he foreseeable f|
000cb1c0  75 74 75 72 65 2e 00 00  44 41 54 41 eb 00 00 00  |uture...DATA....|
000cb1d0  78 66 65 72 72 65 63 76  5f 69 6e 73 65 72 74 66  |xferrecv_insertf|
000cb1e0  69 6c 65 6f 6b 0a 53 79  6e 74 61 78 3a 09 76 6f  |ileok.Syntax:.vo|
000cb1f0  69 64 20 78 66 65 72 72  65 63 76 5f 69 6e 73 65  |id xferrecv_inse|
000cb200  72 74 66 69 6c 65 6f 6b  20 28 76 6f 69 64 29 3b  |rtfileok (void);|
000cb210  0a 48 65 61 64 65 72 3a  09 3c 78 66 65 72 72 65  |.Header:.<xferre|
000cb220  63 76 2e 68 3d 3e 78 66  65 72 72 65 63 76 3e 0a  |cv.h=>xferrecv>.|
000cb230  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 64  |.This function d|
000cb240  65 6c 65 74 65 73 20 22  5c 3c 57 69 6d 70 24 53  |eletes "\<Wimp$S|
000cb250  63 72 61 70 3e 22 20 28  69 66 20 75 73 65 64 29  |crap>" (if used)|
000cb260  20 61 6e 64 20 73 65 6e  64 73 20 61 20 3c 44 61  | and sends a <Da|
000cb270  74 61 4c 6f 61 64 41 63  6b 3d 3e 53 57 49 3a 77  |taLoadAck=>SWI:w|
000cb280  69 6d 70 5f 75 6d 34 3e  20 6d 65 73 73 61 67 65  |imp_um4> message|
000cb290  2e 20 43 61 6c 6c 20 74  68 69 73 20 61 66 74 65  |. Call this afte|
000cb2a0  72 20 6c 6f 61 64 69 6e  67 20 74 68 65 20 66 69  |r loading the fi|
000cb2b0  6c 65 2e 00 44 41 54 41  f4 00 00 00 78 66 65 72  |le..DATA....xfer|
000cb2c0  72 65 63 76 5f 70 72 69  6e 74 66 69 6c 65 6f 6b  |recv_printfileok|
000cb2d0  0a 53 79 6e 74 61 78 3a  09 76 6f 69 64 20 78 66  |.Syntax:.void xf|
000cb2e0  65 72 72 65 63 76 5f 70  72 69 6e 74 66 69 6c 65  |errecv_printfile|
000cb2f0  6f 6b 20 28 69 6e 74 20  74 79 70 65 29 3b 0a 48  |ok (int type);.H|
000cb300  65 61 64 65 72 3a 09 3c  78 66 65 72 72 65 63 76  |eader:.<xferrecv|
000cb310  2e 68 3d 3e 78 66 65 72  72 65 63 76 3e 0a 0a 54  |.h=>xferrecv>..T|
000cb320  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 72 65 70  |his function rep|
000cb330  6c 69 65 73 20 74 6f 20  61 20 50 72 69 6e 74 54  |lies to a PrintT|
000cb340  79 70 65 4f 64 64 20 6d  65 73 73 61 67 65 20 77  |ypeOdd message w|
000cb350  69 74 68 20 61 20 50 72  69 6e 74 54 79 70 65 4b  |ith a PrintTypeK|
000cb360  6e 6f 77 6e 20 6d 65 73  73 61 67 65 2e 20 49 66  |nown message. If|
000cb370  20 70 72 69 6e 74 65 64  20 69 6e 64 69 72 65 63  | printed indirec|
000cb380  74 6c 79 2c 20 79 6f 75  20 73 68 6f 75 6c 64 20  |tly, you should |
000cb390  70 61 73 73 20 74 68 65  20 66 69 6c 65 20 74 79  |pass the file ty|
000cb3a0  70 65 20 62 61 63 6b 2e  44 41 54 41 31 01 00 00  |pe back.DATA1...|
000cb3b0  58 66 65 72 52 65 63 76  5f 50 72 6f 6c 6f 67 0a  |XferRecv_Prolog.|
000cb3c0  53 79 6e 74 61 78 3a 09  76 6f 69 64 20 58 66 65  |Syntax:.void Xfe|
000cb3d0  72 52 65 63 76 5f 50 72  6f 6c 6f 67 20 28 69 6e  |rRecv_Prolog (in|
000cb3e0  74 20 2a 66 69 6c 65 74  79 70 65 2c 20 63 68 61  |t *filetype, cha|
000cb3f0  72 20 2a 66 69 6c 65 6e  61 6d 65 29 3b 0a 48 65  |r *filename);.He|
000cb400  61 64 65 72 3a 09 3c 54  69 6d 73 4c 69 62 3a 58  |ader:.<TimsLib:X|
000cb410  66 65 72 52 65 63 76 2e  68 3d 3e 58 66 65 72 52  |ferRecv.h=>XferR|
000cb420  65 63 76 5f 54 4c 3e 0a  0a 54 68 69 73 20 66 75  |ecv_TL>..This fu|
000cb430  6e 63 74 69 6f 6e 20 73  68 6f 75 6c 64 20 62 65  |nction should be|
000cb440  20 63 61 6c 6c 65 64 20  77 68 65 6e 20 79 6f 75  | called when you|
000cb450  20 67 65 74 20 61 20 44  61 74 61 4c 6f 61 64 20  | get a DataLoad |
000cb460  6f 72 20 44 61 74 61 4f  70 65 6e 20 6d 65 73 73  |or DataOpen mess|
000cb470  61 67 65 2e 20 49 74 20  73 65 74 73 20 75 70 20  |age. It sets up |
000cb480  61 6e 20 61 63 6b 6e 6f  77 6c 65 64 67 65 6d 65  |an acknowledgeme|
000cb490  6e 74 20 6d 65 73 73 61  67 65 2e 20 59 6f 75 20  |nt message. You |
000cb4a0  73 68 6f 75 6c 64 20 6e  6f 77 20 6c 6f 61 64 20  |should now load |
000cb4b0  74 68 65 20 66 69 6c 65  20 61 6e 64 20 74 68 65  |the file and the|
000cb4c0  6e 20 63 61 6c 6c 20 3c  58 66 65 72 52 65 63 76  |n call <XferRecv|
000cb4d0  5f 45 70 69 6c 6f 67 3e  2e 00 00 00 44 41 54 41  |_Epilog>....DATA|
000cb4e0  c6 00 00 00 54 69 6d 73  4c 69 62 3a 58 66 65 72  |....TimsLib:Xfer|
000cb4f0  52 65 63 76 2e 68 0a 54  68 69 73 20 68 65 61 64  |Recv.h.This head|
000cb500  65 72 20 64 65 63 6c 61  72 65 73 20 74 77 6f 20  |er declares two |
000cb510  66 75 6e 63 74 69 6f 6e  73 20 66 6f 72 20 68 61  |functions for ha|
000cb520  6e 64 6c 69 6e 67 20 72  65 63 65 69 76 65 64 20  |ndling received |
000cb530  66 69 6c 65 73 20 69 65  20 66 69 6c 65 73 20 64  |files ie files d|
000cb540  72 61 67 67 65 64 20 74  6f 20 79 6f 75 72 20 61  |ragged to your a|
000cb550  70 70 6c 69 63 61 74 69  6f 6e 2e 0a 0a 46 75 6e  |pplication...Fun|
000cb560  63 74 69 6f 6e 73 3a 0a  0a 23 54 61 62 6c 65 20  |ctions:..#Table |
000cb570  31 20 32 30 0a 3c 58 66  65 72 52 65 63 76 5f 50  |1 20.<XferRecv_P|
000cb580  72 6f 6c 6f 67 3e 0a 3c  58 66 65 72 52 65 63 76  |rolog>.<XferRecv|
000cb590  5f 45 70 69 6c 6f 67 3e  0a 23 45 6e 64 54 61 62  |_Epilog>.#EndTab|
000cb5a0  6c 65 00 00 44 41 54 41  ce 02 00 00 78 66 65 72  |le..DATA....xfer|
000cb5b0  73 65 6e 64 0a 53 79 6e  74 61 78 3a 09 3c 42 4f  |send.Syntax:.<BO|
000cb5c0  4f 4c 3e 20 78 66 65 72  73 65 6e 64 20 28 69 6e  |OL> xfersend (in|
000cb5d0  74 20 66 69 6c 65 74 79  70 65 2c 20 63 68 61 72  |t filetype, char|
000cb5e0  20 2a 6e 61 6d 65 2c 20  69 6e 74 20 73 69 7a 65  | *name, int size|
000cb5f0  2c 20 3c 78 66 65 72 73  65 6e 64 5f 73 61 76 65  |, <xfersend_save|
000cb600  70 72 6f 63 3e 20 73 61  76 65 2c 20 3c 78 66 65  |proc> save, <xfe|
000cb610  72 73 65 6e 64 5f 73 65  6e 64 70 72 6f 63 3e 20  |rsend_sendproc> |
000cb620  73 65 6e 64 2c 20 3c 78  66 65 72 73 65 6e 64 5f  |send, <xfersend_|
000cb630  70 72 69 6e 74 70 72 6f  63 3e 20 70 72 69 6e 74  |printproc> print|
000cb640  2c 20 3c 77 69 6d 70 5f  65 76 65 6e 74 73 74 72  |, <wimp_eventstr|
000cb650  3e 20 2a 65 2c 20 76 6f  69 64 20 2a 68 61 6e 64  |> *e, void *hand|
000cb660  6c 65 29 3b 0a 48 65 61  64 65 72 3a 09 3c 78 66  |le);.Header:.<xf|
000cb670  65 72 73 65 6e 64 2e 68  3d 3e 78 66 65 72 73 65  |ersend.h=>xferse|
000cb680  6e 64 5f 68 3e 0a 0a 52  65 74 75 72 6e 73 3a 09  |nd_h>..Returns:.|
000cb690  3c 54 52 55 45 3e 20 69  66 20 73 75 63 63 65 73  |<TRUE> if succes|
000cb6a0  73 66 75 6c 2e 0a 0a 53  65 65 20 61 6c 73 6f 20  |sful...See also |
000cb6b0  74 68 65 20 54 69 6d 73  4c 69 62 20 66 75 6e 63  |the TimsLib func|
000cb6c0  74 69 6f 6e 2c 20 3c 58  66 65 72 53 65 6e 64 3d  |tion, <XferSend=|
000cb6d0  3e 58 66 65 72 53 65 6e  64 5f 3e 2e 0a 0a 54 68  |>XferSend_>...Th|
000cb6e0  69 73 20 66 75 6e 63 74  69 6f 6e 20 73 68 6f 75  |is function shou|
000cb6f0  6c 64 20 62 65 20 63 61  6c 6c 65 64 20 74 6f 20  |ld be called to |
000cb700  69 6e 69 74 69 61 74 65  20 64 61 74 61 20 74 72  |initiate data tr|
000cb710  61 6e 73 66 65 72 20 66  6f 6c 6c 6f 77 69 6e 67  |ansfer following|
000cb720  20 61 20 64 72 61 67 2e  20 50 61 73 73 20 69 6e  | a drag. Pass in|
000cb730  20 74 68 65 20 66 69 6c  65 74 79 70 65 20 61 6e  | the filetype an|
000cb740  64 20 73 75 67 67 65 73  74 65 64 20 6e 61 6d 65  |d suggested name|
000cb750  2c 20 61 6e 64 20 74 68  65 20 74 68 72 65 65 20  |, and the three |
000cb760  68 61 6e 64 6c 65 72 20  66 75 6e 63 74 69 6f 6e  |handler function|
000cb770  73 2e 20 2f 65 2f 20 69  73 20 74 68 65 20 65 76  |s. /e/ is the ev|
000cb780  65 6e 74 20 77 68 69 63  68 20 73 74 61 72 74 65  |ent which starte|
000cb790  64 20 74 68 65 20 65 78  70 6f 72 74 2c 20 2f 68  |d the export, /h|
000cb7a0  61 6e 64 6c 65 2f 20 69  73 20 61 20 75 73 65 72  |andle/ is a user|
000cb7b0  2d 64 65 66 69 6e 65 64  20 68 61 6e 64 6c 65 20  |-defined handle |
000cb7c0  77 68 69 63 68 20 69 73  20 70 61 73 73 65 64 20  |which is passed |
000cb7d0  64 69 72 65 63 74 6c 79  20 74 6f 20 74 68 65 20  |directly to the |
000cb7e0  68 61 6e 64 6c 65 72 73  2c 20 61 6e 64 20 2f 73  |handlers, and /s|
000cb7f0  69 7a 65 2f 20 69 73 20  74 68 65 20 65 73 74 69  |ize/ is the esti|
000cb800  6d 61 74 65 64 20 73 69  7a 65 20 6f 66 20 74 68  |mated size of th|
000cb810  65 20 66 69 6c 65 2e 0a  0a 49 66 20 2f 73 65 6e  |e file...If /sen|
000cb820  64 2f 20 69 73 20 30 20  74 68 65 6e 20 6e 6f 20  |d/ is 0 then no |
000cb830  52 41 4d 20 74 72 61 6e  73 66 65 72 20 69 73 20  |RAM transfer is |
000cb840  75 73 65 64 2e 20 49 66  20 2f 70 72 69 6e 74 2f  |used. If /print/|
000cb850  20 69 73 20 30 20 74 68  65 6e 20 27 73 61 76 65  | is 0 then 'save|
000cb860  27 20 69 73 20 75 73 65  64 20 69 6e 73 74 65 61  |' is used instea|
000cb870  64 2e 00 00 44 49 52 24  24 02 00 00 24 02 00 00  |d...DIR$$...$...|
000cb880  98 ba 0c 00 46 fd ff ff  fd c9 58 26 06 02 00 00  |....F.....X&....|
000cb890  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000cb8a0  a0 bc 0c 00 46 ff ff ff  fc 36 b6 22 25 01 00 00  |....F....6."%...|
000cb8b0  13 00 00 00 00 00 00 00  63 6c 65 61 72 5f 75 6e  |........clear_un|
000cb8c0  6b 6e 6f 77 6e 73 00 00  c8 bd 0c 00 46 ff ff ff  |knowns......F...|
000cb8d0  09 37 b6 22 8b 01 00 00  13 00 00 00 00 00 00 00  |.7."............|
000cb8e0  63 6c 6f 73 65 5f 6f 6e  5f 78 66 65 72 00 00 00  |close_on_xfer...|
000cb8f0  54 bf 0c 00 46 ff ff ff  10 37 b6 22 3a 01 00 00  |T...F....7.":...|
000cb900  13 00 00 00 00 00 00 00  66 69 6c 65 5f 69 73 5f  |........file_is_|
000cb910  73 61 66 65 00 00 00 00  90 c0 0c 00 46 ff ff ff  |safe........F...|
000cb920  1a 37 b6 22 fa 01 00 00  13 00 00 00 00 00 00 00  |.7."............|
000cb930  68 00 00 00 8c c2 0c 00  46 ff ff ff 21 37 b6 22  |h.......F...!7."|
000cb940  c1 01 00 00 13 00 00 00  00 00 00 00 70 69 70 65  |............pipe|
000cb950  00 00 00 00 50 c4 0c 00  46 ff ff ff 2c 37 b6 22  |....P...F...,7."|
000cb960  a7 00 00 00 13 00 00 00  00 00 00 00 70 72 69 6e  |............prin|
000cb970  74 46 61 69 6c 65 64 00  f8 c4 0c 00 46 ff ff ff  |tFailed.....F...|
000cb980  34 37 b6 22 9c 00 00 00  13 00 00 00 00 00 00 00  |47."............|
000cb990  70 72 69 6e 74 50 72 69  6e 74 65 64 00 00 00 00  |printPrinted....|
000cb9a0  94 c5 0c 00 46 ff ff ff  3c 37 b6 22 e9 01 00 00  |....F...<7."....|
000cb9b0  13 00 00 00 00 00 00 00  70 72 69 6e 74 70 72 6f  |........printpro|
000cb9c0  63 00 00 00 80 c7 0c 00  46 ff ff ff 47 37 b6 22  |c.......F...G7."|
000cb9d0  60 01 00 00 13 00 00 00  00 00 00 00 72 65 61 64  |`...........read|
000cb9e0  5f 6c 61 73 74 5f 72 65  66 00 00 00 e0 c8 0c 00  |_last_ref.......|
000cb9f0  46 ff ff ff 8a da 58 26  bd 01 00 00 13 00 00 00  |F.....X&........|
000cba00  00 00 00 00 73 61 76 65  70 72 6f 63 00 00 00 00  |....saveproc....|
000cba10  a0 ca 0c 00 46 ff ff ff  5b 37 b6 22 28 01 00 00  |....F...[7."(...|
000cba20  13 00 00 00 00 00 00 00  73 65 6e 64 62 75 66 00  |........sendbuf.|
000cba30  c8 cb 0c 00 46 ff ff ff  64 37 b6 22 a2 01 00 00  |....F...d7."....|
000cba40  13 00 00 00 00 00 00 00  73 65 6e 64 70 72 6f 63  |........sendproc|
000cba50  00 00 00 00 6c cd 0c 00  46 ff ff ff 6c 37 b6 22  |....l...F...l7."|
000cba60  f3 00 00 00 13 00 00 00  00 00 00 00 73 65 74 5f  |............set_|
000cba70  66 69 6c 65 69 73 73 61  66 65 00 00 60 ce 0c 00  |fileissafe..`...|
000cba80  46 fd ff ff eb c0 58 26  aa 00 00 00 13 00 00 00  |F.....X&........|
000cba90  00 00 00 00 54 4c 00 00  44 41 54 41 06 02 00 00  |....TL..DATA....|
000cbaa0  58 66 65 72 53 65 6e 64  0a 53 79 6e 74 61 78 3a  |XferSend.Syntax:|
000cbab0  09 3c 42 4f 4f 4c 3e 20  58 66 65 72 53 65 6e 64  |.<BOOL> XferSend|
000cbac0  20 28 69 6e 74 20 66 69  6c 65 74 79 70 65 2c 20  | (int filetype, |
000cbad0  63 68 61 72 20 2a 6e 61  6d 65 2c 20 69 6e 74 20  |char *name, int |
000cbae0  73 69 7a 65 2c 20 3c 78  66 65 72 73 65 6e 64 5f  |size, <xfersend_|
000cbaf0  73 61 76 65 70 72 6f 63  3e 20 73 61 76 65 2c 20  |saveproc> save, |
000cbb00  3c 65 76 65 6e 74 5f 70  6f 6c 6c 62 6c 6f 63 6b  |<event_pollblock|
000cbb10  3e 20 2a 65 2c 20 76 6f  69 64 20 2a 68 61 6e 64  |> *e, void *hand|
000cbb20  6c 65 29 3b 0a 48 65 61  64 65 72 3a 09 3c 54 69  |le);.Header:.<Ti|
000cbb30  6d 73 4c 69 62 3a 58 66  65 72 53 65 6e 64 2e 68  |msLib:XferSend.h|
000cbb40  3d 3e 58 66 65 72 53 65  6e 64 5f 54 4c 3e 0a 0a  |=>XferSend_TL>..|
000cbb50  52 65 74 75 72 6e 73 3a  09 3c 54 52 55 45 3e 20  |Returns:.<TRUE> |
000cbb60  69 66 20 73 75 63 63 65  73 73 66 75 6c 2e 0a 0a  |if successful...|
000cbb70  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 73 68  |This function sh|
000cbb80  6f 75 6c 64 20 62 65 20  63 61 6c 6c 65 64 20 74  |ould be called t|
000cbb90  6f 20 69 6e 69 74 69 61  74 65 20 64 61 74 61 20  |o initiate data |
000cbba0  74 72 61 6e 73 66 65 72  20 66 6f 6c 6c 6f 77 69  |transfer followi|
000cbbb0  6e 67 20 61 20 64 72 61  67 2e 20 50 61 73 73 20  |ng a drag. Pass |
000cbbc0  69 6e 20 74 68 65 20 66  69 6c 65 74 79 70 65 20  |in the filetype |
000cbbd0  61 6e 64 20 73 75 67 67  65 73 74 65 64 20 6e 61  |and suggested na|
000cbbe0  6d 65 2c 20 61 6e 64 20  68 61 6e 64 6c 65 72 20  |me, and handler |
000cbbf0  66 75 6e 63 74 69 6f 6e  2e 20 2f 65 2f 20 69 73  |function. /e/ is|
000cbc00  20 74 68 65 20 65 76 65  6e 74 20 77 68 69 63 68  | the event which|
000cbc10  20 73 74 61 72 74 65 64  20 74 68 65 20 65 78 70  | started the exp|
000cbc20  6f 72 74 2c 20 2f 68 61  6e 64 6c 65 2f 20 69 73  |ort, /handle/ is|
000cbc30  20 61 20 75 73 65 72 2d  64 65 66 69 6e 65 64 20  | a user-defined |
000cbc40  68 61 6e 64 6c 65 20 77  68 69 63 68 20 69 73 20  |handle which is |
000cbc50  70 61 73 73 65 64 20 64  69 72 65 63 74 6c 79 20  |passed directly |
000cbc60  74 6f 20 74 68 65 20 68  61 6e 64 6c 65 72 73 2c  |to the handlers,|
000cbc70  20 61 6e 64 20 2f 73 69  7a 65 2f 20 69 73 20 74  | and /size/ is t|
000cbc80  68 65 20 65 73 74 69 6d  61 74 65 64 20 73 69 7a  |he estimated siz|
000cbc90  65 20 6f 66 20 74 68 65  20 66 69 6c 65 2e 00 00  |e of the file...|
000cbca0  44 41 54 41 25 01 00 00  78 66 65 72 73 65 6e 64  |DATA%...xfersend|
000cbcb0  5f 63 6c 65 61 72 5f 75  6e 6b 6e 6f 77 6e 73 0a  |_clear_unknowns.|
000cbcc0  53 79 6e 74 61 78 3a 20  20 76 6f 69 64 20 78 66  |Syntax:  void xf|
000cbcd0  65 72 73 65 6e 64 5f 63  6c 65 61 72 75 6e 6b 6e  |ersend_clearunkn|
000cbce0  6f 77 6e 73 20 28 76 6f  69 64 29 3b 0a 48 65 61  |owns (void);.Hea|
000cbcf0  64 65 72 3a 20 20 3c 78  66 65 72 73 65 6e 64 2e  |der:  <xfersend.|
000cbd00  68 3d 3e 78 66 65 72 73  65 6e 64 5f 68 3e 0a 0a  |h=>xfersend_h>..|
000cbd10  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 63 6c  |This function cl|
000cbd20  65 61 72 73 20 75 70 20  61 6e 79 20 73 74 72 61  |ears up any stra|
000cbd30  79 20 65 76 65 6e 74 0a  70 72 6f 63 65 73 73 6f  |y event.processo|
000cbd40  72 73 20 6c 65 66 74 20  6c 79 69 6e 67 20 61 72  |rs left lying ar|
000cbd50  6f 75 6e 64 20 62 79 20  78 66 65 72 73 65 6e 64  |ound by xfersend|
000cbd60  2e 20 49 74 0a 73 68 6f  75 6c 64 20 62 65 20 63  |. It.should be c|
000cbd70  61 6c 6c 65 64 20 77 68  65 6e 65 76 65 72 20 61  |alled whenever a|
000cbd80  20 74 72 61 6e 73 66 65  72 20 69 73 0a 66 69 6e  | transfer is.fin|
000cbd90  69 73 68 65 64 20 28 65  69 74 68 65 72 20 6e 6f  |ished (either no|
000cbda0  72 6d 61 6c 6c 79 20 6f  72 20 61 73 20 74 68 65  |rmally or as the|
000cbdb0  20 72 65 73 75 6c 74 20  6f 66 0a 61 6e 20 65 72  | result of.an er|
000cbdc0  72 6f 72 29 2e 00 00 00  44 41 54 41 8b 01 00 00  |ror)....DATA....|
000cbdd0  78 66 65 72 73 65 6e 64  5f 63 6c 6f 73 65 5f 6f  |xfersend_close_o|
000cbde0  6e 5f 78 66 65 72 0a 53  79 6e 74 61 78 3a 20 20  |n_xfer.Syntax:  |
000cbdf0  76 6f 69 64 20 78 66 65  72 73 65 6e 64 5f 63 6c  |void xfersend_cl|
000cbe00  6f 73 65 5f 6f 6e 5f 78  66 65 72 0a 20 20 20 20  |ose_on_xfer.    |
000cbe10  20 20 20 20 20 28 3c 42  4f 4f 4c 3e 20 63 6c 6f  |     (<BOOL> clo|
000cbe20  73 65 2c 20 3c 77 69 6d  70 5f 77 3e 20 77 69 6e  |se, <wimp_w> win|
000cbe30  29 3b 0a 48 65 61 64 65  72 3a 20 20 3c 78 66 65  |);.Header:  <xfe|
000cbe40  72 73 65 6e 64 2e 68 3d  3e 78 66 65 72 73 65 6e  |rsend.h=>xfersen|
000cbe50  64 5f 68 3e 0a 0a 54 68  69 73 20 66 75 6e 63 74  |d_h>..This funct|
000cbe60  69 6f 6e 20 61 6c 6c 6f  77 73 20 79 6f 75 20 74  |ion allows you t|
000cbe70  6f 20 73 65 74 20 61 20  77 69 6e 64 6f 77 20 74  |o set a window t|
000cbe80  6f 0a 61 75 74 6f 6d 61  74 69 63 61 6c 6c 79 20  |o.automatically |
000cbe90  63 6c 6f 73 65 20 61 66  74 65 72 20 64 61 74 61  |close after data|
000cbea0  20 74 72 61 6e 73 66 65  72 2e 20 49 66 0a 27 63  | transfer. If.'c|
000cbeb0  6c 6f 73 65 27 20 69 73  20 3c 54 52 55 45 3e 20  |lose' is <TRUE> |
000cbec0  74 68 65 6e 20 74 68 65  20 77 69 6e 64 6f 77 20  |then the window |
000cbed0  27 77 69 6e 27 20 77 69  6c 6c 20 62 65 0a 63 6c  |'win' will be.cl|
000cbee0  6f 73 65 64 20 61 66 74  65 72 20 64 61 74 61 20  |osed after data |
000cbef0  74 72 61 6e 73 66 65 72  2e 20 59 6f 75 20 77 6f  |transfer. You wo|
000cbf00  75 6c 64 20 6e 6f 72 6d  61 6c 6c 79 0a 75 73 65  |uld normally.use|
000cbf10  20 74 68 69 73 20 74 6f  20 63 6c 6f 73 65 2c 20  | this to close, |
000cbf20  66 6f 72 20 65 78 61 6d  70 6c 65 2c 20 74 68 65  |for example, the|
000cbf30  20 53 61 76 65 20 77 69  6e 64 6f 77 0a 61 66 74  | Save window.aft|
000cbf40  65 72 20 61 20 66 69 6c  65 20 69 73 20 73 61 76  |er a file is sav|
000cbf50  65 64 2e 00 44 41 54 41  3a 01 00 00 78 66 65 72  |ed..DATA:...xfer|
000cbf60  73 65 6e 64 5f 66 69 6c  65 5f 69 73 5f 73 61 66  |send_file_is_saf|
000cbf70  65 0a 53 79 6e 74 61 78  3a 20 20 3c 42 4f 4f 4c  |e.Syntax:  <BOOL|
000cbf80  3e 20 78 66 65 72 73 65  6e 64 5f 66 69 6c 65 5f  |> xfersend_file_|
000cbf90  69 73 5f 73 61 66 65 20  28 76 6f 69 64 29 3b 0a  |is_safe (void);.|
000cbfa0  48 65 61 64 65 72 3a 20  20 3c 78 66 65 72 73 65  |Header:  <xferse|
000cbfb0  6e 64 2e 68 3d 3e 78 66  65 72 73 65 6e 64 5f 68  |nd.h=>xfersend_h|
000cbfc0  3e 0a 0a 52 65 74 75 72  6e 73 3a 20 3c 54 52 55  |>..Returns: <TRU|
000cbfd0  45 3e 20 69 66 20 73 61  66 65 2e 0a 0a 54 68 69  |E> if safe...Thi|
000cbfe0  73 20 66 75 6e 63 74 69  6f 6e 20 63 68 65 63 6b  |s function check|
000cbff0  73 20 77 68 65 74 68 65  72 20 74 68 65 20 66 69  |s whether the fi|
000cc000  6c 65 27 73 20 6e 61 6d  65 0a 63 61 6e 20 62 65  |le's name.can be|
000cc010  20 72 65 6c 69 61 62 6c  79 20 61 73 73 75 6d 65  | reliably assume|
000cc020  64 20 6e 6f 74 20 74 6f  20 63 68 61 6e 67 65 2e  |d not to change.|
000cc030  20 52 65 74 75 72 6e 73  0a 3c 54 52 55 45 3e 20  | Returns.<TRUE> |
000cc040  69 66 20 74 68 65 20 66  69 6c 65 20 72 65 63 69  |if the file reci|
000cc050  70 69 65 6e 74 20 77 69  6c 6c 20 6e 6f 74 20 6d  |pient will not m|
000cc060  6f 64 69 66 79 20 69 74  2c 0a 73 6f 20 79 6f 75  |odify it,.so you|
000cc070  20 63 61 6e 20 63 68 61  6e 67 65 20 79 6f 75 72  | can change your|
000cc080  20 77 69 6e 64 6f 77 20  74 69 74 6c 65 2e 00 00  | window title...|
000cc090  44 41 54 41 fa 01 00 00  78 66 65 72 73 65 6e 64  |DATA....xfersend|
000cc0a0  2e 68 0a 54 68 69 73 20  68 65 61 64 65 72 20 64  |.h.This header d|
000cc0b0  65 63 6c 61 72 65 73 20  66 75 6e 63 74 69 6f 6e  |eclares function|
000cc0c0  20 66 6f 72 20 67 65 6e  65 72 61 6c 0a 70 75 72  | for general.pur|
000cc0d0  70 6f 73 65 20 65 78 70  6f 72 74 20 6f 66 20 64  |pose export of d|
000cc0e0  61 74 61 20 62 79 20 61  6e 20 69 63 6f 6e 20 64  |ata by an icon d|
000cc0f0  72 61 67 2e 0a 0a 46 75  6e 63 74 69 6f 6e 73 3a  |rag...Functions:|
000cc100  0a 0a 23 54 61 62 6c 65  20 34 20 32 34 0a 3c 78  |..#Table 4 24.<x|
000cc110  66 65 72 73 65 6e 64 20  20 20 20 20 20 20 20 20  |fersend         |
000cc120  20 20 20 20 3e 0a 3c 78  66 65 72 73 65 6e 64 5f  |    >.<xfersend_|
000cc130  70 69 70 65 20 20 20 20  20 20 20 20 3e 0a 3c 78  |pipe        >.<x|
000cc140  66 65 72 73 65 6e 64 5f  73 65 6e 64 62 75 66 20  |fersend_sendbuf |
000cc150  20 20 20 20 3e 0a 3c 78  66 65 72 73 65 6e 64 5f  |    >.<xfersend_|
000cc160  66 69 6c 65 5f 69 73 5f  73 61 66 65 3e 0a 3c 78  |file_is_safe>.<x|
000cc170  66 65 72 73 65 6e 64 5f  73 65 74 5f 66 69 6c 65  |fersend_set_file|
000cc180  69 73 73 61 66 65 3e 0a  3c 78 66 65 72 73 65 6e  |issafe>.<xfersen|
000cc190  64 5f 63 6c 6f 73 65 5f  6f 6e 5f 78 66 65 72 20  |d_close_on_xfer |
000cc1a0  3e 0a 3c 78 66 65 72 73  65 6e 64 5f 63 6c 65 61  |>.<xfersend_clea|
000cc1b0  72 5f 75 6e 6b 6e 6f 77  6e 73 3e 0a 3c 78 66 65  |r_unknowns>.<xfe|
000cc1c0  72 73 65 6e 64 5f 72 65  61 64 5f 6c 61 73 74 5f  |rsend_read_last_|
000cc1d0  72 65 66 20 3e 0a 23 45  6e 64 54 61 62 6c 65 0a  |ref >.#EndTable.|
000cc1e0  0a 54 79 70 65 73 3a 0a  0a 23 54 61 62 6c 65 20  |.Types:..#Table |
000cc1f0  32 20 32 34 0a 3c 78 66  65 72 73 65 6e 64 5f 73  |2 24.<xfersend_s|
000cc200  61 76 65 70 72 6f 63 3e  0a 3c 78 66 65 72 73 65  |aveproc>.<xferse|
000cc210  6e 64 5f 73 65 6e 64 70  72 6f 63 3e 0a 3c 78 66  |nd_sendproc>.<xf|
000cc220  65 72 73 65 6e 64 5f 70  72 69 6e 74 70 72 6f 63  |ersend_printproc|
000cc230  3e 0a 23 45 6e 64 54 61  62 6c 65 0a 0a 4d 61 63  |>.#EndTable..Mac|
000cc240  72 6f 73 3a 0a 0a 23 54  61 62 6c 65 20 31 20 32  |ros:..#Table 1 2|
000cc250  34 0a 3c 78 66 65 72 73  65 6e 64 5f 70 72 69 6e  |4.<xfersend_prin|
000cc260  74 50 72 69 6e 74 65 72  3e 0a 3c 78 66 65 72 73  |tPrinter>.<xfers|
000cc270  65 6e 64 5f 70 72 69 6e  74 46 61 69 6c 65 64 3e  |end_printFailed>|
000cc280  0a 23 45 6e 64 54 61 62  6c 65 00 00 44 41 54 41  |.#EndTable..DATA|
000cc290  c1 01 00 00 78 66 65 72  73 65 6e 64 5f 70 69 70  |....xfersend_pip|
000cc2a0  65 0a 53 79 6e 74 61 78  3a 20 20 3c 42 4f 4f 4c  |e.Syntax:  <BOOL|
000cc2b0  3e 20 78 66 65 72 73 65  6e 64 5f 70 69 70 65 20  |> xfersend_pipe |
000cc2c0  28 69 6e 74 20 66 69 6c  65 74 79 70 65 2c 0a 20  |(int filetype,. |
000cc2d0  20 20 20 20 20 20 20 20  63 68 61 72 20 2a 6e 61  |        char *na|
000cc2e0  6d 65 2c 20 69 6e 74 20  73 69 7a 65 2c 0a 20 20  |me, int size,.  |
000cc2f0  20 20 20 20 20 20 20 3c  78 66 65 72 73 65 6e 64  |       <xfersend|
000cc300  5f 73 61 76 65 70 72 6f  63 3e 20 73 61 76 65 2c  |_saveproc> save,|
000cc310  0a 20 20 20 20 20 20 20  20 20 3c 78 66 65 72 73  |.         <xfers|
000cc320  65 6e 64 5f 73 65 6e 64  70 72 6f 63 3e 20 73 65  |end_sendproc> se|
000cc330  6e 64 2c 0a 20 20 20 20  20 20 20 20 20 3c 78 66  |nd,.         <xf|
000cc340  65 72 73 65 6e 64 5f 70  72 69 6e 74 70 72 6f 63  |ersend_printproc|
000cc350  3e 20 70 72 69 6e 74 2c  0a 20 20 20 20 20 20 20  |> print,.       |
000cc360  20 20 76 6f 69 64 20 2a  68 61 6e 64 6c 65 2c 20  |  void *handle, |
000cc370  3c 77 69 6d 70 5f 74 3e  20 74 61 73 6b 29 3b 0a  |<wimp_t> task);.|
000cc380  48 65 61 64 65 72 3a 20  20 3c 78 66 65 72 73 65  |Header:  <xferse|
000cc390  6e 64 2e 68 3d 3e 78 66  65 72 73 65 6e 64 5f 68  |nd.h=>xfersend_h|
000cc3a0  3e 0a 0a 52 65 74 75 72  6e 73 3a 20 3c 54 52 55  |>..Returns: <TRU|
000cc3b0  45 3e 20 69 66 20 73 75  63 63 65 73 73 66 75 6c  |E> if successful|
000cc3c0  2e 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |...This function|
000cc3d0  20 68 61 73 20 74 68 65  20 73 61 6d 65 20 65 66  | has the same ef|
000cc3e0  66 65 63 74 20 61 73 20  3c 78 66 65 72 73 65 6e  |fect as <xfersen|
000cc3f0  64 3e 2c 0a 62 75 74 20  64 6f 65 73 20 6e 6f 74  |d>,.but does not|
000cc400  20 6e 65 65 64 20 74 6f  20 62 65 20 70 61 73 73  | need to be pass|
000cc410  65 64 20 61 20 77 69 6d  70 20 65 76 65 6e 74 2c  |ed a wimp event,|
000cc420  0a 73 69 6d 70 6c 79 20  61 20 74 61 73 6b 20 68  |.simply a task h|
000cc430  61 6e 64 6c 65 20 27 74  61 73 6b 27 20 74 6f 20  |andle 'task' to |
000cc440  70 61 73 73 20 64 61 74  61 20 74 6f 2e 00 00 00  |pass data to....|
000cc450  44 41 54 41 a7 00 00 00  78 66 65 72 73 65 6e 64  |DATA....xfersend|
000cc460  5f 70 72 69 6e 74 46 61  69 6c 65 64 0a 54 68 69  |_printFailed.Thi|
000cc470  73 20 6d 61 63 72 6f 20  69 73 20 64 65 66 69 6e  |s macro is defin|
000cc480  65 64 20 62 79 20 3c 78  66 65 72 73 65 6e 64 2e  |ed by <xfersend.|
000cc490  68 3d 3e 78 66 65 72 73  65 6e 64 5f 68 3e 20 61  |h=>xfersend_h> a|
000cc4a0  73 20 61 20 76 61 6c 75  65 0a 73 69 67 6e 69 66  |s a value.signif|
000cc4b0  79 69 6e 67 20 74 68 61  74 20 61 6e 20 65 72 72  |ying that an err|
000cc4c0  6f 72 20 6f 63 63 75 72  72 65 64 20 77 68 69 6c  |or occurred whil|
000cc4d0  65 20 74 72 79 69 6e 67  0a 74 6f 20 70 72 69 6e  |e trying.to prin|
000cc4e0  74 2e 20 49 74 20 69 73  20 64 65 66 69 6e 65 64  |t. It is defined|
000cc4f0  20 61 73 20 2d 32 2e 00  44 41 54 41 9c 00 00 00  | as -2..DATA....|
000cc500  78 66 65 72 73 65 6e 64  5f 70 72 69 6e 74 50 72  |xfersend_printPr|
000cc510  69 6e 74 65 64 0a 54 68  69 73 20 6d 61 63 72 6f  |inted.This macro|
000cc520  20 69 73 20 64 65 66 69  6e 65 64 20 62 79 20 3c  | is defined by <|
000cc530  78 66 65 72 73 65 6e 64  2e 68 3d 3e 78 66 65 72  |xfersend.h=>xfer|
000cc540  73 65 6e 64 5f 68 3e 20  61 73 20 61 20 76 61 6c  |send_h> as a val|
000cc550  75 65 0a 73 69 67 6e 69  66 79 69 6e 67 20 74 68  |ue.signifying th|
000cc560  61 74 20 61 20 66 69 6c  65 20 77 61 73 20 70 72  |at a file was pr|
000cc570  69 6e 74 65 64 20 64 69  72 65 63 74 6c 79 2e 20  |inted directly. |
000cc580  49 74 0a 69 73 20 64 65  66 69 6e 65 64 20 61 73  |It.is defined as|
000cc590  20 2d 31 2e 44 41 54 41  e9 01 00 00 78 66 65 72  | -1.DATA....xfer|
000cc5a0  73 65 6e 64 5f 70 72 69  6e 74 70 72 6f 63 0a 54  |send_printproc.T|
000cc5b0  68 69 73 20 74 79 70 65  20 69 73 20 64 65 66 69  |his type is defi|
000cc5c0  6e 65 64 20 69 6e 20 3c  78 66 65 72 73 65 6e 64  |ned in <xfersend|
000cc5d0  2e 68 3d 3e 78 66 65 72  73 65 6e 64 5f 68 3e 2e  |.h=>xfersend_h>.|
000cc5e0  20 49 74 20 69 73 20 61  0a 66 75 6e 63 74 69 6f  | It is a.functio|
000cc5f0  6e 20 75 73 65 64 20 74  6f 20 70 72 69 6e 74 20  |n used to print |
000cc600  61 20 66 69 6c 65 2e 20  54 68 65 20 66 75 6e 63  |a file. The func|
000cc610  74 69 6f 6e 20 68 61 73  0a 74 68 65 20 66 6f 72  |tion has.the for|
000cc620  6d 3a 0a 0a 20 20 69 6e  74 20 6d 79 66 75 6e 63  |m:..  int myfunc|
000cc630  20 28 63 68 61 72 20 2a  66 69 6c 65 6e 61 6d 65  | (char *filename|
000cc640  2c 20 76 6f 69 64 20 2a  68 61 6e 64 6c 65 29 3b  |, void *handle);|
000cc650  0a 0a 27 68 61 6e 64 6c  65 27 20 69 73 20 74 68  |..'handle' is th|
000cc660  65 20 68 61 6e 64 6c 65  20 70 61 73 73 65 64 20  |e handle passed |
000cc670  74 6f 20 3c 78 66 65 72  73 65 6e 64 3e 0a 65 61  |to <xfersend>.ea|
000cc680  72 6c 69 65 72 2e 20 54  68 65 20 66 75 6e 63 74  |rlier. The funct|
000cc690  69 6f 6e 20 73 68 6f 75  6c 64 20 65 69 74 68 65  |ion should eithe|
000cc6a0  72 20 70 72 69 6e 74 20  74 68 65 0a 66 69 6c 65  |r print the.file|
000cc6b0  20 64 69 72 65 63 74 6c  79 2c 20 6f 72 20 73 61  | directly, or sa|
000cc6c0  76 65 20 69 74 20 69 6e  74 6f 20 74 68 65 20 67  |ve it into the g|
000cc6d0  69 76 65 6e 0a 66 69 6c  65 6e 61 6d 65 20 66 72  |iven.filename fr|
000cc6e0  6f 6d 20 77 68 65 72 65  20 74 68 65 20 70 72 69  |om where the pri|
000cc6f0  6e 74 65 72 20 64 72 69  76 65 72 20 77 69 6c 6c  |nter driver will|
000cc700  0a 70 72 69 6e 74 20 69  74 2e 20 49 74 20 73 68  |.print it. It sh|
000cc710  6f 75 6c 64 20 72 65 74  75 72 6e 20 65 69 74 68  |ould return eith|
000cc720  65 72 20 74 68 65 20 66  69 6c 65 20 74 79 70 65  |er the file type|
000cc730  0a 73 61 76 65 64 20 28  69 66 20 69 74 20 77 61  |.saved (if it wa|
000cc740  73 20 73 61 76 65 64 29  2c 20 3c 78 66 65 72 73  |s saved), <xfers|
000cc750  65 6e 64 5f 70 72 69 6e  74 50 72 69 6e 74 65 64  |end_printPrinted|
000cc760  3e 2c 0a 6f 72 20 3c 78  66 65 72 73 65 6e 64 5f  |>,.or <xfersend_|
000cc770  70 72 69 6e 74 46 61 69  6c 65 64 3e 2e 00 00 00  |printFailed>....|
000cc780  44 41 54 41 60 01 00 00  78 66 65 72 73 65 6e 64  |DATA`...xfersend|
000cc790  5f 72 65 61 64 5f 6c 61  73 74 5f 72 65 66 0a 53  |_read_last_ref.S|
000cc7a0  79 6e 74 61 78 3a 20 20  69 6e 74 20 78 66 65 72  |yntax:  int xfer|
000cc7b0  73 65 6e 64 5f 72 65 61  64 5f 6c 61 73 74 5f 72  |send_read_last_r|
000cc7c0  65 66 20 28 76 6f 69 64  29 3b 0a 48 65 61 64 65  |ef (void);.Heade|
000cc7d0  72 3a 20 20 3c 78 66 65  72 73 65 6e 64 2e 68 3d  |r:  <xfersend.h=|
000cc7e0  3e 78 66 65 72 73 65 6e  64 5f 68 3e 0a 0a 52 65  |>xfersend_h>..Re|
000cc7f0  74 75 72 6e 73 3a 20 6d  79 5f 72 65 66 20 76 61  |turns: my_ref va|
000cc800  6c 75 65 20 6f 66 20 6c  61 73 74 20 6d 65 73 73  |lue of last mess|
000cc810  61 67 65 20 73 65 6e 74  2e 0a 0a 54 68 65 20 6d  |age sent...The m|
000cc820  79 5f 72 65 66 20 76 61  6c 75 65 20 69 73 20 6e  |y_ref value is n|
000cc830  65 65 64 65 64 20 66 6f  72 20 75 6e 73 61 66 65  |eeded for unsafe|
000cc840  20 66 69 6c 65 73 2e 20  49 66 0a 74 68 65 79 20  | files. If.they |
000cc850  61 72 65 20 6d 61 64 65  20 73 61 66 65 2c 20 79  |are made safe, y|
000cc860  6f 75 20 61 72 65 20 73  65 6e 64 20 61 20 44 61  |ou are send a Da|
000cc870  74 61 53 61 76 65 64 0a  6d 65 73 73 61 67 65 20  |taSaved.message |
000cc880  77 69 74 68 20 74 68 65  20 72 65 66 65 72 65 6e  |with the referen|
000cc890  63 65 20 28 6f 66 20 63  6f 75 72 73 65 2c 20 74  |ce (of course, t|
000cc8a0  68 69 73 20 69 73 0a 69  72 72 65 6c 65 76 61 6e  |his is.irrelevan|
000cc8b0  74 20 69 66 20 79 6f 75  20 61 70 70 20 6d 6f 64  |t if you app mod|
000cc8c0  69 66 69 65 73 20 74 68  65 20 64 61 74 61 20 61  |ifies the data a|
000cc8d0  66 74 65 72 0a 73 61 76  69 6e 67 2e 2e 2e 29 2e  |fter.saving...).|
000cc8e0  44 41 54 41 bd 01 00 00  78 66 65 72 73 65 6e 64  |DATA....xfersend|
000cc8f0  5f 73 61 76 65 70 72 6f  63 0a 54 68 69 73 20 74  |_saveproc.This t|
000cc900  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
000cc910  6e 20 3c 78 66 65 72 73  65 6e 64 2e 68 3d 3e 78  |n <xfersend.h=>x|
000cc920  66 65 72 73 65 6e 64 5f  68 3e 20 61 6e 64 20 3c  |fersend_h> and <|
000cc930  54 69 6d 73 4c 69 62 3a  58 66 65 72 53 65 6e 64  |TimsLib:XferSend|
000cc940  2e 68 3d 3e 58 66 65 72  53 65 6e 64 5f 54 4c 3e  |.h=>XferSend_TL>|
000cc950  2e 20 49 74 20 69 73 20  61 20 66 75 6e 63 74 69  |. It is a functi|
000cc960  6f 6e 20 75 73 65 64 20  74 6f 20 73 61 76 65 20  |on used to save |
000cc970  64 61 74 61 20 74 6f 20  62 65 20 74 72 61 6e 73  |data to be trans|
000cc980  66 65 72 72 65 64 20 69  6e 74 6f 20 61 20 67 69  |ferred into a gi|
000cc990  76 65 6e 20 66 69 6c 65  2e 20 54 68 65 20 66 75  |ven file. The fu|
000cc9a0  6e 63 74 69 6f 6e 20 68  61 73 20 74 68 65 20 66  |nction has the f|
000cc9b0  6f 72 6d 3a 0a 0a 7b 66  43 6f 64 65 3b 61 6c 69  |orm:..{fCode;ali|
000cc9c0  67 6e 20 63 65 6e 74 72  65 7d 3c 42 4f 4f 4c 3e  |gn centre}<BOOL>|
000cc9d0  20 6d 79 66 75 6e 63 20  28 63 68 61 72 20 2a 66  | myfunc (char *f|
000cc9e0  69 6c 65 6e 61 6d 65 2c  20 76 6f 69 64 20 2a 68  |ilename, void *h|
000cc9f0  61 6e 64 6c 65 29 3b 7b  66 3b 61 6c 69 67 6e 7d  |andle);{f;align}|
000cca00  0a 0a 2f 66 69 6c 65 6e  61 6d 65 2f 20 69 73 20  |../filename/ is |
000cca10  74 68 65 20 6e 61 6d 65  20 6f 66 20 74 68 65 20  |the name of the |
000cca20  66 69 6c 65 20 74 6f 20  62 65 20 73 61 76 65 64  |file to be saved|
000cca30  2c 20 2f 68 61 6e 64 6c  65 2f 20 69 73 20 74 68  |, /handle/ is th|
000cca40  65 20 68 61 6e 64 6c 65  20 70 61 73 73 65 64 20  |e handle passed |
000cca50  74 6f 20 3c 78 66 65 72  73 65 6e 64 3e 20 65 61  |to <xfersend> ea|
000cca60  72 6c 69 65 72 2e 20 54  68 65 20 66 75 6e 63 74  |rlier. The funct|
000cca70  69 6f 6e 20 73 68 6f 75  6c 64 20 72 65 74 75 72  |ion should retur|
000cca80  6e 20 3c 54 52 55 45 3e  20 69 66 20 69 74 20 69  |n <TRUE> if it i|
000cca90  73 20 73 75 63 63 65 73  73 66 75 6c 2e 00 00 00  |s successful....|
000ccaa0  44 41 54 41 28 01 00 00  78 66 65 72 73 65 6e 64  |DATA(...xfersend|
000ccab0  5f 73 65 6e 64 62 75 66  0a 53 79 6e 74 61 78 3a  |_sendbuf.Syntax:|
000ccac0  20 20 3c 42 4f 4f 4c 3e  20 78 66 65 72 73 65 6e  |  <BOOL> xfersen|
000ccad0  64 5f 73 65 6e 64 62 75  66 0a 20 20 20 20 20 20  |d_sendbuf.      |
000ccae0  20 20 20 28 63 68 61 72  20 2a 62 75 66 66 65 72  |   (char *buffer|
000ccaf0  2c 20 69 6e 74 20 73 69  7a 65 29 3b 0a 48 65 61  |, int size);.Hea|
000ccb00  64 65 72 3a 20 20 3c 78  66 65 72 73 65 6e 64 2e  |der:  <xfersend.|
000ccb10  68 3d 3e 78 66 65 72 73  65 6e 64 5f 68 3e 0a 0a  |h=>xfersend_h>..|
000ccb20  52 65 74 75 72 6e 73 3a  20 3c 54 52 55 45 3e 20  |Returns: <TRUE> |
000ccb30  69 66 20 73 75 63 63 65  73 73 66 75 6c 2e 0a 0a  |if successful...|
000ccb40  54 68 69 73 20 66 75 6e  63 74 69 6f 6e 20 73 65  |This function se|
000ccb50  6e 64 73 20 74 68 65 20  62 75 66 66 65 72 20 77  |nds the buffer w|
000ccb60  68 6f 73 65 20 70 6f 69  6e 74 65 72 0a 61 6e 64  |hose pointer.and|
000ccb70  20 73 69 7a 65 20 61 72  65 20 67 69 76 65 6e 20  | size are given |
000ccb80  74 6f 20 61 20 72 65 63  65 69 76 65 72 2e 20 54  |to a receiver. T|
000ccb90  68 69 73 20 66 75 6e 63  74 69 6f 6e 0a 73 68 6f  |his function.sho|
000ccba0  75 6c 64 20 62 65 20 63  61 6c 6c 65 64 20 62 79  |uld be called by|
000ccbb0  20 61 6e 20 3c 78 66 65  72 73 65 6e 64 5f 73 65  | an <xfersend_se|
000ccbc0  6e 64 70 72 6f 63 3e 2e  44 41 54 41 a2 01 00 00  |ndproc>.DATA....|
000ccbd0  78 66 65 72 73 65 6e 64  5f 73 65 6e 64 70 72 6f  |xfersend_sendpro|
000ccbe0  63 0a 54 68 69 73 20 74  79 70 65 20 69 73 20 64  |c.This type is d|
000ccbf0  65 66 69 6e 65 64 20 69  6e 20 3c 78 66 65 72 73  |efined in <xfers|
000ccc00  65 6e 64 2e 68 3d 3e 78  66 65 72 73 65 6e 64 5f  |end.h=>xfersend_|
000ccc10  68 3e 2e 20 49 74 20 69  73 20 61 0a 66 75 6e 63  |h>. It is a.func|
000ccc20  74 69 6f 6e 20 75 73 65  64 20 74 6f 20 73 65 6e  |tion used to sen|
000ccc30  64 20 61 20 62 75 66 66  65 72 20 6f 66 20 64 61  |d a buffer of da|
000ccc40  74 61 2e 20 54 68 65 0a  66 75 6e 63 74 69 6f 6e  |ta. The.function|
000ccc50  20 68 61 73 20 74 68 65  20 66 6f 72 6d 3a 0a 0a  | has the form:..|
000ccc60  20 20 3c 42 4f 4f 4c 3e  20 6d 79 66 75 6e 63 20  |  <BOOL> myfunc |
000ccc70  28 76 6f 69 64 20 2a 68  61 6e 64 6c 65 2c 20 69  |(void *handle, i|
000ccc80  6e 74 20 2a 6d 61 78 62  75 66 29 3b 0a 0a 27 68  |nt *maxbuf);..'h|
000ccc90  61 6e 64 6c 65 27 20 69  73 20 74 68 65 20 68 61  |andle' is the ha|
000ccca0  6e 64 6c 65 20 70 61 73  73 65 64 20 74 6f 20 3c  |ndle passed to <|
000cccb0  78 66 65 72 73 65 6e 64  3e 0a 65 61 72 6c 69 65  |xfersend>.earlie|
000cccc0  72 2e 20 54 68 65 20 66  75 6e 63 74 69 6f 6e 20  |r. The function |
000cccd0  73 68 6f 75 6c 64 20 63  61 6c 6c 0a 3c 78 66 65  |should call.<xfe|
000ccce0  72 73 65 6e 64 5f 73 65  6e 64 62 75 66 3e 20 74  |rsend_sendbuf> t|
000cccf0  6f 20 73 65 6e 64 20 6f  6e 65 20 62 75 66 66 65  |o send one buffe|
000ccd00  72 2d 66 75 6c 6c 20 6f  66 0a 64 61 74 61 20 6e  |r-full of.data n|
000ccd10  6f 20 62 69 67 67 65 72  20 74 68 61 6e 20 27 2a  |o bigger than '*|
000ccd20  6d 61 78 62 75 66 27 2e  20 49 74 20 73 68 6f 75  |maxbuf'. It shou|
000ccd30  6c 64 20 72 65 74 75 72  6e 0a 3c 54 52 55 45 3e  |ld return.<TRUE>|
000ccd40  20 69 66 20 74 68 65 20  64 61 74 61 20 77 61 73  | if the data was|
000ccd50  20 73 75 63 63 65 73 73  66 75 6c 6c 79 20 74 72  | successfully tr|
000ccd60  61 6e 73 6d 69 74 74 65  64 2e 00 00 44 41 54 41  |ansmitted...DATA|
000ccd70  f3 00 00 00 78 66 65 72  73 65 6e 64 5f 73 65 74  |....xfersend_set|
000ccd80  5f 66 69 6c 65 69 73 73  61 66 65 0a 53 79 6e 74  |_fileissafe.Synt|
000ccd90  61 78 3a 20 20 76 6f 69  64 20 78 66 65 72 73 65  |ax:  void xferse|
000ccda0  6e 64 5f 73 65 74 5f 66  69 6c 65 69 73 73 61 66  |nd_set_fileissaf|
000ccdb0  65 20 28 3c 42 4f 4f 4c  3e 20 73 66 29 3b 0a 48  |e (<BOOL> sf);.H|
000ccdc0  65 61 64 65 72 3a 20 20  3c 78 66 65 72 73 65 6e  |eader:  <xfersen|
000ccdd0  64 2e 68 3d 3e 78 66 65  72 73 65 6e 64 5f 68 3e  |d.h=>xfersend_h>|
000ccde0  0a 0a 54 68 69 73 20 66  75 6e 63 74 69 6f 6e 20  |..This function |
000ccdf0  73 65 74 73 20 77 68 65  74 68 65 72 20 61 20 66  |sets whether a f|
000cce00  69 6c 65 27 73 20 6e 61  6d 65 20 77 69 6c 6c 0a  |ile's name will.|
000cce10  72 65 6d 61 69 6e 20 75  6e 63 68 61 6e 67 65 64  |remain unchanged|
000cce20  20 64 75 72 69 6e 67 20  64 61 74 61 20 74 72 61  | during data tra|
000cce30  6e 73 66 65 72 2e 20 49  66 20 27 73 66 27 0a 69  |nsfer. If 'sf'.i|
000cce40  73 20 3c 54 52 55 45 3e  20 74 68 65 6e 20 74 68  |s <TRUE> then th|
000cce50  65 20 66 69 6c 65 20 69  73 20 73 61 66 65 2e 00  |e file is safe..|
000cce60  44 41 54 41 aa 00 00 00  54 69 6d 73 4c 69 62 3a  |DATA....TimsLib:|
000cce70  58 66 65 72 53 65 6e 64  2e 68 0a 54 68 69 73 20  |XferSend.h.This |
000cce80  68 65 61 64 65 72 20 64  65 63 6c 61 72 65 73 20  |header declares |
000cce90  61 20 66 75 6e 63 74 69  6f 6e 20 66 6f 72 20 67  |a function for g|
000ccea0  65 6e 65 72 61 6c 20 70  75 72 70 6f 73 65 20 65  |eneral purpose e|
000cceb0  78 70 6f 72 74 20 6f 66  20 64 61 74 61 20 62 79  |xport of data by|
000ccec0  20 61 6e 20 69 63 6f 6e  20 64 72 61 67 2e 0a 0a  | an icon drag...|
000cced0  46 75 6e 63 74 69 6f 6e  3a 09 3c 58 66 65 72 53  |Function:.<XferS|
000ccee0  65 6e 64 3d 3e 58 66 65  72 53 65 6e 64 5f 3e 0a  |end=>XferSend_>.|
000ccef0  0a 54 79 70 65 3a 09 3c  78 66 65 72 73 65 6e 64  |.Type:.<xfersend|
000ccf00  5f 73 61 76 65 70 72 6f  63 3e 00 00 44 49 52 24  |_saveproc>..DIR$|
000ccf10  98 00 00 00 98 00 00 00  a4 cf 0c 00 46 ff ff ff  |............F...|
000ccf20  4a 65 b5 22 b3 00 00 00  13 00 00 00 00 00 00 00  |Je."............|
000ccf30  31 31 30 00 58 d0 0c 00  46 ff ff ff 4f 65 b5 22  |110.X...F...Oe."|
000ccf40  83 00 00 00 13 00 00 00  00 00 00 00 31 32 30 00  |............120.|
000ccf50  dc d0 0c 00 46 ff ff ff  5b 65 b5 22 89 01 00 00  |....F...[e."....|
000ccf60  13 00 00 00 00 00 00 00  31 32 35 00 68 d2 0c 00  |........125.h...|
000ccf70  46 ff ff ff 66 65 b5 22  a4 00 00 00 13 00 00 00  |F...fe."........|
000ccf80  00 00 00 00 31 33 30 00  0c d3 0c 00 46 ff ff ff  |....130.....F...|
000ccf90  eb cc b3 25 e1 00 00 00  13 00 00 00 00 00 00 00  |...%............|
000ccfa0  32 30 30 00 44 41 54 41  b3 00 00 00 43 68 61 6e  |200.DATA....Chan|
000ccfb0  67 65 73 20 66 72 6f 6d  20 76 65 72 73 69 6f 6e  |ges from version|
000ccfc0  20 31 2e 30 30 20 2d 3e  20 31 2e 31 30 0a 8f 20  | 1.00 -> 1.10.. |
000ccfd0  48 65 6c 70 20 66 6f 72  20 3c 54 69 6d 73 4c 69  |Help for <TimsLi|
000ccfe0  62 3d 3e 72 6f 5f 74 6c  69 62 5f 3e 20 6e 6f 77  |b=>ro_tlib_> now|
000ccff0  20 61 64 64 65 64 2e 0a  0a 8f 20 56 65 72 73 69  | added.... Versi|
000cd000  6f 6e 20 6e 75 6d 62 65  72 73 20 61 64 64 65 64  |on numbers added|
000cd010  20 74 6f 20 3c 44 65 73  6b 4c 69 62 3d 3e 72 6f  | to <DeskLib=>ro|
000cd020  5f 64 6c 69 62 5f 3e 20  68 65 6c 70 2e 0a 0a 8f  |_dlib_> help....|
000cd030  20 48 65 6c 70 20 61 64  64 65 64 20 66 6f 72 20  | Help added for |
000cd040  3c 44 65 73 6b 4c 69 62  3a 50 61 6e 65 2e 68 3d  |<DeskLib:Pane.h=|
000cd050  3e 50 61 6e 65 3e 2e 00  44 41 54 41 83 00 00 00  |>Pane>..DATA....|
000cd060  43 68 61 6e 67 65 73 20  66 72 6f 6d 20 76 65 72  |Changes from ver|
000cd070  73 69 6f 6e 20 31 2e 31  30 20 2d 3e 20 31 2e 32  |sion 1.10 -> 1.2|
000cd080  30 0a 8f 20 48 65 6c 70  20 66 6f 72 20 44 65 73  |0.. Help for Des|
000cd090  6b 4c 69 62 20 75 70 64  61 74 65 64 20 74 6f 20  |kLib updated to |
000cd0a0  76 65 72 73 69 6f 6e 20  32 2e 31 30 0a 0a 20 20  |version 2.10..  |
000cd0b0  20 20 3c 43 68 61 6e 67  65 73 20 66 72 6f 6d 20  |  <Changes from |
000cd0c0  76 65 72 73 69 6f 6e 20  31 2e 30 30 20 2d 5c 3e  |version 1.00 -\>|
000cd0d0  20 31 2e 31 30 3d 3e 31  31 30 3e 00 44 41 54 41  | 1.10=>110>.DATA|
000cd0e0  89 01 00 00 43 68 61 6e  67 65 73 20 66 72 6f 6d  |....Changes from|
000cd0f0  20 76 65 72 73 69 6f 6e  20 31 2e 32 30 20 2d 3e  | version 1.20 ->|
000cd100  20 31 2e 32 35 0a 56 61  72 69 6f 75 73 20 63 68  | 1.25.Various ch|
000cd110  61 6e 67 65 73 20 61 74  20 74 68 65 20 72 65 71  |anges at the req|
000cd120  75 65 73 74 20 6f 66 20  53 74 61 6c 6c 69 6f 6e  |uest of Stallion|
000cd130  3a 0a 0a 8f 20 48 65 6c  70 20 61 64 64 65 64 20  |:... Help added |
000cd140  66 6f 72 20 3c 66 6c 6f  61 74 2e 68 3d 3e 66 6c  |for <float.h=>fl|
000cd150  6f 61 74 3e 0a 8f 20 48  65 6c 70 20 61 64 64 65  |oat>.. Help adde|
000cd160  64 20 66 6f 72 20 3c 6c  6f 63 61 6c 65 2e 68 3d  |d for <locale.h=|
000cd170  3e 6c 6f 63 61 6c 65 3e  0a 8f 20 48 65 6c 70 20  |>locale>.. Help |
000cd180  61 64 64 65 64 20 66 6f  72 20 3c 73 69 67 6e 61  |added for <signa|
000cd190  6c 2e 68 3d 3e 73 69 67  6e 61 6c 3e 0a 8f 20 41  |l.h=>signal>.. A|
000cd1a0  75 74 68 6f 72 20 69 6e  66 6f 72 6d 61 74 69 6f  |uthor informatio|
000cd1b0  6e 20 72 65 6d 6f 76 65  64 0a 8f 20 43 6f 6d 6d  |n removed.. Comm|
000cd1c0  65 6e 74 73 20 6f 6e 20  44 65 73 6b 74 6f 70 20  |ents on Desktop |
000cd1d0  43 20 72 65 6d 6f 76 65  64 0a 0a 4f 74 68 65 72  |C removed..Other|
000cd1e0  20 63 68 61 6e 67 65 73  3a 0a 0a 8f 20 43 6f 6d  | changes:... Com|
000cd1f0  6d 65 6e 74 20 61 62 6f  75 74 20 6f 62 73 6f 6c  |ment about obsol|
000cd200  65 73 63 65 6e 63 65 20  6f 66 20 54 69 6d 73 4c  |escence of TimsL|
000cd210  69 62 20 61 64 64 65 64  0a 8f 20 56 61 72 69 6f  |ib added.. Vario|
000cd220  75 73 20 61 64 64 69 74  69 6f 6e 73 20 74 6f 20  |us additions to |
000cd230  68 65 6c 70 0a 0a 20 20  20 20 20 20 3c 43 68 61  |help..      <Cha|
000cd240  6e 67 65 73 20 66 72 6f  6d 20 76 65 72 73 69 6f  |nges from versio|
000cd250  6e 20 31 2e 31 30 20 2d  5c 3e 20 31 2e 32 30 3d  |n 1.10 -\> 1.20=|
000cd260  3e 31 32 30 3e 00 00 00  44 41 54 41 a4 00 00 00  |>120>...DATA....|
000cd270  43 68 61 6e 67 65 73 20  66 72 6f 6d 20 76 65 72  |Changes from ver|
000cd280  73 69 6f 6e 20 31 2e 32  35 20 2d 3e 20 31 2e 33  |sion 1.25 -> 1.3|
000cd290  30 0a 4e 6f 20 6c 6f 6e  67 65 72 20 62 65 69 6e  |0.No longer bein|
000cd2a0  67 20 73 6f 6c 64 20 62  79 20 53 74 61 6c 6c 69  |g sold by Stalli|
000cd2b0  6f 6e 20 53 6f 66 74 77  61 72 65 2e 0a 0a 8f 20  |on Software.... |
000cd2c0  4d 61 65 6c 73 74 72 6f  6d 20 53 6f 66 74 77 61  |Maelstrom Softwa|
000cd2d0  72 65 20 69 6e 66 6f 20  61 64 64 65 64 2e 0a 0a  |re info added...|
000cd2e0  20 20 20 3c 43 68 61 6e  67 65 73 20 66 72 6f 6d  |   <Changes from|
000cd2f0  20 76 65 72 73 69 6f 6e  20 31 2e 32 30 20 2d 5c  | version 1.20 -\|
000cd300  3e 20 31 2e 32 35 3d 3e  31 32 35 3e 44 41 54 41  |> 1.25=>125>DATA|
000cd310  e1 00 00 00 43 68 61 6e  67 65 73 20 66 72 6f 6d  |....Changes from|
000cd320  20 76 65 72 73 69 6f 6e  20 31 2e 33 30 20 2d 3e  | version 1.30 ->|
000cd330  20 32 2e 30 30 0a 23 77  72 61 70 20 6f 66 66 0a  | 2.00.#wrap off.|
000cd340  8f 20 4e 6f 77 20 75 70  67 72 61 64 65 64 20 74  |. Now upgraded t|
000cd350  6f 20 53 74 72 6f 6e 67  48 65 6c 70 20 32 20 66  |o StrongHelp 2 f|
000cd360  6f 72 6d 61 74 0a 8f 20  48 65 6c 70 20 66 6f 72  |ormat.. Help for|
000cd370  20 44 65 73 6b 4c 69 62  20 75 70 64 61 74 65 64  | DeskLib updated|
000cd380  20 74 6f 20 76 65 72 73  69 6f 6e 20 32 2e 31 36  | to version 2.16|
000cd390  0a 8f 20 4c 6f 74 73 20  6f 66 20 63 6f 72 72 65  |.. Lots of corre|
000cd3a0  63 74 69 6f 6e 73 20 61  6e 64 20 61 64 64 69 74  |ctions and addit|
000cd3b0  69 6f 6e 73 0a 0a 23 61  6c 69 67 6e 20 63 65 6e  |ions..#align cen|
000cd3c0  74 72 65 0a 3c 43 68 61  6e 67 65 73 20 66 72 6f  |tre.<Changes fro|
000cd3d0  6d 20 76 65 72 73 69 6f  6e 20 31 2e 32 35 20 2d  |m version 1.25 -|
000cd3e0  5c 3e 20 31 2e 33 30 3d  3e 31 33 30 3e 00 00 00  |\> 1.30=>130>...|
000cd3f0  44 41 54 41 43 00 00 00  23 43 6f 6d 6d 61 6e 64  |DATAC...#Command|
000cd400  73 0a 42 61 63 6b 67 72  6f 75 6e 64 20 57 69 6d  |s.Background Wim|
000cd410  70 20 31 0a 53 70 72 69  74 65 66 69 6c 65 20 53  |p 1.Spritefile S|
000cd420  70 72 69 74 65 73 32 32  0a 66 53 74 64 0a 23 45  |prites22.fStd.#E|
000cd430  6e 64 0a 00 44 41 54 41  5d 02 00 00 73 61 76 65  |nd..DATA]...save|
000cd440  5f 72 61 6d 73 61 76 65  72 0a 54 68 69 73 20 74  |_ramsaver.This t|
000cd450  79 70 65 20 69 73 20 64  65 66 69 6e 65 64 20 69  |ype is defined i|
000cd460  6e 20 3c 44 65 73 6b 4c  69 62 3a 53 61 76 65 2e  |n <DeskLib:Save.|
000cd470  68 3d 3e 53 61 76 65 3e  2e 20 49 74 20 64 65 66  |h=>Save>. It def|
000cd480  69 6e 65 73 20 61 20 66  75 6e 63 74 69 6f 6e 20  |ines a function |
000cd490  74 79 70 65 20 75 73 65  64 20 66 6f 72 20 73 61  |type used for sa|
000cd4a0  76 69 6e 67 20 64 61 74  61 2e 20 54 68 65 20 66  |ving data. The f|
000cd4b0  75 6e 63 74 69 6f 6e 20  69 73 20 6f 66 20 74 68  |unction is of th|
000cd4c0  65 20 66 6f 72 6d 3a 0a  0a 7b 66 43 6f 64 65 3b  |e form:..{fCode;|
000cd4d0  61 6c 69 67 6e 20 63 65  6e 74 72 65 7d 69 6e 74  |align centre}int|
000cd4e0  20 6d 79 66 75 6e 63 20  28 3c 74 61 73 6b 5f 68  | myfunc (<task_h|
000cd4f0  61 6e 64 6c 65 3e 20 73  6f 75 72 63 65 2c 20 76  |andle> source, v|
000cd500  6f 69 64 20 2a 72 65 66  2c 20 74 61 73 6b 5f 68  |oid *ref, task_h|
000cd510  61 6e 64 6c 65 20 64 65  73 74 69 6e 2c 20 76 6f  |andle destin, vo|
000cd520  69 64 20 2a 62 75 66 2c  20 75 6e 73 69 67 6e 65  |id *buf, unsigne|
000cd530  64 20 69 6e 74 20 73 69  7a 65 2c 20 69 6e 74 20  |d int size, int |
000cd540  63 6f 75 6e 74 29 3b 7b  66 3b 61 6c 69 67 6e 7d  |count);{f;align}|
000cd550  0a 0a 54 68 65 20 66 75  6e 63 74 69 6f 6e 20 73  |..The function s|
000cd560  68 6f 75 6c 64 20 75 73  65 20 3c 57 69 6d 70 5f  |hould use <Wimp_|
000cd570  54 72 61 6e 73 66 65 72  42 6c 6f 63 6b 3e 20 74  |TransferBlock> t|
000cd580  6f 20 74 72 61 6e 73 66  65 72 20 64 61 74 61 20  |o transfer data |
000cd590  74 6f 20 2f 62 75 66 2f  20 69 6e 20 74 68 65 20  |to /buf/ in the |
000cd5a0  74 61 73 6b 20 2f 64 65  73 74 69 6e 2f 2e 20 2f  |task /destin/. /|
000cd5b0  73 69 7a 65 2f 20 67 69  76 65 73 20 74 68 65 20  |size/ gives the |
000cd5c0  73 69 7a 65 20 6f 66 20  2f 62 75 66 2f 20 69 65  |size of /buf/ ie|
000cd5d0  20 74 68 65 20 61 6d 6f  75 6e 74 20 74 6f 20 74  | the amount to t|
000cd5e0  72 61 6e 73 66 65 72 20  61 6e 64 20 2f 63 6f 75  |ransfer and /cou|
000cd5f0  6e 74 2f 20 69 73 20 74  68 65 20 61 6d 6f 75 6e  |nt/ is the amoun|
000cd600  74 20 74 72 61 6e 73 66  65 72 72 65 64 20 73 6f  |t transferred so|
000cd610  20 66 61 72 2e 20 2f 73  6f 75 72 63 65 2f 20 69  | far. /source/ i|
000cd620  73 20 79 6f 75 72 20 74  61 73 6b 20 68 61 6e 64  |s your task hand|
000cd630  6c 65 2e 20 54 68 65 20  66 75 6e 63 74 69 6f 6e  |le. The function|
000cd640  20 73 68 6f 75 6c 64 20  72 65 74 75 72 6e 20 74  | should return t|
000cd650  68 65 20 6e 75 6d 62 65  72 20 6f 66 20 62 79 74  |he number of byt|
000cd660  65 73 20 74 72 61 6e 73  66 65 72 72 65 64 2c 20  |es transferred, |
000cd670  6f 72 20 6e 65 67 61 74  69 76 65 20 69 66 20 61  |or negative if a|
000cd680  6e 20 65 72 72 6f 72 20  6f 63 63 75 72 72 65 64  |n error occurred|
000cd690  2e 00 00 00 46 52 45 45  56 02 00 00 80 73 08 00  |....FREEV....s..|
000cd6a0  5f 49 6e 69 74 53 61 76  65 57 69 6e 64 6f 77 48  |_InitSaveWindowH|
000cd6b0  61 6e 64 6c 65 72 0a 53  79 6e 74 61 78 3a 09 3c  |andler.Syntax:.<|
000cd6c0  73 61 76 65 5f 73 61 76  65 62 6c 6f 63 6b 3e 20  |save_saveblock> |
000cd6d0  2a 53 61 76 65 5f 49 6e  69 74 53 61 76 65 57 69  |*Save_InitSaveWi|
000cd6e0  6e 64 6f 77 48 61 6e 64  6c 65 72 20 28 3c 77 69  |ndowHandler (<wi|
000cd6f0  6e 64 6f 77 5f 68 61 6e  64 6c 65 3e 20 77 2c 20  |ndow_handle> w, |
000cd700  3c 42 4f 4f 4c 3e 20 69  73 5f 6d 65 6e 75 2c 20  |<BOOL> is_menu, |
000cd710  42 4f 4f 4c 20 69 73 5f  77 69 6e 2c 20 42 4f 4f  |BOOL is_win, BOO|
000cd720  4c 20 72 65 6c 65 61 73  65 2c 20 3c 69 63 6f 6e  |L release, <icon|
000cd730  5f 68 61 6e 64 6c 65 3e  20 64 72 61 67 2c 20 69  |_handle> drag, i|
000cd740  63 6f 6e 5f 68 61 6e 64  6c 65 20 6f 6b 2c 20 69  |con_handle ok, i|
000cd750  63 6f 6e 5f 68 61 6e 64  6c 65 20 63 61 6e 63 65  |con_handle cance|
000cd760  6c 2c 20 69 63 6f 6e 5f  68 61 6e 64 6c 65 20 6e  |l, icon_handle n|
000cd770  61 6d 65 2c 20 3c 73 61  76 65 5f 66 69 6c 65 73  |ame, <save_files|
000cd780  61 76 65 72 3e 20 66 69  6c 65 73 61 76 65 2c 20  |aver> filesave, |
000cd790  3c 73 61 76 65 5f 72 61  6d 73 61 76 65 72 3e 20  |<save_ramsaver> |
000cd7a0  72 61 6d 73 61 76 65 2c  20 3c 73 61 76 65 5f 72  |ramsave, <save_r|
000cd7b0  65 73 75 6c 74 68 61 6e  64 6c 65 72 3e 20 72 65  |esulthandler> re|
000cd7c0  73 5f 68 61 6e 64 6c 65  2c 20 3c 73 69 7a 65 5f  |s_handle, <size_|
000cd7d0  74 3e 20 65 73 74 73 69  7a 65 2c 20 76 6f 69 64  |t> estsize, void|
000cd7e0  20 2a 72 65 66 29 3b 0a  48 65 61 64 65 72 3a 09  | *ref);.Header:.|
000cd7f0  3c 44 65 73 6b 4c 69 62  3a 53 61 76 65 2e 68 3d  |<DeskLib:Save.h=|
000cd800  3e 53 61 76 65 3e 0a 0a  52 65 74 75 72 6e 73 3a  |>Save>..Returns:|
000cd810  09 50 6f 69 6e 74 65 72  20 74 6f 20 73 61 76 65  |.Pointer to save|
000cd820  20 62 6c 6f 63 6b 2e 0a  0a 54 68 69 73 20 66 75  | block...This fu|
000cd830  6e 63 74 69 6f 6e 20 68  61 6e 64 6c 65 73 20 65  |nction handles e|
000cd840  76 65 72 79 74 68 69 6e  67 20 74 6f 20 64 6f 20  |verything to do |
000cd850  77 69 74 68 20 73 61 76  69 6e 67 2e 20 4f 6e 63  |with saving. Onc|
000cd860  65 20 79 6f 75 72 20 73  61 76 65 0a 77 69 6e 64  |e your save.wind|
000cd870  6f 77 20 69 73 20 63 72  65 61 74 65 64 20 61 6c  |ow is created al|
000cd880  6c 20 79 6f 75 20 6e 65  65 64 20 74 6f 20 64 6f  |l you need to do|
000cd890  20 69 73 20 63 61 6c 6c  20 74 68 69 73 20 77 69  | is call this wi|
000cd8a0  74 68 3a 0a 7b 74 61 62  7d 0a 8f 09 54 68 65 20  |th:.{tab}...The |
000cd8b0  77 69 6e 64 6f 77 20 68  61 6e 64 6c 65 20 6f 66  |window handle of|
000cd8c0  20 74 68 65 20 73 61 76  65 20 77 69 6e 64 6f 77  | the save window|
000cd8d0  0a 8f 09 49 66 20 74 68  65 20 73 61 76 65 20 77  |...If the save w|
000cd8e0  69 6e 64 6f 77 20 69 73  20 6f 44 41 54 41 ab 01  |indow is oDATA..|
000cd8f0  00 00 73 70 72 69 74 65  5f 69 6e 66 6f 0a 54 68  |..sprite_info.Th|
000cd900  69 73 20 74 79 70 65 20  69 73 20 64 65 66 69 6e  |is type is defin|
000cd910  65 64 20 69 6e 20 3c 73  70 72 69 74 65 2e 68 3d  |ed in <sprite.h=|
000cd920  3e 73 70 72 69 74 65 5f  68 3e 20 28 44 65 73 6b  |>sprite_h> (Desk|
000cd930  74 6f 70 20 43 29 20 61  6e 64 20 3c 44 65 73 6b  |top C) and <Desk|
000cd940  4c 69 62 3a 53 70 72 69  74 65 2e 68 3d 3e 53 70  |Lib:Sprite.h=>Sp|
000cd950  72 69 74 65 5f 44 4c 3e  2e 20 49 74 20 69 73 20  |rite_DL>. It is |
000cd960  64 65 66 69 6e 65 64 20  61 73 20 74 68 65 20 66  |defined as the f|
000cd970  6f 6c 6c 6f 77 69 6e 67  20 73 74 72 75 63 74 75  |ollowing structu|
000cd980  72 65 20 69 6e 20 44 65  73 6b 74 6f 70 20 43 3a  |re in Desktop C:|
000cd990  0a 0a 20 20 20 20 5c 7b  0a 20 20 20 20 20 20 20  |..    \{.       |
000cd9a0  20 69 6e 74 20 77 69 64  74 68 3b 0a 20 20 20 20  | int width;.    |
000cd9b0  20 20 20 20 69 6e 74 20  68 65 69 67 68 74 3b 0a  |    int height;.|
000cd9c0  20 20 20 20 20 20 20 20  69 6e 74 20 6d 61 73 6b  |        int mask|
000cd9d0  3b 0a 20 20 20 20 20 20  20 20 69 6e 74 20 6d 6f  |;.        int mo|
000cd9e0  64 65 3b 0a 20 20 20 20  7d 0a 0a 61 6e 64 20 74  |de;.    }..and t|
000cd9f0  68 65 20 66 6f 6c 6c 6f  77 69 6e 67 20 73 74 72  |he following str|
000cda00  75 63 74 75 72 65 20 69  6e 20 44 65 73 6b 4c 69  |ucture in DeskLi|
000cda10  62 3a 0a 0a 20 20 20 20  5c 7b 0a 20 20 20 20 20  |b:..    \{.     |
000cda20  20 20 20 75 6e 73 69 67  6e 65 64 20 69 6e 74 20  |   unsigned int |
000cda30  77 69 64 74 68 3b 0a 20  20 20 20 20 20 20 20 75  |width;.        u|
000cda40  6e 73 69 67 6e 65 64 20  69 6e 74 20 68 65 69 67  |nsigned int heig|
000cda50  68 74 3b 0a 20 20 20 20  20 20 20 20 75 6e 73 69  |ht;.        unsi|
000cda60  67 6e 65 64 20 69 6e 74  20 6d 61 73 6b 73 74 61  |gned int masksta|
000cda70  74 75 73 3b 0a 20 20 20  20 20 20 20 20 75 6e 73  |tus;.        uns|
000cda80  69 67 6e 65 64 20 69 6e  74 20 6d 6f 64 65 3b 0a  |igned int mode;.|
000cda90  20 20 20 20 7d 61 44 41  54 41 2a 01 00 00 66 77  |    }aDATA*...fw|
000cdaa0  72 69 74 65 0a 53 79 6e  74 61 78 3a 09 3c 73 69  |rite.Syntax:.<si|
000cdab0  7a 65 5f 74 3e 20 66 77  72 69 74 65 20 28 76 6f  |ze_t> fwrite (vo|
000cdac0  69 64 20 2a 70 74 72 2c  20 73 69 7a 65 5f 74 20  |id *ptr, size_t |
000cdad0  73 69 7a 65 2c 20 73 69  7a 65 5f 74 20 6e 6f 62  |size, size_t nob|
000cdae0  6a 2c 20 3c 46 49 4c 45  3e 20 2a 73 74 72 65 61  |j, <FILE> *strea|
000cdaf0  6d 29 3b 0a 48 65 61 64  65 72 3a 09 3c 73 74 64  |m);.Header:.<std|
000cdb00  69 6f 2e 68 3d 3e 73 74  64 69 6f 3e 0a 0a 52 65  |io.h=>stdio>..Re|
000cdb10  74 75 72 6e 73 3a 09 54  68 65 20 6e 75 6d 62 65  |turns:.The numbe|
000cdb20  72 20 6f 66 20 6f 62 6a  65 63 74 73 20 77 72 69  |r of objects wri|
000cdb30  74 74 65 6e 2e 0a 0a 54  68 69 73 20 66 75 6e 63  |tten...This func|
000cdb40  74 69 6f 6e 20 77 72 69  74 65 73 20 2f 6e 6f 62  |tion writes /nob|
000cdb50  6a 2f 20 6f 62 6a 65 63  74 73 20 6f 66 20 73 69  |j/ objects of si|
000cdb60  7a 65 20 73 70 65 63 69  66 69 65 64 20 62 79 20  |ze specified by |
000cdb70  2f 73 69 7a 65 2f 20 66  72 6f 6d 20 74 68 65 20  |/size/ from the |
000cdb80  61 72 72 61 79 20 70 6f  69 6e 74 65 64 20 74 6f  |array pointed to|
000cdb90  20 62 79 20 2f 70 74 72  2f 2c 20 69 6e 74 6f 20  | by /ptr/, into |
000cdba0  74 68 65 20 66 69 6c 65  20 70 6f 69 6e 74 65 64  |the file pointed|
000cdbb0  20 74 6f 20 62 79 20 2f  73 74 72 65 61 6d 2f 2e  | to by /stream/.|
000cdbc0  65 2e 00 00                                       |e...|
000cdbc4