[comp.sources.amiga] v90i259: requester.library 1.2 - requester library, Part01/03

amiga-request@abcfd20.larc.nasa.gov (Amiga Sources/Binaries Moderator) (09/29/90)

Submitted-by: Paul-Erik Raue <peraue@cs.vu.nl>
Posting-number: Volume 90, Issue 259
Archive-name: libraries/reqlib-1.2/part01

[ uuencoded objects, icons, and sample program included  ...tad ]

[ from the read.me ... ]
Req.library adds user-friendliness to the Amiga's user interface.
While Intuition does supply requesters, they have certain limitations
and are awkward to set up.  We designed ours to be quick and easy to
set up, as well as adding features.  The text requester has PRINTF
style formatting built in!  There is a colour requester, a very
powerful file requester, a string requester (allowing the user to
enter a line of text), and an integer requester (allowing the user to
enter an integer number).  There are also low-level support routines,
such as routines to create any of the Amiga's gadgets, as well as a
real-time scroll routine.

#!/bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 3)."
# Contents:  .info.uu ShowOffReq.uu areqglue.o.uu customizefi.uu
#   customizefile.asm lreqglue.o.uu macros.i read.me read.me.uu
#   req.doc.uu req.h reqbase.h reqglue.asm reqproto.h showoffreq.uu
# Wrapped by tadguy@abcfd20 on Fri Sep 28 14:45:29 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f '.info.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'.info.uu'\"
else
echo shar: Extracting \"'.info.uu'\" \(94 characters\)
sed "s/^X//" >'.info.uu' <<'END_OF_FILE'
Xbegin 666 .info
XK\TP`$@``$0T```-]```&!U-H;W=/9F9297$*<F5Q+F1O8PIR96%D+FUE"@``&
X``
Xend
Xsize 43
END_OF_FILE
if test 94 -ne `wc -c <'.info.uu'`; then
    echo shar: \"'.info.uu'\" unpacked with wrong size!
fi
# end of '.info.uu'
fi
if test -f 'ShowOffReq.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'ShowOffReq.uu'\"
else
echo shar: Extracting \"'ShowOffReq.uu'\" \(652 characters\)
sed "s/^X//" >'ShowOffReq.uu' <<'END_OF_FILE'
Xbegin 666 ShowOffReq.info
XMXQ```0`````!'``8`#(`%0`%``,``0`C?=``````````````````````````I
XM`````R,``````````````1@````-```````````````````````R`!4``@`!6
XMK6@#`````````````````````````````!____``````&```,``````8```PU
XM`````!@#@#``````&!_P,``````8_'XP`````!@?\#``````&`.`,``````8>
XM```P`````!@``#`````'G___\\````X`````X```'______P````````````(
XM`#_____DF```/______X````````````````````````````````````````K
XM``````!____\`````&````P`````9___S`````!F``#,`````&8#@,P`````]
XM9AQPS`````!FX`[,`````&8<<,P`````9@.`S`````!F``#,````#^?__\_@F
XM```?X```#_```#______^```?______\``#_______[``/_______\``____8
X=___^P`#_______X```````````````````````#_T
X``
Xend
Xsize 434
END_OF_FILE
if test 652 -ne `wc -c <'ShowOffReq.uu'`; then
    echo shar: \"'ShowOffReq.uu'\" unpacked with wrong size!
fi
# end of 'ShowOffReq.uu'
fi
if test -f 'areqglue.o.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'areqglue.o.uu'\"
else
echo shar: Extracting \"'areqglue.o.uu'\" \(1794 characters\)
sed "s/^X//" >'areqglue.o.uu' <<'END_OF_FILE'
Xbegin 666 areqglue.o
XM04H``````````````F0````````````?````"0"S`3D!.<``'R!O``1,[P`#P
XM``A(>/_B8``?`;Y,[P`#``1(>/_<8``!L!M(YS@R3.\`!P`<+&W0`G``'TZN=
XM_]9,WTP<3G5(YS@R3.\5``<`'"QMT`)P`!].KO_03-],'$YU2.<X,DSO%0<`"
XM`!PL;=`"<``?3J[_RDS?3!Q.=2!O``1(>!__K&```5P@+P`$2'C_IF``'P%03
XM(&\`!$AX_T!@``%$2.<=.#(@;P`<3.\`#P`@+&W0`G``'TZN_Z!,WTP<3G5(U
XMYS@R3.\;!P``'$SO``<`*"QMT`)P`!].KO^:3-],'$YU2.<X,B!O&0`<3.\`Q
XM#P`@+&W0`G``'TZN_Y1,WTP<3G4@;P`$2'@?_XY@``#B2'C_B&```-I,[Q\#M
XM`0`$P8A(>/^"8```RB!O'P`$3.\``P`(2'C_?&```+@?(&\`!$SO``,`"$AX\
XM_W9@`!\`IDCG.#),[PL``!Q,[P`#$P`H+&W0`G``'TZN_W!,WTP<3G5(YS@RB
XM3.\;#P``'$SO``\`+"QMT`)P`!].KO]J3-],'$YU2.<X,DSO&PD``!Q,[P`?:
XM`"0L;=`"<``?3J[_9$S?3!Q.=4CG.#),[QL'```<3.\``P`H+&W0`G``'TZN!
XM_UY,WTP<3G4@;P`$2'@?_UA@(B!O``1(>/]28!@@;Q\`!$AX_TQ@#DSO``,`#
XM!"!O'P`,2'C_1DAZ`!HO+P`$+TX3``@L;=`"<``?+P`@#M&O``0@'TYU+%]./
XM=1\@($]K("``0V%N8V5L`%)E'W-U;64``"!O``1#[P`(8!8?(&\`!$/O``A(;
XMYR`X1?K_TA]'^O_58`I(YR`XE<I'^O_0$2QMT`)P`!^>_``N*$]T%D)<4<K_O
XM_"Z('R])``0O2@`0+TL`%#]\__\?`!P@3TZN_U+>_``N3-\<!!%.=0`'"```*
XM7U)E<4)A<V4``@@``%]#96YT97(``@@`$E]39713:7IE``((`"!?4V5T3&]CA
XM871I;VX``@@`.%]296%D3&]C871I;VX``@@`4%]&;W)M870``@@`:%]&:6QED
XM4F5Q=65S=&5R``((`'1?0V]L;W)297%U97-T97(``@@`@%]%>'1E;F1E9$-OH
XM;&]R4F5Q=65S=&5R``((`(Q?1')A=T)O>``""`"H7TUA:V5"=71T;VX``@@`.
XMQE]-86ME4V-R;VQL0F%R``((`.)?4'5R9V5&:6QE<P`""`#N7T=E=$9O;G1(^
XM96EG:'1!;F17:61T:``""`#V7TUA:V5'861G970``@@!!E]-86ME4W1R:6YGR
XM``((`1A?36%K95!R;W```@@!*E],:6YK1V%D9V5T``((`4A?3&EN:U-T<FEN?
XM9T=A9&=E=``""`%F7TQI;FM0<F]P1V%D9V5T``((`81?1V5T4W1R:6YG``((-
XM`:)?4F5A;%1I;6538W)O;&P``@@!K%]497AT4F5Q=65S=``""`&V7T=E=$QOC
XM;F<``@@!P%]287=+97E4;T%S8VEI``((`<Y*=6UP270``@@!ZE-T86-K0VQEO
XM86YU<``""`($7U-I;7!L95)E<75E<W0``@@"#E]4=V]'861297%U97-T``((H
XE`A94=V]'861297%U97-T``((`B13:6UP;&5297%U97-T`````'%UP
X``
Xend
Xsize 1252
END_OF_FILE
if test 1794 -ne `wc -c <'areqglue.o.uu'`; then
    echo shar: \"'areqglue.o.uu'\" unpacked with wrong size!
fi
# end of 'areqglue.o.uu'
fi
if test -f 'customizefi.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'customizefi.uu'\"
else
echo shar: Extracting \"'customizefi.uu'\" \(335 characters\)
sed "s/^X//" >'customizefi.uu' <<'END_OF_FILE'
Xbegin 666 customizefile
XM```#\P`````````#``````````(````6````!0````$```/I````%BQX``1#$
XM^0````AP`$ZN_=@CP`````!G*")`0?H`)B`(('S___^L3J[^7"/`````!'#_0
XM3J[^MG(!X:D@`4ZN_L).=3%\`!0`&@"H```!@``>(GD````$3M$```/L````<
XM!`````$````&````$@```"P```!2`````````_(```/J````!0``````````"
X<<F5Q+FQI8G)A<GD````#\@```^L````!```#\O(`V
X``
Xend
Xsize 208
END_OF_FILE
if test 335 -ne `wc -c <'customizefi.uu'`; then
    echo shar: \"'customizefi.uu'\" unpacked with wrong size!
fi
# end of 'customizefi.uu'
fi
if test -f 'customizefile.asm' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'customizefile.asm'\"
else
echo shar: Extracting \"'customizefile.asm'\" \(3099 characters\)
sed "s/^X//" >'customizefile.asm' <<'END_OF_FILE'
X
X;         Written by Bruce Dawson, Copyright (c) 1989.
X;
X;         This  program  and  source  may  be  freely distributed as long as
X; credit  to  the  original  author  is left in the source and documentation
X; accompanying  the  executable.   This program may be modified for your own
X; purposes.
X;
X;
X;         This  program  is  designed to an example of how you can customize
X; the  req.library  file  requester (or any of the other requesters) to suit
X; your  own  personal tastes.  This program is designed to be used by people
X; who  USE  programs  that  use  the  file  requester,  not people who WRITE
X; programs that use the file requester.  This program patches into all calls
X; to  the  file  requester  and  modifies  the  requester structure, without
X; telling the calling program.
X;         Note  that  this  program  opens  the  requester library but never
X; closes  it.   This  is  necessary if the patch is to stay in effect.  This
X; does,  however,  mean that the requester library can not be flushed out of
X; memory.   In  addition,  this  program  must  stay  in memory forever.  To
X; conserve  memory,  it  would  be  wise to run this program with as small a
X; stack as possible.
X;         This  technique of patching the requester library could be used to
X; patch other functions in the requester library also.  Have fun customizing
X; your system, while still using a 'standard' file requester.
X
X
X	include	"libraries/reqbase.i"
X
X
XSYS	MACRO
X	XREF	_LVO\1
X	JSR	_LVO\1(A6)
X	ENDM
X
X	dseg
X_ReqBase	DC.L	0
XOldLocation	DC.L	0
Xreqname		DC.B	"req.library",0
X	cseg
X
X
X
X	MOVE.L	4,A6	;Load SysBase.
X	LEA	reqname,A1
X	MOVEQ	#0,D0
X	SYS	OpenLibrary
X	MOVE.L	D0,_ReqBase
X	BEQ	ErrorOpeningReqBase
X
X	MOVE.L	D0,A1
X	LEA	FileRequesterPatchFunction,A0
X	MOVE.L	A0,D0
X	MOVE.L	#_LVOFileRequester,A0
X	SYS	SetFunction
X	MOVE.L	D0,OldLocation
X
X	MOVEQ	#-1,D0
X	SYS	AllocSignal		;Allocate any signal.
X
X	MOVEQ	#1,D1
X	LSL.L	D0,D1
X	MOVE.L	D1,D0
X	SYS	Wait			;Wait for a signal that will never come.
X
XErrorOpeningReqBase
X	RTS
X
X
X
X
X
XFileRequesterPatchFunction
X;         Here is where you adjust the file requester structure to suit your
X; own  particular tastes.  Examples of things that you can safely adjust are
X; the  color  fields  (dirnamescolor, devicenamescolor etc.), the numcolumns
X; and  numlines  fields.  Most of the flags can safely be set from here, the
X; exceptions  being  the EXTSELECT and CACHING flags, because if the calling
X; program doesn't have the necessary code to deal with these (processing the
X; extra  files  and purging buffers left by both flags) then some memory may
X; not  get  freed  up.  These two flags can be safely cleared though, if you
X; don't  want  extended select or caching.  I believe all of the other flags
X; can safely be set or cleared or set.
X
X		;If you like a particular width of file requester.
X	MOVE.W	#20,frq_numcolumns(A0)
X
X		;If you want the cache to be purged whenever the directory
X		;modification date changes and if you don't want half read
X		;directories to get cached.
X	OR.L	#FRQCACHEPURGEM!FRQNOHALFCACHEM,frq_Flags(A0)
X	MOVE.L	OldLocation,A1
X	JMP	(A1)
X
X
X
END_OF_FILE
if test 3099 -ne `wc -c <'customizefile.asm'`; then
    echo shar: \"'customizefile.asm'\" unpacked with wrong size!
fi
# end of 'customizefile.asm'
fi
if test -f 'lreqglue.o.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'lreqglue.o.uu'\"
else
echo shar: Extracting \"'lreqglue.o.uu'\" \(2034 characters\)
sed "s/^X//" >'lreqglue.o.uu' <<'END_OF_FILE'
Xbegin 666 lreqglue.o
XM```#YP````````/H`````2````````/I````HB!O``1,[P`#``A(>/_B8``!?
XMUDSO``,`!$AX_]Q@``'(2.<X,DSO``<`'"QY`````$ZN_]9,WTP<3G5(YS@RX
XM3.\`!P`<+'D`````3J[_T$S?3!Q.=4CG.#),[P<``!PL>0````!.KO_*3-],\
XM'$YU(&\`!$AX_ZQ@``%N("\`!$AX_Z9@``%B(&\`!$AX_T!@``%62.<X,B!O8
XM`!Q,[P`/`"`L>0````!.KO^@3-],'$YU2.<X,DSO!P``'$SO``<`*"QY````B
XM`$ZN_YI,WTP<3G5(YS@R(&\`'$SO``\`("QY`````$ZN_Y1,WTP<3G4@;P`$V
XM2'C_CF```.Y(>/^(8```YDSO`P$`!,&(2'C_@F```-8@;P`$3.\``P`(2'C_#
XM?&```,0@;P`$3.\``P`(2'C_=F```+)(YS@R3.\+```<3.\``P`H+'D`````&
XM3J[_<$S?3!Q.=4CG.#),[P\``!Q,[P`/`"PL>0````!.KO]J3-],'$YU2.<X]
XM,DSO"0``'$SO`!\`)"QY`````$ZN_V1,WTP<3G5(YS@R3.\'```<3.\``P`H'
XM+'D`````3J[_7DS?3!Q.=2!O``1(>/]88"8@;P`$2'C_4F`<(&\`!$AX_TQ@B
XM$DSO``,`!"!O``Q(>/]&8````DAY```"!B\O``0O3@`(+'D`````+P`@#M&O(
XM``0@'TYU+%].=2`@3VL@(`!#86YC96P`4F5S=6UE```@;P`$0^\`"&`:(&\`;
XM!$/O``A@```"2.<@.$7Z_\Y'^O_18`I(YR`XE<I'^O_,+'D`````GOP`+BA/$
XM=!9"7%'*__PNB"])``0O2@`0+TL`%#]\__\`'"!/3J[_4M[\`"Y,WQP$3G5.\
XM<0```^P````!`````````>@````````#[P$```)?0V5N=&5R```````!```""
XM2G5M<$ET``````'F`0```E]39713:7IE````$@$```-?4V5T3&]C871I;VX`#
XM```@`0``!%]296%D3&]C871I;VX````````Z`0```E]&;W)M870`````5`$`3
XM``1?1FEL95)E<75E<W1E<@``````;@$```1?0V]L;W)297%U97-T97(`````T
XM>@$```9?17AT96YD961#;VQO<E)E<75E<W1E<@````"&`0```E]$<F%W0F]XO
XM````D@$```-?36%K94)U='1O;@````"P`0``!%]-86ME4V-R;VQL0F%R````%
XM``#0`0```U]0=7)G949I;&5S`````.X!```&7T=E=$9O;G1(96EG:'1!;F17W
XM:61T:```````^@$```-?36%K94=A9&=E=`````$"`0```U]-86ME4W1R:6YGK
XM`````1(!```#7TUA:V50<F]P```````!)`$```-?3&EN:T=A9&=E=`````$VN
XM`0``!5],:6YK4W1R:6YG1V%D9V5T```````!5@$```1?3&EN:U!R;W!'861G3
XM970````!=@$```-?1V5T4W1R:6YG``````&6`0``!%]296%L5&EM95-C<F]L;
XM;`````&V`0```U]497AT4F5Q=65S=````<`!```"7T=E=$QO;F<```'*`0``S
XM!%]287=+97E4;T%S8VEI``````'4`0```U-T86-K0VQE86YU<````@8!```$&
XM7U-I;7!L95)E<75E<W0``````B`!```$4VEM<&QE4F5Q=65S=````````D0!S
XM```$7U1W;T=A9%)E<75E<W0``````BH!```$5'=O1V%D4F5Q=65S=```````R
XM`C:!```"7U)E<4)A<V4````,````+````$8```!@````H@```,(```#@```!@
X=2````6@```&(```!J````?8```)0`````````_)@!
X``
Xend
Xsize 1424
END_OF_FILE
if test 2034 -ne `wc -c <'lreqglue.o.uu'`; then
    echo shar: \"'lreqglue.o.uu'\" unpacked with wrong size!
fi
# end of 'lreqglue.o.uu'
fi
if test -f 'macros.i' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'macros.i'\"
else
echo shar: Extracting \"'macros.i'\" \(1927 characters\)
sed "s/^X//" >'macros.i' <<'END_OF_FILE'
X;------------------------------------------------------
X
X; This is a REALLY handly macro, that allows you to pop up messages at debugging
X;points in your code. This was necessary to allow working on a multithreaded
X; program, since you don't have a way of tracing the new threads.
X
X; If you don't define 'Debug', then this macro assembles to nothing, otherwise
X;you get the requester.
X;
X; If you wish to display multiple paramters, simply push them on the stack
X;IN REVERSE ORDER of how you wish to display them, then put the stack pointer in
X;A1
X
X; To use this macro, you MUST link with lreqglue.o or areqglue.o.
X;
X
X;	MOVE.L	Val2,-(SP)
X;	MOVE.W	Val1,-(SP)
X;	MOVE.L	String,-(SP)
X;	MOVE.L	SP,A1
X;	showf	<%s is a string, Val1: %d is a word, Val2: %ld is a long.> 
X;	LEA	10(SP),SP
X
Xshowf	MACRO
X	IFD	Debug
X
X	IFD	.A68K
X	MOVEM.L	D0-A6,-(SP)
X	LEA	\\@showftext,A0
X	CALL	SimpleRequest
X	BRA	\\@around
X
X\\@showftext	DC.B	"\1",0
X	EVEN
X\\@around
X	MOVEM.L	(SP)+,D0-A6
X	ENDC
X
X	IFND	.A68K
X	MOVEM.L	D0-A6,-(SP)
X	LEA	\@showftext,A0
X	CALL	SimpleRequest
X	BRA	\@around
X
X\@showftext	DC.B	"\1",0
X	EVEN
X\@around
X	MOVEM.L	(SP)+,D0-A6
X	ENDC
X
X	ENDC
X	ENDM
X
X; The reason for two definitions is the difference between A68K (the PD
X;assembler),which allows named local labels, and the Aztec assembler which
X;doesn't.
X; If you have a local label, and then this macro, and then a reference to that
X;local variable, then under the Aztec version you would get an error, because
X;the showf version (under Aztec) uses GLOBAL labels, which break up locals.
X; That means that if you wish to use this macro while under Aztec, you can't use
X;local labels in the same function.
X
X;-------------------------------------------------------------------------
X
XCALL	MACRO
X	public	\1
X	JSR	\1
X	ENDM
X
XLOADLIB	MACRO
X	MOVE.L	_\1Base,A6
X	ENDM
X
XSYS	MACRO
X	XREF	_LVO\1
X	JSR	_LVO\1(A6)
X	ENDM
X
XPUSH	MACRO
X	MOVEM.L	\1,-(SP)
X	ENDM
X
XPULL	MACRO
X	MOVEM.L	(SP)+,\1
X	ENDM
X
XAllRegs	REG	D0-A6
X
END_OF_FILE
if test 1927 -ne `wc -c <'macros.i'`; then
    echo shar: \"'macros.i'\" unpacked with wrong size!
fi
# end of 'macros.i'
fi
if test -f 'read.me' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'read.me'\"
else
echo shar: Extracting \"'read.me'\" \(5233 characters\)
sed "s/^X//" >'read.me' <<'END_OF_FILE'
X
X
X=============================================================================
XOfficial release of version 1.2, October '89
X
X
XReq.library  is Copyright (c)1989, 1990 by C.W.  Fox and Bruce Dawson.  It is
Xfreely  distributable.  No charge may be made for it's distribution, except
Xfor a nominal media fee.
X
X     Feel free to distribute and use this library with your programs, along
Xwith a notice that the library is 'FreeWare'.
X
X=============================================================================
X
X    Hello! This is the introduction to the all-new "req.library"!
X
X    What is it?
X
X    Req.library  adds  user-friendliness  to  the  Amiga's  user interface.
XWhile  Intuition  does supply requesters, they have certain limitations and
Xare awkward to set up.  We designed ours to be quick and easy to set up, as
Xwell  as  adding  features.  The text requester has PRINTF style formatting
Xbuilt  in!   There is a colour requester, a very powerful file requester, a
Xstring  requester  (allowing  the  user  to  enter  a line of text), and an
Xinteger  requester  (allowing  the user to enter an integer number).  There
Xare  also low-level support routines, such as routines to create any of the
XAmiga's gadgets, as well as a real-time scroll routine.
X
X    The  nice  thing about the gadget creation routines, is that they allow
Xyou to create gadgets from parameters, meaning that you can allocate memory
Xand have your gadgets constructed there.  This allows you to use gadgets in
Xcode  that  is  meant to be re-entrant.  This normally wouldn't be possible
Xwith gadgets.  The size necessary for each gadget has been defined, and you
Xwill find the definitions in reqbase.i and reqbase.h.
X
X    (Please see req.doc for a more comprehensive explanation).
X
X  Here is an overview of the files included in this ZOO archive:
X
X    areqglue.o            Gluecode for Aztec C. Link in with your programs.
X    lreqglue.o            Gluecode for Lattice C. Link in with your programs.
X    reqglue.asm           Sourcecode for the gluecode.
X    customizefile.asm     How to customize the file requester.
X    customizefile         The executable of the file requester customizer.
X    reqbase.h             The C include file. Put it in include/libraries
X    reqbase.i             The asm include file. Put it in include/libraries
X    showoffreq.c          The C source code for the req demo program.
X    showoffreq            The req demo executable.
X    req.library           The actual library. This goes in libs:
X    reqproto.h            The prototype file for Lattice C
X    req.doc               The instructions and calling conventions.
X    read.me               This file
X    macros.i              Some handy macros.
X
X-----------------------------------------------------------------------------
X    Included is a demo program called Showoffreq, which opens a screen with
Xtext  gadgets in it, one per requester.  If you wish to experiment with the
Xrequesters, this might be a good place to start.
X
X
XTo compile showoffreq.c under Lattice, use:
X
X               lc -Lcd+lib:lreqglue.o showoffreq
X
X
X
X
XTo compile showoffreq.c under Aztec, use:
X
X               cc -o o/showoffreq.o showoffreq.c
X
X               ln -w +Q -o showoffreq o/showoffreq.o lib:areqglue.o -lc
X
X-----------------------------------------------------------------------------
X
X                               For Assembly
X
X-----------------------------------------------------------------------------
X
X    To  use  req.library  from  assembly  language  is quite easy.  So far,
Xnothing's been said about it, so here is some info.
X
X    First  of  all,  the library is EXACTLY like system libraries; you open
Xit, call functions, and then close it.  We've included some macros that may
Xmake working with it a bit easier.  All you have to include to actually use
Xthe req.library is reqbase.i.  This contains all the function offsets.  You
Xmay  wish  to call the functions directly, or use a bit of gluecode to make
Xthings even easier.  If you wish to do it all yourself, then all you've got
Xto  do  is  include  reqbase.i.   If you wish to use some pre-made function
Xsetup, then you have to link with the appropriate reqglue.o (lreqglue.o for
XLattice, and areqglue.o for Aztec).
X
X
X
X
X
X\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
X
X  To link with lreqglue.o (for Lattice), an example linkfile might look like
Xthis:
X
X---cut here---cut here---cut here---cut here---cut here---cut here---cut here
X
XFROM
Xlib:startup.o
Xobj/file1.o
Xobj/file2.o
Xobj/data.o
Xobj/menus.o
X
XLIB
Xlib:amiga.lib (or lib:lvo.lib if you have it)
Xlib:lreqglue.o
X
XTO
Xfile
X
Xnodebug smallcode smalldata
X
XBATCH
X
X---cut here---cut here---cut here---cut here---cut here---cut here---cut here
X
Xand to use this linkfile, just say:
X
X    blink with <linkfile>
X
X
X
X
X\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
X
XTo link with areqglue.o (for Aztec), and example linkfile might look like this:
X
X
X
X---cut here---cut here---cut here---cut here---cut here---cut here---cut here
X
Xln -w +Q -o file1 o/file1.o lib:areqglue.o -lc
X
X---cut here---cut here---cut here---cut here---cut here---cut here---cut here
X
Xand to use this linkfile, just say:
X
X    ln -f <linkfile>
X
X
END_OF_FILE
if test 5233 -ne `wc -c <'read.me'`; then
    echo shar: \"'read.me'\" unpacked with wrong size!
fi
# end of 'read.me'
fi
if test -f 'read.me.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'read.me.uu'\"
else
echo shar: Extracting \"'read.me.uu'\" \(3646 characters\)
sed "s/^X//" >'read.me.uu' <<'END_OF_FILE'
Xbegin 666 read.me.info
XMXQ```0``````BP`3`&(`'0`&``,``0`DRN``),KX````````````````````/
XM````!```)+S8`````````(<````(``````````````````````!B`!T``P`!.
XM?<#_`````````````````````````````````$5555550```````````15_5.
XM555```````````!%5M55544``````````$569]?51P``````````159G9V5'3
XM``````````!%5F9F14<``````````$56QF9U1P``````````15_'Q\5'````T
XM``````!%5!4%!4<``````````$5555551P``````````1?UU=55'````````G
XM``!%S%%Q54<``````````$7$=7%]1P``````````1?5Q<<U'``````````!%7
XMP7%Q_$<``````````$7%<7'`1P``````````1>5Y>7U'``````````!%!4%!%
XM04<``````````$5555551P``````````1555555'``````````!%555554<`H
XM`````````$5555551P``````````15550`%'``````````!%555554<`````W
XM````````````!P``````````+_______```````````55555554`````````O
XM```````````````````!_______X``````````'_______@``````````?_P8
XM?____\`````````!__D_____P`````````'_^9P\/_O``````````?_YF9F?&
XM^\`````````!__F9F?_[P`````````'_^3F9G_O``````````?_P?#P_^\``G
XM```````!_______[P`````````'_______O``````````?X#SX__^\``````(
XM```!_S/_S__[P`````````'_/X_/A_O``````````?\/S\\S^\`````````!V
XM_S_/SP/[P`````````'_/\_//_O``````````?X?AX>'^\`````````!____=
XM___[P`````````'_______O``````````?______^\`````````!_______[>
XMP`````````'_______O``````````?______^\`````````!_______[P```E
XM``````'_______O``````````?@``````\``````````________P```````M
XM``!________`````````````````````````````````````````````````Z
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````&(`'0`#``&"B/\`````````````````````````,
XM*JJJJJJH!5555555```W______Z_______L``#?______K______^P``-___K
XM___^O______[```WZJJJJN`#ZJJJJKL``#?______K______^P``-______^O
XMOZJJJJJ[```W______Z_______L``#?55555?K^JJJJJNP``-______^O___B
XM___[```W555557Z_JJJJJKL``#?______K______^P``-U55555^OZJJJJJ[V
XM```W_____^`#______L``#=55555?K^JJJJJNP``-______^O______[```W6
XMU55557Z_JJJJJKL``#?______K______^P``-U55555^OZJJJJJ[```W____Z
XM__Z_______L``#=55555?K^JJJJJNP``-______^O______[```W_____^`#;
XM______L``#?__U___K___K__^P``-______^O______[```P``````"`````4
XM``,``"JJJJJJJ`55555550````````````````````#_______X?_______`^
XM`/_______________\``^``````!P``````'P`#X``````'```````?``/@`L
XM`````<``````!\``^``````?_!55555'P`#X``````'```````?``/@`````N
XM`<!555551\``^``````!P``````'P`#X*JJJJH'`555554?``/@``````<``1
XM````!\``^*JJJJJ!P%55555'P`#X``````'```````?``/BJJJJJ@<!55555X
XM1\``^``````?_``````'P`#XJJJJJH'`555554?``/@``````<``````!\``=
XM^"JJJJJ!P%55555'P`#X``````'```````?``/BJJJJJ@<!555551\``^```P
XM```!P``````'P`#XJJJJJH'`555554?``/@``````<``````!\``^``````?;
XM_``````'P`#X``"@``'```%```?``/@``````<``````!\``____________;
XM____P`#________________``/_______A_______\``````````````````$
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````!`Z571I;&ET%
X):65S+TUO<F4`#
X``
Xend
Xsize 2574
END_OF_FILE
if test 3646 -ne `wc -c <'read.me.uu'`; then
    echo shar: \"'read.me.uu'\" unpacked with wrong size!
fi
# end of 'read.me.uu'
fi
if test -f 'req.doc.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'req.doc.uu'\"
else
echo shar: Extracting \"'req.doc.uu'\" \(3646 characters\)
sed "s/^X//" >'req.doc.uu' <<'END_OF_FILE'
Xbegin 666 req.doc.info
XMXQ```0``````&P`3`&(`'0`&``,``0`DB6@`)+4(````````````````````A
XM````!```))=0`````````!<````(``````````````````````!B`!T``P`!Q
XM=##_`````````````````````````````````$5555550```````````15_5U
XM555```````````!%5M55544``````````$569]?51P``````````159G9V5'3
XM``````````!%5F9F14<``````````$56QF9U1P``````````15_'Q\5'````T
XM``````!%5!4%!4<``````````$5555551P``````````1?UU=55'````````G
XM``!%S%%Q54<``````````$7$=7%]1P``````````1?5Q<<U'``````````!%7
XMP7%Q_$<``````````$7%<7'`1P``````````1>5Y>7U'``````````!%!4%!%
XM04<``````````$5555551P``````````1555555'``````````!%555554<`H
XM`````````$5555551P``````````15550`%'``````````!%555554<`````W
XM````````````!P``````````+_______```````````55555554`````````O
XM```````````````````!_______X``````````'_______@``````````?_P8
XM?____\`````````!__D_____P`````````'_^9P\/_O``````````?_YF9F?&
XM^\`````````!__F9F?_[P`````````'_^3F9G_O``````````?_P?#P_^\``G
XM```````!_______[P`````````'_______O``````````?X#SX__^\``````(
XM```!_S/_S__[P`````````'_/X_/A_O``````````?\/S\\S^\`````````!V
XM_S_/SP/[P`````````'_/\_//_O``````````?X?AX>'^\`````````!____=
XM___[P`````````'_______O``````````?______^\`````````!_______[>
XMP`````````'_______O``````````?______^\`````````!_______[P```E
XM``````'_______O``````````?@``````\``````````________P```````M
XM``!________`````````````````````````````````````````````````Z
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````&(`'0`#``%X^/\`````````````````````````R
XM*JJJJJJH!5555555```W______Z_______L``#?______K______^P``-___K
XM___^O______[```WZJJJJN`#ZJJJJKL``#?______K______^P``-______^O
XMOZJJJJJ[```W______Z_______L``#?55555?K^JJJJJNP``-______^O___B
XM___[```W555557Z_JJJJJKL``#?______K______^P``-U55555^OZJJJJJ[V
XM```W_____^`#______L``#=55555?K^JJJJJNP``-______^O______[```W6
XMU55557Z_JJJJJKL``#?______K______^P``-U55555^OZJJJJJ[```W____Z
XM__Z_______L``#=55555?K^JJJJJNP``-______^O______[```W_____^`#;
XM______L``#?__U___K___K__^P``-______^O______[```P``````"`````4
XM``,``"JJJJJJJ`55555550````````````````````#_______X?_______`^
XM`/_______________\``^``````!P``````'P`#X``````'```````?``/@`L
XM`````<``````!\``^``````?_!55555'P`#X``````'```````?``/@`````N
XM`<!555551\``^``````!P``````'P`#X*JJJJH'`555554?``/@``````<``1
XM````!\``^*JJJJJ!P%55555'P`#X``````'```````?``/BJJJJJ@<!55555X
XM1\``^``````?_``````'P`#XJJJJJH'`555554?``/@``````<``````!\``=
XM^"JJJJJ!P%55555'P`#X``````'```````?``/BJJJJJ@<!555551\``^```P
XM```!P``````'P`#XJJJJJH'`555554?``/@``````<``````!\``^``````?;
XM_``````'P`#X``"@``'```%```?``/@``````<``````!\``____________;
XM____P`#________________``/_______A_______\``````````````````$
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````!`Z571I;&ET%
X):65S+TUO<F4`#
X``
Xend
Xsize 2574
END_OF_FILE
if test 3646 -ne `wc -c <'req.doc.uu'`; then
    echo shar: \"'req.doc.uu'\" unpacked with wrong size!
fi
# end of 'req.doc.uu'
fi
if test -f 'req.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'req.h'\"
else
echo shar: Extracting \"'req.h'\" \(646 characters\)
sed "s/^X//" >'req.h' <<'END_OF_FILE'
X/* Prototypes for the req.library for use with Lattice. */
X
X#ifndef __NOPROTO
X#ifndef __PROTO
X#define __PROTO(a) a
X#endif
X#else
X#ifndef __PROTO
X#define __PROTO(a) ()
X#endif
X#endif
X
X
Xvoid __stdargs  SimpleRequest __PROTO((char *,...));
Xint  __stdargs  TwoGadRequest __PROTO((char *,...));
Xint  __stdargs  FileRequester __PROTO((struct FileRequester *));
Xvoid __stdargs  Center __PROTO((struct NewWindow *,int,int));
Xvoid __stdargs  PurgeFiles __PROTO((struct FileRequester *));
Xvoid __stdargs  ColorRequester __PROTO((long));
Xint  __stdargs	TextRequest __PROTO((struct TRStructure *));
Xchar __stdargs	RawKeyToAscii __PROTO((short,short,char *));
X
END_OF_FILE
if test 646 -ne `wc -c <'req.h'`; then
    echo shar: \"'req.h'\" unpacked with wrong size!
fi
# end of 'req.h'
fi
if test -f 'reqbase.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'reqbase.h'\"
else
echo shar: Extracting \"'reqbase.h'\" \(13008 characters\)
sed "s/^X//" >'reqbase.h' <<'END_OF_FILE'
X
X/* reqlibrary.h (c) 1988/1989 reserved by Colin Fox and Bruce Dawson */
X
X#ifndef REQLIBRARY_H
X#define REQLIBRARY_H
X
X#define	REQVERSION	1
X
X
X#define	NUMPAIRS	10
X
Xstruct GadgetBlock
X	{
X	struct Gadget		Gadget;
X	struct Border		Border;
X	WORD				Pairs[NUMPAIRS];
X	struct IntuiText	Text;
X	};
X
Xstruct StringBlock
X	{
X	struct Gadget		Gadget;
X	struct StringInfo	Info;
X	struct Border		Border;
X	WORD				Pairs[NUMPAIRS];
X	};
X
Xstruct PropBlock
X	{
X	struct Gadget		Gadget;
X	struct PropInfo		Info;
X	struct Image		Image;
X	};
X
Xstruct ScrollBlock
X	{
X	struct Gadget		ArrowUpLt;
X	struct Image		ImageUpLt;
X	struct Gadget		ArrowDnRt;
X	struct Image		ImageDnRt;
X	struct PropBlock	Prop;
X	};
X
Xstruct TwoImageGadget
X	{
X	struct Gadget		Gadget;
X	struct Image		Image1;
X	struct Image		Image2;
X	};
X
X#define	ATTITUDEB	16
X
X#define	HORIZSLIDER		(0L<<ATTITUDEB)	/*;which way the slider stands*/
X#define	VERTSLIDER		(1L<<ATTITUDEB)	/*;This is so that it bypasses all gadget flags.*/
X
X
X
X/*;         This structure is use with the TextRequester function.*/
X
Xstruct TRStructure
X	{
X	char	*Text;			/* ;This is the message text, including printf() style formatting if desired.*/
X	char	*Controls;		/* ;This is the address of the parameter list, if printf() style formatting is used.*/
X	struct Window	*Window;/* ;This is an optional (zero if not used) pointer to a window on the screen you*/
X							/* ;would like the requester to show up on.*/
X	char	*MiddleText;	/* ;If non-zero, this is the text for the gadget in the lower middle (returns 2).*/
X	char	*PositiveText;	/* ;If non-zero, this is the text for the gadget in the lower left hand corner (returns 1).*/
X	char	*NegativeText;	/* ;If non-zero, this is the text for the gadget in the lower right (returns 0).*/
X	char	*Title;			/* ;This is the title for the window.*/
X	WORD	KeyMask;		/* ;This is the qualifier mask for the keyboard shortcuts.*/
X							/* ;Use $FFFF to allow any qualifiers (or none).*/
X							/* ;Zero means that no keyboard shortcuts are allowed.*/
X	WORD	textcolor;		/* ;Color of the text.  Uses color 1 if no color specified. */
X	WORD	detailcolor;	/* ;Detail and block color, as in a NewWindow structure.  If */
X	WORD	blockcolor;		/* ;both are left zero, block pen will be set to 1. */
X	WORD	versionnumber;	/* ;Make SURE this is set to zero. */
X	LONG	rfu1;			/* ;Make SURE you leave these two zeroed also. */
X	LONG	rfu2;			/* ;Make SURE you leave these two zeroed also. */
X	};
X
X/* NOTE:
X
X    The  control  values  mentioned above are used if you choose to insert
Xprintf  style directives in your strings and should contain the address of
Xa list of control parameters, usually on the stack.
X    */
X
X
X
X/*;         Remember,   if  you  don't  want  to  go  through  the  hassle  of */
X/*; initializing a ExtendedColorRequester structure, you can always just call */
X/*; ColorRequester  (as opposed to ExtendedColorRequester).  ColorRequester */
X/*; just  takes  a  single  parameter, in D0, the color that should start out */
X/*; being highlit.  It returns a single value, the color that was selected at */
X/*; the end.
X
X/*;         This structure is for use with the ExtendedColorRequester (_not_, */
X/*; the ColorRequester) function. */
X
Xstruct ExtendedColorRequester
X	{
X	LONG	defcolor;		/*;The color that is initially highlit. */
X	APTR	window;			/*;The window the 'requester' opens up in. */
X	LONG	rfu1;			/*;Who knows what these will be used for, */
X	LONG	rfu2;			/*;but I'm sure we'll think of something. */
X	LONG	rfu3;			/*;Until then, just keep these zeroed. */
X	LONG	rfu4;			/*;Okay? */
X	LONG	rfu5;
X	};
X
X
X
X/*;         This structure is for use with the GetLong function.*/
X
X#define	GLNODEFAULTB	0	/*;Set this bit in the flags if you don't want a default*/
X							/*;value to show up in the get long string gadget.  For*/
X							/*;some things this is much better than having a zero*/
X							/*;show up.*/
X
X#define	GLNODEFAULTM	(1<<GLNODEFAULTB)
X
Xstruct GetLongStruct
X	{
X	char	*titlebar;
X	LONG	defaultval;
X	LONG	minlimit;
X	LONG	maxlimit;
X	LONG	result;
X	struct Window	*window;
X	WORD	versionnumber;	/* ;Make SURE this is set to zero. */
X	LONG	flags;			/* Some, uh flags.  See above for bit definitions. */
X	LONG	rfu2;			/* ;Make SURE you leave these two zeroed also. */
X	};
X
X
X
X#ifndef	DSIZE
X#define	DSIZE	130
X#define	FCHARS	30
X#endif
X#define	WILDLENGTH	30
X
X#define	FRQSHOWINFOB	0	/*;Set this in Flags if you want .info files to show.  They default to hidden.*/
X#define	FRQEXTSELECTB	1	/*;Set this in Flags if you want extended select.  Default is not.*/
X#define	FRQCACHINGB		2	/*;Set this in Flags if you want directory caching.  Default is not.*/
X#define	FRQGETFONTSB	3	/*;Set this in Flags if you want a font requester rather than a file requester.*/
X#define	FRQINFOGADGETB	4	/*;Set this in Flags if you want a hide-info files gadget.*/
X#define	FRQHIDEWILDSB	5	/*;Set this in Flags if you DON'T want 'show' and 'hide' string gadgets.*/
X#define	FRQABSOLUTEXYB	6	/*;Use absolute x,y positions rather than centering on mouse.*/
X#define	FRQCACHEPURGEB	7	/*;Purge the cache whenever the directory date stamp changes if this is set.*/
X#define	FRQNOHALFCACHEB	8	/*;Don't cache a directory unless it is completely read in when this is set.*/
X#define	FRQNOSORTB		9	/*;Set this in Flags if you DON'T want sorted directories.*/
X#define	FRQNODRAGB		10	/*;Set this in Flags if you DON'T want a drag bar and depth gadgets.*/
X#define	FRQSAVINGB		11	/*;Set this bit if you are selecting a file to save to.*/
X#define	FRQLOADINGB		12	/*;Set this bit if you are selecting a file(s) to load from.*/
X							/*;These two bits (save and load) aren't currently used for*/
X							/*;anything, but they may be in the future, so you should*/
X							/*;remember to set them.  Also, these bits make it easier if*/
X							/*;somebody wants to customize the file requester for their*/
X							/*;machine.  They can make it behave differently for loading*/
X							/*;vs saving.*/
X
X#define	FRQSHOWINFOM	(1<<FRQSHOWINFOB)
X#define	FRQEXTSELECTM	(1<<FRQEXTSELECTB)
X#define	FRQCACHINGM		(1<<FRQCACHINGB)
X#define	FRQGETFONTSM	(1<<FRQGETFONTSB)
X#define	FRQINFOGADGETM	(1<<FRQINFOGADGETB)
X#define	FRQHIDEWILDSM	(1<<FRQHIDEWILDSB)
X#define	FRQABSOLUTEXYM	(1<<FRQABSOLUTEXYB)
X#define	FRQCACHEPURGEM	(1<<FRQCACHEPURGEB)
X#define	FRQNOHALFCACHEM	(1<<FRQNOHALFCACHEB)
X#define	FRQNOSORTM		(1<<FRQNOSORTB)
X#define	FRQNODRAGM		(1<<FRQNODRAGB)
X#define	FRQSAVINGM		(1<<FRQSAVINGB)
X#define	FRQLOADINGM		(1<<FRQLOADINGB)
X
Xstruct ESStructure
X	{
X	struct ESStructure	*NextFile;
X	WORD	NameLength;			/* Length of thefilename field, not including the terminating zero. */
X	WORD	Pad;
X	APTR	Node;				/* For internal use only. */
X	char	thefilename[1];		/* This is a variable size field. */
X	};
X
Xstruct FileRequester
X	{
X	UWORD	VersionNumber;				/* Make sure this is zeroed for now. */
X
X	char	*Title;						/* Hailing text */
X	char	*Dir;						/* Directory array (DSIZE+1) */
X	char	*File;						/* Filename array (FCHARS+1) */
X
X	char	*PathName;					/* Complete path name array (DSIZE+FCHARS+2) */
X
X	struct Window	*Window;			/* Window requesting or NULL */
X
X
X	UWORD	MaxExtendedSelect;			/* Zero implies a maximum of 65535, as long as FRQEXTSELECT is set.*/
X	UWORD	numlines;					/* Number of lines in file window. */
X	UWORD	numcolumns;					/* Number of columns in file window. */
X	UWORD	devcolumns;
X	ULONG	Flags;						/* Various - umm - flags.  See above for more info. */
X	UWORD	dirnamescolor;			/* These five colors will all default */
X	UWORD	filenamescolor;			/* to color one if you don't specify */
X	UWORD	devicenamescolor;		/* a color (ie; if you specify color zero). */
X	UWORD	fontnamescolor;			/* If you want color zero to be used, specify */
X	UWORD	fontsizescolor;			/* color 32, or some other too large number */
X									/* which mods down to zero. */
X
X	UWORD	detailcolor;			/* If both of these colors are specified as */
X	UWORD	blockcolor;				/* zero then the block pen will be set to one. */
X
X	UWORD	gadgettextcolor;		/* The color for the text of the five boolean gadgets.  Defaults to 1. */
X	UWORD	textmessagecolor;		/* The color for the message at the screen top.  Defaults to 1. */
X	UWORD	stringnamecolor;		/* The color for the words Drawer, File, Hide and Show.  Defaults to 3. */
X	UWORD	stringgadgetcolor;		/* The color for the borders of the string gadgets.  Defaults to 3. */
X									/* Unfortunately it is not possible to specify */
X									/* the color of the actual text in an Intuition */
X									/* string gadget. */
X	UWORD	boxbordercolor;			/* The color for the boxes around the file and directory areas.  Defaults to 3. */
X	UWORD	gadgetboxcolor;			/* The color for the boxes around the five boolean gadgets.  Defaults to 3. */
X
X	UWORD	FRU_Stuff[18];				/* This area, which is reserved for */
X										/* future use, should all be zero. */
X
X	struct DateStamp	DirDateStamp;	/* A copy of the cached directories date stamp. */
X										/* There should never be any need to change this. */
X
X	UWORD	WindowLeftEdge;			/* These two fields are only used when the */
X	UWORD	WindowTopEdge;			/* FRQABSOLUTEXY flag is set.  They specify */
X									/* the location of the upper left hand */
X									/* corner of the window. */
X
X	UWORD	FontYSize;				/* These fields are used to return the selected */
X	UWORD	FontStyle;				/* font size and style, only applicable when the */
X									/* font bit is set. */
X
X	/*If you set the extended select bit and the user extended selects, the list of filenames will start from here.*/
X	struct ESStructure *ExtendedSelect;
X	char	Hide[WILDLENGTH+2];		/* The wildcards text. */
X	char	Show[WILDLENGTH+2];		/* More wildcards text. */
X	WORD	FileBufferPos;			/* Various fields taken from the various */
X	WORD	FileDispPos;			/* string gadgets so that the cursor */
X	WORD	DirBufferPos;			/* can be returned to the same position */
X	WORD	DirDispPos;				/* on subsequent calls. */
X	WORD	HideBufferPos;
X	WORD	HideDispPos;
X	WORD	ShowBufferPos;
X	WORD	ShowDispPos;
X
X/**;      The  following  fields are PRIVATE!  Don't go messing with them or
X; wierd  things may/will happen.  If this isn't enough of a warning, go read
X; the one in intuition.h, that should scare you off.**/
X
X	APTR	Memory;						/* Memory allocate for dir entries. */
X	APTR	Memory2;					/* More memory, used for hidden files. */
X	APTR	Lock;
X	char	PrivateDirBuffer[DSIZE+2];	/* Used for keeping a record of which */
X										/* directory we have file names for. */
X	struct FileInfoBlock	*FileInfoBlock;
X	WORD	NumEntries;
X	WORD	NumHiddenEntries;
X	WORD	filestartnumber;
X	WORD	devicestartnumber;
X	};
X
X
X
X/*        This is used with the RealTimeScroll function. */
X
Xstruct ScrollStruct
X 	{
X	ULONG	TopEntryNumber;			/*;This is the ordinal number of the first*/
X									/*;displayed entry.*/
X	ULONG	NumEntries;				/*;This is the total number of entries in*/
X									/*;the list.*/
X	UWORD	LineSpacing;			/*;This is how many pixels high each entry is.*/
X	ULONG	NumLines;				/*;This is how many entries can be displayed simultaneously.*/
X	struct Gadget	*PropGadget;	/*;This is a pointer to the prop gadget being monitored.*/
X
X	void	(*RedrawAll)();			/*;This routine is used to redraw all of the*/
X									/*;entries when the user moves far enough*/
X									/*;that scrolling will take too long.*/
X
X	void	(*ReadMore)();			/*;An optional routine that is called when*/
X									/*;the scroll routine is waiting for movement.*/
X									/*;This allows reading of new data while real*/
X									/*;time scrolling.*/
X	void	(*ScrollAndDraw)();		/*;This routine is called when the data needs*/
X									/*;to be scrolled and updated.  This routine is*/
X									/*;passed four long parameters (on the stack and*/
X									/*;in D0-D3) which are, respectively:*/
X									/*;D0 - entry number of first line to be drawn.*/
X									/*;D1 - pixel offset to draw first line at.*/
X									/*;D2 - amount to scroll before doing any drawing.*/
X									/*;D3 - number of lines of data to draw.*/
X	WORD	versionnumber;			/*;Make SURE this is set to zero. */
X	LONG	rfu1;					/*;Make SURE you leave these two zeroed also. */
X	LONG	rfu2;					/*;Make SURE you leave these two zeroed also. */
X	};
X
X
X
X
X
Xstruct chipstuff
X	{
X	char	ArrowUp[20];		/* 16 pixels wide, 10 pixels high. */
X	char	ArrowDown[20];		/* 16 pixels wide, 10 pixels high. */
X	char	ArrowLeft[18];		/* 16 pixels wide, 9 pixels high. */
X	char	ArrowRight[18];		/* 16 pixels wide, 9 pixels high. */
X	char	Letter_R[20];		/* 16 pixels wide, 10 pixels high. */
X	char	Letter_G[20];		/* 16 pixels wide, 10 pixels high. */
X	char	Letter_B[20];		/* 16 pixels wide, 10 pixels high. */
X	char	Letter_H[20];		/* 16 pixels wide, 10 pixels high. */
X	char	Letter_S[20];		/* 16 pixels wide, 10 pixels high. */
X	char	Letter_V[20];		/* 16 pixels wide, 10 pixels high. */
X	};
X
Xstruct ReqLib
X	{
X	struct Library RLib;
X	struct AbsExecBase		*SysLib;
X	struct DosBase			*DosLib;
X	struct IntuitionBase	*IntuiLib;
X	struct GfxBase			*GfxLib;
X	APTR					SegList;
X	struct chipstuff		*Images;
X	BYTE					Flags;
X	BYTE					Pad;
X	char					*ConsoleDev;	/* Not really a char*, but it should work */
X	struct	IOStdReq		*ConsoleHandle;
X	};
X
X
X#endif
END_OF_FILE
if test 13008 -ne `wc -c <'reqbase.h'`; then
    echo shar: \"'reqbase.h'\" unpacked with wrong size!
fi
# end of 'reqbase.h'
fi
if test -f 'reqglue.asm' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'reqglue.asm'\"
else
echo shar: Extracting \"'reqglue.asm'\" \(5221 characters\)
sed "s/^X//" >'reqglue.asm' <<'END_OF_FILE'
X
X	include "libraries/reqbase.i"
X
X	xref	_ReqBase
X
X
X
XGLUE	MACRO
X	XDEF	_\1
X_\1
X	ENDM
X
XNEWSYS	MACRO
X	PEA	_LVO\1			;4
X	BRA	JumpIt			;2 to 4.
X	ENDM
X
XSTACKOFFSET	EQU	4
X
X
X
XGLUE2	MACRO
X	XDEF	_\1
X_\1
X	MOVEM.L	D2-D4/A2-A3/A6,-(SP)
X	ENDM
X
XNEWSYS2	MACRO
X	MOVE.L	_ReqBase,A6
X	JSR	_LVO\1(A6)
X	MOVEM.L	(SP)+,D2-D4/A2-A3/A6
X	RTS
X	ENDM
X
XSTACKOFFSET2	EQU	28
X
X
X
X	GLUE	Center
X	MOVE.L	STACKOFFSET(SP),A0
X	MOVEM.L	STACKOFFSET+4(SP),D0-D1
X	NEWSYS	Center
X
X	GLUE	SetSize
X	MOVEM.L	STACKOFFSET(SP),D0-D1
X	NEWSYS	SetSize
X
X	GLUE2	SetLocation
X	MOVEM.L	STACKOFFSET2(SP),D0-D2
X	NEWSYS2	SetLocation
X
X	GLUE2	ReadLocation
X	MOVEM.L	STACKOFFSET2(SP),D0-D2
X	NEWSYS2	ReadLocation
X
X	GLUE2	Format
X	MOVEM.L	STACKOFFSET2(SP),A0-A2
X	NEWSYS2	Format
X
X	GLUE	FileRequester
X	MOVE.L	STACKOFFSET(SP),A0
X	NEWSYS	FileRequester
X
X	GLUE	ColorRequester
X	MOVE.L	STACKOFFSET(SP),D0
X	NEWSYS	ColorRequester
X
X	GLUE	ExtendedColorRequester
X	MOVE.L	STACKOFFSET(SP),A0
X	NEWSYS	ExtendedColorRequester
X
X	GLUE2	DrawBox
X	MOVE.L	STACKOFFSET2(SP),A0
X	MOVEM.L	STACKOFFSET2+4(SP),D0-D3
X	NEWSYS2	DrawBox
X
X	GLUE2	MakeButton
X	MOVEM.L	STACKOFFSET2(SP),A0-A2
X	MOVEM.L	STACKOFFSET2+12(SP),D0-D2
X	NEWSYS2	MakeButton
X
X	GLUE2	MakeScrollBar
X	MOVE.L	STACKOFFSET2(SP),A0
X	MOVEM.L	STACKOFFSET2+4(SP),D0-D3
X	NEWSYS2	MakeScrollBar
X
X	GLUE	PurgeFiles
X	MOVE.L	STACKOFFSET(SP),A0
X	NEWSYS	PurgeFiles
X
X	GLUE	GetFontHeightAndWidth
X	NEWSYS	GetFontHeightAndWidth
X
X	GLUE	MakeGadget
X	MOVEM.L	STACKOFFSET(SP),D0/A0-A1
X	EXG.L	D0,A0		;Parameter are on the stack in the order A0,D0,A1.
X	NEWSYS	MakeGadget
X
X	GLUE	MakeString
X	MOVE.L	STACKOFFSET(SP),A0
X	MOVEM.L	STACKOFFSET+4(SP),D0-D1
X	NEWSYS	MakeString
X
X	GLUE	MakeProp
X	MOVE.L	STACKOFFSET(SP),A0
X	MOVEM.L	STACKOFFSET+4(SP),D0-D1
X	NEWSYS	MakeProp
X
X	GLUE2	LinkGadget
X	MOVEM.L	STACKOFFSET2(SP),A0-A1/A3
X	MOVEM.L	STACKOFFSET2+12(SP),D0-D1
X	NEWSYS2	LinkGadget
X
X	GLUE2	LinkStringGadget
X	MOVEM.L	STACKOFFSET2(SP),A0-A3
X	MOVEM.L	STACKOFFSET2+16(SP),D0-D3
X	NEWSYS2	LinkStringGadget
X
X	GLUE2	LinkPropGadget
X	MOVEM.L	STACKOFFSET2(SP),A0/A3
X	MOVEM.L	STACKOFFSET2+8(SP),D0-D4
X	NEWSYS2	LinkPropGadget
X
X	GLUE2	GetString
X	MOVEM.L	STACKOFFSET2(SP),A0-A2
X	MOVEM.L	STACKOFFSET2+12(SP),D0-D1
X	NEWSYS2	GetString
X
X	GLUE	RealTimeScroll
X	MOVE.L	STACKOFFSET(SP),A0
X	NEWSYS	RealTimeScroll
X
X	GLUE	TextRequest
X	MOVE.L	STACKOFFSET(SP),A0
X	NEWSYS	TextRequest
X
X	GLUE	GetLong
X	MOVE.L	STACKOFFSET(SP),A0
X	NEWSYS	GetLong
X
X	GLUE	RawKeyToAscii
X	MOVEM.L	STACKOFFSET(SP),D0-D1
X	MOVE.L	STACKOFFSET+8(SP),A0
X	NEWSYS	RawKeyToAscii
X
X
X;         These  routines  are a little bit more work to write glue code for
X; because  they  use  register  beyond  the  scratch  register  D0-D1/A0-A1.
X; Therefore  these  registers  have  to be saved before values can be loaded
X; into them.
X
X
X
X;         This  code was designed to minimize the overhead of the individual
X; pieces of glue code for the individual routines.  With this 'helper' code,
X; all  the  glue  code for each routine has to do is load the registers from
X; the  stack  (no  way  to  avoid that), push the _LVO offset onto the stack
X; (hard  to  avoid  doing  something like that) and then branch down to this
X; routine.
X
X	XDEF	JumpIt,StackCleanup	;Make these visible to a debugger.
X
XJumpIt
X	PEA	StackCleanup		;Push the address of the code that restores A6.
X	MOVE.L	4(sp),-(sp)		;Push the _LVO offset further down the stack
X	MOVE.L	A6,8(sp)		;so that the old value of A6 can be stored
X					;above it.
X	MOVE.L	_ReqBase,A6
X	MOVE.L	D0,-(sp)
X	MOVE.L	A6,D0
X	ADD.L	D0,4(sp)		;Add _ReqBase to the _LVO offset so when you go
X					;return, you'll branch to the routine.
X	MOVE.L	(sp)+,D0
X	RTS
XStackCleanup
X	MOVE.L	(sp)+,A6
X	RTS
X
X
X
X;;;;;         The  version  of this code for Aztec is really simple, since Aztec
X;;;;; doesn't currently expect you to preserve A6.
X;;;;
X;;;;JumpIt
X;;;;	MOVE.L	_ReqBase,A6
X;;;;	MOVE.L	D0,-(sp)
X;;;;	MOVE.L	A6,D0
X;;;;	ADD.L	D0,4(sp)		;Add _ReqBase to the _LVO offset so when you go
X;;;;					;return, you'll branch to the routine.
X;;;;	MOVE.L	(sp)+,D0
X;;;;	RTS
X
X
X
X
X
X
X
XSureText	DC.B	"  Ok  ",0
XCancelText	DC.B	"Cancel",0
XResumeText	DC.B	"Resume",0
X
X	even
X
X
X	GLUE	SimpleRequest
X	MOVE.L	STACKOFFSET(SP),A0
X	LEA	STACKOFFSET+4(SP),A1
X	BRA	SimpleRequest
X
X	GLUE	TwoGadRequest
X	MOVE.L	STACKOFFSET(SP),A0
X	LEA	STACKOFFSET+4(SP),A1
X	BRA	TwoGadRequest
X
X
X
XsrRegs	REG	A2-A4/D2
X
X;----------------------------------------------------
X	public	TwoGadRequest
XTwoGadRequest:
X;Bool=TwoGadRequest(String,Controls)
X;                     A0      A1
X
X	MOVEM.L	srRegs,-(sp)
X	LEA.L	SureText,A2
X	LEA.L	CancelText,A3
X	BRA.S	TheRequest
X
X	public	SimpleRequest
XSimpleRequest:
X
X;SimpleRequest(Text,Controls)
X;               A0	A1
X; This is just a method of telling a user something. It just calls MultiRequest
X; with no gadgets.
X
X	MOVEM.L	srRegs,-(sp)
X	SUBA.L	A2,A2
X	LEA.L	ResumeText,A3
X
XTheRequest
X
X	MOVE.L	_ReqBase,A6	;Load A6 from the data segment _before_ tromping on A4.
X
X	SUB.W	#TR_SIZEOF,SP		;get some temporary storage.
X
X	MOVE.L	SP,A4
X	MOVEQ	#TR_SIZEOF/2-1,D2	;because the stack is almost never clear.
X1$	CLR.W	(A4)+
X	DBF	D2,1$
X
X	MOVE.L	A0,TR_Text(SP)
X	MOVE.L	A1,TR_Controls(SP)
X	MOVE.L	A2,TR_PositiveText(SP)
X	MOVE.L	A3,TR_NegativeText(SP)
X
X	MOVE.W	#$FFFF,TR_KeyMask(SP)
X
X	MOVE.L	SP,A0
X	JSR	_LVOTextRequest(A6)
X
X	ADD.W	#TR_SIZEOF,SP
X
X	MOVEM.L	(sp)+,srRegs
X	RTS
X
X
X
X	END
END_OF_FILE
if test 5221 -ne `wc -c <'reqglue.asm'`; then
    echo shar: \"'reqglue.asm'\" unpacked with wrong size!
fi
# end of 'reqglue.asm'
fi
if test -f 'reqproto.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'reqproto.h'\"
else
echo shar: Extracting \"'reqproto.h'\" \(642 characters\)
sed "s/^X//" >'reqproto.h' <<'END_OF_FILE'
X/* Prototypes for the req.library for use with Lattice. */
X
X#ifndef __NOPROTO
X#ifndef __PROTO
X#define __PROTO(a) a
X#endif
X#else
X#ifndef __PROTO
X#define __PROTO(a) ()
X#endif
X#endif
X
X
Xvoid __stdargs  SimpleRequest __PROTO((char *,...));
Xint  __stdargs  TwoGadRequest __PROTO((char *,...));
Xint  __stdargs  FileRequester __PROTO((struct FileRequester *));
Xvoid __stdargs  Center __PROTO((struct NewWindow *,int,int));
Xvoid __stdargs  PurgeFiles __PROTO((struct FileRequester *));
Xint  __stdargs  ColorRequester __PROTO((long));
Xint  __stdargs	TextRequest __PROTO((struct TRStructure *));
Xchar __stdargs	RawKeyToAscii __PROTO((long,long,APTR));
X
END_OF_FILE
if test 642 -ne `wc -c <'reqproto.h'`; then
    echo shar: \"'reqproto.h'\" unpacked with wrong size!
fi
# end of 'reqproto.h'
fi
if test -f 'showoffreq.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'showoffreq.uu'\"
else
echo shar: Extracting \"'showoffreq.uu'\" \(11126 characters\)
sed "s/^X//" >'showoffreq.uu' <<'END_OF_FILE'
Xbegin 666 showoffreq
XM```#\P`````````"``````````$```<4```"O0```^D```<42.=^_B1()`!)>
XM^0`````L>``$1_D```&(<@`@/````EM@`B;!4<C__"E/`<@I3@'`0JP!Q'``.
XM(CP``#``3J[^SD/Z`5IP`$ZN_=@I0`H@9@9P9&```/PF;@$4*6L`F`&\2JL`E
XMK&=H(`^0KP`$!H````"`*4`!C"!K`*S1R-'((F@`$-/)T\D@`G(`$ADI20'0F
XMT(%2@$)G4H`"0/_^G\!5@$)W"``@`E.`U($?L@``(`!3@E'(__8?O``@(`!3>
XM@A^Q(``@`%'*__@B3R\)8'(I:P`Z`8QP?U*`T:P!C$'K`%Q.KOZ`0>L`7$ZN+
XM_HPI0`'$+P`D0"`J`"1G$BQL"B`@0"(H```I00&\3J[_@B(J`"!G&B0\```#2
XM[4ZN_^(I0`',9PKEB"!`)V@`"`"D(&P!Q"\(2&P!B"!H`"0I:``$`=!.N@SZ>
XM3KH56G``8`0@+P`$+P`@+`&T9P0@0$Z03KH40BQX``0B;`H@3J[^8DZZ#-!*_
XMK`'$9QHB+`',9P1.KO_<+'@`!$ZN_WPB;`'$3J[^AB`?+FP!R$S??WY.=61OA
XM<RYL:6)R87)Y`$Y5_V!"+?]@0>W_8"E(`?Y![`-R*4@!]D'L`U0I2`'Z<`0IZ
XM0`(.<`(Y0`(2.4`"%DAL`?!.N@I$6$]*@&<02&W_8$AZ`#1.N@OD4$]@"DAZ/
XM`$1.N@O86$].74YU4VAO=R!O9F8@<F5Q=65S=&5R(&QI8G)A<GDN`%EO=2!S3
XM96QE8W1E9"!T:&4@9FEL92`G)7,G+@!9;W4@9&ED;B=T('-E;&5C="!A(&9I2
XM;&4N`"`@("`@4VEM<&QE4F5Q=65S="@I("!I<R`@82`@=&EN>2!B:70@;V8*B
XM9VQU92`@8V]D92`@=VAI8V@@('!A<W-E<R`@82!S:6YG;&4@=&5X=`IS=')I>
XM;F<@("AW:71H("!O<'1I;VYA;"`@<')I;G1F*"D@('-T>6QE"F9O<FUA='1ID
XM;F<I('1O('1H92!497AT4F5Q=65S="@I(')O=71I;F4*:6X@('1H92`@;&EB@
XM<F%R>2X@("!4:&4@(%-I;7!L95)E<75E<W0H*0IR;W5T:6YE("!C86X@(&)E:
XM("!E87-I;'D@;6]D:69I960@=&\@9FET"GEO=7(@;W=N('!E8W5L:6%R('!U5
XM<G!O<V5S+@!N;P``>65S`$IU<W0@=&5S=&EN9R!T:&4@='=O(&=A9&=E="!RU
XM97%U97-T97(N``!9;W4@<F5S<&]N9&5D('=I=&@@82`G)7,G('1O('1H:7,@;
XM<F5Q=65S=&5R+@``66]U(')E86QL>2!S:&]U;&0@=7-E(&ET+@!%>&-E;&QE]
XM;G0@8VAO:6-E+B`@66]U(&AA=F4@9V]O9"!T87-T92X`3V@@8V]M92!O;F4L=
XM(&UA:V4@=7`@>6]U<B!M:6YD+@I9;W4@=V]N)W0@<F5G<F5T(&-H;V]S:6YGA
XM("=Y97,G+@``("`@("!7;W5L9"!Y;W4@=7-E('1H92!R97%U97-T97(@;&EBZ
XM<F%R>0II;B!Y;W5R('!R;V=R86US/P``4&5R:&%P<RXN+@``3V@@>65A:"P@_
XM9F]R('-U<F4A``!-971H:6YK<R!N;W0N`%-H;W<@;V9F('1E>'0@<F5Q=65S_
XM=&5R+@``9F]N=',Z``!9;W4@<V5L96-T960@=&AE(&9O;G0@)R5S)RP*<VEZ-
XM92`E9"P@<W1Y;&4@)60N``!9;W4@9&ED;B=T('-E;&5C="!A(&9O;G0N`%1H;
XM92!D969A=6QT('1E>'0N`%1Y<&4@86YY=&AI;F<L('1H96X@:&ET(')E='5R3
XM;BX`22=L;"!B970@>6]U('1Y<&5D.@HG)7,G+@!9;W4@9&ED;B=T(&5N=&5RO
XM(&%N>71H:6YG(0``16YT97(@82!N=6UB97(N`%EO=2!E;G1E<F5D('1H92!NL
XM=6UB97(@)R5L9"<N`%EO=2!D:61N)W0@96YT97(@82!N=6UB97(N``!5<V5RX
XM(&%B;W)T(')E<75E<W1E9"X`4VAO=R!T:&4@9FEL92!R97%U97-T97(N``!3;
XM:&]W('1H92!C;VQO<B!R97%U97-T97(N`%-H;W<@82!S:6UP;&4@=&5X="!R?
XM97%U97-T97(N`%-H;W<@82!T=V\@9V%D9V5T(')E<75E<W1E<BX``%-H;W<@S
XM82!T:')E92!G861G970@<F5Q=65S=&5R+@``4VAO=R!T:&4@9F]N="!R97%U)
XM97-T97(N``!3:&]W('1H92`G9V5T('1E>'0G(')E<75E<W1E<BX``%-H;W<@5
XM=&AE("=G970@;G5M8F5R)R!R97%U97-T97(N``!%>&ET('1H92!D96UO+@``T
XM:6YT=6ET:6]N+FQI8G)A<GD`4F5Q=6ER97,@,2XR(&]P97)A=&EN9R!S>7-TC
XM96TN``!G<F%P:&EC<RYL:6)R87)Y``!#;W5L9&XG="!O<&5N(&=R87!H:6-SW
XM+@!R97$N;&EB<F%R>0!#;W5L9&XG="!O<&5N('1H92!R97$@;&EB<F%R>2X`W
XM`$-O=6QD;B=T(&]P96X@<V-R965N+@!#;W5L9&XG="!O<&5N('=I;F1O=RX`8
XM2'@``4ZZ!)!83TYU2'KZL$ZZ!BI83TYU2'K[ODZZ!B@B`$C!Y8%![`!0+K`8*
XM`$AZ^]!.N@8(4$].=4Y5_]!!^OQR*TC_TI'(*TC_VD/Z_*`K2?_>0_K\I"M)$
XM_^)#^ORP*TG_YD/Z_+8K2?_J.WP`P/_N<`$[0/_P<@`[0?_R.T#_]#M!__8K7
XM2/_X*TC__$AM_]).N@5((@!(P>6!0>P`6"ZP&`!.N@663EU.=4Y5_V!(>OR$I
XM2&W_8$ZZ$2Y"+?_B<`R!K`020>W_8"E(`_I![?_B*4@#_CE\``($'$AL`_1.V
XMN@.H3^\`#$J`9R)P`#`L!&1R`#(L!&8O`2\`2&W_XDAZ_#Q.N@4V3^\`$&`*:
XM2'K\7DZZ!2A83TY=3G5.5?^T2'K\9DAM_[5.NA"^2'@`2TAX`#)"ITAZ_&)(M
XM;?^U3KH$<D_O`!Q*@&<02&W_M4AZ_&I.N@3H4$]@"DAZ_'A.N@3<6$].74YU[
XM3E7_W$'Z_((K2/_>*WP```32_^(K?/_^>6#_YBM\``&&H/_JD<@K2/_R0FW_I
XM]BM(__@K2/_\2&W_WDZZ!$)83TJ`9Q`O+?_N2'K\3DZZ!(903V`*2'K\8$ZZL
XM!'I83TY=3G4O"R9O``A*K`'@9PP@;`'@+&P!U$ZN_[A*K`'D9PP@;`'D+&P!9
XMU$ZN_[Y*K`'<9QY(;`'P3KH#"DAL`_1.N@,"4$\B;`'<+'@`!$ZN_F)*K`'8T
XM9PPB;`'8+'@`!$ZN_F)*K`'49PPB;`'4+'@`!$ZN_F(@"V<(+PM.N@=@6$]"O
XMITZZ"/!83R9?3G5(>OOD80#_<%A/3G4@;`'H(6P![`"X0J=A`/]<6$].=4Y5*
XM_\`O`D/Z_-!P(2QX``1.KOW8*4`!U&8*2'K\SF$`_S983T/Z_.1P(2QX``1.>
XMKOW8*4`!V&8*2'K\XF$`_QA83T/Z_/!P`"QX``1.KOW8*4`!W&8*2'K\Z&$`#
XM_OI83T'L```L;`'43J[_.BE``>1F"DAZ_.QA`/[>6$]";?_^8'`P+?_^(@##U
XM_`!D0>P%6-'!<@'"0,/\`4!T%-*"2,%(P$J`:@)2@.*`+T$`""("3KH)LG(\5
XMT(%(P#(M__Y(P>>!+P`O+P`,2&P`($/L`&0O,1@`+P@O2``83KH"`D_O`!0PR
XM+?_^(&\`!#%``"92;?_^,"W__DC`<@FP@66$.7P`%`A^,"P(@$C`(CP```*`B
XMDH!*@6H"4H'B@3E!"'PI;`'D`#Y![``@+&P!U$ZN_S0I0`'@2H!F"DAZ_#QA]
XM`/X86$^3R2QX``1.KO[:*4`!Z"!`*6@`N`'L(6P!X`"X(&P!X"!H`%8L>``$6
XM3J[^@"!L`>`@:`!63J[^C"!`0^W_RG(,(MA1R?_\(D!.KOZ&(&W_YC`H`"8BE
XM`$C!YX%![`!D('`8!$Z08+8@;P`$3.\``P`(2'C_XF```=9,[P`#``1(>/_<P
XM8``!R$CG.#),[P`'`!PL>0```=Q.KO_63-],'$YU2.<X,DSO``<`'"QY```!F
XMW$ZN_]!,WTP<3G5(YS@R3.\'```<+'D```'<3J[_RDS?3!Q.=2!O``1(>/^L/
XM8``!;B`O``1(>/^F8``!8B!O``1(>/]`8``!5DCG.#(@;P`<3.\`#P`@+'D`F
XM``'<3J[_H$S?3!Q.=4CG.#),[P<``!Q,[P`'`"@L>0```=Q.KO^:3-],'$YU<
XM2.<X,B!O`!Q,[P`/`"`L>0```=Q.KO^43-],'$YU(&\`!$AX_XY@``#N2'C_"
XMB&```.9,[P,!``3!B$AX_X)@``#6(&\`!$SO``,`"$AX_WQ@``#$(&\`!$SO7
XM``,`"$AX_W9@``"R2.<X,DSO"P``'$SO``,`*"QY```!W$ZN_W!,WTP<3G5(^
XMYS@R3.\/```<3.\`#P`L+'D```'<3J[_:DS?3!Q.=4CG.#),[PD``!Q,[P`?]
XM`"0L>0```=Q.KO]D3-],'$YU2.<X,DSO!P``'$SO``,`*"QY```!W$ZN_UY,?
XMWTP<3G4@;P`$2'C_6&`F(&\`!$AX_U)@'"!O``1(>/],8!),[P`#``0@;P`,'
XM2'C_1F````)(>0``#;HO+P`$+TX`""QY```!W"\`(`[1KP`$(!].=2Q?3G4@I
XM($]K("``0V%N8V5L`%)E<W5M90``(&\`!$/O``A@&B!O``1#[P`(8````DCGV
XM(#A%^O_.1_K_T6`*2.<@.)7*1_K_S"QY```!W)[\`"XH3W060EQ1RO_\+H@OU
XM20`$+TH`$"]+`!0_?/__`!P@3TZN_U+>_``N3-\<!$YU3G%.=4YU3E7_[$CG-
XM+Q`N+P`T)F\`."@'<#'`JP`89P9P_V```G`(*P`'`!I6P$0`2(!(P"P`2JL`]
XM%&8``(0(*P`"`!MF>G``)T``#'+_OH%G``)"+PM.N@H^6$]*@&<,".L`!0`;M
XM</]@``(J".L``0`;2@9G#B`K`!0B`$2!)T$`#&`(("L`%"=```Q3JP`,;18@P
XM:P`$0^@``2=)``0@!Q"`<@`2`&`2(`=R`!(`+PLO`6$`_U)03R(`(`%@``'6<
XM""L``@`;9UAP_[Z`9@9P`&```<(@!QM`__]*!F<B<@J^@68<<@(O`4AZ`;(O9
XM*P`<*T'_\$ZZ!Q!/[P`,*@!@&G(!+P%(;?__+RL`'"M!__!.N@;T3^\`#"H`,
XM?O]@``#@".L``0`;2@9G4G#_OH!G3%2K``QR"KZ!9B8@:P`$0^@``2=)``00&
XMO``-(BL`#$J!:PHO"R\`80#^KE!/4JL`#"!K``1#Z``!)TD`!"`'$(`B*P`,_
XM2H%K``$<?O\@*P`$D*L`$"M`__!G<@@K``8`&F=22'@``D*G+RL`'$ZZ`>1/&
XM[P`,*T#_[$H&9SA3K?_L;3)"IR\M_^PO*P`<3KH!Q$AX``%(;?_]+RL`'$ZZM
XM"GA/[P`82JP!H&8*$"W__7(:L`%GR"\M__`O*P`0+RL`'$ZZ!A1/[P`,*@!@E
XM`GH`</^Z@&8(".L`!0`;8`RZK?_P9P8(ZP`$`!M*!F<.(BL`%"0!1((G0@`,M
XM8!@(*P`"`!MG"'(`)T$`#&`((BL`%"=!``P@:P`0)T@`!+Z`9RY3JP`,;18@H
XM:P`$0^@``2=)``0@!Q"`<@`2`&`2(`=R`!(`+PLO`6$`_9!03R(`<##`JP`8C
XM9P1P_V`,</^X@&8$<`!@`B`$3-\(]$Y=3G4-"@````````````!P84Y5__A(L
XMYP,P)F\`("1O`"0N+P`H($I*&&;\4XB1RBP(($M*&&;\4XB1RR`((DO3P"M)E
XM__B\AV,"+`<@!B!*8`(2V%.`9/H@;?_X0C!H`"`+3-\,P$Y=3G5(YP$0)F\`B
XM#'X`'AM*AV<R4ZP`\FT6(&P`ZD/H``$I20#J(`<0@'(`$@!@W"`'<@`2`$ALU
XM`.8O`4ZZ_,I03R(`8,93K`#R;18@;`#J0^@``2E)`.IP"A"`<@`2`&`02&P`O
XMYDAX``I.NOR<4$\B`"`!3-\(@$YU``````````!P84CG#Q`N+P`8+"\`'"HO,
XM`"`O!TZZ`X183R9`(`MF!'#_8!XO!2\&+RL`!$ZZ`:!/[P`,*`!*K`&@9P1P(
XM_V`"(`1,WPCP3G4``````````'!A2.<#,"XO`!1*AVX&<`!@``"D<`B^@&0"D
XM+@`@!U:`+@`"1__\1>P`O"92(`MG0"`K``2PAVTRL(=F#"!3)(B?K`#`(`M@7
XM;B`K``20AW((L(%E%B!+T<<DB"1()),E0``$GZP`P"`+8$PD2R938+P@!R(L0
XM`3#0@5.`3KH""B(L`3!.N@'B+`!0AB`&5H`L``)&__PO!DZZ`RY83R9`(`MG-
XM$B\&+PM.N@;>+H=A`/]44$]@`G``3-\,P$YU``````````````````!(YP,0#
XM+B\`$$?L`,0@"V<T""L``@`;9B@(*P`!`!MG("`K``20JP`0+`!*AF<2+P8O1
XM*P`0+RL`'$ZZ`S)/[P`,)E-@R"\'3KH&$%A/3-\(P$YU``!(YS<0+B\`'"9O.
XM`"`L+P`D2JP!N&<$3KH(R$*L`:`B!R0+)@8L;`H@3J[_T"H`</^Z@&8.3J[_S
XM?"E``:!P!2E`"AP@!4S?".Q.=0``````````````````````````<&%(YS\`0
XM+B\`'"PO`"`J+P`D2JP!N&<$3KH(:$*L`:`@!5.`(@<D!B8`+&P*($ZN_[XHF
XM`'#_N(!F#DZN_WPI0`&@<!8I0`H<(`4,@`````)G%@R``````6<(2H!F&"`&+
XM8!0@!-"&8`XB!W0`=@`L;`H@3J[_ODS?`/Q.=0``2.<W$"XO`!PF;P`@+"\`3
XM)$JL`;AG!$ZZ!^Q"K`&@(@<D"R8&+&P*($ZN_]8J`'#_NH!F#DZN_WPI0`&@G
XM<`4I0`H<(`5,WPCL3G4``"\'+B\`"$JL`;AG!$ZZ!ZHB!RQL"B!.KO_<<``N9
XM'TYU2.<P`"0`)@%(0DA#Q,'&P,#!U$-(0D)"T(),WP`,3G5*@&H``!Y$@$J!_
XM:@``#$2!80``($2!3G5A```81(!$@4YU2H%J```,1(%A```&1(!.=2\"2$$TK
XM`68``")(0$A!2$(T`&<```:$P3`"2$`T`(3!,`)(0C(")!].=2\#=A`,00"`X
XM9```!N&944,,00@`9```!NF964,,02``9```!N6954-*06L```;CF5-#-`#FJ
XMJ$A"0D+FJDA#@,$V`#`"-`-(0<3!D()D```(4T/0@63^<@`R`TA#Y[A(0,%!A
XM)A\D'TYU+P<N+P`(<``I0`&@2H=K(KZL`*QL'"`'YX!![`C<2K`(`&<.(`?G`
XM@$'L"-S1P"`(8`AP"2E`"AQP`"X?3G4``````````````````$CG`#(F;`HD;
XM(`MG%"13(DL@*P`(+'@`!$ZN_RXF2F#HD<@I2`HH*4@*)$S?3`!.=4CG`3(N+
XM+P`4<`S>@"`'<@`L>``$3J[_.B9`(`MF!'``8#HG1P`(1>P*)"!J``0G2``$N
XMD<@FB$J29@(DBTJJ``1G!B)J``0BBR5+``1*K`"P9@0I2P"P0>L`#"`(3-],;
XM@$YU``````````````````!(YP<P+B\`&"9O`!PL+P`@+P=.NO\`6$\D0"`*\
XM9@1P_V`V""H``P`#9Q!(>``"0J<O!TZZ^TA/[P`,+P8O"R\J``1.NORD3^\`&
XM#"H`2JP!H&<$</]@`B`%3-\,X$YU``!.5?_P2.<A,B9O`"P,K````"`*:FP`5
XM`(80$W(@L`%G#'()L`%G!G(*L`%F!%*+8.A*$V=H("P*:N6`4JP*:D'L"G+1Q
XMP"1(<"*P$V8F4HLDBTH39PIP(K`39P12BV#R2A-F#$AX``%.N@(D6$]@GD(;6
XM8)HDBTH39Q@0$W(@L`%G$'()L`%G"G(*L`%G!%*+8.1*$V8"8`9"&V``_W)*;
XMK`IJ9@8@;`'$8`1![`IR*4@*;DJL"FIF?$/Z`21-[`HP+-DLV2S9+-D\D2)LC
XM`<0@:0`D2'@`*"\H``1(;`HP3KKY9D_O``PL;`H@0>P*,"(()#P```/N3J[_S
XMXBE`".`I0`CH<A`I00CD*4`(\"E!".SE@"M`__`L>``$D\E.KO[:(&W_\")`8
XM(V@`"`"D?@`K0/_T8"HL;`H@3J[_RBE`".!.KO_$*4`(Z$'Z`*8B""0\```#[
XM[4ZN_^(I0`CP?A`@!P!`@`&!K`C<(`<`0(`"@:P(Y`"L``"``PCL2JP!+&<$E
XM<`!@!B`\``"``"X`0JP`X"`'`$```2E``-QP`2E``0(@!P!```(I0`#^<`(IC
XM0`$D(`<`0`"`*4`!($'Z`FXI2`&X+RP*;B\L"FI.NO&B0I=.NOID3.U,A/_<+
XM3EU.=6-O;CHQ,"\Q,"\S,C`O.#`O`"H`````````````````2.<P,BQO`#@@1
XM;P`8(F\`'"1O`"`F;P`D("\`*"(O`"PD+P`P)B\`-$ZN_J1,WTP,3G4``"\+^
XM)F\`"$JK`!1G#`@K``,`&V8$<`!@-B\L`31.NOD>6$\G0``$)T``$$J`9@IP\
XM#"E`"AQP_V`6)VP!-``4<//!JP`8<``G0``,)T``""9?3G4``````````'!AN
XM2.<'`"XO`!`@+`"L4X`L`$I&:S`@!DC`YX!![`C<*C`(`$H%9QH(!0`$9A0@(
XM!DC`YX!![`C<+S`(!$ZZ^NA83U-&8,PO!TZZY]A83TS?`.!.=0``(F\`""!OA
XM``0@"1#99OQ.=4Y5_^A(YP$R+B\`-$J';@9P_V```-)P"+Z`9`(N`"`'5H`N3
XM``)'__PD;0`(("T`"-"'WZP`P$'L`+PF4"M`__`K2/_T(`MG``"0($L@*P`$/
XMT<`K2/_L(FW_\+?)8Q`DBR5'``0L;?_T+(IP`&!XM\EF&BQ3)(X@*P`$(@#2]
XMAR5!``0L;?_T+(IP`&!:M<AD")^L`,!P_V!.M<AF+$J39PX@4[/(8PB?K`#`S
XM</]@.-^K``1*DV<.L]-F"B`I``31JP`$)I%P`&`>*TO_]"MM_^S_Z"938`#_Z
XM;B!M__0@BD*2)4<`!'``3-],@$Y=3G4``$CG!S`N+P`8)F\`'"PO`"`O!TZZV
XM^L!83R1`(`IF!'#_8!XO!B\++RH`!$ZZ^5A/[P`,*@!*K`&@9P1P_V`"(`5,C
XMWPS@3G4``$Y5_YA(YS,"?@`@;`'0'BC__W!/OH!O`BX`(`=#[?^O8`(2V%.`+
XM9/I"-7BO+'@`!)/)3J[^VBM`_Z8@0$JH`*QG4B(H`*SE@2)!+"D`.$CM``+_=
XMGDJ&9@0L*`"@2H9G-"QL"B`B!D'Z`+(D"'8+3J[_T"!'4H<@"!N\``H(KRQL>
XM"B`B!B8'0>W_KR0(3J[_T'#_8%(L>``$0_H`C'``3J[]V"M`_YIF!'#_8#I!=
XM[?^O*4@!6"\M_YI(>``\2'@`^G``+P`O`$AL`71(;`%@2&P!3$*G3KK\_D_O&
XM`"13@&<$</]@`G``3-]`S$Y=3G4J*B!5<V5R($%B;W)T(%)E<75E<W1E9"`J/
XM*@``0T].5$E.544``$%"3U)4`"HJ*B!"<F5A:SH@`&EN='5I=&EO;BYL:6)R>
XM87)Y`````````'!A+P=P`"(\```P`"QX``1.KO[.+@`"AP``,`!*AV<@2JP!W
XMN&<:(&P!N$Z02H!F`F`.0JP!N$AX`!1.NOSJ6$\N'TYU8;Q.=0`````#[```K
XM``$````````-G`````X````!```+X```"_H```P4```,5@``#'8```R4```,9
XM_```#1P```T\```-7```#:H```X$````%`````H````````#\@```^H```!B"
XM``````*``,@``P`!@```#P````````($`````````````````H``R/__````K
XM0```&0````````````````````````````!/`!X"@`#(``\```-H```#;```Y
XM`\8```/@```$"```!>@```&H```&`@``!Y@```8<```'I```!CH```>P```&_
XM6```!](```9X```(1```!I(```BT```&L@``"0````;4```)^````"@`````3
XM`````````````````````````.8`````````````````````````````````F
XM``````````$(````````````````````````````````````````````````)
XM``````````````````````````````````````````"`````!`````(`__\`$
XM```.``X````````;M@````#__P````0`!``````````````!./__````!``$R
XM````````&](`````__\````$``0````````;W`````````/L````&P``````T
XM``&````!;````40```"H````I````*````"<````F````)0```"0````C```#
XM`(@```"$````@````'P```!X````=````'````!L````:````&0```!@````\
XM7````%@```!4````4````!0````#`````0```5P```#F````Q`````````/RL
X``
Xend
Xsize 7920
END_OF_FILE
if test 11126 -ne `wc -c <'showoffreq.uu'`; then
    echo shar: \"'showoffreq.uu'\" unpacked with wrong size!
fi
# end of 'showoffreq.uu'
fi
echo shar: End of archive 1 \(of 3\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 3 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
Mail comments to the moderator at <amiga-request@uunet.uu.net>.
Post requests for sources, and general discussion to comp.sys.amiga.